@saasquatch/mint-components 1.13.3-0 → 1.13.3

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 (356) hide show
  1. package/dist/cjs/{ShadowViewAddon-3ddee92b.js → ShadowViewAddon-14a02da4.js} +138 -104
  2. package/dist/cjs/{useReferralCodes-82e8797b.js → copy-text-view-a5524c20.js} +93 -0
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/mint-components.cjs.js +1 -1
  5. package/dist/cjs/{sqm-big-stat_39.cjs.entry.js → sqm-big-stat_41.cjs.entry.js} +221 -4
  6. package/dist/cjs/sqm-pagination_3.cjs.entry.js +5 -6
  7. package/dist/cjs/sqm-portal-email-verification.cjs.entry.js +1 -1
  8. package/dist/cjs/sqm-portal-forgot-password.cjs.entry.js +1 -1
  9. package/dist/cjs/sqm-portal-google-registration-form.cjs.entry.js +1 -1
  10. package/dist/cjs/{sqm-portal-registration-form-view-ebf355a6.js → sqm-portal-registration-form-view-637a4bf4.js} +1 -0
  11. package/dist/cjs/sqm-portal-registration-form.cjs.entry.js +2 -1
  12. package/dist/cjs/sqm-portal-reset-password.cjs.entry.js +1 -1
  13. package/dist/cjs/sqm-portal-verify-email.cjs.entry.js +1 -1
  14. package/dist/cjs/sqm-stencilbook.cjs.entry.js +469 -382
  15. package/dist/collection/collection-manifest.json +2 -1
  16. package/dist/collection/components/sqm-checkbox-field/CheckboxField.stories.js +1 -1
  17. package/dist/collection/components/sqm-checkbox-field/sqm-checkbox-field-view.js +6 -15
  18. package/dist/collection/components/sqm-checkbox-field/sqm-checkbox-field.js +5 -5
  19. package/dist/collection/components/sqm-marketing-emails-checkbox/MarketingEmailsCheckbox.stories.js +11 -0
  20. package/dist/collection/components/sqm-marketing-emails-checkbox/sqm-marketing-emails-checkbox.js +129 -0
  21. package/dist/collection/components/sqm-portal-change-marketing/ChangeMarketing.stories.js +54 -0
  22. package/dist/collection/components/sqm-portal-change-marketing/sqm-portal-change-marketing-view.js +47 -0
  23. package/dist/collection/components/sqm-portal-change-marketing/sqm-portal-change-marketing.js +217 -0
  24. package/dist/collection/components/sqm-portal-change-marketing/usePortalChangeMarketing.js +115 -0
  25. package/dist/collection/components/sqm-portal-email-verification/sqm-portal-email-verification.js +3 -3
  26. package/dist/collection/components/sqm-portal-forgot-password/sqm-portal-forgot-password.js +3 -3
  27. package/dist/collection/components/sqm-portal-google-registration-form/sqm-portal-google-registration-form.js +2 -2
  28. package/dist/collection/components/sqm-portal-login/sqm-portal-login.js +3 -3
  29. package/dist/collection/components/sqm-portal-registration-form/PortalRegistrationForm.stories.js +4 -0
  30. package/dist/collection/components/sqm-portal-registration-form/sqm-portal-registration-form-view.js +1 -0
  31. package/dist/collection/components/sqm-portal-registration-form/sqm-portal-registration-form.js +3 -2
  32. package/dist/collection/components/sqm-portal-reset-password/sqm-portal-reset-password.js +3 -3
  33. package/dist/collection/components/sqm-portal-verify-email/sqm-portal-verify-email.js +3 -3
  34. package/dist/collection/components/sqm-stencilbook/sqm-stencilbook.js +6 -0
  35. package/dist/esm/{ShadowViewAddon-d3c11480.js → ShadowViewAddon-23a6afab.js} +140 -107
  36. package/dist/esm/{useReferralCodes-1fdb0d92.js → copy-text-view-459a2e35.js} +95 -3
  37. package/dist/esm/{global-19d115b9.js → global-be1f9992.js} +2 -2
  38. package/dist/esm/{index.module-8553586f.js → index.module-89a79f66.js} +1 -1
  39. package/dist/esm/loader.js +4 -4
  40. package/dist/esm/{luxon-94dbc741.js → luxon-8d51c92b.js} +1 -1
  41. package/dist/esm/mint-components.js +4 -4
  42. package/dist/esm/{mockRewardData-cc9b3ada.js → mockRewardData-8bd1b356.js} +1 -1
  43. package/dist/esm/{re-render-bc2b60fe.js → re-render-cc945f38.js} +2 -2
  44. package/dist/esm/sqm-asset-card.entry.js +2 -2
  45. package/dist/esm/sqm-banking-info-form_17.entry.js +10 -10
  46. package/dist/esm/{sqm-big-stat_39.entry.js → sqm-big-stat_41.entry.js} +230 -15
  47. package/dist/esm/sqm-close-button.entry.js +2 -2
  48. package/dist/esm/sqm-context-router.entry.js +2 -2
  49. package/dist/esm/sqm-email-verification.entry.js +4 -4
  50. package/dist/esm/sqm-empty_4.entry.js +3 -3
  51. package/dist/esm/sqm-form-message.entry.js +1 -1
  52. package/dist/esm/sqm-google-sign-in.entry.js +2 -2
  53. package/dist/esm/sqm-graphql-client-provider.entry.js +2 -2
  54. package/dist/esm/sqm-header-logo.entry.js +1 -1
  55. package/dist/esm/sqm-instant-access-registration.entry.js +4 -4
  56. package/dist/esm/{sqm-invoice-table-view-eb07d994.js → sqm-invoice-table-view-af69cd33.js} +1 -1
  57. package/dist/esm/sqm-leaderboard-rank.entry.js +3 -3
  58. package/dist/esm/sqm-logout-current-user.entry.js +2 -2
  59. package/dist/esm/{sqm-navigation-sidebar-item-view-70b65660.js → sqm-navigation-sidebar-item-view-8f1c72bc.js} +1 -1
  60. package/dist/esm/sqm-navigation-sidebar-item.entry.js +3 -3
  61. package/dist/esm/sqm-navigation-sidebar.entry.js +2 -2
  62. package/dist/esm/sqm-pagination_3.entry.js +4 -5
  63. package/dist/esm/sqm-password-field.entry.js +3 -3
  64. package/dist/esm/sqm-popup-container.entry.js +2 -2
  65. package/dist/esm/{sqm-portal-email-verification-view-84867a42.js → sqm-portal-email-verification-view-35b4353b.js} +1 -1
  66. package/dist/esm/sqm-portal-email-verification.entry.js +5 -5
  67. package/dist/esm/sqm-portal-forgot-password.entry.js +3 -3
  68. package/dist/esm/sqm-portal-google-login.entry.js +3 -3
  69. package/dist/esm/sqm-portal-google-registration-form.entry.js +5 -5
  70. package/dist/esm/sqm-portal-logout.entry.js +2 -2
  71. package/dist/esm/{sqm-portal-profile-view-32088a59.js → sqm-portal-profile-view-93003974.js} +1 -1
  72. package/dist/esm/sqm-portal-profile.entry.js +5 -5
  73. package/dist/esm/sqm-portal-protected-route.entry.js +2 -2
  74. package/dist/esm/{sqm-portal-registration-form-view-32c4b488.js → sqm-portal-registration-form-view-3c1f6000.js} +1 -0
  75. package/dist/esm/sqm-portal-registration-form.entry.js +6 -5
  76. package/dist/esm/sqm-portal-reset-password.entry.js +3 -3
  77. package/dist/esm/sqm-portal-verify-email.entry.js +3 -3
  78. package/dist/esm/sqm-referral-table_11.entry.js +8 -8
  79. package/dist/esm/sqm-referred-registration.entry.js +4 -4
  80. package/dist/esm/sqm-rewards-table-customer-note-cell.entry.js +1 -1
  81. package/dist/esm/sqm-rewards-table-customer-note-column.entry.js +3 -3
  82. package/dist/esm/sqm-rewards-table_9.entry.js +8 -8
  83. package/dist/esm/sqm-scroll.entry.js +1 -1
  84. package/dist/esm/sqm-stencilbook.entry.js +479 -392
  85. package/dist/esm/sqm-tab.entry.js +3 -3
  86. package/dist/esm/sqm-tabs.entry.js +4 -4
  87. package/dist/esm/sqm-text-span.entry.js +1 -1
  88. package/dist/esm/sqm-widget-verification-controller.entry.js +2 -2
  89. package/dist/esm/sqm-widget-verification.entry.js +2 -2
  90. package/dist/esm/{stencil-hooks.module-c643ef4a.js → stencil-hooks.module-4bc38af4.js} +1 -1
  91. package/dist/esm/{useChildElements-cbd0fedf.js → useChildElements-7945ae56.js} +2 -2
  92. package/dist/esm/{useInstantAccessRegistration-06e94ce3.js → useInstantAccessRegistration-dc4ad9f2.js} +3 -3
  93. package/dist/esm/{usePayoutStatus-6701d491.js → usePayoutStatus-58aa56b4.js} +2 -2
  94. package/dist/esm/{usePortalLogin-e6f1ebd1.js → usePortalLogin-ef647a50.js} +2 -2
  95. package/dist/esm/{usePortalRegistrationForm-6f22d7d7.js → usePortalRegistrationForm-4b35a357.js} +3 -3
  96. package/dist/esm/{useReferralTable-055a8849.js → useReferralTable-b3876ed6.js} +4 -4
  97. package/dist/esm/{useRegistrationFormState-7229b088.js → useRegistrationFormState-d6f33135.js} +2 -2
  98. package/dist/esm/{useVerificationEmail-a142db0c.js → useVerificationEmail-edc318cb.js} +2 -2
  99. package/dist/esm/{utilities-559f8273.js → utilities-5b0ca040.js} +2 -2
  100. package/dist/esm-es5/ShadowViewAddon-23a6afab.js +1 -0
  101. package/dist/esm-es5/copy-text-view-459a2e35.js +1 -0
  102. package/dist/esm-es5/{global-19d115b9.js → global-be1f9992.js} +1 -1
  103. package/dist/esm-es5/{index.module-8553586f.js → index.module-89a79f66.js} +1 -1
  104. package/dist/esm-es5/loader.js +1 -1
  105. package/dist/esm-es5/{luxon-94dbc741.js → luxon-8d51c92b.js} +1 -1
  106. package/dist/esm-es5/mint-components.js +1 -1
  107. package/dist/esm-es5/{mockRewardData-cc9b3ada.js → mockRewardData-8bd1b356.js} +1 -1
  108. package/dist/esm-es5/{re-render-bc2b60fe.js → re-render-cc945f38.js} +1 -1
  109. package/dist/esm-es5/sqm-asset-card.entry.js +1 -1
  110. package/dist/esm-es5/sqm-banking-info-form_17.entry.js +1 -1
  111. package/dist/esm-es5/sqm-big-stat_41.entry.js +1 -0
  112. package/dist/esm-es5/sqm-close-button.entry.js +1 -1
  113. package/dist/esm-es5/sqm-context-router.entry.js +1 -1
  114. package/dist/esm-es5/sqm-email-verification.entry.js +1 -1
  115. package/dist/esm-es5/sqm-empty_4.entry.js +1 -1
  116. package/dist/esm-es5/sqm-form-message.entry.js +1 -1
  117. package/dist/esm-es5/sqm-google-sign-in.entry.js +1 -1
  118. package/dist/esm-es5/sqm-graphql-client-provider.entry.js +1 -1
  119. package/dist/esm-es5/sqm-header-logo.entry.js +1 -1
  120. package/dist/esm-es5/sqm-instant-access-registration.entry.js +1 -1
  121. package/dist/esm-es5/{sqm-invoice-table-view-eb07d994.js → sqm-invoice-table-view-af69cd33.js} +1 -1
  122. package/dist/esm-es5/sqm-leaderboard-rank.entry.js +1 -1
  123. package/dist/esm-es5/sqm-logout-current-user.entry.js +1 -1
  124. package/dist/esm-es5/{sqm-navigation-sidebar-item-view-70b65660.js → sqm-navigation-sidebar-item-view-8f1c72bc.js} +1 -1
  125. package/dist/esm-es5/sqm-navigation-sidebar-item.entry.js +1 -1
  126. package/dist/esm-es5/sqm-navigation-sidebar.entry.js +1 -1
  127. package/dist/esm-es5/sqm-pagination_3.entry.js +1 -1
  128. package/dist/esm-es5/sqm-password-field.entry.js +1 -1
  129. package/dist/esm-es5/sqm-popup-container.entry.js +1 -1
  130. package/dist/esm-es5/{sqm-portal-email-verification-view-84867a42.js → sqm-portal-email-verification-view-35b4353b.js} +1 -1
  131. package/dist/esm-es5/sqm-portal-email-verification.entry.js +1 -1
  132. package/dist/esm-es5/sqm-portal-forgot-password.entry.js +1 -1
  133. package/dist/esm-es5/sqm-portal-google-login.entry.js +1 -1
  134. package/dist/esm-es5/sqm-portal-google-registration-form.entry.js +1 -1
  135. package/dist/esm-es5/sqm-portal-logout.entry.js +1 -1
  136. package/dist/esm-es5/{sqm-portal-profile-view-32088a59.js → sqm-portal-profile-view-93003974.js} +1 -1
  137. package/dist/esm-es5/sqm-portal-profile.entry.js +1 -1
  138. package/dist/esm-es5/sqm-portal-protected-route.entry.js +1 -1
  139. package/dist/esm-es5/{sqm-portal-registration-form-view-32c4b488.js → sqm-portal-registration-form-view-3c1f6000.js} +1 -1
  140. package/dist/esm-es5/sqm-portal-registration-form.entry.js +1 -1
  141. package/dist/esm-es5/sqm-portal-reset-password.entry.js +1 -1
  142. package/dist/esm-es5/sqm-portal-verify-email.entry.js +1 -1
  143. package/dist/esm-es5/sqm-referral-table_11.entry.js +1 -1
  144. package/dist/esm-es5/sqm-referred-registration.entry.js +1 -1
  145. package/dist/esm-es5/sqm-rewards-table-customer-note-cell.entry.js +1 -1
  146. package/dist/esm-es5/sqm-rewards-table-customer-note-column.entry.js +1 -1
  147. package/dist/esm-es5/sqm-rewards-table_9.entry.js +1 -1
  148. package/dist/esm-es5/sqm-scroll.entry.js +1 -1
  149. package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
  150. package/dist/esm-es5/sqm-tab.entry.js +1 -1
  151. package/dist/esm-es5/sqm-tabs.entry.js +1 -1
  152. package/dist/esm-es5/sqm-text-span.entry.js +1 -1
  153. package/dist/esm-es5/sqm-widget-verification-controller.entry.js +1 -1
  154. package/dist/esm-es5/sqm-widget-verification.entry.js +1 -1
  155. package/dist/esm-es5/{stencil-hooks.module-c643ef4a.js → stencil-hooks.module-4bc38af4.js} +1 -1
  156. package/dist/esm-es5/useChildElements-7945ae56.js +1 -0
  157. package/dist/esm-es5/{useInstantAccessRegistration-06e94ce3.js → useInstantAccessRegistration-dc4ad9f2.js} +1 -1
  158. package/dist/esm-es5/{usePayoutStatus-6701d491.js → usePayoutStatus-58aa56b4.js} +1 -1
  159. package/dist/esm-es5/{usePortalLogin-e6f1ebd1.js → usePortalLogin-ef647a50.js} +1 -1
  160. package/dist/esm-es5/{usePortalRegistrationForm-6f22d7d7.js → usePortalRegistrationForm-4b35a357.js} +1 -1
  161. package/dist/esm-es5/{useReferralTable-055a8849.js → useReferralTable-b3876ed6.js} +1 -1
  162. package/dist/esm-es5/{useRegistrationFormState-7229b088.js → useRegistrationFormState-d6f33135.js} +1 -1
  163. package/dist/esm-es5/{useVerificationEmail-a142db0c.js → useVerificationEmail-edc318cb.js} +1 -1
  164. package/dist/esm-es5/{utilities-559f8273.js → utilities-5b0ca040.js} +1 -1
  165. package/dist/mint-components/mint-components.esm.js +1 -1
  166. package/dist/mint-components/mint-components.js +1 -1
  167. package/dist/mint-components/{p-afbe1fab.entry.js → p-00ed4c2e.entry.js} +1 -1
  168. package/dist/mint-components/{p-8052a165.entry.js → p-01010af0.entry.js} +34 -17
  169. package/dist/mint-components/{p-4d4c3fda.entry.js → p-04a6e457.entry.js} +1 -1
  170. package/dist/mint-components/{p-46361336.js → p-05f29f64.js} +1 -1
  171. package/dist/mint-components/{p-b509682c.system.js → p-0d182dc1.system.js} +1 -1
  172. package/dist/mint-components/{p-d270c7a9.entry.js → p-0d2d0b6d.entry.js} +1 -1
  173. package/dist/mint-components/{p-ff45a502.entry.js → p-10d17989.entry.js} +1 -1
  174. package/dist/mint-components/{p-05910568.system.js → p-13ed8586.system.js} +1 -1
  175. package/dist/mint-components/p-141bf5c1.system.entry.js +1 -0
  176. package/dist/mint-components/p-1513309d.entry.js +1 -0
  177. package/dist/mint-components/{p-4a332d4a.system.entry.js → p-164a9103.system.entry.js} +1 -1
  178. package/dist/mint-components/{p-7edd349f.system.entry.js → p-18425f38.system.entry.js} +1 -1
  179. package/dist/mint-components/{p-dd5380e7.system.entry.js → p-19bc3406.system.entry.js} +1 -1
  180. package/dist/mint-components/p-19ccb4ce.js +1 -0
  181. package/dist/mint-components/{p-b8c8a7a2.entry.js → p-1a6b7d2a.entry.js} +1 -1
  182. package/dist/mint-components/{p-019a9a23.system.entry.js → p-1b3ab15a.system.entry.js} +1 -1
  183. package/dist/mint-components/p-1fa9ed0d.system.entry.js +1 -0
  184. package/dist/mint-components/{p-b8c2452e.system.entry.js → p-21620f81.system.entry.js} +1 -1
  185. package/dist/mint-components/p-275b4767.entry.js +1 -0
  186. package/dist/mint-components/{p-f4b9d88e.entry.js → p-284e4ed5.entry.js} +1 -1
  187. package/dist/mint-components/{p-3107ff75.entry.js → p-2ae0e06a.entry.js} +1 -1
  188. package/dist/mint-components/{p-fea93ffb.entry.js → p-2bbff88f.entry.js} +1 -1
  189. package/dist/mint-components/{p-e0b16d7d.system.js → p-2d52e2d7.system.js} +1 -1
  190. package/dist/mint-components/{p-6b2b1f57.entry.js → p-2da21ba4.entry.js} +1 -1
  191. package/dist/mint-components/{p-35a1395e.entry.js → p-2f101bae.entry.js} +1 -1
  192. package/dist/mint-components/p-301ddcaa.system.entry.js +1 -0
  193. package/dist/mint-components/{p-206d5653.entry.js → p-33c96e14.entry.js} +1 -1
  194. package/dist/mint-components/p-33ed6f1c.system.entry.js +1 -0
  195. package/dist/mint-components/{p-793d3aa3.system.entry.js → p-36ffebd8.system.entry.js} +1 -1
  196. package/dist/mint-components/p-37996351.system.js +1 -0
  197. package/dist/mint-components/{p-a8e635c8.entry.js → p-380bfde1.entry.js} +1 -1
  198. package/dist/mint-components/p-38b5f028.system.entry.js +1 -0
  199. package/dist/mint-components/p-38fc919b.entry.js +1 -0
  200. package/dist/mint-components/{p-5b65ad93.js → p-3db34d68.js} +1 -1
  201. package/dist/mint-components/{p-113a3397.system.entry.js → p-3f6e0197.system.entry.js} +1 -1
  202. package/dist/mint-components/{p-24168eeb.system.entry.js → p-420554af.system.entry.js} +1 -1
  203. package/dist/mint-components/{p-76734619.system.entry.js → p-42187319.system.entry.js} +1 -1
  204. package/dist/mint-components/{p-ebdf4e46.entry.js → p-4428294b.entry.js} +1 -1
  205. package/dist/mint-components/{p-568239eb.entry.js → p-44891949.entry.js} +1 -1
  206. package/dist/mint-components/{p-78a1029d.js → p-480e08e9.js} +1 -1
  207. package/dist/mint-components/{p-c9246591.system.js → p-48135f99.system.js} +1 -1
  208. package/dist/mint-components/{p-32e46793.js → p-4e451f75.js} +1 -1
  209. package/dist/mint-components/{p-3197b1e1.js → p-4e526a94.js} +1 -1
  210. package/dist/mint-components/{p-bebdae4a.system.entry.js → p-50c902ca.system.entry.js} +1 -1
  211. package/dist/mint-components/{p-84ebf29b.system.js → p-527216de.system.js} +1 -1
  212. package/dist/mint-components/{p-073cc02e.system.js → p-5488fdd9.system.js} +1 -1
  213. package/dist/mint-components/{p-00af0a40.system.js → p-59274a91.system.js} +1 -1
  214. package/dist/mint-components/{p-8b5a132d.js → p-5bedb58c.js} +1 -1
  215. package/dist/mint-components/{p-b885bf6a.system.entry.js → p-5c28406d.system.entry.js} +1 -1
  216. package/dist/mint-components/{p-c123040c.system.entry.js → p-5d7e308c.system.entry.js} +1 -1
  217. package/dist/mint-components/{p-2147f338.system.js → p-635d5ef2.system.js} +1 -1
  218. package/dist/mint-components/{p-f831af31.js → p-63a75798.js} +1 -1
  219. package/dist/mint-components/{p-2c521ce3.entry.js → p-6427e963.entry.js} +1 -1
  220. package/dist/mint-components/{p-a1ace139.js → p-65069b66.js} +1 -1
  221. package/dist/mint-components/{p-a1d63380.entry.js → p-653f963f.entry.js} +2 -2
  222. package/dist/mint-components/{p-b017802f.entry.js → p-693942df.entry.js} +2 -2
  223. package/dist/mint-components/{p-1d761b72.system.js → p-6b7a595f.system.js} +1 -1
  224. package/dist/mint-components/{p-9b01c219.system.js → p-6cd4f2b1.system.js} +1 -1
  225. package/dist/mint-components/{p-4831eb49.js → p-6d2f5a1d.js} +2 -2
  226. package/dist/mint-components/{p-2bcc52ff.system.js → p-6d9e52c7.system.js} +1 -1
  227. package/dist/mint-components/p-6eaf9c57.entry.js +1 -0
  228. package/dist/mint-components/p-717cc8ac.system.js +1 -0
  229. package/dist/mint-components/p-71bc04d2.system.entry.js +1 -0
  230. package/dist/mint-components/{p-f4125c66.js → p-726a9924.js} +1 -1
  231. package/dist/mint-components/{p-fb1f75dc.entry.js → p-775f3ded.entry.js} +1 -1
  232. package/dist/mint-components/{p-84a0679b.entry.js → p-7ab21e4d.entry.js} +1 -1
  233. package/dist/mint-components/{p-8d60f98e.system.js → p-7c2b9fe4.system.js} +1 -1
  234. package/dist/mint-components/{p-bfe3fc89.system.entry.js → p-7dabdca6.system.entry.js} +1 -1
  235. package/dist/mint-components/p-7e7cbccf.system.js +1 -0
  236. package/dist/mint-components/p-7f2d4212.js +52 -0
  237. package/dist/mint-components/{p-9966e72f.entry.js → p-7f80a9d7.entry.js} +1 -1
  238. package/dist/mint-components/{p-1881b80d.system.js → p-8175e85f.system.js} +1 -1
  239. package/dist/mint-components/{p-f78ecf4d.system.entry.js → p-8362cb4c.system.entry.js} +1 -1
  240. package/dist/mint-components/{p-feaa7733.system.js → p-8413ade9.system.js} +1 -1
  241. package/dist/mint-components/{p-f59a57a9.system.entry.js → p-85671c3d.system.entry.js} +1 -1
  242. package/dist/mint-components/p-8abfeff8.entry.js +1 -0
  243. package/dist/mint-components/p-8c23d1b8.js +1 -0
  244. package/dist/mint-components/{p-0cb94e55.system.entry.js → p-8d9d04b7.system.entry.js} +1 -1
  245. package/dist/mint-components/{p-7875a307.system.entry.js → p-90fc6774.system.entry.js} +1 -1
  246. package/dist/mint-components/{p-793d2130.js → p-91ab3da1.js} +1 -1
  247. package/dist/mint-components/{p-4a9f4710.system.js → p-9320582e.system.js} +1 -1
  248. package/dist/mint-components/{p-1f6203f6.system.entry.js → p-9386ad84.system.entry.js} +1 -1
  249. package/dist/mint-components/{p-134884eb.js → p-94a876b9.js} +1 -1
  250. package/dist/mint-components/{p-8e7dbf3d.js → p-962f3200.js} +1 -1
  251. package/dist/mint-components/p-98698131.js +1 -0
  252. package/dist/mint-components/{p-de97f736.system.entry.js → p-9b6a0152.system.entry.js} +1 -1
  253. package/dist/mint-components/{p-153fe35e.system.entry.js → p-9bfd9bed.system.entry.js} +1 -1
  254. package/dist/mint-components/{p-a4bed343.system.entry.js → p-9cf80e85.system.entry.js} +1 -1
  255. package/dist/mint-components/{p-4d62fce5.entry.js → p-a2fde301.entry.js} +1 -1
  256. package/dist/mint-components/{p-9bbe1a0a.system.js → p-a71b9154.system.js} +1 -1
  257. package/dist/mint-components/p-b207beeb.entry.js +1 -0
  258. package/dist/mint-components/{p-889ac146.system.entry.js → p-b287833c.system.entry.js} +1 -1
  259. package/dist/mint-components/{p-adbde540.entry.js → p-b51e79b3.entry.js} +3 -3
  260. package/dist/mint-components/{p-3af19e46.system.entry.js → p-b7d1469d.system.entry.js} +1 -1
  261. package/dist/mint-components/{p-a0f61b8d.system.entry.js → p-b82e1935.system.entry.js} +1 -1
  262. package/dist/mint-components/{p-9b37f5cb.system.entry.js → p-b93fd99c.system.entry.js} +1 -1
  263. package/dist/mint-components/{p-283588d9.js → p-bbcd824a.js} +1 -1
  264. package/dist/mint-components/{p-4edcc7dd.system.js → p-bdb7d451.system.js} +1 -1
  265. package/dist/mint-components/{p-f33a2774.system.entry.js → p-c060f770.system.entry.js} +1 -1
  266. package/dist/mint-components/{p-bc12e9a4.js → p-c0f19490.js} +2 -2
  267. package/dist/mint-components/{p-949c8454.system.entry.js → p-c2fdd608.system.entry.js} +1 -1
  268. package/dist/mint-components/{p-86685076.system.entry.js → p-c36506f6.system.entry.js} +1 -1
  269. package/dist/mint-components/{p-2858d87a.entry.js → p-cb7bdbe4.entry.js} +1 -1
  270. package/dist/mint-components/{p-03b8a4b6.entry.js → p-cbbfac66.entry.js} +1 -1
  271. package/dist/mint-components/{p-e868baa2.system.js → p-cc7af682.system.js} +1 -1
  272. package/dist/mint-components/{p-033f460e.system.js → p-cd569259.system.js} +1 -1
  273. package/dist/mint-components/{p-f561fbbe.js → p-cd651f81.js} +1 -1
  274. package/dist/mint-components/{p-65ab288b.entry.js → p-d07f3090.entry.js} +1 -1
  275. package/dist/mint-components/p-d3d74266.js +394 -0
  276. package/dist/mint-components/{p-e75be0ce.js → p-d6831af5.js} +2 -2
  277. package/dist/mint-components/{p-c876e133.entry.js → p-da7708a7.entry.js} +1 -1
  278. package/dist/mint-components/{p-1e5685b1.entry.js → p-dcc81e90.entry.js} +1 -1
  279. package/dist/mint-components/{p-45df37c4.system.entry.js → p-de8e9981.system.entry.js} +1 -1
  280. package/dist/mint-components/{p-e1e8ce01.system.entry.js → p-e5a5ae7f.system.entry.js} +1 -1
  281. package/dist/mint-components/{p-bb0f585c.system.js → p-e5d0375e.system.js} +1 -1
  282. package/dist/mint-components/{p-5bd1129c.entry.js → p-e6f50ffd.entry.js} +1 -1
  283. package/dist/mint-components/{p-917daa81.entry.js → p-e8ffcc68.entry.js} +2 -2
  284. package/dist/mint-components/{p-6bc6b98a.system.entry.js → p-f0772618.system.entry.js} +1 -1
  285. package/dist/mint-components/{p-9ba03826.entry.js → p-f29eda2f.entry.js} +1 -1
  286. package/dist/mint-components/p-f2cc6a6f.entry.js +9 -0
  287. package/dist/mint-components/{p-1a9efc82.system.entry.js → p-f2d8d3d3.system.entry.js} +1 -1
  288. package/dist/mint-components/{p-945fc728.system.entry.js → p-f4a72903.system.entry.js} +1 -1
  289. package/dist/mint-components/{p-4d744c56.system.entry.js → p-f4a8ee29.system.entry.js} +1 -1
  290. package/dist/mint-components/{p-46411968.system.entry.js → p-fa37513e.system.entry.js} +1 -1
  291. package/dist/mint-components/{p-6c962bcd.entry.js → p-faba3198.entry.js} +1 -1
  292. package/dist/mint-components/{p-acb16e2d.entry.js → p-fe2e2f4a.entry.js} +1 -1
  293. package/dist/mint-components/p-ff8b8067.entry.js +33 -0
  294. package/dist/types/components/sqm-checkbox-field/sqm-checkbox-field-view.d.ts +1 -1
  295. package/dist/types/components/sqm-checkbox-field/sqm-checkbox-field.d.ts +4 -4
  296. package/dist/types/components/sqm-marketing-emails-checkbox/MarketingEmailsCheckbox.stories.d.ts +8 -0
  297. package/dist/types/components/sqm-marketing-emails-checkbox/sqm-marketing-emails-checkbox.d.ts +27 -0
  298. package/dist/types/components/sqm-portal-change-marketing/ChangeMarketing.stories.d.ts +8 -0
  299. package/dist/types/components/sqm-portal-change-marketing/sqm-portal-change-marketing-view.d.ts +28 -0
  300. package/dist/types/components/sqm-portal-change-marketing/sqm-portal-change-marketing.d.ts +39 -0
  301. package/dist/types/components/sqm-portal-change-marketing/usePortalChangeMarketing.d.ts +3 -0
  302. package/dist/types/components/sqm-portal-email-verification/sqm-portal-email-verification.d.ts +1 -1
  303. package/dist/types/components/sqm-portal-forgot-password/sqm-portal-forgot-password.d.ts +1 -1
  304. package/dist/types/components/sqm-portal-login/sqm-portal-login.d.ts +1 -1
  305. package/dist/types/components/sqm-portal-registration-form/PortalRegistrationForm.stories.d.ts +1 -0
  306. package/dist/types/components/sqm-portal-registration-form/sqm-portal-registration-form-view.d.ts +1 -0
  307. package/dist/types/components/sqm-portal-registration-form/sqm-portal-registration-form.d.ts +1 -1
  308. package/dist/types/components/sqm-portal-reset-password/sqm-portal-reset-password.d.ts +1 -1
  309. package/dist/types/components/sqm-portal-verify-email/sqm-portal-verify-email.d.ts +1 -1
  310. package/dist/types/components.d.ts +130 -26
  311. package/docs/docs.docx +0 -0
  312. package/docs/raisins.json +1 -1
  313. package/grapesjs/grapesjs.js +1 -1
  314. package/package.json +1 -1
  315. package/dist/cjs/copy-text-view-c85acaaa.js +0 -96
  316. package/dist/cjs/sqm-qr-code.cjs.entry.js +0 -66
  317. package/dist/collection/components/sqm-qr-code/sqm-qr-code.js +0 -67
  318. package/dist/esm/copy-text-view-782137ba.js +0 -94
  319. package/dist/esm/sqm-qr-code.entry.js +0 -62
  320. package/dist/esm-es5/ShadowViewAddon-d3c11480.js +0 -1
  321. package/dist/esm-es5/copy-text-view-782137ba.js +0 -1
  322. package/dist/esm-es5/sqm-big-stat_39.entry.js +0 -1
  323. package/dist/esm-es5/sqm-qr-code.entry.js +0 -1
  324. package/dist/esm-es5/useChildElements-cbd0fedf.js +0 -1
  325. package/dist/esm-es5/useReferralCodes-1fdb0d92.js +0 -1
  326. package/dist/mint-components/p-04eda48e.entry.js +0 -1
  327. package/dist/mint-components/p-0b00b770.system.entry.js +0 -1
  328. package/dist/mint-components/p-13ed46c5.entry.js +0 -9
  329. package/dist/mint-components/p-2175e4c3.js +0 -1
  330. package/dist/mint-components/p-27f35214.system.entry.js +0 -1
  331. package/dist/mint-components/p-2c16f513.system.js +0 -1
  332. package/dist/mint-components/p-2cae23f1.system.js +0 -1
  333. package/dist/mint-components/p-30efd193.js +0 -52
  334. package/dist/mint-components/p-31015791.js +0 -1
  335. package/dist/mint-components/p-3b0d6e3d.system.js +0 -1
  336. package/dist/mint-components/p-3b90e01b.system.js +0 -1
  337. package/dist/mint-components/p-5800426e.system.entry.js +0 -1
  338. package/dist/mint-components/p-5fc6c6eb.js +0 -394
  339. package/dist/mint-components/p-621092ee.js +0 -1
  340. package/dist/mint-components/p-786d3e9a.entry.js +0 -1
  341. package/dist/mint-components/p-95e8f60d.entry.js +0 -1
  342. package/dist/mint-components/p-9b0c175c.entry.js +0 -1
  343. package/dist/mint-components/p-a18b8466.entry.js +0 -33
  344. package/dist/mint-components/p-a6d84577.system.entry.js +0 -1
  345. package/dist/mint-components/p-b7991001.entry.js +0 -1
  346. package/dist/mint-components/p-bdbf5f74.entry.js +0 -13
  347. package/dist/mint-components/p-d5cceea8.entry.js +0 -1
  348. package/dist/mint-components/p-d9b93305.system.entry.js +0 -1
  349. package/dist/mint-components/p-e847a6f5.system.entry.js +0 -1
  350. package/dist/mint-components/p-e9a14ca4.system.entry.js +0 -1
  351. package/dist/mint-components/p-fe268f9d.js +0 -1
  352. package/dist/types/components/sqm-qr-code/sqm-qr-code.d.ts +0 -5
  353. package/dist/types/global/android.d.ts +0 -7
  354. package/dist/types/global/demo.d.ts +0 -2
  355. package/dist/types/stories/features.d.ts +0 -4
  356. package/dist/types/stories/templates.d.ts +0 -4
