@sheerid/jslib 1.131.0 → 1.133.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 (207) hide show
  1. package/es5/Tmetrix.bundle.js +4 -4
  2. package/es5/messages_ar.bundle.js +5 -5
  3. package/es5/messages_bg.bundle.js +5 -5
  4. package/es5/messages_cs.bundle.js +5 -5
  5. package/es5/messages_da.bundle.js +5 -5
  6. package/es5/messages_de.bundle.js +5 -5
  7. package/es5/messages_el.bundle.js +5 -5
  8. package/es5/messages_en-GB.bundle.js +5 -5
  9. package/es5/messages_es-ES.bundle.js +5 -5
  10. package/es5/messages_es.bundle.js +5 -5
  11. package/es5/messages_fi.bundle.js +5 -5
  12. package/es5/messages_fr-CA.bundle.js +5 -5
  13. package/es5/messages_fr.bundle.js +5 -5
  14. package/es5/messages_ga.bundle.js +5 -5
  15. package/es5/messages_hr.bundle.js +5 -5
  16. package/es5/messages_hu.bundle.js +5 -5
  17. package/es5/messages_id.bundle.js +5 -5
  18. package/es5/messages_it.bundle.js +5 -5
  19. package/es5/messages_iw.bundle.js +5 -5
  20. package/es5/messages_ja.bundle.js +5 -5
  21. package/es5/messages_ko.bundle.js +5 -5
  22. package/es5/messages_lo.bundle.js +5 -5
  23. package/es5/messages_lt.bundle.js +5 -5
  24. package/es5/messages_ms.bundle.js +5 -5
  25. package/es5/messages_nl.bundle.js +5 -5
  26. package/es5/messages_no.bundle.js +5 -5
  27. package/es5/messages_pl.bundle.js +5 -5
  28. package/es5/messages_pt-BR.bundle.js +5 -5
  29. package/es5/messages_pt.bundle.js +5 -5
  30. package/es5/messages_ru.bundle.js +5 -5
  31. package/es5/messages_sk.bundle.js +5 -5
  32. package/es5/messages_sl.bundle.js +5 -5
  33. package/es5/messages_sr.bundle.js +5 -5
  34. package/es5/messages_sv.bundle.js +5 -5
  35. package/es5/messages_th.bundle.js +5 -5
  36. package/es5/messages_tr.bundle.js +5 -5
  37. package/es5/messages_zh-HK.bundle.js +5 -5
  38. package/es5/messages_zh.bundle.js +5 -5
  39. package/es6/{ar-2a0ea0a2.es.js → ar-b27b7093.es.js} +7 -1
  40. package/es6/{cs-69493771.es.js.map → ar-b27b7093.es.js.map} +1 -1
  41. package/es6/{bg-7492e98f.es.js → bg-dc006d27.es.js} +7 -1
  42. package/es6/{ar-2a0ea0a2.es.js.map → bg-dc006d27.es.js.map} +1 -1
  43. package/es6/{cs-69493771.es.js → cs-c69d953e.es.js} +7 -1
  44. package/es6/{da-c183492c.es.js.map → cs-c69d953e.es.js.map} +1 -1
  45. package/es6/{da-c183492c.es.js → da-b076ddb8.es.js} +7 -1
  46. package/es6/{bg-7492e98f.es.js.map → da-b076ddb8.es.js.map} +1 -1
  47. package/es6/{de-e87946f1.es.js → de-354c036e.es.js} +7 -1
  48. package/es6/de-354c036e.es.js.map +1 -0
  49. package/es6/{el-901232c4.es.js → el-f6dbc2d3.es.js} +7 -1
  50. package/es6/el-f6dbc2d3.es.js.map +1 -0
  51. package/es6/{en-GB-705bcf25.es.js → en-GB-860e8aa7.es.js} +7 -1
  52. package/es6/{en-GB-705bcf25.es.js.map → en-GB-860e8aa7.es.js.map} +1 -1
  53. package/es6/{es-fc0efe3b.es.js → es-353dbd9f.es.js} +7 -1
  54. package/es6/es-353dbd9f.es.js.map +1 -0
  55. package/es6/{es-ES-de4f369c.es.js → es-ES-bf00171e.es.js} +7 -1
  56. package/es6/{es-ES-de4f369c.es.js.map → es-ES-bf00171e.es.js.map} +1 -1
  57. package/es6/{fi-d36e43af.es.js → fi-c7989cb5.es.js} +7 -1
  58. package/es6/fi-c7989cb5.es.js.map +1 -0
  59. package/es6/{fr-CA-32c93ab3.es.js → fr-CA-4099284c.es.js} +7 -1
  60. package/es6/{fr-CA-32c93ab3.es.js.map → fr-CA-4099284c.es.js.map} +1 -1
  61. package/es6/{fr-389b68b2.es.js → fr-b4eb4bb8.es.js} +7 -1
  62. package/es6/fr-b4eb4bb8.es.js.map +1 -0
  63. package/es6/{ga-8a7fa7c0.es.js → ga-411aa244.es.js} +7 -1
  64. package/es6/ga-411aa244.es.js.map +1 -0
  65. package/es6/{hr-c62d82b8.es.js → hr-5cbbd24b.es.js} +7 -1
  66. package/es6/hr-5cbbd24b.es.js.map +1 -0
  67. package/es6/{hu-30eada8c.es.js → hu-70183b5c.es.js} +7 -1
  68. package/es6/hu-70183b5c.es.js.map +1 -0
  69. package/es6/{id-cb32d82c.es.js → id-5bff21ac.es.js} +7 -1
  70. package/es6/id-5bff21ac.es.js.map +1 -0
  71. package/es6/{it-253978c9.es.js → it-71448850.es.js} +7 -1
  72. package/es6/it-71448850.es.js.map +1 -0
  73. package/es6/{iw-91688793.es.js → iw-688d2e54.es.js} +7 -1
  74. package/es6/iw-688d2e54.es.js.map +1 -0
  75. package/es6/{ja-3193a4d4.es.js → ja-34d2940e.es.js} +7 -1
  76. package/es6/ja-34d2940e.es.js.map +1 -0
  77. package/es6/{ko-f3bfa87b.es.js → ko-f5c9d886.es.js} +7 -1
  78. package/es6/ko-f5c9d886.es.js.map +1 -0
  79. package/es6/{lo-2129d0ad.es.js → lo-ac700ebc.es.js} +7 -1
  80. package/es6/lo-ac700ebc.es.js.map +1 -0
  81. package/es6/{lt-8da08268.es.js → lt-ab484249.es.js} +7 -1
  82. package/es6/lt-ab484249.es.js.map +1 -0
  83. package/es6/{ms-3721a2b0.es.js → ms-10199939.es.js} +7 -1
  84. package/es6/ms-10199939.es.js.map +1 -0
  85. package/es6/{nl-00c90dfa.es.js → nl-20646f48.es.js} +7 -1
  86. package/es6/nl-20646f48.es.js.map +1 -0
  87. package/es6/{no-35d2b69f.es.js → no-b3a23bde.es.js} +7 -1
  88. package/es6/no-b3a23bde.es.js.map +1 -0
  89. package/es6/{pl-691de3d9.es.js → pl-d8bd7c17.es.js} +7 -1
  90. package/es6/pl-d8bd7c17.es.js.map +1 -0
  91. package/es6/{pt-BR-100c45c6.es.js → pt-BR-ea3788be.es.js} +7 -1
  92. package/es6/{pt-BR-100c45c6.es.js.map → pt-BR-ea3788be.es.js.map} +1 -1
  93. package/es6/{pt-3be0a3a6.es.js → pt-d888c58c.es.js} +7 -1
  94. package/es6/pt-d888c58c.es.js.map +1 -0
  95. package/es6/{ru-5e886dd4.es.js → ru-1e1c813e.es.js} +7 -1
  96. package/es6/ru-1e1c813e.es.js.map +1 -0
  97. package/es6/{sk-f4ed521d.es.js → sk-2b93af62.es.js} +7 -1
  98. package/es6/sk-2b93af62.es.js.map +1 -0
  99. package/es6/{sl-9a37658c.es.js → sl-2d43a487.es.js} +7 -1
  100. package/es6/sl-2d43a487.es.js.map +1 -0
  101. package/es6/{sr-aa226b40.es.js → sr-be7bfaef.es.js} +7 -1
  102. package/es6/sr-be7bfaef.es.js.map +1 -0
  103. package/es6/{sv-ba6c3f38.es.js → sv-9c576699.es.js} +7 -1
  104. package/es6/sv-9c576699.es.js.map +1 -0
  105. package/es6/{th-b84abfa6.es.js → th-b93ed852.es.js} +7 -1
  106. package/es6/th-b93ed852.es.js.map +1 -0
  107. package/es6/{tr-008fab12.es.js → tr-ac128e10.es.js} +7 -1
  108. package/es6/tr-ac128e10.es.js.map +1 -0
  109. package/es6/{zh-14e5aaab.es.js → zh-61c87e17.es.js} +7 -1
  110. package/es6/zh-61c87e17.es.js.map +1 -0
  111. package/es6/{zh-HK-e35398a8.es.js → zh-HK-8a1f572e.es.js} +7 -1
  112. package/es6/zh-HK-8a1f572e.es.js.map +1 -0
  113. package/localized-messages/ar.json +6 -0
  114. package/localized-messages/bg.json +6 -0
  115. package/localized-messages/cs.json +6 -0
  116. package/localized-messages/da.json +6 -0
  117. package/localized-messages/de.json +6 -0
  118. package/localized-messages/el.json +6 -0
  119. package/localized-messages/en-GB.json +6 -0
  120. package/localized-messages/en-US.json +34 -28
  121. package/localized-messages/es-ES.json +6 -0
  122. package/localized-messages/es.json +6 -0
  123. package/localized-messages/fi.json +6 -0
  124. package/localized-messages/fr-CA.json +6 -0
  125. package/localized-messages/fr.json +6 -0
  126. package/localized-messages/ga.json +6 -0
  127. package/localized-messages/hr.json +6 -0
  128. package/localized-messages/hu.json +6 -0
  129. package/localized-messages/id.json +6 -0
  130. package/localized-messages/it.json +6 -0
  131. package/localized-messages/iw.json +6 -0
  132. package/localized-messages/ja.json +6 -0
  133. package/localized-messages/ko.json +6 -0
  134. package/localized-messages/lo.json +6 -0
  135. package/localized-messages/lt.json +6 -0
  136. package/localized-messages/ms.json +6 -0
  137. package/localized-messages/nl.json +6 -0
  138. package/localized-messages/no.json +6 -0
  139. package/localized-messages/pl.json +6 -0
  140. package/localized-messages/pt-BR.json +6 -0
  141. package/localized-messages/pt.json +6 -0
  142. package/localized-messages/ro.json +960 -0
  143. package/localized-messages/ru.json +6 -0
  144. package/localized-messages/sk.json +6 -0
  145. package/localized-messages/sl.json +6 -0
  146. package/localized-messages/sr.json +6 -0
  147. package/localized-messages/sv.json +6 -0
  148. package/localized-messages/th.json +6 -0
  149. package/localized-messages/tr.json +6 -0
  150. package/localized-messages/ur.json +958 -0
  151. package/localized-messages/vi.json +960 -0
  152. package/localized-messages/zh-HK.json +6 -0
  153. package/localized-messages/zh.json +6 -0
  154. package/localized-messages/zu.json +958 -0
  155. package/manifest.json +48 -48
  156. package/metrics-preview.js +11 -0
  157. package/metrics-sandbox.js +11 -0
  158. package/metrics.js +11 -0
  159. package/package.json +1 -1
  160. package/sheerid-requestOrg.css +5 -5
  161. package/sheerid-requestOrg.css.map +1 -1
  162. package/sheerid-requestOrg.js +12 -12
  163. package/sheerid-requestOrg.js.map +1 -1
  164. package/sheerid-utils.js +8 -8
  165. package/sheerid-utils.js.map +1 -1
  166. package/sheerid.css +5 -5
  167. package/sheerid.css.map +1 -1
  168. package/sheerid.js +16 -16
  169. package/sheerid.js.map +1 -1
  170. package/sheerides6.js +163 -200
  171. package/sheerides6.js.map +1 -1
  172. package/src/components/DateComponent/DateComponent.d.ts +14 -0
  173. package/src/components/FormFields/ActiveDutyStartDate/ActiveDutyStartDateComponent.d.ts +2 -0
  174. package/src/components/FormFields/BirthDate/BirthDateComponent.d.ts +1 -11
  175. package/src/components/FormFields/DischargeDate/DischargeDateComponent.d.ts +1 -11
  176. package/src/lib/types/runtimeTypes.d.ts +1 -0
  177. package/src/lib/types/types.d.ts +16 -4
  178. package/types-reference.zip +0 -0
  179. package/es6/de-e87946f1.es.js.map +0 -1
  180. package/es6/el-901232c4.es.js.map +0 -1
  181. package/es6/es-fc0efe3b.es.js.map +0 -1
  182. package/es6/fi-d36e43af.es.js.map +0 -1
  183. package/es6/fr-389b68b2.es.js.map +0 -1
  184. package/es6/ga-8a7fa7c0.es.js.map +0 -1
  185. package/es6/hr-c62d82b8.es.js.map +0 -1
  186. package/es6/hu-30eada8c.es.js.map +0 -1
  187. package/es6/id-cb32d82c.es.js.map +0 -1
  188. package/es6/it-253978c9.es.js.map +0 -1
  189. package/es6/iw-91688793.es.js.map +0 -1
  190. package/es6/ja-3193a4d4.es.js.map +0 -1
  191. package/es6/ko-f3bfa87b.es.js.map +0 -1
  192. package/es6/lo-2129d0ad.es.js.map +0 -1
  193. package/es6/lt-8da08268.es.js.map +0 -1
  194. package/es6/ms-3721a2b0.es.js.map +0 -1
  195. package/es6/nl-00c90dfa.es.js.map +0 -1
  196. package/es6/no-35d2b69f.es.js.map +0 -1
  197. package/es6/pl-691de3d9.es.js.map +0 -1
  198. package/es6/pt-3be0a3a6.es.js.map +0 -1
  199. package/es6/ru-5e886dd4.es.js.map +0 -1
  200. package/es6/sk-f4ed521d.es.js.map +0 -1
  201. package/es6/sl-9a37658c.es.js.map +0 -1
  202. package/es6/sr-aa226b40.es.js.map +0 -1
  203. package/es6/sv-ba6c3f38.es.js.map +0 -1
  204. package/es6/th-b84abfa6.es.js.map +0 -1
  205. package/es6/tr-008fab12.es.js.map +0 -1
  206. package/es6/zh-14e5aaab.es.js.map +0 -1
  207. package/es6/zh-HK-e35398a8.es.js.map +0 -1
