@saasquatch/mint-components 1.12.1-7 → 1.12.1-9

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 (587) hide show
  1. package/dist/cjs/{GenericTableView-7ef786c3.js → GenericTableView-69534180.js} +3 -3
  2. package/dist/cjs/JSS-9a3cf556.js +8 -0
  3. package/dist/cjs/{ShadowViewAddon-fae7ab2c.js → ShadowViewAddon-03efae45.js} +259 -232
  4. package/dist/cjs/{email-registration-view-4eeee3e4.js → email-registration-view-ec79ef26.js} +3 -3
  5. package/dist/cjs/{global-d9abaf4d.js → global-02e50f09.js} +3 -3
  6. package/dist/cjs/{index-3cf5ef3d.js → index-b0129cd6.js} +0 -16
  7. package/dist/cjs/{index.module-ccf9bd9c.js → index.module-df530553.js} +19 -57
  8. package/dist/{esm/JSS-67b5cff8.js → cjs/jss-preset-default.esm-451bc403.js} +5 -4
  9. package/dist/cjs/loader.cjs.js +5 -5
  10. package/dist/cjs/{luxon-14ae1f8a.js → luxon-05098e19.js} +1 -1
  11. package/dist/cjs/mint-components.cjs.js +5 -5
  12. package/dist/cjs/{mixins-f7e0377a.js → mixins-fe9d4112.js} +1 -0
  13. package/dist/cjs/{mockRewardData-a384d9f5.js → mockRewardData-4258e067.js} +1 -1
  14. package/dist/cjs/raisins-plop-target.cjs.entry.js +1 -1
  15. package/dist/cjs/{re-render-1e63c82b.js → re-render-1976e05e.js} +5 -5
  16. package/dist/cjs/{sqm-asset-card-view-a3abee0b.js → sqm-asset-card-view-16494e3a.js} +2 -2
  17. package/dist/cjs/sqm-asset-card.cjs.entry.js +6 -5
  18. package/dist/cjs/sqm-banking-info-form_16.cjs.entry.js +68 -67
  19. package/dist/cjs/{sqm-big-stat_37.cjs.entry.js → sqm-big-stat_38.cjs.entry.js} +119 -114
  20. package/dist/cjs/sqm-checkbox-field-view-49196804.js +66 -0
  21. package/dist/cjs/{sqm-close-button-view-0cdada3a.js → sqm-close-button-view-b96a4fb9.js} +3 -3
  22. package/dist/cjs/sqm-close-button.cjs.entry.js +7 -6
  23. package/dist/cjs/sqm-context-router.cjs.entry.js +4 -4
  24. package/dist/cjs/sqm-empty_4.cjs.entry.js +8 -11
  25. package/dist/cjs/sqm-form-message.cjs.entry.js +2 -2
  26. package/dist/cjs/sqm-graphql-client-provider.cjs.entry.js +7 -7
  27. package/dist/cjs/sqm-header-logo.cjs.entry.js +2 -2
  28. package/dist/cjs/sqm-instant-access-registration.cjs.entry.js +9 -8
  29. package/dist/cjs/{sqm-invoice-table-view-a13d1c7f.js → sqm-invoice-table-view-7cd560da.js} +3 -3
  30. package/dist/cjs/{sqm-leaderboard-rank-view-133f8d95.js → sqm-leaderboard-rank-view-5a3d4a88.js} +1 -1
  31. package/dist/cjs/sqm-leaderboard-rank.cjs.entry.js +8 -8
  32. package/dist/cjs/{sqm-logout-current-user-view-64ca6abe.js → sqm-logout-current-user-view-47153187.js} +2 -2
  33. package/dist/cjs/sqm-logout-current-user.cjs.entry.js +8 -7
  34. package/dist/cjs/sqm-marketing-emails-checkbox.cjs.entry.js +54 -0
  35. package/dist/cjs/{sqm-navigation-sidebar-item-view-38519acf.js → sqm-navigation-sidebar-item-view-761d17e3.js} +5 -5
  36. package/dist/cjs/sqm-navigation-sidebar-item.cjs.entry.js +8 -7
  37. package/dist/cjs/{sqm-navigation-sidebar-view-37209a17.js → sqm-navigation-sidebar-view-921704fb.js} +1 -1
  38. package/dist/cjs/sqm-navigation-sidebar.cjs.entry.js +6 -6
  39. package/dist/cjs/sqm-password-field.cjs.entry.js +7 -6
  40. package/dist/cjs/sqm-popup-container.cjs.entry.js +6 -6
  41. package/dist/cjs/sqm-portal-change-marketing.cjs.entry.js +205 -0
  42. package/dist/cjs/{sqm-portal-container-view-9a36f5ed.js → sqm-portal-container-view-7648fd3f.js} +2 -2
  43. package/dist/cjs/{sqm-portal-email-verification-view-6e1e80e7.js → sqm-portal-email-verification-view-137ae9cf.js} +5 -5
  44. package/dist/cjs/sqm-portal-email-verification.cjs.entry.js +14 -13
  45. package/dist/cjs/{sqm-portal-forgot-password-view-97903679.js → sqm-portal-forgot-password-view-f43b703a.js} +4 -4
  46. package/dist/cjs/sqm-portal-forgot-password.cjs.entry.js +11 -10
  47. package/dist/cjs/sqm-portal-logout.cjs.entry.js +4 -4
  48. package/dist/cjs/{sqm-portal-profile-view-f4489585.js → sqm-portal-profile-view-9401d663.js} +4 -4
  49. package/dist/cjs/sqm-portal-profile.cjs.entry.js +12 -11
  50. package/dist/cjs/sqm-portal-protected-route.cjs.entry.js +7 -7
  51. package/dist/cjs/sqm-portal-registration-form-view-890746ac.js +85 -0
  52. package/dist/cjs/sqm-portal-registration-form.cjs.entry.js +220 -20
  53. package/dist/cjs/{sqm-portal-reset-password-view-0ed5419e.js → sqm-portal-reset-password-view-ac811594.js} +4 -4
  54. package/dist/cjs/sqm-portal-reset-password.cjs.entry.js +13 -12
  55. package/dist/cjs/{sqm-portal-verify-email-view-cd2c3086.js → sqm-portal-verify-email-view-d93a4291.js} +4 -4
  56. package/dist/cjs/sqm-portal-verify-email.cjs.entry.js +13 -12
  57. package/dist/cjs/sqm-referral-table_11.cjs.entry.js +14 -15
  58. package/dist/cjs/sqm-referred-registration.cjs.entry.js +9 -8
  59. package/dist/cjs/sqm-rewards-table-customer-note-cell.cjs.entry.js +5 -4
  60. package/dist/cjs/sqm-rewards-table-customer-note-column.cjs.entry.js +4 -4
  61. package/dist/cjs/sqm-rewards-table_9.cjs.entry.js +18 -17
  62. package/dist/cjs/sqm-route.cjs.entry.js +1 -1
  63. package/dist/cjs/sqm-stencilbook.cjs.entry.js +422 -747
  64. package/dist/cjs/sqm-tab.cjs.entry.js +4 -4
  65. package/dist/cjs/sqm-tabs.cjs.entry.js +6 -6
  66. package/dist/cjs/{sqm-text-span-view-a22f50aa.js → sqm-text-span-view-f318b5ac.js} +2 -2
  67. package/dist/cjs/sqm-text-span.cjs.entry.js +5 -4
  68. package/dist/cjs/{stencil-hooks.module-ece1ee46.js → stencil-hooks.module-72742a0b.js} +1 -1
  69. package/dist/cjs/useCheckboxField-97471065.js +27 -0
  70. package/dist/cjs/{useChildElements-438cf387.js → useChildElements-e0d44916.js} +3 -3
  71. package/dist/cjs/{useInstantAccessRegistration-7d91867a.js → useInstantAccessRegistration-bbe746d1.js} +4 -4
  72. package/dist/cjs/{useReferralTable-6b4920f9.js → useReferralTable-a76adb0d.js} +11 -11
  73. package/dist/cjs/{useRegistrationFormState-5911d016.js → useRegistrationFormState-876ed65d.js} +3 -3
  74. package/dist/cjs/{utilities-27e9535b.js → utilities-cec9dd36.js} +2 -2
  75. package/dist/collection/collection-manifest.json +3 -13
  76. package/dist/collection/components/sqm-checkbox-field/CheckboxField.stories.js +1 -1
  77. package/dist/collection/components/sqm-checkbox-field/sqm-checkbox-field-view.js +6 -15
  78. package/dist/collection/components/sqm-checkbox-field/sqm-checkbox-field.js +5 -5
  79. package/dist/collection/components/sqm-coupon-code/sqm-coupon-code.js +1 -1
  80. package/dist/collection/components/sqm-empty/sqm-empty.js +2 -10
  81. package/dist/collection/components/sqm-logout-current-user/sqm-logout-current-user.js +1 -1
  82. package/dist/collection/components/sqm-marketing-emails-checkbox/MarketingEmailsCheckbox.stories.js +11 -0
  83. package/dist/collection/components/sqm-marketing-emails-checkbox/sqm-marketing-emails-checkbox.js +130 -0
  84. package/dist/collection/components/sqm-portal-change-marketing/sqm-portal-change-marketing-view.js +31 -0
  85. package/dist/collection/components/sqm-portal-change-marketing/sqm-portal-change-marketing.js +190 -0
  86. package/dist/collection/components/sqm-portal-change-marketing/usePortalChangeMarketing.js +105 -0
  87. package/dist/collection/components/sqm-portal-container/sqm-portal-container.js +4 -0
  88. package/dist/collection/components/sqm-portal-login/PortalLogin.stories.js +4 -28
  89. package/dist/collection/components/sqm-portal-login/sqm-portal-login-view.js +1 -9
  90. package/dist/collection/components/sqm-portal-login/sqm-portal-login.js +3 -80
  91. package/dist/collection/components/sqm-portal-register/sqm-portal-register-view.js +3 -6
  92. package/dist/collection/components/sqm-portal-registration-form/PortalRegistrationForm.stories.js +5 -1
  93. package/dist/collection/components/sqm-portal-registration-form/sqm-portal-registration-form-view.js +14 -16
  94. package/dist/collection/components/sqm-portal-registration-form/sqm-portal-registration-form.js +3 -30
  95. package/dist/collection/components/sqm-portal-registration-form/usePortalRegistrationForm.js +2 -1
  96. package/dist/collection/components/sqm-referral-card/ReferralCard.stories.js +0 -20
  97. package/dist/collection/components/sqm-referral-table/ReferralTableRewardsCell.stories.js +1 -0
  98. package/dist/collection/components/sqm-referral-table/cells/sqm-referral-table-rewards-cell.js +2 -6
  99. package/dist/collection/components/sqm-rewards-table/RewardsTableCell.stories.js +3 -1
  100. package/dist/collection/components/sqm-share-button/useShareButton.js +18 -29
  101. package/dist/collection/components/sqm-share-code/sqm-share-code.js +1 -1
  102. package/dist/collection/components/sqm-share-link/sqm-share-link.js +1 -1
  103. package/dist/collection/components/sqm-share-link/useShareLink.js +4 -11
  104. package/dist/collection/components/sqm-stencilbook/sqm-stencilbook.js +4 -12
  105. package/dist/collection/components/views/copy-text-view.js +3 -18
  106. package/dist/collection/global/mixins.js +1 -0
  107. package/dist/collection/stories/Widget.stories.js +0 -5
  108. package/dist/esm/{GenericTableView-6aa9fac9.js → GenericTableView-07d98ad0.js} +3 -3
  109. package/dist/esm/JSS-1c144d47.js +6 -0
  110. package/dist/esm/{ShadowViewAddon-f91cd444.js → ShadowViewAddon-0d8b1430.js} +254 -228
  111. package/dist/esm/{email-registration-view-6870d230.js → email-registration-view-799eb599.js} +3 -3
  112. package/dist/esm/{global-3611a2b7.js → global-62554cef.js} +3 -3
  113. package/dist/esm/{index-60f16d0a.js → index-17b4da69.js} +1 -15
  114. package/dist/esm/{index.module-f3d96fbb.js → index.module-48f73e70.js} +4 -41
  115. package/dist/{cjs/JSS-8503a151.js → esm/jss-preset-default.esm-f910d30d.js} +1 -8
  116. package/dist/esm/loader.js +5 -5
  117. package/dist/esm/{luxon-9b1f9912.js → luxon-7600be8d.js} +1 -1
  118. package/dist/esm/mint-components.js +5 -5
  119. package/dist/esm/{mixins-83f90fa1.js → mixins-f60a614c.js} +1 -0
  120. package/dist/esm/{mockRewardData-8b3afd15.js → mockRewardData-0eb6e778.js} +1 -1
  121. package/dist/esm/raisins-plop-target.entry.js +1 -1
  122. package/dist/esm/{re-render-3b630de2.js → re-render-cb4d43dc.js} +5 -5
  123. package/dist/esm/{sqm-asset-card-view-2157b61f.js → sqm-asset-card-view-1ce99353.js} +2 -2
  124. package/dist/esm/sqm-asset-card.entry.js +6 -5
  125. package/dist/esm/sqm-banking-info-form_16.entry.js +68 -67
  126. package/dist/esm/{sqm-big-stat_37.entry.js → sqm-big-stat_38.entry.js} +115 -111
  127. package/dist/esm/sqm-checkbox-field-view-308a6a1f.js +64 -0
  128. package/dist/esm/{sqm-close-button-view-0c0bfff8.js → sqm-close-button-view-e00f01fa.js} +3 -3
  129. package/dist/esm/sqm-close-button.entry.js +7 -6
  130. package/dist/esm/sqm-context-router.entry.js +4 -4
  131. package/dist/esm/sqm-empty_4.entry.js +8 -11
  132. package/dist/esm/sqm-form-message.entry.js +2 -2
  133. package/dist/esm/sqm-graphql-client-provider.entry.js +7 -7
  134. package/dist/esm/sqm-header-logo.entry.js +2 -2
  135. package/dist/esm/sqm-instant-access-registration.entry.js +9 -8
  136. package/dist/esm/{sqm-invoice-table-view-b8240dc6.js → sqm-invoice-table-view-3ee84dc1.js} +3 -3
  137. package/dist/esm/{sqm-leaderboard-rank-view-7cd0de83.js → sqm-leaderboard-rank-view-10657658.js} +1 -1
  138. package/dist/esm/sqm-leaderboard-rank.entry.js +8 -8
  139. package/dist/esm/{sqm-logout-current-user-view-02e9f508.js → sqm-logout-current-user-view-4f05c768.js} +2 -2
  140. package/dist/esm/sqm-logout-current-user.entry.js +8 -7
  141. package/dist/esm/sqm-marketing-emails-checkbox.entry.js +50 -0
  142. package/dist/esm/{sqm-navigation-sidebar-item-view-a4e4edb6.js → sqm-navigation-sidebar-item-view-02ad070b.js} +5 -5
  143. package/dist/esm/sqm-navigation-sidebar-item.entry.js +8 -7
  144. package/dist/esm/{sqm-navigation-sidebar-view-ce55d74d.js → sqm-navigation-sidebar-view-0312e073.js} +1 -1
  145. package/dist/esm/sqm-navigation-sidebar.entry.js +6 -6
  146. package/dist/esm/sqm-password-field.entry.js +7 -6
  147. package/dist/esm/sqm-popup-container.entry.js +6 -6
  148. package/dist/esm/sqm-portal-change-marketing.entry.js +201 -0
  149. package/dist/esm/{sqm-portal-container-view-c3be4b88.js → sqm-portal-container-view-05f4bbe1.js} +2 -2
  150. package/dist/esm/{sqm-portal-email-verification-view-d500dd01.js → sqm-portal-email-verification-view-f255ec8a.js} +5 -5
  151. package/dist/esm/sqm-portal-email-verification.entry.js +14 -13
  152. package/dist/esm/{sqm-portal-forgot-password-view-4f6c89a7.js → sqm-portal-forgot-password-view-1fb6c140.js} +4 -4
  153. package/dist/esm/sqm-portal-forgot-password.entry.js +11 -10
  154. package/dist/esm/sqm-portal-logout.entry.js +4 -4
  155. package/dist/esm/{sqm-portal-profile-view-2997f902.js → sqm-portal-profile-view-5a60747a.js} +4 -4
  156. package/dist/esm/sqm-portal-profile.entry.js +12 -11
  157. package/dist/esm/sqm-portal-protected-route.entry.js +7 -7
  158. package/dist/esm/sqm-portal-registration-form-view-f967552a.js +83 -0
  159. package/dist/esm/sqm-portal-registration-form.entry.js +219 -19
  160. package/dist/esm/{sqm-portal-reset-password-view-e29f1842.js → sqm-portal-reset-password-view-17d19b2d.js} +4 -4
  161. package/dist/esm/sqm-portal-reset-password.entry.js +13 -12
  162. package/dist/esm/{sqm-portal-verify-email-view-d5dcf5c5.js → sqm-portal-verify-email-view-d9f26e51.js} +4 -4
  163. package/dist/esm/sqm-portal-verify-email.entry.js +13 -12
  164. package/dist/esm/sqm-referral-table_11.entry.js +14 -15
  165. package/dist/esm/sqm-referred-registration.entry.js +9 -8
  166. package/dist/esm/sqm-rewards-table-customer-note-cell.entry.js +5 -4
  167. package/dist/esm/sqm-rewards-table-customer-note-column.entry.js +4 -4
  168. package/dist/esm/sqm-rewards-table_9.entry.js +18 -17
  169. package/dist/esm/sqm-route.entry.js +1 -1
  170. package/dist/esm/sqm-stencilbook.entry.js +408 -733
  171. package/dist/esm/sqm-tab.entry.js +4 -4
  172. package/dist/esm/sqm-tabs.entry.js +6 -6
  173. package/dist/esm/{sqm-text-span-view-d1b54710.js → sqm-text-span-view-02ce93d8.js} +2 -2
  174. package/dist/esm/sqm-text-span.entry.js +5 -4
  175. package/dist/esm/{stencil-hooks.module-e20edc0b.js → stencil-hooks.module-ac12ca1c.js} +1 -1
  176. package/dist/esm/useCheckboxField-4cf3ab7f.js +25 -0
  177. package/dist/esm/{useChildElements-d1d3fedd.js → useChildElements-a6b895dd.js} +3 -3
  178. package/dist/esm/{useInstantAccessRegistration-c5d80a2e.js → useInstantAccessRegistration-46a98499.js} +4 -4
  179. package/dist/esm/{useReferralTable-fbcfc2a7.js → useReferralTable-6e8350db.js} +11 -11
  180. package/dist/esm/{useRegistrationFormState-33f9cb24.js → useRegistrationFormState-de6b208e.js} +3 -3
  181. package/dist/esm/{utilities-33996ce7.js → utilities-e8022681.js} +2 -2
  182. package/dist/esm-es5/{GenericTableView-6aa9fac9.js → GenericTableView-07d98ad0.js} +1 -1
  183. package/dist/esm-es5/JSS-1c144d47.js +1 -0
  184. package/dist/esm-es5/ShadowViewAddon-0d8b1430.js +1 -0
  185. package/dist/esm-es5/{email-registration-view-6870d230.js → email-registration-view-799eb599.js} +1 -1
  186. package/dist/esm-es5/{global-3611a2b7.js → global-62554cef.js} +2 -2
  187. package/dist/esm-es5/{index-60f16d0a.js → index-17b4da69.js} +1 -1
  188. package/dist/esm-es5/index.module-48f73e70.js +1 -0
  189. package/dist/esm-es5/{JSS-67b5cff8.js → jss-preset-default.esm-f910d30d.js} +1 -1
  190. package/dist/esm-es5/loader.js +1 -1
  191. package/dist/esm-es5/{luxon-9b1f9912.js → luxon-7600be8d.js} +1 -1
  192. package/dist/esm-es5/mint-components.js +1 -1
  193. package/dist/esm-es5/{mixins-83f90fa1.js → mixins-f60a614c.js} +1 -1
  194. package/dist/esm-es5/{mockRewardData-8b3afd15.js → mockRewardData-0eb6e778.js} +1 -1
  195. package/dist/esm-es5/raisins-plop-target.entry.js +1 -1
  196. package/dist/esm-es5/{re-render-3b630de2.js → re-render-cb4d43dc.js} +1 -1
  197. package/dist/esm-es5/{sqm-asset-card-view-2157b61f.js → sqm-asset-card-view-1ce99353.js} +1 -1
  198. package/dist/esm-es5/sqm-asset-card.entry.js +1 -1
  199. package/dist/esm-es5/sqm-banking-info-form_16.entry.js +1 -1
  200. package/dist/esm-es5/sqm-big-stat_38.entry.js +1 -0
  201. package/dist/esm-es5/sqm-checkbox-field-view-308a6a1f.js +1 -0
  202. package/dist/esm-es5/{sqm-close-button-view-0c0bfff8.js → sqm-close-button-view-e00f01fa.js} +1 -1
  203. package/dist/esm-es5/sqm-close-button.entry.js +1 -1
  204. package/dist/esm-es5/sqm-context-router.entry.js +1 -1
  205. package/dist/esm-es5/sqm-empty_4.entry.js +1 -1
  206. package/dist/esm-es5/sqm-form-message.entry.js +1 -1
  207. package/dist/esm-es5/sqm-graphql-client-provider.entry.js +1 -1
  208. package/dist/esm-es5/sqm-header-logo.entry.js +1 -1
  209. package/dist/esm-es5/sqm-instant-access-registration.entry.js +1 -1
  210. package/dist/esm-es5/{sqm-invoice-table-view-b8240dc6.js → sqm-invoice-table-view-3ee84dc1.js} +1 -1
  211. package/dist/esm-es5/sqm-leaderboard-rank-view-10657658.js +1 -0
  212. package/dist/esm-es5/sqm-leaderboard-rank.entry.js +1 -1
  213. package/dist/esm-es5/{sqm-logout-current-user-view-02e9f508.js → sqm-logout-current-user-view-4f05c768.js} +1 -1
  214. package/dist/esm-es5/sqm-logout-current-user.entry.js +1 -1
  215. package/dist/esm-es5/sqm-marketing-emails-checkbox.entry.js +1 -0
  216. package/dist/esm-es5/{sqm-navigation-sidebar-item-view-a4e4edb6.js → sqm-navigation-sidebar-item-view-02ad070b.js} +1 -1
  217. package/dist/esm-es5/sqm-navigation-sidebar-item.entry.js +1 -1
  218. package/dist/esm-es5/{sqm-navigation-sidebar-view-ce55d74d.js → sqm-navigation-sidebar-view-0312e073.js} +1 -1
  219. package/dist/esm-es5/sqm-navigation-sidebar.entry.js +1 -1
  220. package/dist/esm-es5/sqm-password-field.entry.js +1 -1
  221. package/dist/esm-es5/sqm-popup-container.entry.js +1 -1
  222. package/dist/esm-es5/sqm-portal-change-marketing.entry.js +1 -0
  223. package/dist/esm-es5/{sqm-portal-container-view-c3be4b88.js → sqm-portal-container-view-05f4bbe1.js} +1 -1
  224. package/dist/esm-es5/{sqm-portal-email-verification-view-d500dd01.js → sqm-portal-email-verification-view-f255ec8a.js} +1 -1
  225. package/dist/esm-es5/sqm-portal-email-verification.entry.js +1 -1
  226. package/dist/esm-es5/{sqm-portal-forgot-password-view-4f6c89a7.js → sqm-portal-forgot-password-view-1fb6c140.js} +1 -1
  227. package/dist/esm-es5/sqm-portal-forgot-password.entry.js +1 -1
  228. package/dist/esm-es5/sqm-portal-logout.entry.js +1 -1
  229. package/dist/esm-es5/{sqm-portal-profile-view-2997f902.js → sqm-portal-profile-view-5a60747a.js} +1 -1
  230. package/dist/esm-es5/sqm-portal-profile.entry.js +1 -1
  231. package/dist/esm-es5/sqm-portal-protected-route.entry.js +1 -1
  232. package/dist/esm-es5/sqm-portal-registration-form-view-f967552a.js +1 -0
  233. package/dist/esm-es5/sqm-portal-registration-form.entry.js +1 -1
  234. package/dist/esm-es5/{sqm-portal-reset-password-view-e29f1842.js → sqm-portal-reset-password-view-17d19b2d.js} +1 -1
  235. package/dist/esm-es5/sqm-portal-reset-password.entry.js +1 -1
  236. package/dist/esm-es5/{sqm-portal-verify-email-view-d5dcf5c5.js → sqm-portal-verify-email-view-d9f26e51.js} +1 -1
  237. package/dist/esm-es5/sqm-portal-verify-email.entry.js +1 -1
  238. package/dist/esm-es5/sqm-referral-table_11.entry.js +1 -1
  239. package/dist/esm-es5/sqm-referred-registration.entry.js +1 -1
  240. package/dist/esm-es5/sqm-rewards-table-customer-note-cell.entry.js +1 -1
  241. package/dist/esm-es5/sqm-rewards-table-customer-note-column.entry.js +1 -1
  242. package/dist/esm-es5/sqm-rewards-table_9.entry.js +1 -1
  243. package/dist/esm-es5/sqm-route.entry.js +1 -1
  244. package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
  245. package/dist/esm-es5/sqm-tab.entry.js +1 -1
  246. package/dist/esm-es5/sqm-tabs.entry.js +1 -1
  247. package/dist/esm-es5/{sqm-text-span-view-d1b54710.js → sqm-text-span-view-02ce93d8.js} +1 -1
  248. package/dist/esm-es5/sqm-text-span.entry.js +1 -1
  249. package/dist/esm-es5/{stencil-hooks.module-e20edc0b.js → stencil-hooks.module-ac12ca1c.js} +1 -1
  250. package/dist/esm-es5/useCheckboxField-4cf3ab7f.js +1 -0
  251. package/dist/esm-es5/useChildElements-a6b895dd.js +1 -0
  252. package/dist/esm-es5/{useInstantAccessRegistration-c5d80a2e.js → useInstantAccessRegistration-46a98499.js} +1 -1
  253. package/dist/esm-es5/{useReferralTable-fbcfc2a7.js → useReferralTable-6e8350db.js} +1 -1
  254. package/dist/esm-es5/useRegistrationFormState-de6b208e.js +1 -0
  255. package/dist/esm-es5/{utilities-33996ce7.js → utilities-e8022681.js} +1 -1
  256. package/dist/mint-components/mint-components.esm.js +1 -1
  257. package/dist/mint-components/mint-components.js +1 -1
  258. package/dist/mint-components/{p-863340dc.entry.js → p-0068067d.entry.js} +1 -1
  259. package/dist/mint-components/{p-9e4e3d5f.system.js → p-01583213.system.js} +1 -1
  260. package/dist/mint-components/{p-91521e9d.js → p-02be1a88.js} +1 -1
  261. package/dist/mint-components/p-0a898ab1.js +1 -0
  262. package/dist/mint-components/p-0c486d59.system.entry.js +1 -0
  263. package/dist/mint-components/p-0e7aff90.entry.js +1 -0
  264. package/dist/mint-components/p-0f010c01.system.js +1 -0
  265. package/dist/mint-components/p-0f60a773.system.entry.js +1 -0
  266. package/dist/mint-components/p-10f50982.entry.js +1 -0
  267. package/dist/mint-components/p-115edc43.system.entry.js +1 -0
  268. package/dist/mint-components/p-11d71aca.system.entry.js +1 -0
  269. package/dist/mint-components/{p-88197cfd.js → p-140d7013.js} +1 -1
  270. package/dist/mint-components/p-175075e7.system.js +1 -0
  271. package/dist/mint-components/{p-8799b28f.entry.js → p-178d2d2e.entry.js} +1 -1
  272. package/dist/mint-components/p-1804b66f.entry.js +1 -0
  273. package/dist/mint-components/p-1a41a421.entry.js +1 -0
  274. package/dist/mint-components/p-1b150b6a.system.js +1 -0
  275. package/dist/mint-components/{p-5fb1bcb5.entry.js → p-1c731efb.entry.js} +6 -6
  276. package/dist/mint-components/{p-15b2063c.system.js → p-1eb21821.system.js} +1 -1
  277. package/dist/mint-components/p-215d9dce.system.entry.js +1 -0
  278. package/dist/mint-components/p-2246106b.js +1 -0
  279. package/dist/mint-components/{p-3dc9a448.entry.js → p-23112de2.entry.js} +1 -1
  280. package/dist/mint-components/{p-12d27b9b.js → p-251e7567.js} +1 -1
  281. package/dist/mint-components/{p-0e89ac7f.system.entry.js → p-275b2841.system.entry.js} +1 -1
  282. package/dist/mint-components/p-278956a2.entry.js +1 -0
  283. package/dist/mint-components/p-28853a6a.entry.js +1 -0
  284. package/dist/mint-components/p-29023a9c.entry.js +1 -0
  285. package/dist/mint-components/p-2a0fa0ad.js +1 -0
  286. package/dist/mint-components/{p-ef7b966e.system.js → p-2a2d4343.system.js} +1 -1
  287. package/dist/mint-components/{p-58bcece7.system.js → p-2a414b2e.system.js} +1 -1
  288. package/dist/mint-components/{p-5b6cf6cd.system.js → p-2aa7713d.system.js} +1 -1
  289. package/dist/mint-components/p-2acb78d3.entry.js +1 -0
  290. package/dist/mint-components/{p-a631db44.system.js → p-2b1aaa73.system.js} +1 -1
  291. package/dist/mint-components/p-2dea7656.system.js +1 -0
  292. package/dist/mint-components/p-347dd097.system.entry.js +1 -0
  293. package/dist/mint-components/{p-2dff4fb2.js → p-36e74ad7.js} +1 -1
  294. package/dist/mint-components/{p-3ae32130.system.js → p-370a1a73.system.js} +1 -1
  295. package/dist/mint-components/p-373e65b0.system.entry.js +1 -0
  296. package/dist/mint-components/{p-e864a155.entry.js → p-3b08cc52.entry.js} +1 -1
  297. package/dist/mint-components/p-3c62b21e.entry.js +1 -0
  298. package/dist/mint-components/p-3d6c5d14.system.entry.js +1 -0
  299. package/dist/mint-components/p-4086b633.js +1 -0
  300. package/dist/mint-components/p-41e50df2.system.entry.js +1 -0
  301. package/dist/mint-components/p-481dedf2.system.js +1 -0
  302. package/dist/mint-components/{p-5057380a.system.js → p-4a9499c7.system.js} +1 -1
  303. package/dist/mint-components/p-4ac09619.entry.js +1 -0
  304. package/dist/mint-components/p-4dcdf9b6.js +1 -0
  305. package/dist/mint-components/p-4e7a12df.system.entry.js +1 -0
  306. package/dist/mint-components/p-50d1a9b2.system.entry.js +1 -0
  307. package/dist/mint-components/p-512089bb.js +1 -0
  308. package/dist/mint-components/p-513f79fb.entry.js +13 -0
  309. package/dist/mint-components/p-527ec925.entry.js +1 -0
  310. package/dist/mint-components/{p-71d6b762.js → p-538aab3a.js} +1 -1
  311. package/dist/mint-components/p-54918603.entry.js +13 -0
  312. package/dist/mint-components/p-55108921.entry.js +1 -0
  313. package/dist/mint-components/p-568880c6.entry.js +11 -0
  314. package/dist/mint-components/{p-3c00282b.entry.js → p-59111d6c.entry.js} +1 -1
  315. package/dist/mint-components/p-597ad57b.system.js +1 -0
  316. package/dist/mint-components/p-5da7c982.system.js +1 -0
  317. package/dist/mint-components/{p-c1ede4f5.system.js → p-5e095969.system.js} +1 -1
  318. package/dist/mint-components/{p-d59c19ba.entry.js → p-60fd880a.entry.js} +2 -2
  319. package/dist/mint-components/{p-b3499953.entry.js → p-639d3dd3.entry.js} +1 -1
  320. package/dist/mint-components/p-64c3217a.js +1 -0
  321. package/dist/mint-components/{p-5309ebf3.js → p-66060832.js} +1 -1
  322. package/dist/mint-components/p-687d6357.system.js +1 -0
  323. package/dist/mint-components/p-6a026560.entry.js +1 -0
  324. package/dist/mint-components/{p-0aa76ad0.system.entry.js → p-6afb4f48.system.entry.js} +1 -1
  325. package/dist/mint-components/{p-1ab3f305.system.js → p-6b5e355c.system.js} +1 -1
  326. package/dist/mint-components/{p-a67e8ef4.system.js → p-6f980faf.system.js} +1 -1
  327. package/dist/mint-components/p-711bb8da.entry.js +1 -0
  328. package/dist/mint-components/{p-4b55e96b.entry.js → p-7557ed77.entry.js} +16 -16
  329. package/dist/mint-components/p-75cef010.system.js +1 -0
  330. package/dist/mint-components/{p-3c04f8d1.system.js → p-771a2ee3.system.js} +1 -1
  331. package/dist/mint-components/{p-adc14a77.system.entry.js → p-7726e4ea.system.entry.js} +1 -1
  332. package/dist/mint-components/p-7a815193.system.entry.js +1 -0
  333. package/dist/mint-components/p-7df4e6bf.system.js +1 -0
  334. package/dist/mint-components/p-7eabcffc.js +1 -0
  335. package/dist/mint-components/p-833fe52b.js +1 -0
  336. package/dist/mint-components/p-873f57ea.system.entry.js +1 -0
  337. package/dist/mint-components/{p-ec379cf4.system.entry.js → p-88a2e66e.system.entry.js} +1 -1
  338. package/dist/mint-components/{p-ff19bf56.system.js → p-8de27ef5.system.js} +1 -1
  339. package/dist/mint-components/p-8f53ea77.system.entry.js +1 -0
  340. package/dist/mint-components/p-8f87de4b.system.entry.js +1 -0
  341. package/dist/mint-components/{p-c33ccfb7.entry.js → p-92110eef.entry.js} +1 -1
  342. package/dist/mint-components/p-921225ad.system.entry.js +1 -0
  343. package/dist/mint-components/{p-22110634.js → p-968bad36.js} +1 -1
  344. package/dist/mint-components/p-98cebfec.system.js +1 -0
  345. package/dist/mint-components/p-9aa177d6.system.entry.js +1 -0
  346. package/dist/mint-components/{p-697d6e54.system.js → p-9ae5c6c1.system.js} +1 -1
  347. package/dist/mint-components/{p-7e3ada1b.system.js → p-9b46f9c3.system.js} +1 -1
  348. package/dist/mint-components/p-9b4a99c4.js +1 -0
  349. package/dist/mint-components/p-9b860442.entry.js +33 -0
  350. package/dist/mint-components/p-9bb9a767.system.js +1 -0
  351. package/dist/mint-components/p-9cbfc500.entry.js +1 -0
  352. package/dist/mint-components/p-a16c619c.js +1 -0
  353. package/dist/mint-components/p-a1948fb7.system.entry.js +1 -0
  354. package/dist/mint-components/p-a3ffc863.system.entry.js +1 -0
  355. package/dist/mint-components/{p-b402df18.js → p-a5b16d30.js} +1 -1
  356. package/dist/mint-components/p-a6b36268.system.js +1 -0
  357. package/dist/mint-components/p-a76a7e46.system.entry.js +1 -0
  358. package/dist/mint-components/{p-e56447fd.js → p-ac1bf045.js} +1 -1
  359. package/dist/mint-components/p-af5cc6f4.entry.js +18 -0
  360. package/dist/mint-components/p-b07a88fd.js +1 -0
  361. package/dist/mint-components/p-b0c53c97.system.entry.js +1 -0
  362. package/dist/mint-components/{p-683cfd07.js → p-b348d95c.js} +1 -1
  363. package/dist/mint-components/{p-e0c608e4.system.js → p-b54defaf.system.js} +1 -1
  364. package/dist/mint-components/p-b5b9f737.entry.js +1 -0
  365. package/dist/mint-components/p-b6c2318d.js +1 -0
  366. package/dist/mint-components/{p-3dbcd42a.system.entry.js → p-b7324c0e.system.entry.js} +1 -1
  367. package/dist/mint-components/p-b86003f6.entry.js +1 -0
  368. package/dist/mint-components/{p-5c714029.js → p-b9cff63f.js} +1 -1
  369. package/dist/mint-components/{p-0b6200b3.js → p-b9fe0c38.js} +1 -1
  370. package/dist/mint-components/p-bd6d9d54.system.entry.js +1 -0
  371. package/dist/mint-components/{p-682450a8.js → p-bda832b2.js} +1 -1
  372. package/dist/mint-components/p-c0b254f6.js +391 -0
  373. package/dist/mint-components/{p-b11f43ee.js → p-c136a447.js} +1 -1
  374. package/dist/mint-components/{p-8f705bea.system.entry.js → p-c1a47137.system.entry.js} +1 -1
  375. package/dist/mint-components/{p-d47569d0.js → p-c4719154.js} +1 -1
  376. package/dist/mint-components/p-c7624256.system.entry.js +1 -0
  377. package/dist/mint-components/{p-1a673057.system.js → p-c8d580ea.system.js} +1 -1
  378. package/dist/mint-components/p-c98cd85a.system.entry.js +1 -0
  379. package/dist/mint-components/p-ce65982f.entry.js +9 -0
  380. package/dist/mint-components/{p-d477a07b.system.js → p-ce9e7c98.system.js} +1 -1
  381. package/dist/mint-components/{p-bc305236.system.entry.js → p-cefffd56.system.entry.js} +1 -1
  382. package/dist/mint-components/p-d9c53d4b.system.entry.js +1 -0
  383. package/dist/mint-components/p-deb712ef.system.js +1 -0
  384. package/dist/mint-components/p-df69e89b.entry.js +1 -0
  385. package/dist/mint-components/p-e13fb786.system.entry.js +1 -0
  386. package/dist/mint-components/p-e169497d.entry.js +1 -0
  387. package/dist/mint-components/p-e27a2d0f.js +1 -0
  388. package/dist/mint-components/{p-222fa722.system.js → p-e546347e.system.js} +1 -1
  389. package/dist/mint-components/{p-cef45012.js → p-ecc9ed0b.js} +1 -1
  390. package/dist/mint-components/p-eff03905.system.entry.js +1 -0
  391. package/dist/mint-components/{p-7bc9308c.system.entry.js → p-f0806232.system.entry.js} +1 -1
  392. package/dist/mint-components/p-f0cc9ed1.system.entry.js +1 -0
  393. package/dist/mint-components/p-f2bb6bd1.system.js +1 -0
  394. package/dist/mint-components/{p-9d078f60.js → p-f3053c61.js} +1 -1
  395. package/dist/mint-components/{p-cd1d497f.system.js → p-f6934a55.system.js} +1 -1
  396. package/dist/mint-components/{p-aa5446c1.js → p-f817537a.js} +1 -1
  397. package/dist/mint-components/{p-9fff2218.js → p-f8574e9f.js} +1 -1
  398. package/dist/mint-components/p-f9b15dba.entry.js +1 -0
  399. package/dist/mint-components/{p-75956e50.entry.js → p-fbdf0738.entry.js} +1 -1
  400. package/dist/mint-components/p-fc58dc2f.system.entry.js +1 -0
  401. package/dist/mint-components/{p-b619a5e0.js → p-fd2c5407.js} +1 -1
  402. package/dist/mint-components/{p-989fdd2e.system.js → p-ff17b3a4.system.js} +1 -1
  403. package/dist/types/components/sqm-checkbox-field/sqm-checkbox-field-view.d.ts +1 -1
  404. package/dist/types/components/sqm-checkbox-field/sqm-checkbox-field.d.ts +4 -4
  405. package/dist/types/components/sqm-empty/sqm-empty.d.ts +1 -1
  406. package/dist/types/components/{sqm-pagination/Pagination.stories.d.ts → sqm-marketing-emails-checkbox/MarketingEmailsCheckbox.stories.d.ts} +3 -0
  407. package/dist/types/components/sqm-marketing-emails-checkbox/sqm-marketing-emails-checkbox.d.ts +28 -0
  408. package/dist/types/components/sqm-portal-change-marketing/sqm-portal-change-marketing-view.d.ts +26 -0
  409. package/dist/types/components/sqm-portal-change-marketing/sqm-portal-change-marketing.d.ts +35 -0
  410. package/dist/types/components/sqm-portal-change-marketing/usePortalChangeMarketing.d.ts +3 -0
  411. package/dist/types/components/sqm-portal-container/sqm-portal-container.d.ts +1 -0
  412. package/dist/types/components/sqm-portal-login/PortalLogin.stories.d.ts +0 -1
  413. package/dist/types/components/sqm-portal-login/sqm-portal-login-view.d.ts +0 -2
  414. package/dist/types/components/sqm-portal-login/sqm-portal-login.d.ts +0 -8
  415. package/dist/types/components/sqm-portal-registration-form/PortalRegistrationForm.stories.d.ts +1 -0
  416. package/dist/types/components/sqm-portal-registration-form/sqm-portal-registration-form-view.d.ts +1 -2
  417. package/dist/types/components/sqm-portal-registration-form/sqm-portal-registration-form.d.ts +1 -7
  418. package/dist/types/components/sqm-portal-registration-form/usePortalRegistrationForm.d.ts +0 -1
  419. package/dist/types/components/sqm-referral-card/ReferralCard.stories.d.ts +0 -1
  420. package/dist/types/components/sqm-share-link/useShareLink.d.ts +0 -1
  421. package/dist/types/components/views/copy-text-view.d.ts +0 -3
  422. package/dist/types/components.d.ts +105 -544
  423. package/dist/types/global/mixins.d.ts +2 -0
  424. package/dist/types/stories/Widget.stories.d.ts +0 -6
  425. package/docs/docs.docx +0 -0
  426. package/docs/raisins.json +1 -1
  427. package/grapesjs/grapesjs.js +1 -1
  428. package/package.json +1 -1
  429. package/dist/cjs/copy-text-view-43e8349f.js +0 -231
  430. package/dist/cjs/sqm-base-registration-form-view-e4a74dee.js +0 -68
  431. package/dist/cjs/sqm-google-sign-in.cjs.entry.js +0 -45
  432. package/dist/cjs/sqm-name-fields-view-57c734bf.js +0 -55
  433. package/dist/cjs/sqm-name-fields.cjs.entry.js +0 -59
  434. package/dist/cjs/sqm-pagination_3.cjs.entry.js +0 -392
  435. package/dist/cjs/sqm-portal-google-registration-form.cjs.entry.js +0 -314
  436. package/dist/cjs/sqm-portal-registration-form-view-0502824e.js +0 -87
  437. package/dist/cjs/usePortalRegistrationForm-16151c0c.js +0 -214
  438. package/dist/collection/components/sqm-base-registration/BaseRegistrationForm.stories.js +0 -36
  439. package/dist/collection/components/sqm-base-registration/sqm-base-registration-form-view.js +0 -63
  440. package/dist/collection/components/sqm-google-sign-in/sqm-google-sign-in.js +0 -78
  441. package/dist/collection/components/sqm-pagination/Pagination.stories.js +0 -12
  442. package/dist/collection/components/sqm-pagination/sqm-pagination-view.js +0 -32
  443. package/dist/collection/components/sqm-pagination/sqm-pagination.js +0 -112
  444. package/dist/collection/components/sqm-pagination/usePagination.js +0 -29
  445. package/dist/collection/components/sqm-portal-google-registration-form/PortalGoogleRegistrationForm.stories.js +0 -78
  446. package/dist/collection/components/sqm-portal-google-registration-form/small-views/RegistrationFieldsView.js +0 -86
  447. package/dist/collection/components/sqm-portal-google-registration-form/sqm-portal-google-registration-form.js +0 -880
  448. package/dist/collection/components/sqm-portal-google-registration-form/usePortalGoogleRegistrationForm.js +0 -70
  449. package/dist/collection/components/sqm-referral-code/ReferralCode.stories.js +0 -60
  450. package/dist/collection/components/sqm-referral-code/sqm-referral-code.js +0 -317
  451. package/dist/collection/components/sqm-referral-code/useReferralCode.js +0 -63
  452. package/dist/collection/components/sqm-referral-codes/ReferralCodes.stories.js +0 -65
  453. package/dist/collection/components/sqm-referral-codes/sqm-referral-codes-view.js +0 -69
  454. package/dist/collection/components/sqm-referral-codes/sqm-referral-codes.js +0 -219
  455. package/dist/collection/components/sqm-referral-codes/useReferralCodes.js +0 -131
  456. package/dist/esm/copy-text-view-61eebf5d.js +0 -225
  457. package/dist/esm/sqm-base-registration-form-view-dd481f19.js +0 -66
  458. package/dist/esm/sqm-google-sign-in.entry.js +0 -41
  459. package/dist/esm/sqm-name-fields-view-ec19e9e8.js +0 -53
  460. package/dist/esm/sqm-name-fields.entry.js +0 -55
  461. package/dist/esm/sqm-pagination_3.entry.js +0 -386
  462. package/dist/esm/sqm-portal-google-registration-form.entry.js +0 -310
  463. package/dist/esm/sqm-portal-registration-form-view-22ea3db3.js +0 -85
  464. package/dist/esm/usePortalRegistrationForm-8b093aa2.js +0 -212
  465. package/dist/esm-es5/ShadowViewAddon-f91cd444.js +0 -1
  466. package/dist/esm-es5/copy-text-view-61eebf5d.js +0 -1
  467. package/dist/esm-es5/index.module-f3d96fbb.js +0 -1
  468. package/dist/esm-es5/sqm-base-registration-form-view-dd481f19.js +0 -1
  469. package/dist/esm-es5/sqm-big-stat_37.entry.js +0 -1
  470. package/dist/esm-es5/sqm-google-sign-in.entry.js +0 -1
  471. package/dist/esm-es5/sqm-leaderboard-rank-view-7cd0de83.js +0 -1
  472. package/dist/esm-es5/sqm-name-fields-view-ec19e9e8.js +0 -1
  473. package/dist/esm-es5/sqm-name-fields.entry.js +0 -1
  474. package/dist/esm-es5/sqm-pagination_3.entry.js +0 -1
  475. package/dist/esm-es5/sqm-portal-google-registration-form.entry.js +0 -1
  476. package/dist/esm-es5/sqm-portal-registration-form-view-22ea3db3.js +0 -1
  477. package/dist/esm-es5/useChildElements-d1d3fedd.js +0 -1
  478. package/dist/esm-es5/usePortalRegistrationForm-8b093aa2.js +0 -1
  479. package/dist/esm-es5/useRegistrationFormState-33f9cb24.js +0 -1
  480. package/dist/mint-components/p-070fa30d.entry.js +0 -1
  481. package/dist/mint-components/p-0725d1a7.system.entry.js +0 -1
  482. package/dist/mint-components/p-0954e95d.entry.js +0 -33
  483. package/dist/mint-components/p-0c4c5874.js +0 -1
  484. package/dist/mint-components/p-0fd20804.system.entry.js +0 -1
  485. package/dist/mint-components/p-0fe8fbe1.system.entry.js +0 -1
  486. package/dist/mint-components/p-10b4282b.entry.js +0 -9
  487. package/dist/mint-components/p-13fe7290.js +0 -1
  488. package/dist/mint-components/p-14dc52dc.system.entry.js +0 -1
  489. package/dist/mint-components/p-1739dfb8.entry.js +0 -1
  490. package/dist/mint-components/p-18ecdc82.js +0 -13
  491. package/dist/mint-components/p-1d58a8ff.entry.js +0 -1
  492. package/dist/mint-components/p-2295cf05.system.js +0 -1
  493. package/dist/mint-components/p-273ad080.system.entry.js +0 -1
  494. package/dist/mint-components/p-27407a2c.js +0 -1
  495. package/dist/mint-components/p-27ba7f25.system.entry.js +0 -1
  496. package/dist/mint-components/p-27f281f4.system.js +0 -1
  497. package/dist/mint-components/p-36e7a6f9.entry.js +0 -1
  498. package/dist/mint-components/p-38b8050c.system.entry.js +0 -1
  499. package/dist/mint-components/p-38bd81d1.system.js +0 -1
  500. package/dist/mint-components/p-3b923175.system.entry.js +0 -1
  501. package/dist/mint-components/p-3d4978ca.system.entry.js +0 -1
  502. package/dist/mint-components/p-44c4a54f.system.entry.js +0 -1
  503. package/dist/mint-components/p-455a3f54.system.entry.js +0 -1
  504. package/dist/mint-components/p-478e8baa.system.js +0 -1
  505. package/dist/mint-components/p-500a2bff.entry.js +0 -13
  506. package/dist/mint-components/p-53238aee.js +0 -1
  507. package/dist/mint-components/p-5d09a6a3.entry.js +0 -1
  508. package/dist/mint-components/p-5e61bdfd.entry.js +0 -1
  509. package/dist/mint-components/p-6465b781.js +0 -1
  510. package/dist/mint-components/p-6673a331.system.js +0 -1
  511. package/dist/mint-components/p-6a95e6b7.js +0 -52
  512. package/dist/mint-components/p-6ac9d2cf.entry.js +0 -1
  513. package/dist/mint-components/p-7027b14d.js +0 -1
  514. package/dist/mint-components/p-70eafbbd.system.entry.js +0 -1
  515. package/dist/mint-components/p-7141d536.system.entry.js +0 -1
  516. package/dist/mint-components/p-74d5d3d1.entry.js +0 -1
  517. package/dist/mint-components/p-7d2d59ec.system.entry.js +0 -1
  518. package/dist/mint-components/p-7ef0cb0a.system.js +0 -1
  519. package/dist/mint-components/p-7facf5cd.system.entry.js +0 -1
  520. package/dist/mint-components/p-823f61da.entry.js +0 -1
  521. package/dist/mint-components/p-8329e1fa.system.js +0 -1
  522. package/dist/mint-components/p-8525931d.system.entry.js +0 -1
  523. package/dist/mint-components/p-8a0a87e7.system.entry.js +0 -1
  524. package/dist/mint-components/p-8fb2af73.system.js +0 -1
  525. package/dist/mint-components/p-920b48ad.system.entry.js +0 -1
  526. package/dist/mint-components/p-93124bdb.entry.js +0 -1
  527. package/dist/mint-components/p-944918d9.entry.js +0 -1
  528. package/dist/mint-components/p-966eed0f.system.js +0 -1
  529. package/dist/mint-components/p-9716a83b.js +0 -1
  530. package/dist/mint-components/p-9c7a031a.js +0 -1
  531. package/dist/mint-components/p-9d954277.system.entry.js +0 -1
  532. package/dist/mint-components/p-9dd86f9c.system.js +0 -1
  533. package/dist/mint-components/p-a1cb66c0.system.js +0 -1
  534. package/dist/mint-components/p-a2a3d9dc.entry.js +0 -1
  535. package/dist/mint-components/p-a7ac4fff.system.entry.js +0 -1
  536. package/dist/mint-components/p-a8bf33fc.js +0 -1
  537. package/dist/mint-components/p-a9166b6a.entry.js +0 -1
  538. package/dist/mint-components/p-aeea67a3.entry.js +0 -1
  539. package/dist/mint-components/p-b043693d.system.entry.js +0 -1
  540. package/dist/mint-components/p-b33381a7.js +0 -1
  541. package/dist/mint-components/p-b5a2df3f.system.js +0 -1
  542. package/dist/mint-components/p-b667d890.system.entry.js +0 -1
  543. package/dist/mint-components/p-b6a4ce83.entry.js +0 -1
  544. package/dist/mint-components/p-b6f41077.entry.js +0 -1
  545. package/dist/mint-components/p-b7bd7ff0.js +0 -1
  546. package/dist/mint-components/p-b7edef12.system.entry.js +0 -1
  547. package/dist/mint-components/p-bd5706ba.entry.js +0 -1
  548. package/dist/mint-components/p-bebe70b4.js +0 -391
  549. package/dist/mint-components/p-c2bc302f.system.entry.js +0 -1
  550. package/dist/mint-components/p-c4c922fc.system.entry.js +0 -1
  551. package/dist/mint-components/p-c56b47e5.system.js +0 -1
  552. package/dist/mint-components/p-c5dd12cf.entry.js +0 -1
  553. package/dist/mint-components/p-cd39acd0.system.entry.js +0 -1
  554. package/dist/mint-components/p-d23d5113.js +0 -1
  555. package/dist/mint-components/p-d4c0d53f.js +0 -1
  556. package/dist/mint-components/p-d9dd65fd.entry.js +0 -1
  557. package/dist/mint-components/p-dacefee2.entry.js +0 -1
  558. package/dist/mint-components/p-df387a02.system.entry.js +0 -1
  559. package/dist/mint-components/p-e10be944.entry.js +0 -1
  560. package/dist/mint-components/p-e605fe66.entry.js +0 -11
  561. package/dist/mint-components/p-e64c49dd.system.js +0 -1
  562. package/dist/mint-components/p-eac81420.entry.js +0 -1
  563. package/dist/mint-components/p-ec867cad.system.entry.js +0 -1
  564. package/dist/mint-components/p-ec9c8ced.system.js +0 -1
  565. package/dist/mint-components/p-f4b8a8d5.system.entry.js +0 -1
  566. package/dist/mint-components/p-f7175fc2.system.entry.js +0 -1
  567. package/dist/mint-components/p-f81cc2cd.entry.js +0 -1
  568. package/dist/mint-components/p-f8450975.system.entry.js +0 -1
  569. package/dist/mint-components/p-f8b41805.system.js +0 -1
  570. package/dist/mint-components/p-fde23de1.entry.js +0 -13
  571. package/dist/types/components/sqm-base-registration/BaseRegistrationForm.stories.d.ts +0 -6
  572. package/dist/types/components/sqm-base-registration/sqm-base-registration-form-view.d.ts +0 -19
  573. package/dist/types/components/sqm-google-sign-in/sqm-google-sign-in.d.ts +0 -12
  574. package/dist/types/components/sqm-pagination/sqm-pagination-view.d.ts +0 -15
  575. package/dist/types/components/sqm-pagination/sqm-pagination.d.ts +0 -22
  576. package/dist/types/components/sqm-pagination/usePagination.d.ts +0 -16
  577. package/dist/types/components/sqm-portal-google-registration-form/PortalGoogleRegistrationForm.stories.d.ts +0 -8
  578. package/dist/types/components/sqm-portal-google-registration-form/small-views/RegistrationFieldsView.d.ts +0 -31
  579. package/dist/types/components/sqm-portal-google-registration-form/sqm-portal-google-registration-form.d.ts +0 -155
  580. package/dist/types/components/sqm-portal-google-registration-form/usePortalGoogleRegistrationForm.d.ts +0 -14
  581. package/dist/types/components/sqm-referral-code/ReferralCode.stories.d.ts +0 -18
  582. package/dist/types/components/sqm-referral-code/sqm-referral-code.d.ts +0 -70
  583. package/dist/types/components/sqm-referral-code/useReferralCode.d.ts +0 -3
  584. package/dist/types/components/sqm-referral-codes/ReferralCodes.stories.d.ts +0 -12
  585. package/dist/types/components/sqm-referral-codes/sqm-referral-codes-view.d.ts +0 -16
  586. package/dist/types/components/sqm-referral-codes/sqm-referral-codes.d.ts +0 -39
  587. package/dist/types/components/sqm-referral-codes/useReferralCodes.d.ts +0 -52