@@ -9,9 +9,8 @@ const index_module = require('./index.module-ee84433d.js');
9
9
  require('./cjs-1066ec21.js');
10
10
  require('./utils-6847bc06.js');
11
11
  const JSS = require('./JSS-8503a151.js');
12
- require('./useReferralCodes-82e8797b.js');
12
+ const copyTextView = require('./copy-text-view-a5524c20.js');
13
13
  require('./mixins-f7e0377a.js');
14
- const copyTextView = require('./copy-text-view-c85acaaa.js');
15
14
  const GenericTableView = require('./GenericTableView-a9f4ba75.js');
16
15
  require('./useChildElements-1b35d945.js');
17
16
  const luxon = require('./luxon-2926d85f.js');
@@ -28,12 +27,12 @@ const sqmPortalEmailVerificationView = require('./sqm-portal-email-verification-
28
27
  const sqmPortalForgotPasswordView = require('./sqm-portal-forgot-password-view-78f19ef9.js');
29
28
  const sqmPortalLoginView = require('./sqm-portal-login-view-761a4d8e.js');
30
29
  const sqmBaseRegistrationFormView = require('./sqm-base-registration-form-view-8a2c8763.js');
31
- const sqmPortalRegistrationFormView = require('./sqm-portal-registration-form-view-ebf355a6.js');
30
+ const sqmPortalRegistrationFormView = require('./sqm-portal-registration-form-view-637a4bf4.js');
32
31
  const sqmPortalProfileView = require('./sqm-portal-profile-view-33164798.js');
33
32
  require('./utilities-78f5e169.js');
34
33
  const sqmPortalResetPasswordView = require('./sqm-portal-reset-password-view-fe602822.js');
35
34
  const sqmPortalVerifyEmailView = require('./sqm-portal-verify-email-view-7b678f34.js');
36
- const ShadowViewAddon = require('./ShadowViewAddon-3ddee92b.js');
35
+ const ShadowViewAddon = require('./ShadowViewAddon-14a02da4.js');
37
36
  const sqmPortalContainerView = require('./sqm-portal-container-view-4f15143a.js');
38
37
  const sqmInvoiceTableView = require('./sqm-invoice-table-view-baded4af.js');
39
38
 
@@ -7476,6 +7475,126 @@ const PortalRegister = /*#__PURE__*/Object.freeze({
7476
7475
  TermsAndConditions: TermsAndConditions
7477
7476
  });
7478
7477
 
7478
+ const PortalRegistrationForm_stories = {
7479
+ title: "Components/Microsite Portal Register",
7480
+ };
7481
+ const defaultProps$4 = {
7482
+ states: {
7483
+ error: "",
7484
+ loading: false,
7485
+ confirmPassword: true,
7486
+ hideInputs: false,
7487
+ loginPath: "/login",
7488
+ },
7489
+ callbacks: {
7490
+ submit: () => console.log("Submit!"),
7491
+ inputFunction: () => { },
7492
+ },
7493
+ refs: {
7494
+ formRef: {},
7495
+ },
7496
+ content: { pageLabel: "Register", confirmPasswordLabel: "Confirm Password" },
7497
+ };
7498
+ const errorProps$2 = {
7499
+ states: {
7500
+ error: "Something went wrong. Please try again.",
7501
+ loading: false,
7502
+ confirmPassword: true,
7503
+ hideInputs: false,
7504
+ loginPath: "/login",
7505
+ },
7506
+ callbacks: {
7507
+ submit: () => console.log("Submit!"),
7508
+ inputFunction: () => { },
7509
+ },
7510
+ refs: {
7511
+ formRef: {},
7512
+ },
7513
+ content: {
7514
+ pageLabel: "Register",
7515
+ confirmPasswordLabel: "Confirm Password",
7516
+ },
7517
+ };
7518
+ const loadingProps$2 = {
7519
+ states: {
7520
+ error: "",
7521
+ loading: true,
7522
+ confirmPassword: true,
7523
+ hideInputs: false,
7524
+ loginPath: "/login",
7525
+ },
7526
+ callbacks: {
7527
+ submit: () => console.log("Submit!"),
7528
+ inputFunction: () => { },
7529
+ },
7530
+ refs: {
7531
+ formRef: {},
7532
+ },
7533
+ content: { pageLabel: "Register", confirmPasswordLabel: "Confirm Password" },
7534
+ };
7535
+ const slottedProps$1 = {
7536
+ states: {
7537
+ error: "",
7538
+ loading: false,
7539
+ confirmPassword: true,
7540
+ hideInputs: false,
7541
+ loginPath: "/login",
7542
+ },
7543
+ callbacks: {
7544
+ submit: () => console.log("Submit!"),
7545
+ inputFunction: () => { },
7546
+ },
7547
+ refs: {
7548
+ formRef: {},
7549
+ },
7550
+ content: {
7551
+ pageLabel: "Register",
7552
+ confirmPasswordLabel: "Confirm Password",
7553
+ formData: (index.h("div", null,
7554
+ index.h("sl-input", { style: { marginBottom: "var(--sl-spacing-x-large)" }, exportparts: "label: input-label, base: input-base", label: "Slotted Input", required: true }),
7555
+ index.h("sl-input", { exportparts: "label: input-label, base: input-base", label: "Slotted Input 2", required: true }))),
7556
+ },
7557
+ };
7558
+ const Default$5 = () => index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$4));
7559
+ const RegisterWithError$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, errorProps$2)));
7560
+ const RegisterLoading$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, loadingProps$2)));
7561
+ const FieldsHidden$1 = () => {
7562
+ return (index.h("sqm-portal-register", { demoData: {
7563
+ states: {
7564
+ error: "",
7565
+ loading: true,
7566
+ registrationFormState: {},
7567
+ confirmPassword: true,
7568
+ hideInputs: true,
7569
+ loginPath: "/login",
7570
+ },
7571
+ } }));
7572
+ };
7573
+ const SlottedInputs$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, slottedProps$1)));
7574
+ const RegisterWithMarketingEmailsCheckbox = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$4, { content: {
7575
+ ...defaultProps$4.content,
7576
+ emailOptIn: (index.h("sqm-checkbox-field", { checkboxLabel: "I would like to receive marketing and promotional emails for this referral program" })),
7577
+ } })));
7578
+ const TermsAndConditions$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$4, { content: {
7579
+ ...defaultProps$4.content,
7580
+ terms: (index.h("p", null,
7581
+ "By signing up you agree to the",
7582
+ " ",
7583
+ index.h("a", { href: "https://example.com", target: "_blank" }, "Terms and Conditions"))),
7584
+ } })));
7585
+
7586
+ const PortalRegistrationForm = /*#__PURE__*/Object.freeze({
7587
+ __proto__: null,
7588
+ 'default': PortalRegistrationForm_stories,
7589
+ Default: Default$5,
7590
+ RegisterWithError: RegisterWithError$1,
7591
+ RegisterLoading: RegisterLoading$1,
7592
+ FieldsHidden: FieldsHidden$1,
7593
+ SlottedInputs: SlottedInputs$1,
7594
+ RegisterWithMarketingEmailsCheckbox: RegisterWithMarketingEmailsCheckbox,
7595
+ TermsAndConditions: TermsAndConditions$1
7596
+ });
7597
+
7479
7598
  const scenario$6 = "@author:derek\n@owner:ian\nFeature: Forgot Password\n\n @motivating\n Scenario: Users can request to reset their password\n Given a user enters their email address\n And that email address is linked to a previously created account\n When they click \"Reset Password\"\n Then the button enters a loading state\n When the password reset email is sent\n Then a confirmation banner is shown stating a password reset email was sent\n\n @motivating\n Scenario: Users are notified if sending their password reset email fails\n Given a user enters their email address\n And that email address is linked to a previously created account\n When they click \"Reset Password\"\n Then the button enters a loading state\n When the password reset email fails to send\n Then the user does not receive a password reset email\n And an error banner is shown stating that they should try again\n\n @motivating\n @landmine\n Scenario: If the input email is not associated to an account a success banner is shown but an email is not be sent\n Given the user entered an email address that is not associated to an accoun\n When they click \"Reset Password\"\n Then the button enters a loading state\n But no email is sent\n And a success banner is shown stating a password reset email was sent if the given email was associated to an account\n\n @motivating\n Scenario: Users can resend password reset email\n Given a user had previously requested to reset their password\n When they enter their email address\n And that email address is linked to a previously created account\n And they click \"Reset Password\"\n Then the user receives a second password reset email\n And a success banner is shown stating that their email was sent\n\n @motivating\n Scenario Outline: The email link can be configured to redirect users to a specific base path but defaults to \"/resetPassword\"\n Given a user viewing the password reset component\n And the component <mayHave> \"redirect-path\" with <value>\n When they request a password reset email\n And they click the link in the email\n Then they are redirected to <redirectPath>\n Examples:\n | mayHave | value | redirectPath |\n | doesn't have | N/A | /resetPassword |\n | has | /resetMyPassword | /resetMyPassword |\n\n @minutia\n Scenario Outline: Navigation back to the login page can be customized but defaults to \"/login\"\n Given a user viewing the password reset component\n And the component <mayHave> \"login-path\" with <value>\n Then they see a \"Sign In\" text button\n When they click \"Sign In\"\n Then they are redirected to <redirectPath>\n Examples:\n | mayHave | value | redirectPath |\n | doesn't have | N/A | /login |\n | has | /signin | /signin |";
7480
7599
 
7481
7600
  const PortalForgotPassword_stories = {
@@ -7484,7 +7603,7 @@ const PortalForgotPassword_stories = {
7484
7603
  scenario: scenario$6,
7485
7604
  },
7486
7605
  };
7487
- const defaultProps$4 = {
7606
+ const defaultProps$5 = {
7488
7607
  states: {
7489
7608
  error: "",
7490
7609
  loading: false,
@@ -7499,7 +7618,7 @@ const defaultProps$4 = {
7499
7618
  messageSlot: "Enter your email below to receive a password reset link.",
7500
7619
  },
7501
7620
  };
7502
- const errorProps$2 = {
7621
+ const errorProps$3 = {
7503
7622
  states: {
7504
7623
  error: "Something went wrong. Please try again.",
7505
7624
  loading: false,
@@ -7514,7 +7633,7 @@ const errorProps$2 = {
7514
7633
  messageSlot: "Enter your email below to receive a password reset link.",
7515
7634
  },
7516
7635
  };
7517
- const loadingProps$2 = {
7636
+ const loadingProps$3 = {
7518
7637
  states: {
7519
7638
  error: "",
7520
7639
  loading: true,
@@ -7544,15 +7663,15 @@ const successProps = {
7544
7663
  messageSlot: "Enter your email below to receive a password reset link.",
7545
7664
  },
7546
7665
  };
7547
- const Default$5 = () => index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, defaultProps$4));
7548
- const ForgotPasswordWithError = () => (index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, errorProps$2)));
7549
- const ForgotPasswordLoading = () => (index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, loadingProps$2)));
7666
+ const Default$6 = () => index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, defaultProps$5));
7667
+ const ForgotPasswordWithError = () => (index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, errorProps$3)));
7668
+ const ForgotPasswordLoading = () => (index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, loadingProps$3)));
7550
7669
  const ForgotPasswordSuccess = () => (index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, successProps)));
7551
7670
 
7552
7671
  const PortalForgotPassword = /*#__PURE__*/Object.freeze({
7553
7672
  __proto__: null,
7554
7673
  'default': PortalForgotPassword_stories,
7555
- Default: Default$5,
7674
+ Default: Default$6,
7556
7675
  ForgotPasswordWithError: ForgotPasswordWithError,
7557
7676
  ForgotPasswordLoading: ForgotPasswordLoading,
7558
7677
  ForgotPasswordSuccess: ForgotPasswordSuccess
@@ -7585,12 +7704,12 @@ const defaultStates = {
7585
7704
  loadingVerification: false,
7586
7705
  countdown: 10,
7587
7706
  };
7588
- const defaultProps$5 = {
7707
+ const defaultProps$6 = {
7589
7708
  states: defaultStates,
7590
7709
  callbacks: defaultCallbacks,
7591
7710
  content: defaultContent,
7592
7711
  };
7593
- const errorProps$3 = {
7712
+ const errorProps$4 = {
7594
7713
  states: {
7595
7714
  ...defaultStates,
7596
7715
  error: "Something went wrong. Please try again.",
@@ -7598,7 +7717,7 @@ const errorProps$3 = {
7598
7717
  callbacks: defaultCallbacks,
7599
7718
  content: defaultContent,
7600
7719
  };
7601
- const loadingProps$3 = {
7720
+ const loadingProps$4 = {
7602
7721
  states: {
7603
7722
  ...defaultStates,
7604
7723
  loading: true,
@@ -7623,16 +7742,16 @@ const loadingVerificationProps = {
7623
7742
  callbacks: defaultCallbacks,
7624
7743
  content: defaultContent,
7625
7744
  };
7626
- const Default$6 = () => index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, defaultProps$5));
7627
- const EmailVerificationWithError = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, errorProps$3)));
7628
- const EmailVerificationLoading = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, loadingProps$3)));
7745
+ const Default$7 = () => index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, defaultProps$6));
7746
+ const EmailVerificationWithError = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, errorProps$4)));
7747
+ const EmailVerificationLoading = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, loadingProps$4)));
7629
7748
  const EmailVerificationCheckingVerification = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, loadingVerificationProps)));
7630
7749
  const EmailVerificationSuccess = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, successProps$1)));
7631
7750
 
7632
7751
  const PortalEmailVerification = /*#__PURE__*/Object.freeze({
7633
7752
  __proto__: null,
7634
7753
  'default': PortalEmailVerification_stories,
7635
- Default: Default$6,
7754
+ Default: Default$7,
7636
7755
  EmailVerificationWithError: EmailVerificationWithError,
7637
7756
  EmailVerificationLoading: EmailVerificationLoading,
7638
7757
  EmailVerificationCheckingVerification: EmailVerificationCheckingVerification,
@@ -7647,7 +7766,7 @@ const PortalResetPassword_stories = {
7647
7766
  scenario: scenario$8,
7648
7767
  },
7649
7768
  };
7650
- const defaultProps$6 = {
7769
+ const defaultProps$7 = {
7651
7770
  states: {
7652
7771
  error: "",
7653
7772
  loading: false,
@@ -7693,7 +7812,7 @@ const defaultPropsNoConfirm = {
7693
7812
  failed: () => console.log("failed"),
7694
7813
  },
7695
7814
  };
7696
- const errorProps$4 = {
7815
+ const errorProps$5 = {
7697
7816
  states: {
7698
7817
  error: "Something went wrong. Please try again.",
7699
7818
  loading: false,
@@ -7716,7 +7835,7 @@ const errorProps$4 = {
7716
7835
  failed: () => console.log("failed"),
7717
7836
  },
7718
7837
  };
7719
- const loadingProps$4 = {
7838
+ const loadingProps$5 = {
7720
7839
  states: {
7721
7840
  error: "",
7722
7841
  loading: true,
@@ -7785,17 +7904,17 @@ const validatingCodeProps = {
7785
7904
  failed: () => console.log("failed"),
7786
7905
  },
7787
7906
  };
7788
- const Default$7 = () => index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, defaultProps$6));
7907
+ const Default$8 = () => index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, defaultProps$7));
7789
7908
  const DefaultWithoutConfirmField = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, defaultPropsNoConfirm)));
7790
- const ResetPasswordWithError = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, errorProps$4)));
7791
- const ResetPasswordLoading = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, loadingProps$4)));
7909
+ const ResetPasswordWithError = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, errorProps$5)));
7910
+ const ResetPasswordLoading = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, loadingProps$5)));
7792
7911
  const ResetPasswordSuccess = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, successProps$2)));
7793
7912
  const CodeValidating = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, validatingCodeProps)));
7794
7913
 
7795
7914
  const PortalResetPassword = /*#__PURE__*/Object.freeze({
7796
7915
  __proto__: null,
7797
7916
  'default': PortalResetPassword_stories,
7798
- Default: Default$7,
7917
+ Default: Default$8,
7799
7918
  DefaultWithoutConfirmField: DefaultWithoutConfirmField,
7800
7919
  ResetPasswordWithError: ResetPasswordWithError,
7801
7920
  ResetPasswordLoading: ResetPasswordLoading,
@@ -7811,7 +7930,7 @@ const PortalVerifyEmail_stories = {
7811
7930
  scenario: scenario$9,
7812
7931
  },
7813
7932
  };
7814
- const errorProps$5 = {
7933
+ const errorProps$6 = {
7815
7934
  states: {
7816
7935
  error: "Something went wrong. Please try again.",
7817
7936
  loading: false,
@@ -7845,7 +7964,7 @@ const verifiedProps = {
7845
7964
  },
7846
7965
  content: {},
7847
7966
  };
7848
- const EmailVerificationWithError$1 = () => (index.h(sqmPortalVerifyEmailView.PortalVerifyEmailView, Object.assign({}, errorProps$5)));
7967
+ const EmailVerificationWithError$1 = () => (index.h(sqmPortalVerifyEmailView.PortalVerifyEmailView, Object.assign({}, errorProps$6)));
7849
7968
  const EmailVerificationSuccess$1 = () => (index.h(sqmPortalVerifyEmailView.PortalVerifyEmailView, Object.assign({}, verifiedProps)));
7850
7969
 
7851
7970
  const PortalVerifyEmail = /*#__PURE__*/Object.freeze({
@@ -7858,7 +7977,7 @@ const PortalVerifyEmail = /*#__PURE__*/Object.freeze({
7858
7977
  const AssetCard_stories = {
7859
7978
  title: "Components/Asset Card",
7860
7979
  };
7861
- const Default$8 = () => {
7980
+ const Default$9 = () => {
7862
7981
  const props = {
7863
7982
  text: { titleText: "Marketing Banner" },
7864
7983
  imgUrl: "https://res.cloudinary.com/saasquatch/image/upload/v1634255445/squatch-assets/Copy_of_saasquatch-logo-tree-large-horizontal.png",
@@ -7886,7 +8005,7 @@ const CardWithNoImg = () => {
7886
8005
  const AssetCard = /*#__PURE__*/Object.freeze({
7887
8006
  __proto__: null,
7888
8007
  'default': AssetCard_stories,
7889
- Default: Default$8,
8008
+ Default: Default$9,
7890
8009
  CardWithLongText: CardWithLongText,
7891
8010
  CardWithNoImg: CardWithNoImg
7892
8011
  });
@@ -7975,7 +8094,7 @@ const ChangePassword_stories = {
7975
8094
  scenario: scenario$a,
7976
8095
  },
7977
8096
  };
7978
- const defaultProps$7 = {
8097
+ const defaultProps$8 = {
7979
8098
  states: {
7980
8099
  open: false,
7981
8100
  loading: false,
@@ -8019,7 +8138,7 @@ const openProps = {
8019
8138
  submit: (e) => console.log("Submit", e),
8020
8139
  },
8021
8140
  };
8022
- const errorProps$6 = {
8141
+ const errorProps$7 = {
8023
8142
  states: {
8024
8143
  open: true,
8025
8144
  loading: false,
@@ -8063,7 +8182,7 @@ const passwordErrorProps = {
8063
8182
  submit: (e) => console.log("Submit", e),
8064
8183
  },
8065
8184
  };
8066
- const loadingProps$5 = {
8185
+ const loadingProps$6 = {
8067
8186
  states: {
8068
8187
  open: true,
8069
8188
  loading: true,
@@ -8107,17 +8226,17 @@ const successProps$3 = {
8107
8226
  submit: (e) => console.log("Submit", e),
8108
8227
  },
8109
8228
  };
8110
- const Default$9 = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, defaultProps$7));
8229
+ const Default$a = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, defaultProps$8));
8111
8230
  const Open = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, openProps));
8112
- const Error$2 = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, errorProps$6));
8231
+ const Error$2 = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, errorProps$7));
8113
8232
  const PaswordError = () => (index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, passwordErrorProps)));
8114
- const Loading$1 = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, loadingProps$5));
8233
+ const Loading$1 = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, loadingProps$6));
8115
8234
  const Success = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, successProps$3));
8116
8235
 
8117
8236
  const ChangePassword = /*#__PURE__*/Object.freeze({
8118
8237
  __proto__: null,
8119
8238
  'default': ChangePassword_stories,
8120
- Default: Default$9,
8239
+ Default: Default$a,
8121
8240
  Open: Open,
8122
8241
  Error: Error$2,
8123
8242
  PaswordError: PaswordError,
@@ -8125,10 +8244,72 @@ const ChangePassword = /*#__PURE__*/Object.freeze({
8125
8244
  Success: Success
8126
8245
  });
8127
8246
 
8247
+ const ChangeMarketing_stories = {
8248
+ title: "Components/Change Marketing Emails Status",
8249
+ };
8250
+ const defaultProps$9 = {
8251
+ states: {
8252
+ success: false,
8253
+ loading: false,
8254
+ submitDisabled: false,
8255
+ formState: {
8256
+ marketingEmailOptIn: false,
8257
+ errors: null,
8258
+ error: "",
8259
+ },
8260
+ user: {
8261
+ id: "zach",
8262
+ accountId: "zach",
8263
+ marketingEmailOptIn: false,
8264
+ },
8265
+ text: {
8266
+ emailPreferencesHeader: "Email preferences",
8267
+ marketingCheckboxLabel: "I want to receive marketing emails and promotions for this referral program from impact.com",
8268
+ submitChangeButtonText: "Save",
8269
+ successMessage: "Opt-in preference has been changed.",
8270
+ },
8271
+ },
8272
+ callbacks: {
8273
+ onSubmit: (props) => console.log(props),
8274
+ setChecked: (value) => console.log(value),
8275
+ },
8276
+ };
8277
+ const Default$b = () => {
8278
+ return index.h("sqm-portal-change-marketing", null);
8279
+ };
8280
+ const Loading$2 = () => {
8281
+ return (index.h(ShadowViewAddon.ChangeMarktingView, Object.assign({}, defaultProps$9, { states: { ...defaultProps$9.states, loading: true } })));
8282
+ };
8283
+ const Error$3 = () => {
8284
+ return (index.h(ShadowViewAddon.ChangeMarktingView, Object.assign({}, defaultProps$9, { states: {
8285
+ ...defaultProps$9.states,
8286
+ formState: {
8287
+ ...defaultProps$9.states.formState,
8288
+ errors: { error: true },
8289
+ error: "An error string",
8290
+ },
8291
+ } })));
8292
+ };
8293
+ const Success$1 = () => {
8294
+ return (index.h(ShadowViewAddon.ChangeMarktingView, Object.assign({}, defaultProps$9, { states: {
8295
+ ...defaultProps$9.states,
8296
+ success: true,
8297
+ } })));
8298
+ };
8299
+
8300
+ const ChangeMarketing = /*#__PURE__*/Object.freeze({
8301
+ __proto__: null,
8302
+ 'default': ChangeMarketing_stories,
8303
+ Default: Default$b,
8304
+ Loading: Loading$2,
8305
+ Error: Error$3,
8306
+ Success: Success$1
8307
+ });
8308
+
8128
8309
  const PortalProfile_stories = {
8129
8310
  title: "Components/Microsite Profile",
8130
8311
  };
8131
- const defaultProps$8 = {
8312
+ const defaultProps$a = {
8132
8313
  states: {
8133
8314
  success: false,
8134
8315
  loading: false,
@@ -8200,7 +8381,7 @@ const noCountry = {
8200
8381
  onChange: (e) => console.log(e),
8201
8382
  },
8202
8383
  };
8203
- const loadingProps$6 = {
8384
+ const loadingProps$7 = {
8204
8385
  states: {
8205
8386
  success: false,
8206
8387
  loading: true,
@@ -8272,7 +8453,7 @@ const disabledProps = {
8272
8453
  onChange: (e) => console.log(e),
8273
8454
  },
8274
8455
  };
8275
- const errorProps$7 = {
8456
+ const errorProps$8 = {
8276
8457
  states: {
8277
8458
  success: false,
8278
8459
  loading: false,
@@ -8344,22 +8525,22 @@ const successProps$4 = {
8344
8525
  onChange: (e) => console.log(e),
8345
8526
  },
8346
8527
  };
8347
- const Default$a = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, defaultProps$8));
8528
+ const Default$c = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, defaultProps$a));
8348
8529
  const DefaultNoCountry = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, noCountry));
8349
- const Loading$2 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, loadingProps$6));
8530
+ const Loading$3 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, loadingProps$7));
8350
8531
  const Disabled$1 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, disabledProps));
8351
- const Error$3 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, errorProps$7));
8352
- const Success$1 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, successProps$4));
8532
+ const Error$4 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, errorProps$8));
8533
+ const Success$2 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, successProps$4));
8353
8534
 
8354
8535
  const PortalProfile = /*#__PURE__*/Object.freeze({
8355
8536
  __proto__: null,
8356
8537
  'default': PortalProfile_stories,
8357
- Default: Default$a,
8538
+ Default: Default$c,
8358
8539
  DefaultNoCountry: DefaultNoCountry,
8359
- Loading: Loading$2,
8540
+ Loading: Loading$3,
8360
8541
  Disabled: Disabled$1,
8361
- Error: Error$3,
8362
- Success: Success$1
8542
+ Error: Error$4,
8543
+ Success: Success$2
8363
8544
  });
8364
8545
 
8365
8546
  const column = "@author:noah\n@owner:noah\nFeature: Referral Table User Column\n\n Shows the same custom content for each referral\n\n Background:\n Given the column in included in the referral table\n\n @motivating\n Scenario: The title of the date column is configurable\n Given the \"column-title\" prop is set to \"My column title\"\n Then the date column is shown with \"My column title\"\n\n @motivating\n Scenario: The same custom content is shown for each referral\n Given there is at least one referral\n Then for each referral custom content is shown\n And the custom content is provided as slot content";
@@ -10136,7 +10317,7 @@ const dashboardTemplate = "<sqm-portal-container direction=\"column\" padding=\"
10136
10317
 
10137
10318
  const leadSubmitTemplate = "<sqm-referral-iframe></sqm-referral-iframe>\n";
10138
10319
 
10139
- const editProfileTemplate = "<sqm-portal-protected-route\n require-email-verification=\"true\"\n redirect-to=\"/login\"\n redirect-to-unverified=\"/emailVerification\"\n></sqm-portal-protected-route>\n<sqm-portal-container direction=\"column\" gap=\"xxx-large\">\n <sqm-portal-profile></sqm-portal-profile> </sqm-portal-container\n><sqm-portal-container direction=\"column\" gap=\"xxx-large\">\n <sqm-portal-change-password></sqm-portal-change-password>\n</sqm-portal-container>\n";
10320
+ const editProfileTemplate = "<sqm-portal-protected-route\n require-email-verification=\"true\"\n redirect-to=\"/login\"\n redirect-to-unverified=\"/emailVerification\"\n></sqm-portal-protected-route>\n<sqm-portal-container direction=\"column\" gap=\"xxx-large\">\n <sqm-portal-profile></sqm-portal-profile> </sqm-portal-container\n><sqm-portal-container direction=\"column\" gap=\"xxx-large\">\n <sqm-portal-change-password></sqm-portal-change-password>\n</sqm-portal-container>\n<sqm-portal-container direction=\"column\" gap=\"xxx-large\">\n <sqm-portal-change-marketing></sqm-portal-change-marketing>\n</sqm-portal-container>\n";
10140
10321
 
10141
10322
  const activityTemplate = "<sqm-portal-protected-route\n require-email-verification=\"true\"\n redirect-to=\"/login\"\n redirect-to-unverified=\"/emailVerification\"\n></sqm-portal-protected-route>\n<sqm-portal-container direction=\"column\" padding=\"xxx-large\" gap=\"xxx-large\">\n <sqm-text> <h1>Activity</h1></sqm-text>\n <sqm-stat-container space=\"xxxx-large\"\n ><sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/referralsCount\"\n ><sqm-text><p>Referrals</p></sqm-text></sqm-big-stat\n >\n <sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/rewardsCountFiltered/AVAILABLE\"\n ><sqm-text><p>Rewards Earned</p></sqm-text></sqm-big-stat\n >\n <sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/rewardBalance/CREDIT/CENTS\"\n ><sqm-text><p>Reward Balance</p></sqm-text></sqm-big-stat\n >\n </sqm-stat-container>\n <sqm-referral-table>\n <sqm-referral-table-user-column></sqm-referral-table-user-column>\n <sqm-referral-table-rewards-column></sqm-referral-table-rewards-column>\n <sqm-referral-table-status-column></sqm-referral-table-status-column>\n <sqm-referral-table-date-column\n column-title=\"Referred\"\n date-shown=\"dateReferralStarted\"\n ></sqm-referral-table-date-column> </sqm-referral-table\n></sqm-portal-container>\n";
10142
10323
 
@@ -10162,17 +10343,17 @@ const LoginReadme = "# sqm-portal-login\n\n\n\n<!-- Auto Generated Below -->\n\n
10162
10343
 
10163
10344
  const ReferralIframeReadme = "# sqm-referral-iframe\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| -------------- | --------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ----------- |\n| `demoData` | -- | | `{ states?: { content: { iframeSrc: string; iframeHeight: string; iframeWidth: string; }; }; data?: { shareCode: string; }; }` | `undefined` |\n| `iframeHeight` | `iframe-height` | Define the height of the iframe with any valid CSS height value. Example: 100px, 5rem, or auto. | `string` | `\"100%\"` |\n| `iframeSrc` | `iframe-src` | URL of iframe to display | `string` | `undefined` |\n| `iframeWidth` | `iframe-width` | Define the width of the iframe with any valid CSS width value. Example: 100px, 5rem, or auto. | `string` | `\"100%\"` |\n\n\n## Dependencies\n\n### Used by\n\n - [sqm-stencilbook](../sqm-stencilbook)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-stencilbook --> sqm-referral-iframe\n style sqm-referral-iframe fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10164
10345
 
10165
- const ForgotPasswordReadme = "# sqm-portal-forgot-password\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| --------------------- | ----------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; success: boolean; loginPath: string; }; content?: { secondaryButton: any; messageSlot: any; emailLabel?: string; submitLabel?: string; successAlertText?: string; }; }` | `undefined` |\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\n| `headerText` | `header-text` | | `string` | `\"Enter your email below to receive a password reset link.\"` |\n| `loginPath` | `login-path` | | `string` | `\"/login\"` |\n| `loginText` | `login-text` | | `string` | `\"Sign In\"` |\n| `networkErrorMessage` | `network-error-message` | | `string` | `\"An error occurred while loading this page. Please refresh the page.\"` |\n| `redirectPath` | `redirect-path` | Redirect participants to this page after they verify their email. | `string` | `\"/resetPassword\"` |\n| `submitLabel` | `submit-label` | | `string` | `\"Request Password Reset\"` |\n| `successAlertText` | `success-alert-text` | | `string` | `\"If an account with that email exists, a password reset email will be sent.\"` |\n\n\n## Dependencies\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-forgot-password --> sqm-form-message\n style sqm-portal-forgot-password fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10346
+ const ForgotPasswordReadme = "# sqm-portal-forgot-password\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| --------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; success: boolean; loginPath: string; }; content?: { secondaryButton: any; messageSlot: any; emailLabel?: string; submitLabel?: string; successAlertText?: string; }; }` | `undefined` |\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\n| `headerText` | `header-text` | | `string` | `\"Enter your email below to receive a password reset link.\"` |\n| `loginPath` | `login-path` | | `string` | `\"/login\"` |\n| `loginText` | `login-text` | | `string` | `\"Sign In\"` |\n| `networkErrorMessage` | `network-error-message` | Displayed when the forgot password action fails due to a network error. The participant can try refreshing the page. | `string` | `\"An error occurred while loading this page. Please refresh the page.\"` |\n| `redirectPath` | `redirect-path` | Redirect participants to this page after they verify their email. | `string` | `\"/resetPassword\"` |\n| `submitLabel` | `submit-label` | | `string` | `\"Request Password Reset\"` |\n| `successAlertText` | `success-alert-text` | | `string` | `\"If an account with that email exists, a password reset email will be sent.\"` |\n\n\n## Dependencies\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-forgot-password --> sqm-form-message\n style sqm-portal-forgot-password fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10166
10347
 
10167
10348
  const RegisterReadme = "# sqm-portal-register\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| ------------------------------ | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |\n| `confirmPassword` | `confirm-password` | | `boolean` | `false` |\n| `confirmPasswordLabel` | `confirm-password-label` | | `string` | `\"Confirm Password\"` |\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; confirmPassword: boolean; hideInputs: boolean; registrationFormState: RegistrationFormState; disablePasswordValidation?: boolean; loginPath: string; }; refs?: { formRef: any; }; content?: { formData?: VNode; terms?: VNode; passwordField?: VNode; secondaryButton?: VNode; emailLabel?: string; passwordLabel?: string; submitLabel?: string; pageLabel?: string; confirmPasswordLabel: string; requiredFieldErrorMessage: string; invalidEmailErrorMessage: string; meetsRequirementsText?: string; doesNotMeetRequirementsText?: string; minErrorText?: string; uppercaseErrorText?: string; lowercaseErrorText?: string; hasErrorText?: string; }; }` | `undefined` |\n| `disablePasswordValidation` | `disable-password-validation` | | `boolean` | `false` |\n| `doesNotMeetRequirementsText` | `does-not-meet-requirements-text` | | `string` | `\"Password must meet the following requirements:\"` |\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\n| `hasErrorText` | `has-error-text` | | `string` | `\"contain at least 1 number or symbol\"` |\n| `hideInputs` | `hide-inputs` | Hides the email and password fields. Note: If you hide default inputs, you must add additional input fields. They must have the input name attributes \"email\" and \"password\" for this form to succeed. | `boolean` | `false` |\n| `invalidEmailErrorMessage` | `invalid-email-error-message` | The message to be displayed when the email used is invalid or blocked. | `string` | `\"Must be a valid email address\"` |\n| `loginLabel` | `login-label` | | `string` | `\"Sign in\"` |\n| `loginPath` | `login-path` | Redirect participants to this page after clicking the login button. | `string` | `\"/login\"` |\n| `lowercaseErrorText` | `lowercase-error-text` | | `string` | `\"contain at least 1 lowercase character\"` |\n| `meetsRequirementsText` | `meets-requirements-text` | | `string` | `\"Password has met all requirements\"` |\n| `minErrorText` | `min-error-text` | | `string` | `\"be a minimum of 8 characters\"` |\n| `networkErrorMessage` | `network-error-message` | The message to be displayed when a the form submission fails unexpectedly. | `string` | `\"Network request failed.\"` |\n| `nextPage` | `next-page` | Redirect participants to this page from their verification email | `string` | `\"/\"` |\n| `pageLabel` | `page-label` | | `string` | `\"Register\"` |\n| `passwordLabel` | `password-label` | | `string` | `\"Password\"` |\n| `passwordMismatchErrorMessage` | `password-mismatch-error-message` | The message to be displayed when password inputs do not match. | `string` | `\"Passwords do not match.\"` |\n| `redirectPath` | `redirect-path` | The page that participants are redirected to from the verification email. | `string` | `\"/verifyEmail\"` |\n| `requiredFieldErrorMessage` | `required-field-error-message` | The message to be displayed when a required field is not filled. | `string` | `\"Cannot be empty\"` |\n| `submitLabel` | `submit-label` | | `string` | `\"Register\"` |\n| `uppercaseErrorText` | `uppercase-error-text` | | `string` | `\"contain at least 1 uppercase character\"` |\n\n\n## Dependencies\n\n### Used by\n\n - [sqm-stencilbook](../sqm-stencilbook)\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n- [sqm-password-field](../sqm-password-field)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-register --> sqm-form-message\n sqm-portal-register --> sqm-password-field\n sqm-stencilbook --> sqm-portal-register\n style sqm-portal-register fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10168