package/sheerides6.js CHANGED
@@ -667,6 +667,7 @@ var FieldIdEnum;
667
667
  FieldIdEnum["country"] = "country";
668
668
  FieldIdEnum["state"] = "state";
669
669
  FieldIdEnum["dischargeDate"] = "dischargeDate";
670
+ FieldIdEnum["activeDutyStartDate"] = "activeDutyStartDate";
670
671
  FieldIdEnum["docUpload"] = "docUpload";
671
672
  FieldIdEnum["status"] = "status";
672
673
  FieldIdEnum["statuses"] = "statuses";
@@ -1911,6 +1912,7 @@ var enUSMessages = {
1911
1912
  "defaultMessages.SNAP_BENEFITS": "Snap Benefits Recipient",
1912
1913
  "defaultMessages.VETERAN": "Military Veteran or Retiree",
1913
1914
  "defaultMessages.VETERINARIAN": "Veterinarian",
1915
+ "defaultMessages.activeDutyStartDate": "Active Duty Start Date",
1914
1916
  "defaultMessages.address": "Address",
1915
1917
  "defaultMessages.addressPlaceholder": "Address",
1916
1918
  "defaultMessages.birthDate": "Date of birth",
@@ -2195,6 +2197,7 @@ var enUSMessages = {
2195
2197
  "defaultMessages.emailAddress": "Email address",
2196
2198
  "defaultMessages.emailAddressPlaceholder": "Email address",
2197
2199
  "defaultMessages.error": "Error",
2200
+ "defaultMessages.errorId.activeDutyStartDateBeforeBirthDate": "Start date must be after birth date",
2198
2201
  "defaultMessages.errorId.apiRateLimitExceeded": "Unable to process your request at this time, please try again later",
2199
2202
  "defaultMessages.errorId.dischargeDateBeforeBirthDate": "Discharge Date before birthdate",
2200
2203
  "defaultMessages.errorId.docReviewLimitExceeded": "Document review limit exceeded",
@@ -2204,11 +2207,13 @@ var enUSMessages = {
2204
2207
  "defaultMessages.errorId.expiredVerification": "This verification is expired. Please submit a new verification.",
2205
2208
  "defaultMessages.errorId.failedToFetch": "Failed HTTP request",
2206
2209
  "defaultMessages.errorId.fraudRulesReject": "We're unable to verify you using the information submitted. Please check your information for accuracy, and only use your own mobile device or computer.<br><br>Still having trouble? <a href=\"{feedbackUrl}&pid={programId}&locale={locale}\">Contact SheerID's support team</a> to confirm your identity.",
2210
+ "defaultMessages.errorId.futureActiveDutyStartDate": "Future start date",
2207
2211
  "defaultMessages.errorId.futureBirthDate": "Future birthdate",
2208
2212
  "defaultMessages.errorId.futureDischargeDate": "Future discharge date",
2209
2213
  "defaultMessages.errorId.inactiveProgram": "Due to tremendous demand, the offer is no longer available. Please check tomorrow to see if it is available.",
2210
2214
  "defaultMessages.errorId.incorrectVerificationOverrideCodeAttemptLimitExceeded": "Override code limit exceeded",
2211
2215
  "defaultMessages.errorId.internalServerError": "Internal server error",
2216
+ "defaultMessages.errorId.invalidActiveDutyStartDate": "Invalid start date",
2212
2217
  "defaultMessages.errorId.invalidAddress": "Invalid address",
2213
2218
  "defaultMessages.errorId.invalidApiToken": "Provided API token was invalid or empty",
2214
2219
  "defaultMessages.errorId.invalidBirthDate": "Invalid birth date",
@@ -2244,6 +2249,7 @@ var enUSMessages = {
2244
2249
  "defaultMessages.errorId.marketConsentRequired": "Market consent required",
2245
2250
  "defaultMessages.errorId.maxMetadataLengthExceeded": "Maximum length of metadata value exceeded",
2246
2251
  "defaultMessages.errorId.maxMetadataValuesExceeded": "Maximum number of metadata values exceeded",
2252
+ "defaultMessages.errorId.missingRequiredMetadata": "You must be logged in to verify. Log in to your account then try again.",
2247
2253
  "defaultMessages.errorId.noProgram": "No program found",
2248
2254
  "defaultMessages.errorId.noRemainingRewardCodes": "Due to tremendous demand, the offer is no longer available. Please check tomorrow to see if it is available.",
2249
2255
  "defaultMessages.errorId.noValidFiles": "No valid files",
@@ -2268,7 +2274,7 @@ var enUSMessages = {
2268
2274
  "defaultMessages.howDoesVerifyingWork": "How does verifying work?",
2269
2275
  "defaultMessages.infoShared1": "By clicking, I consent to processing my information for the purpose of verifying my eligibility as described within the {privacyPolicyLink}",
2270
2276
  "defaultMessages.infoShared2": ". I understand that my information will be shared with {companyName}. ",
2271
- "defaultMessages.informationTransferredToUS": " Your information will be transferred to the United States and will be treated according to SheerID’s privacy policy.",
2277
+ "defaultMessages.informationTransferredToUS": "Your information will be transferred to the United States and will be treated according to SheerID’s privacy policy.",
2272
2278
  "defaultMessages.lastName": "Last name",
2273
2279
  "defaultMessages.lastNamePlaceholder": "Last name",
2274
2280
  "defaultMessages.limitExceededError": "Verification Limit Exceeded",
@@ -2561,6 +2567,7 @@ var enUSMessages = {
2561
2567
  "defaultMessages.step.error.errorId.expiredProgram.title": "Offer Sold Out!",
2562
2568
  "defaultMessages.step.error.errorId.inactiveProgram.buttonText": "See More Offers",
2563
2569
  "defaultMessages.step.error.errorId.inactiveProgram.title": "Offer Sold Out!",
2570
+ "defaultMessages.step.error.errorId.missingRequiredMetadata.title": "Please log in.",
2564
2571
  "defaultMessages.step.error.errorId.noRemainingRewardCodes.buttonText": "See More Offers",
2565
2572
  "defaultMessages.step.error.errorId.noRemainingRewardCodes.title": "Offer Sold Out!",
2566
2573
  "defaultMessages.step.error.errorId.unauthorizedAccountStatus.buttonText": "Contact Support",
@@ -2604,7 +2611,7 @@ var enUSMessages = {
2604
2611
  "defaultMessages.step.sso.title": "Verify using your school credentials",
2605
2612
  "defaultMessages.step.success.copyCouponCode": "Copy Coupon code",
2606
2613
  "defaultMessages.step.success.emailNotification": "We have emailed you a copy so you can use your new code now or later. Look for the email from verify@sheerid.com.",
2607
- "defaultMessages.step.success.verificationOnly": "\n SheerID handles verification only.\n Now that you've been approved, please direct all questions about the\n promotion terms to {companyName} customer service.\n",
2614
+ "defaultMessages.step.success.verificationOnly": "\n SheerID handles verification only.\n Now that you've been approved, please direct all questions about the\n promotion terms to {companyName} customer service.\n ",
2608
2615
  "defaultMessages.streetAddress": "Street Address",
2609
2616
  "defaultMessages.studentInfoShared": "Information entered here will be used for verification purposes and shared with {companyName}. ",
2610
2617
  "defaultMessages.tryAgain": "Try again",
@@ -2662,11 +2669,11 @@ var enUSMessages = {
2662
2669
  "requestOrganizationMessages.submit": "Submit",
2663
2670
  "requestOrganizationMessages.title": "Request to Add School",
2664
2671
  "segmentMessages.age.emailExplanation": "Needed to send you your unique code",
2665
- "segmentMessages.age.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying age.\n<br><br>\nDocuments are used only for verifying your current age and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2672
+ "segmentMessages.age.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying age.\n <br><br>\n Documents are used only for verifying your current age and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2666
2673
  "segmentMessages.age.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2667
2674
  "segmentMessages.age.step.docUpload.title": "We need your license or passport",
2668
2675
  "segmentMessages.age.step.docUpload.uploadInstructions": "Upload a government-issued document that shows",
2669
- "segmentMessages.age.step.personalInfo.howDoesVerifyingWorkDetails": "\nTo be eligible for this offer, you must be of a certain age.\n<br><br>\n{companyName} uses SheerID, a trusted partner, to verify your age. SheerID only collects information that assists in\nverifying your eligibility. Additional information or documentation may be requested.",
2676
+ "segmentMessages.age.step.personalInfo.howDoesVerifyingWorkDetails": "\n To be eligible for this offer, you must be of a certain age.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify your age. SheerID only collects information that assists in\n verifying your eligibility. Additional information or documentation may be requested.",
2670
2677
  "segmentMessages.age.step.personalInfo.subtitle": "Verify your current age.",
2671
2678
  "segmentMessages.age.step.personalInfo.title": "Unlock Your Special Offer",
2672
2679
  "segmentMessages.age.step.personalInfo.tryAgain.subtitle": "Your full name and birthdate must match what is on your government-issued documents.",
@@ -2676,11 +2683,11 @@ var enUSMessages = {
2676
2683
  "segmentMessages.age.step.success.subtitle": "Here is your personal coupon code. It is unique to you and can only be used once.",
2677
2684
  "segmentMessages.age.step.success.title": "You've been verified",
2678
2685
  "segmentMessages.employment.emailExplanation": "Use your work email if you have one",
2679
- "segmentMessages.employment.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying employees.\n<br><br>\nDocuments are used only for verify your employment status is current and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2686
+ "segmentMessages.employment.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying employees.\n <br><br>\n Documents are used only for verify your employment status is current and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2680
2687
  "segmentMessages.employment.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2681
2688
  "segmentMessages.employment.step.docUpload.title": "We need more information",
2682
2689
  "segmentMessages.employment.step.docUpload.uploadInstructions": "Upload an official document that shows",
2683
- "segmentMessages.employment.step.personalInfo.howDoesVerifyingWorkDetails": "{companyName} has set up this special offer for all current employees of select companies.\n<br><br>\n{companyName} uses SheerID, a trusted partner, to verify that you are currently employed. SheerID only collects information that assists in verifying your eligibility. Additional information or documentation may be requested.",
2690
+ "segmentMessages.employment.step.personalInfo.howDoesVerifyingWorkDetails": "{companyName} has set up this special offer for all current employees of select companies.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify that you are currently employed. SheerID only collects information that assists in verifying your eligibility. Additional information or documentation may be requested.",
2684
2691
  "segmentMessages.employment.step.personalInfo.subtitle": "Verify you're a current employee at an eligible company.",
2685
2692
  "segmentMessages.employment.step.personalInfo.title": "Unlock this Employment-Only Offer",
2686
2693
  "segmentMessages.employment.step.personalInfo.tryAgain.subtitle": "The information you have provided should match your official documents.",
@@ -2695,11 +2702,11 @@ var enUSMessages = {
2695
2702
  "segmentMessages.employment.step.success.subtitle": "Here is your personal coupon code. It is unique to you and can only be used once.",
2696
2703
  "segmentMessages.employment.step.success.title": "You've been verified",
2697
2704
  "segmentMessages.firstResponder.emailExplanation": "Needed to send you your unique code",
2698
- "segmentMessages.firstResponder.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying first responders.\n<br><br>\nDocuments are used only for verifying your first responder status is current and will be permanently deleted after review is finalized.\nThey will not be shared with {companyName}",
2705
+ "segmentMessages.firstResponder.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying first responders.\n <br><br>\n Documents are used only for verifying your first responder status is current and will be permanently deleted after review is finalized.\n They will not be shared with {companyName}",
2699
2706
  "segmentMessages.firstResponder.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2700
2707
  "segmentMessages.firstResponder.step.docUpload.title": "We need your ID",
2701
2708
  "segmentMessages.firstResponder.step.docUpload.uploadInstructions": "Upload an official document that shows",
2702
- "segmentMessages.firstResponder.step.personalInfo.howDoesVerifyingWorkDetails": "\nThis offer is available to all US first responders and emergency personnel - including law enforcement,\nEMTs, paramedics, and firefighters.\n<br><br>\n{companyName} uses SheerID, a trusted partner, to verify that you are an active first responder. SheerID\nonly collects information that assists in verifying your eligibility. Additional information or documentation may be requested.",
2709
+ "segmentMessages.firstResponder.step.personalInfo.howDoesVerifyingWorkDetails": "\n This offer is available to all US first responders and emergency personnel - including law enforcement,\n EMTs, paramedics, and firefighters.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify that you are an active first responder. SheerID\n only collects information that assists in verifying your eligibility. Additional information or documentation may be requested.",
2703
2710
  "segmentMessages.firstResponder.step.personalInfo.subtitle": "Verify you're an active first responder.",
2704
2711
  "segmentMessages.firstResponder.step.personalInfo.title": "Unlock this 1st Responder-Only Offer",
2705
2712
  "segmentMessages.firstResponder.step.personalInfo.tryAgain.subtitle": "Your full name, organization name, and email must match what is on record with your agency.",
@@ -2709,11 +2716,11 @@ var enUSMessages = {
2709
2716
  "segmentMessages.firstResponder.step.success.subtitle": "Here is your personal coupon code. It is unique to you and can only be used once.",
2710
2717
  "segmentMessages.firstResponder.step.success.title": "You've been verified",
2711
2718
  "segmentMessages.identity.emailExplanation": "Needed to send you your unique code",
2712
- "segmentMessages.identity.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying identity.\n<br><br>\nDocuments are used only for verifying your current eligibility and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2719
+ "segmentMessages.identity.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying identity.\n <br><br>\n Documents are used only for verifying your current eligibility and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2713
2720
  "segmentMessages.identity.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2714
2721
  "segmentMessages.identity.step.docUpload.title": "We need your driver license",
2715
2722
  "segmentMessages.identity.step.docUpload.uploadInstructions": "Upload a government-issued document that shows",
2716
- "segmentMessages.identity.step.personalInfo.howDoesVerifyingWorkDetails": "\nTo be eligible for this offer, you must have a valid driver license.\n<br><br>\n{companyName} uses SheerID, a trusted partner, to verify your identity. SheerID only collects information that assists in\nverifying your eligibility. Additional information or documentation may be requested.",
2723
+ "segmentMessages.identity.step.personalInfo.howDoesVerifyingWorkDetails": "\n To be eligible for this offer, you must have a valid driver license.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify your identity. SheerID only collects information that assists in\n verifying your eligibility. Additional information or documentation may be requested.",
2717
2724
  "segmentMessages.identity.step.personalInfo.subtitle": "Verify your current identity.",
2718
2725
  "segmentMessages.identity.step.personalInfo.title": "Unlock Your Special Offer",
2719
2726
  "segmentMessages.identity.step.personalInfo.tryAgain.subtitle": "Your information must match what is on your government-issued document(s).",
@@ -2723,11 +2730,11 @@ var enUSMessages = {
2723
2730
  "segmentMessages.identity.step.success.subtitle": "Here is your personal coupon code. It is unique to you and can only be used once.",
2724
2731
  "segmentMessages.identity.step.success.title": "You've been verified",
2725
2732
  "segmentMessages.licensedProfessional.emailExplanation": "Needed to send you your unique code",
2726
- "segmentMessages.licensedProfessional.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying licensed professionals.\n<br><br>\nDocuments are used only for verifying your licensure or certification status is current and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2733
+ "segmentMessages.licensedProfessional.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying licensed professionals.\n <br><br>\n Documents are used only for verifying your licensure or certification status is current and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2727
2734
  "segmentMessages.licensedProfessional.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2728
2735
  "segmentMessages.licensedProfessional.step.docUpload.title": "We need your professional license or certificate",
2729
2736
  "segmentMessages.licensedProfessional.step.docUpload.uploadInstructions": "Upload a government-issued document that shows",
2730
- "segmentMessages.licensedProfessional.step.personalInfo.howDoesVerifyingWorkDetails": "\nTo be eligible for this offer, you must hold a current professional license in your specified field. Eligible fields are shown in the Status selector of this form.\n<br><br>\n{companyName} uses SheerID, a trusted partner, to verify that you are a licensed professional.\nSheerID only collects information that assists in verifying your eligibility. Additional information or documentation may be requested.",
2737
+ "segmentMessages.licensedProfessional.step.personalInfo.howDoesVerifyingWorkDetails": "\n To be eligible for this offer, you must hold a current professional license in your specified field. Eligible fields are shown in the Status selector of this form.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify that you are a licensed professional.\n SheerID only collects information that assists in verifying your eligibility. Additional information or documentation may be requested.",
2731
2738
  "segmentMessages.licensedProfessional.step.personalInfo.subtitle": "\"Verify you have a professional license in your field.",
2732
2739
  "segmentMessages.licensedProfessional.step.personalInfo.title": "Unlock this Special Offer",
2733
2740
  "segmentMessages.licensedProfessional.step.personalInfo.tryAgain.subtitle": "Your information must match what is on your government-issued document(s).",
@@ -2737,11 +2744,11 @@ var enUSMessages = {
2737
2744
  "segmentMessages.licensedProfessional.step.success.subtitle": "Here is your personal coupon code. It is unique to you and can only be used once.",
2738
2745
  "segmentMessages.licensedProfessional.step.success.title": "You've been verified",
2739
2746
  "segmentMessages.lowIncome.emailExplanation": "Needed to send you your unique code",
2740
- "segmentMessages.lowIncome.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying your eligibility.\n<br><br>\nDocuments are used only for verifying your eligibility status is current and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2747
+ "segmentMessages.lowIncome.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying your eligibility.\n <br><br>\n Documents are used only for verifying your eligibility status is current and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2741
2748
  "segmentMessages.lowIncome.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2742
2749
  "segmentMessages.lowIncome.step.docUpload.title": "We need some more info",
2743
2750
  "segmentMessages.lowIncome.step.docUpload.uploadInstructions": "Upload an official document that shows:",
2744
- "segmentMessages.lowIncome.step.personalInfo.howDoesVerifyingWorkDetails": "\nTo be eligible for this offer, you must currently qualify for an eligible government assistance program. The eligible Government Assistance Programs for this offer can be found in the box below. \n<br><br>\n{companyName} uses SheerID, a trusted partner, to verify that you are a recipient of these benefits. \nSheerID only collects information that assists in verifying your eligibility. Additional information or documentation may be requested.",
2751
+ "segmentMessages.lowIncome.step.personalInfo.howDoesVerifyingWorkDetails": "\n To be eligible for this offer, you must currently qualify for an eligible government assistance program. The eligible Government Assistance Programs for this offer can be found in the box below. \n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify that you are a recipient of these benefits. \n SheerID only collects information that assists in verifying your eligibility. Additional information or documentation may be requested.",
2745
2752
  "segmentMessages.lowIncome.step.personalInfo.subtitle": "Verify you qualify for an eligible government assistance program.",
2746
2753
  "segmentMessages.lowIncome.step.personalInfo.title": "Unlock this Special Offer",
2747
2754
  "segmentMessages.lowIncome.step.personalInfo.tryAgain.subtitle": "Your information must match what is on your government-issued document(s).",
@@ -2751,11 +2758,11 @@ var enUSMessages = {
2751
2758
  "segmentMessages.lowIncome.step.success.subtitle": "Here is your personal coupon code. It is unique to you and can only be used once.",
2752
2759
  "segmentMessages.lowIncome.step.success.title": "You've been verified",
2753
2760
  "segmentMessages.medical.emailExplanation": "Use your work email if you have one",
2754
- "segmentMessages.medical.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying\n medical professionals.<br><br>Documents are used only for verifying your medical professional status is\n current and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2761
+ "segmentMessages.medical.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying\n medical professionals.<br><br>Documents are used only for verifying your medical professional status is\n current and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2755
2762
  "segmentMessages.medical.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2756
2763
  "segmentMessages.medical.step.docUpload.title": "We need more information",
2757
2764
  "segmentMessages.medical.step.docUpload.uploadInstructions": "Upload an official document that shows",
2758
- "segmentMessages.medical.step.personalInfo.howDoesVerifyingWorkDetails": "To be eligible for this offer, you must (1) be a medical professional currently licensed in the United States\n and (2) be a member of an eligible branch of the medical profession. Eligible branches are shown in the Status\n selector of this form.<br><br>{companyName} uses SheerID, a trusted partner, to verify that you are a medical professional.\n SheerID only collects information that assists in verifying your eligibility.\n Additional information or documentation may be requested.",
2765
+ "segmentMessages.medical.step.personalInfo.howDoesVerifyingWorkDetails": "To be eligible for this offer, you must (1) be a medical professional currently licensed in the United States\n and (2) be a member of an eligible branch of the medical profession. Eligible branches are shown in the Status\n selector of this form.<br><br>{companyName} uses SheerID, a trusted partner, to verify that you are a medical professional.\n SheerID only collects information that assists in verifying your eligibility.\n Additional information or documentation may be requested.",
2759
2766
  "segmentMessages.medical.step.personalInfo.subtitle": "Verify you're a licensed medical professional.",
2760
2767
  "segmentMessages.medical.step.personalInfo.title": "Unlock this Medical Professional-Only Offer",
2761
2768
  "segmentMessages.medical.step.personalInfo.tryAgain.subtitle": "Your first and last name, birthdate and organization must match what is on your official documents.",
@@ -2768,11 +2775,11 @@ var enUSMessages = {
2768
2775
  "segmentMessages.medical.step.success.subtitle": "Here is your personal coupon code. It is unique to you and can only be used once.",
2769
2776
  "segmentMessages.medical.step.success.title": "You've been verified",
2770
2777
  "segmentMessages.member.emailExplanation": "Needed to send you your unique code",
2771
- "segmentMessages.member.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying members.\n<br><br>\nDocuments are used only to verify that your membership status is current and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2778
+ "segmentMessages.member.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying members.\n <br><br>\n Documents are used only to verify that your membership status is current and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2772
2779
  "segmentMessages.member.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2773
2780
  "segmentMessages.member.step.docUpload.title": "We need more information",
2774
2781
  "segmentMessages.member.step.docUpload.uploadInstructions": "Upload an official document that shows",
2775
- "segmentMessages.member.step.personalInfo.howDoesVerifyingWorkDetails": "{companyName} has set up this special offer for all current members of select organizations.\n<br><br>\n{companyName} uses SheerID, a trusted partner, to verify that you are currently employed. SheerID only collects\ninformation that assists in verifying your eligibility. Additional information or documentation may be requested.",
2782
+ "segmentMessages.member.step.personalInfo.howDoesVerifyingWorkDetails": "{companyName} has set up this special offer for all current members of select organizations.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify that you are currently employed. SheerID only collects\n information that assists in verifying your eligibility. Additional information or documentation may be requested.",
2776
2783
  "segmentMessages.member.step.personalInfo.subtitle": "Verify you're a current member of an eligible organization.",
2777
2784
  "segmentMessages.member.step.personalInfo.title": "Unlock this Members-Only Offer",
2778
2785
  "segmentMessages.member.step.personalInfo.tryAgain.subtitle": "The information you have provided should match your official documents.",
@@ -2782,11 +2789,11 @@ var enUSMessages = {
2782
2789
  "segmentMessages.member.step.success.subtitle": "Here is your personal coupon code. It is unique to you and can only be used once.",
2783
2790
  "segmentMessages.member.step.success.title": "You've been verified",
2784
2791
  "segmentMessages.military.emailExplanation": "Personal email address is recommended",
2785
- "segmentMessages.military.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying military.\n<br><br>\nDocuments are used only for verifying your military status is current and will be permanently deleted after review is finalized.\nThey will not be shared with {companyName}",
2792
+ "segmentMessages.military.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying military.\n <br><br>\n Documents are used only for verifying your military status is current and will be permanently deleted after review is finalized.\n They will not be shared with {companyName}",
2786
2793
  "segmentMessages.military.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2787
2794
  "segmentMessages.military.step.docUpload.title": "We need more information",
2788
2795
  "segmentMessages.military.step.docUpload.uploadInstructions": "Upload your government-issued document that shows:",
2789
- "segmentMessages.military.step.personalInfo.howDoesVerifyingWorkDetails": "\nThis offer is available to military personnel who have served or are currently serving in the United States Armed Forces.\n<br><br>\n{companyName} uses SheerID, a trusted partner, to verify that you are a member of the military. SheerID only collects information\nthat assists in verifying your eligibility. Additional information or documentation may be requested.",
2796
+ "segmentMessages.military.step.personalInfo.howDoesVerifyingWorkDetails": "\n This offer is available to military personnel who have served or are currently serving in the United States Armed Forces.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify that you are a member of the military. SheerID only collects information\n that assists in verifying your eligibility. Additional information or documentation may be requested.",
2790
2797
  "segmentMessages.military.step.personalInfo.subtitle": "Verify you're a member of the armed forces.",
2791
2798
  "segmentMessages.military.step.personalInfo.title": "Unlock this Military-Only Offer",
2792
2799
  "segmentMessages.military.step.personalInfo.tryAgain.subtitle": "Enter your first and last name on the form as it appears on your military document(s). Keep in mind that may be your given name.",
@@ -2796,11 +2803,11 @@ var enUSMessages = {
2796
2803
  "segmentMessages.military.step.success.subtitle": "Here is your personal coupon code. It is unique to you and can only be used once.",
2797
2804
  "segmentMessages.military.step.success.title": "You've been verified",
2798
2805
  "segmentMessages.recentMover.emailExplanation": "Needed to send you your unique code",
2799
- "segmentMessages.recentMover.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying recent movers.\n <br><br>\n Documents are used only for verifying that you've recently moved and will will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2806
+ "segmentMessages.recentMover.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying recent movers.\n <br/><br/>\n Documents are used only for verifying that you've recently moved and will will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2800
2807
  "segmentMessages.recentMover.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2801
2808
  "segmentMessages.recentMover.step.docUpload.title": "We need some more info",
2802
2809
  "segmentMessages.recentMover.step.docUpload.uploadInstructions": "Upload an official document that shows",
2803
- "segmentMessages.recentMover.step.personalInfo.howDoesVerifyingWorkDetails": "\n To be eligible for this offer, you must have moved to a new address within the last 60 days.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify that you have recently moved. SheerID only\n collects information that assists in verifying your eligibility.\n Additional information or documentation may be requested.",
2810
+ "segmentMessages.recentMover.step.personalInfo.howDoesVerifyingWorkDetails": "\n To be eligible for this offer, you must have moved to a new address within the last 60 days.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify that you have recently moved. SheerID only\n collects information that assists in verifying your eligibility.\n Additional information or documentation may be requested.",
2804
2811
  "segmentMessages.recentMover.step.personalInfo.subtitle": "Verify you have recently moved.",
2805
2812
  "segmentMessages.recentMover.step.personalInfo.title": "Unlock this Special Offer",
2806
2813
  "segmentMessages.recentMover.step.personalInfo.tryAgain.subtitle": "Your first and last name and address must match what is on your official documents.",
@@ -2810,11 +2817,11 @@ var enUSMessages = {
2810
2817
  "segmentMessages.recentMover.step.success.subtitle": "Here is your personal coupon code. It is unique to you and can only be used once.",
2811
2818
  "segmentMessages.recentMover.step.success.title": "You've been verified",
2812
2819
  "segmentMessages.senior.emailExplanation": "Needed to send you your unique code",
2813
- "segmentMessages.senior.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying age.\n<br><br>\nDocuments are used only for verifying your current age and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2820
+ "segmentMessages.senior.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying age.\n <br><br>\n Documents are used only for verifying your current age and will be permanently deleted after review is finalized. They will not be shared with {companyName}",
2814
2821
  "segmentMessages.senior.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2815
2822
  "segmentMessages.senior.step.docUpload.title": "We need your license or passport",
2816
2823
  "segmentMessages.senior.step.docUpload.uploadInstructions": "Upload a government-issued document that shows",
2817
- "segmentMessages.senior.step.personalInfo.howDoesVerifyingWorkDetails": "\nTo be eligible for this offer, you must be of a certain age.\n<br><br>\n{companyName} uses SheerID, a trusted partner, to verify your age. SheerID only collects information that assists in\nverifying your eligibility. Additional information or documentation may be requested.",
2824
+ "segmentMessages.senior.step.personalInfo.howDoesVerifyingWorkDetails": "\n To be eligible for this offer, you must be of a certain age.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify your age. SheerID only collects information that assists in\n verifying your eligibility. Additional information or documentation may be requested.",
2818
2825
  "segmentMessages.senior.step.personalInfo.subtitle": "Verify your current age.",
2819
2826
  "segmentMessages.senior.step.personalInfo.title": "Unlock Your Special Offer",
2820
2827
  "segmentMessages.senior.step.personalInfo.tryAgain.subtitle": "Your full name and birthdate must match what is on your government-issued documents.",
@@ -2825,11 +2832,11 @@ var enUSMessages = {
2825
2832
  "segmentMessages.senior.step.success.title": "You've been verified",
2826
2833
  "segmentMessages.student.emailExplanation": "A student email address is preferred",
2827
2834
  "segmentMessages.student.schoolName": "University / college name",
2828
- "segmentMessages.student.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying students.\n <br><br>\n Documents are used only for verifying your student status is current and will be permanently deleted after review is finalized.",
2835
+ "segmentMessages.student.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying students.\n <br/><br/>\n Documents are used only for verifying your student status is current and will be permanently deleted after review is finalized.",
2829
2836
  "segmentMessages.student.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2830
2837
  "segmentMessages.student.step.docUpload.title": "We need your ID & class schedule",
2831
2838
  "segmentMessages.student.step.docUpload.uploadInstructions": "Upload your school-issued document that shows",
2832
- "segmentMessages.student.step.personalInfo.howDoesVerifyingWorkDetails": "\n To be eligible for this offer, you must currently be enrolled in a degree\n or certificate-granting, accredited school of education.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify that you are a current student. SheerID only\n collects information that assists in verifying your eligibility.\n Additional information or documentation may be requested.",
2839
+ "segmentMessages.student.step.personalInfo.howDoesVerifyingWorkDetails": "\n To be eligible for this offer, you must currently be enrolled in a degree\n or certificate-granting, accredited school of education.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify that you are a current student. SheerID only\n collects information that assists in verifying your eligibility.\n Additional information or documentation may be requested.",
2833
2840
  "segmentMessages.student.step.personalInfo.subtitle": "Verify you're a student at a degree-granting school.",
2834
2841
  "segmentMessages.student.step.personalInfo.title": "Unlock this Student-Only Offer",
2835
2842
  "segmentMessages.student.step.personalInfo.tryAgain.subtitle": "Your full name and birthdate must match what is on your official school records.",
@@ -2842,11 +2849,11 @@ var enUSMessages = {
2842
2849
  "segmentMessages.teacher.emailExplanation": "Must be your school-issued email address",
2843
2850
  "segmentMessages.teacher.schoolName": "School name",
2844
2851
  "segmentMessages.teacher.schoolNamePlaceholder": "School name",
2845
- "segmentMessages.teacher.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying teachers.\n <br><br>\n Documents are used only for verifying your teacher or faculty status is current and will be permanently\n deleted after review is finalized. They will not be shared with {companyName}",
2852
+ "segmentMessages.teacher.step.docUpload.howDoesVerifyingWorkDetails": "Document review is handled by SheerID, a trusted partner who specializes in verifying teachers.\n <br><br>\n Documents are used only for verifying your teacher or faculty status is current and will be permanently\n deleted after review is finalized. They will not be shared with {companyName}",
2846
2853
  "segmentMessages.teacher.step.docUpload.subtitle": "Documents will be reviewed in {estimatedWaitTime} by staff at SheerID, a trusted partner.",
2847
2854
  "segmentMessages.teacher.step.docUpload.title": "We need more information",
2848
2855
  "segmentMessages.teacher.step.docUpload.uploadInstructions": "Upload your school-issued document that shows",
2849
- "segmentMessages.teacher.step.personalInfo.howDoesVerifyingWorkDetails": "\nTo be eligible for this offer, you must currently be employed as a teacher, faculty or staff at a K-12\nschool or university in the United States.\n<br><br>\n{companyName} uses SheerID, a trusted partner, to verify that you are a current teacher, faculty or staff\nmember. SheerID only collects information that assists in verifying your eligibility. Additional information\nor documentation may be requested.",
2856
+ "segmentMessages.teacher.step.personalInfo.howDoesVerifyingWorkDetails": "\n To be eligible for this offer, you must currently be employed as a teacher, faculty or staff at a K-12\n school or university in the United States.\n <br><br>\n {companyName} uses SheerID, a trusted partner, to verify that you are a current teacher, faculty or staff\n member. SheerID only collects information that assists in verifying your eligibility. Additional information\n or documentation may be requested.",
2850
2857
  "segmentMessages.teacher.step.personalInfo.subtitle": "Verify you're a teacher, faculty or staff at a K-12 or degree-granting university.",
2851
2858
  "segmentMessages.teacher.step.personalInfo.title": "Unlock this Teaching Staff-Only Offer",
2852
2859
  "segmentMessages.teacher.step.personalInfo.tryAgain.subtitle": "Your full name and email address must match what is on record with your school.",
@@ -2877,154 +2884,154 @@ const getMessagesModuleByLocale = async (locale) => {
2877
2884
  switch (locale) {
2878
2885
  case "ar":
2879
2886
  localizedMessages = await import(
2880
- /* webpackChunkName: "messages_ar" */ './es6/ar-2a0ea0a2.es.js').then((m) => m.default);
2887
+ /* webpackChunkName: "messages_ar" */ './es6/ar-b27b7093.es.js').then((m) => m.default);
2881
2888
  break;
2882
2889
  case "bg":
2883
2890
  localizedMessages = await import(
2884
- /* webpackChunkName: "messages_bg" */ './es6/bg-7492e98f.es.js').then((m) => m.default);
2891
+ /* webpackChunkName: "messages_bg" */ './es6/bg-dc006d27.es.js').then((m) => m.default);
2885
2892
  break;
2886
2893
  case "cs":
2887
2894
  localizedMessages = await import(
2888
- /* webpackChunkName: "messages_cs" */ './es6/cs-69493771.es.js').then((m) => m.default);
2895
+ /* webpackChunkName: "messages_cs" */ './es6/cs-c69d953e.es.js').then((m) => m.default);
2889
2896
  break;
2890
2897
  case "da":
2891
2898
  localizedMessages = await import(
2892
- /* webpackChunkName: "messages_da" */ './es6/da-c183492c.es.js').then((m) => m.default);
2899
+ /* webpackChunkName: "messages_da" */ './es6/da-b076ddb8.es.js').then((m) => m.default);
2893
2900
  break;
2894
2901
  case "de":
2895
2902
  localizedMessages = await import(
2896
- /* webpackChunkName: "messages_de" */ './es6/de-e87946f1.es.js').then((m) => m.default);
2903
+ /* webpackChunkName: "messages_de" */ './es6/de-354c036e.es.js').then((m) => m.default);
2897
2904
  break;
2898
2905
  case "el":
2899
2906
  localizedMessages = await import(
2900
- /* webpackChunkName: "messages_el" */ './es6/el-901232c4.es.js').then((m) => m.default);
2907
+ /* webpackChunkName: "messages_el" */ './es6/el-f6dbc2d3.es.js').then((m) => m.default);
2901
2908
  break;
2902
2909
  case "en-GB":
2903
2910
  localizedMessages = await import(
2904
- /* webpackChunkName: "messages_en-GB" */ './es6/en-GB-705bcf25.es.js').then((m) => m.default);
2911
+ /* webpackChunkName: "messages_en-GB" */ './es6/en-GB-860e8aa7.es.js').then((m) => m.default);
2905
2912
  break;
2906
2913
  case "en-US":
2907
2914
  localizedMessages = enUSMessages;
2908
2915
  break;
2909
2916
  case "es-ES":
2910
2917
  localizedMessages = await import(
2911
- /* webpackChunkName: "messages_es-ES" */ './es6/es-ES-de4f369c.es.js').then((m) => m.default);
2918
+ /* webpackChunkName: "messages_es-ES" */ './es6/es-ES-bf00171e.es.js').then((m) => m.default);
2912
2919
  break;
2913
2920
  case "es":
2914
2921
  localizedMessages = await import(
2915
- /* webpackChunkName: "messages_es" */ './es6/es-fc0efe3b.es.js').then((m) => m.default);
2922
+ /* webpackChunkName: "messages_es" */ './es6/es-353dbd9f.es.js').then((m) => m.default);
2916
2923
  break;
2917
2924
  case "fi":
2918
2925
  localizedMessages = await import(
2919
- /* webpackChunkName: "messages_fi" */ './es6/fi-d36e43af.es.js').then((m) => m.default);
2926
+ /* webpackChunkName: "messages_fi" */ './es6/fi-c7989cb5.es.js').then((m) => m.default);
2920
2927
  break;
2921
2928
  case "fr-CA":
2922
2929
  localizedMessages = await import(
2923
- /* webpackChunkName: "messages_fr-CA" */ './es6/fr-CA-32c93ab3.es.js').then((m) => m.default);
2930
+ /* webpackChunkName: "messages_fr-CA" */ './es6/fr-CA-4099284c.es.js').then((m) => m.default);
2924
2931
  break;
2925
2932
  case "fr":
2926
2933
  localizedMessages = await import(
2927
- /* webpackChunkName: "messages_fr" */ './es6/fr-389b68b2.es.js').then((m) => m.default);
2934
+ /* webpackChunkName: "messages_fr" */ './es6/fr-b4eb4bb8.es.js').then((m) => m.default);
2928
2935
  break;
2929
2936
  case "ga":
2930
2937
  localizedMessages = await import(
2931
- /* webpackChunkName: "messages_ga" */ './es6/ga-8a7fa7c0.es.js').then((m) => m.default);
2938
+ /* webpackChunkName: "messages_ga" */ './es6/ga-411aa244.es.js').then((m) => m.default);
2932
2939
  break;
2933
2940
  case "hr":
2934
2941
  localizedMessages = await import(
2935
- /* webpackChunkName: "messages_hr" */ './es6/hr-c62d82b8.es.js').then((m) => m.default);
2942
+ /* webpackChunkName: "messages_hr" */ './es6/hr-5cbbd24b.es.js').then((m) => m.default);
2936
2943
  break;
2937
2944
  case "hu":
2938
2945
  localizedMessages = await import(
2939
- /* webpackChunkName: "messages_hu" */ './es6/hu-30eada8c.es.js').then((m) => m.default);
2946
+ /* webpackChunkName: "messages_hu" */ './es6/hu-70183b5c.es.js').then((m) => m.default);
2940
2947
  break;
2941
2948
  case "id":
2942
2949
  localizedMessages = await import(
2943
- /* webpackChunkName: "messages_id" */ './es6/id-cb32d82c.es.js').then((m) => m.default);
2950
+ /* webpackChunkName: "messages_id" */ './es6/id-5bff21ac.es.js').then((m) => m.default);
2944
2951
  break;
2945
2952
  case "it":
2946
2953
  localizedMessages = await import(
2947
- /* webpackChunkName: "messages_it" */ './es6/it-253978c9.es.js').then((m) => m.default);
2954
+ /* webpackChunkName: "messages_it" */ './es6/it-71448850.es.js').then((m) => m.default);
2948
2955
  break;
2949
2956
  case "iw":
2950
2957
  localizedMessages = await import(
2951
- /* webpackChunkName: "messages_iw" */ './es6/iw-91688793.es.js').then((m) => m.default);
2958
+ /* webpackChunkName: "messages_iw" */ './es6/iw-688d2e54.es.js').then((m) => m.default);
2952
2959
  break;
2953
2960
  case "ja":
2954
2961
  localizedMessages = await import(
2955
- /* webpackChunkName: "messages_ja" */ './es6/ja-3193a4d4.es.js').then((m) => m.default);
2962
+ /* webpackChunkName: "messages_ja" */ './es6/ja-34d2940e.es.js').then((m) => m.default);
2956
2963
  break;
2957
2964
  case "ko":
2958
2965
  localizedMessages = await import(
2959
- /* webpackChunkName: "messages_ko" */ './es6/ko-f3bfa87b.es.js').then((m) => m.default);
2966
+ /* webpackChunkName: "messages_ko" */ './es6/ko-f5c9d886.es.js').then((m) => m.default);
2960
2967
  break;
2961
2968
  case "lo":
2962
2969
  localizedMessages = await import(
2963
- /* webpackChunkName: "messages_lo" */ './es6/lo-2129d0ad.es.js').then((m) => m.default);
2970
+ /* webpackChunkName: "messages_lo" */ './es6/lo-ac700ebc.es.js').then((m) => m.default);
2964
2971
  break;
2965
2972
  case "lt":
2966
2973
  localizedMessages = await import(
2967
- /* webpackChunkName: "messages_lt" */ './es6/lt-8da08268.es.js').then((m) => m.default);
2974
+ /* webpackChunkName: "messages_lt" */ './es6/lt-ab484249.es.js').then((m) => m.default);
2968
2975
  break;