@@ -2,39 +2,38 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-3cf5ef3d.js');
6
- const stencilHooks_module = require('./stencil-hooks.module-ece1ee46.js');
7
- require('./global-d9abaf4d.js');
8
- const index_module = require('./index.module-ccf9bd9c.js');
5
+ const index = require('./index-b0129cd6.js');
6
+ const stencilHooks_module = require('./stencil-hooks.module-72742a0b.js');
7
+ require('./global-02e50f09.js');
8
+ const index_module = require('./index.module-df530553.js');
9
9
  require('./cjs-1066ec21.js');
10
+ require('./mixins-fe9d4112.js');
11
+ require('./jss-preset-default.esm-451bc403.js');
12
+ const JSS = require('./JSS-9a3cf556.js');
13
+ const GenericTableView = require('./GenericTableView-69534180.js');
14
+ require('./useChildElements-e0d44916.js');
15
+ const luxon = require('./luxon-05098e19.js');
10
16
  require('./utils-6847bc06.js');
11
- const JSS = require('./JSS-8503a151.js');
12
- const copyTextView = require('./copy-text-view-43e8349f.js');
13
- require('./mixins-f7e0377a.js');
14
- const GenericTableView = require('./GenericTableView-7ef786c3.js');
15
- require('./useChildElements-438cf387.js');
16
- const luxon = require('./luxon-14ae1f8a.js');
17
- require('./sqm-text-span-view-a22f50aa.js');
18
- const sqmAssetCardView = require('./sqm-asset-card-view-a3abee0b.js');
19
- const sqmCloseButtonView = require('./sqm-close-button-view-0cdada3a.js');
17
+ require('./sqm-text-span-view-f318b5ac.js');
18
+ const sqmAssetCardView = require('./sqm-asset-card-view-16494e3a.js');
19
+ const sqmCloseButtonView = require('./sqm-close-button-view-b96a4fb9.js');
20
20
  require('./index-8c6255f5.js');
21
- const emailRegistrationView = require('./email-registration-view-4eeee3e4.js');
22
- const sqmLeaderboardRankView = require('./sqm-leaderboard-rank-view-133f8d95.js');
23
- const sqmLogoutCurrentUserView = require('./sqm-logout-current-user-view-64ca6abe.js');
24
- const sqmNavigationSidebarView = require('./sqm-navigation-sidebar-view-37209a17.js');
25
- const sqmNavigationSidebarItemView = require('./sqm-navigation-sidebar-item-view-38519acf.js');
26
- const sqmPortalEmailVerificationView = require('./sqm-portal-email-verification-view-6e1e80e7.js');
27
- const sqmPortalForgotPasswordView = require('./sqm-portal-forgot-password-view-97903679.js');
28
- const sqmBaseRegistrationFormView = require('./sqm-base-registration-form-view-e4a74dee.js');
29
- const sqmPortalRegistrationFormView = require('./sqm-portal-registration-form-view-0502824e.js');
30
- const sqmPortalProfileView = require('./sqm-portal-profile-view-f4489585.js');
31
- require('./utilities-27e9535b.js');
32
- const sqmPortalResetPasswordView = require('./sqm-portal-reset-password-view-0ed5419e.js');
33
- const sqmPortalVerifyEmailView = require('./sqm-portal-verify-email-view-cd2c3086.js');
34
- const ShadowViewAddon = require('./ShadowViewAddon-fae7ab2c.js');
35
- const sqmPortalContainerView = require('./sqm-portal-container-view-9a36f5ed.js');
36
- const sqmNameFieldsView = require('./sqm-name-fields-view-57c734bf.js');
37
- const sqmInvoiceTableView = require('./sqm-invoice-table-view-a13d1c7f.js');
21
+ const emailRegistrationView = require('./email-registration-view-ec79ef26.js');
22
+ const sqmLeaderboardRankView = require('./sqm-leaderboard-rank-view-5a3d4a88.js');
23
+ const sqmLogoutCurrentUserView = require('./sqm-logout-current-user-view-47153187.js');
24
+ const sqmNavigationSidebarView = require('./sqm-navigation-sidebar-view-921704fb.js');
25
+ const sqmNavigationSidebarItemView = require('./sqm-navigation-sidebar-item-view-761d17e3.js');
26
+ const sqmPortalEmailVerificationView = require('./sqm-portal-email-verification-view-137ae9cf.js');
27
+ const sqmPortalForgotPasswordView = require('./sqm-portal-forgot-password-view-f43b703a.js');
28
+ const sqmPortalProfileView = require('./sqm-portal-profile-view-9401d663.js');
29
+ require('./utilities-cec9dd36.js');
30
+ const sqmPortalRegistrationFormView = require('./sqm-portal-registration-form-view-890746ac.js');
31
+ const sqmPortalResetPasswordView = require('./sqm-portal-reset-password-view-ac811594.js');
32
+ const sqmPortalVerifyEmailView = require('./sqm-portal-verify-email-view-d93a4291.js');
33
+ const ShadowViewAddon = require('./ShadowViewAddon-03efae45.js');
34
+ const sqmPortalContainerView = require('./sqm-portal-container-view-7648fd3f.js');
35
+ const sqmCheckboxFieldView = require('./sqm-checkbox-field-view-49196804.js');
36
+ const sqmInvoiceTableView = require('./sqm-invoice-table-view-7cd560da.js');
38
37
 
39
38
  /**
40
39
  * lodash (Custom Build) <https://lodash.com/>
@@ -1632,19 +1631,6 @@ const EmptyState = /*#__PURE__*/Object.freeze({
1632
1631
  SlottedIntoComponent: SlottedIntoComponent
1633
1632
  });
1634
1633
 
1635
- const Pagination_stories = {
1636
- title: "Components/Link Button",
1637
- };
1638
- const Default = () => {
1639
- return index.h("sqm-pagination", null);
1640
- };
1641
-
1642
- const Pagination = /*#__PURE__*/Object.freeze({
1643
- __proto__: null,
1644
- 'default': Pagination_stories,
1645
- Default: Default
1646
- });
1647
-
1648
1634
  const scenario$2 = "@author:johan\n@owner:johan\nFeature: Share Link\n\n The share link component is a box that allows users to see and copy their share link 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 sharelink 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 link\n When the clipboard icon is clicked\n Then the link is copied to clipboard\n And a tooltip appears 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 appears for ~2 seconds\n\n @minutia\n Scenario: Demo\n Given isDemo() returns true\n Then the share link is \"https://www.example.com/sharelink/abc\"\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 link 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 link is for \"program-b\"\n\n @minutia\n Scenario: An analytic event is fired when a user copies their sharelink\n Given a user viewing the share link component\n And the component is rendered for \"program-a\"\n When they click to copy their link\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 link text\n Given a user is editing the share link 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 link 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";
1649
1635
 