10349
 
10169
10350
  const EditProfileReadme = "# sqm-portal-profile\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| ------------------------ | --------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |\n| `countrytext` | `countrytext` | | `string` | `\"Country\"` |\n| `demoData` | -- | | `{ states?: { success: boolean; loading: boolean; submitDisabled: boolean; showCountry: boolean; formState: { country: string; firstName: string; lastName: string; errors: any; error: string; }; user: { id: string; accountId: string; firstName: string; lastName: string; email: string; countryCode: string; }; text: { firstnametext: string; lastnametext: string; emailtext: string; countrytext: string; editProfileHeader: string; editProfileSubHeader: string; submitChangeButtonText: string; submissionSuccessText?: string; fieldEmptyText?: string; }; }; }` | `undefined` |\n| `editProfileHeader` | `edit-profile-header` | | `string` | `\"Edit your profile\"` |\n| `editProfileSubHeader` | `edit-profile-sub-header` | | `string` | `\"Personal Information\"` |\n| `emailtext` | `emailtext` | | `string` | `\"Email\"` |\n| `fieldEmptyText` | `field-empty-text` | | `string` | `\"Field is required\"` |\n| `firstnametext` | `firstnametext` | | `string` | `\"First Name\"` |\n| `formErrorText` | `form-error-text` | | `string` | `\"Please correct the errors below to update your profile.\"` |\n| `hideCountry` | `hide-country` | | `boolean` | `false` |\n| `lastnametext` | `lastnametext` | | `string` | `\"Last Name\"` |\n| `networkRequestMessage` | `network-request-message` | | `string` | `\"An error occurred while loading this page. Please refresh the page.\"` |\n| `submissionSuccessText` | `submission-success-text` | | `string` | `\"Your profile has been successfully updated.\"` |\n| `submitChangeButtonText` | `submit-change-button-text` | | `string` | `\"Submit Changes\"` |\n\n\n## Dependencies\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-profile --> sqm-form-message\n style sqm-portal-profile fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10170
10351
 
10171
- const ResetPasswordReadme = "# sqm-portal-reset-password\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| ----------------------------- | --------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |\n| `codeInvalidText` | `code-invalid-text` | | `string` | `\"The password reset code is invalid or has expired, please try again.\"` |\n| `confirmPassword` | `confirm-password` | | `boolean` | `false` |\n| `confirmPasswordFieldLabel` | `confirm-password-field-label` | | `string` | `\"Confirm Password\"` |\n| `continueButtonText` | `continue-button-text` | Button text displayed after a successful password reset. | `string` | `\"Continue\"` |\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; reset: boolean; confirmPassword: boolean; oobCodeValidating: boolean; oobCodeValid: boolean; passwordDemoData?: PasswordFieldViewDemoProps; content: { passwordResetHeader: string; resetPasswordHeader: string; continueButtonText: string; resetPasswordButtonText: string; confirmPasswordFieldLabel: string; passwordFieldLabel: string; meetsRequirementsText?: string; doesNotMeetRequirementsText?: string; minErrorText?: string; uppercaseErrorText?: string; lowercaseErrorText?: string; hasErrorText?: string; resetSuccessText?: string; passwordMismatchText?: string; codeInvalidText?: string; }; }; }` | `undefined` |\n| `doesNotMeetRequirementsText` | `does-not-meet-requirements-text` | | `string` | `\"Password must meet the following requirements:\"` |\n| `failedPage` | `failed-page` | Redirect participants to this page if password reset fails due to an outdated reset attempt. | `string` | `\"/\"` |\n| `hasErrorText` | `has-error-text` | | `string` | `\"contain at least 1 number or symbol\"` |\n| `lowercaseErrorText` | `lowercase-error-text` | | `string` | `\"contain at least 1 lowercase character\"` |\n| `meetsRequirementsText` | `meets-requirements-text` | | `string` | `\"Password has met all requirements\"` |\n| `minErrorText` | `min-error-text` | | `string` | `\"be a minimum of 8 characters\"` |\n| `networkErrorMessage` | `network-error-message` | | `string` | `\"An error occurred while resetting your password. Please refresh the page and try again.\"` |\n| `nextPage` | `next-page` | Redirect participants to this page when they successfully reset their password. | `string` | `\"/\"` |\n| `passwordFieldLabel` | `password-field-label` | | `string` | `\"New Password\"` |\n| `passwordMismatchText` | `password-mismatch-text` | | `string` | `\"Passwords do not match.\"` |\n| `passwordResetHeader` | `password-reset-header` | Displayed after a successful password reset. | `string` | `\"Password reset\"` |\n| `resetPasswordButtonText` | `reset-password-button-text` | | `string` | `\"Reset Password\"` |\n| `resetPasswordHeader` | `reset-password-header` | | `string` | `\"Reset your password\"` |\n| `resetSuccessText` | `reset-success-text` | | `string` | `\"Your password has been reset and you are being redirected. If you are not redirected, please click Continue.\"` |\n| `uppercaseErrorText` | `uppercase-error-text` | | `string` | `\"contain at least 1 uppercase character\"` |\n\n\n## Dependencies\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n- [sqm-password-field](../sqm-password-field)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-reset-password --> sqm-form-message\n sqm-portal-reset-password --> sqm-password-field\n style sqm-portal-reset-password fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10352
+ const ResetPasswordReadme = "# sqm-portal-reset-password\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| ----------------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |\n| `codeInvalidText` | `code-invalid-text` | | `string` | `\"The password reset code is invalid or has expired, please try again.\"` |\n| `confirmPassword` | `confirm-password` | | `boolean` | `false` |\n| `confirmPasswordFieldLabel` | `confirm-password-field-label` | | `string` | `\"Confirm Password\"` |\n| `continueButtonText` | `continue-button-text` | Button text displayed after a successful password reset. | `string` | `\"Continue\"` |\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; reset: boolean; confirmPassword: boolean; oobCodeValidating: boolean; oobCodeValid: boolean; passwordDemoData?: PasswordFieldViewDemoProps; content: { passwordResetHeader: string; resetPasswordHeader: string; continueButtonText: string; resetPasswordButtonText: string; confirmPasswordFieldLabel: string; passwordFieldLabel: string; meetsRequirementsText?: string; doesNotMeetRequirementsText?: string; minErrorText?: string; uppercaseErrorText?: string; lowercaseErrorText?: string; hasErrorText?: string; resetSuccessText?: string; passwordMismatchText?: string; codeInvalidText?: string; }; }; }` | `undefined` |\n| `doesNotMeetRequirementsText` | `does-not-meet-requirements-text` | | `string` | `\"Password must meet the following requirements:\"` |\n| `failedPage` | `failed-page` | Redirect participants to this page if password reset fails due to an outdated reset attempt. | `string` | `\"/\"` |\n| `hasErrorText` | `has-error-text` | | `string` | `\"contain at least 1 number or symbol\"` |\n| `lowercaseErrorText` | `lowercase-error-text` | | `string` | `\"contain at least 1 lowercase character\"` |\n| `meetsRequirementsText` | `meets-requirements-text` | | `string` | `\"Password has met all requirements\"` |\n| `minErrorText` | `min-error-text` | | `string` | `\"be a minimum of 8 characters\"` |\n| `networkErrorMessage` | `network-error-message` | Displayed when the password reset fails due to a network error. The participant can try refreshing the page. | `string` | `\"An error occurred while resetting your password. Please refresh the page and try again.\"` |\n| `nextPage` | `next-page` | Redirect participants to this page when they successfully reset their password. | `string` | `\"/\"` |\n| `passwordFieldLabel` | `password-field-label` | | `string` | `\"New Password\"` |\n| `passwordMismatchText` | `password-mismatch-text` | | `string` | `\"Passwords do not match.\"` |\n| `passwordResetHeader` | `password-reset-header` | Displayed after a successful password reset. | `string` | `\"Password reset\"` |\n| `resetPasswordButtonText` | `reset-password-button-text` | | `string` | `\"Reset Password\"` |\n| `resetPasswordHeader` | `reset-password-header` | | `string` | `\"Reset your password\"` |\n| `resetSuccessText` | `reset-success-text` | | `string` | `\"Your password has been reset and you are being redirected. If you are not redirected, please click Continue.\"` |\n| `uppercaseErrorText` | `uppercase-error-text` | | `string` | `\"contain at least 1 uppercase character\"` |\n\n\n## Dependencies\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n- [sqm-password-field](../sqm-password-field)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-reset-password --> sqm-form-message\n sqm-portal-reset-password --> sqm-password-field\n style sqm-portal-reset-password fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10172
10353
 
10173
- const EmailVerificationReadme = "# sqm-portal-email-verification\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| ---------------------------- | ------------------------------ | ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; success: boolean; isVerified?: boolean; loadingVerification?: boolean; countdown?: number; }; content?: { email: string; verifyMessage: string; emailVerificationHeader: string; resendEmailButtonText: string; verificationStatusMessage?: string; verificationLoadingMessage?: string; verificationResentMessage?: string; }; }` | `undefined` |\n| `emailVerificationHeader` | `email-verification-header` | | `string` | `\"Verify your email\"` |\n| `networkErrorMessage` | `network-error-message` | | `string` | `\"An error occurred while verifying your password. Please refresh the page.\"` |\n| `redirectPath` | `redirect-path` | Redirect participants to this page from their verification email. | `string` | `\"/verifyEmail\"` |\n| `resendEmailButtonText` | `resend-email-button-text` | | `string` | `\"Re-send Email\"` |\n| `verificationLoadingMessage` | `verification-loading-message` | | `string` | `\"Checking verification status\"` |\n| `verificationResentMessage` | `verification-resent-message` | | `string` | `\"Your verification email has been resent successfully\"` |\n| `verificationStatusMessage` | `verification-status-message` | | `string` | `\"Checking verification status in {countdown}\"` |\n| `verifyMessage` | `verify-message` | | `string` | `\"A verification email was sent to {email}. Please verify your email to continue to the portal. Resending an email will invalidate the previous email.\"` |\n\n\n## Dependencies\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-email-verification --> sqm-form-message\n style sqm-portal-email-verification fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10354
+ const EmailVerificationReadme = "# sqm-portal-email-verification\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| ---------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; success: boolean; isVerified?: boolean; loadingVerification?: boolean; countdown?: number; }; content?: { email: string; verifyMessage: string; emailVerificationHeader: string; resendEmailButtonText: string; verificationStatusMessage?: string; verificationLoadingMessage?: string; verificationResentMessage?: string; }; }` | `undefined` |\n| `emailVerificationHeader` | `email-verification-header` | | `string` | `\"Verify your email\"` |\n| `networkErrorMessage` | `network-error-message` | Displayed when your verification email fails to send due to a network error. The participant can try refreshing the page. | `string` | `\"An error occurred while verifying your password. Please refresh the page.\"` |\n| `redirectPath` | `redirect-path` | Redirect participants to this page from their verification email. | `string` | `\"/verifyEmail\"` |\n| `resendEmailButtonText` | `resend-email-button-text` | | `string` | `\"Re-send Email\"` |\n| `verificationLoadingMessage` | `verification-loading-message` | | `string` | `\"Checking verification status\"` |\n| `verificationResentMessage` | `verification-resent-message` | | `string` | `\"Your verification email has been resent successfully\"` |\n| `verificationStatusMessage` | `verification-status-message` | | `string` | `\"Checking verification status in {countdown}\"` |\n| `verifyMessage` | `verify-message` | | `string` | `\"A verification email was sent to {email}. Please verify your email to continue to the portal. Resending an email will invalidate the previous email.\"` |\n\n\n## Dependencies\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-email-verification --> sqm-form-message\n style sqm-portal-email-verification fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10174
10355
 
10175
- const EmailVerifiedReadme = "# sqm-portal-verify-email\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| --------------------- | ----------------------- | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |\n| `continueText` | `continue-text` | | `string` | `\"Continue\"` |\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; success: boolean; }; data?: { oobCode: string; }; content?: { verifySuccessText?: string; verifyEmailText?: string; verifyInvalidText?: string; continueText?: string; }; }` | `undefined` |\n| `failedPage` | `failed-page` | Redirect participants to this page if verification fails due to an outdated verification attempt. | `string` | `\"/\"` |\n| `networkErrorMessage` | `network-error-message` | | `string` | `\"An error occurred while verifying your email. Please refresh the page and try again.\"` |\n| `nextPage` | `next-page` | Redirect participants to this page when they successfully verify their email. | `string` | `\"/\"` |\n| `verifyEmailText` | `verify-email-text` | | `string` | `\"Verify your email\"` |\n| `verifyInvalidText` | `verify-invalid-text` | | `string` | `\"The email verification code is invalid or has expired, please try again.\"` |\n| `verifySuccessText` | `verify-success-text` | | `string` | `\"Your email has been verified and you are being redirected. If you are not redirected, please click Continue.\"` |\n\n\n## Dependencies\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-verify-email --> sqm-form-message\n style sqm-portal-verify-email fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10356
+ const EmailVerifiedReadme = "# sqm-portal-verify-email\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| --------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |\n| `continueText` | `continue-text` | | `string` | `\"Continue\"` |\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; success: boolean; }; data?: { oobCode: string; }; content?: { verifySuccessText?: string; verifyEmailText?: string; verifyInvalidText?: string; continueText?: string; }; }` | `undefined` |\n| `failedPage` | `failed-page` | Redirect participants to this page if verification fails due to an outdated verification attempt. | `string` | `\"/\"` |\n| `networkErrorMessage` | `network-error-message` | Displayed when the email verification fails due to a network error. The participant can try refreshing the page. | `string` | `\"An error occurred while verifying your email. Please refresh the page and try again.\"` |\n| `nextPage` | `next-page` | Redirect participants to this page when they successfully verify their email. | `string` | `\"/\"` |\n| `verifyEmailText` | `verify-email-text` | | `string` | `\"Verify your email\"` |\n| `verifyInvalidText` | `verify-invalid-text` | | `string` | `\"The email verification code is invalid or has expired, please try again.\"` |\n| `verifySuccessText` | `verify-success-text` | | `string` | `\"Your email has been verified and you are being redirected. If you are not redirected, please click Continue.\"` |\n\n\n## Dependencies\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-verify-email --> sqm-form-message\n style sqm-portal-verify-email fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10176
10357
 
10177
10358
  const PortalTemplates_stories = {
10178
10359
  title: "Templates / Microsite",
@@ -10333,7 +10514,7 @@ const ProgramMenu = /*#__PURE__*/Object.freeze({
10333
10514
  const PoweredByImg_stories = {
10334
10515
  title: "Powered By",
10335
10516
  };
10336
- const Default$b = () => {
10517
+ const Default$d = () => {
10337
10518
  return index.h(ShadowViewAddon.PoweredByImg, null);
10338
10519
  };
10339
10520
  const CustomColor = () => {
@@ -10346,7 +10527,7 @@ const CustomWidthAndHeight = () => {
10346
10527
  const PoweredByImg = /*#__PURE__*/Object.freeze({
10347
10528
  __proto__: null,
10348
10529
  'default': PoweredByImg_stories,
10349
- Default: Default$b,
10530
+ Default: Default$d,
10350
10531
  CustomColor: CustomColor,
10351
10532
  CustomWidthAndHeight: CustomWidthAndHeight
10352
10533
  });
@@ -10359,7 +10540,7 @@ const PortalFooter_stories = {
10359
10540
  scenario: scenario$f,
10360
10541
  },
10361
10542
  };
10362
- const defaultProps$9 = {
10543
+ const defaultProps$b = {
10363
10544
  supportEmail: "support@example.com",
10364
10545
  supportText: "For program support, contact {email}",
10365
10546
  hidePoweredBy: false,
@@ -10369,12 +10550,12 @@ const defaultProps$9 = {
10369
10550
  paddingBottom: "large",
10370
10551
  paddingLeft: "large",
10371
10552
  };
10372
- const DefaultFooter = () => index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$9));
10373
- const FooterWithTerms = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$9, { termsLink: "https://example.com", termsText: "Terms and Conditions" })));
10374
- const FooterWithFAQ = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$9, { faqLink: "https://example.com", faqText: "FAQ" })));
10375
- const FooterWithTermsAndFAQ = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$9, { termsLink: "https://example.com", termsText: "Terms and Conditions", faqLink: "https://example.com", faqText: "FAQ" })));
10376
- const FooterNoPoweredBy = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$9, { termsLink: "https://example.com", termsText: "Terms and Conditions", faqLink: "https://example.com", faqText: "FAQ", hidePoweredBy: true })));
10377
- const FooterNoSupportText = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$9, { termsLink: "https://example.com", termsText: "Terms and Conditions", faqLink: "https://example.com", faqText: "FAQ", hideSupportText: true })));
10553
+ const DefaultFooter = () => index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$b));
10554
+ const FooterWithTerms = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$b, { termsLink: "https://example.com", termsText: "Terms and Conditions" })));
10555
+ const FooterWithFAQ = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$b, { faqLink: "https://example.com", faqText: "FAQ" })));
10556
+ const FooterWithTermsAndFAQ = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$b, { termsLink: "https://example.com", termsText: "Terms and Conditions", faqLink: "https://example.com", faqText: "FAQ" })));
10557
+ const FooterNoPoweredBy = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$b, { termsLink: "https://example.com", termsText: "Terms and Conditions", faqLink: "https://example.com", faqText: "FAQ", hidePoweredBy: true })));
10558
+ const FooterNoSupportText = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$b, { termsLink: "https://example.com", termsText: "Terms and Conditions", faqLink: "https://example.com", faqText: "FAQ", hideSupportText: true })));
10378
10559
 
10379
10560
  const PortalFooter = /*#__PURE__*/Object.freeze({
10380
10561
  __proto__: null,
@@ -10656,7 +10837,7 @@ const props$1 = {
10656
10837
  },
10657
10838
  },
10658
10839
  };
10659
- const errorProps$8 = {
10840
+ const errorProps$9 = {
10660
10841
  states: {
10661
10842
  registrationFormState: {
10662
10843
  validationErrors: {
@@ -10674,7 +10855,7 @@ const NameFields = () => {
10674
10855
  return index.h(ShadowViewAddon.NameFieldsView, Object.assign({}, props$1));
10675
10856
  };
10676
10857
  const NameFieldsWithErrors = () => {
10677
- return index.h(ShadowViewAddon.NameFieldsView, Object.assign({}, errorProps$8));
10858
+ return index.h(ShadowViewAddon.NameFieldsView, Object.assign({}, errorProps$9));
10678
10859
  };
10679
10860
 
10680
10861
  const NameFields$1 = /*#__PURE__*/Object.freeze({
@@ -10692,7 +10873,7 @@ const CheckboxField_stories = {
10692
10873
  scenario: scenario$j,
10693
10874
  },
10694
10875
  };
10695
- const defaultProps$a = {
10876
+ const defaultProps$c = {
10696
10877
  states: {
10697
10878
  registrationFormState: {
10698
10879
  validationErrors: {},
@@ -10700,7 +10881,7 @@ const defaultProps$a = {
10700
10881
  checked: false,
10701
10882
  },
10702
10883
  content: {
10703
- checkboxName: "agree",
10884
+ checkboxName: "terms",
10704
10885
  checkboxLabel: "By signing up you agree to the {labelLink}",
10705
10886
  checkboxLabelLink: "https://example.com",
10706
10887
  checkboxLabelLinkText: "Terms and Conditions",
@@ -10733,35 +10914,35 @@ const defaultRegisterProps = {
10733
10914
  invalidEmailErrorMessage: "Must be a valid email address",
10734
10915
  },
10735
10916
  };
10736
- const Default$c = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$a))));
10737
- const DefaultChecked = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$a, { states: {
10738
- ...defaultProps$a.states,
10917
+ const Default$e = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$c))));
10918
+ const DefaultChecked = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$c, { states: {
10919
+ ...defaultProps$c.states,
10739
10920
  checked: true,
10740
10921
  } }))));
10741
- const CustomLabel = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$a, { content: {
10742
- ...defaultProps$a.content,
10922
+ const CustomLabel = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$c, { content: {
10923
+ ...defaultProps$c.content,
10743
10924
  checkboxLabel: "I Agree",
10744
10925
  } }))));
10745
- const Error$4 = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$a, { states: {
10746
- ...defaultProps$a.states,
10926
+ const Error$5 = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$c, { states: {
10927
+ ...defaultProps$c.states,
10747
10928
  registrationFormState: {
10748
10929
  validationErrors: {
10749
10930
  agree: "Must be checked",
10750
10931
  },
10751
10932
  },
10752
10933
  } }))));
10753
- const CustomError = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$a, { states: {
10754
- ...defaultProps$a.states,
10934
+ const CustomError = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$c, { states: {
10935
+ ...defaultProps$c.states,
10755
10936
  registrationFormState: {
10756
10937
  validationErrors: {
10757
10938
  agree: "Must be checked",
10758
10939
  },
10759
10940
  },
10760
10941
  }, content: {
10761
- ...defaultProps$a.content,
10942
+ ...defaultProps$c.content,
10762
10943
  errorMessage: "This checkbox must be checked to continue",
10763
10944
  } }))));
10764
- const TermsAndConditions$1 = createHookStory(() => (index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultRegisterProps, {
10945
+ const TermsAndConditions$2 = createHookStory(() => (index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultRegisterProps, {
10765
10946
  //@ts-ignore
10766
10947
  content: {
10767
10948
  ...defaultRegisterProps.content,
@@ -10788,16 +10969,34 @@ const TermsAndConditionsLongCustomLabel = createHookStory(() => (index.h(ShadowV
10788
10969
  const CheckboxField = /*#__PURE__*/Object.freeze({
10789
10970
  __proto__: null,
10790
10971
  'default': CheckboxField_stories,
10791
- Default: Default$c,
10972
+ Default: Default$e,
10792
10973
  DefaultChecked: DefaultChecked,
10793
10974
  CustomLabel: CustomLabel,
10794
- Error: Error$4,
10975
+ Error: Error$5,
10795
10976
  CustomError: CustomError,
10796
- TermsAndConditions: TermsAndConditions$1,
10977
+ TermsAndConditions: TermsAndConditions$2,
10797
10978
  TermsAndConditionsCustomLabel: TermsAndConditionsCustomLabel,
10798
10979
  TermsAndConditionsLongCustomLabel: TermsAndConditionsLongCustomLabel
10799
10980
  });
10800
10981
 
10982
+ const scenario$k = "@owner:zach\n@author:zach\nFeature: Marketing Emails Checkbox\n\n A checkbox that is used to opt in for marketing emails.\n\n Background: The microsite registration form contains a marketing emails checkbox\n\n Scenario: The registration form can be configured to include a marketing emails checkbox\n Given a user is viewing the \"/register\"\n And \"/register\" contains the registration form\n And they have added a marketing emails checkbox to the form in the content editor\n Then the registration form has the following fields\n | fields |\n | first name |\n | last name |\n | email |\n | password |\n | Marketing Emails Checkbox |\n\n\n Scenario: The user can opt in to marketing emails\n Given the user is filling out the registration form\n And the fields have valid input\n And the marketing emails checkbox is checked\n When they try to register\n Then the form is submitted\n And there are no errors\n And the \"marketingEmailOptIn\" value is set to true\n And the user is opted in to marketing emails\n\n\n @motivating\n Scenario: Checkbox is optional by default\n Given the user is filling out the registration form\n And the name fields have valid input\n And the email field has valid input\n And the password field has valid input\n And the checkbox is not checked\n When they try to register\n Then the form is submitted\n And there is no error for the checkbox\n\n Scenario: The form field name is provided by default\n Given the customer has added a marketing emails checkbox to their registration form\n Then the field name is automatically set to \"marketingEmailOptIn\"\n And the name is not configurable";
10983
+
10984
+ const MarketingEmailsCheckbox_stories = {
10985
+ title: "Components/Marketing Emails Checkbox",
10986
+ parameters: {
10987
+ scenario: scenario$k,
10988
+ },
10989
+ };
10990
+ const Default$f = () => {
10991
+ return index.h("sqm-marketing-emails-checkbox", null);
10992
+ };
10993
+
10994
+ const MarketingEmailsCheckbox = /*#__PURE__*/Object.freeze({
10995
+ __proto__: null,
10996
+ 'default': MarketingEmailsCheckbox_stories,
10997
+ Default: Default$f
10998
+ });
10999
+
10801
11000
  const UseCheckboxField_stories = {
10802
11001
  title: "Hooks / useCheckboxField",
10803
11002
  parameters: {
@@ -10827,7 +11026,7 @@ function setupGraphQL$9() {
10827
11026
  }, []);
10828
11027
  return { id, accountId };
10829
11028
  }
10830
- const TermsAndConditions$2 = createHookStory(() => {
11029
+ const TermsAndConditions$3 = createHookStory(() => {
10831
11030
  setupGraphQL$9();
10832
11031
  return (index.h("sqm-portal-register", null,
10833
11032
  index.h("div", { slot: "terms" },
@@ -10865,7 +11064,7 @@ const MissingName = createHookStory(() => {
10865
11064
  const UseCheckboxField = /*#__PURE__*/Object.freeze({
10866
11065
  __proto__: null,
10867
11066
  'default': UseCheckboxField_stories,
10868
- TermsAndConditions: TermsAndConditions$2,
11067
+ TermsAndConditions: TermsAndConditions$3,
10869
11068
  TermsAndConditionsWithLabel: TermsAndConditionsWithLabel,
10870
11069
  MultipleCheckboxes: MultipleCheckboxes,
10871
11070
  OptionalCheckboxes: OptionalCheckboxes,
@@ -10875,7 +11074,7 @@ const UseCheckboxField = /*#__PURE__*/Object.freeze({
10875
11074
  const DropdownField_stories = {
10876
11075
  title: "Components/Dropdown Field",
10877
11076
  };
10878
- const defaultProps$b = {
11077
+ const defaultProps$d = {
10879
11078
  states: {
10880
11079
  registrationFormState: {},
10881
11080
  },
@@ -10890,24 +11089,24 @@ const defaultProps$b = {
10890
11089
  ],
10891
11090
  },
10892
11091
  };
10893
- const Default$d = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$b))));
10894
- const CustomLabel$1 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$b, { content: {
10895
- ...defaultProps$b.content,
11092
+ const Default$g = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$d))));
11093
+ const CustomLabel$1 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$d, { content: {
11094
+ ...defaultProps$d.content,
10896
11095
  dropdownLabel: "Pick your favorite",
10897
11096
  } }))));
10898
- const Error$5 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$b, { states: {
10899
- ...defaultProps$b.states,
11097
+ const Error$6 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$d, { states: {
11098
+ ...defaultProps$d.states,
10900
11099
  registrationFormState: {
10901
11100
  validationErrors: {
10902
11101
  options: "Must select an option",
10903
11102
  },
10904
11103
  },
10905
11104
  } }))));
10906
- const CustomError$1 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$b, { content: {
10907
- ...defaultProps$b.content,
11105
+ const CustomError$1 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$d, { content: {
11106
+ ...defaultProps$d.content,
10908
11107
  errorMessage: "An option must be selected to continue",
10909
11108
  }, states: {
10910
- ...defaultProps$b.states,
11109
+ ...defaultProps$d.states,
10911
11110
  registrationFormState: {
10912
11111
  validationErrors: {
10913
11112
  options: "Must select an option",
@@ -10918,9 +11117,9 @@ const CustomError$1 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFie
10918
11117
  const DropdownField = /*#__PURE__*/Object.freeze({
10919
11118
  __proto__: null,
10920
11119
  'default': DropdownField_stories,
10921
- Default: Default$d,
11120
+ Default: Default$g,
10922
11121
  CustomLabel: CustomLabel$1,
10923
- Error: Error$5,
11122
+ Error: Error$6,
10924
11123
  CustomError: CustomError$1
10925
11124
  });
10926
11125
 
@@ -10983,15 +11182,15 @@ const UseDropdownField = /*#__PURE__*/Object.freeze({
10983
11182
  MissingName: MissingName$1
10984
11183
  });
10985
11184
 
10986
- const scenario$k = "@author:derek\n@owner:derek\nFeature: Form Input Field\n\n This component is used as a custom registration field during registration. The field can be text,\n a date or phone number. A motivating use case is to ask for a users company name, this value would then be mapped\n through the Managed Identity Service and upserted on the user after registration.\n\n Background: A user exists and is viewing the hosted portal registration\n Given a user is viewing \"/register\"\n And \"/register\" contains the registration form\n And the registration form has a custom input field\n\n @motivating\n Scenario Outline: Input fields are required by default but can be optional\n Given the input has prop \"field-optional\" with <value>\n And the input is empty\n When the user tries to register\n Then the input <mayBe> highlighted in red\n And an error message <mayAppear> in red below\n And form submission <mayBe> blocked\n Examples:\n | value | mayBe | mayAppear |\n | false | is | appears |\n | | is | appears |\n | true | isn't | doesn't appear |\n\n @motivating\n Scenario: Input field labels are configurable\n Given the input has prop \"field-label\" with value \"My Custom Input\"\n When the user views the registration form\n Then they see the input field\n And it has label \"My Custom Input\" above the input\n\n @minutia\n Scenario Outline: The validation error message is configurable\n The error message string is evaluated as an ICU string, but currently is provided no context\n Given the input is required\n And it has prop \"error-message\" with <value>\n When the user tries to register\n But they haven't filled in the input\n Then they see <errorMessage> below\n Examples:\n | value | errorMessage |\n | | Cannot be empty |\n | My Custom Message | My Custom Message |\n\n @motivating\n Scenario: Form data attribute name is configurable\n Given the input has prop \"field-name\" with value \"myCustomField\"\n When the user types \"testing testing\" into the input\n And they register\n Then \"testing testing\" is submitted under \"myCustomField\" in the form data\n\n @motivating\n Scenario Outline: The input field is a text input by default\n Given the input <mayHave> prop \"field-type\" with <value>\n When the user views the input field\n Then it is a text input\n Examples:\n | mayHave | value |\n | has | text |\n | doesn't have | |\n\n @motivating\n Scenario: Date type inputs are supported\n Given the input has prop \"field-type\" \"date\"\n When the user views the input field\n Then they see \"mm/dd/yyyy\" as a placeholder\n And they see a calendar icon on the right\n When they start typing a date\n Then it maintains the \"mm/dd/yyyy\" format\n When they click the calendar icon\n Then a dropdown appears\n And they see a calendar\n When they select a date\n Then it is applied to the input\n\n @landmine\n Scenario: The clear text button in the date picker does not clear the date\n Due to an incompatibility between our shoelace version and the browser, the clear funtionality is not supported currently\n Given the input has prop \"field-type\" \"date\"\n And the user has entered a date\n When they click the calendar icon\n And click the 'clear' text button\n Then their selected date is not cleared\n\n @motivating\n Scenario: Phone number type inputs are supported\n Given the input has prop \"field-type\" with value \"tel\"\n When the user starts typing a phone number in the input\n Then it is formatted into the following form \"(XXX) XXX-XXXX\"\n When they pre-fix their phone number with a \"1\"\n Then it is formatted into the following form \"1 (XXX) XXX-XXXX\"\n\n @landmine\n Scenario: Telephone formatting is removed after 10 numbers\n Given a user using a phone number input field\n And they entered their 10 character phone number\n And it was not prefixed with a 1\n When they add another character\n Then the formatting is removed\n\n @landmine\n Scenario Outline: Input values are always recorded as strings in the form data\n Given the input has prop \"field-type\" with <value>\n And it has a \"field-name\"\n When the user inputs <formInput>\n And they register\n Then <formData> is recorded in the form data as a string\n Examples:\n | value | formInput | formData |\n | text | Hello there | Hello there |\n | date | 05/07/2021 | 2021-05-07 |\n | tel | (250) 234-9877 | (250) 234-9877 |\n\n @minutia\n Scenario Outline: The input field component fails fast if a field name isn't provided\n Given the input <mayHave> prop \"field-name\"\n And it <mayHavePropValue>\n When a user views the input\n Then an alert with an error message is displayed in place of the input\n And it has a details section\n When \"More details\" is clicked\n Then the following information is displayed\n | information |\n | component being used |\n | missing attribute(s) |\n Examples:\n | mayBeAnAttribute | mayHavePropValue |\n | doesn't have | N/A |\n | has | \"\" |\n | has | |";
11185
+ const scenario$l = "@author:derek\n@owner:derek\nFeature: Form Input Field\n\n This component is used as a custom registration field during registration. The field can be text,\n a date or phone number. A motivating use case is to ask for a users company name, this value would then be mapped\n through the Managed Identity Service and upserted on the user after registration.\n\n Background: A user exists and is viewing the hosted portal registration\n Given a user is viewing \"/register\"\n And \"/register\" contains the registration form\n And the registration form has a custom input field\n\n @motivating\n Scenario Outline: Input fields are required by default but can be optional\n Given the input has prop \"field-optional\" with <value>\n And the input is empty\n When the user tries to register\n Then the input <mayBe> highlighted in red\n And an error message <mayAppear> in red below\n And form submission <mayBe> blocked\n Examples:\n | value | mayBe | mayAppear |\n | false | is | appears |\n | | is | appears |\n | true | isn't | doesn't appear |\n\n @motivating\n Scenario: Input field labels are configurable\n Given the input has prop \"field-label\" with value \"My Custom Input\"\n When the user views the registration form\n Then they see the input field\n And it has label \"My Custom Input\" above the input\n\n @minutia\n Scenario Outline: The validation error message is configurable\n The error message string is evaluated as an ICU string, but currently is provided no context\n Given the input is required\n And it has prop \"error-message\" with <value>\n When the user tries to register\n But they haven't filled in the input\n Then they see <errorMessage> below\n Examples:\n | value | errorMessage |\n | | Cannot be empty |\n | My Custom Message | My Custom Message |\n\n @motivating\n Scenario: Form data attribute name is configurable\n Given the input has prop \"field-name\" with value \"myCustomField\"\n When the user types \"testing testing\" into the input\n And they register\n Then \"testing testing\" is submitted under \"myCustomField\" in the form data\n\n @motivating\n Scenario Outline: The input field is a text input by default\n Given the input <mayHave> prop \"field-type\" with <value>\n When the user views the input field\n Then it is a text input\n Examples:\n | mayHave | value |\n | has | text |\n | doesn't have | |\n\n @motivating\n Scenario: Date type inputs are supported\n Given the input has prop \"field-type\" \"date\"\n When the user views the input field\n Then they see \"mm/dd/yyyy\" as a placeholder\n And they see a calendar icon on the right\n When they start typing a date\n Then it maintains the \"mm/dd/yyyy\" format\n When they click the calendar icon\n Then a dropdown appears\n And they see a calendar\n When they select a date\n Then it is applied to the input\n\n @landmine\n Scenario: The clear text button in the date picker does not clear the date\n Due to an incompatibility between our shoelace version and the browser, the clear funtionality is not supported currently\n Given the input has prop \"field-type\" \"date\"\n And the user has entered a date\n When they click the calendar icon\n And click the 'clear' text button\n Then their selected date is not cleared\n\n @motivating\n Scenario: Phone number type inputs are supported\n Given the input has prop \"field-type\" with value \"tel\"\n When the user starts typing a phone number in the input\n Then it is formatted into the following form \"(XXX) XXX-XXXX\"\n When they pre-fix their phone number with a \"1\"\n Then it is formatted into the following form \"1 (XXX) XXX-XXXX\"\n\n @landmine\n Scenario: Telephone formatting is removed after 10 numbers\n Given a user using a phone number input field\n And they entered their 10 character phone number\n And it was not prefixed with a 1\n When they add another character\n Then the formatting is removed\n\n @landmine\n Scenario Outline: Input values are always recorded as strings in the form data\n Given the input has prop \"field-type\" with <value>\n And it has a \"field-name\"\n When the user inputs <formInput>\n And they register\n Then <formData> is recorded in the form data as a string\n Examples:\n | value | formInput | formData |\n | text | Hello there | Hello there |\n | date | 05/07/2021 | 2021-05-07 |\n | tel | (250) 234-9877 | (250) 234-9877 |\n\n @minutia\n Scenario Outline: The input field component fails fast if a field name isn't provided\n Given the input <mayHave> prop \"field-name\"\n And it <mayHavePropValue>\n When a user views the input\n Then an alert with an error message is displayed in place of the input\n And it has a details section\n When \"More details\" is clicked\n Then the following information is displayed\n | information |\n | component being used |\n | missing attribute(s) |\n Examples:\n | mayBeAnAttribute | mayHavePropValue |\n | doesn't have | N/A |\n | has | \"\" |\n | has | |";
10987
11186
 
10988
11187
  const InputField_stories = {
10989
11188
  title: "Components/Input Field",
10990
11189
  parameters: {
10991
- scenario: scenario$k,
11190
+ scenario: scenario$l,
10992
11191
  },
10993
11192
  };
10994
- const defaultProps$c = {
11193
+ const defaultProps$e = {
10995
11194
  states: {
10996
11195
  registrationFormState: {
10997
11196
  validationErrors: {},
@@ -11028,21 +11227,21 @@ const defaultRegisterProps$1 = {
11028
11227
  invalidEmailErrorMessage: "Must be a valid email address",
11029
11228
  },
11030
11229
  };
11031
- const Default$e = () => index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c));
11032
- const CustomLabel$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: { ...defaultProps$c.content, fieldLabel: "My Label" } })));
11033
- const Error$6 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { states: {
11034
- ...defaultProps$c.states,
11230
+ const Default$h = () => index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$e));
11231
+ const CustomLabel$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$e, { content: { ...defaultProps$e.content, fieldLabel: "My Label" } })));
11232
+ const Error$7 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$e, { states: {
11233
+ ...defaultProps$e.states,
11035
11234
  registrationFormState: {
11036
11235
  validationErrors: {
11037
11236
  field: "Cannot be empty",
11038
11237
  },
11039
11238
  },
11040
11239
  } })));
11041
- const CustomError$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
11042
- ...defaultProps$c.content,
11240
+ const CustomError$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$e, { content: {
11241
+ ...defaultProps$e.content,
11043
11242
  errorMessage: "A value must be entered to continue",
11044
11243
  }, states: {
11045
- ...defaultProps$c.states,
11244
+ ...defaultProps$e.states,
11046
11245
  registrationFormState: {
11047
11246
  validationErrors: {
11048
11247
  field: "Cannot be empty",
@@ -11050,27 +11249,27 @@ const CustomError$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assi
11050
11249
  },
11051
11250
  } })));
11052
11251
  const DateType = () => {
11053
- return (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
11054
- ...defaultProps$c.content,
11252
+ return (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$e, { content: {
11253
+ ...defaultProps$e.content,
11055
11254
  fieldLabel: "Date",
11056
11255
  fieldType: "date",
11057
11256
  } })));
11058
11257
  };
11059
11258
  const TelType = () => {
11060
- return (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
11061
- ...defaultProps$c.content,
11259
+ return (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$e, { content: {
11260
+ ...defaultProps$e.content,
11062
11261
  fieldLabel: "Phone Number",
11063
11262
  fieldType: "tel",
11064
11263
  } })));
11065
11264
  };
11066
11265
  const RegistrationField = () => (index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultRegisterProps$1, { content: {
11067
11266
  ...defaultRegisterProps$1.content,
11068
- formData: index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c)),
11267
+ formData: index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$e)),
11069
11268
  } })));