2969
2976
  case "ms":
2970
2977
  localizedMessages = await import(
2971
- /* webpackChunkName: "messages_ms" */ './es6/ms-3721a2b0.es.js').then((m) => m.default);
2978
+ /* webpackChunkName: "messages_ms" */ './es6/ms-10199939.es.js').then((m) => m.default);
2972
2979
  break;
2973
2980
  case "nl":
2974
2981
  localizedMessages = await import(
2975
- /* webpackChunkName: "messages_nl" */ './es6/nl-00c90dfa.es.js').then((m) => m.default);
2982
+ /* webpackChunkName: "messages_nl" */ './es6/nl-20646f48.es.js').then((m) => m.default);
2976
2983
  break;
2977
2984
  case "no":
2978
2985
  localizedMessages = await import(
2979
- /* webpackChunkName: "messages_no" */ './es6/no-35d2b69f.es.js').then((m) => m.default);
2986
+ /* webpackChunkName: "messages_no" */ './es6/no-b3a23bde.es.js').then((m) => m.default);
2980
2987
  break;
2981
2988
  case "pl":
2982
2989
  localizedMessages = await import(
2983
- /* webpackChunkName: "messages_pl" */ './es6/pl-691de3d9.es.js').then((m) => m.default);
2990
+ /* webpackChunkName: "messages_pl" */ './es6/pl-d8bd7c17.es.js').then((m) => m.default);
2984
2991
  break;