1650
1636
  const ShareLink_stories = {
@@ -1653,13 +1639,13 @@ const ShareLink_stories = {
1653
1639
  scenario: scenario$2,
1654
1640
  },
1655
1641
  };
1656
- const Default$1 = () => {
1642
+ const Default = () => {
1657
1643
  const props = {
1658
1644
  copyString: "https://noah.example.com",
1659
1645
  open: false,
1660
1646
  tooltiptext: "Copied!",
1661
1647
  };
1662
- return index.h(copyTextView.CopyTextView, Object.assign({}, props));
1648
+ return index.h(ShadowViewAddon.CopyTextView, Object.assign({}, props));
1663
1649
  };
1664
1650
  const Tooltip = () => {
1665
1651
  const props = {
@@ -1667,7 +1653,7 @@ const Tooltip = () => {
1667
1653
  tooltiptext: "Some text for the tooltip",
1668
1654
  open: true,
1669
1655
  };
1670
- return index.h(copyTextView.CopyTextView, Object.assign({}, props));
1656
+ return index.h(ShadowViewAddon.CopyTextView, Object.assign({}, props));
1671
1657
  };
1672
1658
  const Disabled = () => {
1673
1659
  const props = {
@@ -1676,7 +1662,7 @@ const Disabled = () => {
1676
1662
  open: true,
1677
1663
  tooltiptext: "Copied!",
1678
1664
  };
1679
- return index.h(copyTextView.CopyTextView, Object.assign({}, props));
1665
+ return index.h(ShadowViewAddon.CopyTextView, Object.assign({}, props));
1680
1666
  };
1681
1667
  const Error$1 = () => {
1682
1668
  const props = {
@@ -1686,7 +1672,7 @@ const Error$1 = () => {
1686
1672
  tooltiptext: "Copied!",
1687
1673
  error: true,
1688
1674
  };
1689
- return index.h(copyTextView.CopyTextView, Object.assign({}, props));
1675
+ return index.h(ShadowViewAddon.CopyTextView, Object.assign({}, props));
1690
1676
  };
1691
1677
  const TextAlignCenter = () => {
1692
1678
  return index.h("sqm-share-link", { textAlign: "center" });
@@ -1695,7 +1681,7 @@ const TextAlignRight = () => {
1695
1681
  return index.h("sqm-share-link", { textAlign: "right" });
1696
1682
  };
1697
1683
  const CopyButton = () => {
1698
- return (index.h(copyTextView.CopyTextView, Object.assign({}, {
1684
+ return (index.h(ShadowViewAddon.CopyTextView, Object.assign({}, {
1699
1685
  copyString: "https://noah.example.com",
1700
1686
  open: false,
1701
1687
  tooltiptext: "Copied!",
@@ -1703,7 +1689,7 @@ const CopyButton = () => {
1703
1689
  })));
1704
1690
  };
1705
1691
  const CopyButtonBelow = () => {
1706
- return (index.h(copyTextView.CopyTextView, Object.assign({}, {
1692
+ return (index.h(ShadowViewAddon.CopyTextView, Object.assign({}, {
1707
1693
  copyString: "https://noah.example.com",
1708
1694
  open: false,
1709
1695
  tooltiptext: "Copied!",
@@ -1717,7 +1703,7 @@ const FullStack = () => {
1717
1703
  const ShareLink = /*#__PURE__*/Object.freeze({
1718
1704
  __proto__: null,
1719
1705
  'default': ShareLink_stories,
1720
- Default: Default$1,
1706
+ Default: Default,
1721
1707
  Tooltip: Tooltip,
1722
1708
  Disabled: Disabled,
1723
1709
  Error: Error$1,
@@ -1736,7 +1722,7 @@ const BigStat_stories = {
1736
1722
  scenario: scenario$3,
1737
1723
  },
1738
1724
  };
1739
- const Default$2 = () => {
1725
+ const Default$1 = () => {
1740
1726
  const props = { value: 990000, statvalue: "9.900,00", loading: false };
1741
1727
  return index.h(ShadowViewAddon.BigStatView, Object.assign({}, props), "Big stat");
1742
1728
  };
@@ -1819,7 +1805,7 @@ const MultipleStats = () => {
1819
1805
  const BigStat = /*#__PURE__*/Object.freeze({
1820
1806
  __proto__: null,
1821
1807
  'default': BigStat_stories,
1822
- Default: Default$2,
1808
+ Default: Default$1,
1823
1809
  LeftAlign: LeftAlign,
1824
1810
  RightAlign: RightAlign,
1825
1811
  FlexReverse: FlexReverse,
@@ -2556,36 +2542,36 @@ const routes = `
2556
2542
  `;
2557
2543
  const TemplateNavigation = createHookStory(() => {
2558
2544
  return (index.h("div", null,
2559
- index.h("button", { onClick: () => index_module.xn.push("/") }, "/"),
2560
- index.h("button", { onClick: () => index_module.xn.push("/foo") }, "/foo"),
2561
- index.h("button", { onClick: () => index_module.xn.push("/bar") }, "/bar"),
2562
- index.h("button", { onClick: () => index_module.xn.push("/baz/bang") }, "/baz/bang"),
2563
- index.h("button", { onClick: () => index_module.xn.push("/refer") }, "/refer"),
2564
- index.h("button", { onClick: () => index_module.xn.push("/refer/1") }, "/refer/1"),
2565
- index.h("button", { onClick: () => index_module.xn.push("/refer/2") }, "/refer/2"),
2566
- index.h("button", { onClick: () => index_module.xn.back() }, "Back"),
2567
- index.h("button", { onClick: () => index_module.xn.forward() }, "Forward"),
2545
+ index.h("button", { onClick: () => index_module.$n.push("/") }, "/"),
2546
+ index.h("button", { onClick: () => index_module.$n.push("/foo") }, "/foo"),
2547
+ index.h("button", { onClick: () => index_module.$n.push("/bar") }, "/bar"),
2548
+ index.h("button", { onClick: () => index_module.$n.push("/baz/bang") }, "/baz/bang"),
2549
+ index.h("button", { onClick: () => index_module.$n.push("/refer") }, "/refer"),
2550
+ index.h("button", { onClick: () => index_module.$n.push("/refer/1") }, "/refer/1"),
2551
+ index.h("button", { onClick: () => index_module.$n.push("/refer/2") }, "/refer/2"),
2552
+ index.h("button", { onClick: () => index_module.$n.back() }, "Back"),
2553
+ index.h("button", { onClick: () => index_module.$n.forward() }, "Forward"),
2568
2554
  index.h("hr", null),
2569
2555
  index.h("sqm-router", { innerHTML: templates })));
2570
2556
  });
2571
2557
  const RouteNavigation = createHookStory(() => {
2572
2558
  return (index.h("div", null,
2573
- index.h("button", { onClick: () => index_module.xn.push("/") }, "/"),
2574
- index.h("button", { onClick: () => index_module.xn.push("/foo") }, "/foo"),
2575
- index.h("button", { onClick: () => index_module.xn.push("/bar") }, "/bar"),
2576
- index.h("button", { onClick: () => index_module.xn.push("/baz/bang") }, "/baz/bang"),
2577
- index.h("button", { onClick: () => index_module.xn.push("/refer") }, "/refer"),
2578
- index.h("button", { onClick: () => index_module.xn.push("/refer/1") }, "/refer/1"),
2579
- index.h("button", { onClick: () => index_module.xn.push("/refer/2") }, "/refer/2"),
2580
- index.h("button", { onClick: () => index_module.xn.back() }, "Back"),
2581
- index.h("button", { onClick: () => index_module.xn.forward() }, "Forward"),
2559
+ index.h("button", { onClick: () => index_module.$n.push("/") }, "/"),
2560
+ index.h("button", { onClick: () => index_module.$n.push("/foo") }, "/foo"),
2561
+ index.h("button", { onClick: () => index_module.$n.push("/bar") }, "/bar"),
2562
+ index.h("button", { onClick: () => index_module.$n.push("/baz/bang") }, "/baz/bang"),
2563
+ index.h("button", { onClick: () => index_module.$n.push("/refer") }, "/refer"),
2564
+ index.h("button", { onClick: () => index_module.$n.push("/refer/1") }, "/refer/1"),
2565
+ index.h("button", { onClick: () => index_module.$n.push("/refer/2") }, "/refer/2"),
2566
+ index.h("button", { onClick: () => index_module.$n.back() }, "Back"),
2567
+ index.h("button", { onClick: () => index_module.$n.forward() }, "Forward"),
2582
2568
  index.h("hr", null),
2583
2569
  index.h("sqm-router", { innerHTML: routes })));
2584
2570
  });
2585
2571
  const Styling = createHookStory(() => {
2586
2572
  return (index.h("div", null,
2587
- index.h("button", { onClick: () => index_module.xn.push("/") }, "/"),
2588
- index.h("button", { onClick: () => index_module.xn.push("/foo") }, "/foo"),
2573
+ index.h("button", { onClick: () => index_module.$n.push("/") }, "/"),
2574
+ index.h("button", { onClick: () => index_module.$n.push("/foo") }, "/foo"),
2589
2575
  index.h("hr", null),
2590
2576
  index.h("div", { style: { display: "flex", justifyContent: "space-around" } },
2591
2577
  index.h("sqm-router", { innerHTML: `<template path="/">
@@ -2599,7 +2585,7 @@ function useTemplate(templateString) {
2599
2585
  const [previewTemplate, setPreviewTemplate] = stencilHooks_module.useState(templateString);
2600
2586
  function setPath(e) {
2601
2587
  //@ts-ignore
2602
- index_module.xn.push(e.target.value);
2588
+ index_module.$n.push(e.target.value);
2603
2589
  }
2604
2590
  return {
2605
2591
  states: { previewTemplate, editedTemplate },
@@ -2763,8 +2749,8 @@ const FullStackFrame = () => {
2763
2749
  "Current path:",
2764
2750
  " ",
2765
2751
  index.h("code", null,
2766
- index.h("strong", null, (_a = index_module.jn()) === null || _a === void 0 ? void 0 : _a.pathname))),
2767
- index.h("button", { onClick: index_module.xn.back }, "Go Back")));
2752
+ index.h("strong", null, (_a = index_module.Sn()) === null || _a === void 0 ? void 0 : _a.pathname))),
2753
+ index.h("button", { onClick: index_module.$n.back }, "Go Back")));
2768
2754
  };
2769
2755
  const FullStackFrameLoggedOut = () => {
2770
2756
  var _a;
@@ -2788,8 +2774,8 @@ const FullStackFrameLoggedOut = () => {
2788
2774
  "Current path:",
2789
2775
  " ",
2790
2776
  index.h("code", null,
2791
- index.h("strong", null, (_a = index_module.jn()) === null || _a === void 0 ? void 0 : _a.pathname))),
2792
- index.h("button", { onClick: index_module.xn.back }, "Go Back")));
2777
+ index.h("strong", null, (_a = index_module.Sn()) === null || _a === void 0 ? void 0 : _a.pathname))),
2778
+ index.h("button", { onClick: index_module.$n.back }, "Go Back")));
2793
2779
  };
2794
2780
 
2795
2781
  const PortalFrame = /*#__PURE__*/Object.freeze({
@@ -2908,7 +2894,7 @@ const BareBonesView = createHookStory(() => {
2908
2894
  });
2909
2895
  const RegularView = createHookStory(() => {
2910
2896
  setupGraphQL$1();
2911
- return (index.h(copyTextView.CopyTextView, Object.assign({}, ShadowViewAddon.useShareLink({
2897
+ return (index.h(ShadowViewAddon.CopyTextView, Object.assign({}, ShadowViewAddon.useShareLink({
2912
2898
  programId: "klip-referral-program",
2913
2899
  tooltiptext: "Copied to clipboard",
2914
2900
  tooltiplifespan: 1000,
@@ -2916,7 +2902,7 @@ const RegularView = createHookStory(() => {
2916
2902
  });
2917
2903
  const FastTooltip = createHookStory(() => {
2918
2904
  setupGraphQL$1();
2919
- return (index.h(copyTextView.CopyTextView, Object.assign({}, ShadowViewAddon.useShareLink({
2905
+ return (index.h(ShadowViewAddon.CopyTextView, Object.assign({}, ShadowViewAddon.useShareLink({
2920
2906
  programId: "klip-referral-program",
2921
2907
  tooltiptext: "⠀⠀⠀⠀⠀⠀⠀⠀⠀HELLO THERE!!!\n⠀⠀⠀⡯⡯⡾⠝⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢊⠘⡮⣣⠪⠢⡑⡌\n⠀⠀⠀⠟⠝⠈⠀⠀⠀⠡⠀⠠⢈⠠⢐⢠⢂⢔⣐⢄⡂⢔⠀⡁⢉⠸⢨⢑⠕⡌\n⠀⠀⡀⠁⠀⠀⠀⡀⢂⠡⠈⡔⣕⢮⣳⢯⣿⣻⣟⣯⣯⢷⣫⣆⡂⠀⠀⢐⠑⡌\n⢀⠠⠐⠈⠀⢀⢂⠢⡂⠕⡁⣝⢮⣳⢽⡽⣾⣻⣿⣯⡯⣟⣞⢾⢜⢆⠀⡀⠀⠪\n⣬⠂⠀⠀⢀⢂⢪⠨⢂⠥⣺⡪⣗⢗⣽⢽⡯⣿⣽⣷⢿⡽⡾⡽⣝⢎⠀⠀⠀⢡\n⣿⠀⠀⠀⢂⠢⢂⢥⢱⡹⣪⢞⡵⣻⡪⡯⡯⣟⡾⣿⣻⡽⣯⡻⣪⠧⠑⠀⠁⢐\n⣿⠀⠀⠀⠢⢑⠠⠑⠕⡝⡎⡗⡝⡎⣞⢽⡹⣕⢯⢻⠹⡹⢚⠝⡷⡽⡨⠀⠀⢔\n⣿⡯⠀⢈⠈⢄⠂⠂⠐⠀⠌⠠⢑⠱⡱⡱⡑⢔⠁⠀⡀⠐⠐⠐⡡⡹⣪⠀⠀⢘\n⣿⣽⠀⡀⡊⠀⠐⠨⠈⡁⠂⢈⠠⡱⡽⣷⡑⠁⠠⠑⠀⢉⢇⣤⢘⣪⢽⠀⢌⢎\n⣿⢾⠀⢌⠌⠀⡁⠢⠂⠐⡀⠀⢀⢳⢽⣽⡺⣨⢄⣑⢉⢃⢭⡲⣕⡭⣹⠠⢐⢗\n⣿⡗⠀⠢⠡⡱⡸⣔⢵⢱⢸⠈⠀⡪⣳⣳⢹⢜⡵⣱⢱⡱⣳⡹⣵⣻⢔⢅⢬⡷\n⣷⡇⡂⠡⡑⢕⢕⠕⡑⠡⢂⢊⢐⢕⡝⡮⡧⡳⣝⢴⡐⣁⠃⡫⡒⣕⢏⡮⣷⡟\n⣷⣻⣅⠑⢌⠢⠁⢐⠠⠑⡐⠐⠌⡪⠮⡫⠪⡪⡪⣺⢸⠰⠡⠠⠐⢱⠨⡪⡪⡰\n⣯⢷⣟⣇⡂⡂⡌⡀⠀⠁⡂⠅⠂⠀⡑⡄⢇⠇⢝⡨⡠⡁⢐⠠⢀⢪⡐⡜⡪⡊\n⣿⢽⡾⢹⡄⠕⡅⢇⠂⠑⣴⡬⣬⣬⣆⢮⣦⣷⣵⣷⡗⢃⢮⠱⡸⢰⢱⢸⢨⢌\n⣯⢯⣟⠸⣳⡅⠜⠔⡌⡐⠈⠻⠟⣿⢿⣿⣿⠿⡻⣃⠢⣱⡳⡱⡩⢢⠣⡃⠢⠁\n⡯⣟⣞⡇⡿⣽⡪⡘⡰⠨⢐⢀⠢⢢⢄⢤⣰⠼⡾⢕⢕⡵⣝⠎⢌⢪⠪⡘⡌⠀\n⡯⣳⠯⠚⢊⠡⡂⢂⠨⠊⠔⡑⠬⡸⣘⢬⢪⣪⡺⡼⣕⢯⢞⢕⢝⠎⢻⢼⣀⠀\n⠁⡂⠔⡁⡢⠣⢀⠢⠀⠅⠱⡐⡱⡘⡔⡕⡕⣲⡹⣎⡮⡏⡑⢜⢼⡱⢩⣗⣯⣟\n⢀⢂⢑⠀⡂⡃⠅⠊⢄⢑⠠⠑⢕⢕⢝⢮⢺⢕⢟⢮⢊⢢⢱⢄⠃⣇⣞⢞⣞⢾\n⢀⠢⡑⡀⢂⢊⠠⠁⡂⡐⠀⠅⡈⠪⠪⠪⠣⠫⠑⡁⢔⠕⣜⣜⢦⡰⡎⡯⡾⡽",
2922
2908
  tooltiplifespan: 500,
@@ -3516,7 +3502,7 @@ function useExchangeButton() {
3516
3502
  const { id, accountId } = setupGraphQL$6();
3517
3503
  const [points, setPoints] = stencilHooks_module.useState(10);
3518
3504
  const [rate, setRate] = stencilHooks_module.useState(100);
3519
- const [exchange, { data, errors }] = index_module.an(EXCHANGE);
3505
+ const [exchange, { data, errors }] = index_module.Xe(EXCHANGE);
3520
3506
  return {
3521
3507
  states: {
3522
3508
  points,
@@ -3918,14 +3904,14 @@ const Dashboard = () => {
3918
3904
  padding: "none",
3919
3905
  label: (index.h("sqm-text", null,
3920
3906
  index.h("h3", null, "Share your referral link"))),
3921
- content: index.h(copyTextView.CopyTextView, Object.assign({}, sharelinkProps)),
3907
+ content: index.h(ShadowViewAddon.CopyTextView, Object.assign({}, sharelinkProps)),
3922
3908
  })),
3923
3909
  index.h(sqmPortalContainerView.PortalSectionView, Object.assign({}, {
3924
3910
  labelMargin: "small",
3925
3911
  padding: "none",
3926
3912
  label: (index.h("sqm-text", null,
3927
3913
  index.h("h3", null, "Share your referral code"))),
3928
- content: index.h(copyTextView.CopyTextView, Object.assign({}, sharecodeProps)),
3914
+ content: index.h(ShadowViewAddon.CopyTextView, Object.assign({}, sharecodeProps)),
3929
3915
  })),
3930
3916
  index.h(sqmPortalContainerView.PortalSectionView, Object.assign({}, {
3931
3917
  labelMargin: "small",
@@ -4087,8 +4073,6 @@ const referralWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\"Nunito S
4087
4073
 
4088
4074
  const monoWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\"Nunito Sans\">\n <sqm-portal-container\n direction=\"column\"\n padding=\"small\"\n gap=\"xxx-large\"\n display=\"grid\"\n max-width=\"100%\"\n background-color=\"#ffffff\"\n >\n <sqm-portal-container\n direction=\"column\"\n padding=\"none\"\n gap=\"xxx-large\"\n display=\"grid\"\n max-width=\"100%\"\n >\n <sqm-hero-image\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\"\n header=\"MyCompany Rewards\"\n description=\"Refer friends and complete tasks to earn rewards\"\n layout=\"columns\"\n image-pos=\"right\"\n background-color=\"#F9F9F9\"\n image-mobile-pos=\"top\"\n image-percentage=\"50\"\n padding-image=\"none\"\n padding-text=\"xxxx-large\"\n >\n </sqm-hero-image>\n </sqm-portal-container>\n <sqm-portal-container\n direction=\"column\"\n padding=\"none\"\n gap=\"xxx-large\"\n max-width=\"770px\"\n center\n display=\"grid\"\n >\n <sqm-stat-container space=\"xxx-large\" display=\"flex\">\n <sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/referralsCount\"\n >\n <p>Referrals</p>\n </sqm-big-stat>\n <sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/integrationRewardsCountFiltered/AVAILABLE/global\"\n >\n <p>Giftcards Earned</p>\n </sqm-big-stat>\n <sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/rewardBalance/CREDIT/POINT/value/global\"\n >\n <p>Points Balance</p>\n </sqm-big-stat>\n </sqm-stat-container>\n <sqm-portal-container\n gap=\"xx-large\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n >\n <sqm-titled-section\n text-align=\"center\"\n label-margin=\"xxx-small\"\n padding=\"none\"\n >\n <h3 slot=\"label\">Share $50 with friends</h3>\n <p slot=\"content\">\n They’ll get a $50 credit towards a new account and you’ll get up to\n $1200\n </p>\n </sqm-titled-section>\n <sqm-referral-card vertical-alignment=\"start\">\n <sqm-portal-container\n gap=\"large\"\n slot=\"left\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n >\n <p>\n They’ll get a $50 credit towards a new account and you’ll get:\n </p>\n <sqm-timeline icon=\"circle\">\n <sqm-timeline-entry\n reward=\"$50\"\n unit=\"visa giftcard\"\n desc=\"Your friend purchases a Business plan\"\n icon=\"circle\"\n >\n </sqm-timeline-entry>\n <sqm-timeline-entry\n reward=\"$200\"\n unit=\"visa giftcard\"\n desc=\"Our sales team qualifies your friend as a good fit for our Enterprise plan\"\n icon=\"circle\"\n >\n </sqm-timeline-entry>\n <sqm-timeline-entry\n reward=\"$1000\"\n unit=\"visa giftcard\"\n desc=\"Your friend purchases an Enterprise plan\"\n icon=\"circle\"\n >\n </sqm-timeline-entry>\n </sqm-timeline>\n </sqm-portal-container>\n <sqm-portal-container\n gap=\"large\"\n slot=\"right\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n >\n <p>Choose how you want to share:</p>\n <p><sub>Your unique referral link:</sub></p>\n <sqm-share-link\n tooltip-text=\"Copied to Clipboard\"\n tooltip-lifespan=\"1000\"\n >\n </sqm-share-link>\n <sqm-portal-container\n gap=\"x-small\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n >\n <sqm-share-button\n medium=\"email\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Share via email\n </sqm-share-button>\n <sqm-share-button\n medium=\"linkedin\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Share on LinkedIn\n </sqm-share-button>\n <sqm-share-button\n medium=\"twitter\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Post about us on X\n </sqm-share-button>\n </sqm-portal-container>\n </sqm-portal-container>\n </sqm-referral-card>\n <sqm-portal-container\n gap=\"xx-large\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n min-width=\"\"\n padding=\"none\"\n >\n <sqm-titled-section text-align=\"center\" label-margin=\"xxx-small\">\n <h3 slot=\"label\">Earn more rewards</h3>\n <p slot=\"content\">\n Get points while using our product. Use those points to redeem\n rewards like one free month of Enterprise or two plane tickets to\n anywhere in North America\n </p>\n </sqm-titled-section>\n <sqm-card-feed gap=\"24\" width=\"347\">\n <sqm-task-card\n reward-amount=\"20\"\n goal=\"1\"\n card-title=\"Complete a Survey\"\n description=\"Fill out our NPS survey and get 20 points for giving us honest feedback.\"\n button-text=\"Take survey\"\n reward-unit=\"Points\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n finite=\"0\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n <sqm-task-card\n reward-amount=\"250\"\n goal=\"500\"\n show-progress-bar\n card-title=\"Spend $500\"\n description=\"Earn 250 points when you spend $500 or more.\"\n button-text=\"See plans\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n progress-bar-unit=\"$\"\n finite=\"0\"\n reward-unit=\"Points\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n <sqm-task-card\n goal=\"1\"\n reward-amount=\"50\"\n card-title=\"Follow Us on X\"\n description=\"Earn 50 points when you Follow Us on X!\"\n button-text=\"Follow\"\n button-link=\"https://twitter.com/\"\n open-new-tab=\"true\"\n event-key=\"socialFollow\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n finite=\"0\"\n reward-unit=\"Points\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n <sqm-task-card\n reward-amount=\"1\"\n reward-unit=\"Free Month\"\n goal=\"1\"\n card-title=\"Upgrade Your Plan\"\n description=\"Receive one free month for being a committed customer when you upgrade your plan.\"\n button-text=\"Upgrade\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n open-new-tab=\"false\"\n finite=\"0\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n </sqm-card-feed>\n </sqm-portal-container>\n <sqm-tabs>\n <sqm-tab header=\"Referral history\">\n <sqm-referral-table\n per-page=\"4\"\n hidden-columns=\"2\"\n more-label=\"Next\"\n prev-label=\"Prev\"\n sm-breakpoint=\"599\"\n md-breakpoint=\"799\"\n >\n <sqm-referral-table-user-column\n column-title=\"User\"\n anonymous-user=\"Anonymous User\"\n deleted-user=\"Deleted User\"\n >\n </sqm-referral-table-user-column>\n <sqm-referral-table-status-column\n column-title=\"Referral status\"\n converted-status-text=\"Converted\"\n in-progress-status-text=\"In Progress\"\n >\n </sqm-referral-table-status-column>\n <sqm-referral-table-rewards-column\n column-title=\"Rewards\"\n expiring-text=\"Expiring in\"\n fuel-tank-text=\"Your code is\"\n pending-for-text=\"{status} for {date}\"\n reward-received-text=\"Reward received on\"\n status-long-text=\"{status, select, AVAILABLE {Reward expiring on} CANCELLED {Reward cancelled on} PENDING {Available on} EXPIRED {Reward expired on} other {Not available} }\"\n status-text=\"{status, select, AVAILABLE {Available} CANCELLED {Cancelled} PENDING {Pending} EXPIRED {Expired} REDEEMED {Redeemed} other {Not available} }\"\n >\n </sqm-referral-table-rewards-column>\n <sqm-referral-table-date-column\n column-title=\"Date referred\"\n date-shown=\"dateReferralStarted\"\n >\n </sqm-referral-table-date-column>\n <sqm-empty\n slot=\"empty\"\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000223/squatch-assets/empty_referral2.png\"\n empty-state-header=\"View your referral details\"\n empty-state-text=\"Refer a friend to view the status of your referrals and rewards earned\"\n >\n </sqm-empty>\n </sqm-referral-table>\n </sqm-tab>\n <sqm-tab header=\"Reward history\">\n <sqm-rewards-table\n per-page=\"4\"\n program-id=\"\"\n hidden-columns=\"0\"\n more-label=\"Next\"\n prev-label=\"Prev\"\n sm-breakpoint=\"599\"\n md-breakpoint=\"799\"\n >\n <sqm-rewards-table-reward-column\n available-text=\"{availableAmount} remaining\"\n column-title=\"Reward\"\n copy-text=\"Copied!\"\n redeemed-text=\"{redeemedAmount} redeemed\"\n >\n </sqm-rewards-table-reward-column>\n <sqm-rewards-table-source-column\n anonymous-user=\"Anonymous User\"\n column-title=\"Source\"\n deleted-user=\"Deleted User\"\n referral-text=\"{rewardSource, select, FRIEND_SIGNUP {Referral to} REFERRED {Referred by} other {}}\"\n reward-exchange-text=\"Reward Exchange\"\n reward-source-text=\"{rewardSource, select, MANUAL {Manual} AUTOMATED {{programName}} other {}}\"\n >\n </sqm-rewards-table-source-column>\n <sqm-rewards-table-status-column\n column-title=\"Status\"\n expiry-text=\"Expires on \"\n status-text=\"{status, select, AVAILABLE {Available} CANCELLED {Cancelled} PENDING {Pending} EXPIRED {Expired} REDEEMED {Redeemed} other {Not available} }\"\n >\n </sqm-rewards-table-status-column>\n <sqm-rewards-table-date-column\n column-title=\"Date received\"\n date-shown=\"dateGiven\"\n >\n </sqm-rewards-table-date-column>\n <sqm-empty\n slot=\"empty\"\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_reward2.png\"\n empty-state-header=\"View your rewards\"\n empty-state-text=\"Refer friends and complete tasks to view the details of your rewards\"\n >\n </sqm-empty>\n </sqm-rewards-table>\n </sqm-tab>\n </sqm-tabs>\n </sqm-portal-container>\n <sqm-portal-footer\n support-email=\"support@example.com\"\n terms-link=\"https:\\/\\/example.com\"\n faq-link=\"https:\\/\\/example.com\"\n terms-text=\"Terms And Conditions\"\n faq-text=\"FAQ\"\n show-powered-by=\"true\"\n padding-bottom=\"none\"\n padding-left=\"none\"\n padding-right=\"none\"\n padding-top=\"none\"\n ></sqm-portal-footer>\n </sqm-portal-container>\n </sqm-portal-container>\n</sqm-brand>\n";
4089
4075
 
4090
- const promoCodeReferralWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\"Nunito Sans\">\n <sqm-portal-container\n direction=\"column\"\n padding=\"small\"\n gap=\"xxx-large\"\n display=\"grid\"\n max-width=\"100%\"\n background-color=\"#ffffff\"\n >\n <sqm-portal-container\n direction=\"column\"\n padding=\"none\"\n gap=\"xxx-large\"\n display=\"grid\"\n max-width=\"100%\"\n >\n <sqm-hero-image\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\"\n header=\"MyCompany Rewards\"\n description=\"Refer a friend and earn up to $1200 in rewards\"\n layout=\"columns\"\n image-pos=\"right\"\n background-color=\"#F9F9F9\"\n >\n </sqm-hero-image>\n </sqm-portal-container>\n <sqm-portal-container\n direction=\"column\"\n padding=\"none\"\n gap=\"xxx-large\"\n max-width=\"770px\"\n center\n display=\"grid\"\n >\n <sqm-stat-container space=\"xxx-large\" display=\"flex\">\n <sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/referralsCount\"\n >\n <p>Referrals</p>\n </sqm-big-stat>\n <sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/integrationRewardsCountFiltered/AVAILABLE/global\"\n >\n <p>Giftcards</p>\n </sqm-big-stat>\n </sqm-stat-container>\n <sqm-portal-container\n gap=\"large\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n >\n <sqm-titled-section\n text-align=\"center\"\n label-margin=\"xxx-small\"\n padding=\"none\"\n >\n <h3 slot=\"label\">Get rewarded when your friend uses our product</h3>\n </sqm-titled-section>\n <sqm-referral-card vertical-alignment=\"start\">\n <sqm-portal-container\n gap=\"large\"\n slot=\"left\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n >\n <p>\n They’ll get a $50 credit towards a new account and you’ll get:\n </p>\n <sqm-timeline icon=\"circle\">\n <sqm-timeline-entry\n reward=\"$50\"\n unit=\"visa giftcard\"\n desc=\"Your friend purchases a Business plan\"\n icon=\"circle\"\n >\n </sqm-timeline-entry>\n <sqm-timeline-entry\n reward=\"$200\"\n unit=\"visa giftcard\"\n desc=\"Our sales team qualifies your friend as a good fit for our Enterprise plan\"\n icon=\"circle\"\n >\n </sqm-timeline-entry>\n <sqm-timeline-entry\n reward=\"$1000\"\n unit=\"visa giftcard\"\n desc=\"Your friend purchases an Enterprise plan\"\n icon=\"circle\"\n >\n </sqm-timeline-entry>\n </sqm-timeline>\n </sqm-portal-container>\n <sqm-referral-codes slot=\"right\">\n <sqm-pagination slot=\"pagination\"></sqm-pagination>\n <sqm-referral-code\n slot=\"shareCodes\"\n show-notification-text=\"true\"\n ></sqm-referral-code>\n <sqm-portal-container gap=\"small\" slot=\"shareButtons\">\n <sqm-share-button medium=\"email\"\n >Share via email</sqm-share-button\n >\n <sqm-share-button medium=\"fbmessenger\"\n >Share on Facebook</sqm-share-button\n >\n <sqm-share-button medium=\"whatsapp\"\n >Share on WhatsApp</sqm-share-button\n >\n </sqm-portal-container>\n </sqm-referral-codes>\n </sqm-referral-card>\n </sqm-portal-container>\n <sqm-portal-container\n gap=\"large\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n >\n <sqm-titled-section\n padding=\"none\"\n text-align=\"center\"\n label-margin=\"xx-small\"\n >\n <h3 slot=\"label\">Referral History</h3>\n </sqm-titled-section>\n <sqm-referral-table\n per-page=\"4\"\n hidden-columns=\"2\"\n more-label=\"Next\"\n prev-label=\"Prev\"\n sm-breakpoint=\"599\"\n md-breakpoint=\"799\"\n >\n <sqm-referral-table-user-column\n column-title=\"User\"\n anonymous-user=\"Anonymous User\"\n deleted-user=\"Deleted User\"\n >\n </sqm-referral-table-user-column>\n <sqm-referral-table-status-column\n column-title=\"Referral status\"\n converted-status-text=\"Converted\"\n in-progress-status-text=\"In Progress\"\n >\n </sqm-referral-table-status-column>\n <sqm-referral-table-rewards-column\n column-title=\"Rewards\"\n expiring-text=\"Expiring in\"\n fuel-tank-text=\"Your code is\"\n pending-for-text=\"{status} for {date}\"\n reward-received-text=\"Reward received on\"\n status-long-text=\"{status, select, AVAILABLE {Reward expiring on} CANCELLED {Reward cancelled on} PENDING {Available on} EXPIRED {Reward expired on} other {Not available} }\"\n status-text=\"{status, select, AVAILABLE {Available} CANCELLED {Cancelled} PENDING {Pending} EXPIRED {Expired} REDEEMED {Redeemed} other {Not available} }\"\n >\n </sqm-referral-table-rewards-column>\n <sqm-referral-table-date-column\n column-title=\"Date referred\"\n date-shown=\"dateReferralStarted\"\n >\n </sqm-referral-table-date-column>\n <sqm-empty\n slot=\"empty\"\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000223/squatch-assets/empty_referral2.png\"\n empty-state-header=\"View your referral details\"\n empty-state-text=\"Refer a friend to view the status of your referrals and rewards earned\"\n ></sqm-empty>\n </sqm-referral-table>\n </sqm-portal-container>\n <sqm-portal-footer\n support-email=\"support@example.com\"\n terms-link=\"https:\\/\\/example.com\"\n faq-link=\"https:\\/\\/example.com\"\n terms-text=\"Terms And Conditions\"\n faq-text=\"FAQ\"\n show-powered-by=\"true\"\n padding-bottom=\"none\"\n padding-left=\"none\"\n padding-right=\"none\"\n padding-top=\"none\"\n ></sqm-portal-footer>\n </sqm-portal-container>\n </sqm-portal-container>\n</sqm-brand>\n";
4091
-
4092
4076
  const loyaltyWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\"Nunito Sans\">\n <sqm-portal-container\n direction=\"column\"\n padding=\"small\"\n gap=\"xxxx-large\"\n display=\"grid\"\n max-width=\"100%\"\n background-color=\"#ffffff\"\n >\n <sqm-portal-container\n direction=\"column\"\n padding=\"none\"\n gap=\"xxx-large\"\n display=\"grid\"\n max-width=\"100%\"\n >\n <sqm-hero-image\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\"\n header=\"MyCompany Rewards\"\n description=\"Complete tasks to earn rewards\"\n layout=\"overlay\"\n padding-image=\"xxxx-large\"\n padding-text=\"xxx-large\"\n image-pos=\"center\"\n overlay-color=\"#5e5669\"\n overlay-opacity=\"0.9\"\n >\n </sqm-hero-image>\n <sqm-portal-container\n direction=\"column\"\n padding=\"none\"\n gap=\"xxx-large\"\n max-width=\"770px\"\n center\n display=\"grid\"\n >\n <sqm-program-explainer header=\"How it works\">\n <sqm-program-explainer-step\n description=\"Complete tasks like uploading your first video or sharing videos with friends\"\n header=\"Earn points for using our product\"\n icon=\"cash-stack\"\n text-color=\"#000000\"\n >\n </sqm-program-explainer-step>\n <sqm-program-explainer-step\n description=\"Redeem rewards like one free month of Enterprise or two plane tickets to anywhere in North America\"\n header=\"Redeem rewards with your points\"\n icon=\"people\"\n text-color=\"#000000\"\n >\n </sqm-program-explainer-step>\n </sqm-program-explainer>\n <sqm-portal-container\n center\n direction=\"row\"\n display=\"flex\"\n justify-content=\"space-between\"\n gap=\"xxx-large\"\n max-width=\"100%\"\n padding=\"none\"\n >\n <sqm-stat-container space=\"xxx-large\" display=\"flex\">\n <sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/rewardsRedeemed/CREDIT/POINTS\"\n >\n <p>Points Redeemed</p>\n </sqm-big-stat>\n <sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/rewardBalance/CREDIT/POINT/value/global\"\n >\n <p>Points Balance</p>\n </sqm-big-stat>\n </sqm-stat-container>\n </sqm-portal-container>\n <sqm-portal-container\n direction=\"column\"\n padding=\"none\"\n gap=\"xx-large\"\n display=\"grid\"\n max-width=\"100%\"\n >\n <sqm-titled-section\n label-margin=\"small\"\n padding=\"none\"\n text-align=\"center\"\n >\n <h3 slot=\"label\">Earn points</h3>\n </sqm-titled-section>\n <sqm-card-feed gap=\"24\" width=\"347\">\n <sqm-task-card\n reward-amount=\"20\"\n goal=\"1\"\n card-title=\"Complete a Survey\"\n description=\"Fill out our NPS survey and get 20 points for giving us honest feedback.\"\n button-text=\"Take survey\"\n reward-unit=\"Points\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n finite=\"0\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n <sqm-task-card\n reward-amount=\"250\"\n goal=\"500\"\n show-progress-bar\n card-title=\"Spend $500\"\n description=\"Earn 250 points when you spend $500 or more.\"\n button-text=\"See plans\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n progress-bar-unit=\"$\"\n finite=\"0\"\n reward-unit=\"Points\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n <sqm-task-card\n goal=\"1\"\n reward-amount=\"50\"\n card-title=\"Follow Us on X\"\n description=\"Earn 50 points when you Follow Us on X!\"\n button-text=\"Follow\"\n button-link=\"https://twitter.com/\"\n open-new-tab=\"true\"\n event-key=\"socialFollow\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n finite=\"0\"\n reward-unit=\"Points\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n <sqm-task-card\n reward-amount=\"1\"\n reward-unit=\"Free Month\"\n goal=\"1\"\n card-title=\"Upgrade Your Plan\"\n description=\"Receive one free month for being a committed customer when you upgrade your plan.\"\n button-text=\"Upgrade\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n open-new-tab=\"false\"\n finite=\"0\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n </sqm-card-feed>\n <sqm-portal-container\n gap=\"large\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n >\n <sqm-titled-section\n padding=\"none\"\n text-align=\"center\"\n label-margin=\"xx-small\"\n >\n <h3 slot=\"label\">Reward History</h3>\n </sqm-titled-section>\n <sqm-rewards-table\n per-page=\"4\"\n hidden-columns=\"0\"\n more-label=\"Next\"\n prev-label=\"Prev\"\n sm-breakpoint=\"599\"\n md-breakpoint=\"799\"\n >\n <sqm-rewards-table-reward-column\n available-text=\"{availableAmount} remaining\"\n column-title=\"Reward\"\n copy-text=\"Copied!\"\n redeemed-text=\"{redeemedAmount} redeemed\"\n >\n </sqm-rewards-table-reward-column>\n <sqm-rewards-table-source-column\n anonymous-user=\"Anonymous User\"\n column-title=\"Source\"\n deleted-user=\"Deleted User\"\n referral-text=\"{rewardSource, select, FRIEND_SIGNUP {Referral to} REFERRED {Referred by} other {}}\"\n reward-exchange-text=\"Reward Exchange\"\n reward-source-text=\"{rewardSource, select, MANUAL {Manual} AUTOMATED {{programName}} other {}}\"\n >\n </sqm-rewards-table-source-column>\n <sqm-rewards-table-status-column\n column-title=\"Status\"\n expiry-text=\"Expires on \"\n status-text=\"{status, select, AVAILABLE {Available} CANCELLED {Cancelled} PENDING {Pending} EXPIRED {Expired} REDEEMED {Redeemed} other {Not available} }\"\n >\n </sqm-rewards-table-status-column>\n <sqm-rewards-table-date-column\n column-title=\"Date received\"\n date-shown=\"dateGiven\"\n >\n </sqm-rewards-table-date-column>\n <sqm-empty\n slot=\"empty\"\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_reward2.png\"\n empty-state-header=\"View your rewards\"\n empty-state-text=\"Refer friends and complete tasks to view the details of your rewards\"\n >\n </sqm-empty>\n </sqm-rewards-table>\n </sqm-portal-container>\n </sqm-portal-container>\n <sqm-portal-footer\n support-email=\"support@example.com\"\n terms-link=\"https:\\/\\/example.com\"\n faq-link=\"https:\\/\\/example.com\"\n terms-text=\"Terms And Conditions\"\n faq-text=\"FAQ\"\n show-powered-by=\"true\"\n padding-bottom=\"none\"\n padding-left=\"none\"\n padding-right=\"none\"\n padding-top=\"none\"\n ></sqm-portal-footer>\n </sqm-portal-container>\n </sqm-portal-container>\n </sqm-portal-container>\n</sqm-brand>\n";
4093
4077
 
4094
4078
  const instantAccessReferrerShareWidget = "<sqm-hero\n background=\"https://res.cloudinary.com/saasquatch/image/upload/v1683589933/Portal%20Assets/Screen-Shot-2022-01-06-at-3.23.58-AM.png\"\n columns=\"2\"\n padding-size=\"medium\"\n wrap-direction=\"wrap\"\n secondary-background=\"#FFFFFF\"\n min-height=\"200\"\n ><sqm-referral-card\n vertical-alignment=\"start\"\n slot=\"secondary-column\"\n padding-bottom=\"small\"\n padding-left=\"x-large\"\n padding-right=\"x-large\"\n padding-top=\"small\"\n >\n <sqm-titled-section\n text-align=\"center\"\n label-margin=\"none\"\n padding=\"none\"\n slot=\"header\"\n ><h1 slot=\"label\">Invite your friends to unlock rewards!</h1>\n <p slot=\"content\">\n They&#x2019;ll get a &#x24;50 credit towards a new account and\n you&#x2019;ll get a &#x24;50 in credit for each friend you refer.\n </p></sqm-titled-section\n >\n <sqm-portal-container\n gap=\"small\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n slot=\"left\"\n >\n <p style=\"margin: 0\">Choose how you want to share:</p>\n <sqm-share-link\n tooltip-text=\"Copied to Clipboard\"\n tooltip-lifespan=\"1000\"\n >\n </sqm-share-link>\n <sqm-share-button\n medium=\"email\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Share via email\n </sqm-share-button>\n <sqm-share-button\n medium=\"linkedin\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Share on LinkedIn\n </sqm-share-button>\n <sqm-share-button\n medium=\"twitter\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Post about us on X\n </sqm-share-button> </sqm-portal-container\n ><sqm-portal-container\n display=\"flex\"\n slot=\"footer\"\n gap=\"small\"\n justify-content=\"center\"\n >\n <sqm-logout-current-user\n user-identification-text=\"{email}\"\n switch-user-link=\"#\"\n switch-user-text=\"not you?\"\n ></sqm-logout-current-user>\n <sqm-portal-footer\n support-email=\"support@example.com\"\n show-powered-by=\"true\"\n padding-bottom=\"x-small\"\n padding-left=\"none\"\n padding-right=\"none\"\n padding-top=\"none\"\n hide-support-text\n terms-text=\"Terms And Conditions\"\n terms-link=\"https://example.com\"\n ></sqm-portal-footer></sqm-portal-container\n ></sqm-referral-card>\n</sqm-hero>\n";
@@ -4119,16 +4103,16 @@ function DefaultTemplateView(props) {
4119
4103
  gridTemplateColumns: "repeat(9, 80px)",
4120
4104
  gridGap: "10px",
4121
4105
  } },
4122
- index.h("button", { onClick: () => index_module.xn.push("/") }, "Dashboard"),
4123
- props.leadSubmit && (index.h("button", { onClick: () => index_module.xn.push("/refer") }, "Submit a Referral")),
4124
- index.h("button", { onClick: () => index_module.xn.push("/activity") }, "Activity"),
4125
- index.h("button", { onClick: () => index_module.xn.push("/editProfile") }, "Edit Profile"),
4126
- index.h("button", { onClick: () => index_module.xn.push("/login") }, "Login"),
4127
- index.h("button", { onClick: () => index_module.xn.push("/register") }, "Register"),
4128
- index.h("button", { onClick: () => index_module.xn.push("/emailVerification") }, "Email Verification"),
4129
- index.h("button", { onClick: () => index_module.xn.push("/verifyEmail") }, "Verify Email"),
4130
- index.h("button", { onClick: () => index_module.xn.push("/forgotPassword") }, "Forgot Password"),
4131
- index.h("button", { onClick: () => index_module.xn.push("/resetPassword") }, "Reset Password")),
4106
+ index.h("button", { onClick: () => index_module.$n.push("/") }, "Dashboard"),
4107
+ props.leadSubmit && (index.h("button", { onClick: () => index_module.$n.push("/refer") }, "Submit a Referral")),
4108
+ index.h("button", { onClick: () => index_module.$n.push("/activity") }, "Activity"),
4109
+ index.h("button", { onClick: () => index_module.$n.push("/editProfile") }, "Edit Profile"),
4110
+ index.h("button", { onClick: () => index_module.$n.push("/login") }, "Login"),
4111
+ index.h("button", { onClick: () => index_module.$n.push("/register") }, "Register"),
4112
+ index.h("button", { onClick: () => index_module.$n.push("/emailVerification") }, "Email Verification"),
4113
+ index.h("button", { onClick: () => index_module.$n.push("/verifyEmail") }, "Verify Email"),
4114
+ index.h("button", { onClick: () => index_module.$n.push("/forgotPassword") }, "Forgot Password"),
4115
+ index.h("button", { onClick: () => index_module.$n.push("/resetPassword") }, "Reset Password")),
4132
4116
  index.h("br", null),
4133
4117
  index.h("div", { innerHTML: states.previewTemplate })));
4134
4118
  }
@@ -7145,10 +7129,6 @@ const Loyalty = createHookStory(() => {
7145
7129
  const { states, callbacks } = useTemplate$1(loyaltyWidget);
7146
7130
  return (index.h(DefaultTemplateView, { states: states, callbacks: callbacks, template: loyaltyWidget }));
7147
7131
  });
7148
- const PromoCodeReferralWidget = createHookStory(() => {
7149
- const { states, callbacks } = useTemplate$1(promoCodeReferralWidget);
7150
- return (index.h(DefaultTemplateView, { states: states, callbacks: callbacks, template: referralWidget }));
7151
- });
7152
7132
  const InstantAccessReferrerShareWidget = createHookStory(() => {
7153
7133
  const { states, callbacks } = useTemplate$1(instantAccessReferrerShareWidget);
7154
7134
  return index.h(TemplateView$1, { states: states, callbacks: callbacks });
@@ -7180,7 +7160,6 @@ const Widget = /*#__PURE__*/Object.freeze({
7180
7160
  ReferralWidget: ReferralWidget,
7181
7161
  MonoWidget: MonoWidget,
7182
7162
  Loyalty: Loyalty,
7183
- PromoCodeReferralWidget: PromoCodeReferralWidget,
7184
7163
  InstantAccessReferrerShareWidget: InstantAccessReferrerShareWidget,
7185
7164
  PaypalMonoWidget: PaypalMonoWidget,
7186
7165
  PaypalReferralWidget: PaypalReferralWidget,
@@ -7274,9 +7253,7 @@ const defaultProps$2 = {
7274
7253
  callbacks: {
7275
7254
  submit: async (e) => await e,
7276
7255
  },
7277
- content: {
7278
- pageLabel: "Sign in to your account",
7279
- },
7256
+ content: { pageLabel: "Sign in to your account" },
7280
7257
  };
7281
7258
  const errorProps = {
7282
7259
  states: {
@@ -7288,9 +7265,7 @@ const errorProps = {
7288
7265
  callbacks: {
7289
7266
  submit: async (e) => await e,
7290
7267
  },
7291
- content: {
7292
- pageLabel: "Sign in to your account",
7293
- },
7268
+ content: { pageLabel: "Sign in to your account" },
7294
7269
  };
7295
7270
  const loadingProps = {
7296
7271
  states: {
@@ -7302,37 +7277,16 @@ const loadingProps = {
7302
7277
  callbacks: {
7303
7278
  submit: async (e) => await e,
7304
7279
  },
7305
- content: {
7306
- pageLabel: "Sign in to your account",
7307
- },
7308
- };
7309
- const Default$3 = () => (index.h("sqm-portal-login", { showGoogleLogin: false, demoData: { ...defaultProps$2 } }));
7310
- const IsGoogle = () => (
7311
- // <sqm-portal-login
7312
- // showGoogleLogin
7313
- // demoData={{
7314
- // ...defaultProps,
7315
- // content: {
7316
- // googleButton: <sl-button>Sign in with Google</sl-button>,
7317
- // },
7318
- // states: { ...defaultProps.states },
7319
- // }}
7320
- // ></sqm-portal-login>
7321
- index.h(ShadowViewAddon.PortalLoginView, Object.assign({}, defaultProps$2, { content: {
7322
- secondaryButton: (index.h("span", null,
7323
- "Don't have an account?",
7324
- " ",
7325
- index.h("sl-button", { style: { width: "60px" }, size: "large", type: "text" }, "Register"))),
7326
- googleButton: index.h("sl-button", null, "Sign in with Google"),
7327
- } })));
7280
+ content: { pageLabel: "Sign in to your account" },
7281
+ };
7282
+ const Default$2 = () => index.h(ShadowViewAddon.PortalLoginView, Object.assign({}, defaultProps$2));
7328
7283
  const LoginWithError = () => index.h(ShadowViewAddon.PortalLoginView, Object.assign({}, errorProps));
7329
7284
  const LoginLoading = () => index.h(ShadowViewAddon.PortalLoginView, Object.assign({}, loadingProps));
7330
7285
 
7331
7286
  const PortalLogin = /*#__PURE__*/Object.freeze({
7332
7287
  __proto__: null,
7333
7288
  'default': PortalLogin_stories,
7334
- Default: Default$3,
7335
- IsGoogle: IsGoogle,
7289
+ Default: Default$2,
7336
7290
  LoginWithError: LoginWithError,
7337
7291
  LoginLoading: LoginLoading
7338
7292
  });
@@ -7435,7 +7389,7 @@ const slottedProps = {
7435
7389
  index.h("sl-input", { exportparts: "label: input-label, base: input-base", label: "Slotted Input 2", required: true }))),
7436
7390
  },
7437
7391
  };
7438
- const Default$4 = () => index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultProps$3));
7392
+ const Default$3 = () => index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultProps$3));
7439
7393
  const RegisterWithError = () => index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, errorProps$1));
7440
7394
  const RegisterLoading = () => index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, loadingProps$1));
7441
7395
  const FieldsHidden = () => {
@@ -7462,7 +7416,7 @@ const TermsAndConditions = () => (index.h(ShadowViewAddon.PortalRegisterView, Ob
7462
7416
  const PortalRegister = /*#__PURE__*/Object.freeze({
7463
7417
  __proto__: null,
7464
7418
  'default': PortalRegister_stories,
7465
- Default: Default$4,
7419
+ Default: Default$3,
7466
7420
  RegisterWithError: RegisterWithError,
7467
7421
  RegisterLoading: RegisterLoading,
7468
7422
  FieldsHidden: FieldsHidden,
@@ -7470,6 +7424,126 @@ const PortalRegister = /*#__PURE__*/Object.freeze({
7470
7424
  TermsAndConditions: TermsAndConditions
7471
7425
  });
7472
7426
 
7427
+ const PortalRegistrationForm_stories = {
7428
+ title: "Components/Microsite Register Form New",
7429
+ };
7430
+ const defaultProps$4 = {
7431
+ states: {
7432
+ error: "",
7433
+ loading: false,
7434
+ confirmPassword: true,
7435
+ hideInputs: false,
7436
+ loginPath: "/login",
7437
+ },
7438
+ callbacks: {
7439
+ submit: () => console.log("Submit!"),
7440
+ inputFunction: () => { },
7441
+ },
7442
+ refs: {
7443
+ formRef: {},
7444
+ },
7445
+ content: { pageLabel: "Register", confirmPasswordLabel: "Confirm Password" },
7446
+ };
7447
+ const errorProps$2 = {
7448
+ states: {
7449
+ error: "Something went wrong. Please try again.",
7450
+ loading: false,
7451
+ confirmPassword: true,
7452
+ hideInputs: false,
7453
+ loginPath: "/login",
7454
+ },
7455
+ callbacks: {
7456
+ submit: () => console.log("Submit!"),
7457
+ inputFunction: () => { },
7458
+ },
7459
+ refs: {
7460
+ formRef: {},
7461
+ },
7462
+ content: {
7463
+ pageLabel: "Register",
7464
+ confirmPasswordLabel: "Confirm Password",
7465
+ },
7466
+ };
7467
+ const loadingProps$2 = {
7468
+ states: {
7469
+ error: "",
7470
+ loading: true,
7471
+ confirmPassword: true,
7472
+ hideInputs: false,
7473
+ loginPath: "/login",
7474
+ },
7475
+ callbacks: {
7476
+ submit: () => console.log("Submit!"),
7477
+ inputFunction: () => { },
7478
+ },
7479
+ refs: {
7480
+ formRef: {},
7481
+ },
7482
+ content: { pageLabel: "Register", confirmPasswordLabel: "Confirm Password" },
7483
+ };
7484
+ const slottedProps$1 = {
7485
+ states: {
7486
+ error: "",
7487
+ loading: false,
7488
+ confirmPassword: true,
7489
+ hideInputs: false,
7490
+ loginPath: "/login",
7491
+ },
7492
+ callbacks: {
7493
+ submit: () => console.log("Submit!"),
7494
+ inputFunction: () => { },
7495
+ },
7496
+ refs: {
7497
+ formRef: {},
7498
+ },
7499
+ content: {
7500
+ pageLabel: "Register",
7501
+ confirmPasswordLabel: "Confirm Password",
7502
+ formData: (index.h("div", null,
7503
+ index.h("sl-input", { style: { marginBottom: "var(--sl-spacing-x-large)" }, exportparts: "label: input-label, base: input-base", label: "Slotted Input", required: true }),
7504
+ index.h("sl-input", { exportparts: "label: input-label, base: input-base", label: "Slotted Input 2", required: true }))),
7505
+ },
7506
+ };
7507
+ const Default$4 = () => index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$4));
7508
+ const RegisterWithError$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, errorProps$2)));
7509
+ const RegisterLoading$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, loadingProps$2)));
7510
+ const FieldsHidden$1 = () => {
7511
+ return (index.h("sqm-portal-register", { demoData: {
7512
+ states: {
7513
+ error: "",
7514
+ loading: true,
7515
+ registrationFormState: {},
7516
+ confirmPassword: true,
7517
+ hideInputs: true,
7518
+ loginPath: "/login",
7519
+ },
7520
+ } }));
7521
+ };
7522
+ const SlottedInputs$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, slottedProps$1)));
7523
+ const RegisterWithMarketingEmailsCheckbox = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$4, { content: {
7524
+ ...defaultProps$4.content,
7525
+ emailOptIn: (index.h("sqm-checkbox-field", { checkboxLabel: "I would like to receive marketing and promotional emails for this referral program" })),
7526
+ } })));
7527
+ const TermsAndConditions$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$4, { content: {
7528
+ ...defaultProps$4.content,
7529
+ terms: (index.h("p", null,
7530
+ "By signing up you agree to the",
7531
+ " ",
7532
+ index.h("a", { href: "https://example.com", target: "_blank" }, "Terms and Conditions"))),
7533
+ } })));
7534
+
7535
+ const NewPortalRegistrationForm = /*#__PURE__*/Object.freeze({
7536
+ __proto__: null,
7537
+ 'default': PortalRegistrationForm_stories,
7538
+ Default: Default$4,
7539
+ RegisterWithError: RegisterWithError$1,
7540
+ RegisterLoading: RegisterLoading$1,
7541
+ FieldsHidden: FieldsHidden$1,
7542
+ SlottedInputs: SlottedInputs$1,
7543
+ RegisterWithMarketingEmailsCheckbox: RegisterWithMarketingEmailsCheckbox,
7544
+ TermsAndConditions: TermsAndConditions$1
7545
+ });
7546
+
7473
7547
  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 |";
7474
7548
 
7475
7549
  const PortalForgotPassword_stories = {
@@ -7478,7 +7552,7 @@ const PortalForgotPassword_stories = {
7478
7552
  scenario: scenario$6,
7479
7553
  },
7480
7554
  };
7481
- const defaultProps$4 = {
7555
+ const defaultProps$5 = {
7482
7556
  states: {
7483
7557
  error: "",
7484
7558
  loading: false,
@@ -7493,7 +7567,7 @@ const defaultProps$4 = {
7493
7567
  messageSlot: "Enter your email below to receive a password reset link.",
7494
7568
  },
7495
7569
  };
7496
- const errorProps$2 = {
7570
+ const errorProps$3 = {
7497
7571
  states: {
7498
7572
  error: "Something went wrong. Please try again.",
7499
7573
  loading: false,
@@ -7508,7 +7582,7 @@ const errorProps$2 = {
7508
7582
  messageSlot: "Enter your email below to receive a password reset link.",
7509
7583
  },
7510
7584
  };
7511
- const loadingProps$2 = {
7585
+ const loadingProps$3 = {
7512
7586
  states: {
7513
7587
  error: "",
7514
7588
  loading: true,
@@ -7538,9 +7612,9 @@ const successProps = {
7538
7612
  messageSlot: "Enter your email below to receive a password reset link.",
7539
7613
  },
7540
7614
  };
7541
- const Default$5 = () => index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, defaultProps$4));
7542
- const ForgotPasswordWithError = () => (index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, errorProps$2)));
7543
- const ForgotPasswordLoading = () => (index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, loadingProps$2)));
7615
+ const Default$5 = () => index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, defaultProps$5));
7616
+ const ForgotPasswordWithError = () => (index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, errorProps$3)));
7617
+ const ForgotPasswordLoading = () => (index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, loadingProps$3)));
7544
7618
  const ForgotPasswordSuccess = () => (index.h(sqmPortalForgotPasswordView.PortalForgotPasswordView, Object.assign({}, successProps)));
7545
7619
 
7546
7620
  const PortalForgotPassword = /*#__PURE__*/Object.freeze({
@@ -7579,12 +7653,12 @@ const defaultStates = {
7579
7653
  loadingVerification: false,
7580
7654
  countdown: 10,
7581
7655
  };
7582
- const defaultProps$5 = {
7656
+ const defaultProps$6 = {
7583
7657
  states: defaultStates,
7584
7658
  callbacks: defaultCallbacks,
7585
7659
  content: defaultContent,
7586
7660
  };
7587
- const errorProps$3 = {
7661
+ const errorProps$4 = {
7588
7662
  states: {
7589
7663
  ...defaultStates,
7590
7664
  error: "Something went wrong. Please try again.",
@@ -7592,7 +7666,7 @@ const errorProps$3 = {
7592
7666
  callbacks: defaultCallbacks,
7593
7667
  content: defaultContent,
7594
7668
  };
7595
- const loadingProps$3 = {
7669
+ const loadingProps$4 = {
7596
7670
  states: {
7597
7671
  ...defaultStates,
7598
7672
  loading: true,
@@ -7617,9 +7691,9 @@ const loadingVerificationProps = {
7617
7691
  callbacks: defaultCallbacks,
7618
7692
  content: defaultContent,
7619
7693
  };
7620
- const Default$6 = () => index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, defaultProps$5));
7621
- const EmailVerificationWithError = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, errorProps$3)));
7622
- const EmailVerificationLoading = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, loadingProps$3)));
7694
+ const Default$6 = () => index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, defaultProps$6));
7695
+ const EmailVerificationWithError = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, errorProps$4)));
7696
+ const EmailVerificationLoading = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, loadingProps$4)));
7623
7697
  const EmailVerificationCheckingVerification = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, loadingVerificationProps)));
7624
7698
  const EmailVerificationSuccess = () => (index.h(sqmPortalEmailVerificationView.PortalEmailVerificationView, Object.assign({}, successProps$1)));
7625
7699
 
@@ -7641,7 +7715,7 @@ const PortalResetPassword_stories = {
7641
7715
  scenario: scenario$8,
7642
7716
  },
7643
7717
  };
7644
- const defaultProps$6 = {
7718
+ const defaultProps$7 = {
7645
7719
  states: {
7646
7720
  error: "",
7647
7721
  loading: false,
@@ -7687,7 +7761,7 @@ const defaultPropsNoConfirm = {
7687
7761
  failed: () => console.log("failed"),
7688
7762
  },
7689
7763
  };
7690
- const errorProps$4 = {
7764
+ const errorProps$5 = {
7691
7765
  states: {
7692
7766
  error: "Something went wrong. Please try again.",
7693
7767
  loading: false,
@@ -7710,7 +7784,7 @@ const errorProps$4 = {
7710
7784
  failed: () => console.log("failed"),
7711
7785
  },
7712
7786
  };
7713
- const loadingProps$4 = {
7787
+ const loadingProps$5 = {
7714
7788
  states: {
7715
7789
  error: "",
7716
7790
  loading: true,
@@ -7779,10 +7853,10 @@ const validatingCodeProps = {
7779
7853
  failed: () => console.log("failed"),
7780
7854
  },
7781
7855
  };
7782
- const Default$7 = () => index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, defaultProps$6));
7856
+ const Default$7 = () => index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, defaultProps$7));
7783
7857
  const DefaultWithoutConfirmField = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, defaultPropsNoConfirm)));
7784
- const ResetPasswordWithError = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, errorProps$4)));
7785
- const ResetPasswordLoading = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, loadingProps$4)));
7858
+ const ResetPasswordWithError = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, errorProps$5)));
7859
+ const ResetPasswordLoading = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, loadingProps$5)));
7786
7860
  const ResetPasswordSuccess = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, successProps$2)));
7787
7861
  const CodeValidating = () => (index.h(sqmPortalResetPasswordView.PortalResetPasswordView, Object.assign({}, validatingCodeProps)));
7788
7862
 
@@ -7805,7 +7879,7 @@ const PortalVerifyEmail_stories = {
7805
7879
  scenario: scenario$9,
7806
7880
  },
7807
7881
  };
7808
- const errorProps$5 = {
7882
+ const errorProps$6 = {
7809
7883
  states: {
7810
7884
  error: "Something went wrong. Please try again.",
7811
7885
  loading: false,
@@ -7839,7 +7913,7 @@ const verifiedProps = {
7839
7913
  },
7840
7914
  content: {},
7841
7915
  };
7842
- const EmailVerificationWithError$1 = () => (index.h(sqmPortalVerifyEmailView.PortalVerifyEmailView, Object.assign({}, errorProps$5)));
7916
+ const EmailVerificationWithError$1 = () => (index.h(sqmPortalVerifyEmailView.PortalVerifyEmailView, Object.assign({}, errorProps$6)));
7843
7917
  const EmailVerificationSuccess$1 = () => (index.h(sqmPortalVerifyEmailView.PortalVerifyEmailView, Object.assign({}, verifiedProps)));
7844
7918
 
7845
7919
  const PortalVerifyEmail = /*#__PURE__*/Object.freeze({
@@ -7969,7 +8043,7 @@ const ChangePassword_stories = {
7969
8043
  scenario: scenario$a,
7970
8044
  },
7971
8045
  };
7972
- const defaultProps$7 = {
8046
+ const defaultProps$8 = {
7973
8047
  states: {
7974
8048
  open: false,
7975
8049
  loading: false,
@@ -8013,7 +8087,7 @@ const openProps = {
8013
8087
  submit: (e) => console.log("Submit", e),
8014
8088
  },
8015
8089
  };
8016
- const errorProps$6 = {
8090
+ const errorProps$7 = {
8017
8091
  states: {
8018
8092
  open: true,
8019
8093
  loading: false,
@@ -8057,7 +8131,7 @@ const passwordErrorProps = {
8057
8131
  submit: (e) => console.log("Submit", e),
8058
8132
  },
8059
8133
  };
8060
- const loadingProps$5 = {
8134
+ const loadingProps$6 = {
8061
8135
  states: {
8062
8136
  open: true,
8063
8137
  loading: true,
@@ -8101,11 +8175,11 @@ const successProps$3 = {
8101
8175
  submit: (e) => console.log("Submit", e),
8102
8176
  },
8103
8177
  };
8104
- const Default$9 = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, defaultProps$7));
8178
+ const Default$9 = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, defaultProps$8));
8105
8179
  const Open = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, openProps));
8106
- const Error$2 = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, errorProps$6));
8180
+ const Error$2 = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, errorProps$7));
8107
8181
  const PaswordError = () => (index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, passwordErrorProps)));
8108
- const Loading$1 = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, loadingProps$5));
8182
+ const Loading$1 = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, loadingProps$6));
8109
8183
  const Success = () => index.h(ShadowViewAddon.PortalChangePasswordView, Object.assign({}, successProps$3));
8110
8184
 
8111
8185
  const ChangePassword = /*#__PURE__*/Object.freeze({
@@ -8122,7 +8196,7 @@ const ChangePassword = /*#__PURE__*/Object.freeze({
8122
8196
  const PortalProfile_stories = {
8123
8197
  title: "Components/Microsite Profile",
8124
8198
  };
8125
- const defaultProps$8 = {
8199
+ const defaultProps$9 = {
8126
8200
  states: {
8127
8201
  success: false,
8128
8202
  loading: false,
@@ -8194,7 +8268,7 @@ const noCountry = {
8194
8268
  onChange: (e) => console.log(e),
8195
8269
  },
8196
8270
  };
8197
- const loadingProps$6 = {
8271
+ const loadingProps$7 = {
8198
8272
  states: {
8199
8273
  success: false,
8200
8274
  loading: true,
@@ -8266,7 +8340,7 @@ const disabledProps = {
8266
8340
  onChange: (e) => console.log(e),
8267
8341
  },
8268
8342
  };
8269
- const errorProps$7 = {
8343
+ const errorProps$8 = {
8270
8344
  states: {
8271
8345
  success: false,
8272
8346
  loading: false,
@@ -8338,11 +8412,11 @@ const successProps$4 = {
8338
8412
  onChange: (e) => console.log(e),
8339
8413
  },
8340
8414
  };
8341
- const Default$a = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, defaultProps$8));
8415
+ const Default$a = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, defaultProps$9));
8342
8416
  const DefaultNoCountry = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, noCountry));
8343
- const Loading$2 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, loadingProps$6));
8417
+ const Loading$2 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, loadingProps$7));
8344
8418
  const Disabled$1 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, disabledProps));
8345
- const Error$3 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, errorProps$7));
8419
+ const Error$3 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, errorProps$8));
8346
8420
  const Success$1 = () => index.h(sqmPortalProfileView.PortalProfileView, Object.assign({}, successProps$4));
8347
8421
 
8348
8422
  const PortalProfile = /*#__PURE__*/Object.freeze({
@@ -8650,6 +8724,7 @@ const PayoutFailed = () => {
8650
8724
  },
8651
8725
  ], statusText: statusText, statusLongText: statusLongText, fuelTankText: "Your code is", rewardReceivedText: "Reward received on", expiringText: "Expiring in", pendingForText: "{status} for {date}", deniedHelpText: "Contact support if you think this is a mistake." }));
8652
8726
  };
8727
+ // AL: TODO payout cancelled
8653
8728
  const PayoutCancelled = () => {
8654
8729
  return (index.h("sqm-referral-table-rewards-cell", { rewards: [
8655
8730
  {
@@ -10096,7 +10171,7 @@ const portalTemplate = "<sqm-portal-frame>\n <a slot=\"header\" href=\"/\">\n
10096
10171
 
10097
10172
  const portalLeadSubmitTemplate = "<sqm-portal-frame>\n <a slot=\"header\" href=\"/\">\n <sqm-text style=\"height: 60px\">\n <img\n style=\"height: 60px\"\n src=\"https://res.cloudinary.com/saasquatch/image/upload/v1634255445/squatch-assets/Copy_of_saasquatch-logo-tree-large-horizontal.png\"\n />\n </sqm-text>\n </a>\n <sqb-program-section program-id=\"referral-program\">\n <sqm-router>\n <template\n path=\"/:path(\\bregister\\b|\\bemailVerification\\b|\\blogin\\b|\\bverifyEmail\\b|\\bforgotPassword\\b|\\bresetPassword\\b|\\blogout\\b)\"\n >\n <sqm-hero\n background=\"https://images.unsplash.com/photo-1599676821464-3555954838dc?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1939&q=80\"\n >\n <sqm-router>\n <template path=\"/register\">\n <sqm-portal-register>\n <sqm-name-fields slot=\"formData\"></sqm-name-fields>\n </sqm-portal-register>\n </template>\n\n <template path=\"/emailVerification\">\n <sqm-portal-protected-route\n redirect-to=\"/login\"\n ></sqm-portal-protected-route>\n <sqm-portal-email-verification></sqm-portal-email-verification>\n </template>\n\n <template path=\"/login\">\n <sqm-portal-login></sqm-portal-login>\n </template>\n\n <template path=\"/verifyEmail\">\n <sqm-portal-verify-email></sqm-portal-verify-email>\n </template>\n\n <template path=\"/forgotPassword\">\n <sqm-portal-forgot-password\n email-label=\"Business Email\"\n ></sqm-portal-forgot-password>\n </template>\n\n <template path=\"/resetPassword\">\n <sqm-portal-reset-password\n confirm-password=\"true\"\n ></sqm-portal-reset-password>\n </template>\n <template path=\"/logout\">\n <sqm-portal-logout next-page=\"/login\"></sqm-portal-logout>\n </template>\n </sqm-router>\n </sqm-hero>\n </template>\n </sqm-router>\n <sqm-router>\n <template path=\"/:path(\\bactivity\\b|\\beditProfile\\b|\\brefer\\b)?\">\n <sqm-divided-layout\n direction=\"row\"\n style=\"\n border-top: 1px solid #eaeaea;\n border-bottom: 1px solid #eaeaea;\n \"\n >\n <sqm-navigation-sidebar>\n <sqm-navigation-sidebar-item\n path=\"/\"\n icon=\"house\"\n label=\"Dashboard\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/refer\"\n icon=\"inbox\"\n label=\"Submit A Lead\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/activity\"\n icon=\"bar-chart\"\n label=\"Activity\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/editProfile\"\n icon=\"person\"\n label=\"Edit Profile\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/logout\"\n icon=\"box-arrow-right\"\n label=\"Logout\"\n ></sqm-navigation-sidebar-item>\n </sqm-navigation-sidebar>\n <sqm-divided-layout direction=\"column\">\n <sqm-router>\n <template path=\"/\">\n <sqm-portal-protected-route\n require-email-verification=\"true\"\n redirect-to=\"/login\"\n redirect-to-unverified=\"/emailVerification\"\n ></sqm-portal-protected-route>\n <sqb-widget\n widget-type=\"p/referral-program/w/referrerWidget\"\n track-loads=\"true\"\n ></sqb-widget>\n </template>\n <template path=\"/editProfile\">\n <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 </template>\n <template path=\"/refer\">\n <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-referral-iframe></sqm-referral-iframe>\n </template>\n <template path=\"/activity\">\n <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\n direction=\"column\"\n padding=\"xxx-large\"\n gap=\"xxx-large\"\n >\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 </template>\n </sqm-router>\n </sqm-divided-layout>\n </sqm-divided-layout>\n </template>\n </sqm-router>\n </sqb-program-section>\n <sqm-portal-footer\n slot=\"footer\"\n support-email=\"support@example.com\"\n terms-link=\"https://example.com\"\n faq-link=\"https://example.com\"\n terms-text=\"Terms And Conditions\"\n faq-text=\"FAQ\"\n show-powered-by=\"true\"\n ></sqm-portal-footer>\n</sqm-portal-frame>\n";
10098
10173
 
10099
- const taxAndCashTemplate = "<sqm-portal-frame>\n <a slot=\"header\" href=\"/\">\n <sqm-text style=\"height: 60px\">\n <img\n style=\"height: 60px\"\n src=\"https://res.cloudinary.com/saasquatch/image/upload/v1634255445/squatch-assets/Copy_of_saasquatch-logo-tree-large-horizontal.png\"\n />\n </sqm-text>\n </a>\n <sqb-program-section program-id=\"referral-program\">\n <sqm-router>\n <template\n path=\"/:path(\\bregister\\b|\\bemailVerification\\b|\\blogin\\b|\\bverifyEmail\\b|\\bforgotPassword\\b|\\bresetPassword\\b|\\blogout\\b)\"\n >\n <sqm-hero\n background=\"https://images.unsplash.com/photo-1599676821464-3555954838dc?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1939&q=80\"\n >\n <sqm-router>\n <template path=\"/register\">\n <sqm-portal-login></sqm-portal-login>\n <sqm-portal-register>\n <sqm-name-fields slot=\"formData\"></sqm-name-fields>\n </sqm-portal-register>\n </template>\n\n <template path=\"/emailVerification\">\n <sqm-portal-protected-route\n redirect-to=\"/login\"\n ></sqm-portal-protected-route>\n <sqm-portal-email-verification></sqm-portal-email-verification>\n </template>\n\n <template path=\"/login\">\n <sqm-portal-login></sqm-portal-login>\n </template>\n\n <template path=\"/verifyEmail\">\n <sqm-portal-verify-email></sqm-portal-verify-email>\n </template>\n\n <template path=\"/forgotPassword\">\n <sqm-portal-forgot-password\n email-label=\"Business Email\"\n ></sqm-portal-forgot-password>\n </template>\n\n <template path=\"/resetPassword\">\n <sqm-portal-reset-password\n confirm-password=\"true\"\n ></sqm-portal-reset-password>\n </template>\n <template path=\"/logout\">\n <sqm-portal-logout next-page=\"/login\"></sqm-portal-logout>\n </template>\n </sqm-router>\n </sqm-hero>\n </template>\n </sqm-router>\n <sqm-router>\n <template path=\"/:path(\\bactivity\\b|\\beditProfile\\b|\\brefer\\b)?\">\n <sqm-divided-layout\n direction=\"row\"\n style=\"\n border-top: 1px solid #eaeaea;\n border-bottom: 1px solid #eaeaea;\n \"\n >\n <sqm-navigation-sidebar>\n <sqm-navigation-sidebar-item\n path=\"/\"\n icon=\"house\"\n label=\"Dashboard\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/activity\"\n icon=\"bar-chart\"\n label=\"Activity\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/editProfile\"\n icon=\"person\"\n label=\"Edit Profile\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/taxAndCash\"\n icon=\"file-earmark-text\"\n label=\"Tax & Payout Settings\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/logout\"\n icon=\"box-arrow-right\"\n label=\"Logout\"\n ></sqm-navigation-sidebar-item>\n </sqm-navigation-sidebar>\n <sqm-divided-layout direction=\"column\" content-area-width=\"1200px\">\n <sqm-router>\n <template path=\"/\">\n <sqm-portal-protected-route\n require-email-verification=\"true\"\n redirect-to=\"/login\"\n redirect-to-unverified=\"/emailVerification\"\n ></sqm-portal-protected-route>\n <sqb-widget\n widget-type=\"p/referral-program/w/referrerWidget\"\n track-loads=\"true\"\n ></sqb-widget>\n </template>\n <template path=\"/editProfile\">\n <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 </template>\n <template path=\"/refer\">\n <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-referral-iframe></sqm-referral-iframe>\n </template>\n <template path=\"/activity\">\n <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\n direction=\"column\"\n padding=\"xxx-large\"\n gap=\"xxx-large\"\n >\n <sqm-text>\n <h1>Activity</h1>\n </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>\n <p>Referrals</p>\n </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>\n <p>Rewards Earned</p>\n </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>\n <p>Reward Balance</p>\n </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 </template>\n <template path=\"/taxAndCash\">\n <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-tax-and-cash\n step-1_first-name=\"First name\"\n step-1_last-name=\"Last name\"\n step-1_email=\"Email\"\n step-1_country=\"Country\"\n step-1_phone-number=\"Phone number\"\n step-1_address=\"Address\"\n step-1_city=\"City\"\n step-1_state=\"State\"\n step-1_province=\"Province\"\n step-1_region=\"Region\"\n step-1_postal-code=\"Postal code\"\n step-1_currency=\"Currency\"\n step-1_currency-help-text=\"Choose your preferred payout currency\"\n step-1_allow-banking-collection=\"I have read the {termsAndConditionsLink} and allow impact.com to collect my tax and banking information\"\n step-1_personal-information=\"Personal Information\"\n step-1_terms-and-conditions-label=\"terms and conditions\"\n step-1_terms-and-conditions-link=\"/payout-terms-and-conditions\"\n step-1_search-for-currency-text=\"Search for currency..\"\n step-2_indirect-tax=\"Indirect Tax\"\n step-2_indirect-tax-description=\"Indirect taxes (e.g. VAT, HST, GST) are transaction based taxes often applied to goods and services. Service providers are typically required to register with their tax authority and collect these taxes on behalf governments.\"\n step-2_indirect-tax-details=\"Indirect tax details\"\n step-2_other-region=\"Registered for indirect tax\"\n step-2_other-region-subtext=\"If you’ve registered with your tax authority, add your information to stay tax compliant.\"\n step-2_not-registered=\"Not registered for indirect tax\"\n step-2_not-registered-subtext=\"If you’ve never set up indirect tax with your tax authority, then you’re likely not considered registered.\"\n step-2_selected-region=\"Country / region of indirect tax\"\n step-2_indirect-tax-number=\"{taxType, select, GST {GST number} HST {HST number} VAT {VAT number} CT {CT number} SST {SST number} GENERAL {Indirect tax number}}\"\n step-2_province=\"Province\"\n step-2_indirect-tax-number-error=\"{taxType, select, GST {GST number} HST {HST number} VAT {VAT number} CT {CT number} SST {SST number} GENERAL {Indirect tax number}} is required\"\n step-2_qst-number=\"QST number\"\n step-2_is-registered-q-s-t=\"I am registered for QST Tax\"\n step-2_is-registered-sub-region-income-tax=\"I am an individual registered for Income Tax purposes in Spain, and withholding tax will apply to any payments made to me.\"\n step-2_sub-region=\"Sub-region\"\n step-2_sub-region-tax-number-label=\"Income Tax Number\"\n step-2_cannot-change-info-alert=\"Changes to your personal and indirect tax information can only be made through our Support team after you complete this step. Make sure these are correct before continuing.\"\n step-3_tax-form=\"Tax form\"\n step-3_tax-form-label=\"{documentType} Tax Form\"\n step-3_participant-type=\"Participant type\"\n step-3_business-entity=\"I represent a business\"\n step-3_individual-participant=\"I am an individual participant\"\n step-3_tax-form-description=\"Participants based in the US need to submit a {documentType} form.\"\n step-3_tax-form-description-individual-participant=\"Participants residing outside of the US, joining the referral program of a US-based company, need to submit a {documentType} form.\"\n step-3_tax-form-description-business-entity=\"Participants residing outside of the US who represent a business entity need to submit a {documentType} form.\"\n step-3_docusign-expired=\"For your security and privacy, we automatically end your session after 20 minutes of inactivity. Please refresh and re-enter your tax information to continue.\"\n step-3_docusign-session-warning=\"For your security, we automatically end your session when you have not interacted with the form after 20 minutes.\"\n step-3_docusign-error=\"There was a problem displaying this form. Please refresh the page. If this problem continues, contact Support.\"\n step-3_refresh-button=\"Refresh Page\"\n step-3_exit-button=\"Exit\"\n step-4_tax-and-payouts=\"Payouts\"\n step-4_directly-to-bank-account=\"Directly to my bank account\"\n step-4_to-pay-pal-account=\"PayPal (2% processing fee capped to {feeCap})\"\n step-4_payment-schedule-balance-threshold=\"Pay me when my balance reaches a threshold\"\n step-4_payment-schedule-fixed-day=\"Pay me on a fixed day of the month\"\n step-4_payment-day-select-label=\"Payment Day\"\n step-4_payment-threshold-select-label=\"Payment threshold\"\n step-4_payment-day-first-of-month-label-text=\"1st of the month\"\n step-4_payment-day-fifteenth-of-month-label-text=\"15th of the month\"\n step-4_payment-method=\"Payment method\"\n step-4_payment-schedule=\"Payment schedule\"\n step-4_payment-method-subtext=\"Payouts will be sent from our referral program provider, impact.com.\"\n step-4_pay-pal-input-label=\"PayPal email\"\n step-4_bank-location-label=\"Bank country location\"\n step-4_beneficiary-account-name-label=\"Beneficiary account name\"\n step-4_bank-account-type-label=\"Bank account type\"\n step-4_checking-select-item-label=\"Checking\"\n step-4_savings-select-item-label=\"Savings\"\n step-4_bank-account-number-label=\"Bank account number\"\n step-4_iban-label=\"IBAN\"\n step-4_swift-code-label=\"SWIFT code\"\n step-4_routing-code-label=\"{bankCountry, select, AU {BSB number} CA {Routing number} CZ {Bank code} HK {Clearing code} SG {Clearing code} US {ABA routing number} NZ {BSB number} ZA {Bank/Branch number} IN {IFSC} CNY {CNAPS} other {Routing code} }\"\n step-4_bank-name-label=\"Bank name\"\n step-4_classification-entity-label=\"Classification entity\"\n step-4_business-select-item-label=\"Business\"\n step-4_individual-select-item-label=\"Individual\"\n step-4_foreign-select-item-label=\"Foreign\"\n step-4_classification-c-p-f-label=\"Classification CPF\"\n step-4_patronymic-name-label=\"Patronymic name\"\n step-4_vo-code-label=\"VO code\"\n step-4_agency-code-label=\"Agency code\"\n step-4_branch-code-label=\"Branch code\"\n step-4_classification-label=\"Classification\"\n step-4_tax-payer-id-label=\"Beneficiary INN\"\n step-4-bank-address-label=\"Bank address\"\n step-4_bank-city-label=\"Bank city\"\n step-4_bank-state-label=\"Bank Province / State\"\n step-4_bank-postal-code-label=\"Bank postal code\"\n step-4_eft-withdrawal-label=\"EFT Withdrawal (free)\"\n step-4_fx-wire-processing-fee-label=\"FX Wire (Processing Fee {currency}{defaultFxFee}.00)\"\n dashboard_status-text-active=\"Active\"\n dashboard_status-text-not-active=\"Invalid Tax Form\"\n dashboard_status-text-not-verified=\"Not Verified\"\n dashboard_badge-text-submitted-on=\"Submitted on {dateSubmitted}.\"\n dashboard_badge-text-submitted-on-w-8=\"Submitted on {dateSubmitted}. Valid for three years after submission.\"\n dashboard_badge-text-awaiting-review=\"Awaiting review. Submitted on {dateSubmitted}.\"\n dashboard_tax-alert-header-not-active-w-9=\"Your W9 tax form has personal information that doesn’t match your profile\"\n dashboard_tax-alert-header-not-active-w-8=\"{documentType} tax form is invalid\"\n dashboard_tax-alert-not-active-message-w-9=\"Please resubmit a new {documentType} form.\"\n dashboard_tax-alert-not-active-message-w-8=\"Your tax form may have expired or has personal information that doesn’t match your profile. Please submit a new {documentType} form.\"\n dashboard_invalid-form=\"Make sure your information is correct and submit new form.\"\n dashboard_banking-information-section-header=\"Payout Information\"\n dashboard_tax-document-section-header=\"Tax documents\"\n dashboard_tax-document-section-sub-header=\"{documentType} tax form\"\n dashboard_no-form-needed-subtext=\"Tax documents are only required if you are based in the US or joining the referral program of a US based brand.\"\n dashboard_indirect-tax-info-section-header=\"Indirect tax\"\n dashboard_indirect-tax-info-spain=\"Registered in {country}, {subRegion}\"\n dashboard_indirect-tax-info-other-country=\"Registered in {country}\"\n dashboard_indirect-tax-info-canada=\"Registered in {province}, {country}\"\n dashboard_indirect-tax-tooltip-support=\"To make changes to your indirect tax information, please contact Support.\"\n dashboard_indirect-tax-details=\"{indirectTaxType} number: {indirectTaxNumber}\"\n dashboard_new-form-button=\"Submit new form\"\n dashboard_edit-payment-information-button=\"Edit Payout Information\"\n dashboard_not-registered-for-tax=\"Not registered for indirect tax. If you’ve previously registered with your tax authority, contact Support to add your information to stay tax compliant.\"\n dashboard_qst-number=\"QST number: {qstNumber}\"\n dashboard_sub-region-tax-number=\"Income tax number: {subRegionTaxNumber}\"\n dashboard_status-badge-text=\"{badgeText, select, payoutToday {Payout Today} nextPayout {Next Payout} }\"\n dashboard_threshold-payout-text=\"Next payout occurs when balance is {thresholdBalance}\"\n dashboard_account-text=\"Account\"\n dashboard_invoice-column-title=\"Invoice\"\n dashboard_date-column-title=\"Date\"\n dashboard_earnings-column-title=\"Earnings\"\n dashboard_indirect-tax-column-title=\"Indirect tax\"\n dashboard_payout-from-impact=\"Your balance may take up to 24 hours to update. Payouts will be sent from our referral program provider, impact.com.\"\n dashboard_earnings-after-tax-column-title=\"Earnings after tax\"\n dashboard_error-title-text=\"Your payout is on hold \"\n dashboard_error-description-text=\"If you’ve recently added your payout information, please wait while we verify your information. If it’s still on hold after a few days, please contact Support or check your inbox for an email from our referral program provider, impact.com.\"\n dashboard_payout-missing-information-text=\"Missing banking information, go to Impact.com to resolve.\"\n dashboard_invoice-description=\"View and download your invoices to report your earnings and stay tax compliant.\"\n dashboard_invoice-prev-label=\"Prev\"\n dashboard_invoice-more-label=\"Next\"\n dashboard_invoice-header=\"Invoices\"\n dashboard_invoice-empty-state-header=\"View your invoice details\"\n dashboard_invoice-empty-state-text=\"Refer a friend to view the status of your invoices and rewards earned\"\n dashboard_replace-tax-form-modal-header=\"Replace existing tax form\"\n dashboard_replace-tax-form-modal-body-text=\"Submitting a new tax form will remove your existing form. Make sure to sign and complete your new tax form to prevent any issues with your next payout.\"\n form-step=\"Step {step} of {count}\"\n general-error-title=\"There was a problem submitting your information\"\n general-error-description=\"Please review your information and try again. If this problem continues, contact Support.\"\n field-required-error=\"{fieldName} is required\"\n invalid-character-error=\"{fieldName} includes characters that aren't supported.\"\n field-invalid-error=\"{fieldName} is invalid\"\n continue-button=\"Continue\"\n back-button=\"Back\"\n cancel-button=\"Cancel\"\n is-partner-alert-header=\"An account with this email already exists with our referral program provider, impact.com\"\n is-partner-alert-description=\"If you don’t recognize this referral program provider or believe this is a mistake, please contact Support or sign up for this referral program with a different email.\"\n search-for-country-text=\"Search for country..\"\n loading-error-alert-header=\"There was a problem loading your form\"\n loading-error-alert-description=\"Please refresh the page and try again. If this problem continues, contact Support.\"\n tax-and-payouts-description=\"Submit your tax documents and add your banking information to receive your rewards.\"\n ></sqm-tax-and-cash>\n </template>\n </sqm-router>\n </sqm-divided-layout>\n </sqm-divided-layout>\n </template>\n </sqm-router>\n </sqb-program-section>\n <sqm-portal-footer\n slot=\"footer\"\n support-email=\"support@example.com\"\n terms-link=\"https://example.com\"\n faq-link=\"https://example.com\"\n terms-text=\"Terms And Conditions\"\n faq-text=\"FAQ\"\n show-powered-by=\"true\"\n ></sqm-portal-footer>\n</sqm-portal-frame>\n";
10174
+ const taxAndCashTemplate = "<sqm-portal-frame>\n <a slot=\"header\" href=\"/\">\n <sqm-text style=\"height: 60px\">\n <img\n style=\"height: 60px\"\n src=\"https://res.cloudinary.com/saasquatch/image/upload/v1634255445/squatch-assets/Copy_of_saasquatch-logo-tree-large-horizontal.png\"\n />\n </sqm-text>\n </a>\n <sqb-program-section program-id=\"referral-program\">\n <sqm-router>\n <template\n path=\"/:path(\\bregister\\b|\\bemailVerification\\b|\\blogin\\b|\\bverifyEmail\\b|\\bforgotPassword\\b|\\bresetPassword\\b|\\blogout\\b)\"\n >\n <sqm-hero\n background=\"https://images.unsplash.com/photo-1599676821464-3555954838dc?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1939&q=80\"\n >\n <sqm-router>\n <template path=\"/register\">\n <sqm-portal-register>\n <sqm-name-fields slot=\"formData\"></sqm-name-fields>\n </sqm-portal-register>\n </template>\n\n <template path=\"/emailVerification\">\n <sqm-portal-protected-route\n redirect-to=\"/login\"\n ></sqm-portal-protected-route>\n <sqm-portal-email-verification></sqm-portal-email-verification>\n </template>\n\n <template path=\"/login\">\n <sqm-portal-login></sqm-portal-login>\n </template>\n\n <template path=\"/verifyEmail\">\n <sqm-portal-verify-email></sqm-portal-verify-email>\n </template>\n\n <template path=\"/forgotPassword\">\n <sqm-portal-forgot-password\n email-label=\"Business Email\"\n ></sqm-portal-forgot-password>\n </template>\n\n <template path=\"/resetPassword\">\n <sqm-portal-reset-password\n confirm-password=\"true\"\n ></sqm-portal-reset-password>\n </template>\n <template path=\"/logout\">\n <sqm-portal-logout next-page=\"/login\"></sqm-portal-logout>\n </template>\n </sqm-router>\n </sqm-hero>\n </template>\n </sqm-router>\n <sqm-router>\n <template path=\"/:path(\\bactivity\\b|\\beditProfile\\b|\\brefer\\b)?\">\n <sqm-divided-layout\n direction=\"row\"\n style=\"\n border-top: 1px solid #eaeaea;\n border-bottom: 1px solid #eaeaea;\n \"\n >\n <sqm-navigation-sidebar>\n <sqm-navigation-sidebar-item\n path=\"/\"\n icon=\"house\"\n label=\"Dashboard\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/activity\"\n icon=\"bar-chart\"\n label=\"Activity\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/editProfile\"\n icon=\"person\"\n label=\"Edit Profile\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/taxAndCash\"\n icon=\"file-earmark-text\"\n label=\"Tax & Payout Settings\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/logout\"\n icon=\"box-arrow-right\"\n label=\"Logout\"\n ></sqm-navigation-sidebar-item>\n </sqm-navigation-sidebar>\n <sqm-divided-layout direction=\"column\" content-area-width=\"1200px\">\n <sqm-router>\n <template path=\"/\">\n <sqm-portal-protected-route\n require-email-verification=\"true\"\n redirect-to=\"/login\"\n redirect-to-unverified=\"/emailVerification\"\n ></sqm-portal-protected-route>\n <sqb-widget\n widget-type=\"p/referral-program/w/referrerWidget\"\n track-loads=\"true\"\n ></sqb-widget>\n </template>\n <template path=\"/editProfile\">\n <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 </template>\n <template path=\"/refer\">\n <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-referral-iframe></sqm-referral-iframe>\n </template>\n <template path=\"/activity\">\n <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\n direction=\"column\"\n padding=\"xxx-large\"\n gap=\"xxx-large\"\n >\n <sqm-text>\n <h1>Activity</h1>\n </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>\n <p>Referrals</p>\n </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>\n <p>Rewards Earned</p>\n </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>\n <p>Reward Balance</p>\n </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 </template>\n <template path=\"/taxAndCash\">\n <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-tax-and-cash\n step-1_first-name=\"First name\"\n step-1_last-name=\"Last name\"\n step-1_email=\"Email\"\n step-1_country=\"Country\"\n step-1_phone-number=\"Phone number\"\n step-1_address=\"Address\"\n step-1_city=\"City\"\n step-1_state=\"State\"\n step-1_province=\"Province\"\n step-1_region=\"Region\"\n step-1_postal-code=\"Postal code\"\n step-1_currency=\"Currency\"\n step-1_currency-help-text=\"Choose your preferred payout currency\"\n step-1_allow-banking-collection=\"I have read the {termsAndConditionsLink} and allow impact.com to collect my tax and banking information\"\n step-1_personal-information=\"Personal Information\"\n step-1_terms-and-conditions-label=\"terms and conditions\"\n step-1_terms-and-conditions-link=\"/payout-terms-and-conditions\"\n step-1_search-for-currency-text=\"Search for currency..\"\n step-2_indirect-tax=\"Indirect Tax\"\n step-2_indirect-tax-description=\"Indirect taxes (e.g. VAT, HST, GST) are transaction based taxes often applied to goods and services. Service providers are typically required to register with their tax authority and collect these taxes on behalf governments.\"\n step-2_indirect-tax-details=\"Indirect tax details\"\n step-2_other-region=\"Registered for indirect tax\"\n step-2_other-region-subtext=\"If you’ve registered with your tax authority, add your information to stay tax compliant.\"\n step-2_not-registered=\"Not registered for indirect tax\"\n step-2_not-registered-subtext=\"If you’ve never set up indirect tax with your tax authority, then you’re likely not considered registered.\"\n step-2_selected-region=\"Country / region of indirect tax\"\n step-2_indirect-tax-number=\"{taxType, select, GST {GST number} HST {HST number} VAT {VAT number} CT {CT number} SST {SST number} GENERAL {Indirect tax number}}\"\n step-2_province=\"Province\"\n step-2_indirect-tax-number-error=\"{taxType, select, GST {GST number} HST {HST number} VAT {VAT number} CT {CT number} SST {SST number} GENERAL {Indirect tax number}} is required\"\n step-2_qst-number=\"QST number\"\n step-2_is-registered-q-s-t=\"I am registered for QST Tax\"\n step-2_is-registered-sub-region-income-tax=\"I am an individual registered for Income Tax purposes in Spain, and withholding tax will apply to any payments made to me.\"\n step-2_sub-region=\"Sub-region\"\n step-2_sub-region-tax-number-label=\"Income Tax Number\"\n step-2_cannot-change-info-alert=\"Changes to your personal and indirect tax information can only be made through our Support team after you complete this step. Make sure these are correct before continuing.\"\n step-3_tax-form=\"Tax form\"\n step-3_tax-form-label=\"{documentType} Tax Form\"\n step-3_participant-type=\"Participant type\"\n step-3_business-entity=\"I represent a business\"\n step-3_individual-participant=\"I am an individual participant\"\n step-3_tax-form-description=\"Participants based in the US need to submit a {documentType} form.\"\n step-3_tax-form-description-individual-participant=\"Participants residing outside of the US, joining the referral program of a US-based company, need to submit a {documentType} form.\"\n step-3_tax-form-description-business-entity=\"Participants residing outside of the US who represent a business entity need to submit a {documentType} form.\"\n step-3_docusign-expired=\"For your security and privacy, we automatically end your session after 20 minutes of inactivity. Please refresh and re-enter your tax information to continue.\"\n step-3_docusign-session-warning=\"For your security, we automatically end your session when you have not interacted with the form after 20 minutes.\"\n step-3_docusign-error=\"There was a problem displaying this form. Please refresh the page. If this problem continues, contact Support.\"\n step-3_refresh-button=\"Refresh Page\"\n step-3_exit-button=\"Exit\"\n step-4_tax-and-payouts=\"Payouts\"\n step-4_directly-to-bank-account=\"Directly to my bank account\"\n step-4_to-pay-pal-account=\"PayPal (2% processing fee capped to {feeCap})\"\n step-4_payment-schedule-balance-threshold=\"Pay me when my balance reaches a threshold\"\n step-4_payment-schedule-fixed-day=\"Pay me on a fixed day of the month\"\n step-4_payment-day-select-label=\"Payment Day\"\n step-4_payment-threshold-select-label=\"Payment threshold\"\n step-4_payment-day-first-of-month-label-text=\"1st of the month\"\n step-4_payment-day-fifteenth-of-month-label-text=\"15th of the month\"\n step-4_payment-method=\"Payment method\"\n step-4_payment-schedule=\"Payment schedule\"\n step-4_payment-method-subtext=\"Payouts will be sent from our referral program provider, impact.com.\"\n step-4_pay-pal-input-label=\"PayPal email\"\n step-4_bank-location-label=\"Bank country location\"\n step-4_beneficiary-account-name-label=\"Beneficiary account name\"\n step-4_bank-account-type-label=\"Bank account type\"\n step-4_checking-select-item-label=\"Checking\"\n step-4_savings-select-item-label=\"Savings\"\n step-4_bank-account-number-label=\"Bank account number\"\n step-4_iban-label=\"IBAN\"\n step-4_swift-code-label=\"SWIFT code\"\n step-4_routing-code-label=\"{bankCountry, select, AU {BSB number} CA {Routing number} CZ {Bank code} HK {Clearing code} SG {Clearing code} US {ABA routing number} NZ {BSB number} ZA {Bank/Branch number} IN {IFSC} CNY {CNAPS} other {Routing code} }\"\n step-4_bank-name-label=\"Bank name\"\n step-4_classification-entity-label=\"Classification entity\"\n step-4_business-select-item-label=\"Business\"\n step-4_individual-select-item-label=\"Individual\"\n step-4_foreign-select-item-label=\"Foreign\"\n step-4_classification-c-p-f-label=\"Classification CPF\"\n step-4_patronymic-name-label=\"Patronymic name\"\n step-4_vo-code-label=\"VO code\"\n step-4_agency-code-label=\"Agency code\"\n step-4_branch-code-label=\"Branch code\"\n step-4_classification-label=\"Classification\"\n step-4_tax-payer-id-label=\"Beneficiary INN\"\n step-4-bank-address-label=\"Bank address\"\n step-4_bank-city-label=\"Bank city\"\n step-4_bank-state-label=\"Bank Province / State\"\n step-4_bank-postal-code-label=\"Bank postal code\"\n step-4_eft-withdrawal-label=\"EFT Withdrawal (free)\"\n step-4_fx-wire-processing-fee-label=\"FX Wire (Processing Fee {currency}{defaultFxFee}.00)\"\n dashboard_status-text-active=\"Active\"\n dashboard_status-text-not-active=\"Invalid Tax Form\"\n dashboard_status-text-not-verified=\"Not Verified\"\n dashboard_badge-text-submitted-on=\"Submitted on {dateSubmitted}.\"\n dashboard_badge-text-submitted-on-w-8=\"Submitted on {dateSubmitted}. Valid for three years after submission.\"\n dashboard_badge-text-awaiting-review=\"Awaiting review. Submitted on {dateSubmitted}.\"\n dashboard_tax-alert-header-not-active-w-9=\"Your W9 tax form has personal information that doesn’t match your profile\"\n dashboard_tax-alert-header-not-active-w-8=\"{documentType} tax form is invalid\"\n dashboard_tax-alert-not-active-message-w-9=\"Please resubmit a new {documentType} form.\"\n dashboard_tax-alert-not-active-message-w-8=\"Your tax form may have expired or has personal information that doesn’t match your profile. Please submit a new {documentType} form.\"\n dashboard_invalid-form=\"Make sure your information is correct and submit new form.\"\n dashboard_banking-information-section-header=\"Payout Information\"\n dashboard_tax-document-section-header=\"Tax documents\"\n dashboard_tax-document-section-sub-header=\"{documentType} tax form\"\n dashboard_no-form-needed-subtext=\"Tax documents are only required if you are based in the US or joining the referral program of a US based brand.\"\n dashboard_indirect-tax-info-section-header=\"Indirect tax\"\n dashboard_indirect-tax-info-spain=\"Registered in {country}, {subRegion}\"\n dashboard_indirect-tax-info-other-country=\"Registered in {country}\"\n dashboard_indirect-tax-info-canada=\"Registered in {province}, {country}\"\n dashboard_indirect-tax-tooltip-support=\"To make changes to your indirect tax information, please contact Support.\"\n dashboard_indirect-tax-details=\"{indirectTaxType} number: {indirectTaxNumber}\"\n dashboard_new-form-button=\"Submit new form\"\n dashboard_edit-payment-information-button=\"Edit Payout Information\"\n dashboard_not-registered-for-tax=\"Not registered for indirect tax. If you’ve previously registered with your tax authority, contact Support to add your information to stay tax compliant.\"\n dashboard_qst-number=\"QST number: {qstNumber}\"\n dashboard_sub-region-tax-number=\"Income tax number: {subRegionTaxNumber}\"\n dashboard_status-badge-text=\"{badgeText, select, payoutToday {Payout Today} nextPayout {Next Payout} }\"\n dashboard_threshold-payout-text=\"Next payout occurs when balance is {thresholdBalance}\"\n dashboard_account-text=\"Account\"\n dashboard_invoice-column-title=\"Invoice\"\n dashboard_date-column-title=\"Date\"\n dashboard_earnings-column-title=\"Earnings\"\n dashboard_indirect-tax-column-title=\"Indirect tax\"\n dashboard_payout-from-impact=\"Your balance may take up to 24 hours to update. Payouts will be sent from our referral program provider, impact.com.\"\n dashboard_earnings-after-tax-column-title=\"Earnings after tax\"\n dashboard_error-title-text=\"Your payout is on hold \"\n dashboard_error-description-text=\"If you’ve recently added your payout information, please wait while we verify your information. If it’s still on hold after a few days, please contact Support or check your inbox for an email from our referral program provider, impact.com.\"\n dashboard_payout-missing-information-text=\"Missing banking information, go to Impact.com to resolve.\"\n dashboard_invoice-description=\"View and download your invoices to report your earnings and stay tax compliant.\"\n dashboard_invoice-prev-label=\"Prev\"\n dashboard_invoice-more-label=\"Next\"\n dashboard_invoice-header=\"Invoices\"\n dashboard_invoice-empty-state-header=\"View your invoice details\"\n dashboard_invoice-empty-state-text=\"Refer a friend to view the status of your invoices and rewards earned\"\n dashboard_replace-tax-form-modal-header=\"Replace existing tax form\"\n dashboard_replace-tax-form-modal-body-text=\"Submitting a new tax form will remove your existing form. Make sure to sign and complete your new tax form to prevent any issues with your next payout.\"\n form-step=\"Step {step} of {count}\"\n general-error-title=\"There was a problem submitting your information\"\n general-error-description=\"Please review your information and try again. If this problem continues, contact Support.\"\n field-required-error=\"{fieldName} is required\"\n invalid-character-error=\"{fieldName} includes characters that aren't supported.\"\n field-invalid-error=\"{fieldName} is invalid\"\n continue-button=\"Continue\"\n back-button=\"Back\"\n cancel-button=\"Cancel\"\n is-partner-alert-header=\"An account with this email already exists with our referral program provider, impact.com\"\n is-partner-alert-description=\"If you don’t recognize this referral program provider or believe this is a mistake, please contact Support or sign up for this referral program with a different email.\"\n search-for-country-text=\"Search for country..\"\n loading-error-alert-header=\"There was a problem loading your form\"\n loading-error-alert-description=\"Please refresh the page and try again. If this problem continues, contact Support.\"\n tax-and-payouts-description=\"Submit your tax documents and add your banking information to receive your rewards.\"\n ></sqm-tax-and-cash>\n </template>\n </sqm-router>\n </sqm-divided-layout>\n </sqm-divided-layout>\n </template>\n </sqm-router>\n </sqb-program-section>\n <sqm-portal-footer\n slot=\"footer\"\n support-email=\"support@example.com\"\n terms-link=\"https://example.com\"\n faq-link=\"https://example.com\"\n terms-text=\"Terms And Conditions\"\n faq-text=\"FAQ\"\n show-powered-by=\"true\"\n ></sqm-portal-footer>\n</sqm-portal-frame>\n";
10100
10175
 
10101
10176
  const portalLeadSubmitTemplateWithDashboard = "<sqm-portal-frame>\n <a slot=\"header\" href=\"/\">\n <sqm-text style=\"height: 60px\">\n <img\n style=\"height: 60px\"\n src=\"https://res.cloudinary.com/saasquatch/image/upload/v1634255445/squatch-assets/Copy_of_saasquatch-logo-tree-large-horizontal.png\"\n />\n </sqm-text>\n </a>\n <sqb-program-section program-id=\"referral-program\">\n <sqm-router>\n <template\n path=\"/:path(\\bregister\\b|\\bemailVerification\\b|\\blogin\\b|\\bverifyEmail\\b|\\bforgotPassword\\b|\\bresetPassword\\b|\\blogout\\b)\"\n >\n <sqm-hero\n background=\"https://images.unsplash.com/photo-1599676821464-3555954838dc?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1939&q=80\"\n >\n <sqm-router>\n <template path=\"/register\">\n <sqm-portal-register>\n <sqm-name-fields slot=\"formData\"></sqm-name-fields>\n </sqm-portal-register>\n </template>\n\n <template path=\"/emailVerification\">\n <sqm-portal-protected-route\n redirect-to=\"/login\"\n ></sqm-portal-protected-route>\n <sqm-portal-email-verification></sqm-portal-email-verification>\n </template>\n\n <template path=\"/login\">\n <sqm-portal-login></sqm-portal-login>\n </template>\n\n <template path=\"/verifyEmail\">\n <sqm-portal-verify-email></sqm-portal-verify-email>\n </template>\n\n <template path=\"/forgotPassword\">\n <sqm-portal-forgot-password\n email-label=\"Business Email\"\n ></sqm-portal-forgot-password>\n </template>\n\n <template path=\"/resetPassword\">\n <sqm-portal-reset-password\n confirm-password=\"true\"\n ></sqm-portal-reset-password>\n </template>\n <template path=\"/logout\">\n <sqm-portal-logout next-page=\"/login\"></sqm-portal-logout>\n </template>\n </sqm-router>\n </sqm-hero>\n </template>\n </sqm-router>\n <sqm-router>\n <template path=\"/:path(\\bactivity\\b|\\beditProfile\\b|\\brefer\\b)?\">\n <sqm-divided-layout\n direction=\"row\"\n style=\"\n border-top: 1px solid #eaeaea;\n border-bottom: 1px solid #eaeaea;\n \"\n >\n <sqm-navigation-sidebar>\n <sqm-navigation-sidebar-item\n path=\"/\"\n icon=\"house\"\n label=\"Dashboard\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/refer\"\n icon=\"inbox\"\n label=\"Submit A Lead\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/activity\"\n icon=\"bar-chart\"\n label=\"Activity\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/editProfile\"\n icon=\"person\"\n label=\"Edit Profile\"\n ></sqm-navigation-sidebar-item>\n <sqm-navigation-sidebar-item\n path=\"/logout\"\n icon=\"box-arrow-right\"\n label=\"Logout\"\n ></sqm-navigation-sidebar-item>\n </sqm-navigation-sidebar>\n <sqm-divided-layout direction=\"column\">\n <sqm-router>\n <template path=\"/\">\n <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\n direction=\"column\"\n padding=\"xxx-large\"\n gap=\"xxx-large\"\n ><sqm-titled-section label-margin=\"xx-small\"\n ><sqm-text slot=\"label\"> <p>Welcome back,</p> </sqm-text\n ><sqm-text slot=\"content\">\n <h1>\n <sqm-user-name\n fallback=\"Anonymous User\"\n ></sqm-user-name>\n </h1> </sqm-text\n ></sqm-titled-section>\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> </sqm-portal-container\n ><sqm-portal-container\n direction=\"column\"\n padding=\"xxx-large\"\n gap=\"xxx-large\"\n >\n <sqm-titled-section padding=\"none\" label-margin=\"x-large\"\n ><sqm-text slot=\"label\">\n <h2>Partner and Profit</h2> </sqm-text\n ><sqm-text slot=\"content\">\n <p>\n Get rewarded for referring potential customers to\n SaaSquatch. Earn commission for each successful lead you\n send our way\n </p>\n </sqm-text></sqm-titled-section\n >\n <sqm-titled-section label-margin=\"small\" padding=\"none\"\n ><sqm-text slot=\"label\">\n <h3>Share your referral link</h3> </sqm-text\n ><sqm-share-link slot=\"content\"></sqm-share-link\n ></sqm-titled-section>\n <sqm-titled-section label-margin=\"small\" padding=\"none\">\n <sqm-text slot=\"label\">\n <h3>Share your referral code</h3> </sqm-text\n ><sqm-share-code slot=\"content\"></sqm-share-code>\n </sqm-titled-section>\n <sqm-titled-section label-margin=\"small\" padding=\"none\"\n ><sqm-text slot=\"label\">\n <h3>Share via social media</h3> </sqm-text\n ><sqm-portal-container\n slot=\"content\"\n direction=\"row\"\n padding=\"none\"\n gap=\"xxx-large\"\n min-width=\"160px\"\n ><sqm-share-button\n icon=\"envelope\"\n medium=\"email\"\n size=\"medium\"\n pill=\"true\"\n >Email a friend</sqm-share-button\n ><sqm-share-button\n medium=\"twitter\"\n size=\"medium\"\n pill=\"true\"\n >Post about us on X</sqm-share-button\n ><sqm-share-button\n medium=\"facebook\"\n size=\"medium\"\n pill=\"true\"\n >Share on Facebook</sqm-share-button\n ></sqm-portal-container\n ></sqm-titled-section\n ></sqm-portal-container\n >\n </template>\n <template path=\"/editProfile\">\n <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 </template>\n <template path=\"/refer\">\n <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-referral-iframe></sqm-referral-iframe>\n </template>\n <template path=\"/activity\">\n <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\n direction=\"column\"\n padding=\"xxx-large\"\n gap=\"xxx-large\"\n >\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 </template>\n </sqm-router>\n </sqm-divided-layout>\n </sqm-divided-layout>\n </template>\n </sqm-router>\n </sqb-program-section>\n <sqm-portal-footer\n slot=\"footer\"\n support-email=\"support@example.com\"\n terms-link=\"https://example.com\"\n faq-link=\"https://example.com\"\n terms-text=\"Terms And Conditions\"\n faq-text=\"FAQ\"\n show-powered-by=\"true\"\n ></sqm-portal-footer>\n</sqm-portal-frame>\n";
10102
10177
 
@@ -10110,7 +10185,7 @@ const dashboardTemplate = "<sqm-portal-container direction=\"column\" padding=\"
10110
10185
 
10111
10186
  const leadSubmitTemplate = "<sqm-referral-iframe></sqm-referral-iframe>\n";
10112
10187
 
10113
- 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";
10188
+ 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";
10114
10189
 
10115
10190
  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";
10116
10191
 
@@ -10132,7 +10207,7 @@ const emailVerifiedTemplate = "<sqm-portal-verify-email></sqm-portal-verify-emai
10132
10207
 
10133
10208
  const emailVerificationTemplate = "<sqm-portal-protected-route redirect-to=\"/login\"></sqm-portal-protected-route>\n<sqm-portal-email-verification></sqm-portal-email-verification>\n";
10134
10209
 
10135
- const LoginReadme = "# sqm-portal-login\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; forgotPasswordPath: string; registerPath: string; }; content?: { googleButton?: VNode; forgotPasswordButton?: any; secondaryButton?: any; emailLabel?: string; passwordLabel?: string; submitLabel?: string; pageLabel?: string; }; }` | `undefined` |\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\n| `forgotPasswordLabel` | `forgot-password-label` | | `string` | `\"Forgot Password?\"` |\n| `forgotPasswordPath` | `forgot-password-path` | Redirect participants to this page to reset their password | `string` | `\"/forgotPassword\"` |\n| `networkErrorMessage` | `network-error-message` | | `string` | `\"An error occurred while logging you in. Please refresh the page and try again.\"` |\n| `nextPage` | `next-page` | Redirect participants to this page after they successfully login. | `string` | `\"/\"` |\n| `pageLabel` | `page-label` | | `string` | `\"Sign in to your account\"` |\n| `passwordLabel` | `password-label` | | `string` | `\"Password\"` |\n| `registerCTA` | `register-c-t-a` | | `string` | `\"Don't have an account?\"` |\n| `registerLabel` | `register-label` | | `string` | `\"Register\"` |\n| `registerPath` | `register-path` | Redirect participants to this page to start registration. | `string` | `\"/register\"` |\n| `showGoogleLogin` | `show-google-login` | | `boolean` | `false` |\n| `submitLabel` | `submit-label` | | `string` | `\"Sign In\"` |\n\n\n## Dependencies\n\n### Used by\n\n - [sqm-stencilbook](../sqm-stencilbook)\n\n### Depends on\n\n- [sqm-google-sign-in](../sqm-google-sign-in)\n- [sqm-form-message](../sqm-form-message)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-login --> sqm-google-sign-in\n sqm-portal-login --> sqm-form-message\n sqm-stencilbook --> sqm-portal-login\n style sqm-portal-login fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10210
+ const LoginReadme = "# sqm-portal-login\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; forgotPasswordPath: string; registerPath: string; }; content?: { forgotPasswordButton?: any; secondaryButton?: any; emailLabel?: string; passwordLabel?: string; submitLabel?: string; pageLabel?: string; }; }` | `undefined` |\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\n| `forgotPasswordLabel` | `forgot-password-label` | | `string` | `\"Forgot Password?\"` |\n| `forgotPasswordPath` | `forgot-password-path` | Redirect participants to this page to reset their password | `string` | `\"/forgotPassword\"` |\n| `networkErrorMessage` | `network-error-message` | | `string` | `\"An error occurred while logging you in. Please refresh the page and try again.\"` |\n| `nextPage` | `next-page` | Redirect participants to this page after they successfully login. | `string` | `\"/\"` |\n| `pageLabel` | `page-label` | | `string` | `\"Sign in to your account\"` |\n| `passwordLabel` | `password-label` | | `string` | `\"Password\"` |\n| `registerLabel` | `register-label` | | `string` | `\"Register\"` |\n| `registerPath` | `register-path` | Redirect participants to this page to start registration. | `string` | `\"/register\"` |\n| `submitLabel` | `submit-label` | | `string` | `\"Sign In\"` |\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\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-login --> sqm-form-message\n sqm-stencilbook --> sqm-portal-login\n style sqm-portal-login fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
10136
10211
 
10137
10212
  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";
10138
10213
 
@@ -10333,7 +10408,7 @@ const PortalFooter_stories = {
10333
10408
  scenario: scenario$f,
10334
10409
  },
10335
10410
  };
10336
- const defaultProps$9 = {
10411
+ const defaultProps$a = {
10337
10412
  supportEmail: "support@example.com",
10338
10413
  supportText: "For program support, contact {email}",
10339
10414
  hidePoweredBy: false,
@@ -10343,12 +10418,12 @@ const defaultProps$9 = {
10343
10418
  paddingBottom: "large",
10344
10419
  paddingLeft: "large",
10345
10420
  };
10346
- const DefaultFooter = () => index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$9));
10347
- const FooterWithTerms = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$9, { termsLink: "https://example.com", termsText: "Terms and Conditions" })));
10348
- const FooterWithFAQ = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$9, { faqLink: "https://example.com", faqText: "FAQ" })));
10349
- const FooterWithTermsAndFAQ = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$9, { termsLink: "https://example.com", termsText: "Terms and Conditions", faqLink: "https://example.com", faqText: "FAQ" })));
10350
- 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 })));
10351
- 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 })));
10421
+ const DefaultFooter = () => index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$a));
10422
+ const FooterWithTerms = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$a, { termsLink: "https://example.com", termsText: "Terms and Conditions" })));
10423
+ const FooterWithFAQ = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$a, { faqLink: "https://example.com", faqText: "FAQ" })));
10424
+ const FooterWithTermsAndFAQ = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$a, { termsLink: "https://example.com", termsText: "Terms and Conditions", faqLink: "https://example.com", faqText: "FAQ" })));
10425
+ const FooterNoPoweredBy = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$a, { termsLink: "https://example.com", termsText: "Terms and Conditions", faqLink: "https://example.com", faqText: "FAQ", hidePoweredBy: true })));
10426
+ const FooterNoSupportText = () => (index.h(ShadowViewAddon.PortalFooterView, Object.assign({}, defaultProps$a, { termsLink: "https://example.com", termsText: "Terms and Conditions", faqLink: "https://example.com", faqText: "FAQ", hideSupportText: true })));
10352
10427
 