11070
11269
  const RegistrationFieldCustomLabel = () => (index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultRegisterProps$1, { content: {
11071
11270
  ...defaultRegisterProps$1.content,
11072
- formData: (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
11073
- ...defaultProps$c.content,
11271
+ formData: (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$e, { content: {
11272
+ ...defaultProps$e.content,
11074
11273
  fieldLabel: "Data",
11075
11274
  } }))),
11076
11275
  } })));
@@ -11078,9 +11277,9 @@ const RegistrationFieldCustomLabel = () => (index.h(ShadowViewAddon.PortalRegist
11078
11277
  const InputField = /*#__PURE__*/Object.freeze({
11079
11278
  __proto__: null,
11080
11279
  'default': InputField_stories,
11081
- Default: Default$e,
11280
+ Default: Default$h,
11082
11281
  CustomLabel: CustomLabel$2,
11083
- Error: Error$6,
11282
+ Error: Error$7,
11084
11283
  CustomError: CustomError$2,
11085
11284
  DateType: DateType,
11086
11285
  TelType: TelType,
@@ -11091,7 +11290,7 @@ const InputField = /*#__PURE__*/Object.freeze({
11091
11290
  const UseInputField_stories = {
11092
11291
  title: "Hooks / useInputField",
11093
11292
  parameters: {
11094
- scenario: scenario$k,
11293
+ scenario: scenario$l,
11095
11294
  },
11096
11295
  };
11097
11296
  function setupGraphQL$b() {
@@ -11173,12 +11372,12 @@ const UseInputField = /*#__PURE__*/Object.freeze({
11173
11372
  MissingName: MissingName$2
11174
11373
  });
11175
11374
 
11176
- const scenario$l = "@author:derek\n@owner:derek\nFeature: Reward Exchange List\n\n The Reward Exchange List gives end users the power to exchange their rewards for other rewards.\n It populates a list from the reward exchange rules set up on a given tenant.\n\n Background:\n Given a tenant with reward exchange rules\n\n @motivating\n @ui\n Scenario: The empty state is shown if there are no visible exchanges\n Given a user with no visible exchanges\n When they view the reward exchange\n Then no exchange options are displayed\n And they see an image of a present\n And \"Redeem Rewards\" in bold\n And \"Use your points to redeem rewards once they become available\" below the bolded text\n And the pagination buttons are disabled\n\n @minutia\n @ui\n Scenario: A custom empty state can be provided\n Given a user with no visible exchanges\n And a custom empty state has been supplied in the \"empty\" slot\n When they view the reward exchange\n Then they see the custom empty state\n\n @motivating\n @ui\n Scenario: A Loading Skeleton is displayed when the reward exchange rules are loading\n Given a user\n When they load the reward exchange list\n Then they see a loading Skeleton\n And it has 8 skeleton cards\n When the reward exchange rules have loaded\n Then the skeleton is replaced with reward exchange options\n\n @motivating\n Scenario: An error banner appears when the reward exchange list fails to load\n Given a user trying to view the reward exchange list\n But it fails to load\n Then an error banner is displayed\n And it displays \"Unable to load reward exchange list. Please try again\"\n\n @motivating\n @ui\n Scenario: The exchange progress bar progresses through the exchange process\n Given a user who is eligible for the tenants reward exchange rules\n When they view the reward exchange list\n Then the process bar displays the following elements\n | elements |\n | Step 1 `Rewards` title in black |\n | Step 1 circle with green outline, white fill and number 1 in green |\n | Step 2 `Select` title in grey |\n | Step 2 circle with grey fill and number 2 in white |\n | Step 3 `Confirm` title in grey |\n | Step 3 circle with grey fill and number 3 in white |\n | lines between all steps are greyed out |\n When they continue to the selection page\n Then the progress bar displays the following elements\n | elements |\n | Step 1 `Rewards` title in black |\n | Step 1 circle with white checkmark and green fill |\n | Step 2 `Select` title in black |\n | Step 2 circle with green outline, white fill and number 2 in green |\n | Step 3 `Confirm` title in grey |\n | Step 3 circle with grey fill and number 3 in white |\n | Green line between step 1 and 2 |\n | Grey line between step 2 and 3 |\n When they continue to the confirmation page\n Then the progress bar displays the following elements\n | elements |\n | Step 1 `Rewards` title in black |\n | Step 1 circle with white checkmark and green fill |\n | Step 2 `Select` title in black |\n | Step 2 circle with white checkmark and green fill |\n | Step 3 `Confirm` title in black |\n | Step 3 circle with green outline, white fill and number 3 in green |\n | Green line between all steps |\n When they continue to the redemption page\n Then the progress bar displays the following elements\n | elements |\n | Step 1 `Rewards` title in black |\n | Step 1 circle with white checkmark and green fill |\n | Step 2 `Select` title in black |\n | Step 2 circle with white checkmark and green fill |\n | Step 3 `Confirm` title in black |\n | Step 3 circle with white checkmark and green fill |\n | Green line between all steps |\n\n @motivating\n Scenario: Users must choose a reward exchange option to continue to the selection page\n Given a user who is eligible for the tenants reward exchange rules\n When they view the reward exchange list\n Then the 'Continue' button is disabled\n When they select a reward exchange card\n Then the card is outlined in brand colour with a brand colour cirlcular check box icon in the top right\n And the continue button is no longer disabled\n When they click \"Continue\"\n Then they are brought to the selection page\n\n @motivating\n @ui\n Scenario: Reward exchange rule names and images are used in the reward exchange cards\n Given a tenant reward exchange rule\n And it has name \"My Visa Exchange Rule\"\n And it has an image\n When a user views the reward exchange list\n Then they see a exchange card with title \"My Visa Exchange Rule\"\n And the exchange image on the left hand side of the card\n\n @motivating\n Scenario Outline: Reward exchange source values are displayed on reward exchange cards\n Given a <type> reward exchange rule\n When a user views the reward exchange list\n Then they see <text> under the name on the exchange option cards\n And the pretty values are localized to a user locale\n Examples:\n | type | text |\n | FIXED_GLOBAL_REWARD | the exchange source pretty value |\n | STEPPED_FIXED_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\n | VARIABLE_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\n | VARIABLE_CREDIT_REWARD | the exchange source min pretty value to the source max pretty value |\n\n @motivating\n Scenario Outline: Reward exchange cards can display customized error messages\n Given a reward exchange rule\n And it has <availabilityPredicate>\n And the reward exchange list has prop \"not-available-error\" with <value>\n When the user views the reward exchange list\n Then the card for the reward exchange rule is disabled\n And <message> is displayed\n Examples:\n | availabilityPredicate | value | message |\n | 'champion' in user.segments ? \"NOT_CHAMPION\" : true | {unavailableReasonCode, select, NOT_CHAMPION {Sorry must be a champion!} other {unavailableReasonCode} } | Sorry must be a champion! |\n | user.customFields.purchaseCount < 10 ? \"MORE_PURCHASE\" : true | {unavailableReasonCode, select, MORE_PURCHASE {Complete 10 purchases to unlock} other {unavailableReasonCode} } | Complete 10 purchases to unlock |\n\n @motivating\n Scenario: Exchange options are disabled if they put a user over the W9 limit\n Given a user who is approaching their W9 limit\n And a reward exchange rule\n And its destination reward has a US taxable value that would put the user over their limit\n When they view the reward exchange list\n Then the reward exchange card is disabled\n And a \"US Tax Limit\" error message is displayed on to the right of a exclamation triangle icon\n And the text is orange\n And the icon is orange\n\n @motivating\n Scenario Outline: Exchange options are disabled if a users lacks enough credit to redeem\n Given a <type> reward exchange rule\n But the user lacks enough credit to exchange for it\n When they view the reward exchange list\n Then the reward exchange card is disabled\n And a <text> error message is displayed on to the right of a exclamation triangle icon\n And the text is orange\n And the icon is orange\n Examples:\n | type | text |\n | FIXED_GLOBAL_REWARD | {prettySourceValue} required |\n | STEPPED_FIXED_GLOBAL_REWARD | {prettySourceMinValue} required |\n | VARIABLE_GLOBAL_REWARD | {prettySourceMinValue} required |\n | VARIABLE_CREDIT_REWARD | {prettySourceMinValue} required |\n\n @motivating\n Scenario: Users can go back to the Rewards page from the Select page\n Given a user viewing the Select page\n Then they see a \"Cancel\" text button\n And a \"Continue to confirmation\" brand colour button in the bottom right corner\n When they click \"Cancel\"\n Then they return to the Rewards page\n\n @motivating\n Scenario: Users can go back to the Select Page from the Confirm page\n Given a user viewing the Confirm page\n Then they see a \"Back\" text button\n And a \"Redeem\" brand colour button in the bottom right corner\n When they click \"Back\"\n Then they return to the Select Page\n\n @motivating\n Scenario: Reward rules with visibility predicates that evaluates to false are not shown\n Given a tenant reward exchange rule with visibility predicates that evaluates to false\n When a user views the reward exchange list\n Then they do not see the card for that reward exchange rule\n\n @motivating\n Scenario Outline: Users can choose their reward option for variable rewards on the Select page\n Given a <type> exchange rule\n And it has the following fields\n | fields |\n | name |\n | description |\n | image |\n When a user views the reward exchange list\n And they progress to the Select page for this exchange\n Then they see the exchange rule image on the left hand side\n And on the right hand side they see the following in this order from top to bottom\n | elements |\n | exchange name |\n | exchange description |\n | select list with all exchange options using pretty values, destination reward above source reward |\n Examples:\n | type |\n | STEPPED_FIXED_GLOBAL_REWARD |\n | VARIABLE_GLOBAL_REWARD |\n | VARIABLE_CREDIT_REWARD |\n\n @motivating\n Scenario: Users who selected a fixed exchange rule see exchange information on the Select page\n Given a \"FIXED_GLOBAL_REWARD\" exchange rule\n And it has the following fields\n | fields |\n | name |\n | description |\n | image |\n When a user views the reward exchange list\n And they progress to the Select page for this exchange\n Then they see the exchange rule image on the left hand side\n And on the right hand side they see the following in this order from top to bottom\n | elements |\n | exchange name |\n | exchange source pretty value displayed in brand colour |\n | exchange description |\n\n @motivating\n Scenario Outline: Users selection variable rewards can only select rewards they are eligible to exchange for\n Given a <type> exchange rule\n When a user views the reward exchange list\n And they progress to the Select page for this exchange\n Then they see a drop down with all the reward exchange selections\n When they click on the drop down\n But they are not eligible for all of the exchanges options <dueToReason>\n Then the ineligble options are disabled\n And under the source value is <text>\n Examples:\n | type | dueToReason | text |\n | STEPPED_FIXED_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\n | VARIABLE_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\n | VARIABLE_CREDIT_REWARD | due to insufficent source value | {prettySourceValue} required |\n | STEPPED_FIXED_GLOBAL_REWARD | W9 | US Tax Limit |\n | VARIABLE_GLOBAL_REWARD | W9 | US Tax Limit |\n | VARIABLE_CREDIT_REWARD | W9 | US Tax Limit |\n\n @motivating\n Scenario Outline: The Confirm page allows users to view their exchange before committing\n Given a <type> exchange rule\n When a user views the reward exchange list\n And they select the exchange\n And they progress to Confirm page\n Then they see a row with title \"Reward\"\n And it contains the exchange name\n And it contains the exchange image\n And they <maySee> a row with title \"Reward Amount\"\n And it <mayContain> <amountTitle>\n And they see a row with title \"Cost to Redeem\"\n And it contains the source reward pretty value in bolded text\n Examples:\n | type | maySee | mayContain | amountTitle |\n | FIXED_GLOBAL_REWARD | don't | doesn't contain | N/A |\n | VARIABLE_GLOBAL_REWARD | see | contains | the pretty destination value |\n | STEPPED_FIXED_GLOBAL_REWARD | see | contains | the pretty destination value |\n | VARIABLE_CREDIT_REWARD | see | contains | the pretty destination value |\n\n @motivating\n Scenario: An error banner is displayed if an error occurs during redemeption\n Given a user has selected a reward to exchange\n And is on the confirmation page\n When they click \"Redeem\"\n But an error occurs\n Then an error banner appears\n And it contains details about the error\n And the reward exchange is not completed\n\n @motivating\n Scenario: Confetti is displayed when a reward exchange succeeds\n Given a user has selected a reward to exchange\n And they are on the confirmation page\n When they click \"Redeem\"\n And the exchange is successful\n Then they see confetti centered on the success page\n And they see text describing what they exchanged for their new reward\n And they see a \"Done\" brand colour button\n When they click \"Done\"\n Then they see the Rewards page\n\n @motivating\n Scenario: Fuel tank codes are shown when a reward exchange succeeds\n Given a user has selected to exchange for a fuel tank reward\n When they complete the reward exchange\n And are on the success page\n Then they see a textbox with their fuel tank code\n And a clipboard icon\n When they click the clipboard icon\n Then their fuel tank code is copied to their clipboard\n\n @motivating\n Scenario Outline: Users can exchange for any type of reward\n Given a <type> reward exchange rule for a <reward>\n And a user who has enough source credit to exchange for the reward\n When they go through the exchange flow\n And exchange for their reward\n Then their credit is exchanged for the <reward>\n Examples:\n | type | reward |\n | FIXED_GLOBAL_REWARD | gift card |\n | FIXED_GLOBAL_REWARD | fuel tank code |\n | FIXED_GLOBAL_REWARD | discount |\n | FIXED_GLOBAL_REWARD | credit reward |\n | STEPPED_FIXED_GLOBAL_REWARD | gift card |\n | STEPPED_FIXED_GLOBAL_REWARD | discount |\n | STEPPED_FIXED_GLOBAL_REWARD | credit reward |\n | VARIABLE_GLOBAL_REWARD | gift card |\n | VARIABLE_GLOBAL_REWARD | discount |\n | VARIABLE_GLOBAL_REWARD | credit reward |\n | VARIABLE_CREDIT_REWARD | credit reward |";
11375
+ const scenario$m = "@author:derek\n@owner:derek\nFeature: Reward Exchange List\n\n The Reward Exchange List gives end users the power to exchange their rewards for other rewards.\n It populates a list from the reward exchange rules set up on a given tenant.\n\n Background:\n Given a tenant with reward exchange rules\n\n @motivating\n @ui\n Scenario: The empty state is shown if there are no visible exchanges\n Given a user with no visible exchanges\n When they view the reward exchange\n Then no exchange options are displayed\n And they see an image of a present\n And \"Redeem Rewards\" in bold\n And \"Use your points to redeem rewards once they become available\" below the bolded text\n And the pagination buttons are disabled\n\n @minutia\n @ui\n Scenario: A custom empty state can be provided\n Given a user with no visible exchanges\n And a custom empty state has been supplied in the \"empty\" slot\n When they view the reward exchange\n Then they see the custom empty state\n\n @motivating\n @ui\n Scenario: A Loading Skeleton is displayed when the reward exchange rules are loading\n Given a user\n When they load the reward exchange list\n Then they see a loading Skeleton\n And it has 8 skeleton cards\n When the reward exchange rules have loaded\n Then the skeleton is replaced with reward exchange options\n\n @motivating\n Scenario: An error banner appears when the reward exchange list fails to load\n Given a user trying to view the reward exchange list\n But it fails to load\n Then an error banner is displayed\n And it displays \"Unable to load reward exchange list. Please try again\"\n\n @motivating\n @ui\n Scenario: The exchange progress bar progresses through the exchange process\n Given a user who is eligible for the tenants reward exchange rules\n When they view the reward exchange list\n Then the process bar displays the following elements\n | elements |\n | Step 1 `Rewards` title in black |\n | Step 1 circle with green outline, white fill and number 1 in green |\n | Step 2 `Select` title in grey |\n | Step 2 circle with grey fill and number 2 in white |\n | Step 3 `Confirm` title in grey |\n | Step 3 circle with grey fill and number 3 in white |\n | lines between all steps are greyed out |\n When they continue to the selection page\n Then the progress bar displays the following elements\n | elements |\n | Step 1 `Rewards` title in black |\n | Step 1 circle with white checkmark and green fill |\n | Step 2 `Select` title in black |\n | Step 2 circle with green outline, white fill and number 2 in green |\n | Step 3 `Confirm` title in grey |\n | Step 3 circle with grey fill and number 3 in white |\n | Green line between step 1 and 2 |\n | Grey line between step 2 and 3 |\n When they continue to the confirmation page\n Then the progress bar displays the following elements\n | elements |\n | Step 1 `Rewards` title in black |\n | Step 1 circle with white checkmark and green fill |\n | Step 2 `Select` title in black |\n | Step 2 circle with white checkmark and green fill |\n | Step 3 `Confirm` title in black |\n | Step 3 circle with green outline, white fill and number 3 in green |\n | Green line between all steps |\n When they continue to the redemption page\n Then the progress bar displays the following elements\n | elements |\n | Step 1 `Rewards` title in black |\n | Step 1 circle with white checkmark and green fill |\n | Step 2 `Select` title in black |\n | Step 2 circle with white checkmark and green fill |\n | Step 3 `Confirm` title in black |\n | Step 3 circle with white checkmark and green fill |\n | Green line between all steps |\n\n @motivating\n Scenario: Users must choose a reward exchange option to continue to the selection page\n Given a user who is eligible for the tenants reward exchange rules\n When they view the reward exchange list\n Then the 'Continue' button is disabled\n When they select a reward exchange card\n Then the card is outlined in brand colour with a brand colour cirlcular check box icon in the top right\n And the continue button is no longer disabled\n When they click \"Continue\"\n Then they are brought to the selection page\n\n @motivating\n @ui\n Scenario: Reward exchange rule names and images are used in the reward exchange cards\n Given a tenant reward exchange rule\n And it has name \"My Visa Exchange Rule\"\n And it has an image\n When a user views the reward exchange list\n Then they see a exchange card with title \"My Visa Exchange Rule\"\n And the exchange image on the left hand side of the card\n\n @motivating\n Scenario Outline: Reward exchange source values are displayed on reward exchange cards\n Given a <type> reward exchange rule\n When a user views the reward exchange list\n Then they see <text> under the name on the exchange option cards\n And the pretty values are localized to a user locale\n Examples:\n | type | text |\n | FIXED_GLOBAL_REWARD | the exchange source pretty value |\n | STEPPED_FIXED_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\n | VARIABLE_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\n | VARIABLE_CREDIT_REWARD | the exchange source min pretty value to the source max pretty value |\n\n @motivating\n Scenario Outline: Reward exchange cards can display customized error messages\n Given a reward exchange rule\n And it has <availabilityPredicate>\n And the reward exchange list has prop \"not-available-error\" with <value>\n When the user views the reward exchange list\n Then the card for the reward exchange rule is disabled\n And <message> is displayed\n Examples:\n | availabilityPredicate | value | message |\n | 'champion' in user.segments ? \"NOT_CHAMPION\" : true | {unavailableReasonCode, select, NOT_CHAMPION {Sorry must be a champion!} other {unavailableReasonCode} } | Sorry must be a champion! |\n | user.customFields.purchaseCount < 10 ? \"MORE_PURCHASE\" : true | {unavailableReasonCode, select, MORE_PURCHASE {Complete 10 purchases to unlock} other {unavailableReasonCode} } | Complete 10 purchases to unlock |\n\n @motivating\n Scenario: Exchange options are disabled if they put a user over the W9 limit\n Given a user who is approaching their W9 limit\n And a reward exchange rule\n And its destination reward has a US taxable value that would put the user over their limit\n When they view the reward exchange list\n Then the reward exchange card is disabled\n And a \"US Tax Limit\" error message is displayed on to the right of a exclamation triangle icon\n And the text is orange\n And the icon is orange\n\n @motivating\n Scenario Outline: Exchange options are disabled if a users lacks enough credit to redeem\n Given a <type> reward exchange rule\n But the user lacks enough credit to exchange for it\n When they view the reward exchange list\n Then the reward exchange card is disabled\n And a <text> error message is displayed on to the right of a exclamation triangle icon\n And the text is orange\n And the icon is orange\n Examples:\n | type | text |\n | FIXED_GLOBAL_REWARD | {prettySourceValue} required |\n | STEPPED_FIXED_GLOBAL_REWARD | {prettySourceMinValue} required |\n | VARIABLE_GLOBAL_REWARD | {prettySourceMinValue} required |\n | VARIABLE_CREDIT_REWARD | {prettySourceMinValue} required |\n\n @motivating\n Scenario: Users can go back to the Rewards page from the Select page\n Given a user viewing the Select page\n Then they see a \"Cancel\" text button\n And a \"Continue to confirmation\" brand colour button in the bottom right corner\n When they click \"Cancel\"\n Then they return to the Rewards page\n\n @motivating\n Scenario: Users can go back to the Select Page from the Confirm page\n Given a user viewing the Confirm page\n Then they see a \"Back\" text button\n And a \"Redeem\" brand colour button in the bottom right corner\n When they click \"Back\"\n Then they return to the Select Page\n\n @motivating\n Scenario: Reward rules with visibility predicates that evaluates to false are not shown\n Given a tenant reward exchange rule with visibility predicates that evaluates to false\n When a user views the reward exchange list\n Then they do not see the card for that reward exchange rule\n\n @motivating\n Scenario Outline: Users can choose their reward option for variable rewards on the Select page\n Given a <type> exchange rule\n And it has the following fields\n | fields |\n | name |\n | description |\n | image |\n When a user views the reward exchange list\n And they progress to the Select page for this exchange\n Then they see the exchange rule image on the left hand side\n And on the right hand side they see the following in this order from top to bottom\n | elements |\n | exchange name |\n | exchange description |\n | select list with all exchange options using pretty values, destination reward above source reward |\n Examples:\n | type |\n | STEPPED_FIXED_GLOBAL_REWARD |\n | VARIABLE_GLOBAL_REWARD |\n | VARIABLE_CREDIT_REWARD |\n\n @motivating\n Scenario: Users who selected a fixed exchange rule see exchange information on the Select page\n Given a \"FIXED_GLOBAL_REWARD\" exchange rule\n And it has the following fields\n | fields |\n | name |\n | description |\n | image |\n When a user views the reward exchange list\n And they progress to the Select page for this exchange\n Then they see the exchange rule image on the left hand side\n And on the right hand side they see the following in this order from top to bottom\n | elements |\n | exchange name |\n | exchange source pretty value displayed in brand colour |\n | exchange description |\n\n @motivating\n Scenario Outline: Users selection variable rewards can only select rewards they are eligible to exchange for\n Given a <type> exchange rule\n When a user views the reward exchange list\n And they progress to the Select page for this exchange\n Then they see a drop down with all the reward exchange selections\n When they click on the drop down\n But they are not eligible for all of the exchanges options <dueToReason>\n Then the ineligble options are disabled\n And under the source value is <text>\n Examples:\n | type | dueToReason | text |\n | STEPPED_FIXED_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\n | VARIABLE_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\n | VARIABLE_CREDIT_REWARD | due to insufficent source value | {prettySourceValue} required |\n | STEPPED_FIXED_GLOBAL_REWARD | W9 | US Tax Limit |\n | VARIABLE_GLOBAL_REWARD | W9 | US Tax Limit |\n | VARIABLE_CREDIT_REWARD | W9 | US Tax Limit |\n\n @motivating\n Scenario Outline: The Confirm page allows users to view their exchange before committing\n Given a <type> exchange rule\n When a user views the reward exchange list\n And they select the exchange\n And they progress to Confirm page\n Then they see a row with title \"Reward\"\n And it contains the exchange name\n And it contains the exchange image\n And they <maySee> a row with title \"Reward Amount\"\n And it <mayContain> <amountTitle>\n And they see a row with title \"Cost to Redeem\"\n And it contains the source reward pretty value in bolded text\n Examples:\n | type | maySee | mayContain | amountTitle |\n | FIXED_GLOBAL_REWARD | don't | doesn't contain | N/A |\n | VARIABLE_GLOBAL_REWARD | see | contains | the pretty destination value |\n | STEPPED_FIXED_GLOBAL_REWARD | see | contains | the pretty destination value |\n | VARIABLE_CREDIT_REWARD | see | contains | the pretty destination value |\n\n @motivating\n Scenario: An error banner is displayed if an error occurs during redemeption\n Given a user has selected a reward to exchange\n And is on the confirmation page\n When they click \"Redeem\"\n But an error occurs\n Then an error banner appears\n And it contains details about the error\n And the reward exchange is not completed\n\n @motivating\n Scenario: Confetti is displayed when a reward exchange succeeds\n Given a user has selected a reward to exchange\n And they are on the confirmation page\n When they click \"Redeem\"\n And the exchange is successful\n Then they see confetti centered on the success page\n And they see text describing what they exchanged for their new reward\n And they see a \"Done\" brand colour button\n When they click \"Done\"\n Then they see the Rewards page\n\n @motivating\n Scenario: Fuel tank codes are shown when a reward exchange succeeds\n Given a user has selected to exchange for a fuel tank reward\n When they complete the reward exchange\n And are on the success page\n Then they see a textbox with their fuel tank code\n And a clipboard icon\n When they click the clipboard icon\n Then their fuel tank code is copied to their clipboard\n\n @motivating\n Scenario Outline: Users can exchange for any type of reward\n Given a <type> reward exchange rule for a <reward>\n And a user who has enough source credit to exchange for the reward\n When they go through the exchange flow\n And exchange for their reward\n Then their credit is exchanged for the <reward>\n Examples:\n | type | reward |\n | FIXED_GLOBAL_REWARD | gift card |\n | FIXED_GLOBAL_REWARD | fuel tank code |\n | FIXED_GLOBAL_REWARD | discount |\n | FIXED_GLOBAL_REWARD | credit reward |\n | STEPPED_FIXED_GLOBAL_REWARD | gift card |\n | STEPPED_FIXED_GLOBAL_REWARD | discount |\n | STEPPED_FIXED_GLOBAL_REWARD | credit reward |\n | VARIABLE_GLOBAL_REWARD | gift card |\n | VARIABLE_GLOBAL_REWARD | discount |\n | VARIABLE_GLOBAL_REWARD | credit reward |\n | VARIABLE_CREDIT_REWARD | credit reward |";
11177
11376
 
11178
11377
  const RewardExchangeList_stories = {
11179
11378
  title: "Components/Reward Exchange List",
11180
11379
  parameters: {
11181
- scenario: scenario$l,
11380
+ scenario: scenario$m,
11182
11381
  },
11183
11382
  };
11184
11383
  const StoryBase = (props) => () => {
@@ -11200,7 +11399,7 @@ const RedemptionError = StoryBase(ShadowViewAddon.redemptionError);
11200
11399
  const QueryError = StoryBase(ShadowViewAddon.queryError);
11201
11400
  const SuccessPromo = StoryBase(ShadowViewAddon.success);
11202
11401
  const SuccessVariableAndStepped = StoryBase(ShadowViewAddon.successVariable);
11203
- const Loading$3 = StoryBase(ShadowViewAddon.loading);
11402
+ const Loading$4 = StoryBase(ShadowViewAddon.loading);
11204
11403
  const Empty$2 = StoryBase(ShadowViewAddon.empty);
11205
11404
 
11206
11405
  const RewardExchangeList = /*#__PURE__*/Object.freeze({
@@ -11222,16 +11421,16 @@ const RewardExchangeList = /*#__PURE__*/Object.freeze({
11222
11421
  QueryError: QueryError,
11223
11422
  SuccessPromo: SuccessPromo,
11224
11423
  SuccessVariableAndStepped: SuccessVariableAndStepped,
11225
- Loading: Loading$3,
11424
+ Loading: Loading$4,
11226
11425
  Empty: Empty$2
11227
11426
  });
11228
11427
 
11229
- const scenario$m = "@author:derek\n@owner:derek\nFeature: Program Explainer\n\n @motivating\n @ui\n Scenario Outline: The program explainer wraps program explainer steps and aligns them\n Given a program explainer component\n And it has <number> program explainer steps as components\n When a user views the program explainer\n Then they see <number> steps aligned horizontally\n And they have equal height/width\n And equal padding in between\n When they are viewed on a screen smaller than 500px\n Then the steps stack vertically with equal padding in between\n And they have equal width\n But height may vary\n Examples:\n | number |\n | 2 |\n | 3 |\n | 4 |\n\n @motivating\n @ui\n Scenario: The program explainer displays a section header\n Given a program explainer step with props\n | prop | value |\n | header | My Header |\n And it has program explainer steps as children\n When a user views the program explainer\n Then they see \"My Header\" centered above the explainer steps\n\n @motivating\n @ui\n Scenario: Colours are customizable\n Given a program explainer with props\n | prop | value |\n | text-color | purple |\n | background-color | grey |\n When a user views the program explainer\n Then the header is purple\n And the background between steos is grey\n";
11428
+ const scenario$n = "@author:derek\n@owner:derek\nFeature: Program Explainer\n\n @motivating\n @ui\n Scenario Outline: The program explainer wraps program explainer steps and aligns them\n Given a program explainer component\n And it has <number> program explainer steps as components\n When a user views the program explainer\n Then they see <number> steps aligned horizontally\n And they have equal height/width\n And equal padding in between\n When they are viewed on a screen smaller than 500px\n Then the steps stack vertically with equal padding in between\n And they have equal width\n But height may vary\n Examples:\n | number |\n | 2 |\n | 3 |\n | 4 |\n\n @motivating\n @ui\n Scenario: The program explainer displays a section header\n Given a program explainer step with props\n | prop | value |\n | header | My Header |\n And it has program explainer steps as children\n When a user views the program explainer\n Then they see \"My Header\" centered above the explainer steps\n\n @motivating\n @ui\n Scenario: Colours are customizable\n Given a program explainer with props\n | prop | value |\n | text-color | purple |\n | background-color | grey |\n When a user views the program explainer\n Then the header is purple\n And the background between steos is grey\n";
11230
11429
 
11231
11430
  const ProgramExplainer_stories = {
11232
11431
  title: "Components/Program Explainer",
11233
11432
  parameters: {
11234
- scenario: scenario$m,
11433
+ scenario: scenario$n,
11235
11434
  },
11236
11435
  };
11237
11436
  const OneStep = () => {
@@ -11287,12 +11486,12 @@ const ProgramExplainer = /*#__PURE__*/Object.freeze({
11287
11486
  ProgramExplainerGeneric: ProgramExplainerGeneric
11288
11487
  });
11289
11488
 
11290
- const scenario$n = "@author:derek\n@owner:derek\nFeature: Program Explainer Step\n\n @motivating\n @ui\n Scenario: The program explainer step displays a icon, header and description\n Given a program explainer step with props\n | prop | value |\n | header | My Header |\n | description | My program explainer description |\n | icon | person-plus-fill |\n When a user views the explainer step\n Then they see an person icon with a + in the top left hand corner\n And the icon is weight 300 brand colour\n And below they see \"My Header\" in large bold font\n And below they see \"My program explainer description\" in medium font\n And the step background colour is weight 50 brand colour\n\n @motivating\n @ui\n Scenario: The program explainer can display an image in place of an icon\n Given a program explainer\n And it has an \"image-url\" prop with a value of a valid url to an image\n When a user views the explainer step\n Then the image is displayed in place of an incon in the top left hand corner\n\n @motivating\n @ui\n Scenario: Colours are customizable\n Given a program explainer step with props\n | prop | value |\n | text-color | purple |\n | background-color | grey |\n When a user views the explainer step\n Then they see the step background is grey\n And the header text is purple\n And the description text is purple\n";
11489
+ const scenario$o = "@author:derek\n@owner:derek\nFeature: Program Explainer Step\n\n @motivating\n @ui\n Scenario: The program explainer step displays a icon, header and description\n Given a program explainer step with props\n | prop | value |\n | header | My Header |\n | description | My program explainer description |\n | icon | person-plus-fill |\n When a user views the explainer step\n Then they see an person icon with a + in the top left hand corner\n And the icon is weight 300 brand colour\n And below they see \"My Header\" in large bold font\n And below they see \"My program explainer description\" in medium font\n And the step background colour is weight 50 brand colour\n\n @motivating\n @ui\n Scenario: The program explainer can display an image in place of an icon\n Given a program explainer\n And it has an \"image-url\" prop with a value of a valid url to an image\n When a user views the explainer step\n Then the image is displayed in place of an incon in the top left hand corner\n\n @motivating\n @ui\n Scenario: Colours are customizable\n Given a program explainer step with props\n | prop | value |\n | text-color | purple |\n | background-color | grey |\n When a user views the explainer step\n Then they see the step background is grey\n And the header text is purple\n And the description text is purple\n";
11291
11490
 
11292
11491
  const ProgramExplainerStep_stories = {
11293
11492
  title: "Components/Program Explainer Step",
11294
11493
  parameters: {
11295
- scenario: scenario$n,
11494
+ scenario: scenario$o,
11296
11495
  },
11297
11496
  };
11298
11497
  const ProgramExplainerStep = () => {
@@ -11309,12 +11508,12 @@ const ProgramExplainerStep$1 = /*#__PURE__*/Object.freeze({
11309
11508
  ProgramExplainerStepCustom: ProgramExplainerStepCustom
11310
11509
  });
11311
11510
 
11312
- const scenario$o = "@author:derek\n@owner:logan\nFeature: Brand Configuration\n\n\t@motivating\n\tScenario: The brand components creates a colour pallet from a brand colour and applies it to children\n\t\tGiven a brand component with \"brand-color\" \"#4225c4\"\n\t\tAnd it is wrapping several mint components\n\t\tWhen a user views the children components\n\t\tThen the following css variables are set\n\t\t\t| variable | value |\n\t\t\t| --sl-color-primary-50 | hsla(251, 68%, 95%, 1) |\n\t\t\t| --sl-color-primary-100 | hsla(251, 68%, 86%, 1) |\n\t\t\t| --sl-color-primary-200 | hsla(251, 68%, 76%, 1) |\n\t\t\t| --sl-color-primary-300 | hsla(251, 68%, 66%, 1) |\n\t\t\t| --sl-color-primary-400 | hsla(251, 68%, 56%, 1) |\n\t\t\t| --sl-color-primary-500 | hsla(251, 68%, 46%, 1) |\n\t\t\t| --sl-color-primary-600 | hsla(251, 68%, 39%, 1) |\n\t\t\t| --sl-color-primary-700 | hsla(251, 68%, 32%, 1) |\n\t\t\t| --sl-color-primary-800 | hsla(251, 68%, 25%, 1) |\n\t\t\t| --sl-color-primary-900 | hsla(251, 68%, 18%, 1) |\n\t\t\t| --sl-color-primary-950 | hsla(251, 68%, 15%, 1) |\n\t\t\t| --sl-focus-ring-color-primary | var(--sl-color-primary-100) |\n\t\t\t| --sl-input-border-color-focus | var(--sl-color-primary-500) |\n\t\t\t| --sl-color-primary-hue | var(--sl-color-primary-500) |\n\t\tAnd they are applied to the children components\n\t\tBut they are not applied to any components outside of the brand component\n\t\tAnd they are not applied to any vanilla components\n\n\t@minutia\n\tScenario Outline: The brand colour can be hex, HSL or rgb\n\t\tGiven a brand component with \"brand-color\" <colour>\n\t\tAnd it is wrapping several mint components\n\t\tWhen a user views the children components\n\t\tThen the colour is used to create a brand palete\n\t\tAnd it is applied to the children components\n\t\tExamples:\n\t\t\t| colour |\n\t\t\t| #4225c4 |\n\t\t\t| rgb(66, 37, 196) |\n\t\t\t| hsl(251, 68%, 46%) |\n\t\t\t| hsla(251, 68%, 46%, 1) |\n\n\t@motivating\n\tScenario: The brand component can apply a brand font to children components\n\t\tGiven a brand component with \"brand-font\" \"Nunito Sans\"\n\t\tAnd it is wrapping several mint components\n\t\tWhen a user views the children components\n\t\tThen the following css variables are set\n\t\t\t| variable | value |\n\t\t\t| --sl-font-sans | \"Nunito Sans\", arial |\n\t\t\t| --sl-input-font-family | \"Nunito Sans\", arial |\n\t\t\t| --sl-tooltip-font-family | \"Nunito Sans\", arial |\n\t\t\t| font-family | \"Nunito Sans\", arial |\n\t\tAnd they are applied to the children components\n\t\tAnd the children component's text is \"Nunito Sans\"";
11511
+ const scenario$p = "@author:derek\n@owner:logan\nFeature: Brand Configuration\n\n\t@motivating\n\tScenario: The brand components creates a colour pallet from a brand colour and applies it to children\n\t\tGiven a brand component with \"brand-color\" \"#4225c4\"\n\t\tAnd it is wrapping several mint components\n\t\tWhen a user views the children components\n\t\tThen the following css variables are set\n\t\t\t| variable | value |\n\t\t\t| --sl-color-primary-50 | hsla(251, 68%, 95%, 1) |\n\t\t\t| --sl-color-primary-100 | hsla(251, 68%, 86%, 1) |\n\t\t\t| --sl-color-primary-200 | hsla(251, 68%, 76%, 1) |\n\t\t\t| --sl-color-primary-300 | hsla(251, 68%, 66%, 1) |\n\t\t\t| --sl-color-primary-400 | hsla(251, 68%, 56%, 1) |\n\t\t\t| --sl-color-primary-500 | hsla(251, 68%, 46%, 1) |\n\t\t\t| --sl-color-primary-600 | hsla(251, 68%, 39%, 1) |\n\t\t\t| --sl-color-primary-700 | hsla(251, 68%, 32%, 1) |\n\t\t\t| --sl-color-primary-800 | hsla(251, 68%, 25%, 1) |\n\t\t\t| --sl-color-primary-900 | hsla(251, 68%, 18%, 1) |\n\t\t\t| --sl-color-primary-950 | hsla(251, 68%, 15%, 1) |\n\t\t\t| --sl-focus-ring-color-primary | var(--sl-color-primary-100) |\n\t\t\t| --sl-input-border-color-focus | var(--sl-color-primary-500) |\n\t\t\t| --sl-color-primary-hue | var(--sl-color-primary-500) |\n\t\tAnd they are applied to the children components\n\t\tBut they are not applied to any components outside of the brand component\n\t\tAnd they are not applied to any vanilla components\n\n\t@minutia\n\tScenario Outline: The brand colour can be hex, HSL or rgb\n\t\tGiven a brand component with \"brand-color\" <colour>\n\t\tAnd it is wrapping several mint components\n\t\tWhen a user views the children components\n\t\tThen the colour is used to create a brand palete\n\t\tAnd it is applied to the children components\n\t\tExamples:\n\t\t\t| colour |\n\t\t\t| #4225c4 |\n\t\t\t| rgb(66, 37, 196) |\n\t\t\t| hsl(251, 68%, 46%) |\n\t\t\t| hsla(251, 68%, 46%, 1) |\n\n\t@motivating\n\tScenario: The brand component can apply a brand font to children components\n\t\tGiven a brand component with \"brand-font\" \"Nunito Sans\"\n\t\tAnd it is wrapping several mint components\n\t\tWhen a user views the children components\n\t\tThen the following css variables are set\n\t\t\t| variable | value |\n\t\t\t| --sl-font-sans | \"Nunito Sans\", arial |\n\t\t\t| --sl-input-font-family | \"Nunito Sans\", arial |\n\t\t\t| --sl-tooltip-font-family | \"Nunito Sans\", arial |\n\t\t\t| font-family | \"Nunito Sans\", arial |\n\t\tAnd they are applied to the children components\n\t\tAnd the children component's text is \"Nunito Sans\"";
11313
11512
 
11314
11513
  const SqmBrand_stories = {
11315
11514
  title: "Components/Brand",
11316
11515
  parameters: {
11317
- scenario: scenario$o,
11516
+ scenario: scenario$p,
11318
11517
  },
11319
11518
  };
11320
11519
  const SampleComponents = () => (index.h("div", { style: { padding: "10px", border: "5px solid #EEE" } },
@@ -11415,12 +11614,12 @@ const BrandStories = /*#__PURE__*/Object.freeze({
11415
11614
  Fonts: Fonts
11416
11615
  });
11417
11616
 
11418
- const scenario$p = "@author:kutay\n@owner:kutay\nFeature: Card Feed\n\n\tThe Card Feed component displays Task Card components in a grid layout.\n\n\tBackground: A user on the portal is viewing the widget\n\t\tGiven a user viewing the Card Feed component\n\n\t@motivating\n\tScenario: The Card Feed component displays Task Cards given as children slots\n\t\tGiven a Card Feed component\n\t\tAnd it is wrapping a number of task cards as children\n\t\tWhen the user views the Card Feed\n\t\tThen the task cards are displayed in a masonry layout\n\t\tWhen the card feed with grows or shrinks in width\n\t\tThen the number of columns adjust to the given width\n\n\t@motivating\n\t@ui\n\tScenario Outline: The Card Feed component can have a maximum width\n\t\tGiven a Card Feed component\n\t\tAnd it is wrapping a number of task cards as children\n\t\tAnd has prop \"width\" has a provided <value>\n\t\tThen the task cards are displayed in a masonry layout\n\t\tWhen the card feed with grows or shrinks in width\n\t\tThen the number of columns adjust to the given width\n\t\tAnd the task cards do not exceed <width>\n\t\tExamples:\n\t\t\t| value | width |\n\t\t\t| | 347px |\n\t\t\t| 200 | 200px |\n\t\t\t| 400 | 400px |\n\n\t@motivating\n\t@ui\n\tScenario Outline: The Card Feed component gap between task cards can be customized\n\t\tGiven a Card Feed component\n\t\tAnd it is wrapping a number of task cards as children\n\t\tAnd has prop \"gap\" has a provided <value>\n\t\tThen the task cards are displayed in a masonry layout\n\t\tAnd the gap between the columns is the <gap>\n\t\tExamples:\n\t\t\t| value | gap |\n\t\t\t| | 24px |\n\t\t\t| 20 | 20px |\n\t\t\t| 50 | 50px |";
11617
+ const scenario$q = "@author:kutay\n@owner:kutay\nFeature: Card Feed\n\n\tThe Card Feed component displays Task Card components in a grid layout.\n\n\tBackground: A user on the portal is viewing the widget\n\t\tGiven a user viewing the Card Feed component\n\n\t@motivating\n\tScenario: The Card Feed component displays Task Cards given as children slots\n\t\tGiven a Card Feed component\n\t\tAnd it is wrapping a number of task cards as children\n\t\tWhen the user views the Card Feed\n\t\tThen the task cards are displayed in a masonry layout\n\t\tWhen the card feed with grows or shrinks in width\n\t\tThen the number of columns adjust to the given width\n\n\t@motivating\n\t@ui\n\tScenario Outline: The Card Feed component can have a maximum width\n\t\tGiven a Card Feed component\n\t\tAnd it is wrapping a number of task cards as children\n\t\tAnd has prop \"width\" has a provided <value>\n\t\tThen the task cards are displayed in a masonry layout\n\t\tWhen the card feed with grows or shrinks in width\n\t\tThen the number of columns adjust to the given width\n\t\tAnd the task cards do not exceed <width>\n\t\tExamples:\n\t\t\t| value | width |\n\t\t\t| | 347px |\n\t\t\t| 200 | 200px |\n\t\t\t| 400 | 400px |\n\n\t@motivating\n\t@ui\n\tScenario Outline: The Card Feed component gap between task cards can be customized\n\t\tGiven a Card Feed component\n\t\tAnd it is wrapping a number of task cards as children\n\t\tAnd has prop \"gap\" has a provided <value>\n\t\tThen the task cards are displayed in a masonry layout\n\t\tAnd the gap between the columns is the <gap>\n\t\tExamples:\n\t\t\t| value | gap |\n\t\t\t| | 24px |\n\t\t\t| 20 | 20px |\n\t\t\t| 50 | 50px |";
11419
11618
 
11420
11619
  const CardFeed_stories = {
11421
11620
  title: "Components/Card Feed",
11422
11621
  parameters: {
11423
- scenario: scenario$p,
11622
+ scenario: scenario$q,
11424
11623
  },
11425
11624
  };
11426
11625
  const oneAction$1 = {
@@ -11657,12 +11856,12 @@ const CardFeed = /*#__PURE__*/Object.freeze({
11657
11856
  CardFeedGeneric: CardFeedGeneric
11658
11857
  });
11659
11858
 
11660
- const scenario$q = "@author:kutay\n@owner:noah\nFeature: Portal Container\n\n\t@motivating\n\t@ui\n\tScenario: Horizontal content overflows, but does not stretch\n\t\tGiven there are two element in the container\n\t\tAnd the first is small\n\t\tAnd the second would stretch the container wider than it's parent\n\t\tThen the second one is clipped\n\t\tAnd the first one doesn't stretch\n\n\t@landmine\n\t@ui\n\tScenario: `max-width` is required for displaying as a row\n\t\tGiven I have `direction` to \"row\"\n\t\tAnd I have not set a `max-width`\n\t\tThen it displays as a column\n\n\t@motivating\n\t@ui\n\tScenario Outline: Content padding can be customized\n\t\tGiven prop \"padding\" has <value>\n\t\tThen <padding> is applied to content\n\n\t\tExamples:\n\t\t\t| value | padding |\n\t\t\t| none | no padding |\n\t\t\t| xxx-small | xxx-small |\n\t\t\t| xx-small | xx-small |\n\t\t\t| x-small | x-small |\n\t\t\t| small | small |\n\t\t\t| medium | medium |\n\t\t\t| large | large |\n\t\t\t| x-large | x-large |\n\t\t\t| xx-large | xx-large |\n\t\t\t| xxx-large | xxx-large |\n\t\t\t| xxxx-large | xxxx-large |\n\t\t\t| N/A | no padding |\n\n\n\t@motivating\n\t@ui\n\tScenario Outline: Gap between content elements can be customized\n\t\tGiven prop \"gap\" has <value>\n\t\tThen <gap> is applied to elements between content\n\n\t\tExamples:\n\t\t\t| value | gap |\n\t\t\t| none | no padding |\n\t\t\t| xxx-small | xxx-small |\n\t\t\t| xx-small | xx-small |\n\t\t\t| x-small | x-small |\n\t\t\t| small | small |\n\t\t\t| medium | medium |\n\t\t\t| large | large |\n\t\t\t| x-large | x-large |\n\t\t\t| xx-large | xx-large |\n\t\t\t| xxx-large | xxx-large |\n\t\t\t| xxxx-large | xxxx-large |\n\t\t\t| N/A | no padding |\n\n\t@minutia\n\t@ui\n\tScenario: Content can be center aligned in horizontal view\n\t\tGiven I have supplied the prop \"center\"\n\t\tThen the content is center aligned\n\n\t@minutia\n\t@ui\n\tScenario: Content in the last row can span full width with display in horizontal view\n\t\tGiven I have `display` to \"flex\"\n\t\tThen the content is full width on the last row\n\n\t@motivating\n\t@ui\n\tScenario Outline: Content can be aligned along the x-axis\n\t\tGiven prop \"justify-content\" has <value>\n\t\tThen content within the container is aligned <alignment>\n\n\t\tExamples:\n\t\t\t| value | alignment |\n\t\t\t| none | no alignment |\n\t\t\t| start | to the start |\n\t\t\t| center | to the center |\n\t\t\t| end | to the end |\n\t\t\t| space-between | with space between |\n\t\t\t| space-around | with space around |\n\t\t\t| space-evenly | with space evenly |\n\n\n\t@motivating\n\t@ui\n\tScenario Outline: Component background color can be customized\n\t\tGiven a user is viewing the Portal Container component\n\t\tThen the default value is \"#ffffff00\"\n\t\tWhen the prop \"background-color\" has <value>\n\t\tThen the background has color <backgroundColor>\n\t\tExamples:\n\t\t\t| value | backgroundColor |\n\t\t\t| empty (default value) | var(--sl-color-neutral-0) (#ffffff) |\n\t\t\t| aquamarine | #7fffd4 |\n";
11859
+ const scenario$r = "@author:kutay\n@owner:noah\nFeature: Portal Container\n\n\t@motivating\n\t@ui\n\tScenario: Horizontal content overflows, but does not stretch\n\t\tGiven there are two element in the container\n\t\tAnd the first is small\n\t\tAnd the second would stretch the container wider than it's parent\n\t\tThen the second one is clipped\n\t\tAnd the first one doesn't stretch\n\n\t@landmine\n\t@ui\n\tScenario: `max-width` is required for displaying as a row\n\t\tGiven I have `direction` to \"row\"\n\t\tAnd I have not set a `max-width`\n\t\tThen it displays as a column\n\n\t@motivating\n\t@ui\n\tScenario Outline: Content padding can be customized\n\t\tGiven prop \"padding\" has <value>\n\t\tThen <padding> is applied to content\n\n\t\tExamples:\n\t\t\t| value | padding |\n\t\t\t| none | no padding |\n\t\t\t| xxx-small | xxx-small |\n\t\t\t| xx-small | xx-small |\n\t\t\t| x-small | x-small |\n\t\t\t| small | small |\n\t\t\t| medium | medium |\n\t\t\t| large | large |\n\t\t\t| x-large | x-large |\n\t\t\t| xx-large | xx-large |\n\t\t\t| xxx-large | xxx-large |\n\t\t\t| xxxx-large | xxxx-large |\n\t\t\t| N/A | no padding |\n\n\n\t@motivating\n\t@ui\n\tScenario Outline: Gap between content elements can be customized\n\t\tGiven prop \"gap\" has <value>\n\t\tThen <gap> is applied to elements between content\n\n\t\tExamples:\n\t\t\t| value | gap |\n\t\t\t| none | no padding |\n\t\t\t| xxx-small | xxx-small |\n\t\t\t| xx-small | xx-small |\n\t\t\t| x-small | x-small |\n\t\t\t| small | small |\n\t\t\t| medium | medium |\n\t\t\t| large | large |\n\t\t\t| x-large | x-large |\n\t\t\t| xx-large | xx-large |\n\t\t\t| xxx-large | xxx-large |\n\t\t\t| xxxx-large | xxxx-large |\n\t\t\t| N/A | no padding |\n\n\t@minutia\n\t@ui\n\tScenario: Content can be center aligned in horizontal view\n\t\tGiven I have supplied the prop \"center\"\n\t\tThen the content is center aligned\n\n\t@minutia\n\t@ui\n\tScenario: Content in the last row can span full width with display in horizontal view\n\t\tGiven I have `display` to \"flex\"\n\t\tThen the content is full width on the last row\n\n\t@motivating\n\t@ui\n\tScenario Outline: Content can be aligned along the x-axis\n\t\tGiven prop \"justify-content\" has <value>\n\t\tThen content within the container is aligned <alignment>\n\n\t\tExamples:\n\t\t\t| value | alignment |\n\t\t\t| none | no alignment |\n\t\t\t| start | to the start |\n\t\t\t| center | to the center |\n\t\t\t| end | to the end |\n\t\t\t| space-between | with space between |\n\t\t\t| space-around | with space around |\n\t\t\t| space-evenly | with space evenly |\n\n\n\t@motivating\n\t@ui\n\tScenario Outline: Component background color can be customized\n\t\tGiven a user is viewing the Portal Container component\n\t\tThen the default value is \"#ffffff00\"\n\t\tWhen the prop \"background-color\" has <value>\n\t\tThen the background has color <backgroundColor>\n\t\tExamples:\n\t\t\t| value | backgroundColor |\n\t\t\t| empty (default value) | var(--sl-color-neutral-0) (#ffffff) |\n\t\t\t| aquamarine | #7fffd4 |\n";
11661
11860
 
11662
11861
  const PortalContainer_stories = {
11663
11862
  title: "Components/Microsite Container",
11664
11863
  parameters: {
11665
- scenario: scenario$q,
11864
+ scenario: scenario$r,
11666
11865
  },
11667
11866
  };
11668
11867
  const TooWideColumn = () => (index.h("div", { style: { width: "200px", border: "1px dashed grey" } },
@@ -11830,11 +12029,11 @@ const scenario3 = "@author:derek @owner:derek\nFeature: Reward Table Status Colu
11830
12029
 
11831
12030
  const scenario4 = "@author:derek @owner:derek\nFeature: Reward Table Source Column\n Shows the source of each reward\n\n @motivating @ui\n Scenario Outline: The title of the source column is configurable\n Given the \"column-title\" prop is set to <value>\n Then the source column is shown with <columnTitle>\n\n Examples:\n | value | columnTitle |\n | Source | |\n | My column title | My column title |\n\n @motivating @ui\n Scenario: The source column displays manual if the reward is caused by a manual action\n Given a user with a \"MANUAL\" reward\n When they view the rewards table\n Then the source of their reward is displayed as \"Manual\"\n\n @motivating @ui\n Scenario: The source column displays the program name if the reward is caused automatically by a program\n Given a user with a \"AUTOMATED\" program reward\n And the program has name \"Loyalty Program\"\n When they view the rewards table\n Then the source of their reward is displayed as \"Loyalty Program\"\n\n @motivating @ui\n Scenario Outline: The source column displays customizable reward exchange text with amount if the reward is caused by reward exchange\n Given the \"reward-exchange-text\" prop is <propValue>\n And a user with a \"MANUAL\" reward\n But it was created by a reward exchange\n Then they view the rewards table\n Then the source displays <exchangeText>\n And under it displays the following\n | prettyRedeemedCredit → prettyValue |\n\n Examples:\n | propValue | exchangeText |\n | | Reward Exchange |\n | Exchanged | Exchanged |\n\n @motivating @ui\n Scenario Outline: The source column displays customizable referral information if the reward is from a referral\n Given the \"reward-source-text\" prop is <propValue>\n And a user with a referral reward\n And that reward has <rewardSource>\n When they view the rewards table\n Then then source displays <referralText>\n And under it displays the full name of the <referralUser>\n\n Examples:\n | propValue | rewardSource | referralText | referralUser |\n | | REFERRED | Referred by | referrer user |\n | | FRIEND_SIGNUP | Referral to | referred user |\n | {rewardSource, select, FRIEND_SIGNUP {You Referred} REFERRED {Referred you} other {}} | REFERRED | Referred you | referrer user |\n | {rewardSource, select, FRIEND_SIGNUP {You Referred} REFERRED {Referred you} other {}} | FRIEND_SIGNUP | You Referred | referred user |\n\n @motivating @ui\n Scenario Outline: The source column displays the existing name for a referral if either the first name or last name does not exist\n Given a user with a referral reward\n And referral user exists\n And referral user has <name>\n But referral user has no <otherName>\n When they view the rewards table\n Then referral user's name is displayed as <name>\n\n Examples:\n | name | otherName |\n | first.name | last.name |\n | last.name | first.name |\n\n @motivating @ui\n Scenario Outline: The source column displays referral as \"Anonymous User\" if the referral user has no names\n Given a user with a referral reward\n And that reward has <rewardSource>\n And the <referralUser> has no first name\n And the <referralUser> has no last name\n When they view the rewards table\n Then then source displays <sourceText>\n And under it displays \"Anonymous User\"\n\n Examples:\n | rewardSource | referralUser | sourceText |\n | FRIEND_SIGNUP | referrer | Referral to |\n | REFERRED | referred user | Referred by |\n\n @motivating @ui\n Scenario Outline: The source column displays referral as \"Deleted User\" if the referral user is deleted in the system\n Given a user with a referral reward\n And that reward has <rewardSource>\n But <referral> user was deleted\n When they view the rewards table\n Then the source displays <sourceText>\n And under it displays \"Deleted User\"\n\n Examples:\n | rewardSource | referral | sourceText |\n | \"FRIEND_SIGNUP\" | referrer | Referral to |\n | \"REFERRED\" | referred | Referred by |\n\n @motivating @ui\n Scenario Outline: The source column displays referral as \"Deleted referral\" if the referral user is deleted in the system\n Given a user with a referral reward\n And that reward has <rewardSource>\n But <referral> user was deleted\n When they view the rewards table\n Then the source displays <sourceText>\n And under it displays \"Deleted referral\"\n\n Examples:\n | rewardSource | referral | sourceText |\n | \"FRIEND_SIGNUP\" | referrer | Referral to |\n | \"REFERRED\" | referred | Referred by |\n\n @minutia @ui\n Scenario Outline: Name fallbacks for referral users without names are customizable\n Given <prop> with <value>\n And a user with a referral reward\n But the referral user <hadAction>\n When they view the rewards table\n Then the source displays <value> as the referral user\n\n Examples:\n | prop | value | hadAction |\n | deleted-user | Former Customer | was deleted |\n | anonymous-user | Nameless User | had first and last name deleted |\n\n @motivating\n Scenario Outline: Source text can be customized\n Given the \"reward-source-text\" prop is \"{rewardSource, select, MANUAL {Support} AUTOMATED {Loyalty Program} other {}}\"\n And a user with a <rewardSource> reward\n When they view the rewards table\n Then the source is <sourceText>\n\n Examples:\n | rewardSource | sourceText |\n | MANUAL | Support |\n | AUTOMATED | Loyalty Program |\n";
11832
12031
 
11833
- const scenario$r = scenario1 + scenario2 + scenario3 + scenario4;
12032
+ const scenario$s = scenario1 + scenario2 + scenario3 + scenario4;
11834
12033
  const RewardsTableCell_stories = {
11835
12034
  title: "Components/Rewards Table Cell",
11836
12035
  parameters: {
11837
- scenario: scenario$r,
12036
+ scenario: scenario$s,
11838
12037
  },
11839
12038
  };
11840
12039
  const rewardsData$1 = {
@@ -12277,12 +12476,12 @@ const RewardsTableCell = /*#__PURE__*/Object.freeze({
12277
12476
  EmptyCell: EmptyCell$2
12278
12477
  });
12279
12478
 
12280
- const scenario$s = "@owner:sam\n@author:sam\nFeature: Rewards Table\n\n Shows a list of rewards as a table\n\n @motivating\n @ui\n Scenario: The empty state is shown if there are no rewards\n Given a user with rewards\n When they view the reward table\n Then no rewards are displayed\n And they see an image with a user icon\n And \"View your rewards\" in bold\n And \"See all the rewards you have earned from referring friends and completing tasks\" below the bolded text\n And the pagination buttons are disabled\n\n @minutia\n @ui\n Scenario: A custom empty state can be provided\n Given a user with no rewards\n And a custom empty state has been supplied in the \"empty\" slot\n When they view the reward table\n Then they see the custom empty state\n\n @minutia\n @ui\n Scenario: The loading state is shown while rewards are loading\n Given the table is loading\n Then the loading state is shown in the table\n And a custom loading state can be supplied in the \"loading\" slot\n And the pagination buttons are disabled\n\n @motivating\n @ui\n Scenario Outline: The table becomes paginated when the number of rewards exceeds the per page limit\n Given the user has <number of rewards>\n And the table is configured to show <page limit> rewards per page\n Then the table will have <number of pages> page(s)\n And pagination buttons will allow users to navigate between pages\n And the pagination button to go to the next page is disabled on the last page of rewards\n And the pagination button to go to the previous page is disabled on the first page of rewards\n Examples:\n | number of rewards | page limit | number of pages |\n | 0 | 4 | 1 |\n | 1 | 4 | 1 |\n | 3 | 4 | 1 |\n | 5 | 4 | 2 |\n | 42 | 4 | 11 |\n\n @motivating\n @ui\n Scenario: The table converts to a card view on tablet and mobile window sizes\n Given a user with rewards\n When they view the table\n And their window size is smaller than \"799px\"\n Then rewards are displayed as cards\n And they are in two columns\n When their window size is smaller than \"599px\"\n Then the rewards are displayed as cards in a singular column\n\n @motivating\n @ui\n Scenario: Table and Mobile beakpoints can be configured\n Given the reward table has been configured with the following props\n | prop | value |\n | smBreakpoint | 599 |\n | mdBreakpoint | 799 |\n And a user with rewards\n When they view the table\n And their window size is smaller than \"799px\"\n Then rewards are displayed as cards\n And they are in two columns\n When their window size is smaller than \"599px\"\n Then the rewards are displayed as cards in a singular column\n\n @motivating\n @ui\n Scenario Outline: By default the first column heading is hidden in mobile\n Given a reward table with 4 columns\n And prop \"hidden-columns\" with <hideColumnValue>\n And a user with rewards\n When they view the reward table\n And their window size is below the tablet breakpoint\n Then reward cards are displayed\n And the titles of <columnsArehidden> within the card\n Examples:\n | hideColumnValue | columnsArehidden |\n | | the first column |\n | 0,1,2 | the first, second and third columns |\n | 3 | the fourth column |\n\n @motivating\n Scenario: Only rewards which occured in the program specific by \"program-id\" are shown\n Given the table is configured with \"program-id\"\n Then only rewards from the program with \"program-id\" are shown\n\n @landmine\n Scenario: When a `classic` program Id is set then any reward without a programId is shown\n There is no easy way for the backend to filter for \"classic\" programs,\n thus we are filtering for rewards without programId's.\n\n Given the \"program-id\" of the table is set to \"classic\"\n Then rewards from classic programs are shown\n And manual rewards are shown\n\n @minutia\n @ui\n Scenario: Column heading can be hidden\n Given the table is configured with \"hide-labels\" set to \"true\"\n Then the table is displayed without column headings";
12479
+ const scenario$t = "@owner:sam\n@author:sam\nFeature: Rewards Table\n\n Shows a list of rewards as a table\n\n @motivating\n @ui\n Scenario: The empty state is shown if there are no rewards\n Given a user with rewards\n When they view the reward table\n Then no rewards are displayed\n And they see an image with a user icon\n And \"View your rewards\" in bold\n And \"See all the rewards you have earned from referring friends and completing tasks\" below the bolded text\n And the pagination buttons are disabled\n\n @minutia\n @ui\n Scenario: A custom empty state can be provided\n Given a user with no rewards\n And a custom empty state has been supplied in the \"empty\" slot\n When they view the reward table\n Then they see the custom empty state\n\n @minutia\n @ui\n Scenario: The loading state is shown while rewards are loading\n Given the table is loading\n Then the loading state is shown in the table\n And a custom loading state can be supplied in the \"loading\" slot\n And the pagination buttons are disabled\n\n @motivating\n @ui\n Scenario Outline: The table becomes paginated when the number of rewards exceeds the per page limit\n Given the user has <number of rewards>\n And the table is configured to show <page limit> rewards per page\n Then the table will have <number of pages> page(s)\n And pagination buttons will allow users to navigate between pages\n And the pagination button to go to the next page is disabled on the last page of rewards\n And the pagination button to go to the previous page is disabled on the first page of rewards\n Examples:\n | number of rewards | page limit | number of pages |\n | 0 | 4 | 1 |\n | 1 | 4 | 1 |\n | 3 | 4 | 1 |\n | 5 | 4 | 2 |\n | 42 | 4 | 11 |\n\n @motivating\n @ui\n Scenario: The table converts to a card view on tablet and mobile window sizes\n Given a user with rewards\n When they view the table\n And their window size is smaller than \"799px\"\n Then rewards are displayed as cards\n And they are in two columns\n When their window size is smaller than \"599px\"\n Then the rewards are displayed as cards in a singular column\n\n @motivating\n @ui\n Scenario: Table and Mobile beakpoints can be configured\n Given the reward table has been configured with the following props\n | prop | value |\n | smBreakpoint | 599 |\n | mdBreakpoint | 799 |\n And a user with rewards\n When they view the table\n And their window size is smaller than \"799px\"\n Then rewards are displayed as cards\n And they are in two columns\n When their window size is smaller than \"599px\"\n Then the rewards are displayed as cards in a singular column\n\n @motivating\n @ui\n Scenario Outline: By default the first column heading is hidden in mobile\n Given a reward table with 4 columns\n And prop \"hidden-columns\" with <hideColumnValue>\n And a user with rewards\n When they view the reward table\n And their window size is below the tablet breakpoint\n Then reward cards are displayed\n And the titles of <columnsArehidden> within the card\n Examples:\n | hideColumnValue | columnsArehidden |\n | | the first column |\n | 0,1,2 | the first, second and third columns |\n | 3 | the fourth column |\n\n @motivating\n Scenario: Only rewards which occured in the program specific by \"program-id\" are shown\n Given the table is configured with \"program-id\"\n Then only rewards from the program with \"program-id\" are shown\n\n @landmine\n Scenario: When a `classic` program Id is set then any reward without a programId is shown\n There is no easy way for the backend to filter for \"classic\" programs,\n thus we are filtering for rewards without programId's.\n\n Given the \"program-id\" of the table is set to \"classic\"\n Then rewards from classic programs are shown\n And manual rewards are shown\n\n @minutia\n @ui\n Scenario: Column heading can be hidden\n Given the table is configured with \"hide-labels\" set to \"true\"\n Then the table is displayed without column headings";
12281
12480
 
12282
12481
  const RewardsTable_stories = {
12283
12482
  title: "Components/Rewards Table",
12284
12483
  parameters: {
12285
- scenario: scenario$s,
12484
+ scenario: scenario$t,
12286
12485
  },
12287
12486
  };
12288
12487
  const loadingElement$1 = (index.h("div", { slot: "loading", style: { display: "contents" } },
@@ -12594,12 +12793,12 @@ const UseReferralTable = /*#__PURE__*/Object.freeze({
12594
12793
  ReferralTableFr: ReferralTableFr
12595
12794
  });
12596
12795
 
12597
- const scenario$t = "@author:kutay\n@owner:kutay\nFeature: Hero Image\n\n\tThe Hero Image component displays media images with a header, description and button using an overlay or a double column layout to offer an attrative widget page.\n\n\tBackground: A user on the portal is viewing the widget\n\t\tGiven a user viewing the Hero Image component\n\n\t@motivating\n\t@ui\n\tScenario: Overlay image displays header, description, and button with brand color\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"overlay\" |\n\t\tThen they see their image\n\t\tAnd the image has no padding\n\t\tAnd it has a brand colour overlay\n\t\tAnd \"Klip Rewards\" is displayed over top of the image in xxx-large font\n\t\tAnd below \"Refer friends or complete tasks while using Klip to earn rewards\" is displayed over top of the image in x-large font\n\t\tAnd below they see a brand coloured button with text \"Start earning\"\n\t\tAnd the text section has xxx-large padding\n\t\tWhen the component is scaled down to 599px\n\t\tThen the image is scaled to fit content\n\n\t@motivating\n\t@ui\n\tScenario Outline: Overlay image crop can be aligned left, center or right\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"overlay\" |\n\t\t\t| image-pos | <value> |\n\t\tThen the image with overlay is displayed\n\t\tWhen the component is scaled down to 599px\n\t\tThen the image is <alignment> to fit content\n\t\tExamples:\n\t\t\t| value | alignment |\n\t\t\t| left | left aligned |\n\t\t\t| center | centered |\n\t\t\t| right | right aligned |\n\t\t\t| N/A | centered |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Overlay padding is configurable\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"overlay\" |\n\t\t\t| padding-text | <value> |\n\t\tThen the image with overlay is displayed\n\t\tAnd <padding> is applied around header, description and button\n\t\tExamples:\n\t\t\t| value | padding |\n\t\t\t| none | no padding |\n\t\t\t| xxx-small | xxx-small |\n\t\t\t| xx-small | xx-small |\n\t\t\t| x-small | x-small |\n\t\t\t| small | small |\n\t\t\t| medium | medium |\n\t\t\t| large | large |\n\t\t\t| x-large | x-large |\n\t\t\t| xx-large | xx-large |\n\t\t\t| xxx-large | xxx-large |\n\t\t\t| xxxx-large | xxxx-large |\n\t\t\t| N/A | no padding |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Overlay color and background is configurable\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"overlay\" |\n\t\t\t| text-color | <textColor> |\n\t\t\t| overlay-color | <overlayColor> |\n\t\t\t| overlay-opacity | <overlayOpacity> |\n\t\tThen the image with overlay is displayed\n\t\tAnd the overlay is <overlayColor>\n\t\tAnd the overlay has <overlayOpacity>\n\t\tAnd the text is <textColor>\n\t\tExamples:\n\t\t\t| textColor | overlayColor | overlayOpacity |\n\t\t\t| #fffc4b | #ff7f7f | 0.9 |\n\t\t\t| #1d0314 | #4baa1a | 0 |\n\t\t\t| #211a27 | #aa481a | 1 |\n\n\t@motivating\n\t@ui\n\tScenario: Two-column layout displays an image on one side and on the other side a header, description, and button\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"columns\" |\n\t\tThen the image is displayed on the left\n\t\tAnd the following elements are displayed on the right\n\t\t\t| elements |\n\t\t\t| header |\n\t\t\t| description |\n\t\t\t| button |\n\t\tWhen the component is scaled down to 599px\n\t\tThen the two-column layout switches to a row layout\n\t\tAnd the image is displayed on top\n\t\tAnd the content is displayed below\n\n\t@motivating\n\t@ui\n\tScenario Outline: Image position is configurable for desktop and mobile\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"columns\" |\n\t\t\t| image-pos | <imagePos> |\n\t\t\t| image-mobile-pos | <imageMobilePos> |\n\t\tThen the image is displayed on the <imagePos>\n\t\tWhen the component is scaled down to 599px\n\t\tThen two-column layout switches to a row layout\n\t\tAnd image is displayed on the <imageMobilePos>\n\t\tExamples:\n\t\t\t| imagePos | imageMobilePos |\n\t\t\t| left | top |\n\t\t\t| right | bottom |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Padding is configurable for the image and text of two column layouts\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"columns\" |\n\t\t\t| padding-text | <paddingText> |\n\t\t\t| padding-image | <paddingImage> |\n\t\tThen the two column layout is displayed\n\t\tAnd the image has padding <paddingImage>\n\t\tAnd the text has padding <paddingText>\n\t\tExamples:\n\t\t\t| paddingText | paddingImage |\n\t\t\t| xxx-small | xxx-small |\n\t\t\t| xx-small | xx-small |\n\t\t\t| x-small | x-small |\n\t\t\t| small | small |\n\t\t\t| medium | medium |\n\t\t\t| large | large |\n\t\t\t| x-large | x-large |\n\t\t\t| xx-large | xx-large |\n\t\t\t| xxx-large | xxx-large |\n\t\t\t| xxxx-large | xxxx-large |\n\t\t\t| none | none |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Two-column layout image division percentage is configurable\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000248/squatch-assets/MVgOJn7.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"columns\" |\n\t\t\t| image-percentage | <percent> |\n\t\tThen the two column layout is displayed\n\t\tAnd the image takes up <percent> of the two-column layout\n\t\tAnd the text elements take up the remainder of the space\n\t\tExamples:\n\t\t\t| percent |\n\t\t\t| 25% |\n\t\t\t| 42% |\n\t\t\t| 66% |\n\n\t@motivating\n\t@ui\n\tScenario: Two-column layout text and background color is configurable\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"columns\" |\n\t\t\t| text-color | <textColor> |\n\t\t\t| background-color | <backgroundColor> |\n\t\tThen the two column layout is displayed\n\t\tAnd the text has color <textColor>\n\t\tAnd the background has color <backgroundColor>\n\t\tExamples:\n\t\t\t| textColor | backgroundColor |\n\t\t\t| #fffc4b | #ff7f7f |\n\t\t\t| #1d0314 | #4baa1a |\n\t\t\t| #211a27 | #aa481a |";
12796
+ const scenario$u = "@author:kutay\n@owner:kutay\nFeature: Hero Image\n\n\tThe Hero Image component displays media images with a header, description and button using an overlay or a double column layout to offer an attrative widget page.\n\n\tBackground: A user on the portal is viewing the widget\n\t\tGiven a user viewing the Hero Image component\n\n\t@motivating\n\t@ui\n\tScenario: Overlay image displays header, description, and button with brand color\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"overlay\" |\n\t\tThen they see their image\n\t\tAnd the image has no padding\n\t\tAnd it has a brand colour overlay\n\t\tAnd \"Klip Rewards\" is displayed over top of the image in xxx-large font\n\t\tAnd below \"Refer friends or complete tasks while using Klip to earn rewards\" is displayed over top of the image in x-large font\n\t\tAnd below they see a brand coloured button with text \"Start earning\"\n\t\tAnd the text section has xxx-large padding\n\t\tWhen the component is scaled down to 599px\n\t\tThen the image is scaled to fit content\n\n\t@motivating\n\t@ui\n\tScenario Outline: Overlay image crop can be aligned left, center or right\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"overlay\" |\n\t\t\t| image-pos | <value> |\n\t\tThen the image with overlay is displayed\n\t\tWhen the component is scaled down to 599px\n\t\tThen the image is <alignment> to fit content\n\t\tExamples:\n\t\t\t| value | alignment |\n\t\t\t| left | left aligned |\n\t\t\t| center | centered |\n\t\t\t| right | right aligned |\n\t\t\t| N/A | centered |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Overlay padding is configurable\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"overlay\" |\n\t\t\t| padding-text | <value> |\n\t\tThen the image with overlay is displayed\n\t\tAnd <padding> is applied around header, description and button\n\t\tExamples:\n\t\t\t| value | padding |\n\t\t\t| none | no padding |\n\t\t\t| xxx-small | xxx-small |\n\t\t\t| xx-small | xx-small |\n\t\t\t| x-small | x-small |\n\t\t\t| small | small |\n\t\t\t| medium | medium |\n\t\t\t| large | large |\n\t\t\t| x-large | x-large |\n\t\t\t| xx-large | xx-large |\n\t\t\t| xxx-large | xxx-large |\n\t\t\t| xxxx-large | xxxx-large |\n\t\t\t| N/A | no padding |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Overlay color and background is configurable\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"overlay\" |\n\t\t\t| text-color | <textColor> |\n\t\t\t| overlay-color | <overlayColor> |\n\t\t\t| overlay-opacity | <overlayOpacity> |\n\t\tThen the image with overlay is displayed\n\t\tAnd the overlay is <overlayColor>\n\t\tAnd the overlay has <overlayOpacity>\n\t\tAnd the text is <textColor>\n\t\tExamples:\n\t\t\t| textColor | overlayColor | overlayOpacity |\n\t\t\t| #fffc4b | #ff7f7f | 0.9 |\n\t\t\t| #1d0314 | #4baa1a | 0 |\n\t\t\t| #211a27 | #aa481a | 1 |\n\n\t@motivating\n\t@ui\n\tScenario: Two-column layout displays an image on one side and on the other side a header, description, and button\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"columns\" |\n\t\tThen the image is displayed on the left\n\t\tAnd the following elements are displayed on the right\n\t\t\t| elements |\n\t\t\t| header |\n\t\t\t| description |\n\t\t\t| button |\n\t\tWhen the component is scaled down to 599px\n\t\tThen the two-column layout switches to a row layout\n\t\tAnd the image is displayed on top\n\t\tAnd the content is displayed below\n\n\t@motivating\n\t@ui\n\tScenario Outline: Image position is configurable for desktop and mobile\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"columns\" |\n\t\t\t| image-pos | <imagePos> |\n\t\t\t| image-mobile-pos | <imageMobilePos> |\n\t\tThen the image is displayed on the <imagePos>\n\t\tWhen the component is scaled down to 599px\n\t\tThen two-column layout switches to a row layout\n\t\tAnd image is displayed on the <imageMobilePos>\n\t\tExamples:\n\t\t\t| imagePos | imageMobilePos |\n\t\t\t| left | top |\n\t\t\t| right | bottom |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Padding is configurable for the image and text of two column layouts\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"columns\" |\n\t\t\t| padding-text | <paddingText> |\n\t\t\t| padding-image | <paddingImage> |\n\t\tThen the two column layout is displayed\n\t\tAnd the image has padding <paddingImage>\n\t\tAnd the text has padding <paddingText>\n\t\tExamples:\n\t\t\t| paddingText | paddingImage |\n\t\t\t| xxx-small | xxx-small |\n\t\t\t| xx-small | xx-small |\n\t\t\t| x-small | x-small |\n\t\t\t| small | small |\n\t\t\t| medium | medium |\n\t\t\t| large | large |\n\t\t\t| x-large | x-large |\n\t\t\t| xx-large | xx-large |\n\t\t\t| xxx-large | xxx-large |\n\t\t\t| xxxx-large | xxxx-large |\n\t\t\t| none | none |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Two-column layout image division percentage is configurable\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000248/squatch-assets/MVgOJn7.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"columns\" |\n\t\t\t| image-percentage | <percent> |\n\t\tThen the two column layout is displayed\n\t\tAnd the image takes up <percent> of the two-column layout\n\t\tAnd the text elements take up the remainder of the space\n\t\tExamples:\n\t\t\t| percent |\n\t\t\t| 25% |\n\t\t\t| 42% |\n\t\t\t| 66% |\n\n\t@motivating\n\t@ui\n\tScenario: Two-column layout text and background color is configurable\n\t\tGiven a Hero Image component configured with the following props\n\t\t\t| prop | value |\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\n\t\t\t| header | \"Klip Rewards\" |\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\n\t\t\t| button-text | \"Start earning\" |\n\t\t\t| layout | \"columns\" |\n\t\t\t| text-color | <textColor> |\n\t\t\t| background-color | <backgroundColor> |\n\t\tThen the two column layout is displayed\n\t\tAnd the text has color <textColor>\n\t\tAnd the background has color <backgroundColor>\n\t\tExamples:\n\t\t\t| textColor | backgroundColor |\n\t\t\t| #fffc4b | #ff7f7f |\n\t\t\t| #1d0314 | #4baa1a |\n\t\t\t| #211a27 | #aa481a |";
12598
12797
 
12599
12798
  const HeroImage_stories = {
12600
12799
  title: "Components/Hero Image",
12601
12800
  parameters: {
12602
- scenario: scenario$t,
12801
+ scenario: scenario$u,
12603
12802
  },
12604
12803
  };
12605
12804
  const OverlayHeader = () => {
@@ -12672,12 +12871,12 @@ const HeroImage = /*#__PURE__*/Object.freeze({
12672
12871
  ColumnsCustomColors: ColumnsCustomColors
12673
12872
  });
12674
12873
 
12675
- const scenario$u = "@author:kutay\n@owner:kutay\nFeature: Referral Card\n\n\tThe Referral Card component takes in two slots and displays them side by side.\n\n\tBackground: A user on the portal is viewing the widget\n\t\tGiven a user viewing the Referral Card component\n\n\t@motivating\n\t@ui\n\tScenario: Referral Card component displays provided content in left and right slots side by side\n\t\tGiven a Referral Card component\n\t\tAnd a slot with the name \"left\"\n\t\tAnd a slot with the name \"right\"\n\t\tWhen the user views the referral card\n\t\tThen the slot contents are displayed the card with equal width\n\t\tWhen the component is scaled down to 499px\n\t\tThen the column layout switches to row layout\n\t\tAnd the \"left\" slot content is displayed above the \"right\" slot content\n\n\t@minutia\n\t@ui\n\tScenario: Left or right column content spans the whole card if there is no content in the other column\n\t\tGiven a Referral Card component\n\t\tAnd there content in one column\n\t\tAnd there is no content in the other column\n\t\tThen the column with content spans 100% of the card width\n\t\tAnd the column with content respects the container's padding\n\t\tAnd the column without content has zero width\n\n\t@motivating\n\t@ui\n\tScenario Outline: Referral Card component content can be vertically aligned start, center, end\n\t\tGiven a Referral Card component\n\t\tAnd a slot with the name \"left\"\n\t\tAnd a slot with the name \"right\"\n\t\tAnd the prop \"vertical-alignment\" has <value>\n\t\tThen slots contents are displayed inside the card\n\t\tAnd slots are vertically aligned to <alignment> of the card\n\t\tExamples:\n\t\t\t| value | alignment |\n\t\t\t| start | the top |\n\t\t\t| center | the center |\n\t\t\t| end | the bottom |\n\t\t\t| N/A | the top |\n\n\t@ui\n\tScenario Outline: Container border can be toggled\n\t\tGiven a user is viewing the referral card component\n\t\tThen the default value for the prop \"include-border\" is \"true\"\n\t\tWhen \"include-border\" has <value>\n\t\tThen the referral card component's border <maybe> included\n\t\tExamples:\n\t\t\t| value | maybe |\n\t\t\t| true | is |\n\t\t\t| false | isn't |\n\t\t\t| empty (no value) | is |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Component background color can be customized\n\t\tGiven a user is viewing the Referral Card component\n\t\tThen the default value is \"#ffffff\"\n\t\tWhen the prop \"background-color\" has <value>\n\t\tThen the background has color <backgroundColor>\n\t\tExamples:\n\t\t\t| value | backgroundColor |\n\t\t\t| empty (default value) | var(--sl-color-neutral-0) (#ffffff) |\n\t\t\t| aquamarine | #7fffd4 |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Container padding can be customized\n\t\tGiven a user is looking at the component\n\t\tThen the default values for \"padding-top\", \"padding-bottom\", \"padding-left\", \"padding-right\" is \"large\"\n\t\tWhen prop \"padding-top\" has <value>\n\t\tThen <padding> is applied to content\n\t\tAnd the same applies to \"padding-bottom\", \"padding-left\", \"padding-right\"\n\n\t\tExamples:\n\t\t\t| value | padding |\n\t\t\t| none | no padding |\n\t\t\t| xxx-small | xxx-small |\n\t\t\t| xx-small | xx-small |\n\t\t\t| x-small | x-small |\n\t\t\t| small | small |\n\t\t\t| medium | medium |\n\t\t\t| large | large |\n\t\t\t| x-large | x-large |\n\t\t\t| xx-large | xx-large |\n\t\t\t| xxx-large | xxx-large |\n\t\t\t| xxxx-large | xxxx-large |\n\t\t\t| N/A | no padding |";
12874
+ const scenario$v = "@author:kutay\n@owner:kutay\nFeature: Referral Card\n\n\tThe Referral Card component takes in two slots and displays them side by side.\n\n\tBackground: A user on the portal is viewing the widget\n\t\tGiven a user viewing the Referral Card component\n\n\t@motivating\n\t@ui\n\tScenario: Referral Card component displays provided content in left and right slots side by side\n\t\tGiven a Referral Card component\n\t\tAnd a slot with the name \"left\"\n\t\tAnd a slot with the name \"right\"\n\t\tWhen the user views the referral card\n\t\tThen the slot contents are displayed the card with equal width\n\t\tWhen the component is scaled down to 499px\n\t\tThen the column layout switches to row layout\n\t\tAnd the \"left\" slot content is displayed above the \"right\" slot content\n\n\t@minutia\n\t@ui\n\tScenario: Left or right column content spans the whole card if there is no content in the other column\n\t\tGiven a Referral Card component\n\t\tAnd there content in one column\n\t\tAnd there is no content in the other column\n\t\tThen the column with content spans 100% of the card width\n\t\tAnd the column with content respects the container's padding\n\t\tAnd the column without content has zero width\n\n\t@motivating\n\t@ui\n\tScenario Outline: Referral Card component content can be vertically aligned start, center, end\n\t\tGiven a Referral Card component\n\t\tAnd a slot with the name \"left\"\n\t\tAnd a slot with the name \"right\"\n\t\tAnd the prop \"vertical-alignment\" has <value>\n\t\tThen slots contents are displayed inside the card\n\t\tAnd slots are vertically aligned to <alignment> of the card\n\t\tExamples:\n\t\t\t| value | alignment |\n\t\t\t| start | the top |\n\t\t\t| center | the center |\n\t\t\t| end | the bottom |\n\t\t\t| N/A | the top |\n\n\t@ui\n\tScenario Outline: Container border can be toggled\n\t\tGiven a user is viewing the referral card component\n\t\tThen the default value for the prop \"include-border\" is \"true\"\n\t\tWhen \"include-border\" has <value>\n\t\tThen the referral card component's border <maybe> included\n\t\tExamples:\n\t\t\t| value | maybe |\n\t\t\t| true | is |\n\t\t\t| false | isn't |\n\t\t\t| empty (no value) | is |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Component background color can be customized\n\t\tGiven a user is viewing the Referral Card component\n\t\tThen the default value is \"#ffffff\"\n\t\tWhen the prop \"background-color\" has <value>\n\t\tThen the background has color <backgroundColor>\n\t\tExamples:\n\t\t\t| value | backgroundColor |\n\t\t\t| empty (default value) | var(--sl-color-neutral-0) (#ffffff) |\n\t\t\t| aquamarine | #7fffd4 |\n\n\t@motivating\n\t@ui\n\tScenario Outline: Container padding can be customized\n\t\tGiven a user is looking at the component\n\t\tThen the default values for \"padding-top\", \"padding-bottom\", \"padding-left\", \"padding-right\" is \"large\"\n\t\tWhen prop \"padding-top\" has <value>\n\t\tThen <padding> is applied to content\n\t\tAnd the same applies to \"padding-bottom\", \"padding-left\", \"padding-right\"\n\n\t\tExamples:\n\t\t\t| value | padding |\n\t\t\t| none | no padding |\n\t\t\t| xxx-small | xxx-small |\n\t\t\t| xx-small | xx-small |\n\t\t\t| x-small | x-small |\n\t\t\t| small | small |\n\t\t\t| medium | medium |\n\t\t\t| large | large |\n\t\t\t| x-large | x-large |\n\t\t\t| xx-large | xx-large |\n\t\t\t| xxx-large | xxx-large |\n\t\t\t| xxxx-large | xxxx-large |\n\t\t\t| N/A | no padding |";
12676
12875
 
12677
12876
  const ReferralCard_stories = {
12678
12877
  title: "Components/Referral Card",
12679
12878
  parameters: {
12680
- scenario: scenario$u,
12879
+ scenario: scenario$v,
12681
12880
  },
12682
12881
  };
12683
12882
  const media = (slot) => {
@@ -12831,11 +13030,11 @@ const scenarioTimeline = "@author:derek\n@owner:kutay\nFeature: Timeline\n\n
12831
13030
 
12832
13031
  const scenarioTimelineEntry = "@author:derek\n@owner:kutay\nFeature: Timeline Entry\n\n @motivating\n @ui\n Scenario: Timeline entries have an icon, a reward and an entry desciption\n Given an timeline entry with the following props\n | prop | value |\n | unit | Visa Giftcard |\n | reward | 50$ |\n | desc | Earn a 50$ Visa Giftcard for each referral you make |\n When a user views the entry\n Then they see a gift icon\n And see \"$50 VISA GIFTCARRD\" to the right\n And \"$50\" is bolded with x-large font size\n And below they see \"Earn a 50$ Visa Giftcard for each referral you make\"\n\n @motivating\n @ui\n Scenario Outline: Icon can either be a gift or a brand colour cirle\n Given a timeline entry with \"icon\" <iconPropValue>\n When a user views the entry\n Then they see an <icon>\n Examples:\n | iconPropValue 1 | icon |\n | gift | gift |\n | circle | brand colour circle |\n | | gift |\n\n @motivating\n @ui\n Scenario: A timeline entry can display a line to connect it to another entry\n Given a timeline entry with \"line\" \"true\"\n When a user views the entry\n Then they see the entry\n But it has a brand colour line connecting it to the next timeline entry\n";
12833
13032
 
12834
- const scenario$v = scenarioTimeline + scenarioTimelineEntry;
13033
+ const scenario$w = scenarioTimeline + scenarioTimelineEntry;
12835
13034
  const Timeline_stories = {
12836
13035
  title: "Components/Timeline",
12837
13036
  parameters: {
12838
- scenario: scenario$v,
13037
+ scenario: scenario$w,
12839
13038
  },
12840
13039
  };
12841
13040
  const TimelineWith1Reward = () => {
@@ -12908,12 +13107,12 @@ const Timeline = /*#__PURE__*/Object.freeze({
12908
13107
  TimelineWith4Rewards: TimelineWith4Rewards
12909
13108
  });
12910
13109
 
12911
- const scenario$w = "@author:kutay\n@owner:kutay\nFeature: Image\n\n\tBackground: A user on the portal is viewing the widget\n\t\tGiven a user viewing the image component\n\n\t@motivating\n\t@ui\n\tScenario: Image is displayed from URL\n\t\tGiven an Image component\n\t\tAnd prop \"image-url\" is provided with a valid image url\n\t\tThen the image is displayed\n\t\tAnd it is centered\n\n\t@motivating\n\t@ui\n\tScenario Outline: Images can be aligned left, center or right\n\t\tGiven an Image component\n\t\tAnd prop \"image-url\" is provided with a valid image url\n\t\tAnd prop \"align\" has <value>\n\t\tThen the image is displayed\n\t\tAnd it is aligned to the <value>\n\t\tExamples:\n\t\t\t| value |\n\t\t\t| left |\n\t\t\t| center |\n\t\t\t| right |\n\n\t@motivating\n\t@ui\n\tScenario: Image background can be assigned a color\n\t\tGiven an Image component\n\t\tAnd prop \"image-url\" is provided with a valid image url\n\t\tAnd prop \"background-color\" is provided a color\n\t\tThen the image is displayed\n\t\tAnd the background is the provided color\n\n\t@motivating\n\t@ui\n\tScenario: Image minimum height can be constrained\n\t\tGiven an Image component\n\t\tAnd prop \"image-url\" is provided\n\t\tAnd prop \"min-height\" is given a minimum value\n\t\tThen the image is displayed\n\t\tAnd the container size changes\n\t\tThen the image does not shrink below its minimum height";
13110
+ const scenario$x = "@author:kutay\n@owner:kutay\nFeature: Image\n\n\tBackground: A user on the portal is viewing the widget\n\t\tGiven a user viewing the image component\n\n\t@motivating\n\t@ui\n\tScenario: Image is displayed from URL\n\t\tGiven an Image component\n\t\tAnd prop \"image-url\" is provided with a valid image url\n\t\tThen the image is displayed\n\t\tAnd it is centered\n\n\t@motivating\n\t@ui\n\tScenario Outline: Images can be aligned left, center or right\n\t\tGiven an Image component\n\t\tAnd prop \"image-url\" is provided with a valid image url\n\t\tAnd prop \"align\" has <value>\n\t\tThen the image is displayed\n\t\tAnd it is aligned to the <value>\n\t\tExamples:\n\t\t\t| value |\n\t\t\t| left |\n\t\t\t| center |\n\t\t\t| right |\n\n\t@motivating\n\t@ui\n\tScenario: Image background can be assigned a color\n\t\tGiven an Image component\n\t\tAnd prop \"image-url\" is provided with a valid image url\n\t\tAnd prop \"background-color\" is provided a color\n\t\tThen the image is displayed\n\t\tAnd the background is the provided color\n\n\t@motivating\n\t@ui\n\tScenario: Image minimum height can be constrained\n\t\tGiven an Image component\n\t\tAnd prop \"image-url\" is provided\n\t\tAnd prop \"min-height\" is given a minimum value\n\t\tThen the image is displayed\n\t\tAnd the container size changes\n\t\tThen the image does not shrink below its minimum height";
12912
13111
 
12913
13112
  const Image_stories = {
12914
13113
  title: "Components/Image",
12915
13114
  parameters: {
12916
- scenario: scenario$w,
13115
+ scenario: scenario$x,
12917
13116
  },
12918
13117
  };
12919
13118
  const Image = () => {
@@ -12946,12 +13145,12 @@ const Image$1 = /*#__PURE__*/Object.freeze({
12946
13145
  MinimumHeight: MinimumHeight
12947
13146
  });
12948
13147
 
12949
- const scenario$x = "@author:derek\n@owner:noah\nFeature: Titled Section\n\n Background: The titled section has a label and content\n Given a titled section\n And it has a label\n And it has content in the content slot\n\n @motivating\n @ui\n Scenario: Text alignment defaults to left align but can be configured\n Given the titled section has \"text-align\" <textAlignPropValue>\n When a user views the titled section\n Then the text in the label is <aligned>\n And the text in the content is <aligned>\n Examples:\n | textAlignPropValue | aligned |\n | center | center |\n | left | left |\n | right | right |\n | | left |\n\n @minutia\n @ui\n Scenario: Label margin is configurable\n Given the titled section has \"label-margin\" <marginPropValue>\n When a user views the titled section\n Then <marginPropValue> margin is between the label and content\n Examples:\n | marginPropValue | margin |\n | none | no |\n | xxx-small | xxx-small |\n | xx-small | xx-small |\n | x-small | x-small |\n | small | small |\n | medium | medium |\n | large | large |\n | x-large | x-large |\n | xx-large | xx-large |\n | xxx-large | xxx-large |\n | xxxx-large | xxxx-large |\n | | no |\n\n @minutia\n @ui\n Scenario Outline: Titled section padding is configurable\n Given the titled section has \"padding\" <paddingPropValue>\n When a user views the titled section\n Then <paddingPropValue> padding is applied around the titled section\n Examples:\n | paddingPropValue | padding |\n | none | no |\n | xxx-small | xxx-small |\n | xx-small | xx-small |\n | x-small | x-small |\n | small | small |\n | medium | medium |\n | large | large |\n | x-large | x-large |\n | xx-large | xx-large |\n | xxx-large | xxx-large |\n | xxxx-large | xxxx-large |\n | | no |";
13148
+ const scenario$y = "@author:derek\n@owner:noah\nFeature: Titled Section\n\n Background: The titled section has a label and content\n Given a titled section\n And it has a label\n And it has content in the content slot\n\n @motivating\n @ui\n Scenario: Text alignment defaults to left align but can be configured\n Given the titled section has \"text-align\" <textAlignPropValue>\n When a user views the titled section\n Then the text in the label is <aligned>\n And the text in the content is <aligned>\n Examples:\n | textAlignPropValue | aligned |\n | center | center |\n | left | left |\n | right | right |\n | | left |\n\n @minutia\n @ui\n Scenario: Label margin is configurable\n Given the titled section has \"label-margin\" <marginPropValue>\n When a user views the titled section\n Then <marginPropValue> margin is between the label and content\n Examples:\n | marginPropValue | margin |\n | none | no |\n | xxx-small | xxx-small |\n | xx-small | xx-small |\n | x-small | x-small |\n | small | small |\n | medium | medium |\n | large | large |\n | x-large | x-large |\n | xx-large | xx-large |\n | xxx-large | xxx-large |\n | xxxx-large | xxxx-large |\n | | no |\n\n @minutia\n @ui\n Scenario Outline: Titled section padding is configurable\n Given the titled section has \"padding\" <paddingPropValue>\n When a user views the titled section\n Then <paddingPropValue> padding is applied around the titled section\n Examples:\n | paddingPropValue | padding |\n | none | no |\n | xxx-small | xxx-small |\n | xx-small | xx-small |\n | x-small | x-small |\n | small | small |\n | medium | medium |\n | large | large |\n | x-large | x-large |\n | xx-large | xx-large |\n | xxx-large | xxx-large |\n | xxxx-large | xxxx-large |\n | | no |";
12950
13149
 
12951
13150
  const TitledSection_stories = {
12952
13151
  title: "Components/Titled Section",
12953
13152
  parameters: {
12954
- scenario: scenario$x,
13153
+ scenario: scenario$y,
12955
13154
  },
12956
13155
  };
12957
13156
  const AlignLeft = () => {
@@ -13347,12 +13546,12 @@ const Scroll = /*#__PURE__*/Object.freeze({
13347
13546
  ShoelaceProps: ShoelaceProps
13348
13547
  });
13349
13548
 
13350
- const scenario$y = "@author:Zach\n@owner:Zach\nFeature: Tabs\n\n The Tabs takes in the Tab component as children and maps through to display their header and content.\n\n Background: A user on the portal is viewing the widget\n Given a user viewing the Tabs component\n\n @motivating\n Scenario: Content inside the active tab is shown\n Given the header is set to <tabHeader>\n And the content inside is <tabContent>\n And the user has clicked <tabHeader>\n Then the <tabContent> is shown\n Examples:\n | tabHeader | tabContent |\n | Settings | This is the settings tab |\n | General | This is the general tab |\n | History | This is the history tab |\n\n @motivating\n @ui\n Scenario: The placement of the tabs is configurable\n Given The placement prop has been passed a valid <placement>\n Then tabs are placed on the <placementResult>\n Examples:\n | placement | placementResult |\n | | top of the content |\n | left | left hand side of the content |\n | right | right hand side of the content |\n | bottom | bottom of the content |\n\n\n @minutia\n @ui\n Scenario Outline: Tabs are setup to use the brand color\n Given the brand color is set to darkblue\n Then the text inside the active tab is darkblue\n And the underline of the active tab is darkblue\n\n @ui\n Scenario: Tabs are responsive\n Given the user is on a mobile device\n When there are more tabs than the horizontal space allows for\n Then clickable arrows appear on the left and right of the tabs\n And the tabs are scrollable\n\n @landmine\n Scenario: Program section cannot be used inside of tabs\n Given a tabs component\n And tab containing a program section with program-id \"test123\"\n And the program section wraps a component using program context\n When the tabs component is rendered\n Then the \"sq:program-id\" event listener for the program section is removed\n And the component does not use program-id \"test123\" to source its data\n And falls back to the global program id";
13549
+ const scenario$z = "@author:Zach\n@owner:Zach\nFeature: Tabs\n\n The Tabs takes in the Tab component as children and maps through to display their header and content.\n\n Background: A user on the portal is viewing the widget\n Given a user viewing the Tabs component\n\n @motivating\n Scenario: Content inside the active tab is shown\n Given the header is set to <tabHeader>\n And the content inside is <tabContent>\n And the user has clicked <tabHeader>\n Then the <tabContent> is shown\n Examples:\n | tabHeader | tabContent |\n | Settings | This is the settings tab |\n | General | This is the general tab |\n | History | This is the history tab |\n\n @motivating\n @ui\n Scenario: The placement of the tabs is configurable\n Given The placement prop has been passed a valid <placement>\n Then tabs are placed on the <placementResult>\n Examples:\n | placement | placementResult |\n | | top of the content |\n | left | left hand side of the content |\n | right | right hand side of the content |\n | bottom | bottom of the content |\n\n\n @minutia\n @ui\n Scenario Outline: Tabs are setup to use the brand color\n Given the brand color is set to darkblue\n Then the text inside the active tab is darkblue\n And the underline of the active tab is darkblue\n\n @ui\n Scenario: Tabs are responsive\n Given the user is on a mobile device\n When there are more tabs than the horizontal space allows for\n Then clickable arrows appear on the left and right of the tabs\n And the tabs are scrollable\n\n @landmine\n Scenario: Program section cannot be used inside of tabs\n Given a tabs component\n And tab containing a program section with program-id \"test123\"\n And the program section wraps a component using program context\n When the tabs component is rendered\n Then the \"sq:program-id\" event listener for the program section is removed\n And the component does not use program-id \"test123\" to source its data\n And falls back to the global program id";
13351
13550
 
13352
13551
  const Tabs_stories = {
13353
13552
  title: "Components/Tabs",
13354
13553
  parameters: {
13355
- scenario: scenario$y,
13554
+ scenario: scenario$z,
13356
13555
  },
13357
13556
  };
13358
13557
  const SimpleTabs = () => (index.h("div", { style: { maxWidth: "700px", margin: "auto" }, innerHTML: `
@@ -13852,12 +14051,12 @@ const Tabs = /*#__PURE__*/Object.freeze({
13852
14051
  RightTabs: RightTabs
13853
14052
  });
13854
14053
 
13855
- const scenario$z = "@author:johan\n@owner:johan\nFeature: Share Code\n\n The share code component is a box that allows users to see and copy their referral code for a given program\n\n Background: Environment\n Given there is a valid program ID in the environment\n And there is a valid user ID and account ID in the environment\n\n @motivating\n Scenario: A Users referral code can be copied to their clipboard\n Given tooltiptext is \"hello tooltip\"\n When the component renders\n Then there is a textbox with the user's share code\n When the clipboard icon is clicked\n Then the code is copied to clipboard\n And a tooltip will appear for ~1 second\n\n @minutia\n Scenario: Tooltip lifespan defaults to 2000\n Given the tooltip's lifespan is set to 2000\n And there is tooltip text\n When the component renders\n And the clipboard icon is clicked\n Then a tooltip will appear for ~2 seconds\n\n @minutia\n Scenario: Demo\n Given isDemo() returns true\n Then the share code is \"SHARECODE001\"\n And the component won't be interactive\n And the tooltip is hidden\n\n @minutia\n Scenario: Program ID can be sourced from prop\n Given the programId prop is set to \"program-a\"\n And window.widgetIdent.programId is set to \"program-b\"\n When the component renders\n Then the share code is for \"program-a\"\n\n @minutia\n Scenario: Program ID can be sourced from window\n Given the programId prop is unset\n And window.widgetIdent.programId is set to \"program-b\"\n When the component renders\n Then the share code is for \"program-b\"\n\n @minutia\n Scenario: An analytic event is fired when a user copies their code\n Given a user viewing the share code component\n And the component is rendered for \"program-a\"\n When they click to copy their code\n Then an \"USER_REFERRAL_PROGRAM_ENGAGEMENT_EVENT\" analytic event is fired\n And it is for \"program-a\"\n And it has share medium \"DIRECT\"\n\n\n @ui\n Scenario Outline: user can edit the alignment of the share code text\n Given a user is editing the share code component\n Then they see \"Align text\" props\n And the default value is \"left\"\n When they change the option to <option>\n Then they see the text in <position>\n Examples:\n | option | position |\n | left | left |\n | center | center |\n | right | right |\n\n @ui\n Scenario Outline: The position of the copy button can be changed\n Given a user is editing the share code component\n Then they see \"Style\" props\n And the default value is \"icon\"\n When they change the option to <option>\n Then they see the copy button in <position>\n Examples:\n | option | position |\n | button outside | outside the input, on the right |\n | button below | outside the input, below |\n | icon | inside the input as an icon |\n";
14054
+ const scenario$A = "@author:johan\n@owner:johan\nFeature: Share Code\n\n The share code component is a box that allows users to see and copy their referral code for a given program\n\n Background: Environment\n Given there is a valid program ID in the environment\n And there is a valid user ID and account ID in the environment\n\n @motivating\n Scenario: A Users referral code can be copied to their clipboard\n Given tooltiptext is \"hello tooltip\"\n When the component renders\n Then there is a textbox with the user's share code\n When the clipboard icon is clicked\n Then the code is copied to clipboard\n And a tooltip will appear for ~1 second\n\n @minutia\n Scenario: Tooltip lifespan defaults to 2000\n Given the tooltip's lifespan is set to 2000\n And there is tooltip text\n When the component renders\n And the clipboard icon is clicked\n Then a tooltip will appear for ~2 seconds\n\n @minutia\n Scenario: Demo\n Given isDemo() returns true\n Then the share code is \"SHARECODE001\"\n And the component won't be interactive\n And the tooltip is hidden\n\n @minutia\n Scenario: Program ID can be sourced from prop\n Given the programId prop is set to \"program-a\"\n And window.widgetIdent.programId is set to \"program-b\"\n When the component renders\n Then the share code is for \"program-a\"\n\n @minutia\n Scenario: Program ID can be sourced from window\n Given the programId prop is unset\n And window.widgetIdent.programId is set to \"program-b\"\n When the component renders\n Then the share code is for \"program-b\"\n\n @minutia\n Scenario: An analytic event is fired when a user copies their code\n Given a user viewing the share code component\n And the component is rendered for \"program-a\"\n When they click to copy their code\n Then an \"USER_REFERRAL_PROGRAM_ENGAGEMENT_EVENT\" analytic event is fired\n And it is for \"program-a\"\n And it has share medium \"DIRECT\"\n\n\n @ui\n Scenario Outline: user can edit the alignment of the share code text\n Given a user is editing the share code component\n Then they see \"Align text\" props\n And the default value is \"left\"\n When they change the option to <option>\n Then they see the text in <position>\n Examples:\n | option | position |\n | left | left |\n | center | center |\n | right | right |\n\n @ui\n Scenario Outline: The position of the copy button can be changed\n Given a user is editing the share code component\n Then they see \"Style\" props\n And the default value is \"icon\"\n When they change the option to <option>\n Then they see the copy button in <position>\n Examples:\n | option | position |\n | button outside | outside the input, on the right |\n | button below | outside the input, below |\n | icon | inside the input as an icon |\n";
13856
14055
 
13857
14056
  const ShareCode_stories = {
13858
14057
  title: "Components/Share Code",
13859
14058
  parameters: {
13860
- scenario: scenario$z,
14059
+ scenario: scenario$A,
13861
14060
  },
13862
14061
  };
13863
14062
  const ShareCode = () => {
@@ -13891,7 +14090,7 @@ const CopyButtonBelow$1 = () => {
13891
14090
  buttonStyle: "button-below",
13892
14091
  })));
13893
14092
  };
13894
- const Error$7 = () => {
14093
+ const Error$8 = () => {
13895
14094
  const props = {
13896
14095
  copyString: "https://noah.example.com",
13897
14096
  disabled: true,
@@ -13912,15 +14111,15 @@ const ShareCode$1 = /*#__PURE__*/Object.freeze({
13912
14111
  CustomTooltipDuration: CustomTooltipDuration,
13913
14112
  CopyButton: CopyButton$1,
13914
14113
  CopyButtonBelow: CopyButtonBelow$1,
13915
- Error: Error$7
14114
+ Error: Error$8
13916
14115
  });
13917
14116
 
13918
- const scenario$A = "@author:sam\n@owner:sam\nFeature: Referral Code\n\n The referral code component is a box that allows users to see and copy their referral promo code for a given program\n\n Background: Environment\n Given there is a valid program ID in the environment\n And there is a valid user ID and account ID in the environment\n\n @motivating\n Scenario: A Users referral code can be copied to their clipboard\n Given tooltiptext is \"hello tooltip\"\n When the component renders\n Then there is a textbox with the user's referral code\n When the clipboard icon is clicked\n Then the code is copied to clipboard\n And a tooltip will appear for ~1 second\n\n @minutia\n Scenario: Tooltip lifespan can be customized\n Given the tooltip's lifespan is set to 2000\n And there is tooltip text\n When the component renders\n And the clipboard icon is clicked\n Then a tooltip will appear for ~2 seconds\n\n @minutia\n Scenario: Demo\n Given isDemo() returns true\n Then the share code is \"SHARECODE001\"\n And the component won't be interactive\n And the tooltip is hidden\n\n @minutia\n Scenario: Program ID can be sourced from prop\n Given the programId prop is set to \"program-a\"\n And window.widgetIdent.programId is set to \"program-b\"\n When the component renders\n Then the share code is for \"program-a\"\n\n @minutia\n Scenario: Program ID can be sourced from window\n Given the programId prop is unset\n And window.widgetIdent.programId is set to \"program-b\"\n When the component renders\n Then the share code is for \"program-b\"\n\n @minutia\n Scenario: An analytic event is fired when a user copies their code\n Given a user viewing the referral code component\n And the component is rendered for \"program-a\"\n When they click to copy their code\n Then an \"USER_REFERRAL_PROGRAM_ENGAGEMENT_EVENT\" analytic event is fired\n And it is for \"program-a\"\n And it has share medium \"DIRECT\"\n\n @ui\n Scenario Outline: user can edit the alignment of the share code text\n Given a user is editing the referral code component\n Then they see \"Align text\" props\n And the default value is \"left\"\n When they change the option to <option>\n Then they see the text in <position>\n Examples:\n | option | position |\n | left | left |\n | center | center |\n | right | right |\n\n @ui\n Scenario Outline: The position of the copy button can be changed\n Given a user is editing the referral code component\n Then they see \"Style\" props\n And the default value is \"icon\"\n When they change the option to <option>\n Then they see the copy button in <position>\n Examples:\n | option | position |\n | button outside | outside the input, on the right |\n | button below | outside the input, below |\n | icon | inside the input as an icon |\n";
14117
+ const scenario$B = "@author:sam\n@owner:sam\nFeature: Referral Code\n\n The referral code component is a box that allows users to see and copy their referral promo code for a given program\n\n Background: Environment\n Given there is a valid program ID in the environment\n And there is a valid user ID and account ID in the environment\n\n @motivating\n Scenario: A Users referral code can be copied to their clipboard\n Given tooltiptext is \"hello tooltip\"\n When the component renders\n Then there is a textbox with the user's referral code\n When the clipboard icon is clicked\n Then the code is copied to clipboard\n And a tooltip will appear for ~1 second\n\n @minutia\n Scenario: Tooltip lifespan can be customized\n Given the tooltip's lifespan is set to 2000\n And there is tooltip text\n When the component renders\n And the clipboard icon is clicked\n Then a tooltip will appear for ~2 seconds\n\n @minutia\n Scenario: Demo\n Given isDemo() returns true\n Then the share code is \"SHARECODE001\"\n And the component won't be interactive\n And the tooltip is hidden\n\n @minutia\n Scenario: Program ID can be sourced from prop\n Given the programId prop is set to \"program-a\"\n And window.widgetIdent.programId is set to \"program-b\"\n When the component renders\n Then the share code is for \"program-a\"\n\n @minutia\n Scenario: Program ID can be sourced from window\n Given the programId prop is unset\n And window.widgetIdent.programId is set to \"program-b\"\n When the component renders\n Then the share code is for \"program-b\"\n\n @minutia\n Scenario: An analytic event is fired when a user copies their code\n Given a user viewing the referral code component\n And the component is rendered for \"program-a\"\n When they click to copy their code\n Then an \"USER_REFERRAL_PROGRAM_ENGAGEMENT_EVENT\" analytic event is fired\n And it is for \"program-a\"\n And it has share medium \"DIRECT\"\n\n @ui\n Scenario Outline: user can edit the alignment of the share code text\n Given a user is editing the referral code component\n Then they see \"Align text\" props\n And the default value is \"left\"\n When they change the option to <option>\n Then they see the text in <position>\n Examples:\n | option | position |\n | left | left |\n | center | center |\n | right | right |\n\n @ui\n Scenario Outline: The position of the copy button can be changed\n Given a user is editing the referral code component\n Then they see \"Style\" props\n And the default value is \"icon\"\n When they change the option to <option>\n Then they see the copy button in <position>\n Examples:\n | option | position |\n | button outside | outside the input, on the right |\n | button below | outside the input, below |\n | icon | inside the input as an icon |\n";
13919
14118
 
13920
14119
  const ReferralCode_stories = {
13921
14120
  title: "Components/Referral Code",
13922
14121
  parameters: {
13923
- scenario: scenario$A,
14122
+ scenario: scenario$B,
13924
14123
  },
13925
14124
  };
13926
14125
  const ReferralCode = () => {
@@ -13964,7 +14163,7 @@ const CopyButtonBelow$2 = () => {
13964
14163
  buttonStyle: "button-below",
13965
14164
  })));
13966
14165
  };
13967
- const Error$8 = () => {
14166
+ const Error$9 = () => {
13968
14167
  const props = {
13969
14168
  copyString: "https://noah.example.com",
13970
14169
  disabled: true,
@@ -13988,7 +14187,7 @@ const ReferralCode$1 = /*#__PURE__*/Object.freeze({
13988
14187
  CustomTooltipDuration: CustomTooltipDuration$1,
13989
14188
  CopyButton: CopyButton$2,
13990
14189
  CopyButtonBelow: CopyButtonBelow$2,
13991
- Error: Error$8
14190
+ Error: Error$9
13992
14191
  });
13993
14192
 
13994
14193
  // import scenario from "./ShareCode.feature";
@@ -13998,7 +14197,7 @@ const EmailRegistration_stories = {
13998
14197
  // scenario,
13999
14198
  },
14000
14199
  };
14001
- const defaultProps$d = {
14200
+ const defaultProps$f = {
14002
14201
  states: {
14003
14202
  error: "",
14004
14203
  loading: false,
@@ -14017,59 +14216,59 @@ const defaultProps$d = {
14017
14216
  fraudErrorMessageTitle: "Looks like you tried referring yourself",
14018
14217
  },
14019
14218
  };
14020
- const Default$f = () => index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, defaultProps$d));
14219
+ const Default$i = () => index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, defaultProps$f));
14021
14220
  const HasFirstNameLastName = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14022
- ...defaultProps$d,
14221
+ ...defaultProps$f,
14023
14222
  content: {
14024
- ...defaultProps$d.content,
14223
+ ...defaultProps$f.content,
14025
14224
  includeName: true,
14026
14225
  },
14027
14226
  })));
14028
14227
  const WithSlots = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14029
- ...defaultProps$d,
14228
+ ...defaultProps$f,
14030
14229
  content: {
14031
- ...defaultProps$d.content,
14230
+ ...defaultProps$f.content,
14032
14231
  topSlot: index.h("div", null, "Hello this is the top slot"),
14033
14232
  bottomSlot: index.h("div", null, "Hello this is the bottom slot"),
14034
14233
  },
14035
14234
  })));
14036
14235
  const NoBorder$1 = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14037
- ...defaultProps$d,
14236
+ ...defaultProps$f,
14038
14237
  content: {
14039
- ...defaultProps$d.content,
14238
+ ...defaultProps$f.content,
14040
14239
  hideBorder: true,
14041
14240
  },
14042
14241
  })));
14043
14242
  const BackgroundColor$2 = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14044
- ...defaultProps$d,
14243
+ ...defaultProps$f,
14045
14244
  content: {
14046
- ...defaultProps$d.content,
14245
+ ...defaultProps$f.content,
14047
14246
  backgroundColor: "aquamarine",
14048
14247
  },
14049
14248
  })));
14050
- const Loading$4 = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14051
- ...defaultProps$d,
14249
+ const Loading$5 = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14250
+ ...defaultProps$f,
14052
14251
  states: {
14053
14252
  error: "",
14054
14253
  loading: true,
14055
14254
  },
14056
14255
  })));
14057
- const Error$9 = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14058
- ...defaultProps$d,
14256
+ const Error$a = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14257
+ ...defaultProps$f,
14059
14258
  states: {
14060
14259
  error: "Something went wrong. Please try again.",
14061
14260
  loading: false,
14062
14261
  },
14063
14262
  })));
14064
14263
  const FraudError = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14065
- ...defaultProps$d,
14264
+ ...defaultProps$f,
14066
14265
  states: {
14067
14266
  error: "FRAUD",
14068
14267
  loading: false,
14069
14268
  },
14070
14269
  })));
14071
14270
  const EmptyEmailError = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14072
- ...defaultProps$d,
14271
+ ...defaultProps$f,
14073
14272
  states: {
14074
14273
  error: "Something went wrong. Please try again.",
14075
14274
  loading: false,
@@ -14082,26 +14281,26 @@ const EmptyEmailError = () => (index.h(emailRegistrationView.EmailRegistrationVi
14082
14281
  const EmailRegistration = /*#__PURE__*/Object.freeze({
14083
14282
  __proto__: null,
14084
14283
  'default': EmailRegistration_stories,
14085
- Default: Default$f,
14284
+ Default: Default$i,
14086
14285
  HasFirstNameLastName: HasFirstNameLastName,
14087
14286
  WithSlots: WithSlots,
14088
14287
  NoBorder: NoBorder$1,
14089
14288
  BackgroundColor: BackgroundColor$2,
14090
- Loading: Loading$4,
14091
- Error: Error$9,
14289
+ Loading: Loading$5,
14290
+ Error: Error$a,
14092
14291
  FraudError: FraudError,
14093
14292
  EmptyEmailError: EmptyEmailError
14094
14293
  });
14095
14294
 
14096
- const scenario$B = "@author:truman\n@owner:truman\nFeature: Coupon Code\n\n The coupon code component is a box that allows users to see and copy their coupon code for a given program\n\n @motivating\n Scenario: Component only fetches codes from current program\n Given a user has multiple rewards from various programs\n When the component is loaded\n Then it fetches the user's rewards from only the program associated with the widget\n\n @motivating\n Scenario: Component only looks at fueltank rewards\n Given a user has multiple rewards of different types\n When the component is loaded\n Then it filters the user's reward to only return FUELTANK rewards\n\n\n @motivating\n Scenario: The first (i.e. most recently received) reward is the reward that is displayed\n Given a user has at least one fueltank reward\n And the fueltank reward is available\n Then the coupon code component shows the first reward returned\n And this reward is the most recently received reward by the user\n\n @motivating\n Scenario Outline: Coupon code has multiple states depending on reward status\n Given a user has at least one fueltank reward\n And the reward has most recent status <status>\n And the dateScheduledFor field is <dateScheduledFor>\n Then the component's status is set to <componentStatus>\n And the <errorMessageTextProp> is displayed under the input field\n\n Examples:\n | status | dateScheduledFor | componentStatus | errorMessageTextProp |\n | AVAILABLE | null | AVAILABLE | N/A |\n | EXPIRED | null | EXPIRED | expiredErrorMessage |\n | REDEEMED | null | REDEEMED | redeemedMessage |\n | CANCELLED | null | CANCELLED | cancelledErrorMessage |\n | PENDING | null | EMPTY_TANK | fullfillmentErrorMessage |\n | PENDING | 123412341234 | PENDING | pendingErrorMessage |\n | null | null | ERROR | genericErrorMessage |\n\n Scenario Outline: Coupon code's error message text props are grouped\n Given an end user is viewing the coupon code component in the widget editor\n And they are looking at the component's properties\n Then they see <prop>\n And <prop> is grouped under \"Coupon code error\"\n Examples:\n | prop |\n | N/A |\n | expiredErrorMessage |\n | redeemedMessage |\n | cancelledErrorMessage |\n | fullfillmentErrorMessage |\n | pendingErrorMessage |\n | genericErrorMessage |\n\n @minutia\n Scenario: Tooltip lifespan defaults to 2000\n Given the tooltip's lifespan is set to 2000\n And there is tooltip text\n When the component renders\n And the clipboard icon is clicked\n Then a tooltip appears for ~2 seconds\n\n @ui\n Scenario: Component shows an error state when there is an error\n Given a user is viewing the coupon code component\n When there is an error in the coupon code\n Then in place of the coupon code is an alert banner\n And the alert banner gives information about the error to the user\n\n @ui\n Scenario: Component shows an loading state\n Given a user is viewing the coupon code component\n When the coupon code is loading in\n Then the text inside the input is \"Loading...\"\n And the coupon code input box has a gray background\n And the cursor is set to \"default\"\n And the user cannot copy the text\n\n @ui\n Scenario Outline: User can edit the alignment of the coupon code text\n Given a user is editing the coupon code component\n Then they see \"Align text\" props\n And the default value is \"left\"\n When they change the option to <option>\n Then they see the text in <position>\n Examples:\n | option | position |\n | left | left |\n | center | center |\n | right | right |\n\n @ui\n Scenario Outline: The position of the copy button can be changed\n Given a user is editing the coupon code component\n Then they see \"Style\" props\n And the default value is \"icon\"\n When they change the option to <option>\n Then they see the copy button in <position>\n Examples:\n | option | position |\n | button outside | outside the input, on the right |\n | button below | outside the input, below |\n | icon | inside the input as an icon |\n\n @minutia\n Scenario: ICU string converts to a date\n Given a user is viewing a live coupon code code component\n And the \"pendingErrorText\" has the \"{unpendDate}\" ICU string\n And the program is configured for rewards to be pending\n Then the user will see an info alert banner\n And the ICU string is converted to the unpend date\n";
14295
+ const scenario$C = "@author:truman\n@owner:truman\nFeature: Coupon Code\n\n The coupon code component is a box that allows users to see and copy their coupon code for a given program\n\n @motivating\n Scenario: Component only fetches codes from current program\n Given a user has multiple rewards from various programs\n When the component is loaded\n Then it fetches the user's rewards from only the program associated with the widget\n\n @motivating\n Scenario: Component only looks at fueltank rewards\n Given a user has multiple rewards of different types\n When the component is loaded\n Then it filters the user's reward to only return FUELTANK rewards\n\n\n @motivating\n Scenario: The first (i.e. most recently received) reward is the reward that is displayed\n Given a user has at least one fueltank reward\n And the fueltank reward is available\n Then the coupon code component shows the first reward returned\n And this reward is the most recently received reward by the user\n\n @motivating\n Scenario Outline: Coupon code has multiple states depending on reward status\n Given a user has at least one fueltank reward\n And the reward has most recent status <status>\n And the dateScheduledFor field is <dateScheduledFor>\n Then the component's status is set to <componentStatus>\n And the <errorMessageTextProp> is displayed under the input field\n\n Examples:\n | status | dateScheduledFor | componentStatus | errorMessageTextProp |\n | AVAILABLE | null | AVAILABLE | N/A |\n | EXPIRED | null | EXPIRED | expiredErrorMessage |\n | REDEEMED | null | REDEEMED | redeemedMessage |\n | CANCELLED | null | CANCELLED | cancelledErrorMessage |\n | PENDING | null | EMPTY_TANK | fullfillmentErrorMessage |\n | PENDING | 123412341234 | PENDING | pendingErrorMessage |\n | null | null | ERROR | genericErrorMessage |\n\n Scenario Outline: Coupon code's error message text props are grouped\n Given an end user is viewing the coupon code component in the widget editor\n And they are looking at the component's properties\n Then they see <prop>\n And <prop> is grouped under \"Coupon code error\"\n Examples:\n | prop |\n | N/A |\n | expiredErrorMessage |\n | redeemedMessage |\n | cancelledErrorMessage |\n | fullfillmentErrorMessage |\n | pendingErrorMessage |\n | genericErrorMessage |\n\n @minutia\n Scenario: Tooltip lifespan defaults to 2000\n Given the tooltip's lifespan is set to 2000\n And there is tooltip text\n When the component renders\n And the clipboard icon is clicked\n Then a tooltip appears for ~2 seconds\n\n @ui\n Scenario: Component shows an error state when there is an error\n Given a user is viewing the coupon code component\n When there is an error in the coupon code\n Then in place of the coupon code is an alert banner\n And the alert banner gives information about the error to the user\n\n @ui\n Scenario: Component shows an loading state\n Given a user is viewing the coupon code component\n When the coupon code is loading in\n Then the text inside the input is \"Loading...\"\n And the coupon code input box has a gray background\n And the cursor is set to \"default\"\n And the user cannot copy the text\n\n @ui\n Scenario Outline: User can edit the alignment of the coupon code text\n Given a user is editing the coupon code component\n Then they see \"Align text\" props\n And the default value is \"left\"\n When they change the option to <option>\n Then they see the text in <position>\n Examples:\n | option | position |\n | left | left |\n | center | center |\n | right | right |\n\n @ui\n Scenario Outline: The position of the copy button can be changed\n Given a user is editing the coupon code component\n Then they see \"Style\" props\n And the default value is \"icon\"\n When they change the option to <option>\n Then they see the copy button in <position>\n Examples:\n | option | position |\n | button outside | outside the input, on the right |\n | button below | outside the input, below |\n | icon | inside the input as an icon |\n\n @minutia\n Scenario: ICU string converts to a date\n Given a user is viewing a live coupon code code component\n And the \"pendingErrorText\" has the \"{unpendDate}\" ICU string\n And the program is configured for rewards to be pending\n Then the user will see an info alert banner\n And the ICU string is converted to the unpend date\n";
14097
14296
 
14098
14297
  const CouponCode_stories = {
14099
14298
  title: "Components/Coupon Code",
14100
14299
  parameters: {
14101
- scenario: scenario$B,
14300
+ scenario: scenario$C,
14102
14301
  },
14103
14302
  };
14104
- const defaultProps$e = {
14303
+ const defaultProps$g = {
14105
14304
  tooltiptext: "Copied to Clipboard",
14106
14305
  copyString: "THANKSJANE125uv125",
14107
14306
  open: false,
@@ -14126,43 +14325,43 @@ const TextAlignRight$3 = () => {
14126
14325
  return index.h("sqm-coupon-code", { textAlign: "right" });
14127
14326
  };
14128
14327
  const CopyButton$3 = () => {
14129
- return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$e, { buttonStyle: "button-outside" })));
14328
+ return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$g, { buttonStyle: "button-outside" })));
14130
14329
  };
14131
14330
  const CopyButtonCustomLabel = () => {
14132
- return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$e, { buttonStyle: "button-outside", "copy-button-label": "test long custom label" })));
14331
+ return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$g, { buttonStyle: "button-outside", "copy-button-label": "test long custom label" })));
14133
14332
  };
14134
14333
  const CopyButtonBelow$3 = () => {
14135
- return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$e, { buttonStyle: "button-below" })));
14334
+ return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$g, { buttonStyle: "button-below" })));
14136
14335
  };
14137
14336
  const CopyButtonBelowCustomLabel = () => {
14138
- return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$e, { buttonStyle: "button-below", "copy-button-label": "test long custom label" })));
14337
+ return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$g, { buttonStyle: "button-below", "copy-button-label": "test long custom label" })));
14139
14338
  };
14140
- const Loading$5 = () => {
14141
- return index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { loading: true }));
14339
+ const Loading$6 = () => {
14340
+ return index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$g, { loading: true }));
14142
14341
  };
14143
14342
  const CopyButtonLoading = () => {
14144
- return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { buttonStyle: "button-outside", loading: true })));
14343
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$g, { buttonStyle: "button-outside", loading: true })));
14145
14344
  };
14146
14345
  const CopyButtonBelowLoading = () => {
14147
- return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { buttonStyle: "button-below", loading: true })));
14346
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$g, { buttonStyle: "button-below", loading: true })));
14148
14347
  };
14149
14348
  const ErrorGeneric = () => {
14150
- return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { errorType: "warning", error: true, errorText: "We couldn't fetch your code. Please try again later or reach out to the Support team for help resolving this issue." })));
14349
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$g, { errorType: "warning", error: true, errorText: "We couldn't fetch your code. Please try again later or reach out to the Support team for help resolving this issue." })));
14151
14350
  };
14152
14351
  const ErrorPending = () => {
14153
- return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { errorType: "info", error: true, errorText: "Your code will be available on April 24, 2023. Mark your calendar and come back then to redeem your reward!" })));
14352
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$g, { errorType: "info", error: true, errorText: "Your code will be available on April 24, 2023. Mark your calendar and come back then to redeem your reward!" })));
14154
14353
  };
14155
14354
  const ErrorFullfillment = () => {
14156
- return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { errorType: "warning", error: true, errorText: "We couldn't fetch your code. Please try again later or reach out to the Support team for help resolving this issue." })));
14355
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$g, { errorType: "warning", error: true, errorText: "We couldn't fetch your code. Please try again later or reach out to the Support team for help resolving this issue." })));
14157
14356
  };
14158
14357
  const ErrorCancelled = () => {
14159
- return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { errorType: "warning", error: true, errorText: "This code has been cancelled. Please reach out to the Support team for help resolving this issue." })));
14358
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$g, { errorType: "warning", error: true, errorText: "This code has been cancelled. Please reach out to the Support team for help resolving this issue." })));
14160
14359
  };
14161
14360
  const ErrorExpired = () => {
14162
- return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { errorType: "warning", error: true, errorText: "Looks like this code has expired. Please reach out to the Support team for help resolving this issue." })));
14361
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$g, { errorType: "warning", error: true, errorText: "Looks like this code has expired. Please reach out to the Support team for help resolving this issue." })));
14163
14362
  };
14164
14363
  const ErrorRedeemed = () => {
14165
- return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { errorType: "success", error: true, errorText: "Looks like you\u2019ve already redeemed this code." })));
14364
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$g, { errorType: "success", error: true, errorText: "Looks like you\u2019ve already redeemed this code." })));
14166
14365
  };
14167
14366
 
14168
14367
  const CouponCode$1 = /*#__PURE__*/Object.freeze({
@@ -14177,7 +14376,7 @@ const CouponCode$1 = /*#__PURE__*/Object.freeze({
14177
14376
  CopyButtonCustomLabel: CopyButtonCustomLabel,
14178
14377
  CopyButtonBelow: CopyButtonBelow$3,
14179
14378
  CopyButtonBelowCustomLabel: CopyButtonBelowCustomLabel,
14180
- Loading: Loading$5,
14379
+ Loading: Loading$6,
14181
14380
  CopyButtonLoading: CopyButtonLoading,
14182
14381
  CopyButtonBelowLoading: CopyButtonBelowLoading,
14183
14382
  ErrorGeneric: ErrorGeneric,
@@ -14188,55 +14387,55 @@ const CouponCode$1 = /*#__PURE__*/Object.freeze({
14188
14387
  ErrorRedeemed: ErrorRedeemed
14189
14388
  });
14190
14389
 
14191
- const scenario$C = "@author:noah\n@owner:noah\n\nFeature: Logout Current User\n\n Background:\n Given a user viewing an instant access widget\n\n @motivating\n @ui\n Scenario: A user on an instant access widget\n Given the user is identified\n And the user is logged in\n Then the component identifies the user by displaying their email in an ICU string\n And the users email displayed in the ICU string using hte \"{email}\" variable\n\n @motivating\n @ui\n Scenario: Users can switch who they are identified as through a link\n Given the user is identified\n And the user is logged in\n When the user clicks the link in the component\n Then the saved user identity is emptied\n And they are sent back to the registration form to re-identify themselves\n\n @minutia\n Scenario: Logout link empties the saved User Identity\n Given a valid user identity\n And the user is viewing the \"logged-in\" template\n When they click the logout link\n Then the user identity is set to \"undefined\"\n And the user is returned to the \"logged-out\" template";
14390
+ const scenario$D = "@author:noah\n@owner:noah\n\nFeature: Logout Current User\n\n Background:\n Given a user viewing an instant access widget\n\n @motivating\n @ui\n Scenario: A user on an instant access widget\n Given the user is identified\n And the user is logged in\n Then the component identifies the user by displaying their email in an ICU string\n And the users email displayed in the ICU string using hte \"{email}\" variable\n\n @motivating\n @ui\n Scenario: Users can switch who they are identified as through a link\n Given the user is identified\n And the user is logged in\n When the user clicks the link in the component\n Then the saved user identity is emptied\n And they are sent back to the registration form to re-identify themselves\n\n @minutia\n Scenario: Logout link empties the saved User Identity\n Given a valid user identity\n And the user is viewing the \"logged-in\" template\n When they click the logout link\n Then the user identity is set to \"undefined\"\n And the user is returned to the \"logged-out\" template";
14192
14391
 
14193
14392
  const LogoutCurrentUser_stories = {
14194
14393
  title: "Components/Logout Current User",
14195
14394
  parameters: {
14196
- scenario: scenario$C,
14395
+ scenario: scenario$D,
14197
14396
  },
14198
14397
  };
14199
- const defaultProps$f = {
14398
+ const defaultProps$h = {
14200
14399
  filledInEmailText: "Currently showing referral data for noah.clarke@saasquatch.com",
14201
14400
  onSwitchClick: () => console.log("clicked"),
14202
14401
  switchUserText: "not you?",
14203
14402
  loading: false,
14204
14403
  emailErrorText: "Error fetching email",
14205
14404
  };
14206
- const Default$g = () => {
14207
- return index.h(sqmLogoutCurrentUserView.LogoutCurrentUserView, Object.assign({}, defaultProps$f));
14405
+ const Default$j = () => {
14406
+ return index.h(sqmLogoutCurrentUserView.LogoutCurrentUserView, Object.assign({}, defaultProps$h));
14208
14407
  };
14209
14408
 
14210
14409
  const LogoutCurrentUser = /*#__PURE__*/Object.freeze({
14211
14410
  __proto__: null,
14212
14411
  'default': LogoutCurrentUser_stories,
14213
- Default: Default$g
14412
+ Default: Default$j
14214
14413
  });
14215
14414
 
14216
- const scenario$D = "@author:noah\n@owner:noah\n\nFeature: Link Button\n\n\t@ui\n\tScenario: Links can be opened in the same tab\n\t\tWhen a user clicks the button\n\t\tThen a link opens in the same tab\n\t\tAnd if the component is in an iFrame then the link is opened in the parent window not the iFrame\n\n\t@ui\n\tScenario: Links can be opened in a new tab\n\t\tWhen a user clicks the button\n\t\tThen a link opens in a new tab\n\t\tAnd if the component is in an iFrame then the link is still opened in a new tab\n\n\n\t@ui\n\tScenario: Props control the link and button text\n\t\tGiven the \"link\" prop is set to \"https://www.example.com\"\n\t\tAnd the \"buttonText\" prop is set to \"Click me!\"\n\t\tThen a button is shown with the text \"Click me!\"\n\t\tAnd when clicked the button opens https://www.example.com\n\n\t@ui\n\tScenario Outline: The button type can be set\n\t\tGiven the button type is set to <value>\n\t\tThen a <buttonType> is shown\n\t\tExamples:\n\t\t\t| value | buttonType |\n\t\t\t| <null> | primary |\n\t\t\t| default | default |\n\t\t\t| primary | primary |\n\t\t\t| success | success |\n\t\t\t| neutral | neutral |\n\t\t\t| warning | warning |\n\t\t\t| danger | danger |";
14415
+ const scenario$E = "@author:noah\n@owner:noah\n\nFeature: Link Button\n\n\t@ui\n\tScenario: Links can be opened in the same tab\n\t\tWhen a user clicks the button\n\t\tThen a link opens in the same tab\n\t\tAnd if the component is in an iFrame then the link is opened in the parent window not the iFrame\n\n\t@ui\n\tScenario: Links can be opened in a new tab\n\t\tWhen a user clicks the button\n\t\tThen a link opens in a new tab\n\t\tAnd if the component is in an iFrame then the link is still opened in a new tab\n\n\n\t@ui\n\tScenario: Props control the link and button text\n\t\tGiven the \"link\" prop is set to \"https://www.example.com\"\n\t\tAnd the \"buttonText\" prop is set to \"Click me!\"\n\t\tThen a button is shown with the text \"Click me!\"\n\t\tAnd when clicked the button opens https://www.example.com\n\n\t@ui\n\tScenario Outline: The button type can be set\n\t\tGiven the button type is set to <value>\n\t\tThen a <buttonType> is shown\n\t\tExamples:\n\t\t\t| value | buttonType |\n\t\t\t| <null> | primary |\n\t\t\t| default | default |\n\t\t\t| primary | primary |\n\t\t\t| success | success |\n\t\t\t| neutral | neutral |\n\t\t\t| warning | warning |\n\t\t\t| danger | danger |";
14217
14416
 
14218
14417
  const LinkButton_stories = {
14219
14418
  title: "Components/Link Button",
14220
14419
  parameters: {
14221
- scenario: scenario$D,
14420
+ scenario: scenario$E,
14222
14421
  },
14223
14422
  };
14224
- const defaultProps$g = {
14423
+ const defaultProps$i = {
14225
14424
  link: "https://example.com",
14226
14425
  openInNewTab: false,
14227
14426
  buttonText: "Button Text",
14228
14427
  };
14229
- const Default$h = () => {
14230
- return index.h("sqm-link-button", Object.assign({}, defaultProps$g));
14428
+ const Default$k = () => {
14429
+ return index.h("sqm-link-button", Object.assign({}, defaultProps$i));
14231
14430
  };
14232
14431
  const OpenInNewTab = () => {
14233
- return (index.h("sqm-link-button", Object.assign({}, { ...defaultProps$g, openInNewTab: true })));
14432
+ return (index.h("sqm-link-button", Object.assign({}, { ...defaultProps$i, openInNewTab: true })));
14234
14433
  };
14235
14434
 
14236
14435
  const LinkButton = /*#__PURE__*/Object.freeze({
14237
14436
  __proto__: null,
14238
14437
  'default': LinkButton_stories,
14239
- Default: Default$h,
14438
+ Default: Default$k,
14240
14439
  OpenInNewTab: OpenInNewTab
14241
14440
  });
14242
14441
 
@@ -14246,7 +14445,7 @@ const CloseButton_stories = {
14246
14445
  // scenario,
14247
14446
  },
14248
14447
  };
14249
- const defaultProps$h = {};
14448
+ const defaultProps$j = {};
14250
14449
  const containerStyles = {
14251
14450
  position: "relative",
14252
14451
  width: "500px",
@@ -14254,22 +14453,22 @@ const containerStyles = {
14254
14453
  border: "1px solid black",
14255
14454
  padding: "25px",
14256
14455
  };
14257
- const Default$i = () => {
14258
- return index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, defaultProps$h));
14456
+ const Default$l = () => {
14457
+ return index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, defaultProps$j));
14259
14458
  };
14260
14459
  const InAContainer = () => {
14261
14460
  return (index.h("div", { style: containerStyles },
14262
- index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, defaultProps$h))));
14461
+ index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, defaultProps$j))));
14263
14462
  };
14264
14463
  const CustomColor$1 = () => {
14265
14464
  return (index.h("div", { style: containerStyles },
14266
- index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, { ...defaultProps$h, color: "blue" }))));
14465
+ index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, { ...defaultProps$j, color: "blue" }))));
14267
14466
  };
14268
14467
 
14269
14468
  const CloseButton = /*#__PURE__*/Object.freeze({
14270
14469
  __proto__: null,
14271
14470
  'default': CloseButton_stories,
14272
- Default: Default$i,
14471
+ Default: Default$l,
14273
14472
  InAContainer: InAContainer,
14274
14473
  CustomColor: CustomColor$1
14275
14474
  });
@@ -14459,17 +14658,17 @@ const RadioCardView = ({ title, icon, description, selected, }) => {
14459
14658
  const RadioCard_stories = {
14460
14659
  title: "Components/Radio Card",
14461
14660
  };
14462
- const defaultProps$i = {
14661
+ const defaultProps$k = {
14463
14662
  selected: false,
14464
14663
  title: "Card Title",
14465
14664
  description: "Description text goes here",
14466
14665
  icon: "apple",
14467
14666
  };
14468
14667
  const DefaultView$1 = () => {
14469
- return index.h(RadioCardView, Object.assign({}, defaultProps$i));
14668
+ return index.h(RadioCardView, Object.assign({}, defaultProps$k));
14470
14669
  };
14471
14670
  const Selected = () => {
14472
- return index.h(RadioCardView, Object.assign({}, defaultProps$i, { selected: true }));
14671
+ return index.h(RadioCardView, Object.assign({}, defaultProps$k, { selected: true }));
14473
14672
  };
14474
14673
 
14475
14674
  const RadioCard = /*#__PURE__*/Object.freeze({
@@ -14482,13 +14681,13 @@ const RadioCard = /*#__PURE__*/Object.freeze({
14482
14681
  const ProgressBar_stories = {
14483
14682
  title: "Components/Progress Bar",
14484
14683
  };
14485
- const defaultProps$j = {
14684
+ const defaultProps$l = {
14486
14685
  progress: 2,
14487
14686
  goal: 4,
14488
14687
  steps: true,
14489
14688
  };
14490
14689
  const TaxAndPayoutsProgressBar = () => {
14491
- return index.h(ShadowViewAddon.ProgressBar, Object.assign({}, defaultProps$j, { stageCount: 4, currentStage: 2 }));
14690
+ return index.h(ShadowViewAddon.ProgressBar, Object.assign({}, defaultProps$l, { stageCount: 4, currentStage: 2 }));
14492
14691
  };
14493
14692
 
14494
14693
  const ProgressBar$1 = /*#__PURE__*/Object.freeze({
@@ -14500,7 +14699,7 @@ const ProgressBar$1 = /*#__PURE__*/Object.freeze({
14500
14699
  const PayoutDetailsCard_stories = {
14501
14700
  title: "Components/Payout Details Card",
14502
14701
  };
14503
- const Loading$6 = () => {
14702
+ const Loading$7 = () => {
14504
14703
  return (index.h("sqm-payout-details-card", { demoData: {
14505
14704
  states: {
14506
14705
  loading: true,
@@ -14540,7 +14739,7 @@ const PaypalPayout = () => {
14540
14739
  const PayoutDetailsCard = /*#__PURE__*/Object.freeze({
14541
14740
  __proto__: null,
14542
14741
  'default': PayoutDetailsCard_stories,
14543
- Loading: Loading$6,
14742
+ Loading: Loading$7,
14544
14743
  NextPayout: NextPayout,
14545
14744
  PayoutToday: PayoutToday,
14546
14745
  ThresholdPayout: ThresholdPayout,
@@ -15174,14 +15373,14 @@ const UseInvoiceTableCells = /*#__PURE__*/Object.freeze({
15174
15373
  const WidgetEmailVerification_stories = {
15175
15374
  title: "Components/Widget Email Verification",
15176
15375
  };
15177
- const defaultProps$k = {
15376
+ const defaultProps$m = {
15178
15377
  email: "",
15179
15378
  error: false,
15180
15379
  loading: false,
15181
15380
  initialLoading: false,
15182
15381
  sendCodeError: false,
15183
15382
  };
15184
- const Default$j = () => (index.h("sqm-email-verification", { demoData: {} }));
15383
+ const Default$m = () => (index.h("sqm-email-verification", { demoData: {} }));
15185
15384
  const EmailIsPrefilled = () => (index.h("div", null,
15186
15385
  index.h("sqm-text", null,
15187
15386
  index.h("h4", null, "Verify your email")),
@@ -15189,19 +15388,19 @@ const EmailIsPrefilled = () => (index.h("div", null,
15189
15388
  index.h("sub", null, "To get your cash paid out directly to your bank account, please complete your account setup")),
15190
15389
  index.h("sqm-email-verification", { demoData: {
15191
15390
  states: {
15192
- ...defaultProps$k,
15391
+ ...defaultProps$m,
15193
15392
  email: "test@example.com",
15194
15393
  },
15195
15394
  } })));
15196
- const Loading$7 = () => (index.h("sqm-email-verification", { demoData: {
15395
+ const Loading$8 = () => (index.h("sqm-email-verification", { demoData: {
15197
15396
  states: {
15198
- ...defaultProps$k,
15397
+ ...defaultProps$m,
15199
15398
  initialLoading: true,
15200
15399
  },
15201
15400
  } }));
15202
15401
  const SaveLoading = () => (index.h("sqm-email-verification", { demoData: {
15203
15402
  states: {
15204
- ...defaultProps$k,
15403
+ ...defaultProps$m,
15205
15404
  loading: true,
15206
15405
  },
15207
15406
  } }));
@@ -15212,19 +15411,19 @@ const WithHeader$1 = () => (index.h("div", null,
15212
15411
  index.h("sub", null, "To get your cash paid out directly to your bank account, please complete your account setup")),
15213
15412
  index.h("sqm-email-verification", { demoData: {
15214
15413
  states: {
15215
- ...defaultProps$k,
15414
+ ...defaultProps$m,
15216
15415
  email: "test@example.com",
15217
15416
  },
15218
15417
  } })));
15219
15418
  const InvalidEmail = () => (index.h("sqm-email-verification", { demoData: {
15220
15419
  states: {
15221
- ...defaultProps$k,
15420
+ ...defaultProps$m,
15222
15421
  error: true,
15223
15422
  },
15224
15423
  } }));
15225
15424
  const SendCodeError = () => (index.h("sqm-email-verification", { demoData: {
15226
15425
  states: {
15227
- ...defaultProps$k,
15426
+ ...defaultProps$m,
15228
15427
  sendCodeError: true,
15229
15428
  },
15230
15429
  } }));
@@ -15232,9 +15431,9 @@ const SendCodeError = () => (index.h("sqm-email-verification", { demoData: {
15232
15431
  const WidgetEmailVerification = /*#__PURE__*/Object.freeze({
15233
15432
  __proto__: null,
15234
15433
  'default': WidgetEmailVerification_stories,
15235
- Default: Default$j,
15434
+ Default: Default$m,
15236
15435
  EmailIsPrefilled: EmailIsPrefilled,
15237
- Loading: Loading$7,
15436
+ Loading: Loading$8,
15238
15437
  SaveLoading: SaveLoading,
15239
15438
  WithHeader: WithHeader$1,
15240
15439
  InvalidEmail: InvalidEmail,
@@ -15244,35 +15443,35 @@ const WidgetEmailVerification = /*#__PURE__*/Object.freeze({
15244
15443
  const WidgetCodeVerification_stories = {
15245
15444
  title: "Components/Widget Code Verification",
15246
15445
  };
15247
- const defaultProps$l = {
15446
+ const defaultProps$n = {
15248
15447
  initialiseLoading: false,
15249
15448
  email: "testemail@example.com",
15250
15449
  loading: false,
15251
15450
  verifyFailed: false,
15252
15451
  emailResent: false,
15253
15452
  };
15254
- const Default$k = () => (index.h("sqm-code-verification", { demoData: { states: defaultProps$l } }));
15453
+ const Default$n = () => (index.h("sqm-code-verification", { demoData: { states: defaultProps$n } }));
15255
15454
  const InitialLoading = () => (index.h("sqm-code-verification", { demoData: {
15256
15455
  states: {
15257
- ...defaultProps$l,
15456
+ ...defaultProps$n,
15258
15457
  initialiseLoading: true,
15259
15458
  },
15260
15459
  } }));
15261
- const Loading$8 = () => (index.h("sqm-code-verification", { demoData: {
15460
+ const Loading$9 = () => (index.h("sqm-code-verification", { demoData: {
15262
15461
  states: {
15263
- ...defaultProps$l,
15462
+ ...defaultProps$n,
15264
15463
  loading: true,
15265
15464
  },
15266
15465
  } }));
15267
15466
  const CodeResent = () => (index.h("sqm-code-verification", { demoData: {
15268
15467
  states: {
15269
- ...defaultProps$l,
15468
+ ...defaultProps$n,
15270
15469
  emailResent: true,
15271
15470
  },
15272
15471
  } }));
15273
15472
  const VerificationFailed = () => (index.h("sqm-code-verification", { demoData: {
15274
15473
  states: {
15275
- ...defaultProps$l,
15474
+ ...defaultProps$n,
15276
15475
  verifyFailed: true,
15277
15476
  },
15278
15477
  } }));
@@ -15280,9 +15479,9 @@ const VerificationFailed = () => (index.h("sqm-code-verification", { demoData: {
15280
15479
  const WidgetCodeVerification = /*#__PURE__*/Object.freeze({
15281
15480
  __proto__: null,
15282
15481
  'default': WidgetCodeVerification_stories,
15283
- Default: Default$k,
15482
+ Default: Default$n,
15284
15483
  InitialLoading: InitialLoading,
15285
- Loading: Loading$8,
15484
+ Loading: Loading$9,
15286
15485
  CodeResent: CodeResent,
15287
15486
  VerificationFailed: VerificationFailed
15288
15487
  });
@@ -15290,17 +15489,17 @@ const WidgetCodeVerification = /*#__PURE__*/Object.freeze({
15290
15489
  const PayoutButtonScroll_stories = {
15291
15490
  title: "Components/Payout Scroll Button",
15292
15491
  };
15293
- const defaultProps$m = {
15492
+ const defaultProps$o = {
15294
15493
  payoutSettingsComplete: true,
15295
15494
  };
15296
- const CompletedTaxForm = () => (index.h("sqm-payout-button-scroll", { demoData: { states: { ...defaultProps$m, payoutSettingsComplete: true } } }));
15495
+ const CompletedTaxForm = () => (index.h("sqm-payout-button-scroll", { demoData: { states: { ...defaultProps$o, payoutSettingsComplete: true } } }));
15297
15496
  const CompletedTaxFormWithStatsContainer = () => (index.h("sqm-portal-container", { display: "flex", maxWidth: "100%", minWidth: "100%", "justify-content": "space-between", flexWrap: "nowrap" },
15298
15497
  index.h("sqm-portal-container", { display: "flex", "max-width": "fit-content" },
15299
15498
  index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/referralsCount" },
15300
15499
  index.h("p", null, "Referrals")),
15301
15500
  index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/payoutBalance" },
15302
15501
  index.h("p", null, "Cash Balance"))),
15303
- index.h("sqm-payout-button-scroll", { demoData: { states: { ...defaultProps$m, payoutSettingsComplete: true } } })));
15502
+ index.h("sqm-payout-button-scroll", { demoData: { states: { ...defaultProps$o, payoutSettingsComplete: true } } })));
15304
15503
 
15305
15504
  const PayoutButtonScroll = /*#__PURE__*/Object.freeze({
15306
15505
  __proto__: null,
@@ -15312,20 +15511,20 @@ const PayoutButtonScroll = /*#__PURE__*/Object.freeze({
15312
15511
  const PayoutStatusAlert_stories = {
15313
15512
  title: "Components/Payout Status Alert",
15314
15513
  };
15315
- const defaultProps$n = {
15514
+ const defaultProps$p = {
15316
15515
  error: false,
15317
15516
  status: "INFORMATION_REQUIRED",
15318
15517
  loading: false,
15319
15518
  veriffLoading: false,
15320
15519
  };
15321
- const InformationRequired = () => (index.h("sqm-payout-status-alert", { demoData: { states: defaultProps$n } }));
15322
- const VerifyIdentity = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$n, status: "VERIFICATION:REQUIRED" } } }));
15323
- const VerifyIdentityRequiredInternal = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$n, status: "VERIFICATION:INTERNAL" } } }));
15324
- const VerifyIdentityReviewInternal = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$n, status: "VERIFICATION:REVIEW" } } }));
15325
- const VerifyIdentityFailedInternal = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$n, status: "VERIFICATION:FAILED" } } }));
15326
- const Hold = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$n, status: "HOLD" } } }));
15327
- const Loading$9 = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$n, loading: true } } }));
15328
- const Error$a = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$n, error: true } } }));
15520
+ const InformationRequired = () => (index.h("sqm-payout-status-alert", { demoData: { states: defaultProps$p } }));
15521
+ const VerifyIdentity = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$p, status: "VERIFICATION:REQUIRED" } } }));
15522
+ const VerifyIdentityRequiredInternal = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$p, status: "VERIFICATION:INTERNAL" } } }));
15523
+ const VerifyIdentityReviewInternal = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$p, status: "VERIFICATION:REVIEW" } } }));
15524
+ const VerifyIdentityFailedInternal = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$p, status: "VERIFICATION:FAILED" } } }));
15525
+ const Hold = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$p, status: "HOLD" } } }));
15526
+ const Loading$a = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$p, loading: true } } }));
15527
+ const Error$b = () => (index.h("sqm-payout-status-alert", { demoData: { states: { ...defaultProps$p, error: true } } }));
15329
15528
 
15330
15529
  const PayoutStatusAlert = /*#__PURE__*/Object.freeze({
15331
15530
  __proto__: null,
@@ -15336,16 +15535,16 @@ const PayoutStatusAlert = /*#__PURE__*/Object.freeze({
15336
15535
  VerifyIdentityReviewInternal: VerifyIdentityReviewInternal,
15337
15536
  VerifyIdentityFailedInternal: VerifyIdentityFailedInternal,
15338
15537
  Hold: Hold,
15339
- Loading: Loading$9,
15340
- Error: Error$a
15538
+ Loading: Loading$a,
15539
+ Error: Error$b
15341
15540
  });
15342
15541
 
15343
- const scenario$E = "@author:sam\n@owner:sam\n\nFeature: Referral Codes Component\n\n A paginated display of available and used promo codes for the user to share with others\n\n @motivating\n Scenario: Promo code can be shared using various share mediums\n Given an authenticated user\n And the program has promo codes configured\n When the promo code section is loaded\n Then the promo code can be copied directly\n And the promo code can be shared using <shareMedium>\n Examples:\n | shareMedium |\n | DIRECT |\n | EMAIL |\n | FBMESSENGER |\n | WHATSAPP |\n\n @minutia\n Scenario: Clicking any of the share mediums sets the code as copied\n Given an authenticated user\n And the program has promo codes configured\n When the promo code section is loaded\n When clicking <shareMedium> button\n Then the code is marked as copied\n And the copied notification text is shown\n Examples:\n | shareMedium |\n | DIRECT |\n | EMAIL |\n | FBMESSENGER |\n | WHATSAPP |\n\n @minutia\n Scenario Outline: User is notified if the currently viewed promo code has been copied already\n Given an authenticated user\n And the program has promo codes configured\n When the promo code section is loaded\n And the code has not been copied already\n Then no notification text is displayed\n When the code is changed to one that has been copied\n Then the <notificationText> is displayed\n Examples:\n | notificationText |\n | You've copied this code before |\n | Previously Copied |\n | foo |\n\n @minutia\n Scenario Outline: Share buttons slots use the link from referral codes instead of the default query\n Given an authenticated user\n And the program has promo codes configured\n And a <shareMedium> button is a child of `<sqm-referral-codes>`\n Then the <shareMedium> button is shown\n And the link uses <promoCode>\n Examples:\n | propName | shareMedium | promoCode |\n | hideSharelink | DIRECT | PROMOCODE1 |\n | hideEmail | EMAIL | PROMOCODE1 |\n | hideFbMessenger | FBMESSENGER | PROMOCODE1 |\n | hideWhatsApp | WHATSAPP | PROMOCODE1 |\n\n @minutia\n Scenario Outline: Number of codes is displayed in the pagination component\n Given an authenticated user\n And the program has promo codes configured\n When the promo code section is loaded\n And the user has <numCodes> available\n And the user is on <currentPage>\n Then the pagination text is <paginationText>\n Examples:\n | numCodes | currentPage | paginationText |\n | 5 | 1 | 1 of 5 |\n | 5 | 2 | 2 of 5 |\n | 5 | 3 | 3 of 5 |\n | 5 | 4 | 4 of 5 |\n | 5 | 5 | 5 of 5 |\n | 1 | 1 | 1 of 1 |\n | 0 | 0 | 0 of 0 |\n\n @minutia\n Scenario: Loading state is shown when changing code page\n Given an authenticated user\n And the program has promo codes configured\n When the promo code section is loaded\n And the user has more than 1 available\n When the next button is clicked\n Then a loading state is shown\n\n\n";
15542
+ const scenario$F = "@author:sam\n@owner:sam\n\nFeature: Referral Codes Component\n\n A paginated display of available and used promo codes for the user to share with others\n\n @motivating\n Scenario: Promo code can be shared using various share mediums\n Given an authenticated user\n And the program has promo codes configured\n When the promo code section is loaded\n Then the promo code can be copied directly\n And the promo code can be shared using <shareMedium>\n Examples:\n | shareMedium |\n | DIRECT |\n | EMAIL |\n | FBMESSENGER |\n | WHATSAPP |\n\n @minutia\n Scenario: Clicking any of the share mediums sets the code as copied\n Given an authenticated user\n And the program has promo codes configured\n When the promo code section is loaded\n When clicking <shareMedium> button\n Then the code is marked as copied\n And the copied notification text is shown\n Examples:\n | shareMedium |\n | DIRECT |\n | EMAIL |\n | FBMESSENGER |\n | WHATSAPP |\n\n @minutia\n Scenario Outline: User is notified if the currently viewed promo code has been copied already\n Given an authenticated user\n And the program has promo codes configured\n When the promo code section is loaded\n And the code has not been copied already\n Then no notification text is displayed\n When the code is changed to one that has been copied\n Then the <notificationText> is displayed\n Examples:\n | notificationText |\n | You've copied this code before |\n | Previously Copied |\n | foo |\n\n @minutia\n Scenario Outline: Share buttons slots use the link from referral codes instead of the default query\n Given an authenticated user\n And the program has promo codes configured\n And a <shareMedium> button is a child of `<sqm-referral-codes>`\n Then the <shareMedium> button is shown\n And the link uses <promoCode>\n Examples:\n | propName | shareMedium | promoCode |\n | hideSharelink | DIRECT | PROMOCODE1 |\n | hideEmail | EMAIL | PROMOCODE1 |\n | hideFbMessenger | FBMESSENGER | PROMOCODE1 |\n | hideWhatsApp | WHATSAPP | PROMOCODE1 |\n\n @minutia\n Scenario Outline: Number of codes is displayed in the pagination component\n Given an authenticated user\n And the program has promo codes configured\n When the promo code section is loaded\n And the user has <numCodes> available\n And the user is on <currentPage>\n Then the pagination text is <paginationText>\n Examples:\n | numCodes | currentPage | paginationText |\n | 5 | 1 | 1 of 5 |\n | 5 | 2 | 2 of 5 |\n | 5 | 3 | 3 of 5 |\n | 5 | 4 | 4 of 5 |\n | 5 | 5 | 5 of 5 |\n | 1 | 1 | 1 of 1 |\n | 0 | 0 | 0 of 0 |\n\n @minutia\n Scenario: Loading state is shown when changing code page\n Given an authenticated user\n And the program has promo codes configured\n When the promo code section is loaded\n And the user has more than 1 available\n When the next button is clicked\n Then a loading state is shown\n\n\n";
15344
15543
 
15345
15544
  const ReferralCodes_stories = {
15346
15545
  title: "Components/Referral Codes",
15347
15546
  parameters: {
15348
- scenario: scenario$E,
15547
+ scenario: scenario$F,
15349
15548
  },
15350
15549
  };
15351
15550
  const demoData = {
@@ -15399,7 +15598,7 @@ const EmptyWithCustomTextAndImage = () => {
15399
15598
  shareCodes("shareCodes"),
15400
15599
  shareButtons("shareButtons")));
15401
15600
  };
15402
- const Loading$a = () => {
15601
+ const Loading$b = () => {
15403
15602
  return (index.h("sqm-referral-codes", { demoData: { states: { ...demoData.states, loading: true } } },
15404
15603
  pagination("pagination"),
15405
15604
  shareCodes("shareCodes"),
@@ -15413,13 +15612,13 @@ const ReferralCodes$1 = /*#__PURE__*/Object.freeze({
15413
15612
  WithPreviouslyCopiedCode: WithPreviouslyCopiedCode,
15414
15613
  Empty: Empty$3,
15415
15614
  EmptyWithCustomTextAndImage: EmptyWithCustomTextAndImage,
15416
- Loading: Loading$a
15615
+ Loading: Loading$b
15417
15616
  });
15418
15617
 
15419
15618
  const BaseRegistrationForm_stories = {
15420
15619
  title: "Components/Microsite Base Registration",
15421
15620
  };
15422
- const defaultProps$o = {
15621
+ const defaultProps$q = {
15423
15622
  states: {
15424
15623
  error: "",
15425
15624
  },
@@ -15438,145 +15637,30 @@ const defaultProps$o = {
15438
15637
  " ")),
15439
15638
  },
15440
15639
  };
15441
- const errorProps$9 = {
15442
- ...defaultProps$o,
15640
+ const errorProps$a = {
15641
+ ...defaultProps$q,
15443
15642
  states: {
15444
15643
  error: "Something went wrong. Please try again.",
15445
15644
  },
15446
15645
  };
15447
- const Default$l = () => {
15448
- return index.h(sqmBaseRegistrationFormView.BaseRegistrationFormView, Object.assign({}, defaultProps$o));
15646
+ const Default$o = () => {
15647
+ return index.h(sqmBaseRegistrationFormView.BaseRegistrationFormView, Object.assign({}, defaultProps$q));
15449
15648
  };
15450
15649
  const EmailError = () => {
15451
- return index.h(sqmBaseRegistrationFormView.BaseRegistrationFormView, Object.assign({}, errorProps$9));
15650
+ return index.h(sqmBaseRegistrationFormView.BaseRegistrationFormView, Object.assign({}, errorProps$a));
15452
15651
  };
15453
15652
 
15454
15653
  const BaseRegistrationForm = /*#__PURE__*/Object.freeze({
15455
15654
  __proto__: null,
15456
15655
  'default': BaseRegistrationForm_stories,
15457
- Default: Default$l,
15656
+ Default: Default$o,
15458
15657
  EmailError: EmailError
15459
15658
  });
15460
15659
 
15461
- const PortalRegistrationForm_stories = {
15462
- title: "Components/Microsite Portal Register",
15463
- };
15464
- const defaultProps$p = {
15465
- states: {
15466
- error: "",
15467
- loading: false,
15468
- confirmPassword: true,
15469
- hideInputs: false,
15470
- loginPath: "/login",
15471
- },
15472
- callbacks: {
15473
- submit: () => console.log("Submit!"),
15474
- inputFunction: () => { },
15475
- },
15476
- refs: {
15477
- formRef: {},
15478
- },
15479
- content: { pageLabel: "Register", confirmPasswordLabel: "Confirm Password" },
15480
- };
15481
- const errorProps$a = {
15482
- states: {
15483
- error: "Something went wrong. Please try again.",
15484
- loading: false,
15485
- confirmPassword: true,
15486
- hideInputs: false,
15487
- loginPath: "/login",
15488
- },
15489
- callbacks: {
15490
- submit: () => console.log("Submit!"),
15491
- inputFunction: () => { },
15492
- },
15493
- refs: {
15494
- formRef: {},
15495
- },
15496
- content: {
15497
- pageLabel: "Register",
15498
- confirmPasswordLabel: "Confirm Password",
15499
- },
15500
- };
15501
- const loadingProps$7 = {
15502
- states: {
15503
- error: "",
15504
- loading: true,
15505
- confirmPassword: true,
15506
- hideInputs: false,
15507
- loginPath: "/login",
15508
- },
15509
- callbacks: {
15510
- submit: () => console.log("Submit!"),
15511
- inputFunction: () => { },
15512
- },
15513
- refs: {
15514
- formRef: {},
15515
- },
15516
- content: { pageLabel: "Register", confirmPasswordLabel: "Confirm Password" },
15517
- };
15518
- const slottedProps$1 = {
15519
- states: {
15520
- error: "",
15521
- loading: false,
15522
- confirmPassword: true,
15523
- hideInputs: false,
15524
- loginPath: "/login",
15525
- },
15526
- callbacks: {
15527
- submit: () => console.log("Submit!"),
15528
- inputFunction: () => { },
15529
- },
15530
- refs: {
15531
- formRef: {},
15532
- },
15533
- content: {
15534
- pageLabel: "Register",
15535
- confirmPasswordLabel: "Confirm Password",
15536
- formData: (index.h("div", null,
15537
- index.h("sl-input", { style: { marginBottom: "var(--sl-spacing-x-large)" }, exportparts: "label: input-label, base: input-base", label: "Slotted Input", required: true }),
15538
- index.h("sl-input", { exportparts: "label: input-label, base: input-base", label: "Slotted Input 2", required: true }))),
15539
- },
15540
- };
15541
- const Default$m = () => index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$p));
15542
- const RegisterWithError$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, errorProps$a)));
15543
- const RegisterLoading$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, loadingProps$7)));
15544
- const FieldsHidden$1 = () => {
15545
- return (index.h("sqm-portal-register", { demoData: {
15546
- states: {
15547
- error: "",
15548
- loading: true,
15549
- registrationFormState: {},
15550
- confirmPassword: true,
15551
- hideInputs: true,
15552
- loginPath: "/login",
15553
- },
15554
- } }));
15555
- };
15556
- const SlottedInputs$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, slottedProps$1)));
15557
- const TermsAndConditions$3 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$p, { content: {
15558
- ...defaultProps$p.content,
15559
- terms: (index.h("p", null,
15560
- "By signing up you agree to the",
15561
- " ",
15562
- index.h("a", { href: "https://example.com", target: "_blank" }, "Terms and Conditions"))),
15563
- } })));
15564
-
15565
- const PortalRegistrationForm = /*#__PURE__*/Object.freeze({
15566
- __proto__: null,
15567
- 'default': PortalRegistrationForm_stories,
15568
- Default: Default$m,
15569
- RegisterWithError: RegisterWithError$1,
15570
- RegisterLoading: RegisterLoading$1,
15571
- FieldsHidden: FieldsHidden$1,
15572
- SlottedInputs: SlottedInputs$1,
15573
- TermsAndConditions: TermsAndConditions$3
15574
- });
15575
-
15576
15660
  const PortalGoogleRegistrationForm_stories = {
15577
15661
  title: "Components/Microsite Google Register",
15578
15662
  };
15579
- const defaultProps$q = {
15663
+ const defaultProps$r = {
15580
15664
  states: {
15581
15665
  error: "",
15582
15666
  loading: false,
@@ -15621,7 +15705,7 @@ const defaultProps$q = {
15621
15705
  },
15622
15706
  };
15623
15707
  const errorProps$b = {
15624
- ...defaultProps$q,
15708
+ ...defaultProps$r,
15625
15709
  states: {
15626
15710
  error: "Something went wrong. Please try again.",
15627
15711
  loading: false,
@@ -15637,7 +15721,7 @@ const errorProps$b = {
15637
15721
  },
15638
15722
  };
15639
15723
  const loadingProps$8 = {
15640
- ...defaultProps$q,
15724
+ ...defaultProps$r,
15641
15725
  states: {
15642
15726
  error: "",
15643
15727
  loading: true,
@@ -15652,11 +15736,11 @@ const loadingProps$8 = {
15652
15736
  },
15653
15737
  },
15654
15738
  };
15655
- const Default$n = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$q)));
15739
+ const Default$p = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$r)));
15656
15740
  const RegisterWithError$2 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, errorProps$b)));
15657
15741
  const RegisterLoading$2 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, loadingProps$8)));
15658
- const TermsAndConditions$4 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$q, { content: {
15659
- ...defaultProps$q.content,
15742
+ const TermsAndConditions$4 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$r, { content: {
15743
+ ...defaultProps$r.content,
15660
15744
  terms: (index.h("p", null,
15661
15745
  "By signing up you agree to the",
15662
15746
  " ",
@@ -15666,7 +15750,7 @@ const TermsAndConditions$4 = () => (index.h(sqmPortalRegistrationFormView.Portal
15666
15750
  const PortalGoogleRegistrationFormStories = /*#__PURE__*/Object.freeze({
15667
15751
  __proto__: null,
15668
15752
  'default': PortalGoogleRegistrationForm_stories,
15669
- Default: Default$n,
15753
+ Default: Default$p,
15670
15754
  RegisterWithError: RegisterWithError$2,
15671
15755
  RegisterLoading: RegisterLoading$2,
15672
15756
  TermsAndConditions: TermsAndConditions$4
@@ -15684,7 +15768,7 @@ const PortalGoogleRegistrationFormStories = /*#__PURE__*/Object.freeze({
15684
15768
  *
15685
15769
  */
15686
15770
  //
15687
- const Default$o = `
15771
+ const Default$q = `
15688
15772
  // No CSS
15689
15773
  `;
15690
15774
  const Orangey = `
@@ -15718,7 +15802,7 @@ const Klip = `
15718
15802
 
15719
15803
  const Themes = /*#__PURE__*/Object.freeze({
15720
15804
  __proto__: null,
15721
- Default: Default$o,
15805
+ Default: Default$q,
15722
15806
  Orangey: Orangey,
15723
15807
  Netflix: Netflix,
15724
15808
  SaaSquatchCorporate: SaaSquatchCorporate,
@@ -18363,6 +18447,7 @@ const stories = [
18363
18447
  ReferralIframe$1,
18364
18448
  NameFields$1,
18365
18449
  CheckboxField,
18450
+ MarketingEmailsCheckbox,
18366
18451
  DropdownField,
18367
18452
  InputField,
18368
18453
  RewardExchangeList,
@@ -18398,6 +18483,8 @@ const stories = [
18398
18483
  TaxFormSlots,
18399
18484
  PayoutDetailsCard,
18400
18485
  BankingInfoForm,
18486
+ PortalRegistrationForm,
18487
+ ChangeMarketing,
18401
18488
  BaseRegistrationForm,
18402
18489
  PortalRegistrationForm,
18403
18490
  PortalGoogleRegistrationFormStories,