2985
2992
  case "pt-BR":
2986
2993
  localizedMessages = await import(
2987
- /* webpackChunkName: "messages_pt-BR" */ './es6/pt-BR-100c45c6.es.js').then((m) => m.default);
2994
+ /* webpackChunkName: "messages_pt-BR" */ './es6/pt-BR-ea3788be.es.js').then((m) => m.default);
2988
2995
  break;
2989
2996
  case "pt":
2990
2997
  localizedMessages = await import(
2991
- /* webpackChunkName: "messages_pt" */ './es6/pt-3be0a3a6.es.js').then((m) => m.default);
2998
+ /* webpackChunkName: "messages_pt" */ './es6/pt-d888c58c.es.js').then((m) => m.default);
2992
2999
  break;
2993
3000
  case "ru":
2994
3001
  localizedMessages = await import(
2995
- /* webpackChunkName: "messages_ru" */ './es6/ru-5e886dd4.es.js').then((m) => m.default);
3002
+ /* webpackChunkName: "messages_ru" */ './es6/ru-1e1c813e.es.js').then((m) => m.default);
2996
3003
  break;
2997
3004
  case "sk":
2998
3005
  localizedMessages = await import(
2999
- /* webpackChunkName: "messages_sk" */ './es6/sk-f4ed521d.es.js').then((m) => m.default);
3006
+ /* webpackChunkName: "messages_sk" */ './es6/sk-2b93af62.es.js').then((m) => m.default);
3000
3007
  break;