10353
10428
  const PortalFooter = /*#__PURE__*/Object.freeze({
10354
10429
  __proto__: null,
@@ -10630,7 +10705,7 @@ const props$1 = {
10630
10705
  },
10631
10706
  },
10632
10707
  };
10633
- const errorProps$8 = {
10708
+ const errorProps$9 = {
10634
10709
  states: {
10635
10710
  registrationFormState: {
10636
10711
  validationErrors: {
@@ -10645,10 +10720,10 @@ const errorProps$8 = {
10645
10720
  },
10646
10721
  };
10647
10722
  const NameFields = () => {
10648
- return index.h(sqmNameFieldsView.NameFieldsView, Object.assign({}, props$1));
10723
+ return index.h(ShadowViewAddon.NameFieldsView, Object.assign({}, props$1));
10649
10724
  };
10650
10725
  const NameFieldsWithErrors = () => {
10651
- return index.h(sqmNameFieldsView.NameFieldsView, Object.assign({}, errorProps$8));
10726
+ return index.h(ShadowViewAddon.NameFieldsView, Object.assign({}, errorProps$9));
10652
10727
  };
10653
10728
 
10654
10729
  const NameFields$1 = /*#__PURE__*/Object.freeze({
@@ -10666,7 +10741,7 @@ const CheckboxField_stories = {
10666
10741
  scenario: scenario$j,
10667
10742
  },
10668
10743
  };
10669
- const defaultProps$a = {
10744
+ const defaultProps$b = {
10670
10745
  states: {
10671
10746
  registrationFormState: {
10672
10747
  validationErrors: {},
@@ -10674,7 +10749,7 @@ const defaultProps$a = {
10674
10749
  checked: false,
10675
10750
  },
10676
10751
  content: {
10677
- checkboxName: "agree",
10752
+ checkboxName: "terms",
10678
10753
  checkboxLabel: "By signing up you agree to the {labelLink}",
10679
10754
  checkboxLabelLink: "https://example.com",
10680
10755
  checkboxLabelLinkText: "Terms and Conditions",
@@ -10707,35 +10782,35 @@ const defaultRegisterProps = {
10707
10782
  invalidEmailErrorMessage: "Must be a valid email address",
10708
10783
  },
10709
10784
  };
10710
- const Default$c = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$a))));
10711
- const DefaultChecked = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$a, { states: {
10712
- ...defaultProps$a.states,
10785
+ const Default$c = createHookStory(() => (index.h(sqmCheckboxFieldView.CheckboxFieldView, Object.assign({}, defaultProps$b))));
10786
+ const DefaultChecked = createHookStory(() => (index.h(sqmCheckboxFieldView.CheckboxFieldView, Object.assign({}, defaultProps$b, { states: {
10787
+ ...defaultProps$b.states,
10713
10788
  checked: true,
10714
10789
  } }))));
10715
- const CustomLabel = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$a, { content: {
10716
- ...defaultProps$a.content,
10790
+ const CustomLabel = createHookStory(() => (index.h(sqmCheckboxFieldView.CheckboxFieldView, Object.assign({}, defaultProps$b, { content: {
10791
+ ...defaultProps$b.content,
10717
10792
  checkboxLabel: "I Agree",
10718
10793
  } }))));
10719
- const Error$4 = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$a, { states: {
10720
- ...defaultProps$a.states,
10794
+ const Error$4 = createHookStory(() => (index.h(sqmCheckboxFieldView.CheckboxFieldView, Object.assign({}, defaultProps$b, { states: {
10795
+ ...defaultProps$b.states,
10721
10796
  registrationFormState: {
10722
10797
  validationErrors: {
10723
10798
  agree: "Must be checked",
10724
10799
  },
10725
10800
  },
10726
10801
  } }))));
10727
- const CustomError = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$a, { states: {
10728
- ...defaultProps$a.states,
10802
+ const CustomError = createHookStory(() => (index.h(sqmCheckboxFieldView.CheckboxFieldView, Object.assign({}, defaultProps$b, { states: {
10803
+ ...defaultProps$b.states,
10729
10804
  registrationFormState: {
10730
10805
  validationErrors: {
10731
10806
  agree: "Must be checked",
10732
10807
  },
10733
10808
  },
10734
10809
  }, content: {
10735
- ...defaultProps$a.content,
10810
+ ...defaultProps$b.content,
10736
10811
  errorMessage: "This checkbox must be checked to continue",
10737
10812
  } }))));
10738
- const TermsAndConditions$1 = createHookStory(() => (index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultRegisterProps, {
10813
+ const TermsAndConditions$2 = createHookStory(() => (index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultRegisterProps, {
10739
10814
  //@ts-ignore
10740
10815
  content: {
10741
10816
  ...defaultRegisterProps.content,
@@ -10767,11 +10842,29 @@ const CheckboxField = /*#__PURE__*/Object.freeze({
10767
10842
  CustomLabel: CustomLabel,
10768
10843
  Error: Error$4,
10769
10844
  CustomError: CustomError,
10770
- TermsAndConditions: TermsAndConditions$1,
10845
+ TermsAndConditions: TermsAndConditions$2,
10771
10846
  TermsAndConditionsCustomLabel: TermsAndConditionsCustomLabel,
10772
10847
  TermsAndConditionsLongCustomLabel: TermsAndConditionsLongCustomLabel
10773
10848
  });
10774
10849
 
10850
+ const scenario$k = "@owner:zach\n@author:zach\nFeature: Marketing Emails Checkbox\n\n A checkbox that is used to opt in for referral program marketing emails.\n\n Background: A user is on the portal registration page\n Given a user is viewing the \"/register\"\n And \"/register\" contains the registration form\n And 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 @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";
10851
+
10852
+ const MarketingEmailsCheckbox_stories = {
10853
+ title: "Components/Marketing Emails Checkbox",
10854
+ parameters: {
10855
+ scenario: scenario$k,
10856
+ },
10857
+ };
10858
+ const Default$d = () => {
10859
+ return index.h("sqm-marketing-emails-checkbox", null);
10860
+ };
10861
+
10862
+ const MarketingEmailsCheckbox = /*#__PURE__*/Object.freeze({
10863
+ __proto__: null,
10864
+ 'default': MarketingEmailsCheckbox_stories,
10865
+ Default: Default$d
10866
+ });
10867
+
10775
10868
  const UseCheckboxField_stories = {
10776
10869
  title: "Hooks / useCheckboxField",
10777
10870
  parameters: {
@@ -10801,7 +10894,7 @@ function setupGraphQL$9() {
10801
10894
  }, []);
10802
10895
  return { id, accountId };
10803
10896
  }
10804
- const TermsAndConditions$2 = createHookStory(() => {
10897
+ const TermsAndConditions$3 = createHookStory(() => {
10805
10898
  setupGraphQL$9();
10806
10899
  return (index.h("sqm-portal-register", null,
10807
10900
  index.h("div", { slot: "terms" },
@@ -10839,7 +10932,7 @@ const MissingName = createHookStory(() => {
10839
10932
  const UseCheckboxField = /*#__PURE__*/Object.freeze({
10840
10933
  __proto__: null,
10841
10934
  'default': UseCheckboxField_stories,
10842
- TermsAndConditions: TermsAndConditions$2,
10935
+ TermsAndConditions: TermsAndConditions$3,
10843
10936
  TermsAndConditionsWithLabel: TermsAndConditionsWithLabel,
10844
10937
  MultipleCheckboxes: MultipleCheckboxes,
10845
10938
  OptionalCheckboxes: OptionalCheckboxes,
@@ -10849,7 +10942,7 @@ const UseCheckboxField = /*#__PURE__*/Object.freeze({
10849
10942
  const DropdownField_stories = {
10850
10943
  title: "Components/Dropdown Field",
10851
10944
  };
10852
- const defaultProps$b = {
10945
+ const defaultProps$c = {
10853
10946
  states: {
10854
10947
  registrationFormState: {},
10855
10948
  },
@@ -10864,24 +10957,24 @@ const defaultProps$b = {
10864
10957
  ],
10865
10958
  },
10866
10959
  };
10867
- const Default$d = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$b))));
10868
- const CustomLabel$1 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$b, { content: {
10869
- ...defaultProps$b.content,
10960
+ const Default$e = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$c))));
10961
+ const CustomLabel$1 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$c, { content: {
10962
+ ...defaultProps$c.content,
10870
10963
  dropdownLabel: "Pick your favorite",
10871
10964
  } }))));
10872
- const Error$5 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$b, { states: {
10873
- ...defaultProps$b.states,
10965
+ const Error$5 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$c, { states: {
10966
+ ...defaultProps$c.states,
10874
10967
  registrationFormState: {
10875
10968
  validationErrors: {
10876
10969
  options: "Must select an option",
10877
10970
  },
10878
10971
  },
10879
10972
  } }))));
10880
- const CustomError$1 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$b, { content: {
10881
- ...defaultProps$b.content,
10973
+ const CustomError$1 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFieldView, Object.assign({}, defaultProps$c, { content: {
10974
+ ...defaultProps$c.content,
10882
10975
  errorMessage: "An option must be selected to continue",
10883
10976
  }, states: {
10884
- ...defaultProps$b.states,
10977
+ ...defaultProps$c.states,
10885
10978
  registrationFormState: {
10886
10979
  validationErrors: {
10887
10980
  options: "Must select an option",
@@ -10892,7 +10985,7 @@ const CustomError$1 = createHookStory(() => (index.h(ShadowViewAddon.DropdownFie
10892
10985
  const DropdownField = /*#__PURE__*/Object.freeze({
10893
10986
  __proto__: null,
10894
10987
  'default': DropdownField_stories,
10895
- Default: Default$d,
10988
+ Default: Default$e,
10896
10989
  CustomLabel: CustomLabel$1,
10897
10990
  Error: Error$5,
10898
10991
  CustomError: CustomError$1
@@ -10957,15 +11050,15 @@ const UseDropdownField = /*#__PURE__*/Object.freeze({
10957
11050
  MissingName: MissingName$1
10958
11051
  });
10959
11052
 
10960
- 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 | |";
11053
+ 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 | |";
10961
11054
 
10962
11055
  const InputField_stories = {
10963
11056
  title: "Components/Input Field",
10964
11057
  parameters: {
10965
- scenario: scenario$k,
11058
+ scenario: scenario$l,
10966
11059
  },
10967
11060
  };
10968
- const defaultProps$c = {
11061
+ const defaultProps$d = {
10969
11062
  states: {
10970
11063
  registrationFormState: {
10971
11064
  validationErrors: {},
@@ -11002,21 +11095,21 @@ const defaultRegisterProps$1 = {
11002
11095
  invalidEmailErrorMessage: "Must be a valid email address",
11003
11096
  },
11004
11097
  };
11005
- const Default$e = () => index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c));
11006
- const CustomLabel$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: { ...defaultProps$c.content, fieldLabel: "My Label" } })));
11007
- const Error$6 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { states: {
11008
- ...defaultProps$c.states,
11098
+ const Default$f = () => index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$d));
11099
+ const CustomLabel$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$d, { content: { ...defaultProps$d.content, fieldLabel: "My Label" } })));
11100
+ const Error$6 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$d, { states: {
11101
+ ...defaultProps$d.states,
11009
11102
  registrationFormState: {
11010
11103
  validationErrors: {
11011
11104
  field: "Cannot be empty",
11012
11105
  },
11013
11106
  },
11014
11107
  } })));
11015
- const CustomError$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
11016
- ...defaultProps$c.content,
11108
+ const CustomError$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$d, { content: {
11109
+ ...defaultProps$d.content,
11017
11110
  errorMessage: "A value must be entered to continue",
11018
11111
  }, states: {
11019
- ...defaultProps$c.states,
11112
+ ...defaultProps$d.states,
11020
11113
  registrationFormState: {
11021
11114
  validationErrors: {
11022
11115
  field: "Cannot be empty",
@@ -11024,27 +11117,27 @@ const CustomError$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assi
11024
11117
  },
11025
11118
  } })));
11026
11119
  const DateType = () => {
11027
- return (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
11028
- ...defaultProps$c.content,
11120
+ return (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$d, { content: {
11121
+ ...defaultProps$d.content,
11029
11122
  fieldLabel: "Date",
11030
11123
  fieldType: "date",
11031
11124
  } })));
11032
11125
  };
11033
11126
  const TelType = () => {
11034
- return (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
11035
- ...defaultProps$c.content,
11127
+ return (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$d, { content: {
11128
+ ...defaultProps$d.content,
11036
11129
  fieldLabel: "Phone Number",
11037
11130
  fieldType: "tel",
11038
11131
  } })));
11039
11132
  };
11040
11133
  const RegistrationField = () => (index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultRegisterProps$1, { content: {
11041
11134
  ...defaultRegisterProps$1.content,
11042
- formData: index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c)),
11135
+ formData: index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$d)),
11043
11136
  } })));
11044
11137
  const RegistrationFieldCustomLabel = () => (index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultRegisterProps$1, { content: {
11045
11138
  ...defaultRegisterProps$1.content,
11046
- formData: (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
11047
- ...defaultProps$c.content,
11139
+ formData: (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$d, { content: {
11140
+ ...defaultProps$d.content,
11048
11141
  fieldLabel: "Data",
11049
11142
  } }))),
11050
11143
  } })));
@@ -11052,7 +11145,7 @@ const RegistrationFieldCustomLabel = () => (index.h(ShadowViewAddon.PortalRegist
11052
11145
  const InputField = /*#__PURE__*/Object.freeze({
11053
11146
  __proto__: null,
11054
11147
  'default': InputField_stories,
11055
- Default: Default$e,
11148
+ Default: Default$f,
11056
11149
  CustomLabel: CustomLabel$2,
11057
11150
  Error: Error$6,
11058
11151
  CustomError: CustomError$2,
@@ -11065,7 +11158,7 @@ const InputField = /*#__PURE__*/Object.freeze({
11065
11158
  const UseInputField_stories = {
11066
11159
  title: "Hooks / useInputField",
11067
11160
  parameters: {
11068
- scenario: scenario$k,
11161
+ scenario: scenario$l,
11069
11162
  },
11070
11163
  };
11071
11164
  function setupGraphQL$b() {
@@ -11147,12 +11240,12 @@ const UseInputField = /*#__PURE__*/Object.freeze({
11147
11240
  MissingName: MissingName$2
11148
11241
  });
11149
11242
 
11150
- 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 |";
11243
+ 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 |";
11151
11244
 
11152
11245
  const RewardExchangeList_stories = {
11153
11246
  title: "Components/Reward Exchange List",
11154
11247
  parameters: {
11155
- scenario: scenario$l,
11248
+ scenario: scenario$m,
11156
11249
  },
11157
11250
  };
11158
11251
  const StoryBase = (props) => () => {
@@ -11200,12 +11293,12 @@ const RewardExchangeList = /*#__PURE__*/Object.freeze({
11200
11293
  Empty: Empty$2
11201
11294
  });
11202
11295
 
11203
- 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";
11296
+ 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";
11204
11297
 
11205
11298
  const ProgramExplainer_stories = {
11206
11299
  title: "Components/Program Explainer",
11207
11300
  parameters: {
11208
- scenario: scenario$m,
11301
+ scenario: scenario$n,
11209
11302
  },
11210
11303
  };
11211
11304
  const OneStep = () => {
@@ -11261,12 +11354,12 @@ const ProgramExplainer = /*#__PURE__*/Object.freeze({
11261
11354
  ProgramExplainerGeneric: ProgramExplainerGeneric
11262
11355
  });
11263
11356
 
11264
- 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";
11357
+ 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";
11265
11358
 
11266
11359
  const ProgramExplainerStep_stories = {
11267
11360
  title: "Components/Program Explainer Step",
11268
11361
  parameters: {
11269
- scenario: scenario$n,
11362
+ scenario: scenario$o,
11270
11363
  },
11271
11364
  };
11272
11365
  const ProgramExplainerStep = () => {
@@ -11283,12 +11376,12 @@ const ProgramExplainerStep$1 = /*#__PURE__*/Object.freeze({
11283
11376
  ProgramExplainerStepCustom: ProgramExplainerStepCustom
11284
11377
  });
11285
11378
 
11286
- 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\"";
11379
+ 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\"";
11287
11380
 
11288
11381
  const SqmBrand_stories = {
11289
11382
  title: "Components/Brand",
11290
11383
  parameters: {
11291
- scenario: scenario$o,
11384
+ scenario: scenario$p,
11292
11385
  },
11293
11386
  };
11294
11387
  const SampleComponents = () => (index.h("div", { style: { padding: "10px", border: "5px solid #EEE" } },
@@ -11389,12 +11482,12 @@ const BrandStories = /*#__PURE__*/Object.freeze({
11389
11482
  Fonts: Fonts
11390
11483
  });
11391
11484
 
11392
- 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 |";
11485
+ 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 |";
11393
11486
 
11394
11487
  const CardFeed_stories = {
11395
11488
  title: "Components/Card Feed",
11396
11489
  parameters: {
11397
- scenario: scenario$p,
11490
+ scenario: scenario$q,
11398
11491
  },
11399
11492
  };
11400
11493
  const oneAction$1 = {
@@ -11631,12 +11724,12 @@ const CardFeed = /*#__PURE__*/Object.freeze({
11631
11724
  CardFeedGeneric: CardFeedGeneric
11632
11725
  });
11633
11726
 
11634
- 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";
11727
+ 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";
11635
11728
 
11636
11729
  const PortalContainer_stories = {
11637
11730
  title: "Components/Microsite Container",
11638
11731
  parameters: {
11639
- scenario: scenario$q,
11732
+ scenario: scenario$r,
11640
11733
  },
11641
11734
  };
11642
11735
  const TooWideColumn = () => (index.h("div", { style: { width: "200px", border: "1px dashed grey" } },
@@ -11802,13 +11895,13 @@ const scenario2 = "@author:derek\n@owner:derek\nFeature: Reward Table reward Col
11802
11895
 
11803
11896
  const scenario3 = "@author:derek @owner:derek\nFeature: Reward Table Status Column\n Shows the status of each reward\n\n Background: \n Given the status column is included in the reward table\n\n @motivating @ui\n Scenario Outline: The title of the status column is configurable\n Given the \"column-title\" prop is set to <value>\n Then the status column is shown with <columnTitle>\n\n Examples: \n | value | columnTitle |\n | Status | |\n | My column title | My column title |\n\n @motivating @ui\n Scenario Outline: The status column displays the status of each reward\n Given a user\n And they have a <status> reward\n When they view the reward table\n Then the status of their reward is displayed in <pillColour> pill with <text>\n\n Examples: \n | status | text | pillColour |\n | AVAILABLE | Available | Green |\n | CANCELLED | Cancelled | Red |\n | PENDING | Pending | Orange |\n | EXPIRED | Expired | Red |\n | REDEEMED | Redeemed | Blue |\n | PENDING_REVIEW | Pending | Orange |\n | PAYOUT_TRANSFERRED | Payout Approved | blue |\n | PAYOUT_NOT_YET_DUE | Payout Approved | blue |\n | PAYOUT_OVERDUE | Payout Failed | Red |\n | PAYOUT_REVERSED | Payout Cancelled | Red |\n | PENDING_TAX_REVIEW | Pending | Orange |\n | PENDING_NEW_TAX_FORM | Pending | Orange |\n | PENDING_TAX_SUBMISSION | Pending | Orange |\n | PENDING_PARTNER_CREATION | Pending | Orange |\n | DENIED | Denied | Red |\n\n @motivating\n Scenario Outline: Reward status related information is displayed under status pills\n Given a user\n And they have a <reward>\n And their program is\n When they view the reward table\n Then they see their reward\n And under the pill is <text>\n And the date is localized to the users locale\n\n Examples: \n | reward | text |\n | available reward with an expiry date | localized expiry date in format \"Month-Day-Year\" |\n | redeemed reward | localized redemption date in format \"Month-Day-Year\" |\n | expired reward | localized expired date in format \"Month-Day-Year\" |\n | cancelled reward | localized cancelled date in format \"Month-Day-Year\" |\n | pending reward with a end date | localized pending for date in format \"Month-Day-Year\" |\n | pending reward due to W9 | W-9 required |\n | pending reward due to fufillment error | Fulfillment error |\n | reward pending review of referral | Pending review |\n | pending reward due to no connected Impact partner | Complete your tax and cash payout setup to receive your rewards. |\n | pending reward due to an invalid tax document | Invalid tax form. Submit a new form to receive your rewards. |\n | pending reward due to user required to submit a tax document | Submit your tax documents to receive your rewards. |\n | pending reward due to tax document being in review | Awaiting tax form review. |\n | reward whose payout failed | Payout failed due to a fulfillment issue and is currently being retried. |\n | reward whose payout was approved | Reward approved for payout and was scheduled for payment based on your settings. |\n | reward whose payout was cancelled | If you think this is a mistake, contact our Support team. |\n | cancelled reward from denied referral | Flagged as fraud |\n\n @minutia\n Scenario Outline: Tax-related reward statuses are based on the user's Impact tax connection\n Given a user\n And they are in a program that has Impact tax handling enabled\n And they have at least one pending reward\n And the reward's pending reasons include \"PAYOUT_CONFIGURATION_MISSING\"\n Then the status description will be\n \"\"\"\n Complete your tax and cash payout setup to receive your rewards.\n \"\"\"\n\n @motivating\n Scenario Outline: Statuses can be customized\n Given the \"status-text\" prop is \"{status, select, AVAILABLE {Redeem me!} CANCELLED {Unavailable} PENDING {Coming soon!} EXPIRED {Past due} REDEEMED {Spent} PENDING_REVIEW {Pending Review!} PAYOUT_SENT {Payout Sent!} PAYOUT_FAILED {Payout Failed!} PENDING_TAX_REVIEW {Pending Tax Review!} PENDING_NEW_TAX_FORM {Pending new tax form!} PENDING_TAX_SUBMISSION {Pending tax submission!} PENDING_PARTNER_CREATION {Pending partner creation!} DENIED {Unlucky!}}\"\n And a user\n And they have a <status> reward\n When they view the reward table\n Then the status of their reward is displayed in <pillColour> pill with <text>\n\n Examples: \n | status | text | pillColour |\n | AVAILABLE | Redeem me! | Green |\n | CANCELLED | Unavailable | Red |\n | PENDING | Coming soon! | Orange |\n | EXPIRED | Past due | Red |\n | REDEEMED | Spent | Blue |\n | PENDING_REVIEW | Pending Review! | Orange |\n | PAYOUT_TRANSFERRED | Payout Approved! | Blue |\n | PAYOUT_NOT_YET_DUE | Payout Approved! | Blue |\n | PAYOUT_OVERDUE | Payout Failed! | Red |\n | PAYOUT_REVERSED | Payout Cancelled! | Red |\n | DENIED | Unlucky! | Red |\n\n @minutia @ui\n Scenario: Expiry status date text can be configured\n Given the \"expiry-text\" prop has <value>\n And a user with an available reward with an expiry date\n When they view the reward table\n Then they see <text> under the Available Status pill\n\n Examples: \n | value | text |\n | | Expires on <EXPIRY DATE> |\n | Redeem before | Redeem before <EXPIRY DATE> |\n";
11804
11897
 
11805
- 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";
11898
+ 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# AL: TODO DELETED REFERRAL SPEC\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";
11806
11899
 
11807
- const scenario$r = scenario1 + scenario2 + scenario3 + scenario4;
11900
+ const scenario$s = scenario1 + scenario2 + scenario3 + scenario4;
11808
11901
  const RewardsTableCell_stories = {
11809
11902
  title: "Components/Rewards Table Cell",
11810
11903
  parameters: {
11811
- scenario: scenario$r,
11904
+ scenario: scenario$s,
11812
11905
  },
11813
11906
  };
11814
11907
  const rewardsData$1 = {
@@ -12025,7 +12118,9 @@ const SourceCellDeletedUser = () => {
12025
12118
  return (index.h("sqm-rewards-table-source-cell", { reward: { ...rewardsData$1, ...referral(null) }, referralText: "Referral to", deletedUserText: "Deleted User" }));
12026
12119
  };
12027
12120
  const SourceCellDeletedReferral = () => {
12028
- return (index.h("sqm-rewards-table-source-cell", {
12121
+ return (
12122
+ // AL: TODO
12123
+ index.h("sqm-rewards-table-source-cell", {
12029
12124
  //@ts-ignore
12030
12125
  reward: { ...rewardsData$1, ...deletedReferral() }, referralText: "Referral to", deletedReferralText: "Deleted Referral" }));
12031
12126
  };
@@ -12255,12 +12350,12 @@ const RewardsTableCell = /*#__PURE__*/Object.freeze({
12255
12350
  EmptyCell: EmptyCell$2
12256
12351
  });
12257
12352
 
12258
- 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";
12353
+ 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";
12259
12354
 
12260
12355
  const RewardsTable_stories = {
12261
12356
  title: "Components/Rewards Table",
12262
12357
  parameters: {
12263
- scenario: scenario$s,
12358
+ scenario: scenario$t,
12264
12359
  },
12265
12360
  };
12266
12361
  const loadingElement$1 = (index.h("div", { slot: "loading", style: { display: "contents" } },
@@ -12572,12 +12667,12 @@ const UseReferralTable = /*#__PURE__*/Object.freeze({
12572
12667
  ReferralTableFr: ReferralTableFr
12573
12668
  });
12574
12669
 
12575
- 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 |";
12670
+ 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 |";
12576
12671
 
12577
12672
  const HeroImage_stories = {
12578
12673
  title: "Components/Hero Image",
12579
12674
  parameters: {
12580
- scenario: scenario$t,
12675
+ scenario: scenario$u,
12581
12676
  },
12582
12677
  };
12583
12678
  const OverlayHeader = () => {
@@ -12650,12 +12745,12 @@ const HeroImage = /*#__PURE__*/Object.freeze({
12650
12745
  ColumnsCustomColors: ColumnsCustomColors
12651
12746
  });
12652
12747
 
12653
- 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 |";
12748
+ 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 |";
12654
12749
 
12655
12750
  const ReferralCard_stories = {
12656
12751
  title: "Components/Referral Card",
12657
12752
  parameters: {
12658
- scenario: scenario$u,
12753
+ scenario: scenario$v,
12659
12754
  },
12660
12755
  };
12661
12756
  const media = (slot) => {
@@ -12673,21 +12768,6 @@ const sharebutton = (slot) => {
12673
12768
  index.h("sqm-share-button", { medium: "facebook" }, "Share on Facebook"),
12674
12769
  index.h("sqm-share-button", { medium: "twitter" }, "Post about us on X"))));
12675
12770
  };
12676
- const shareButtonsWithPromoCodes = (slot) => {
12677
- return (index.h("sqm-portal-container", { gap: "large", slot: slot },
12678
- index.h("sqm-text", null, "Choose how you want to share:"),
12679
- index.h("sqm-text", null,
12680
- index.h("sub", null, "Share with your friends:"),
12681
- index.h("sqm-share-code", null),
12682
- index.h("sqm-share-link", null)),
12683
- index.h("sqm-portal-container", { gap: "x-small" },
12684
- index.h("sqm-share-button", { medium: "email" }, "Share via email"),
12685
- index.h("sqm-share-button", { medium: "facebook" }, "Share on Facebook"),
12686
- index.h("sqm-share-button", { medium: "twitter" }, "Post about us on X"),
12687
- index.h("sqm-portal-container", { gap: "x-small" },
12688
- index.h("span", { style: { textAlign: "center", color: "var(--sl-color-gray-500)" } }, "You have copied this code before"),
12689
- index.h("sqm-pagination", null)))));
12690
- };
12691
12771
  const timeline = (slot, count) => {
12692
12772
  return (index.h("sqm-timeline", { slot: slot, icon: "circle" },
12693
12773
  count > 0 && (index.h("sqm-timeline-entry", { reward: "75", unit: "points", desc: "Your friends signs up for a free trial" })),
@@ -12710,11 +12790,6 @@ const TimelineAndShareButtons = () => {
12710
12790
  timeline("left", 3),
12711
12791
  sharebutton("right")));
12712
12792
  };
12713
- const OneTimeUsePromoCodes = () => {
12714
- return (index.h("sqm-referral-card", null,
12715
- timeline("left", 4),
12716
- shareButtonsWithPromoCodes("right")));
12717
- };
12718
12793
  const StartAlignment = () => {
12719
12794
  return (index.h("sqm-referral-card", { "vertical-alignment": "start" },
12720
12795
  timeline("left", 4),
@@ -12791,7 +12866,6 @@ const ReferralCard = /*#__PURE__*/Object.freeze({
12791
12866
  ImageAndShareButtons: ImageAndShareButtons,
12792
12867
  LimitWidth: LimitWidth,
12793
12868
  TimelineAndShareButtons: TimelineAndShareButtons,
12794
- OneTimeUsePromoCodes: OneTimeUsePromoCodes,
12795
12869
  StartAlignment: StartAlignment,
12796
12870
  CenterAlignment: CenterAlignment,
12797
12871
  EndAlignment: EndAlignment,
@@ -12809,11 +12883,11 @@ const scenarioTimeline = "@author:derek\n@owner:kutay\nFeature: Timeline\n\n
12809
12883
 
12810
12884
  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";
12811
12885
 
12812
- const scenario$v = scenarioTimeline + scenarioTimelineEntry;
12886
+ const scenario$w = scenarioTimeline + scenarioTimelineEntry;
12813
12887
  const Timeline_stories = {
12814
12888
  title: "Components/Timeline",
12815
12889
  parameters: {
12816
- scenario: scenario$v,
12890
+ scenario: scenario$w,
12817
12891
  },
12818
12892
  };
12819
12893
  const TimelineWith1Reward = () => {
@@ -12886,12 +12960,12 @@ const Timeline = /*#__PURE__*/Object.freeze({
12886
12960
  TimelineWith4Rewards: TimelineWith4Rewards
12887
12961
  });
12888
12962
 
12889
- 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";
12963
+ 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";
12890
12964
 
12891
12965
  const Image_stories = {
12892
12966
  title: "Components/Image",
12893
12967
  parameters: {
12894
- scenario: scenario$w,
12968
+ scenario: scenario$x,
12895
12969
  },
12896
12970
  };
12897
12971
  const Image = () => {
@@ -12924,12 +12998,12 @@ const Image$1 = /*#__PURE__*/Object.freeze({
12924
12998
  MinimumHeight: MinimumHeight
12925
12999
  });
12926
13000
 
12927
- 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 |";
13001
+ 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 |";
12928
13002
 
12929
13003
  const TitledSection_stories = {
12930
13004
  title: "Components/Titled Section",
12931
13005
  parameters: {
12932
- scenario: scenario$x,
13006
+ scenario: scenario$y,
12933
13007
  },
12934
13008
  };
12935
13009
  const AlignLeft = () => {
@@ -13325,12 +13399,12 @@ const Scroll = /*#__PURE__*/Object.freeze({
13325
13399
  ShoelaceProps: ShoelaceProps
13326
13400
  });
13327
13401
 
13328
- 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";
13402
+ 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";
13329
13403
 
13330
13404
  const Tabs_stories = {
13331
13405
  title: "Components/Tabs",
13332
13406
  parameters: {
13333
- scenario: scenario$y,
13407
+ scenario: scenario$z,
13334
13408
  },
13335
13409
  };
13336
13410
  const SimpleTabs = () => (index.h("div", { style: { maxWidth: "700px", margin: "auto" }, innerHTML: `
@@ -13830,12 +13904,12 @@ const Tabs = /*#__PURE__*/Object.freeze({
13830
13904
  RightTabs: RightTabs
13831
13905
  });
13832
13906
 
13833
- 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";
13907
+ 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";
13834
13908
 
13835
13909
  const ShareCode_stories = {
13836
13910
  title: "Components/Share Code",
13837
13911
  parameters: {
13838
- scenario: scenario$z,
13912
+ scenario: scenario$A,
13839
13913
  },
13840
13914
  };
13841
13915
  const ShareCode = () => {
@@ -13854,7 +13928,7 @@ const CustomTooltipDuration = () => {
13854
13928
  return (index.h("sqm-share-code", { tooltiplifespan: 5000, tooltiptext: "CUSTOM TOOLTIP TEXT" }));
13855
13929
  };
13856
13930
  const CopyButton$1 = () => {
13857
- return (index.h(copyTextView.CopyTextView, Object.assign({}, {
13931
+ return (index.h(ShadowViewAddon.CopyTextView, Object.assign({}, {
13858
13932
  copyString: "https://noah.example.com",
13859
13933
  open: false,
13860
13934
  tooltiptext: "Copied!",
@@ -13862,7 +13936,7 @@ const CopyButton$1 = () => {
13862
13936
  })));
13863
13937
  };
13864
13938
  const CopyButtonBelow$1 = () => {
13865
- return (index.h(copyTextView.CopyTextView, Object.assign({}, {
13939
+ return (index.h(ShadowViewAddon.CopyTextView, Object.assign({}, {
13866
13940
  copyString: "https://noah.example.com",
13867
13941
  open: false,
13868
13942
  tooltiptext: "Copied!",
@@ -13877,7 +13951,7 @@ const Error$7 = () => {
13877
13951
  tooltiptext: "Copied!",
13878
13952
  error: true,
13879
13953
  };
13880
- return index.h(copyTextView.CopyTextView, Object.assign({}, props));
13954
+ return index.h(ShadowViewAddon.CopyTextView, Object.assign({}, props));
13881
13955
  };
13882
13956
 
13883
13957
  const ShareCode$1 = /*#__PURE__*/Object.freeze({
@@ -13893,82 +13967,6 @@ const ShareCode$1 = /*#__PURE__*/Object.freeze({
13893
13967
  Error: Error$7
13894
13968
  });
13895
13969
 
13896
- 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";
13897
-
13898
- const ReferralCode_stories = {
13899
- title: "Components/Referral Code",
13900
- parameters: {
13901
- scenario: scenario$A,
13902
- },
13903
- };
13904
- const ReferralCode = () => {
13905
- return (index.h("sqm-referral-code", { tooltiptext: "Copied to Clipboard" }));
13906
- };
13907
- const ShowNotificationText = () => {
13908
- return (index.h("sqm-referral-code", { showNotificationText: true, notificationText: "You've copied this code before" }));
13909
- };
13910
- const ShowNotificationTextWithButton = () => {
13911
- return (index.h("sqm-referral-code", { showNotificationText: true, notificationText: "You've copied this code before", buttonStyle: "button-outside" }));
13912
- };
13913
- const ShowNotificationTextWithButtonBelow = () => {
13914
- return (index.h("sqm-referral-code", { showNotificationText: true, notificationText: "You've copied this code before", buttonStyle: "button-below" }));
13915
- };
13916
- const CustomTooltipText$1 = () => {
13917
- return (index.h("sqm-referral-code", { tooltiptext: "CUSTOM TOOLTIP TEXT" }));
13918
- };
13919
- const TextAlignCenter$2 = () => {
13920
- return index.h("sqm-referral-code", { textAlign: "center" });
13921
- };
13922
- const TextAlignRight$2 = () => {
13923
- return index.h("sqm-referral-code", { textAlign: "right" });
13924
- };
13925
- const CustomTooltipDuration$1 = () => {
13926
- return (index.h("sqm-referral-code", { tooltiplifespan: 5000, tooltiptext: "CUSTOM TOOLTIP TEXT" }));
13927
- };
13928
- const CopyButton$2 = () => {
13929
- return (index.h(copyTextView.CopyTextView, Object.assign({}, {
13930
- copyString: "https://noah.example.com",
13931
- open: false,
13932
- tooltiptext: "Copied!",
13933
- isCopyIcon: false,
13934
- buttonStyle: "button-outside",
13935
- })));
13936
- };
13937
- const CopyButtonBelow$2 = () => {
13938
- return (index.h(copyTextView.CopyTextView, Object.assign({}, {
13939
- copyString: "https://noah.example.com",
13940
- open: false,
13941
- tooltiptext: "Copied!",
13942
- buttonStyle: "button-below",
13943
- })));
13944
- };
13945
- const Error$8 = () => {
13946
- const props = {
13947
- copyString: "https://noah.example.com",
13948
- disabled: true,
13949
- open: true,
13950
- tooltiptext: "Copied!",
13951
- error: true,
13952
- };
13953
- return index.h(copyTextView.CopyTextView, Object.assign({}, props));
13954
- };
13955
-
13956
- const ReferralCode$1 = /*#__PURE__*/Object.freeze({
13957
- __proto__: null,
13958
- 'default': ReferralCode_stories,
13959
- ReferralCode: ReferralCode,
13960
- ShowNotificationText: ShowNotificationText,
13961
- ShowNotificationTextWithButton: ShowNotificationTextWithButton,
13962
- ShowNotificationTextWithButtonBelow: ShowNotificationTextWithButtonBelow,
13963
- CustomTooltipText: CustomTooltipText$1,
13964
- TextAlignCenter: TextAlignCenter$2,
13965
- TextAlignRight: TextAlignRight$2,
13966
- CustomTooltipDuration: CustomTooltipDuration$1,
13967
- CopyButton: CopyButton$2,
13968
- CopyButtonBelow: CopyButtonBelow$2,
13969
- Error: Error$8
13970
- });
13971
-
13972
13970
  // import scenario from "./ShareCode.feature";
13973
13971
  const EmailRegistration_stories = {
13974
13972
  title: "Components/Email Registration",
@@ -13976,7 +13974,7 @@ const EmailRegistration_stories = {
13976
13974
  // scenario,
13977
13975
  },
13978
13976
  };
13979
- const defaultProps$d = {
13977
+ const defaultProps$e = {
13980
13978
  states: {
13981
13979
  error: "",
13982
13980
  loading: false,
@@ -13995,59 +13993,59 @@ const defaultProps$d = {
13995
13993
  fraudErrorMessageTitle: "Looks like you tried referring yourself",
13996
13994
  },
13997
13995
  };
13998
- const Default$f = () => index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, defaultProps$d));
13996
+ const Default$g = () => index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, defaultProps$e));
13999
13997
  const HasFirstNameLastName = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14000
- ...defaultProps$d,
13998
+ ...defaultProps$e,
14001
13999
  content: {
14002
- ...defaultProps$d.content,
14000
+ ...defaultProps$e.content,
14003
14001
  includeName: true,
14004
14002
  },
14005
14003
  })));
14006
14004
  const WithSlots = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14007
- ...defaultProps$d,
14005
+ ...defaultProps$e,
14008
14006
  content: {
14009
- ...defaultProps$d.content,
14007
+ ...defaultProps$e.content,
14010
14008
  topSlot: index.h("div", null, "Hello this is the top slot"),
14011
14009
  bottomSlot: index.h("div", null, "Hello this is the bottom slot"),
14012
14010
  },
14013
14011
  })));
14014
14012
  const NoBorder$1 = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14015
- ...defaultProps$d,
14013
+ ...defaultProps$e,
14016
14014
  content: {
14017
- ...defaultProps$d.content,
14015
+ ...defaultProps$e.content,
14018
14016
  hideBorder: true,
14019
14017
  },
14020
14018
  })));
14021
14019
  const BackgroundColor$2 = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14022
- ...defaultProps$d,
14020
+ ...defaultProps$e,
14023
14021
  content: {
14024
- ...defaultProps$d.content,
14022
+ ...defaultProps$e.content,
14025
14023
  backgroundColor: "aquamarine",
14026
14024
  },
14027
14025
  })));
14028
14026
  const Loading$4 = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14029
- ...defaultProps$d,
14027
+ ...defaultProps$e,
14030
14028
  states: {
14031
14029
  error: "",
14032
14030
  loading: true,
14033
14031
  },
14034
14032
  })));
14035
- const Error$9 = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14036
- ...defaultProps$d,
14033
+ const Error$8 = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14034
+ ...defaultProps$e,
14037
14035
  states: {
14038
14036
  error: "Something went wrong. Please try again.",
14039
14037
  loading: false,
14040
14038
  },
14041
14039
  })));
14042
14040
  const FraudError = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14043
- ...defaultProps$d,
14041
+ ...defaultProps$e,
14044
14042
  states: {
14045
14043
  error: "FRAUD",
14046
14044
  loading: false,
14047
14045
  },
14048
14046
  })));
14049
14047
  const EmptyEmailError = () => (index.h(emailRegistrationView.EmailRegistrationView, Object.assign({}, {
14050
- ...defaultProps$d,
14048
+ ...defaultProps$e,
14051
14049
  states: {
14052
14050
  error: "Something went wrong. Please try again.",
14053
14051
  loading: false,
@@ -14060,13 +14058,13 @@ const EmptyEmailError = () => (index.h(emailRegistrationView.EmailRegistrationVi
14060
14058
  const EmailRegistration = /*#__PURE__*/Object.freeze({
14061
14059
  __proto__: null,
14062
14060
  'default': EmailRegistration_stories,
14063
- Default: Default$f,
14061
+ Default: Default$g,
14064
14062
  HasFirstNameLastName: HasFirstNameLastName,
14065
14063
  WithSlots: WithSlots,
14066
14064
  NoBorder: NoBorder$1,
14067
14065
  BackgroundColor: BackgroundColor$2,
14068
14066
  Loading: Loading$4,
14069
- Error: Error$9,
14067
+ Error: Error$8,
14070
14068
  FraudError: FraudError,
14071
14069
  EmptyEmailError: EmptyEmailError
14072
14070
  });
@@ -14079,7 +14077,7 @@ const CouponCode_stories = {
14079
14077
  scenario: scenario$B,
14080
14078
  },
14081
14079
  };
14082
- const defaultProps$e = {
14080
+ const defaultProps$f = {
14083
14081
  tooltiptext: "Copied to Clipboard",
14084
14082
  copyString: "THANKSJANE125uv125",
14085
14083
  open: false,
@@ -14091,69 +14089,69 @@ const defaultProps$e = {
14091
14089
  const CouponCode = () => {
14092
14090
  return index.h("sqm-coupon-code", { tooltiptext: "Copied to Clipboard" });
14093
14091
  };
14094
- const CustomTooltipText$2 = () => {
14092
+ const CustomTooltipText$1 = () => {
14095
14093
  return index.h("sqm-coupon-code", { tooltiptext: "CUSTOM TOOLTIP TEXT" });
14096
14094
  };
14097
- const CustomTooltipDuration$2 = () => {
14095
+ const CustomTooltipDuration$1 = () => {
14098
14096
  return (index.h("sqm-coupon-code", { tooltiplifespan: 5000, tooltiptext: "CUSTOM TOOLTIP TEXT" }));
14099
14097
  };
14100
- const TextAlignCenter$3 = () => {
14098
+ const TextAlignCenter$2 = () => {
14101
14099
  return index.h("sqm-coupon-code", { textAlign: "center" });
14102
14100
  };
14103
- const TextAlignRight$3 = () => {
14101
+ const TextAlignRight$2 = () => {
14104
14102
  return index.h("sqm-coupon-code", { textAlign: "right" });
14105
14103
  };
14106
- const CopyButton$3 = () => {
14107
- return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$e, { buttonStyle: "button-outside" })));
14104
+ const CopyButton$2 = () => {
14105
+ return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$f, { buttonStyle: "button-outside" })));
14108
14106
  };
14109
14107
  const CopyButtonCustomLabel = () => {
14110
- return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$e, { buttonStyle: "button-outside", "copy-button-label": "test long custom label" })));
14108
+ return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$f, { buttonStyle: "button-outside", "copy-button-label": "test long custom label" })));
14111
14109
  };
14112
- const CopyButtonBelow$3 = () => {
14113
- return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$e, { buttonStyle: "button-below" })));
14110
+ const CopyButtonBelow$2 = () => {
14111
+ return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$f, { buttonStyle: "button-below" })));
14114
14112
  };
14115
14113
  const CopyButtonBelowCustomLabel = () => {
14116
- return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$e, { buttonStyle: "button-below", "copy-button-label": "test long custom label" })));
14114
+ return (index.h("sqm-coupon-code", Object.assign({}, defaultProps$f, { buttonStyle: "button-below", "copy-button-label": "test long custom label" })));
14117
14115
  };
14118
14116
  const Loading$5 = () => {
14119
- return index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { loading: true }));
14117
+ return index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$f, { loading: true }));
14120
14118
  };
14121
14119
  const CopyButtonLoading = () => {
14122
- return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { buttonStyle: "button-outside", loading: true })));
14120
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$f, { buttonStyle: "button-outside", loading: true })));
14123
14121
  };
14124
14122
  const CopyButtonBelowLoading = () => {
14125
- return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { buttonStyle: "button-below", loading: true })));
14123
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$f, { buttonStyle: "button-below", loading: true })));
14126
14124
  };
14127
14125
  const ErrorGeneric = () => {
14128
- 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." })));
14126
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$f, { 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." })));
14129
14127
  };
14130
14128
  const ErrorPending = () => {
14131
- 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!" })));
14129
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$f, { 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!" })));
14132
14130
  };
14133
14131
  const ErrorFullfillment = () => {
14134
- 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." })));
14132
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$f, { 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." })));
14135
14133
  };
14136
14134
  const ErrorCancelled = () => {
14137
- 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." })));
14135
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$f, { errorType: "warning", error: true, errorText: "This code has been cancelled. Please reach out to the Support team for help resolving this issue." })));
14138
14136
  };
14139
14137
  const ErrorExpired = () => {
14140
- 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." })));
14138
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$f, { errorType: "warning", error: true, errorText: "Looks like this code has expired. Please reach out to the Support team for help resolving this issue." })));
14141
14139
  };
14142
14140
  const ErrorRedeemed = () => {
14143
- return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$e, { errorType: "success", error: true, errorText: "Looks like you\u2019ve already redeemed this code." })));
14141
+ return (index.h(ShadowViewAddon.CouponCodeView, Object.assign({}, defaultProps$f, { errorType: "success", error: true, errorText: "Looks like you\u2019ve already redeemed this code." })));
14144
14142
  };
14145
14143
 
14146
14144
  const CouponCode$1 = /*#__PURE__*/Object.freeze({
14147
14145
  __proto__: null,
14148
14146
  'default': CouponCode_stories,
14149
14147
  CouponCode: CouponCode,
14150
- CustomTooltipText: CustomTooltipText$2,
14151
- CustomTooltipDuration: CustomTooltipDuration$2,
14152
- TextAlignCenter: TextAlignCenter$3,
14153
- TextAlignRight: TextAlignRight$3,
14154
- CopyButton: CopyButton$3,
14148
+ CustomTooltipText: CustomTooltipText$1,
14149
+ CustomTooltipDuration: CustomTooltipDuration$1,
14150
+ TextAlignCenter: TextAlignCenter$2,
14151
+ TextAlignRight: TextAlignRight$2,
14152
+ CopyButton: CopyButton$2,
14155
14153
  CopyButtonCustomLabel: CopyButtonCustomLabel,
14156
- CopyButtonBelow: CopyButtonBelow$3,
14154
+ CopyButtonBelow: CopyButtonBelow$2,
14157
14155
  CopyButtonBelowCustomLabel: CopyButtonBelowCustomLabel,
14158
14156
  Loading: Loading$5,
14159
14157
  CopyButtonLoading: CopyButtonLoading,
@@ -14174,21 +14172,21 @@ const LogoutCurrentUser_stories = {
14174
14172
  scenario: scenario$C,
14175
14173
  },
14176
14174
  };
14177
- const defaultProps$f = {
14175
+ const defaultProps$g = {
14178
14176
  filledInEmailText: "Currently showing referral data for noah.clarke@saasquatch.com",
14179
14177
  onSwitchClick: () => console.log("clicked"),
14180
14178
  switchUserText: "not you?",
14181
14179
  loading: false,
14182
14180
  emailErrorText: "Error fetching email",
14183
14181
  };
14184
- const Default$g = () => {
14185
- return index.h(sqmLogoutCurrentUserView.LogoutCurrentUserView, Object.assign({}, defaultProps$f));
14182
+ const Default$h = () => {
14183
+ return index.h(sqmLogoutCurrentUserView.LogoutCurrentUserView, Object.assign({}, defaultProps$g));
14186
14184
  };
14187
14185
 
14188
14186
  const LogoutCurrentUser = /*#__PURE__*/Object.freeze({
14189
14187
  __proto__: null,
14190
14188
  'default': LogoutCurrentUser_stories,
14191
- Default: Default$g
14189
+ Default: Default$h
14192
14190
  });
14193
14191
 
14194
14192
  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 |";
@@ -14199,22 +14197,22 @@ const LinkButton_stories = {
14199
14197
  scenario: scenario$D,
14200
14198
  },
14201
14199
  };
14202
- const defaultProps$g = {
14200
+ const defaultProps$h = {
14203
14201
  link: "https://example.com",
14204
14202
  openInNewTab: false,
14205
14203
  buttonText: "Button Text",
14206
14204
  };
14207
- const Default$h = () => {
14208
- return index.h("sqm-link-button", Object.assign({}, defaultProps$g));
14205
+ const Default$i = () => {
14206
+ return index.h("sqm-link-button", Object.assign({}, defaultProps$h));
14209
14207
  };
14210
14208
  const OpenInNewTab = () => {
14211
- return (index.h("sqm-link-button", Object.assign({}, { ...defaultProps$g, openInNewTab: true })));
14209
+ return (index.h("sqm-link-button", Object.assign({}, { ...defaultProps$h, openInNewTab: true })));
14212
14210
  };
14213
14211
 
14214
14212
  const LinkButton = /*#__PURE__*/Object.freeze({
14215
14213
  __proto__: null,
14216
14214
  'default': LinkButton_stories,
14217
- Default: Default$h,
14215
+ Default: Default$i,
14218
14216
  OpenInNewTab: OpenInNewTab
14219
14217
  });
14220
14218
 
@@ -14224,7 +14222,7 @@ const CloseButton_stories = {
14224
14222
  // scenario,
14225
14223
  },
14226
14224
  };
14227
- const defaultProps$h = {};
14225
+ const defaultProps$i = {};
14228
14226
  const containerStyles = {
14229
14227
  position: "relative",
14230
14228
  width: "500px",
@@ -14232,22 +14230,22 @@ const containerStyles = {
14232
14230
  border: "1px solid black",
14233
14231
  padding: "25px",
14234
14232
  };
14235
- const Default$i = () => {
14236
- return index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, defaultProps$h));
14233
+ const Default$j = () => {
14234
+ return index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, defaultProps$i));
14237
14235
  };
14238
14236
  const InAContainer = () => {
14239
14237
  return (index.h("div", { style: containerStyles },
14240
- index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, defaultProps$h))));
14238
+ index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, defaultProps$i))));
14241
14239
  };
14242
14240
  const CustomColor$1 = () => {
14243
14241
  return (index.h("div", { style: containerStyles },
14244
- index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, { ...defaultProps$h, color: "blue" }))));
14242
+ index.h(sqmCloseButtonView.CloseButtonView, Object.assign({}, { ...defaultProps$i, color: "blue" }))));
14245
14243
  };
14246
14244
 
14247
14245
  const CloseButton = /*#__PURE__*/Object.freeze({
14248
14246
  __proto__: null,
14249
14247
  'default': CloseButton_stories,
14250
- Default: Default$i,
14248
+ Default: Default$j,
14251
14249
  InAContainer: InAContainer,
14252
14250
  CustomColor: CustomColor$1
14253
14251
  });
@@ -14437,17 +14435,17 @@ const RadioCardView = ({ title, icon, description, selected, }) => {
14437
14435
  const RadioCard_stories = {
14438
14436
  title: "Components/Radio Card",
14439
14437
  };
14440
- const defaultProps$i = {
14438
+ const defaultProps$j = {
14441
14439
  selected: false,
14442
14440
  title: "Card Title",
14443
14441
  description: "Description text goes here",
14444
14442
  icon: "apple",
14445
14443
  };
14446
14444
  const DefaultView$1 = () => {
14447
- return index.h(RadioCardView, Object.assign({}, defaultProps$i));
14445
+ return index.h(RadioCardView, Object.assign({}, defaultProps$j));
14448
14446
  };
14449
14447
  const Selected = () => {
14450
- return index.h(RadioCardView, Object.assign({}, defaultProps$i, { selected: true }));
14448
+ return index.h(RadioCardView, Object.assign({}, defaultProps$j, { selected: true }));
14451
14449
  };
14452
14450
 
14453
14451
  const RadioCard = /*#__PURE__*/Object.freeze({
@@ -14460,13 +14458,13 @@ const RadioCard = /*#__PURE__*/Object.freeze({
14460
14458
  const ProgressBar_stories = {
14461
14459
  title: "Components/Progress Bar",
14462
14460
  };
14463
- const defaultProps$j = {
14461
+ const defaultProps$k = {
14464
14462
  progress: 2,
14465
14463
  goal: 4,
14466
14464
  steps: true,
14467
14465
  };
14468
14466
  const TaxAndPayoutsProgressBar = () => {
14469
- return index.h(ShadowViewAddon.ProgressBar, Object.assign({}, defaultProps$j, { stageCount: 4, currentStage: 2 }));
14467
+ return index.h(ShadowViewAddon.ProgressBar, Object.assign({}, defaultProps$k, { stageCount: 4, currentStage: 2 }));
14470
14468
  };
14471
14469
 
14472
14470
  const ProgressBar$1 = /*#__PURE__*/Object.freeze({
@@ -14485,7 +14483,7 @@ const Loading$6 = () => {
14485
14483
  },
14486
14484
  } }));
14487
14485
  };
14488
- const Error$a = () => {
14486
+ const Error$9 = () => {
14489
14487
  return (index.h("sqm-payout-details-card", { demoData: {
14490
14488
  states: {
14491
14489
  error: true,
@@ -14526,7 +14524,7 @@ const PayoutDetailsCard = /*#__PURE__*/Object.freeze({
14526
14524
  __proto__: null,
14527
14525
  'default': PayoutDetailsCard_stories,
14528
14526
  Loading: Loading$6,
14529
- Error: Error$a,
14527
+ Error: Error$9,
14530
14528
  NextPayout: NextPayout,
14531
14529
  PayoutToday: PayoutToday,
14532
14530
  ThresholdPayout: ThresholdPayout,
@@ -15136,325 +15134,6 @@ const UseInvoiceTableCells = /*#__PURE__*/Object.freeze({
15136
15134
  InvoiceTableDemoHook: InvoiceTableDemoHook
15137
15135
  });
15138
15136
 
15139
- 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";
15140
-
15141
- const ReferralCodes_stories = {
15142
- title: "Components/Referral Codes",
15143
- parameters: {
15144
- scenario: scenario$E,
15145
- },
15146
- };
15147
- const demoData = {
15148
- titleText: "Start sharing",
15149
- emptyStateHeaderText: "Your new codes and links aren’t ready yet",
15150
- emptyStateDescriptionText: "Please contact our program support team to let them know you’re out of codes.",
15151
- emptyStateImageUrl: "https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png",
15152
- states: {
15153
- noCodes: false,
15154
- loading: false,
15155
- },
15156
- };
15157
- const pagination = (slot) => {
15158
- return index.h("sqm-pagination", { slot: slot });
15159
- };
15160
- const shareButtons = (slot) => {
15161
- return (index.h("sqm-portal-container", { gap: "small", slot: slot },
15162
- index.h("sqm-share-button", { medium: "email" }, "Share via email"),
15163
- index.h("sqm-share-button", { medium: "facebook" }, "Share on Facebook"),
15164
- index.h("sqm-share-button", { medium: "whatsapp" }, "Share on WhatsApp")));
15165
- };
15166
- const shareCodes = (slot) => {
15167
- return index.h("sqm-referral-code", { slot: slot });
15168
- };
15169
- const shareCodeWithPreviouslyCopied = (slot) => {
15170
- return (index.h("sqm-referral-code", { slot: slot, showNotificationText: true, notificationText: "You\u2019ve copied this before." }));
15171
- };
15172
- const ReferralCodes = () => {
15173
- return (index.h("sqm-referral-codes", null,
15174
- pagination("pagination"),
15175
- shareCodes("shareCodes"),
15176
- shareButtons("shareButtons")));
15177
- };
15178
- const WithPreviouslyCopiedCode = () => {
15179
- return (index.h("sqm-referral-codes", null,
15180
- pagination("pagination"),
15181
- shareCodeWithPreviouslyCopied("shareCodes"),
15182
- shareButtons("shareButtons")));
15183
- };
15184
- const Empty$3 = () => {
15185
- return (index.h("sqm-referral-codes", { demoData: { states: { ...demoData.states, noCodes: true } } },
15186
- pagination("pagination"),
15187
- shareCodes("shareCodes"),
15188
- shareButtons("shareButtons")));
15189
- };
15190
- const EmptyWithCustomTextAndImage = () => {
15191
- return (index.h("sqm-referral-codes", { emptyStateHeaderText: "Tus nuevos c\u00F3digos y enlaces a\u00FAn no est\u00E1n listos", emptyStateDescriptionText: "Comun\u00EDquese con nuestro equipo de soporte del programa para informarles que no tiene c\u00F3digos.", emptyStateImageUrl: "https://img.freepik.com/free-vector/hand-drawn-no-data-concept_52683-127829.jpg?t=st=1738890457~exp=1738894057~hmac=2f0f32c1f0fc051f47d772a4517e2e4c4f38af5069fb855edc96d8331d9d1329&w=826", demoData: {
15192
- states: { ...demoData.states, noCodes: true },
15193
- } },
15194
- pagination("pagination"),
15195
- shareCodes("shareCodes"),
15196
- shareButtons("shareButtons")));
15197
- };
15198
- const Loading$7 = () => {
15199
- return (index.h("sqm-referral-codes", { demoData: { states: { ...demoData.states, loading: true } } },
15200
- pagination("pagination"),
15201
- shareCodes("shareCodes"),
15202
- shareButtons("shareButtons")));
15203
- };
15204
-
15205
- const ReferralCodes$1 = /*#__PURE__*/Object.freeze({
15206
- __proto__: null,
15207
- 'default': ReferralCodes_stories,
15208
- ReferralCodes: ReferralCodes,
15209
- WithPreviouslyCopiedCode: WithPreviouslyCopiedCode,
15210
- Empty: Empty$3,
15211
- EmptyWithCustomTextAndImage: EmptyWithCustomTextAndImage,
15212
- Loading: Loading$7
15213
- });
15214
-
15215
- const BaseRegistrationForm_stories = {
15216
- title: "Components/Microsite Base Registration",
15217
- };
15218
- const defaultProps$k = {
15219
- states: {
15220
- error: "",
15221
- },
15222
- callbacks: {
15223
- handleEmailSubmit: () => console.log("Submit!"),
15224
- },
15225
- content: {
15226
- pageLabel: "Register",
15227
- requiredFieldErrorMessage: "Cannot be empty",
15228
- invalidEmailErrorMessage: "Must be a valid email address",
15229
- googleButton: index.h("sl-button", null, "Register with Google"),
15230
- secondaryButton: (index.h("span", null,
15231
- "Already have an account?",
15232
- " ",
15233
- index.h("sl-button", { padding: "0", style: { width: "60px" }, size: "large", type: "text" }, "Sign in"),
15234
- " ")),
15235
- },
15236
- };
15237
- const errorProps$9 = {
15238
- ...defaultProps$k,
15239
- states: {
15240
- error: "Something went wrong. Please try again.",
15241
- },
15242
- };
15243
- const Default$j = () => {
15244
- return index.h(sqmBaseRegistrationFormView.BaseRegistrationFormView, Object.assign({}, defaultProps$k));
15245
- };
15246
- const EmailError = () => {
15247
- return index.h(sqmBaseRegistrationFormView.BaseRegistrationFormView, Object.assign({}, errorProps$9));
15248
- };
15249
-
15250
- const BaseRegistrationForm = /*#__PURE__*/Object.freeze({
15251
- __proto__: null,
15252
- 'default': BaseRegistrationForm_stories,
15253
- Default: Default$j,
15254
- EmailError: EmailError
15255
- });
15256
-
15257
- const PortalRegistrationForm_stories = {
15258
- title: "Components/Microsite Portal Register",
15259
- };
15260
- const defaultProps$l = {
15261
- states: {
15262
- error: "",
15263
- loading: false,
15264
- confirmPassword: true,
15265
- hideInputs: false,
15266
- loginPath: "/login",
15267
- },
15268
- callbacks: {
15269
- submit: () => console.log("Submit!"),
15270
- inputFunction: () => { },
15271
- },
15272
- refs: {
15273
- formRef: {},
15274
- },
15275
- content: { pageLabel: "Register", confirmPasswordLabel: "Confirm Password" },
15276
- };
15277
- const errorProps$a = {
15278
- states: {
15279
- error: "Something went wrong. Please try again.",
15280
- loading: false,
15281
- confirmPassword: true,
15282
- hideInputs: false,
15283
- loginPath: "/login",
15284
- },
15285
- callbacks: {
15286
- submit: () => console.log("Submit!"),
15287
- inputFunction: () => { },
15288
- },
15289
- refs: {
15290
- formRef: {},
15291
- },
15292
- content: {
15293
- pageLabel: "Register",
15294
- confirmPasswordLabel: "Confirm Password",
15295
- },
15296
- };
15297
- const loadingProps$7 = {
15298
- states: {
15299
- error: "",
15300
- loading: true,
15301
- confirmPassword: true,
15302
- hideInputs: false,
15303
- loginPath: "/login",
15304
- },
15305
- callbacks: {
15306
- submit: () => console.log("Submit!"),
15307
- inputFunction: () => { },
15308
- },
15309
- refs: {
15310
- formRef: {},
15311
- },
15312
- content: { pageLabel: "Register", confirmPasswordLabel: "Confirm Password" },
15313
- };
15314
- const slottedProps$1 = {
15315
- states: {
15316
- error: "",
15317
- loading: false,
15318
- confirmPassword: true,
15319
- hideInputs: false,
15320
- loginPath: "/login",
15321
- },
15322
- callbacks: {
15323
- submit: () => console.log("Submit!"),
15324
- inputFunction: () => { },
15325
- },
15326
- refs: {
15327
- formRef: {},
15328
- },
15329
- content: {
15330
- pageLabel: "Register",
15331
- confirmPasswordLabel: "Confirm Password",
15332
- formData: (index.h("div", null,
15333
- index.h("sl-input", { style: { marginBottom: "var(--sl-spacing-x-large)" }, exportparts: "label: input-label, base: input-base", label: "Slotted Input", required: true }),
15334
- index.h("sl-input", { exportparts: "label: input-label, base: input-base", label: "Slotted Input 2", required: true }))),
15335
- },
15336
- };
15337
- const Default$k = () => index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$l));
15338
- const RegisterWithError$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, errorProps$a)));
15339
- const RegisterLoading$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, loadingProps$7)));
15340
- const FieldsHidden$1 = () => {
15341
- return (index.h("sqm-portal-register", { demoData: {
15342
- states: {
15343
- error: "",
15344
- loading: true,
15345
- registrationFormState: {},
15346
- confirmPassword: true,
15347
- hideInputs: true,
15348
- loginPath: "/login",
15349
- },
15350
- } }));
15351
- };
15352
- const SlottedInputs$1 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, slottedProps$1)));
15353
- const TermsAndConditions$3 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$l, { content: {
15354
- ...defaultProps$l.content,
15355
- terms: (index.h("p", null,
15356
- "By signing up you agree to the",
15357
- " ",
15358
- index.h("a", { href: "https://example.com", target: "_blank" }, "Terms and Conditions"))),
15359
- } })));
15360
-
15361
- const PortalRegistrationForm = /*#__PURE__*/Object.freeze({
15362
- __proto__: null,
15363
- 'default': PortalRegistrationForm_stories,
15364
- Default: Default$k,
15365
- RegisterWithError: RegisterWithError$1,
15366
- RegisterLoading: RegisterLoading$1,
15367
- FieldsHidden: FieldsHidden$1,
15368
- SlottedInputs: SlottedInputs$1,
15369
- TermsAndConditions: TermsAndConditions$3
15370
- });
15371
-
15372
- const PortalGoogleRegistrationForm_stories = {
15373
- title: "Components/Microsite Google Register",
15374
- };
15375
- const defaultProps$m = {
15376
- states: {
15377
- error: "",
15378
- loading: false,
15379
- confirmPassword: false,
15380
- hideInputs: false,
15381
- showNameFields: true,
15382
- loginPath: "/login",
15383
- hidePasswords: true,
15384
- registrationFormState: {
15385
- initialData: {
15386
- email: "testuser@example.com",
15387
- },
15388
- },
15389
- },
15390
- callbacks: {
15391
- submit: () => console.log("Submit!"),
15392
- inputFunction: () => { },
15393
- },
15394
- refs: {
15395
- formRef: {},
15396
- },
15397
- content: {
15398
- pageLabel: "Register",
15399
- passwordField: null,
15400
- formData: (index.h("div", null,
15401
- " ",
15402
- index.h("sl-input", { style: { marginBottom: "var(--sl-spacing-x-large)" }, exportparts: "label: input-label, base: input-base", label: "Slotted Input", required: true }),
15403
- index.h("sl-input", { exportparts: "label: input-label, base: input-base", label: "Slotted Input 2", required: true }))),
15404
- },
15405
- };
15406
- const errorProps$b = {
15407
- ...defaultProps$m,
15408
- states: {
15409
- error: "Something went wrong. Please try again.",
15410
- loading: false,
15411
- confirmPassword: false,
15412
- hideInputs: false,
15413
- loginPath: "/login",
15414
- hidePasswords: true,
15415
- registrationFormState: {
15416
- initialData: {
15417
- email: "testuser@example.com",
15418
- },
15419
- },
15420
- },
15421
- };
15422
- const loadingProps$8 = {
15423
- ...defaultProps$m,
15424
- states: {
15425
- error: "",
15426
- loading: true,
15427
- hideInputs: false,
15428
- loginPath: "/login",
15429
- confirmPassword: false,
15430
- hidePasswords: true,
15431
- registrationFormState: {
15432
- initialData: {
15433
- email: "testuser@example.com",
15434
- },
15435
- },
15436
- },
15437
- };
15438
- const Default$l = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$m)));
15439
- const RegisterWithError$2 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, errorProps$b)));
15440
- const RegisterLoading$2 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, loadingProps$8)));
15441
- const TermsAndConditions$4 = () => (index.h(sqmPortalRegistrationFormView.PortalRegistrationFormView, Object.assign({}, defaultProps$m, { content: {
15442
- ...defaultProps$m.content,
15443
- terms: (index.h("p", null,
15444
- "By signing up you agree to the",
15445
- " ",
15446
- index.h("a", { href: "https://example.com", target: "_blank" }, "Terms and Conditions"))),
15447
- } })));
15448
-
15449
- const PortalGoogleRegistrationFormStories = /*#__PURE__*/Object.freeze({
15450
- __proto__: null,
15451
- 'default': PortalGoogleRegistrationForm_stories,
15452
- Default: Default$l,
15453
- RegisterWithError: RegisterWithError$2,
15454
- RegisterLoading: RegisterLoading$2,
15455
- TermsAndConditions: TermsAndConditions$4
15456
- });
15457
-
15458
15137
  /**
15459
15138
  *
15460
15139
  * Themes
@@ -15467,7 +15146,7 @@ const PortalGoogleRegistrationFormStories = /*#__PURE__*/Object.freeze({
15467
15146
  *
15468
15147
  */
15469
15148
  //
15470
- const Default$m = `
15149
+ const Default$k = `
15471
15150
  // No CSS
15472
15151
  `;
15473
15152
  const Orangey = `
@@ -15501,7 +15180,7 @@ const Klip = `
15501
15180
 
15502
15181
  const Themes = /*#__PURE__*/Object.freeze({
15503
15182
  __proto__: null,
15504
- Default: Default$m,
15183
+ Default: Default$k,
15505
15184
  Orangey: Orangey,
15506
15185
  Netflix: Netflix,
15507
15186
  SaaSquatchCorporate: SaaSquatchCorporate,
@@ -18100,7 +17779,6 @@ const stories = [
18100
17779
  InvoiceTableCells,
18101
17780
  UseInvoiceTableCells,
18102
17781
  ShareButton,
18103
- Pagination,
18104
17782
  ShareLink,
18105
17783
  BigStat,
18106
17784
  Leaderboard,
@@ -18146,6 +17824,7 @@ const stories = [
18146
17824
  ReferralIframe$1,
18147
17825
  NameFields$1,
18148
17826
  CheckboxField,
17827
+ MarketingEmailsCheckbox,
18149
17828
  DropdownField,
18150
17829
  InputField,
18151
17830
  RewardExchangeList,
@@ -18169,8 +17848,6 @@ const stories = [
18169
17848
  Tabs,
18170
17849
  ShareCode$1,
18171
17850
  CouponCode$1,
18172
- ReferralCode$1,
18173
- ReferralCodes$1,
18174
17851
  LogoutCurrentUser,
18175
17852
  LinkButton,
18176
17853
  EmailRegistration,
@@ -18181,9 +17858,7 @@ const stories = [
18181
17858
  TaxFormSlots,
18182
17859
  PayoutDetailsCard,
18183
17860
  BankingInfoForm,
18184
- BaseRegistrationForm,
18185
- PortalRegistrationForm,
18186
- PortalGoogleRegistrationFormStories,
17861
+ NewPortalRegistrationForm,
18187
17862
  ];
18188
17863
  const StencilStorybook = class {
18189
17864
  constructor(hostRef) {