3001
3008
  case "sl":
3002
3009
  localizedMessages = await import(
3003
- /* webpackChunkName: "messages_sl" */ './es6/sl-9a37658c.es.js').then((m) => m.default);
3010
+ /* webpackChunkName: "messages_sl" */ './es6/sl-2d43a487.es.js').then((m) => m.default);
3004
3011
  break;
3005
3012
  case "sr":
3006
3013
  localizedMessages = await import(
3007
- /* webpackChunkName: "messages_sr" */ './es6/sr-aa226b40.es.js').then((m) => m.default);
3014
+ /* webpackChunkName: "messages_sr" */ './es6/sr-be7bfaef.es.js').then((m) => m.default);
3008
3015
  break;
3009
3016
  case "sv":
3010
3017
  localizedMessages = await import(
3011
- /* webpackChunkName: "messages_sv" */ './es6/sv-ba6c3f38.es.js').then((m) => m.default);
3018
+ /* webpackChunkName: "messages_sv" */ './es6/sv-9c576699.es.js').then((m) => m.default);
3012
3019
  break;
3013
3020
  case "th":
3014
3021
  localizedMessages = await import(
3015
- /* webpackChunkName: "messages_th" */ './es6/th-b84abfa6.es.js').then((m) => m.default);
3022
+ /* webpackChunkName: "messages_th" */ './es6/th-b93ed852.es.js').then((m) => m.default);
3016
3023
  break;
3017
3024
  case "tr":
3018
3025
  localizedMessages = await import(
3019
- /* webpackChunkName: "messages_tr" */ './es6/tr-008fab12.es.js').then((m) => m.default);
3026
+ /* webpackChunkName: "messages_tr" */ './es6/tr-ac128e10.es.js').then((m) => m.default);
3020
3027
  break;
3021
3028
  case "zh-HK":
3022
3029
  localizedMessages = await import(
3023
- /* webpackChunkName: "messages_zh-HK" */ './es6/zh-HK-e35398a8.es.js').then((m) => m.default);
3030
+ /* webpackChunkName: "messages_zh-HK" */ './es6/zh-HK-8a1f572e.es.js').then((m) => m.default);
3024
3031
  break;
3025
3032
  case "zh":
3026
3033
  localizedMessages = await import(
3027
- /* webpackChunkName: "messages_zh" */ './es6/zh-14e5aaab.es.js').then((m) => m.default);
3034
+ /* webpackChunkName: "messages_zh" */ './es6/zh-61c87e17.es.js').then((m) => m.default);
3028
3035
  break;
3029
3036
  default:
3030
3037
  logger.warn(`getMessagesModuleByLocale: Unable to load messages for ${locale}, falling back to en-US`);
@@ -3538,6 +3545,7 @@ const activeMilitaryPInfoReqEmpty = {
3538
3545
  ...withLocaleAndCountryEmpty,
3539
3546
  ...withFieldsToSkipValidationEmpty,
3540
3547
  ...blankOrganization,
3548
+ activeDutyStartDate: "",
3541
3549
  birthDate: "",
3542
3550
  status: undefined,
3543
3551
  metadata: {
@@ -3550,6 +3558,7 @@ const inactiveMilitaryPInfoReqEmpty = {
3550
3558
  ...withLocaleAndCountryEmpty,
3551
3559
  ...withFieldsToSkipValidationEmpty,
3552
3560
  ...blankOrganization,
3561
+ activeDutyStartDate: "",
3553
3562
  birthDate: "",
3554
3563
  dischargeDate: "",
3555
3564
  status: undefined,
@@ -3720,6 +3729,7 @@ const initialErrorStructure = {
3720
3729
  city: undefined,
3721
3730
  country: undefined,
3722
3731
  state: undefined,
3732
+ activeDutyStartDate: undefined,
3723
3733
  dischargeDate: undefined,
3724
3734
  docUpload: undefined,
3725
3735
  status: undefined,
@@ -4542,20 +4552,36 @@ const getStateValidationError = (value) => {
4542
4552
  return invalidError;
4543
4553
  }
4544
4554
  };
4555
+ const existsAndIsValidDate = (value) => value !== undefined && isValidDateFormat(value) && isValidDate(value);
4556
+ const isBeforeBirthdate = (value, vm) => {
4557
+ const date = new Date(value);
4558
+ const birthDate = new Date(vm.birthDate);
4559
+ return date < birthDate;
4560
+ };
4545
4561
  const getDischargeDateValidationError = (value, formValidationOptions) => {
4546
- const invalidDischargeDate = "invalidDischargeDate";
4547
- const futureDischargeDate = "futureDischargeDate";
4548
- const dischargeDateBeforeBirthDate = "dischargeDateBeforeBirthDate";
4549
- if (value === undefined || !isValidDateFormat(value) || !isValidDate(value)) {
4550
- return invalidDischargeDate;
4562
+ if (!existsAndIsValidDate(value)) {
4563
+ return "invalidDischargeDate";
4564
+ }
4565
+ if (isFutureDate(value)) {
4566
+ return "futureDischargeDate";
4567
+ }
4568
+ if (isBeforeBirthdate(value, formValidationOptions.viewModel)) {
4569
+ return "dischargeDateBeforeBirthDate";
4570
+ }
4571
+ };
4572
+ const getActiveDutyStartDateValidationError = (value, formValidationOptions) => {
4573
+ if (!value && !formValidationOptions.strictMilitaryValidationEnabled) {
4574
+ // a falsey value is valid unless strictMilitaryValidation is enabled.
4575
+ return;
4576
+ }
4577
+ if (!existsAndIsValidDate(value)) {
4578
+ return "invalidActiveDutyStartDate";
4551
4579
  }
4552
4580
  if (isFutureDate(value)) {
4553
- return futureDischargeDate;
4581
+ return "futureActiveDutyStartDate";
4554
4582
  }
4555
- const dischargeDate = new Date(value);
4556
- const birthDate = new Date(formValidationOptions.viewModel.birthDate);
4557
- if (dischargeDate < birthDate) {
4558
- return dischargeDateBeforeBirthDate;
4583
+ if (isBeforeBirthdate(value, formValidationOptions.viewModel)) {
4584
+ return "activeDutyStartDateBeforeBirthDate";
4559
4585
  }
4560
4586
  };
4561
4587
  const getSsnValidationError = (value) => {
@@ -4780,6 +4806,9 @@ const validateFieldById = (fieldId, value, formValidationOptions) => {
4780
4806
  case FieldIdEnum.dischargeDate:
4781
4807
  defaultValidator = getDischargeDateValidationError;
4782
4808
  return getValidationError(fieldId, value, defaultValidator, overriddenValidator, formValidationOptions);
4809
+ case FieldIdEnum.activeDutyStartDate:
4810
+ defaultValidator = getActiveDutyStartDateValidationError;
4811
+ return getValidationError(fieldId, value, defaultValidator, overriddenValidator, formValidationOptions);
4783
4812
  case FieldIdEnum.socialSecurityNumber:
4784
4813
  defaultValidator = getSsnValidationError;
4785
4814
  return getValidationError(fieldId, value, defaultValidator, overriddenValidator, formValidationOptions);
@@ -11863,6 +11892,7 @@ const activeMilitaryViewModelToRequest = (viewModel) => ({
11863
11892
  firstName: viewModel.firstName,
11864
11893
  lastName: viewModel.lastName,
11865
11894
  birthDate: viewModel.birthDate,
11895
+ activeDutyStartDate: viewModel.activeDutyStartDate || undefined,
11866
11896
  email: viewModel.email,
11867
11897
  phoneNumber: viewModel.phoneNumber,
11868
11898
  organization: viewModel.organization,
@@ -11876,6 +11906,7 @@ const inactiveMilitaryViewModelToRequest = (viewModel) => ({
11876
11906
  firstName: viewModel.firstName,
11877
11907
  lastName: viewModel.lastName,
11878
11908
  birthDate: viewModel.birthDate,
11909
+ activeDutyStartDate: viewModel.activeDutyStartDate || undefined,
11879
11910
  email: viewModel.email,
11880
11911
  phoneNumber: viewModel.phoneNumber,
11881
11912
  organization: viewModel.organization,
@@ -12013,9 +12044,11 @@ const lowIncomeViewModelToRequest = (viewModel) => ({
12013
12044
  birthDate: viewModel.birthDate,
12014
12045
  postalCode: viewModel.postalCode,
12015
12046
  statuses: viewModel.statuses,
12016
- organization: viewModel.organization,
12047
+ organization: viewModel.statuses.includes("OTHER_GOVERNMENT_ASSISTANCE")
12048
+ ? viewModel.organization
12049
+ : undefined,
12017
12050
  deviceFingerprintHash: viewModel.deviceFingerprintHash,
12018
- ebtCardNumber: viewModel.ebtCardNumber,
12051
+ ebtCardNumber: viewModel.statuses.includes("SNAP_BENEFITS") ? viewModel.ebtCardNumber : undefined,
12019
12052
  locale: viewModel.localeChoice.value,
12020
12053
  metadata: viewModel.metadata,
12021
12054
  });
@@ -14877,6 +14910,7 @@ const verificationServiceReducer = (state = getInitialState(), action) => {
14877
14910
  maxAge: state.verificationResponse.maxAge || state.programTheme.config.maxAge,
14878
14911
  minAge: state.verificationResponse.minAge || state.programTheme.config.minAge,
14879
14912
  smsLoopEnabled: state.programTheme.smsLoopEnabled,
14913
+ strictMilitaryValidationEnabled: state.programTheme.strictMilitaryValidationEnabled,
14880
14914
  currentStep: state.verificationResponse.currentStep,
14881
14915
  viewModel: state.viewModel,
14882
14916
  },
@@ -16972,12 +17006,14 @@ const formatTwoDigitValues = (value) => {
16972
17006
  }
16973
17007
  };
16974
17008
 
16975
- const BirthDate = ({ onChange, intl, isErrored, isRequired = true, errorId, value, }) => {
16976
- const birthDateParts = value.split("-");
16977
- const birthDateYear = Number.parseInt(birthDateParts[0], 10) || undefined;
16978
- const birthDateMonth = Number.parseInt(birthDateParts[1], 10) || undefined;
16979
- const birthDateDay = Number.parseInt(birthDateParts[2], 10) || undefined;
16980
- const minBirthYear = 1900;
17009
+ const DateInput = ({ onChange, intl, isErrored, isRequired = true, value = "2000-01-01", errorMsg, label, fieldName, fieldId, mode = "date", }) => {
17010
+ const cssId = `sid-${fieldId}`;
17011
+ const dateParts = value.split("-");
17012
+ const dateYear = Number.parseInt(dateParts[0], 10) || undefined;
17013
+ const dateMonth = Number.parseInt(dateParts[1], 10) || undefined;
17014
+ // Default day to 1 if in month mode (where days are ignored) so that we return valid date strings.
17015
+ const dateDay = mode === "month" ? 1 : Number.parseInt(dateParts[2], 10) || undefined;
17016
+ const minYear = 1900;
16981
17017
  const thisYear = new Date().getFullYear();
16982
17018
  /* prettier-ignore */
16983
17019
  const months = [
@@ -16995,98 +17031,86 @@ const BirthDate = ({ onChange, intl, isErrored, isRequired = true, errorId, valu
16995
17031
  { value: "12", label: intl.formatHTMLMessage({ id: "dateTime.december", defaultMessage: "December" }) },
16996
17032
  ];
16997
17033
  const isDateFieldEmpty = (year, month, day) => (!day || day === "") && (!month || month === "") && (!year || year === "");
16998
- const updateBirthMonth = (month) => {
16999
- if (isDateFieldEmpty(birthDateYear, month, birthDateDay)) {
17034
+ const updateMonth = (month) => {
17035
+ if (isDateFieldEmpty(dateYear, month, dateDay)) {
17000
17036
  onChange("");
17001
17037
  return;
17002
17038
  }
17003
17039
  if (month === "" || month === null) {
17004
- onChange(`${birthDateYear}--${birthDateDay}`);
17040
+ onChange(`${dateYear}--${dateDay}`);
17005
17041
  }
17006
17042
  const newVal = Number.parseInt(month, 10);
17007
17043
  if (typeof newVal === "number" && newVal >= 1 && newVal <= 12) {
17008
- onChange(`${birthDateYear}-${formatTwoDigitValues(month)}-${formatTwoDigitValues(birthDateDay)}`);
17044
+ onChange(`${dateYear}-${formatTwoDigitValues(month)}-${formatTwoDigitValues(dateDay)}`);
17009
17045
  }
17010
17046
  else {
17011
- logger.warn(`Value '${newVal}' is an invalid birth month`);
17047
+ logger.warn(`Value '${newVal}' is an invalid month`);
17012
17048
  }
17013
17049
  };
17014
- const updateBirthDay = (day) => {
17015
- if (isDateFieldEmpty(birthDateYear, birthDateMonth, day)) {
17050
+ const updateDay = (day) => {
17051
+ if (isDateFieldEmpty(dateYear, dateMonth, day)) {
17016
17052
  onChange("");
17017
17053
  return;
17018
17054
  }
17019
17055
  if (day === "") {
17020
- onChange(`${birthDateYear}-${birthDateMonth}-`);
17056
+ onChange(`${dateYear}-${dateMonth}-`);
17021
17057
  }
17022
17058
  const newVal = Number.parseInt(day, 10);
17023
17059
  if (typeof newVal === "number" && newVal >= 1 && newVal <= 31) {
17024
- onChange(`${birthDateYear}-${formatTwoDigitValues(birthDateMonth)}-${formatTwoDigitValues(newVal)}`);
17060
+ onChange(`${dateYear}-${formatTwoDigitValues(dateMonth)}-${formatTwoDigitValues(newVal)}`);
17025
17061
  }
17026
17062
  else {
17027
- logger.warn(`Value '${newVal}' is an invalid birth day`);
17063
+ logger.warn(`Value '${newVal}' is an invalid day`);
17028
17064
  }
17029
17065
  };
17030
17066
  const updateBirthYear = (year) => {
17031
- if (isDateFieldEmpty(year, birthDateMonth, birthDateDay)) {
17067
+ if (isDateFieldEmpty(year, dateMonth, dateDay)) {
17032
17068
  onChange("");
17033
17069
  return;
17034
17070
  }
17035
17071
  if (year === "") {
17036
- onChange(`-${birthDateMonth}-${birthDateDay}`);
17072
+ onChange(`-${dateMonth}-${dateDay}`);
17037
17073
  }
17038
17074
  const newVal = Number.parseInt(year, 10);
17039
17075
  if (typeof newVal === "number" && newVal >= 1 && newVal <= thisYear) {
17040
- onChange(`${newVal}-${formatTwoDigitValues(birthDateMonth)}-${formatTwoDigitValues(birthDateDay)}`);
17076
+ onChange(`${newVal}-${formatTwoDigitValues(dateMonth)}-${formatTwoDigitValues(dateDay)}`);
17041
17077
  }
17042
17078
  else {
17043
- logger.warn(`Value '${newVal}' is an invalid birth year`);
17079
+ logger.warn(`Value '${newVal}' is an invalid year`);
17044
17080
  }
17045
17081
  };
17046
- const getBirthDate = () => {
17047
- if (!birthDateDay && !birthDateMonth && !birthDateYear) {
17082
+ const getDate = () => {
17083
+ if (!dateDay && !dateMonth && !dateYear) {
17048
17084
  onChange("");
17049
17085
  }
17050
17086
  else {
17051
- onChange(`${birthDateYear}-${formatTwoDigitValues(birthDateMonth)}-${formatTwoDigitValues(birthDateDay)}`);
17087
+ onChange(`${dateYear}-${formatTwoDigitValues(dateMonth)}-${formatTwoDigitValues(dateDay)}`);
17052
17088
  }
17053
17089
  };
17054
- const monthFieldId = "sid-birthdate__month";
17055
- const fieldLabelId = "sid-birthdate-label";
17056
- const errMsg = errorId ? (React.createElement("div", { className: "sid-field-error" },
17057
- React.createElement(FormattedHTMLMessage, { id: `errorId.${errorId}`, defaultMessage: "Invalid birth date" }))) : (React.createElement("div", { className: "sid-field-error" },
17058
- React.createElement(FormattedHTMLMessage, { id: "errorId.invalidBirthDate", defaultMessage: "Invalid birth date" })));
17059
- const birthDateDayRef = useRef(null);
17060
- const birthDateYearRef = useRef(null);
17061
- // NOTE: Dependency array omitted to account for use of resetRef(), as useEffect with dep arr
17062
- // will only trigger on initial render leaving the refs empty, this replicates prior version
17063
- // where ref callback would trigger with each re-render
17064
- useEffect(() => {
17065
- setRef("birthDateDay", birthDateDayRef.current);
17066
- setRef("birthDateYear", birthDateYearRef.current);
17067
- });
17068
- return (React.createElement("div", { className: "sid-field sid-birthdate" },
17090
+ const monthFieldId = `${cssId}__month`;
17091
+ const fieldLabelId = `${cssId}-label`;
17092
+ const wrappedErrMsg = React.createElement("div", { className: "sid-field-error" }, errorMsg);
17093
+ return (React.createElement("div", { className: `sid-field ${cssId}` },
17069
17094
  React.createElement("div", { className: "sid-l-space-top-md" }),
17070
- React.createElement(FieldLabel, { text: React.createElement(FormattedHTMLMessage, { id: "birthDate", defaultMessage: "Date of birth" }), htmlForLabel: monthFieldId, id: fieldLabelId, displayClasses: "sid-field__label-with-explanation", isRequired: isRequired },
17095
+ React.createElement(FieldLabel, { text: label, htmlForLabel: monthFieldId, id: fieldLabelId, displayClasses: "sid-field__label-with-explanation", isRequired: isRequired },
17071
17096
  React.createElement(FormattedHTMLMessage, { id: "verificationPurposesOnly", defaultMessage: "Used for verification purposes only" })),
17072
- React.createElement("div", { className: "sid-birthdate__inputs" },
17073
- React.createElement(InputSelectComponent, { className: "sid-birthdate__month", fieldId: "birthDate", inputId: monthFieldId, fieldLabelId: fieldLabelId, isErrored: isErrored, options: months, onChange: (choice) => {
17097
+ React.createElement("div", { className: `${cssId}__inputs sid-date__inputs` },
17098
+ React.createElement(InputSelectComponent, { className: `${cssId}__month sid-date__month`, fieldId: fieldName, inputId: monthFieldId, fieldLabelId: fieldLabelId, isErrored: isErrored, options: months, onChange: (choice) => {
17074
17099
  if (choice) {
17075
- updateBirthMonth(choice.value);
17100
+ updateMonth(choice.value);
17076
17101
  }
17077
17102
  else {
17078
17103
  // clear the birth month
17079
- updateBirthMonth(null);
17104
+ updateMonth(null);
17080
17105
  }
17081
- }, placeholder: intl.formatHTMLMessage({ id: "dateTime.month", defaultMessage: "Month" }), suppressPlaceholder: false, value: birthDateMonth ? months[birthDateMonth - 1] : undefined, isRequired: isRequired, buttonRef: "inputSelectButtonBirthDate" }),
17082
- React.createElement("input", { className: `sid-birthdate__day sid-text-input sid-text-input--required ${isErrored ? "sid-text-input--error" : ""}`, id: "sid-birthdate-day", min: 1, max: 31, name: "sid-birthdate-day", onChange: (e) => updateBirthDay(e.target.value), onBlur: getBirthDate, pattern: "\\d*", placeholder: intl.formatHTMLMessage({ id: "dateTime.day", defaultMessage: "Day" }), "aria-label": intl.formatHTMLMessage({ id: "dateTime.day", defaultMessage: "Day" }), "aria-labelledby": "sid-birthdate", "aria-required": isRequired, ref: birthDateDayRef, type: "text", value: birthDateDay || "" }),
17083
- React.createElement("input", { className: `sid-birthdate__year sid-text-input sid-text-input--required ${isErrored ? "sid-text-input--error" : ""}`, id: "sid-birthdate-year", name: "sid-birthdate-year", type: "text", min: minBirthYear, max: thisYear, value: birthDateYear || "", pattern: "\\d*", placeholder: intl.formatHTMLMessage({ id: "dateTime.year", defaultMessage: "Year" }), "aria-label": intl.formatHTMLMessage({ id: "dateTime.year", defaultMessage: "Year" }), "aria-labelledby": "sid-birthdate", "aria-required": isRequired, ref: birthDateYearRef, onChange: (e) => updateBirthYear(e.target.value), onBlur: getBirthDate })),
17084
- isErrored ? errMsg : null));
17085
- };
17086
- BirthDate.defaultProps = {
17087
- value: "2000-01-01",
17106
+ }, placeholder: intl.formatHTMLMessage({ id: "dateTime.month", defaultMessage: "Month" }), suppressPlaceholder: false, value: dateMonth ? months[dateMonth - 1] : undefined, isRequired: isRequired, buttonRef: "inputSelectButtonBirthDate" }),
17107
+ mode === "date" && (React.createElement(InputTextComponent, { className: `${cssId}__day sid-date__day sid-text-input sid-text-input--required ${isErrored ? "sid-text-input--error" : ""}`, id: `${fieldId}-day`, isErrored: isErrored, min: 1, max: 31, name: `${cssId}-day`, onChange: (e) => updateDay(e.target.value), onBlur: getDate, pattern: "\\d*", placeholder: intl.formatHTMLMessage({ id: "dateTime.day", defaultMessage: "Day" }), "aria-label": intl.formatHTMLMessage({ id: "dateTime.day", defaultMessage: "Day" }), "aria-labelledby": cssId, "aria-required": isRequired, refId: `${fieldName}Day`, type: "text", value: dateDay || "" })),
17108
+ React.createElement(InputTextComponent, { className: `${cssId}__year sid-date__year sid-text-input sid-text-input--required ${isErrored ? "sid-text-input--error" : ""}`, id: `${fieldId}-year`, name: `${cssId}-year`, type: "text", isErrored: isErrored, min: minYear, max: thisYear, value: dateYear || "", pattern: "\\d*", placeholder: intl.formatHTMLMessage({ id: "dateTime.year", defaultMessage: "Year" }), "aria-label": intl.formatHTMLMessage({ id: "dateTime.year", defaultMessage: "Year" }), "aria-labelledby": cssId, "aria-required": isRequired, refId: `${fieldName}Year`, onChange: (e) => updateBirthYear(e.target.value), onBlur: getDate })),
17109
+ isErrored ? wrappedErrMsg : null));
17088
17110
  };
17089
- const BirthDateComponent = injectIntl(BirthDate);
17111
+ const DateComponent = injectIntl(DateInput);
17112
+
17113
+ const BirthDateComponent = ({ onChange, isErrored, isRequired = true, errorId, value = "2000-01-01", }) => (React.createElement(DateComponent, { value: value, label: React.createElement(FormattedHTMLMessage, { id: "birthDate", defaultMessage: "Date of birth" }), onChange: onChange, fieldId: "birthdate", fieldName: "birthDate", isErrored: isErrored, isRequired: isRequired, errorMsg: errorId ? (React.createElement(FormattedHTMLMessage, { id: `errorId.${errorId}`, defaultMessage: "Invalid birth date" })) : (React.createElement(FormattedHTMLMessage, { id: "errorId.invalidBirthDate", defaultMessage: "Invalid birth date" })) }));
17090
17114
 
17091
17115
  function replaceCustomTags(text, tagmap) {
17092
17116
  if (typeof text !== "string")
@@ -18065,6 +18089,8 @@ const BranchOfService = ({ autoFocus, onChange, value, isErrored, organizations,
18065
18089
  };
18066
18090
  const BranchOfServiceComponent = injectIntl(BranchOfService);
18067
18091
 
18092
+ const ActiveDutyStartDateComponent = ({ onChange, isErrored, errorId = "invalidActiveDutyStartDate", value = "2000-01-01", }) => (React.createElement(DateComponent, { value: value, label: React.createElement(FormattedHTMLMessage, { id: "activeDutyStartDate", defaultMessage: "Active Duty Start Date" }), onChange: onChange, fieldName: "activeDutyStartDate", fieldId: "sid-active-duty-start-date", isErrored: isErrored, isRequired: true, errorMsg: React.createElement(FormattedHTMLMessage, { id: `errorId.${errorId}`, defaultMessage: "Invalid start date" }) }));
18093
+
18068
18094
  /**
18069
18095
  * TODO - preamble
18070
18096
  */
@@ -18142,6 +18168,10 @@ const StepActiveMilitaryPersonalInfo = ({ intl, verificationService, }) => {
18142
18168
  updateActiveMilitaryViewModel("birthDate", newValue);
18143
18169
  updateFieldValidationErrorsByFieldId("birthDate", newValue, verificationService);
18144
18170
  }, value: viewModel.birthDate }),
18171
+ verificationService.programTheme.strictMilitaryValidationEnabled && (React.createElement(ActiveDutyStartDateComponent, { isErrored: !!fieldValidationErrors.activeDutyStartDate, errorId: fieldValidationErrors.activeDutyStartDate, onChange: (newValue) => {
18172
+ updateActiveMilitaryViewModel("activeDutyStartDate", newValue);
18173
+ updateFieldValidationErrorsByFieldId("activeDutyStartDate", newValue, verificationService);
18174
+ }, value: viewModel.activeDutyStartDate })),
18145
18175
  React.createElement(EmailComponent, { value: viewModel.email, isErrored: !!fieldValidationErrors.email, explanation: React.createElement(FormattedHTMLMessage, { id: "emailExplanation", defaultMessage: "Personal email address is recommended" }), onChange: (newValue) => {
18146
18176
  updateActiveMilitaryViewModel("email", newValue);
18147
18177
  updateFieldValidationErrorsByFieldId("email", newValue, verificationService);
@@ -18170,78 +18200,7 @@ const StepActiveMilitaryPersonalInfo = ({ intl, verificationService, }) => {
18170
18200
  };
18171
18201
  const StepActiveMilitaryPersonalInfoComponent = injectIntl(StepActiveMilitaryPersonalInfo);
18172
18202
 
18173
- const DischargeDate = ({ onChange, intl, isErrored, value, }) => {
18174
- const dischargeDateParts = value.split("-");
18175
- const dischargeDateYear = Number.parseInt(dischargeDateParts[0], 10) || undefined;
18176
- const dischargeDateMonth = Number.parseInt(dischargeDateParts[1], 10) || undefined;
18177
- const dischargeDateDay = 1;
18178
- const minDischargeYear = 1900;
18179
- const thisYear = new Date().getFullYear();
18180
- const inputId = "sid-discharge-date";
18181
- /* prettier-ignore */
18182
- const months = [
18183
- { value: "1", label: intl.formatHTMLMessage({ id: "dateTime.january", defaultMessage: "January" }), },
18184
- { value: "2", label: intl.formatHTMLMessage({ id: "dateTime.february", defaultMessage: "February" }), },
18185
- { value: "3", label: intl.formatHTMLMessage({ id: "dateTime.march", defaultMessage: "March" }), },
18186
- { value: "4", label: intl.formatHTMLMessage({ id: "dateTime.april", defaultMessage: "April" }), },
18187
- { value: "5", label: intl.formatHTMLMessage({ id: "dateTime.may", defaultMessage: "May" }) },
18188
- { value: "6", label: intl.formatHTMLMessage({ id: "dateTime.june", defaultMessage: "June" }) },
18189
- { value: "7", label: intl.formatHTMLMessage({ id: "dateTime.july", defaultMessage: "July" }) },
18190
- { value: "8", label: intl.formatHTMLMessage({ id: "dateTime.august", defaultMessage: "August" }), },
18191
- { value: "9", label: intl.formatHTMLMessage({ id: "dateTime.september", defaultMessage: "September" }), },
18192
- { value: "10", label: intl.formatHTMLMessage({ id: "dateTime.october", defaultMessage: "October" }), },
18193
- { value: "11", label: intl.formatHTMLMessage({ id: "dateTime.november", defaultMessage: "November" }), },
18194
- { value: "12", label: intl.formatHTMLMessage({ id: "dateTime.december", defaultMessage: "December" }), },
18195
- ];
18196
- const updateDischargeMonth = (month) => {
18197
- if (month === "" || month === null) {
18198
- onChange(`${dischargeDateYear}--${dischargeDateDay}`);
18199
- }
18200
- const newVal = Number.parseInt(month, 10);
18201
- if (typeof newVal === "number" && newVal >= 1 && newVal <= 12) {
18202
- onChange(`${dischargeDateYear}-${formatTwoDigitValues(month)}-${formatTwoDigitValues(dischargeDateDay)}`);
18203
- }
18204
- else {
18205
- logger.warn(`Value '${newVal}' is an invalid discharge month`);
18206
- }
18207
- };
18208
- const updateDischargeYear = (year) => {
18209
- if (year === "") {
18210
- onChange(`-${dischargeDateMonth}-${dischargeDateDay}`);
18211
- }
18212
- const newVal = Number.parseInt(year, 10);
18213
- if (typeof newVal === "number" && newVal >= 1 && newVal <= thisYear) {
18214
- onChange(`${newVal}-${formatTwoDigitValues(dischargeDateMonth)}-${formatTwoDigitValues(dischargeDateDay)}`);
18215
- }
18216
- else {
18217
- logger.warn(`Value '${newVal}' is an invalid discharge year`);
18218
- }
18219
- };
18220
- const getDischargeDate = () => {
18221
- onChange(`${dischargeDateYear}-${formatTwoDigitValues(dischargeDateMonth)}-${formatTwoDigitValues(dischargeDateDay)}`);
18222
- };
18223
- return (React.createElement("div", { className: `sid-field ${inputId}` },
18224
- React.createElement("div", { className: "sid-l-space-top-md" }),
18225
- React.createElement(FieldLabel, { text: React.createElement(FormattedHTMLMessage, { id: "dischargeDate", defaultMessage: "Discharge date" }), htmlForLabel: `${inputId}__month`, id: `${inputId}-label`, displayClasses: "sid-field__label-with-explanation" },
18226
- React.createElement(FormattedHTMLMessage, { id: "verificationPurposesOnly", defaultMessage: "Used for verification purposes only" })),
18227
- React.createElement("div", { className: `${inputId}__inputs` },
18228
- React.createElement(InputSelectComponent, { className: `${inputId}__month`, fieldId: "dischargeDate", inputId: `${inputId}__month`, fieldLabelId: `${inputId}-label`, isErrored: isErrored, options: months, onChange: (choice) => {
18229
- if (choice) {
18230
- updateDischargeMonth(choice.value);
18231
- }
18232
- else {
18233
- // clear the discharge month
18234
- updateDischargeMonth(null);
18235
- }
18236
- }, placeholder: intl.formatHTMLMessage({ id: "dateTime.month", defaultMessage: "Month" }), suppressPlaceholder: false, value: dischargeDateMonth ? months[dischargeDateMonth - 1] : undefined, buttonRef: "inputSelectButtonDischargeDate", isRequired: true }),
18237
- React.createElement(InputTextComponent, { className: `${inputId}__year`, id: "discharge-date-year", isErrored: isErrored, max: thisYear, min: minDischargeYear, onBlur: getDischargeDate, onChange: (e) => updateDischargeYear(e.target.value), pattern: "\\d*", placeholder: intl.formatHTMLMessage({ id: "dateTime.year", defaultMessage: "Year" }), hidePlaceholder: false, refId: "dischargeDateYear", required: true, value: dischargeDateYear || "", "aria-labelledby": "sid-discharge-date-label" })),
18238
- isErrored ? (React.createElement("div", { className: "sid-field-error" },
18239
- React.createElement(FormattedHTMLMessage, { id: "errorId.invalidDischargeDate", defaultMessage: "Invalid discharge date" }))) : null));
18240
- };
18241
- DischargeDate.defaultProps = {
18242
- value: "2000-01-01",
18243
- };
18244
- const DischargeDateComponent = injectIntl(DischargeDate);
18203
+ const DischargeDateComponent = ({ onChange, isErrored, value = "2000-01-01", }) => (React.createElement(DateComponent, { mode: "month", value: value, label: React.createElement(FormattedHTMLMessage, { id: "dischargeDate", defaultMessage: "Discharge date" }), onChange: onChange, fieldName: "dischargeDate", fieldId: "discharge-date", isErrored: isErrored, isRequired: true, errorMsg: React.createElement(FormattedHTMLMessage, { id: "errorId.invalidDischargeDate", defaultMessage: "Invalid discharge date" }) }));
18245
18204
 
18246
18205
  /**
18247
18206
  * TODO - preamble
@@ -18317,6 +18276,10 @@ const StepInactiveMilitaryPersonalInfo = ({ intl, verificationService, }) => {
18317
18276
  updateInactiveMilitaryViewModel("birthDate", newValue);
18318
18277
  updateFieldValidationErrorsByFieldId("birthDate", newValue, verificationService);
18319
18278
  }, value: viewModel.birthDate }),
18279
+ verificationService.programTheme.strictMilitaryValidationEnabled && (React.createElement(ActiveDutyStartDateComponent, { isErrored: !!fieldValidationErrors.activeDutyStartDate, onChange: (newValue) => {
18280
+ updateInactiveMilitaryViewModel("activeDutyStartDate", newValue);
18281
+ updateFieldValidationErrorsByFieldId("activeDutyStartDate", newValue, verificationService);
18282
+ }, value: viewModel.activeDutyStartDate })),
18320
18283
  React.createElement(DischargeDateComponent, { isErrored: !!fieldValidationErrors.dischargeDate, onChange: (newValue) => {
18321
18284
  updateInactiveMilitaryViewModel("dischargeDate", newValue);
18322
18285
  updateFieldValidationErrorsByFieldId("dischargeDate", newValue, verificationService);