@saasquatch/mint-components 1.5.0-113 → 1.5.0-117

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/CHANGELOG.md +82 -15
  2. package/dist/cjs/{GenericTableView-f947b749.js → GenericTableView-ed381b89.js} +7 -6
  3. package/dist/cjs/{ShadowViewAddon-79dd6c07.js → ShadowViewAddon-60ca6e6c.js} +242 -179
  4. package/dist/cjs/{global-633d1fb7.js → global-13123238.js} +1 -0
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/mint-components.cjs.js +2 -2
  7. package/dist/cjs/{sqm-big-stat_30.cjs.entry.js → sqm-big-stat_31.cjs.entry.js} +198 -154
  8. package/dist/cjs/sqm-empty_5.cjs.entry.js +3 -2
  9. package/dist/cjs/{sqm-hero-view-a13795c0.js → sqm-hero-view-3b0d45d0.js} +1 -0
  10. package/dist/cjs/sqm-hero.cjs.entry.js +1 -1
  11. package/dist/cjs/sqm-leaderboard-rank.cjs.entry.js +1 -1
  12. package/dist/cjs/{sqm-portal-container-view-d101032e.js → sqm-portal-container-view-5ea913a8.js} +2 -1
  13. package/dist/cjs/{sqm-portal-email-verification-view-c32a55d6.js → sqm-portal-email-verification-view-535ae80c.js} +2 -2
  14. package/dist/cjs/sqm-portal-email-verification.cjs.entry.js +3 -3
  15. package/dist/cjs/{sqm-portal-footer-view-cac67bc9.js → sqm-portal-footer-view-3c62d7a6.js} +1 -1
  16. package/dist/cjs/sqm-portal-footer.cjs.entry.js +2 -2
  17. package/dist/cjs/{sqm-portal-forgot-password-view-10c0b54f.js → sqm-portal-forgot-password-view-02b046e1.js} +1 -1
  18. package/dist/cjs/sqm-portal-forgot-password.cjs.entry.js +2 -2
  19. package/dist/cjs/{sqm-portal-profile-view-72c40619.js → sqm-portal-profile-view-12c9cd73.js} +3 -3
  20. package/dist/cjs/sqm-portal-profile.cjs.entry.js +4 -4
  21. package/dist/cjs/{sqm-portal-reset-password-view-1fdc957e.js → sqm-portal-reset-password-view-20df8d45.js} +1 -1
  22. package/dist/cjs/sqm-portal-reset-password.cjs.entry.js +2 -2
  23. package/dist/cjs/{sqm-portal-section-view-186a5f7e.js → sqm-portal-section-view-f3c8475a.js} +1 -0
  24. package/dist/cjs/{sqm-portal-verify-email-view-4c78e231.js → sqm-portal-verify-email-view-1b07a1ba.js} +1 -1
  25. package/dist/cjs/sqm-portal-verify-email.cjs.entry.js +2 -2
  26. package/dist/cjs/sqm-referral-table_11.cjs.entry.js +27 -10
  27. package/dist/cjs/sqm-rewards-table-customer-note-cell.cjs.entry.js +1 -1
  28. package/dist/cjs/sqm-rewards-table_9.cjs.entry.js +37 -21
  29. package/dist/cjs/sqm-stencilbook.cjs.entry.js +252 -115
  30. package/dist/cjs/sqm-text-span-view-c54af22c.js +59 -0
  31. package/dist/cjs/sqm-text-span.cjs.entry.js +1 -1
  32. package/dist/collection/components/sqm-big-stat/UseBigStat.stories.js +15 -3
  33. package/dist/collection/components/sqm-big-stat/sqm-big-stat-view.js +1 -0
  34. package/dist/collection/components/sqm-big-stat/sqm-big-stat.js +3 -3
  35. package/dist/collection/components/sqm-big-stat/useBigStat.js +1 -1
  36. package/dist/collection/components/sqm-card-feed/sqm-card-feed-view.js +1 -0
  37. package/dist/collection/components/sqm-hero/sqm-hero-view.js +1 -0
  38. package/dist/collection/components/sqm-hero-image/sqm-hero-image-view.js +9 -2
  39. package/dist/collection/components/sqm-image/sqm-image-view.js +1 -0
  40. package/dist/collection/components/sqm-leaderboard/UseLeaderboard.stories.js +2 -2
  41. package/dist/collection/components/sqm-leaderboard/sqm-leaderboard-view.js +0 -5
  42. package/dist/collection/components/sqm-portal-container/PortalContainer.stories.js +72 -0
  43. package/dist/collection/components/sqm-portal-container/sqm-portal-container-view.js +2 -1
  44. package/dist/collection/components/sqm-portal-container/sqm-portal-container.js +26 -0
  45. package/dist/collection/components/sqm-referral-card/sqm-referral-card-view.js +40 -38
  46. package/dist/collection/components/sqm-referral-iframe/sqm-referral-iframe-view.js +1 -0
  47. package/dist/collection/components/sqm-referral-table/ReferralTable.stories.js +1 -1
  48. package/dist/collection/components/sqm-referral-table/cells/sqm-referral-table-rewards-cell.js +0 -1
  49. package/dist/collection/components/sqm-referral-table/columns/sqm-referral-table-rewards-column.js +10 -1
  50. package/dist/collection/components/sqm-referral-table/columns/sqm-referral-table-status-column.js +5 -1
  51. package/dist/collection/components/sqm-referral-table/sqm-referral-table.js +12 -10
  52. package/dist/collection/components/sqm-reward-exchange-list/RewardExchangeListData.js +1 -1
  53. package/dist/collection/components/sqm-reward-exchange-list/sqm-reward-exchange-list-view.js +1 -1
  54. package/dist/collection/components/sqm-reward-exchange-list/sqm-reward-exchange-list.js +11 -9
  55. package/dist/collection/components/sqm-rewards-table/RewardsTableCell.stories.js +10 -10
  56. package/dist/collection/components/sqm-rewards-table/cells/sqm-rewards-table-reward-cell.js +9 -25
  57. package/dist/collection/components/sqm-rewards-table/columns/sqm-rewards-table-reward-column.js +7 -27
  58. package/dist/collection/components/sqm-rewards-table/columns/sqm-rewards-table-source-column.js +3 -0
  59. package/dist/collection/components/sqm-rewards-table/columns/sqm-rewards-table-status-column.js +1 -1
  60. package/dist/collection/components/sqm-rewards-table/sqm-rewards-table.js +14 -9
  61. package/dist/collection/components/sqm-rewards-table/useRewardsTable.js +7 -1
  62. package/dist/collection/components/sqm-scroll/Scroll.stories.js +14 -23
  63. package/dist/collection/components/sqm-scroll/sqm-scroll.js +102 -147
  64. package/dist/collection/components/sqm-share-button/ShareButton.stories.js +8 -8
  65. package/dist/collection/components/sqm-share-button/sqm-share-button-view.js +29 -29
  66. package/dist/collection/components/sqm-share-button/sqm-share-button.js +21 -21
  67. package/dist/collection/components/sqm-share-code/ShareCode.stories.js +2 -2
  68. package/dist/collection/components/sqm-share-code/sqm-share-code.js +7 -7
  69. package/dist/collection/components/sqm-share-code/useShareCode.js +1 -1
  70. package/dist/collection/components/sqm-share-link/ShareLink.stories.js +3 -3
  71. package/dist/collection/components/sqm-share-link/UseShareLink.stories.js +3 -3
  72. package/dist/collection/components/sqm-share-link/sqm-share-link-view.js +1 -1
  73. package/dist/collection/components/sqm-share-link/sqm-share-link.js +4 -4
  74. package/dist/collection/components/sqm-stat-container/sqm-stat-container-view.js +1 -0
  75. package/dist/collection/components/sqm-stencilbook/sqm-stencilbook.js +2 -0
  76. package/dist/collection/components/sqm-tabs/sqm-tabs.js +1 -1
  77. package/dist/collection/components/sqm-task-card/DetailsView.js +1 -1
  78. package/dist/collection/components/sqm-task-card/progress-bar/SVGs.js +7 -0
  79. package/dist/collection/components/sqm-task-card/progress-bar/progress-bar-view.js +52 -50
  80. package/dist/collection/components/sqm-task-card/sqm-task-card-view.js +18 -10
  81. package/dist/collection/components/sqm-task-card/sqm-task-card.js +3 -1
  82. package/dist/collection/components/sqm-text-span/sqm-text-span-view.js +42 -42
  83. package/dist/collection/components/sqm-timeline/sqm-timeline-entry-view.js +77 -0
  84. package/dist/collection/components/sqm-timeline/sqm-timeline-entry.js +1 -80
  85. package/dist/collection/components/sqm-timeline/sqm-timeline.js +0 -18
  86. package/dist/collection/components/sqm-titled-section/sqm-portal-section-view.js +1 -0
  87. package/dist/collection/global/styles.js +1 -0
  88. package/dist/collection/global/styles.ts +1 -0
  89. package/dist/collection/stories/NewPortal.stories.js +2 -2
  90. package/dist/collection/stories/PortalTemplates.stories.js +0 -7
  91. package/dist/collection/stories/Widget.stories.js +49 -0
  92. package/dist/collection/tables/GenericTableView.js +7 -6
  93. package/dist/esm/{GenericTableView-6b7b537b.js → GenericTableView-6924630b.js} +7 -6
  94. package/dist/esm/{ShadowViewAddon-9c382e30.js → ShadowViewAddon-3347acdb.js} +242 -180
  95. package/dist/esm/{global-7d4eb5e5.js → global-9bff4920.js} +1 -0
  96. package/dist/esm/loader.js +2 -2
  97. package/dist/esm/mint-components.js +2 -2
  98. package/dist/esm/{sqm-big-stat_30.entry.js → sqm-big-stat_31.entry.js} +199 -156
  99. package/dist/esm/sqm-empty_5.entry.js +3 -2
  100. package/dist/esm/{sqm-hero-view-5ea17052.js → sqm-hero-view-8e70916e.js} +1 -0
  101. package/dist/esm/sqm-hero.entry.js +1 -1
  102. package/dist/esm/sqm-leaderboard-rank.entry.js +1 -1
  103. package/dist/esm/{sqm-portal-container-view-dea0cdcc.js → sqm-portal-container-view-46929235.js} +2 -1
  104. package/dist/esm/{sqm-portal-email-verification-view-86e3ff2e.js → sqm-portal-email-verification-view-1d7eca0a.js} +2 -2
  105. package/dist/esm/sqm-portal-email-verification.entry.js +3 -3
  106. package/dist/esm/{sqm-portal-footer-view-d6a43c4d.js → sqm-portal-footer-view-df66904d.js} +1 -1
  107. package/dist/esm/sqm-portal-footer.entry.js +2 -2
  108. package/dist/esm/{sqm-portal-forgot-password-view-fa088f83.js → sqm-portal-forgot-password-view-6b99a1ad.js} +1 -1
  109. package/dist/esm/sqm-portal-forgot-password.entry.js +2 -2
  110. package/dist/esm/{sqm-portal-profile-view-c34e781b.js → sqm-portal-profile-view-b96b89a3.js} +3 -3
  111. package/dist/esm/sqm-portal-profile.entry.js +4 -4
  112. package/dist/esm/{sqm-portal-reset-password-view-73e14282.js → sqm-portal-reset-password-view-2c0da51c.js} +1 -1
  113. package/dist/esm/sqm-portal-reset-password.entry.js +2 -2
  114. package/dist/esm/{sqm-portal-section-view-88a80af9.js → sqm-portal-section-view-61dbb8a9.js} +1 -0
  115. package/dist/esm/{sqm-portal-verify-email-view-cbf1cfdc.js → sqm-portal-verify-email-view-0d005914.js} +1 -1
  116. package/dist/esm/sqm-portal-verify-email.entry.js +2 -2
  117. package/dist/esm/sqm-referral-table_11.entry.js +27 -10
  118. package/dist/esm/sqm-rewards-table-customer-note-cell.entry.js +1 -1
  119. package/dist/esm/sqm-rewards-table_9.entry.js +37 -21
  120. package/dist/esm/sqm-stencilbook.entry.js +248 -111
  121. package/dist/esm/sqm-text-span-view-c8793d61.js +57 -0
  122. package/dist/esm/sqm-text-span.entry.js +1 -1
  123. package/dist/esm-es5/GenericTableView-6924630b.js +1 -0
  124. package/dist/esm-es5/ShadowViewAddon-3347acdb.js +1 -0
  125. package/dist/esm-es5/{global-7d4eb5e5.js → global-9bff4920.js} +1 -1
  126. package/dist/esm-es5/loader.js +1 -1
  127. package/dist/esm-es5/mint-components.js +1 -1
  128. package/dist/esm-es5/sqm-big-stat_31.entry.js +1 -0
  129. package/dist/esm-es5/sqm-empty_5.entry.js +1 -1
  130. package/dist/esm-es5/{sqm-hero-view-5ea17052.js → sqm-hero-view-8e70916e.js} +0 -0
  131. package/dist/esm-es5/sqm-hero.entry.js +1 -1
  132. package/dist/esm-es5/sqm-leaderboard-rank.entry.js +1 -1
  133. package/dist/esm-es5/sqm-portal-container-view-46929235.js +1 -0
  134. package/dist/esm-es5/{sqm-portal-email-verification-view-86e3ff2e.js → sqm-portal-email-verification-view-1d7eca0a.js} +1 -1
  135. package/dist/esm-es5/sqm-portal-email-verification.entry.js +1 -1
  136. package/dist/esm-es5/{sqm-portal-footer-view-d6a43c4d.js → sqm-portal-footer-view-df66904d.js} +1 -1
  137. package/dist/esm-es5/sqm-portal-footer.entry.js +1 -1
  138. package/dist/esm-es5/{sqm-portal-forgot-password-view-fa088f83.js → sqm-portal-forgot-password-view-6b99a1ad.js} +1 -1
  139. package/dist/esm-es5/sqm-portal-forgot-password.entry.js +1 -1
  140. package/dist/esm-es5/{sqm-portal-profile-view-c34e781b.js → sqm-portal-profile-view-b96b89a3.js} +1 -1
  141. package/dist/esm-es5/sqm-portal-profile.entry.js +1 -1
  142. package/dist/esm-es5/{sqm-portal-reset-password-view-73e14282.js → sqm-portal-reset-password-view-2c0da51c.js} +1 -1
  143. package/dist/esm-es5/sqm-portal-reset-password.entry.js +1 -1
  144. package/dist/esm-es5/{sqm-portal-section-view-88a80af9.js → sqm-portal-section-view-61dbb8a9.js} +0 -0
  145. package/dist/esm-es5/{sqm-portal-verify-email-view-cbf1cfdc.js → sqm-portal-verify-email-view-0d005914.js} +1 -1
  146. package/dist/esm-es5/sqm-portal-verify-email.entry.js +1 -1
  147. package/dist/esm-es5/sqm-referral-table_11.entry.js +1 -1
  148. package/dist/esm-es5/sqm-rewards-table-customer-note-cell.entry.js +1 -1
  149. package/dist/esm-es5/sqm-rewards-table_9.entry.js +1 -1
  150. package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
  151. package/dist/{mint-components/p-179988b5.js → esm-es5/sqm-text-span-view-c8793d61.js} +1 -1
  152. package/dist/esm-es5/sqm-text-span.entry.js +1 -1
  153. package/dist/mint-components/global/styles.ts +1 -0
  154. package/dist/mint-components/mint-components.esm.js +1 -1
  155. package/dist/mint-components/mint-components.js +1 -1
  156. package/dist/mint-components/{p-e08f5f8e.js → p-00c0fd3c.js} +0 -0
  157. package/dist/mint-components/{p-49667de1.system.entry.js → p-07b18f4a.system.entry.js} +1 -1
  158. package/dist/mint-components/{p-f31a3a08.system.entry.js → p-099d949d.system.entry.js} +1 -1
  159. package/dist/mint-components/{p-ce0ec1c4.system.js → p-1830b02e.system.js} +1 -1
  160. package/dist/mint-components/p-1e57c649.entry.js +9 -0
  161. package/dist/mint-components/p-23a3e161.entry.js +1 -0
  162. package/dist/mint-components/{p-3dbd3303.entry.js → p-258dc62f.entry.js} +1 -1
  163. package/dist/mint-components/{p-1c3c2ddb.system.js → p-26b42a93.system.js} +1 -1
  164. package/dist/mint-components/{p-147440c3.js → p-2ec8c64c.js} +0 -0
  165. package/dist/mint-components/{p-e82076e4.system.js → p-2ef43b0b.system.js} +1 -1
  166. package/dist/mint-components/{p-91951a0a.system.entry.js → p-3295bcea.system.entry.js} +1 -1
  167. package/dist/mint-components/{p-d7736049.system.entry.js → p-32b9d246.system.entry.js} +1 -1
  168. package/dist/mint-components/p-33159b8f.entry.js +99 -0
  169. package/dist/mint-components/p-39928661.system.entry.js +1 -0
  170. package/dist/mint-components/{p-96bbb28a.system.entry.js → p-3bb7f637.system.entry.js} +1 -1
  171. package/dist/mint-components/{p-6b43e4cc.system.js → p-3bf4f950.system.js} +1 -1
  172. package/dist/mint-components/{p-53af4433.system.js → p-3cf449ba.system.js} +0 -0
  173. package/dist/mint-components/{p-fe0d7472.entry.js → p-4556231d.entry.js} +1 -1
  174. package/dist/mint-components/{p-759df017.system.entry.js → p-4fdc7713.system.entry.js} +1 -1
  175. package/dist/mint-components/{p-6a87a09f.entry.js → p-5c35a4e6.entry.js} +1 -1
  176. package/dist/mint-components/p-5c71ba83.js +268 -0
  177. package/dist/mint-components/{p-8d7ae057.system.entry.js → p-60abe71f.system.entry.js} +1 -1
  178. package/dist/mint-components/p-6660f97d.system.js +1 -0
  179. package/dist/mint-components/p-6faceb79.system.entry.js +1 -0
  180. package/dist/mint-components/{p-eb61462d.entry.js → p-710dd330.entry.js} +12 -12
  181. package/dist/mint-components/{p-1959da16.system.js → p-73e64749.system.js} +1 -1
  182. package/dist/mint-components/{p-4f4bdfad.system.entry.js → p-79e4c06a.system.entry.js} +1 -1
  183. package/dist/mint-components/{p-3bdc5918.js → p-7b074331.js} +1 -1
  184. package/dist/mint-components/{p-4a1b7d35.js → p-7fe7dbb0.js} +1 -1
  185. package/dist/mint-components/{p-d264d1a0.system.js → p-80845175.system.js} +1 -1
  186. package/dist/mint-components/{p-200ffff7.entry.js → p-96f571e5.entry.js} +1 -1
  187. package/dist/mint-components/p-99e7434e.js +1 -0
  188. package/dist/mint-components/{p-93e15034.entry.js → p-9dee36f6.entry.js} +1 -1
  189. package/dist/mint-components/{p-16023c39.system.entry.js → p-a35ce12b.system.entry.js} +1 -1
  190. package/dist/mint-components/{p-2af6bb32.system.entry.js → p-a36892ea.system.entry.js} +1 -1
  191. package/dist/mint-components/p-a82df645.system.entry.js +1 -0
  192. package/dist/mint-components/{p-55b6147d.js → p-abc7fa04.js} +1 -1
  193. package/dist/mint-components/p-ad741ee2.system.entry.js +1 -0
  194. package/dist/mint-components/p-aebee81d.system.js +1 -0
  195. package/dist/mint-components/{p-3e65453b.system.js → p-b756428e.system.js} +0 -0
  196. package/dist/mint-components/{p-1d1e9197.js → p-ba597021.js} +1 -1
  197. package/dist/mint-components/p-bb630f90.system.js +1 -0
  198. package/dist/mint-components/p-c887a653.system.js +1 -0
  199. package/dist/mint-components/{p-d33eb961.js → p-c8cb3674.js} +1 -1
  200. package/dist/mint-components/{p-20e8567f.entry.js → p-ca696a40.entry.js} +1 -1
  201. package/dist/mint-components/{p-1204f7df.entry.js → p-cfe3ceb7.entry.js} +1 -1
  202. package/dist/mint-components/{p-a8141e7b.entry.js → p-d073aead.entry.js} +1 -1
  203. package/dist/mint-components/p-db46fe90.js +1 -0
  204. package/dist/mint-components/{p-fcd096b3.entry.js → p-dc0b8fdb.entry.js} +1 -1
  205. package/dist/mint-components/{p-ce8b1b36.system.js → p-e2cb443e.system.js} +1 -1
  206. package/dist/mint-components/{p-72a798c3.entry.js → p-e3fff405.entry.js} +1 -1
  207. package/dist/mint-components/p-ec5633b8.js +1 -0
  208. package/dist/mint-components/p-ec77261d.system.js +1 -0
  209. package/dist/mint-components/{p-e57bb617.entry.js → p-ee1684ae.entry.js} +1 -1
  210. package/dist/mint-components/{p-c5314bbc.js → p-eff88c3d.js} +1 -1
  211. package/dist/mint-components/p-f34dd1c1.js +1 -0
  212. package/dist/mint-components/{p-72296718.system.entry.js → p-f72dc3a5.system.entry.js} +1 -1
  213. package/dist/types/components/sqm-big-stat/UseBigStat.stories.d.ts +24 -0
  214. package/dist/types/components/sqm-portal-container/PortalContainer.stories.d.ts +6 -0
  215. package/dist/types/components/sqm-portal-container/sqm-portal-container-view.d.ts +1 -0
  216. package/dist/types/components/sqm-portal-container/sqm-portal-container.d.ts +6 -0
  217. package/dist/types/components/sqm-referral-table/sqm-referral-table.d.ts +2 -3
  218. package/dist/types/components/sqm-reward-exchange-list/RewardExchangeListData.d.ts +19 -19
  219. package/dist/types/components/sqm-reward-exchange-list/sqm-reward-exchange-list-view.d.ts +1 -1
  220. package/dist/types/components/sqm-reward-exchange-list/sqm-reward-exchange-list.d.ts +6 -4
  221. package/dist/types/components/sqm-reward-exchange-list/useRewardExchangeList.d.ts +1 -1
  222. package/dist/types/components/sqm-rewards-table/cells/sqm-rewards-table-reward-cell.d.ts +0 -1
  223. package/dist/types/components/sqm-rewards-table/columns/sqm-rewards-table-reward-column.d.ts +0 -4
  224. package/dist/types/components/sqm-rewards-table/sqm-rewards-table.d.ts +7 -4
  225. package/dist/types/components/sqm-scroll/Scroll.stories.d.ts +1 -0
  226. package/dist/types/components/sqm-scroll/sqm-scroll.d.ts +56 -8
  227. package/dist/types/components/sqm-share-button/sqm-share-button-view.d.ts +6 -6
  228. package/dist/types/components/sqm-share-button/sqm-share-button.d.ts +9 -9
  229. package/dist/types/components/sqm-share-code/sqm-share-code.d.ts +2 -2
  230. package/dist/types/components/sqm-share-code/useShareCode.d.ts +2 -2
  231. package/dist/types/components/sqm-share-link/sqm-share-link-view.d.ts +1 -1
  232. package/dist/types/components/sqm-share-link/sqm-share-link.d.ts +1 -1
  233. package/dist/types/components/sqm-share-link/useShareLink.d.ts +1 -1
  234. package/dist/types/components/sqm-tabs/sqm-tabs.d.ts +1 -1
  235. package/dist/types/components/sqm-task-card/progress-bar/SVGs.d.ts +1 -0
  236. package/dist/types/components/sqm-task-card/progress-bar/progress-bar-view.d.ts +1 -0
  237. package/dist/types/components/sqm-task-card/sqm-task-card.d.ts +2 -0
  238. package/dist/types/components/sqm-timeline/sqm-timeline-entry-view.d.ts +9 -0
  239. package/dist/types/components.d.ts +172 -78
  240. package/dist/types/global/styles.d.ts +1 -1
  241. package/dist/types/stories/Widget.stories.d.ts +22 -0
  242. package/grapesjs/grapesjs.js +1 -1
  243. package/package.json +1 -1
  244. package/dist/cjs/sqm-stat-container-view-8aaf6cb8.js +0 -52
  245. package/dist/cjs/sqm-stat-container.cjs.entry.js +0 -36
  246. package/dist/cjs/sqm-text-span-view-f101dedf.js +0 -59
  247. package/dist/esm/sqm-stat-container-view-226b6496.js +0 -50
  248. package/dist/esm/sqm-stat-container.entry.js +0 -32
  249. package/dist/esm/sqm-text-span-view-7e61c95c.js +0 -57
  250. package/dist/esm-es5/GenericTableView-6b7b537b.js +0 -1
  251. package/dist/esm-es5/ShadowViewAddon-9c382e30.js +0 -1
  252. package/dist/esm-es5/sqm-big-stat_30.entry.js +0 -1
  253. package/dist/esm-es5/sqm-portal-container-view-dea0cdcc.js +0 -1
  254. package/dist/esm-es5/sqm-stat-container-view-226b6496.js +0 -1
  255. package/dist/esm-es5/sqm-stat-container.entry.js +0 -1
  256. package/dist/esm-es5/sqm-text-span-view-7e61c95c.js +0 -1
  257. package/dist/mint-components/p-1a786c17.js +0 -1
  258. package/dist/mint-components/p-1b71a09e.system.entry.js +0 -1
  259. package/dist/mint-components/p-1cd23e56.system.entry.js +0 -1
  260. package/dist/mint-components/p-2c5d7a20.js +0 -268
  261. package/dist/mint-components/p-3f88f8eb.system.js +0 -1
  262. package/dist/mint-components/p-45581e0b.entry.js +0 -9
  263. package/dist/mint-components/p-48161ba8.js +0 -1
  264. package/dist/mint-components/p-4e0ce80b.js +0 -1
  265. package/dist/mint-components/p-546ee840.entry.js +0 -1
  266. package/dist/mint-components/p-55f3d841.system.js +0 -1
  267. package/dist/mint-components/p-78df4d2d.system.js +0 -1
  268. package/dist/mint-components/p-8bcaafaf.system.js +0 -1
  269. package/dist/mint-components/p-9e4f0169.system.entry.js +0 -1
  270. package/dist/mint-components/p-a44b64d5.js +0 -1
  271. package/dist/mint-components/p-ac303785.system.js +0 -1
  272. package/dist/mint-components/p-b359d5a5.entry.js +0 -1
  273. package/dist/mint-components/p-bb497e73.entry.js +0 -93
  274. package/dist/mint-components/p-c5086d90.system.js +0 -1
  275. package/dist/mint-components/p-e16186c0.system.entry.js +0 -1
  276. package/dist/mint-components/p-e2731437.system.entry.js +0 -1
@@ -4,33 +4,32 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-b0129cd6.js');
6
6
  const stencilHooks_module = require('./stencil-hooks.module-87a1f4f7.js');
7
- require('./global-633d1fb7.js');
7
+ require('./global-13123238.js');
8
8
  require('./use-callback-e754042f.js');
9
9
  const index_module = require('./index.module-f972f103.js');
10
10
  require('./extends-08099afd.js');
11
11
  require('./cjs-1066ec21.js');
12
12
  require('./mixins-7b7c59fe.js');
13
13
  const JSS = require('./JSS-c65a40f1.js');
14
- const GenericTableView = require('./GenericTableView-f947b749.js');
14
+ const GenericTableView = require('./GenericTableView-ed381b89.js');
15
15
  const luxon = require('./luxon-59ca7d19.js');
16
16
  require('./utils-01dbfd4a.js');
17
- require('./sqm-text-span-view-f101dedf.js');
17
+ require('./sqm-text-span-view-c54af22c.js');
18
18
  const sqmAssetCardView = require('./sqm-asset-card-view-d9ac6a95.js');
19
- const sqmHeroView = require('./sqm-hero-view-a13795c0.js');
19
+ const sqmHeroView = require('./sqm-hero-view-3b0d45d0.js');
20
20
  const sqmLeaderboardRankView = require('./sqm-leaderboard-rank-view-35015d30.js');
21
21
  const sqmNameFieldsView = require('./sqm-name-fields-view-c95e4768.js');
22
22
  const sqmNavigationSidebarView = require('./sqm-navigation-sidebar-view-36632c96.js');
23
23
  const sqmNavigationSidebarItemView = require('./sqm-navigation-sidebar-item-view-2ac54715.js');
24
- const sqmPortalEmailVerificationView = require('./sqm-portal-email-verification-view-c32a55d6.js');
25
- const sqmPortalFooterView = require('./sqm-portal-footer-view-cac67bc9.js');
26
- const sqmPortalForgotPasswordView = require('./sqm-portal-forgot-password-view-10c0b54f.js');
27
- const sqmPortalContainerView = require('./sqm-portal-container-view-d101032e.js');
28
- const sqmPortalProfileView = require('./sqm-portal-profile-view-72c40619.js');
29
- const sqmPortalResetPasswordView = require('./sqm-portal-reset-password-view-1fdc957e.js');
30
- const sqmPortalVerifyEmailView = require('./sqm-portal-verify-email-view-4c78e231.js');
31
- const sqmStatContainerView = require('./sqm-stat-container-view-8aaf6cb8.js');
32
- const ShadowViewAddon = require('./ShadowViewAddon-79dd6c07.js');
33
- const sqmPortalSectionView = require('./sqm-portal-section-view-186a5f7e.js');
24
+ const sqmPortalEmailVerificationView = require('./sqm-portal-email-verification-view-535ae80c.js');
25
+ const sqmPortalFooterView = require('./sqm-portal-footer-view-3c62d7a6.js');
26
+ const sqmPortalForgotPasswordView = require('./sqm-portal-forgot-password-view-02b046e1.js');
27
+ const sqmPortalContainerView = require('./sqm-portal-container-view-5ea913a8.js');
28
+ const sqmPortalProfileView = require('./sqm-portal-profile-view-12c9cd73.js');
29
+ const sqmPortalResetPasswordView = require('./sqm-portal-reset-password-view-20df8d45.js');
30
+ const sqmPortalVerifyEmailView = require('./sqm-portal-verify-email-view-1b07a1ba.js');
31
+ const ShadowViewAddon = require('./ShadowViewAddon-60ca6e6c.js');
32
+ const sqmPortalSectionView = require('./sqm-portal-section-view-f3c8475a.js');
34
33
 
35
34
  /**
36
35
  * lodash (Custom Build) <https://lodash.com/>
@@ -1457,11 +1456,11 @@ const ShareButton_stories = {
1457
1456
  },
1458
1457
  };
1459
1458
  const WithIconPrefix = () => {
1460
- const props = { medium: "whatsapp", iconslot: "prefix" };
1459
+ const props = { medium: "whatsapp", iconSlot: "prefix" };
1461
1460
  return index.h(ShadowViewAddon.ShareButtonView, Object.assign({}, props), "Share");
1462
1461
  };
1463
1462
  const WithIconSuffix = () => {
1464
- const props = { medium: "whatsapp", iconslot: "suffix" };
1463
+ const props = { medium: "whatsapp", iconSlot: "suffix" };
1465
1464
  return index.h(ShadowViewAddon.ShareButtonView, Object.assign({}, props), "Share");
1466
1465
  };
1467
1466
  const WithIconOverride = () => {
@@ -1479,15 +1478,15 @@ const TextStyle = () => {
1479
1478
  return index.h(ShadowViewAddon.ShareButtonView, Object.assign({}, props), "Share");
1480
1479
  };
1481
1480
  const WithoutIcon = () => {
1482
- const props = { medium: "facebook", hideicon: true };
1481
+ const props = { medium: "facebook", hideIcon: true };
1483
1482
  return index.h(ShadowViewAddon.ShareButtonView, Object.assign({}, props), "Share");
1484
1483
  };
1485
1484
  const WithoutText = () => {
1486
- const props = { medium: "facebook", hidetext: true };
1485
+ const props = { medium: "facebook", hideText: true };
1487
1486
  return index.h(ShadowViewAddon.ShareButtonView, Object.assign({}, props), "Share");
1488
1487
  };
1489
1488
  const TextStyleWithoutIcon = () => {
1490
- const props = { medium: "facebook", type: "text", hideicon: true };
1489
+ const props = { medium: "facebook", type: "text", hideIcon: true };
1491
1490
  return index.h(ShadowViewAddon.ShareButtonView, Object.assign({}, props), "Share");
1492
1491
  };
1493
1492
  const WithCustomColors = () => {
@@ -1496,7 +1495,7 @@ const WithCustomColors = () => {
1496
1495
  type: "text",
1497
1496
  backgroundcolor: "red",
1498
1497
  textcolor: "yellow",
1499
- iconslot: "prefix",
1498
+ iconSlot: "prefix",
1500
1499
  };
1501
1500
  return index.h(ShadowViewAddon.ShareButtonView, Object.assign({}, props), "Facebook");
1502
1501
  };
@@ -1504,8 +1503,8 @@ const WithCustomBorderRadius = () => {
1504
1503
  const props = {
1505
1504
  medium: "facebook",
1506
1505
  type: "text",
1507
- borderradius: 8,
1508
- iconslot: "prefix",
1506
+ borderRadius: 8,
1507
+ iconSlot: "prefix",
1509
1508
  };
1510
1509
  return index.h(ShadowViewAddon.ShareButtonView, Object.assign({}, props), "Facebook");
1511
1510
  };
@@ -1625,7 +1624,7 @@ const EmptyState = /*#__PURE__*/Object.freeze({
1625
1624
  SlottedIntoComponent: SlottedIntoComponent
1626
1625
  });
1627
1626
 
1628
- const scenario$2 = "@author:johan\r\n@owner:johan\r\nFeature: Share Link\r\n\r\n The share link component is a box that allows users to see and copy their share link for a given program\r\n\r\n Background: Environment\r\n Given there is a valid program ID in the environment\r\n And there is a valid user ID and account ID in the environment\r\n\r\n @motivating\r\n Scenario: A Users sharelink can be copied to their clipboard\r\n Given tooltiptext is \"hello tooltip\"\r\n When the component renders\r\n Then there is a textbox with the user's share link\r\n When the clipboard icon is clicked\r\n Then the link is copied to clipboard\r\n And a tooltip appears for ~1 second\r\n\r\n @minutae\r\n Scenario: Tooltip lifespan defaults to 2000\r\n Given the tooltip's lifespan is set to 2000\r\n And there is tooltip text\r\n When the component renders\r\n And the clipboard icon is clicked\r\n Then a tooltip appears for ~2 seconds\r\n\r\n @minutae\r\n Scenario: Demo\r\n Given isDemo() returns true\r\n Then the share link is \"https://www.example.com/sharelink/abc\"\r\n And the component won't be interactive\r\n And the tooltip is hidden\r\n\r\n @minutae\r\n Scenario: Program ID can be sourced from prop\r\n Given the programId prop is set to \"program-a\"\r\n And window.widgetIdent.programId is set to \"program-b\"\r\n When the component renders\r\n Then the share link is for \"program-a\"\r\n\r\n @minutae\r\n Scenario: Program ID can be sourced from window\r\n Given the programId prop is unset\r\n And window.widgetIdent.programId is set to \"program-b\"\r\n When the component renders\r\n Then the share link is for \"program-b\"\r\n\r\n @minutae\r\n Scenario: An analytic event is fired when a user copies their sharelink\r\n Given a user viewing the share link component\r\n And the component is rendered for \"program-a\"\r\n When they click to copy their link\r\n Then an \"USER_REFERRAL_PROGRAM_ENGAGEMENT_EVENT\" analytic event is fired\r\n And it is for \"program-a\"\r\n And it has share medium \"DIRECT\"\r\n";
1627
+ const scenario$2 = "@author:johan\r\n@owner:johan\r\nFeature: Share Link\r\n\r\n The share link component is a box that allows users to see and copy their share link for a given program\r\n\r\n Background: Environment\r\n Given there is a valid program ID in the environment\r\n And there is a valid user ID and account ID in the environment\r\n\r\n @motivating\r\n Scenario: A Users sharelink can be copied to their clipboard\r\n Given tooltipText is \"hello tooltip\"\r\n When the component renders\r\n Then there is a textbox with the user's share link\r\n When the clipboard icon is clicked\r\n Then the link is copied to clipboard\r\n And a tooltip appears for ~1 second\r\n\r\n @minutae\r\n Scenario: Tooltip lifespan defaults to 2000\r\n Given the tooltip's lifespan is set to 2000\r\n And there is tooltip text\r\n When the component renders\r\n And the clipboard icon is clicked\r\n Then a tooltip appears for ~2 seconds\r\n\r\n @minutae\r\n Scenario: Demo\r\n Given isDemo() returns true\r\n Then the share link is \"https://www.example.com/sharelink/abc\"\r\n And the component won't be interactive\r\n And the tooltip is hidden\r\n\r\n @minutae\r\n Scenario: Program ID can be sourced from prop\r\n Given the programId prop is set to \"program-a\"\r\n And window.widgetIdent.programId is set to \"program-b\"\r\n When the component renders\r\n Then the share link is for \"program-a\"\r\n\r\n @minutae\r\n Scenario: Program ID can be sourced from window\r\n Given the programId prop is unset\r\n And window.widgetIdent.programId is set to \"program-b\"\r\n When the component renders\r\n Then the share link is for \"program-b\"\r\n\r\n @minutae\r\n Scenario: An analytic event is fired when a user copies their sharelink\r\n Given a user viewing the share link component\r\n And the component is rendered for \"program-a\"\r\n When they click to copy their link\r\n Then an \"USER_REFERRAL_PROGRAM_ENGAGEMENT_EVENT\" analytic event is fired\r\n And it is for \"program-a\"\r\n And it has share medium \"DIRECT\"\r\n";
1629
1628
 
1630
1629
  const ShareLink_stories = {
1631
1630
  title: "Components/Share Link",
@@ -1637,14 +1636,14 @@ const Default = () => {
1637
1636
  const props = {
1638
1637
  shareString: "https://noah.example.com",
1639
1638
  open: false,
1640
- tooltiptext: "Copied!",
1639
+ tooltipText: "Copied!",
1641
1640
  };
1642
1641
  return index.h(ShadowViewAddon.ShareLinkView, Object.assign({}, props));
1643
1642
  };
1644
1643
  const Tooltip = () => {
1645
1644
  const props = {
1646
1645
  shareString: "https://noah.example.com",
1647
- tooltiptext: "Some text for the tooltip",
1646
+ tooltipText: "Some text for the tooltip",
1648
1647
  open: true,
1649
1648
  };
1650
1649
  return index.h(ShadowViewAddon.ShareLinkView, Object.assign({}, props));
@@ -1654,7 +1653,7 @@ const Disabled = () => {
1654
1653
  shareString: "https://noah.example.com",
1655
1654
  disabled: true,
1656
1655
  open: true,
1657
- tooltiptext: "Copied!",
1656
+ tooltipText: "Copied!",
1658
1657
  };
1659
1658
  return index.h(ShadowViewAddon.ShareLinkView, Object.assign({}, props));
1660
1659
  };
@@ -1760,7 +1759,7 @@ const BigStat = /*#__PURE__*/Object.freeze({
1760
1759
  InvalidStatValue: InvalidStatValue
1761
1760
  });
1762
1761
 
1763
- const scenario$4 = "@owner:noah\r\n@author:noah\r\nFeature: Leaderboard\r\n\r\n\tThe leaderboard displays the top referrers along with their scores\r\n\r\n\t@motivating\r\n\tScenario Outline: The leaderboard can be for referrals started or converted\r\n\t\tGiven a leaderboard is configured with \"leaderboard-type\" <value>\r\n\t\tAnd a user with started referrals\r\n\t\tAnd a user with converted referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen then only <referralType> referrals are counted in the leaderboard\r\n\t\tExamples:\r\n\t\t\t| value | referralType |\r\n\t\t\t| topStartedReferrers | started |\r\n\t\t\t| topConvertedReferrers | converted |\r\n\t\t\t| | started |\r\n\r\n\t@motivating\r\n\tScenario: If there are any users with referrals the leaderboard is shown\r\n\t\tGiven there is aleast one user\r\n\t\tThen the leaderboard displays up to 10 top referrers\r\n\t\tAnd leaderboard is ordered by the referrers score in descending ordered\r\n\t\tAnd in the case of a tie the rows are ordered alphabetically\r\n\r\n\t@motivating\r\n\tScenario: The leaderboard can filter referrals within an time interval\r\n\t\tGiven a leaderboard is configured with \"interval\" \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\"\r\n\t\tAnd a user with referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen only referrals from within \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\" are counted in the leaderboard\r\n\r\n\t@motivating\r\n\tScenario Outline: Rank Type can be configured\r\n\t\tGiven a leaderboard is configured with \"rank-type\" <value>\r\n\t\tAnd a user\r\n\t\tWhen they view the leaderboard\r\n\t\tThen their leaderboard rank is their <rank>\r\n\t\tExamples:\r\n\t\t\t| value | rank |\r\n\t\t\t| rowNumber | row number |\r\n\t\t\t| denseRank | dense rank |\r\n\t\t\t| rank | rank |\r\n\t\t\t| | row number |\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: An empty state is displayed if no users\r\n\t\tGiven a user\r\n\t\tBut no users have made any referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen an empty state is dislayed\r\n\t\tAnd they see an image of a leaderboard\r\n\t\tAnd below they see \"View your rank in the leaderboard\"\r\n\t\tAnd below they see \"Be the first to refer a friend and reach the top of the leaderboard\"\r\n\t\tAnd the text is center aligned\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: A custom empty state can be provided\r\n\t\tGiven a user\r\n\t\tBut no users have made any referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen the contents of the \"empty\" slot are displayed\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: Leaderboard headings can be customized\r\n\t\tGiven a leaderboard\r\n\t\tAnd it has the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| rankheading | Place |\r\n\t\t\t| usersheading | Customer |\r\n\t\t\t| statsheading | Referral Count |\r\n\t\t\t| show-rank | true |\r\n\t\tAnd a user\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the following columns with headings\r\n\t\t\t| column | heading |\r\n\t\t\t| rank | Place |\r\n\t\t\t| user | Customer |\r\n\t\t\t| stat | Referral Count |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Rank can be hidden or shown\r\n\t\tGiven a leaderboard\r\n\t\tAnd it has prop \"show-rank\" with <propValue>\r\n\t\tAnd a user\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they <maySee> the rank column\r\n\t\tExamples:\r\n\t\t\t| propValue | maySee |\r\n\t\t\t| true | see |\r\n\t\t\t| false | don't see |\r\n\t\t\t| | don't see |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Users in the top 10 referrers see their leaderboard row highlighted\r\n\t\tGiven a user\r\n\t\tAnd they are in the top 10 referrers\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the row with their name highlighted with brand colour\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Users not in the top 10 referrers can see their progress at the bottom of the leaderboard\r\n\t\tGiven a user\r\n\t\tAnd they <mayHmayHaveReferralave>\r\n\t\tAnd they are not in the top 10 referrers\r\n\t\tAnd the leaderboard has prop \"show-user\" with <value>\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they <maySee> \"...\" under the top 10 referrers\r\n\t\tAnd under \"...\" they <maySee> a row highlighted with brand colour\r\n\t\tAnd they <maySee> their name\r\n\t\tAnd they <maySee> their referral count\r\n\t\tAnd they <maySeeRank>\r\n\t\tExamples:\r\n\t\t\t| mayHaveReferral | value | maySee | maySeeRank |\r\n\t\t\t| have referrals | true | see | see their rank |\r\n\t\t\t| don't have referrals | true | see | don't see their rank |\r\n\t\t\t| | false | don't see | don't see their rank |\r\n\t\t\t| have referrals | | see | see their rank |\r\n\r\n\t@minutiae\r\n\tScenario: Users without names are displayed as an \"Anonymous User\"\r\n\t\tGiven a user\r\n\t\tAnd they do not have a first name\r\n\t\tAnd they do not have a last initial\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the user displayed as \"Anonymous User\"";
1762
+ const scenario$4 = "@owner:noah\r\n@author:noah\r\nFeature: Leaderboard\r\n\r\n\tThe leaderboard displays the top referrers along with their scores\r\n\r\n\t@motivating\r\n\tScenario Outline: The leaderboard can be for referrals started or converted\r\n\t\tGiven a leaderboard is configured with \"leaderboard-type\" <value>\r\n\t\tAnd a user with started referrals\r\n\t\tAnd a user with converted referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen then only <referralType> referrals are counted in the leaderboard\r\n\t\tExamples:\r\n\t\t\t| value | referralType |\r\n\t\t\t| topStartedReferrers | started |\r\n\t\t\t| topConvertedReferrers | converted |\r\n\t\t\t| | started |\r\n\r\n\t@motivating\r\n\tScenario: If there are any users with referrals the leaderboard is shown\r\n\t\tGiven there is aleast one user\r\n\t\tThen the leaderboard displays up to 10 top referrers\r\n\t\tAnd leaderboard is ordered by the referrers score in descending ordered\r\n\r\n\t@motivating\r\n\tScenario: The leaderboard can filter referrals within an time interval\r\n\t\tGiven a leaderboard is configured with \"interval\" \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\"\r\n\t\tAnd a user with referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen only referrals from within \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\" are counted in the leaderboard\r\n\r\n\t@motivating\r\n\tScenario Outline: Rank Type can be configured\r\n\t\tGiven a leaderboard is configured with \"rank-type\" <value>\r\n\t\tAnd a user\r\n\t\tWhen they view the leaderboard\r\n\t\tThen their leaderboard rank is their <rank>\r\n\t\tExamples:\r\n\t\t\t| value | rank |\r\n\t\t\t| rowNumber | row number |\r\n\t\t\t| denseRank | dense rank |\r\n\t\t\t| rank | rank |\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: An empty state is displayed if no users\r\n\t\tGiven a user\r\n\t\tBut no users have made any referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen an empty state is dislayed\r\n\t\tAnd they see an image of a leaderboard\r\n\t\tAnd below they see \"View your rank in the leaderboard\"\r\n\t\tAnd below they see \"Be the first to refer a friend and reach the top of the leaderboard\"\r\n\t\tAnd the text is center aligned\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: A custom empty state can be provided\r\n\t\tGiven a user\r\n\t\tBut no users have made any referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen the contents of the \"empty\" slot are displayed\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: Leaderboard headings can be customized\r\n\t\tGiven a leaderboard\r\n\t\tAnd it has the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| rankheading | Place |\r\n\t\t\t| usersheading | Customer |\r\n\t\t\t| statsheading | Referral Count |\r\n\t\t\t| show-rank | true |\r\n\t\tAnd a user\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the following columns with headings\r\n\t\t\t| column | heading |\r\n\t\t\t| rank | Place |\r\n\t\t\t| user | Customer |\r\n\t\t\t| stat | Referral Count |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Rank can be hidden or shown\r\n\t\tGiven a leaderboard\r\n\t\tAnd it has prop \"show-rank\" with <propValue>\r\n\t\tAnd a user\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they <maySee> the rank column\r\n\t\tExamples:\r\n\t\t\t| propValue | maySee |\r\n\t\t\t| true | see |\r\n\t\t\t| false | don't see |\r\n\t\t\t| | don't see |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Users in the top 10 referrers see their leaderboard row highlighted\r\n\t\tGiven a user\r\n\t\tAnd they are in the top 10 referrers\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the row with their name highlighted with brand colour\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Users not in the top 10 referrers can see their progress at the bottom of the leaderboard\r\n\t\tGiven a user\r\n\t\tAnd they <mayHmayHaveReferralave>\r\n\t\tAnd they are not in the top 10 referrers\r\n\t\tAnd the leaderboard has prop \"show-user\" with <value>\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they <maySee> \"...\" under the top 10 referrers\r\n\t\tAnd under \"...\" they <maySee> a row highlighted with brand colour\r\n\t\tAnd they <maySee> their name\r\n\t\tAnd they <maySee> their referral count\r\n\t\tAnd they <maySeeRank>\r\n\t\tExamples:\r\n\t\t\t| mayHaveReferral | value | maySee | maySeeRank |\r\n\t\t\t| have referrals | true | see | see their rank |\r\n\t\t\t| don't have referrals | true | see | don't see their rank |\r\n\t\t\t| | false | don't see | don't see their rank |\r\n\t\t\t| have referrals | | see | see their rank |\r\n\r\n\t@minutiae\r\n\tScenario: Users without names are displayed as an \"Anonymous User\"\r\n\t\tGiven a user\r\n\t\tAnd they do not have a first name\r\n\t\tAnd they do not have a last initial\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the user displayed as \"Anonymous User\"";
1764
1763
 
1765
1764
  const Leaderboard_stories = {
1766
1765
  title: "Components/Leaderboard",
@@ -2545,7 +2544,7 @@ const BareBonesView = createHookStory(() => {
2545
2544
  const res = ShadowViewAddon.useShareLink({
2546
2545
  programId: "sam-partner-test-2",
2547
2546
  tooltiplifespan: 0,
2548
- tooltiptext: "",
2547
+ tooltipText: "",
2549
2548
  });
2550
2549
  return (index.h("div", null,
2551
2550
  "Sharelink:",
@@ -2556,7 +2555,7 @@ const RegularView = createHookStory(() => {
2556
2555
  setupGraphQL$1();
2557
2556
  return (index.h(ShadowViewAddon.ShareLinkView, Object.assign({}, ShadowViewAddon.useShareLink({
2558
2557
  programId: "sam-partner-test-2",
2559
- tooltiptext: "Copied to clipboard",
2558
+ tooltipText: "Copied to clipboard",
2560
2559
  tooltiplifespan: 1000,
2561
2560
  }))));
2562
2561
  });
@@ -2564,7 +2563,7 @@ const FastTooltip = createHookStory(() => {
2564
2563
  setupGraphQL$1();
2565
2564
  return (index.h(ShadowViewAddon.ShareLinkView, Object.assign({}, ShadowViewAddon.useShareLink({
2566
2565
  programId: "sam-partner-test-2",
2567
- tooltiptext: "⠀⠀⠀⠀⠀⠀⠀⠀⠀HELLO THERE!!!\n⠀⠀⠀⡯⡯⡾⠝⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢊⠘⡮⣣⠪⠢⡑⡌\n⠀⠀⠀⠟⠝⠈⠀⠀⠀⠡⠀⠠⢈⠠⢐⢠⢂⢔⣐⢄⡂⢔⠀⡁⢉⠸⢨⢑⠕⡌\n⠀⠀⡀⠁⠀⠀⠀⡀⢂⠡⠈⡔⣕⢮⣳⢯⣿⣻⣟⣯⣯⢷⣫⣆⡂⠀⠀⢐⠑⡌\n⢀⠠⠐⠈⠀⢀⢂⠢⡂⠕⡁⣝⢮⣳⢽⡽⣾⣻⣿⣯⡯⣟⣞⢾⢜⢆⠀⡀⠀⠪\n⣬⠂⠀⠀⢀⢂⢪⠨⢂⠥⣺⡪⣗⢗⣽⢽⡯⣿⣽⣷⢿⡽⡾⡽⣝⢎⠀⠀⠀⢡\n⣿⠀⠀⠀⢂⠢⢂⢥⢱⡹⣪⢞⡵⣻⡪⡯⡯⣟⡾⣿⣻⡽⣯⡻⣪⠧⠑⠀⠁⢐\n⣿⠀⠀⠀⠢⢑⠠⠑⠕⡝⡎⡗⡝⡎⣞⢽⡹⣕⢯⢻⠹⡹⢚⠝⡷⡽⡨⠀⠀⢔\n⣿⡯⠀⢈⠈⢄⠂⠂⠐⠀⠌⠠⢑⠱⡱⡱⡑⢔⠁⠀⡀⠐⠐⠐⡡⡹⣪⠀⠀⢘\n⣿⣽⠀⡀⡊⠀⠐⠨⠈⡁⠂⢈⠠⡱⡽⣷⡑⠁⠠⠑⠀⢉⢇⣤⢘⣪⢽⠀⢌⢎\n⣿⢾⠀⢌⠌⠀⡁⠢⠂⠐⡀⠀⢀⢳⢽⣽⡺⣨⢄⣑⢉⢃⢭⡲⣕⡭⣹⠠⢐⢗\n⣿⡗⠀⠢⠡⡱⡸⣔⢵⢱⢸⠈⠀⡪⣳⣳⢹⢜⡵⣱⢱⡱⣳⡹⣵⣻⢔⢅⢬⡷\n⣷⡇⡂⠡⡑⢕⢕⠕⡑⠡⢂⢊⢐⢕⡝⡮⡧⡳⣝⢴⡐⣁⠃⡫⡒⣕⢏⡮⣷⡟\n⣷⣻⣅⠑⢌⠢⠁⢐⠠⠑⡐⠐⠌⡪⠮⡫⠪⡪⡪⣺⢸⠰⠡⠠⠐⢱⠨⡪⡪⡰\n⣯⢷⣟⣇⡂⡂⡌⡀⠀⠁⡂⠅⠂⠀⡑⡄⢇⠇⢝⡨⡠⡁⢐⠠⢀⢪⡐⡜⡪⡊\n⣿⢽⡾⢹⡄⠕⡅⢇⠂⠑⣴⡬⣬⣬⣆⢮⣦⣷⣵⣷⡗⢃⢮⠱⡸⢰⢱⢸⢨⢌\n⣯⢯⣟⠸⣳⡅⠜⠔⡌⡐⠈⠻⠟⣿⢿⣿⣿⠿⡻⣃⠢⣱⡳⡱⡩⢢⠣⡃⠢⠁\n⡯⣟⣞⡇⡿⣽⡪⡘⡰⠨⢐⢀⠢⢢⢄⢤⣰⠼⡾⢕⢕⡵⣝⠎⢌⢪⠪⡘⡌⠀\n⡯⣳⠯⠚⢊⠡⡂⢂⠨⠊⠔⡑⠬⡸⣘⢬⢪⣪⡺⡼⣕⢯⢞⢕⢝⠎⢻⢼⣀⠀\n⠁⡂⠔⡁⡢⠣⢀⠢⠀⠅⠱⡐⡱⡘⡔⡕⡕⣲⡹⣎⡮⡏⡑⢜⢼⡱⢩⣗⣯⣟\n⢀⢂⢑⠀⡂⡃⠅⠊⢄⢑⠠⠑⢕⢕⢝⢮⢺⢕⢟⢮⢊⢢⢱⢄⠃⣇⣞⢞⣞⢾\n⢀⠢⡑⡀⢂⢊⠠⠁⡂⡐⠀⠅⡈⠪⠪⠪⠣⠫⠑⡁⢔⠕⣜⣜⢦⡰⡎⡯⡾⡽",
2566
+ tooltipText: "⠀⠀⠀⠀⠀⠀⠀⠀⠀HELLO THERE!!!\n⠀⠀⠀⡯⡯⡾⠝⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢊⠘⡮⣣⠪⠢⡑⡌\n⠀⠀⠀⠟⠝⠈⠀⠀⠀⠡⠀⠠⢈⠠⢐⢠⢂⢔⣐⢄⡂⢔⠀⡁⢉⠸⢨⢑⠕⡌\n⠀⠀⡀⠁⠀⠀⠀⡀⢂⠡⠈⡔⣕⢮⣳⢯⣿⣻⣟⣯⣯⢷⣫⣆⡂⠀⠀⢐⠑⡌\n⢀⠠⠐⠈⠀⢀⢂⠢⡂⠕⡁⣝⢮⣳⢽⡽⣾⣻⣿⣯⡯⣟⣞⢾⢜⢆⠀⡀⠀⠪\n⣬⠂⠀⠀⢀⢂⢪⠨⢂⠥⣺⡪⣗⢗⣽⢽⡯⣿⣽⣷⢿⡽⡾⡽⣝⢎⠀⠀⠀⢡\n⣿⠀⠀⠀⢂⠢⢂⢥⢱⡹⣪⢞⡵⣻⡪⡯⡯⣟⡾⣿⣻⡽⣯⡻⣪⠧⠑⠀⠁⢐\n⣿⠀⠀⠀⠢⢑⠠⠑⠕⡝⡎⡗⡝⡎⣞⢽⡹⣕⢯⢻⠹⡹⢚⠝⡷⡽⡨⠀⠀⢔\n⣿⡯⠀⢈⠈⢄⠂⠂⠐⠀⠌⠠⢑⠱⡱⡱⡑⢔⠁⠀⡀⠐⠐⠐⡡⡹⣪⠀⠀⢘\n⣿⣽⠀⡀⡊⠀⠐⠨⠈⡁⠂⢈⠠⡱⡽⣷⡑⠁⠠⠑⠀⢉⢇⣤⢘⣪⢽⠀⢌⢎\n⣿⢾⠀⢌⠌⠀⡁⠢⠂⠐⡀⠀⢀⢳⢽⣽⡺⣨⢄⣑⢉⢃⢭⡲⣕⡭⣹⠠⢐⢗\n⣿⡗⠀⠢⠡⡱⡸⣔⢵⢱⢸⠈⠀⡪⣳⣳⢹⢜⡵⣱⢱⡱⣳⡹⣵⣻⢔⢅⢬⡷\n⣷⡇⡂⠡⡑⢕⢕⠕⡑⠡⢂⢊⢐⢕⡝⡮⡧⡳⣝⢴⡐⣁⠃⡫⡒⣕⢏⡮⣷⡟\n⣷⣻⣅⠑⢌⠢⠁⢐⠠⠑⡐⠐⠌⡪⠮⡫⠪⡪⡪⣺⢸⠰⠡⠠⠐⢱⠨⡪⡪⡰\n⣯⢷⣟⣇⡂⡂⡌⡀⠀⠁⡂⠅⠂⠀⡑⡄⢇⠇⢝⡨⡠⡁⢐⠠⢀⢪⡐⡜⡪⡊\n⣿⢽⡾⢹⡄⠕⡅⢇⠂⠑⣴⡬⣬⣬⣆⢮⣦⣷⣵⣷⡗⢃⢮⠱⡸⢰⢱⢸⢨⢌\n⣯⢯⣟⠸⣳⡅⠜⠔⡌⡐⠈⠻⠟⣿⢿⣿⣿⠿⡻⣃⠢⣱⡳⡱⡩⢢⠣⡃⠢⠁\n⡯⣟⣞⡇⡿⣽⡪⡘⡰⠨⢐⢀⠢⢢⢄⢤⣰⠼⡾⢕⢕⡵⣝⠎⢌⢪⠪⡘⡌⠀\n⡯⣳⠯⠚⢊⠡⡂⢂⠨⠊⠔⡑⠬⡸⣘⢬⢪⣪⡺⡼⣕⢯⢞⢕⢝⠎⢻⢼⣀⠀\n⠁⡂⠔⡁⡢⠣⢀⠢⠀⠅⠱⡐⡱⡘⡔⡕⡕⣲⡹⣎⡮⡏⡑⢜⢼⡱⢩⣗⣯⣟\n⢀⢂⢑⠀⡂⡃⠅⠊⢄⢑⠠⠑⢕⢕⢝⢮⢺⢕⢟⢮⢊⢢⢱⢄⠃⣇⣞⢞⣞⢾\n⢀⠢⡑⡀⢂⢊⠠⠁⡂⡐⠀⠅⡈⠪⠪⠪⠣⠫⠑⡁⢔⠕⣜⣜⢦⡰⡎⡯⡾⡽",
2568
2567
  tooltiplifespan: 500,
2569
2568
  }))));
2570
2569
  });
@@ -2664,8 +2663,8 @@ function setupGraphQL$3() {
2664
2663
  };
2665
2664
  }, []);
2666
2665
  }
2667
- const View = (statType, format) => {
2668
- console.log(`View("${statType}") - CALLED`);
2666
+ const View = (statType, format, label) => {
2667
+ // console.log(`View("${statType}") - CALLED`);
2669
2668
  setupGraphQL$3();
2670
2669
  return (index.h("div", null,
2671
2670
  index.h("b", null, "Stat format:"),
@@ -2674,7 +2673,7 @@ const View = (statType, format) => {
2674
2673
  index.h("b", null, "Stat selected:"),
2675
2674
  " ",
2676
2675
  index.h("pre", { style: { color: "green" } }, statType),
2677
- index.h("sqm-big-stat", { "stat-type": statType })));
2676
+ index.h("sqm-big-stat", { "stat-type": statType }, label)));
2678
2677
  };
2679
2678
  const DemoView = () => {
2680
2679
  const [type, setType] = stencilHooks_module.useState("/someRandomThing/with/someArguments/1234");
@@ -2732,6 +2731,18 @@ const ProgramGoals = createHookStory(() => {
2732
2731
  });
2733
2732
  const CustomField = createHookStory(() => {
2734
2733
  return View(`/customFields/thingCount`, "/(customFields)/:customField");
2734
+ });
2735
+ const CustomFieldWithLabel = createHookStory(() => {
2736
+ return View(`/customFields/thingCount`, "/(customFields)/:customField", index.h("sqm-text", null, "Thing Count"));
2737
+ });
2738
+ const CustomFieldWithEmptyLabel = createHookStory(() => {
2739
+ return View(`/customFields/thingCount`, "/(customFields)/:customField", " ");
2740
+ });
2741
+ const CustomFieldWithEmptySpaceLabel = createHookStory(() => {
2742
+ return View(`/customFields/thingCount`, "/(customFields)/:customField", "\n ");
2743
+ });
2744
+ const CustomFieldWithTextLabel = createHookStory(() => {
2745
+ return View(`/customFields/thingCount`, "/(customFields)/:customField", "Thing Count");
2735
2746
  });
2736
2747
 
2737
2748
  const UseBigStat = /*#__PURE__*/Object.freeze({
@@ -2764,7 +2775,11 @@ const UseBigStat = /*#__PURE__*/Object.freeze({
2764
2775
  RewardBalance: RewardBalance,
2765
2776
  RewardBalanceCashUSD: RewardBalanceCashUSD,
2766
2777
  ProgramGoals: ProgramGoals,
2767
- CustomField: CustomField
2778
+ CustomField: CustomField,
2779
+ CustomFieldWithLabel: CustomFieldWithLabel,
2780
+ CustomFieldWithEmptyLabel: CustomFieldWithEmptyLabel,
2781
+ CustomFieldWithEmptySpaceLabel: CustomFieldWithEmptySpaceLabel,
2782
+ CustomFieldWithTextLabel: CustomFieldWithTextLabel
2768
2783
  });
2769
2784
 
2770
2785
  function setupGraphQL$4() {
@@ -2873,7 +2888,7 @@ const View$1 = (overrideProps) => {
2873
2888
  ...overrideProps,
2874
2889
  };
2875
2890
  const { leaderboardType, rankType } = props;
2876
- console.log(`View("${leaderboardType}") - CALLED`, { ...props });
2891
+ // console.log(`View("${leaderboardType}") - CALLED`, { ...props });
2877
2892
  return (index.h("div", { style: { marginBottom: "20px" } },
2878
2893
  index.h("sqm-divided-layout", { direction: "row" },
2879
2894
  index.h("div", { style: { padding: "10px" } },
@@ -2955,7 +2970,7 @@ const DemoHookEmpty = createHookStory(() => {
2955
2970
  anonymousUser: "Anonymous User",
2956
2971
  showRank: true,
2957
2972
  },
2958
- }
2973
+ },
2959
2974
  } },
2960
2975
  index.h("sqm-empty", { "empty-state-image": "https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png", "empty-state-header": "View your rank in the leaderboard", "empty-state-text": "Be the first to refer a friend and reach the top of the leaderboard" })));
2961
2976
  });
@@ -3381,14 +3396,14 @@ const Dashboard = () => {
3381
3396
  shareString: "https://ssqt.co/johnsmithrox",
3382
3397
  open: false,
3383
3398
  disabled: false,
3384
- tooltiptext: "Share link copied",
3399
+ tooltipText: "Share link copied",
3385
3400
  onClick: () => console.log("Share link copied"),
3386
3401
  };
3387
3402
  const sharecodeProps = {
3388
3403
  shareString: "JOHNSMITH1",
3389
3404
  open: false,
3390
3405
  disabled: false,
3391
- tooltiptext: "Share code copied",
3406
+ tooltipText: "Share code copied",
3392
3407
  onClick: () => console.log("Share code copied"),
3393
3408
  };
3394
3409
  const twitterButtonProps = {
@@ -3443,7 +3458,7 @@ const Dashboard = () => {
3443
3458
  content: (index.h("sqm-text", null,
3444
3459
  index.h("h1", null, "John Smith"))),
3445
3460
  })),
3446
- index.h(sqmStatContainerView.StatContainerView, Object.assign({}, { space: "64px" }),
3461
+ index.h(ShadowViewAddon.StatContainerView, Object.assign({}, { space: "64px" }),
3447
3462
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "2,345", value: 234500, loading: false }), "Clicks"),
3448
3463
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "58", value: 58, loading: false }), "Referrals"),
3449
3464
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "$10,540", value: 1054000, loading: false }), "Earned"),
@@ -3570,7 +3585,7 @@ const Commissions = () => {
3570
3585
  " ",
3571
3586
  "program"))),
3572
3587
  })),
3573
- index.h(sqmStatContainerView.StatContainerView, Object.assign({}, { space: "64px" }),
3588
+ index.h(ShadowViewAddon.StatContainerView, Object.assign({}, { space: "64px" }),
3574
3589
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "$ 1,000", value: 100000, loading: false }), "Total Earned"),
3575
3590
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "$ 800", value: 80000, loading: false }), "Available"),
3576
3591
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "$ 180", value: 18000, loading: false }), "Pending"),
@@ -3600,7 +3615,7 @@ const Activity = () => {
3600
3615
  padding: "none",
3601
3616
  label: (index.h("sqm-text", null,
3602
3617
  index.h("h3", null, "Referral Activity"))),
3603
- content: (index.h(sqmStatContainerView.StatContainerView, Object.assign({}, { space: "64px" }),
3618
+ content: (index.h(ShadowViewAddon.StatContainerView, Object.assign({}, { space: "64px" }),
3604
3619
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "1,000", value: 100000, loading: false }), "Total Referrals"),
3605
3620
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "800", value: 800, loading: false }), "Converted"),
3606
3621
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "180", value: 180, loading: false }), "Pending"),
@@ -3611,7 +3626,7 @@ const Activity = () => {
3611
3626
  padding: "xxx-large",
3612
3627
  label: (index.h("sqm-text", null,
3613
3628
  index.h("h3", null, "Traffic Generated"))),
3614
- content: (index.h(sqmStatContainerView.StatContainerView, Object.assign({}, { space: "64px" }),
3629
+ content: (index.h(ShadowViewAddon.StatContainerView, Object.assign({}, { space: "64px" }),
3615
3630
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "1,000", value: 1000, loading: false }), "Clicks"),
3616
3631
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "800", value: 800, loading: false }), "From share link"),
3617
3632
  index.h(ShadowViewAddon.BigStatView, Object.assign({}, { statvalue: "180", value: 180, loading: false }), "From share mediums"))),
@@ -3627,6 +3642,64 @@ const NewPortal = /*#__PURE__*/Object.freeze({
3627
3642
  Activity: Activity
3628
3643
  });
3629
3644
 
3645
+ const referralWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\"Nunito Sans\">\r\n <sqm-portal-container direction=\"column\" padding=\"small\" gap=\"xxx-large\">\r\n <sqm-portal-container direction=\"column\" padding=\"none\" gap=\"xxx-large\">\r\n <sqm-hero-image\r\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\"\r\n header=\"Klip Rewards\"\r\n description=\"Refer a friend to Klip and earn up to $1200 in rewards\"\r\n layout=\"columns\"\r\n image-pos=\"right\"\r\n background-color=\"#F9F9F9\"\r\n >\r\n </sqm-hero-image>\r\n </sqm-portal-container>\r\n <sqm-portal-container\r\n direction=\"column\"\r\n padding=\"none\"\r\n gap=\"xxx-large\"\r\n max-width=\"770px\"\r\n center\r\n >\r\n <sqm-portal-container\r\n justify-content=\"center\"\r\n direction=\"row\"\r\n center\r\n display=\"flex\"\r\n >\r\n <sqm-stat-container space=\"xxx-large\" display=\"flex\">\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/referralsCount\"\r\n >\r\n <sqm-text>\r\n <p>Referrals</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/integrationRewardsCountFiltered/AVAILABLE/global\"\r\n >\r\n <sqm-text>\r\n <p>Giftcards</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n </sqm-stat-container>\r\n </sqm-portal-container>\r\n\r\n <sqm-portal-container gap=\"large\">\r\n <sqm-titled-section text-align=\"center\" label-margin=\"xxx-small\">\r\n <sqm-text slot=\"label\">\r\n <h3>Get rewarded when your friend uses Klip</h3>\r\n </sqm-text>\r\n </sqm-titled-section>\r\n <sqm-referral-card>\r\n <sqm-portal-container gap=\"large\" slot=\"left\">\r\n <sqm-text\r\n >They’ll get a $50 credit towards a new account and you’ll get:\r\n </sqm-text>\r\n <sqm-timeline icon=\"circle\">\r\n <sqm-timeline-entry\r\n reward=\"$50\"\r\n unit=\"visa giftcard\"\r\n desc=\"Your friend purchases Klip Business\"\r\n >\r\n </sqm-timeline-entry>\r\n <sqm-timeline-entry\r\n reward=\"$200\"\r\n unit=\"visa giftcard\"\r\n desc=\"Our sales team qualifies your friend as a good fit for Klip Enterprise\"\r\n >\r\n </sqm-timeline-entry>\r\n <sqm-timeline-entry\r\n reward=\"$1000\"\r\n unit=\"visa giftcard\"\r\n desc=\"Your friend purchases Klip Enterprise\"\r\n >\r\n </sqm-timeline-entry>\r\n </sqm-timeline>\r\n </sqm-portal-container>\r\n <sqm-portal-container gap=\"large\" slot=\"right\">\r\n <sqm-text>Choose how you want to share: </sqm-text>\r\n <sqm-text>\r\n <sub>Your unique referral link:</sub>\r\n <sqm-share-link> </sqm-share-link>\r\n </sqm-text>\r\n <sqm-portal-container gap=\"x-small\">\r\n <sqm-share-button medium=\"email\">\r\n Share via email\r\n </sqm-share-button>\r\n <sqm-share-button medium=\"linkedin\">\r\n Share on LinkedIn\r\n </sqm-share-button>\r\n <sqm-share-button medium=\"twitter\">\r\n Tweet about us\r\n </sqm-share-button>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n </sqm-referral-card>\r\n </sqm-portal-container>\r\n <sqm-tabs>\r\n <sqm-tab header=\"Leaderboard\">\r\n <sqm-portal-container gap=\"large\">\r\n <sqm-hero-image\r\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000248/squatch-assets/MVgOJn7.png\"\r\n description=\"Be one of the top 3 referrers at the end of the year and receive Klip free for 1 year!\"\r\n layout=\"columns\"\r\n image-percentage=\"33%\"\r\n padding-image=\"large\"\r\n padding-text=\"large\"\r\n background-color=\"#EFF8FE\"\r\n >\r\n </sqm-hero-image>\r\n <sqm-leaderboard\r\n usersheading=\"Referrer\"\r\n statsheading=\"Referrals\"\r\n rankheading=\"Rank\"\r\n rank-type=\"rowNumber\"\r\n leaderboard-type=\"topStartedReferrers\"\r\n show-rank=\"true\"\r\n >\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000223/squatch-assets/empty_leaderboard2.png\"\r\n empty-state-header=\"View your rank in the leaderboard\"\r\n empty-state-text=\"Be the first to refer a friend and reach the top of the leaderboard\"\r\n ></sqm-empty>\r\n </sqm-leaderboard>\r\n </sqm-portal-container>\r\n </sqm-tab>\r\n <sqm-tab header=\"Referral history\">\r\n <sqm-referral-table per-page=\"4\" hidden-columns=\"2\">\r\n <sqm-referral-table-user-column column-title=\"User\">\r\n </sqm-referral-table-user-column>\r\n <sqm-referral-table-status-column column-title=\"Referral status\">\r\n </sqm-referral-table-status-column>\r\n <sqm-referral-table-rewards-column>\r\n </sqm-referral-table-rewards-column>\r\n <sqm-referral-table-date-column\r\n column-title=\"Date referred\"\r\n date-shown=\"dateReferralStarted\"\r\n >\r\n </sqm-referral-table-date-column>\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000223/squatch-assets/empty_referral2.png\"\r\n empty-state-header=\"View your referral details\"\r\n empty-state-text=\"Refer a friend to view the status of your referrals and rewards earned\"\r\n ></sqm-empty>\r\n </sqm-referral-table>\r\n </sqm-tab>\r\n </sqm-tabs>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n</sqm-brand>\r\n";
3646
+
3647
+ const monoWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\"Nunito Sans\">\r\n <sqm-portal-container direction=\"column\" padding=\"small\" gap=\"xxx-large\">\r\n <sqm-portal-container direction=\"column\" padding=\"none\" gap=\"xxx-large\">\r\n <sqm-hero-image\r\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\"\r\n header=\"Klip Rewards\"\r\n description=\"Refer friends and complete tasks while using Klip to earn rewards\"\r\n layout=\"columns\"\r\n image-pos=\"right\"\r\n background-color=\"#F9F9F9\"\r\n >\r\n </sqm-hero-image>\r\n </sqm-portal-container>\r\n <sqm-portal-container\r\n direction=\"column\"\r\n padding=\"none\"\r\n gap=\"xxx-large\"\r\n max-width=\"770px\"\r\n center\r\n >\r\n <sqm-portal-container\r\n direction=\"row\"\r\n center\r\n display=\"flex\"\r\n justify-content=\"space-between\"\r\n >\r\n <sqm-stat-container space=\"xxx-large\" display=\"flex\">\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/referralsCount\"\r\n >\r\n <sqm-text>\r\n <p>Referrals</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/integrationRewardsCountFiltered/AVAILABLE/global\"\r\n >\r\n <sqm-text>\r\n <p>Giftcards Earned</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/rewardBalance/CREDIT/POINT/value/global\"\r\n >\r\n <sqm-text>\r\n <p>Points Balance</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n </sqm-stat-container>\r\n <sqm-scroll\r\n scroll-id=\"tab-3\"\r\n outline\r\n button-type=\"primary\"\r\n button-text=\"Redeem your rewards\"\r\n outline\r\n mobile\r\n ></sqm-scroll>\r\n </sqm-portal-container>\r\n\r\n <sqm-portal-container gap=\"xx-large\">\r\n <sqm-titled-section text-align=\"center\" label-margin=\"xxx-small\">\r\n <sqm-text slot=\"label\">\r\n <h3>Share $50 with friends</h3>\r\n </sqm-text>\r\n <sqm-text slot=\"content\">\r\n <p>\r\n They’ll get a $50 credit towards a new account and you’ll get up\r\n to $1200\r\n </p>\r\n </sqm-text>\r\n </sqm-titled-section>\r\n <sqm-referral-card>\r\n <sqm-portal-container gap=\"large\" slot=\"left\">\r\n <sqm-text>Get rewarded when your friend uses Klip </sqm-text>\r\n <sqm-timeline icon=\"circle\">\r\n <sqm-timeline-entry\r\n reward=\"75\"\r\n unit=\"points\"\r\n desc=\"Your friends signs up for a free trial\"\r\n >\r\n </sqm-timeline-entry>\r\n <sqm-timeline-entry\r\n reward=\"$50\"\r\n unit=\"visa giftcard\"\r\n desc=\"Your friends signs up for Klip Business\"\r\n >\r\n </sqm-timeline-entry>\r\n <sqm-timeline-entry\r\n reward=\"$200\"\r\n unit=\"visa giftcard\"\r\n desc=\"Your friend qualifies as a good fit for Klip Enterprise\"\r\n >\r\n </sqm-timeline-entry>\r\n <sqm-timeline-entry\r\n reward=\"$1000\"\r\n unit=\"visa giftcard\"\r\n desc=\"Your friend purchases Klip Enterprise\"\r\n >\r\n </sqm-timeline-entry>\r\n </sqm-timeline>\r\n </sqm-portal-container>\r\n <sqm-portal-container gap=\"large\" slot=\"right\">\r\n <sqm-text>Choose how you want to share: </sqm-text>\r\n <sqm-text>\r\n <sub>Your unique referral link:</sub>\r\n <sqm-share-link> </sqm-share-link>\r\n </sqm-text>\r\n <sqm-portal-container gap=\"x-small\">\r\n <sqm-share-button medium=\"email\">\r\n Share via email\r\n </sqm-share-button>\r\n <sqm-share-button medium=\"linkedin\">\r\n Share on LinkedIn\r\n </sqm-share-button>\r\n <sqm-share-button medium=\"twitter\">\r\n Tweet about us\r\n </sqm-share-button>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n </sqm-referral-card>\r\n </sqm-portal-container>\r\n\r\n <sqm-portal-container gap=\"xx-large\">\r\n <sqm-titled-section text-align=\"center\" label-margin=\"xxx-small\">\r\n <sqm-text slot=\"label\">\r\n <h3>Earn more rewards</h3>\r\n </sqm-text>\r\n <sqm-text slot=\"content\">\r\n <p>\r\n Get points while using Klip. Use those points to redeem rewards\r\n like one free month of Klip Enterprise or two plane tickets to\r\n anywhere in North America\r\n </p>\r\n </sqm-text>\r\n </sqm-titled-section>\r\n <sqm-card-feed>\r\n <sqm-task-card\r\n reward-amount=\"50\"\r\n card-title=\"Follow Us on Twitter\"\r\n description=\"Earn 50 points when you follow us on Twitter!\"\r\n button-text=\"Follow\"\r\n button-link=\"https://twitter.com/\"\r\n goal=\"1\"\r\n stat-type=\"/programGoals/count/Follow-on-Social-Media\"\r\n open-new-tab=\"true\"\r\n event-key=\"socialFollow\"\r\n program-id=\"klip-loyalty\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"250\"\r\n goal=\"500\"\r\n show-progress-bar=\"true\"\r\n card-title=\"Spend $500 on Klip Products\"\r\n description=\"Earn 250 points when you spend $500 or more on Klip products.\"\r\n button-text=\"See plans\"\r\n button-link=\"https://klip-staging.vercel.app/app/plans\"\r\n stat-type=\"/customFields/purchaseTotal\"\r\n open-new-tab=\"false\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"25\"\r\n goal=\"1\"\r\n card-title=\"Upload Your First Video\"\r\n description=\"Earn 25 points for exploring the Klip platform when you upload your first video.\"\r\n button-text=\"Upload\"\r\n button-link=\"https://klip-staging.vercel.app/app\"\r\n stat-type=\"/programGoals/count/Record-First-Video\"\r\n open-new-tab=\"false\"\r\n program-id=\"klip-loyalty\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"100\"\r\n goal=\"5\"\r\n repeatable=\"true\"\r\n show-progress-bar=\"true\"\r\n steps=\"true\"\r\n card-title=\"Share 5 Videos\"\r\n description=\"Earn 100 points for collaborating each time you share 5 videos.\"\r\n button-text=\"Share\"\r\n button-link=\"https://klip-staging.vercel.app/app\"\r\n stat-type=\"/customFields/videosShared\"\r\n open-new-tab=\"false\"\r\n >\r\n </sqm-task-card>\r\n </sqm-card-feed>\r\n </sqm-portal-container>\r\n <sqm-tabs>\r\n <sqm-tab header=\"Leaderboard\">\r\n <sqm-portal-container gap=\"large\">\r\n <sqm-hero-image\r\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000248/squatch-assets/MVgOJn7.png\"\r\n description=\"Be one of the top 3 referrers at the end of the year and receive Klip free for 1 year!\"\r\n layout=\"columns\"\r\n image-percentage=\"33%\"\r\n padding-image=\"large\"\r\n padding-text=\"large\"\r\n background-color=\"#EFF8FE\"\r\n >\r\n </sqm-hero-image>\r\n <sqm-leaderboard\r\n usersheading=\"Referrer\"\r\n statsheading=\"Referrals\"\r\n rankheading=\"Rank\"\r\n rank-type=\"rowNumber\"\r\n leaderboard-type=\"topStartedReferrers\"\r\n show-rank=\"true\"\r\n >\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000223/squatch-assets/empty_leaderboard2.png\"\r\n empty-state-header=\"View your rank in the leaderboard\"\r\n empty-state-text=\"Be the first to refer a friend and reach the top of the leaderboard\"\r\n ></sqm-empty>\r\n </sqm-leaderboard>\r\n </sqm-portal-container>\r\n </sqm-tab>\r\n <sqm-tab header=\"Referral history\">\r\n <sqm-referral-table per-page=\"4\" hidden-columns=\"2\">\r\n <sqm-referral-table-user-column column-title=\"User\">\r\n </sqm-referral-table-user-column>\r\n <sqm-referral-table-status-column column-title=\"Referral status\">\r\n </sqm-referral-table-status-column>\r\n <sqm-referral-table-rewards-column>\r\n </sqm-referral-table-rewards-column>\r\n <sqm-referral-table-date-column\r\n column-title=\"Date referred\"\r\n date-shown=\"dateReferralStarted\"\r\n >\r\n </sqm-referral-table-date-column>\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000223/squatch-assets/empty_referral2.png\"\r\n empty-state-header=\"View your referral details\"\r\n empty-state-text=\"Refer a friend to view the status of your referrals and rewards earned\"\r\n ></sqm-empty>\r\n </sqm-referral-table>\r\n </sqm-tab>\r\n <sqm-tab header=\"Reward history\">\r\n <sqm-rewards-table per-page=\"4\" program-id=\"\">\r\n <sqm-rewards-table-reward-column></sqm-rewards-table-reward-column>\r\n <sqm-rewards-table-source-column></sqm-rewards-table-source-column>\r\n <sqm-rewards-table-status-column></sqm-rewards-table-status-column>\r\n <sqm-rewards-table-date-column></sqm-rewards-table-date-column>\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_reward2.png\"\r\n empty-state-header=\"View your rewards\"\r\n empty-state-text=\"Refer friends and complete tasks to view the details of your rewards\"\r\n ></sqm-empty>\r\n </sqm-rewards-table>\r\n </sqm-tab>\r\n <sqm-tab header=\"Redeem\">\r\n <sqm-reward-exchange-list>\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_exchange2.png\"\r\n empty-state-header=\"Redeem rewards\"\r\n empty-state-text=\"Use your points to redeem rewards once they become available\"\r\n ></sqm-empty>\r\n </sqm-reward-exchange-list>\r\n </sqm-tab>\r\n </sqm-tabs>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n</sqm-brand>\r\n";
3648
+
3649
+ const loyaltyWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\"Nunito Sans\">\r\n <sqm-portal-container direction=\"column\" padding=\"small\" gap=\"xxxx-large\">\r\n <sqm-portal-container direction=\"column\" padding=\"none\" gap=\"xxx-large\">\r\n <sqm-hero-image\r\n image-url=\"https://i.imgur.com/bTwu1Um.png\"\r\n header=\"Klip Rewards\"\r\n description=\"Refer friends and complete tasks while using Klip to earn rewards\"\r\n layout=\"overlay\"\r\n padding-image=\"xxxx-large\"\r\n padding-text=\"xxx-large\"\r\n image-pos=\"center\"\r\n overlay-color=\"#5e5669\"\r\n overlay-opacity=\"0.9\"\r\n ></sqm-hero-image>\r\n\r\n <sqm-portal-container\r\n direction=\"column\"\r\n padding=\"none\"\r\n gap=\"xxx-large\"\r\n max-width=\"770px\"\r\n center\r\n >\r\n <sqm-program-explainer header=\"How it works\">\r\n <sqm-program-explainer-step\r\n description=\"Complete tasks like uploading your first video or sharing videos with friends\"\r\n header=\"Earn points for using Klip\"\r\n icon=\"cash-stack\"\r\n >\r\n </sqm-program-explainer-step>\r\n <sqm-program-explainer-step\r\n description=\"Redeem rewards like one free month of Klip Enterprise or two plane tickets to anywhere in North America\"\r\n header=\"Redeem rewards with your points\"\r\n icon=\"people\"\r\n >\r\n </sqm-program-explainer-step>\r\n </sqm-program-explainer>\r\n\r\n <sqm-portal-container center direction=\"row\" display=\"flex\" justify-content=\"space-between\">\r\n <sqm-stat-container space=\"xxx-large\" display=\"flex\">\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/rewardsRedeemed/CREDIT/global\"\r\n >\r\n <sqm-text>\r\n <p>Rewards Redeemed</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/rewardBalance/CREDIT/POINT/value/global\"\r\n >\r\n <sqm-text>\r\n <p>Points Balance</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n </sqm-stat-container>\r\n <sqm-scroll\r\n scroll-id=\"tab-2\"\r\n outline\r\n button-type=\"primary\"\r\n button-text=\"Redeem your rewards\"\r\n mobile\r\n ></sqm-scroll>\r\n </sqm-portal-container>\r\n <sqm-portal-container direction=\"column\" padding=\"none\" gap=\"xx-large\">\r\n <sqm-titled-section>\r\n <sqm-text>Earn points</sqm-text>\r\n </sqm-titled-section>\r\n <sqm-card-feed>\r\n <sqm-task-card\r\n reward-amount=\"20\"\r\n goal=\"1\"\r\n card-title=\"Complete a Survey\"\r\n description=\"Fill out our NPS survey and get 100 points for giving us honest feedback. Be sure to use your Klip account email when completing the survey.\"\r\n button-text=\"Take survey\"\r\n button-link=\"https://y5tqgj96plv.typeform.com/to/p6N7lHUk\"\r\n stat-type=\"/programGoals/count/NPS-Survey\"\r\n reward-unit=\"Points\"\r\n open-new-tab=\"true\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"250\"\r\n goal=\"500\"\r\n show-progress-bar=\"true\"\r\n card-title=\"Spend $500 on Klip Products\"\r\n description=\"Earn 150 points when you spend $500 or more on Klip products.\"\r\n button-text=\"See plans\"\r\n button-link=\"https://klip-staging.vercel.app/app/plans\"\r\n stat-type=\"/customFields/purchaseTotal\"\r\n open-new-tab=\"false\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"100\"\r\n goal=\"5\"\r\n repeatable=\"true\"\r\n show-progress-bar=\"true\"\r\n steps=\"true\"\r\n card-title=\"Share 5 Videos\"\r\n description=\"Earn 100 points for collaborating each time you share 5 videos.\"\r\n button-text=\"Share\"\r\n button-link=\"https://klip-staging.vercel.app/app\"\r\n stat-type=\"/customFields/videosShared\"\r\n open-new-tab=\"false\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"25\"\r\n goal=\"1\"\r\n card-title=\"Upload Your First Video\"\r\n description=\"Earn 25 points for exploring the Klip platform when you upload your first video.\"\r\n button-text=\"Upload\"\r\n button-link=\"https://klip-staging.vercel.app/app\"\r\n stat-type=\"/programGoals/count/Record-First-Video\"\r\n open-new-tab=\"false\"\r\n program-id=\"klip-loyalty\"\r\n >\r\n </sqm-task-card>\r\n\r\n </sqm-card-feed>\r\n\r\n <sqm-tabs>\r\n <sqm-tab header=\"Reward history\">\r\n <sqm-rewards-table per-page=\"4\" program-id=\"\">\r\n <sqm-rewards-table-reward-column></sqm-rewards-table-reward-column>\r\n <sqm-rewards-table-source-column></sqm-rewards-table-source-column>\r\n <sqm-rewards-table-status-column></sqm-rewards-table-status-column>\r\n <sqm-rewards-table-date-column></sqm-rewards-table-date-column>\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_reward2.png\"\r\n empty-state-header=\"View your rewards\"\r\n empty-state-text=\"Refer friends and complete tasks to view the details of your rewards\"\r\n ></sqm-empty>\r\n </sqm-rewards-table>\r\n </sqm-tab>\r\n <sqm-tab header=\"Redeem\">\r\n <sqm-reward-exchange-list\r\n back-text=\"Back\"\r\n button-text=\"Exchange Rewards\"\r\n cancel-text=\"Cancel\"\r\n choose-amount-title=\"Select\"\r\n choose-reward-title=\"Rewards\"\r\n confirmation-title=\"Confirm\"\r\n continue-text=\"Continue\"\r\n continue-to-confirmation-text=\"Continue to confirmation\"\r\n done-text=\"Done\"\r\n reward-title=\"Choose a reward\"\r\n not-available-error=\"{unavailableReasonCode, select, US_TAX {US Tax limit} INSUFFICIENT_REDEEMABLE_CREDIT {{sourceValue} required} AVAILABILITY_PREDICATE {Not available} other {unavailableReasonCode} }\"\r\n not-enough-error=\"Not enough {sourceUnit} to redeem for this reward\"\r\n query-error=\"Unable to load reward exchange list. Please try again\"\r\n redeem-text=\"Redeem\"\r\n redeem-title=\"Confirm and redeem\"\r\n redemption-error=\"An error occured trying to redeem this reward. Please try again\"\r\n redemption-success-text=\"Redeemed {sourceValue} for {destinationValue}\"\r\n select-text=\"Select amount to receive\"\r\n source-amount-message=\"{ruleType, select, FIXED_GLOBAL_REWARD {{sourceValue}} other {{sourceMinValue} to {sourceMaxValue}}}\"\r\n tooltiptext=\"Copied\"\r\n reward-name-title=\"Reward\"\r\n reward-amount-title=\"Reward Amount\"\r\n cost-title=\"Cost to Redeem\"\r\n reward-redeemed-text=\"Reward redeemed\"\r\n skeleton-card-num=\"8\"\r\n promo-code=\"Promo Code\"\r\n\r\n >\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_exchange2.png\"\r\n empty-state-header=\"Redeem rewards\"\r\n empty-state-text=\"Use your points to redeem rewards once they become available\"\r\n ></sqm-empty>\r\n </sqm-reward-exchange-list>\r\n </sqm-tab>\r\n </sqm-tabs>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n</sqm-brand>\r\n";
3650
+
3651
+ const Widget_stories = {
3652
+ title: "Templates / Widgets",
3653
+ };
3654
+ // slot="footer"
3655
+ // support-email="john@foodservicerewards.com"
3656
+ // terms-link="example.com"
3657
+ // faq-link="example.com"
3658
+ // padding="large"
3659
+ // show-powered-by="false"
3660
+ // powered-by-link="https://www.saasquatch.com/"
3661
+ function useTemplate$1(templateString) {
3662
+ const [editedTemplate, setEditedTemplate] = stencilHooks_module.useState(templateString);
3663
+ const [previewTemplate, setPreviewTemplate] = stencilHooks_module.useState(templateString);
3664
+ return {
3665
+ states: { previewTemplate, editedTemplate },
3666
+ callbacks: { setEditedTemplate, setPreviewTemplate },
3667
+ };
3668
+ }
3669
+ function Buttons({ callbacks, states, template }) {
3670
+ return (index.h("div", null,
3671
+ index.h("button", { onClick: () => callbacks.setPreviewTemplate(states.editedTemplate) }, "Update Preview"),
3672
+ index.h("button", { style: { marginLeft: "10px" }, onClick: () => callbacks.setPreviewTemplate(template) }, "Preview Dashboard")));
3673
+ }
3674
+ function DefaultTemplateView(props) {
3675
+ const { states, callbacks } = props;
3676
+ return (index.h("div", { style: { height: "50vh" } },
3677
+ index.h("textarea", { style: { width: "100%", height: "300px" }, onChange: (e) => callbacks.setEditedTemplate(e.target.value) }, states.editedTemplate),
3678
+ index.h(Buttons, { states: states, callbacks: callbacks, template: props.template }),
3679
+ index.h("br", null),
3680
+ index.h("div", { innerHTML: states.previewTemplate })));
3681
+ }
3682
+ const ReferralWidget = createHookStory(() => {
3683
+ const { states, callbacks } = useTemplate$1(referralWidget);
3684
+ return (index.h(DefaultTemplateView, { states: states, callbacks: callbacks, template: referralWidget }));
3685
+ });
3686
+ const MonoWidget = createHookStory(() => {
3687
+ const { states, callbacks } = useTemplate$1(monoWidget);
3688
+ return (index.h(DefaultTemplateView, { states: states, callbacks: callbacks, template: monoWidget }));
3689
+ });
3690
+ const Loyalty = createHookStory(() => {
3691
+ const { states, callbacks } = useTemplate$1(loyaltyWidget);
3692
+ return (index.h(DefaultTemplateView, { states: states, callbacks: callbacks, template: loyaltyWidget }));
3693
+ });
3694
+
3695
+ const Widget = /*#__PURE__*/Object.freeze({
3696
+ __proto__: null,
3697
+ 'default': Widget_stories,
3698
+ ReferralWidget: ReferralWidget,
3699
+ MonoWidget: MonoWidget,
3700
+ Loyalty: Loyalty
3701
+ });
3702
+
3630
3703
  const SidebarItem_stories = {
3631
3704
  title: "Components/Sidebar Item",
3632
3705
  };
@@ -5523,7 +5596,7 @@ const FullRewardsTable = () => {
5523
5596
  prevLabel: "Prev",
5524
5597
  moreLabel: "View More",
5525
5598
  },
5526
- hiddenColumns: "",
5599
+ hiddenColumns: "1",
5527
5600
  mdBreakpoint: 899,
5528
5601
  smBreakpoint: 599,
5529
5602
  },
@@ -5805,7 +5878,7 @@ function cartesian(...args) {
5805
5878
 
5806
5879
  const scenarioTaskCard = "@author:derek\r\n@owner:kutay\r\nFeature: Task Card\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: A header, body title and a CTA button are always displayed\r\n\t\tGiven the Task Card is configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| rewardAmount | \"40\" |\r\n\t\t\t| rewardUnit | \"Points\" |\r\n\t\t\t| cardTitle | Complete a survey |\r\n\t\t\t| buttonText | Take Survey |\r\n\t\tWhen a user views the Task Card\r\n\t\tThen they see \"40 Points\" as the heading\r\n\t\tAnd the \"40\" is bolded\r\n\t\tAnd they see \"Complete a survey\" bolded in the body\r\n\t\tAnd a details icon in the top right hand corner\r\n\t\tAnd a button with text \"Take Survey\" in the bottom right hand corner\r\n\t\tWhen they click the button\r\n\t\tThen they are redirected to \"example.com\" in a new window\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: A Task Card description can be included but is not required\r\n\t\tGiven a Task Card\r\n\t\tAnd it has <descriptionPropValue>\r\n\t\tWhen a user views the Task card\r\n\t\tThen they <maySee> a chevron icon in the top right\r\n\t\tWhen they attempt to click the chevron\r\n\t\tThen they <maySee> the card description\r\n\t\tExamples:\r\n\t\t\t| descriptionPropValue | maySee |\r\n\t\t\t| This is my task card description | see |\r\n\t\t\t| | don't see |\r\n\r\n\t@motivating\r\n\tScenario Outline: CTA links can open in a new tab or the same tab\r\n\t\tGiven a Task Card\r\n\t\tAnd it has <openNewTabPropValue>\r\n\t\tWhen a user views the Task card\r\n\t\tAnd they click on the CTA\r\n\t\tThen they are redirected to the CTA link in <tab>\r\n\t\tExamples:\r\n\t\t\t| openNewTabPropValue | tab |\r\n\t\t\t| true | a new tab |\r\n\t\t\t| false | the same tab |\r\n\t\t\t| N/A | the same tab |\r\n\r\n\t@minutae\r\n\t@ui\r\n\tScenario: A loading state is displayed while the Task Card is loading\r\n\t\tGiven a Task Card component\r\n\t\tWhen a user views the Task Card\r\n\t\tThen a loading state is displayed\r\n\t\tWhen the Task Card has loaded\r\n\t\tThen the loading state disapears\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The Progress Bar can be shown or hidden but is hidden by default\r\n\t\tGiven a Task Card\r\n\t\tAnd it has <showProgressBarPropValue>\r\n\t\tWhen a user views the Task Card\r\n\t\tThen the progress bar <mayBe> displayed\r\n\t\tExamples:\r\n\t\t\t| showProgressBarPropValue | mayBe |\r\n\t\t\t| true | is |\r\n\t\t\t| false | isn't |\r\n\t\t\t| N/A | isn't |\r\n\r\n\t@motivating\r\n\tScenario: Clicking the CTA Button can trigger an event to be sent and refresh the widget\r\n\t\tGiven a Task card\r\n\t\tAnd it is configured to send an \"test\" event\r\n\t\tWhen a user views the Task card\r\n\t\tAnd clicks on the CTA\r\n\t\tThen a \"test\" event is sent to SSQT on the users behalf\r\n\t\tAnd the contents of the widget the card is dislayed within are refreshed\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Tasks can be repeatable or one-time only but are one-time only by default\r\n\t\tGiven a Task Card\r\n\t\tAnd it has <repeatablePropValue>\r\n\t\tAnd a user who has already completed the task\r\n\t\tWhen they view the Task Card\r\n\t\tThen they see a brand colour checkmark icon beside the card heading\r\n\t\tAnd the card <mayBe> brand colour\r\n\t\tAnd the CTA button <mayBe> disabled\r\n\t\tAnd the CTA button <mayBe> grey\r\n\t\tExamples:\r\n\t\t\t| repeatablePropValue | mayBe |\r\n\t\t\t| true | isn't |\r\n\t\t\t| false | is |\r\n\t\t\t| N/A | is |\r\n\r\n\t@motivating\r\n\tScenario Outline: Display duration hides or shows a task\r\n\t\tGiven a Task Card\r\n\t\tAnd it has a \"display-duration\" interval\r\n\t\tWhen a user views the Card on <day>\r\n\t\tThen card <mayBeHidden>\r\n\t\tExamples:\r\n\t\t\t| day | mayBeHidden |\r\n\t\t\t| a day before the interval | is hidden |\r\n\t\t\t| a day during the interval | is not hidden |\r\n\t\t\t| a day after the interval | is hidden |\r\n\r\n\t@motivating\r\n\tScenario: Task Expiries can be configured and disable the CTA after the expiry\r\n\t\tGiven a Task Card\r\n\t\tAnd it has an \"reward-duration\" interval\r\n\t\tWhen a user views the card on <day>\r\n\t\tThen the card <mayBeDisabled>\r\n\t\tAnd it <mayHaveAlert>\r\n\t\tAnd it <mayHaveExpiryText> on the bottom left hand side of the card\r\n\t\tExamples:\r\n\t\t\t| day | mayBeDisabled | mayHaveAlert | mayHaveExpiryText |\r\n\t\t\t| a day before the expiry interval | is disabled | has alert stating the month, date, year and time the task starts | doesn't have expiry text |\r\n\t\t\t| a day during the expiry interval | isn't disabled | doesn't have an alert | has the month, date, year and time the task expires |\r\n\t\t\t| a day after the expiry interval | is disabled | has alert stating the month, date, year and time the task expired | doesn't have expiry text |\r\n\r\n\t@motivating\r\n\tScenario Outline: Task Card dates support localization\r\n\t\tGiven a Task Card\r\n\t\tAnd it's configured with a expiry duration interval\r\n\t\tWhen a user with <locale> views the task card <atTime>\r\n\t\tThen they <seeDate> translated for <locale>\r\n\t\tExamples:\r\n\t\t\t| atTime | locale | seeDate |\r\n\t\t\t| before the interval | en | Task Start Date |\r\n\t\t\t| during the interval | en | Task End Date |\r\n\t\t\t| after the interval | en | Task Ended Date |\r\n\t\t\t| before the interval | fr | Task Start Date |\r\n\t\t\t| during the interval | fr | Task End Date |\r\n\t\t\t| after the interval | fr | Task Ended Date |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: A task completion count is displayed for repeatable tasks\r\n\t\tGiven a Task Card\r\n\t\tAnd it is configured for a repeatable task\r\n\t\tAnd has it has <goalValue>\r\n\t\tAnd a user with <userGoalProgress>\r\n\t\tWhen the user views the task card\r\n\t\tThen they see a repeat icon\r\n\t\tAnd the <text> in the bottom left hand corner\r\n\t\tAnd the <text> is brand colour\r\n\t\tExamples:\r\n\t\t\t| goalValue | userGoalProgress | text |\r\n\t\t\t| 2 | 0 | Completed 0 times |\r\n\t\t\t| 2 | 1 | Completed 0 times |\r\n\t\t\t| 2 | 2 | Completed 1 times |\r\n\t\t\t| 2 | 4 | Completed 2 times |\r\n\r\n\t@motivating\r\n\tScenario Outline: The source of a user's progress can be a custom field or a program goal\r\n\t\tGiven a Task Card\r\n\t\tAnd it is configured <progressSourcePath>\r\n\t\tWhen a user views the Task card\r\n\t\tThen the value at <progressSourcePath> is used to benchmark their progress against the \"Goal Completion Count\"\r\n\t\tExamples:\r\n\t\t\t| progressSourcePath |\r\n\t\t\t| /customFields/activityCount |\r\n\t\t\t| /customFields/purchaseTotal |\r\n\t\t\t| /programGoals/count%2FComment-on-Article |\r\n\t\t\t| /programGoals/count/Referral-Started%2Freferrals |\r\n\r\n\t@motivating\r\n\tScenario Outline: The users completion of a goal is calculated by the Goal Completion Number\r\n\t\tGiven a Task Card\r\n\t\tAnd it is configured for <goalValue>\r\n\t\tAnd a user who has <progressValue>\r\n\t\tWhen they view the Task Card\r\n\t\tThen they are shown to have <progressValue> towards <goalValue>\r\n\t\tWhen their progress grows larger than <goalValue>\r\n\t\tThen the task is marked as completed\r\n\t\tExamples:\r\n\t\t\t| goalValue | progressValue |\r\n\t\t\t| 1 | 0 |\r\n\t\t\t| 10 | 9 |\r\n\t\t\t| 5 | 2 |\r\n\r\n\t@motivating\r\n\tScenario: The Goal Completion Number defaults to 1\r\n\t\tGiven a Task Card without a configured \"goal\" value\r\n\t\tAnd a user who has <progressValue>\r\n\t\tWhen they view the Task Card\r\n\t\tThen it <mayBe> marked as completed\r\n\t\tExamples:\r\n\t\t\t| progressValue | mayBe |\r\n\t\t\t| 0 | isn't |\r\n\t\t\t| 1 | is |\r\n\t\t\t| 2 | is |";
5807
5880
 
5808
- const scenarioProgressBar = "@author:kutay\r\n@owner:kutay\r\nFeature: Task Card Progress Bar\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The progress bar displays a continuous bar with the goal represented by a present\r\n\t\tGiven a Task Card component\r\n\t\tAnd the users progress is <progress>\r\n\t\tAnd the task goal is \"500\"\r\n\t\tAnd the task is not repeatable\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> shows <progress> with <unit> on the right\r\n\t\tAnd the circle on the progress bar is brand colour\r\n\t\tAnd the line behind the circle is brand colour\r\n\t\tAnd the line infront of the circle is grey\r\n\t\tAnd the gift icon has <color>\r\n\t\tAnd the gift icon shows \"500\" with <unit> below\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | unit | color |\r\n\t\t\t| 0 | ●――――――――――――――――――🎁 | $ | no |\r\n\t\t\t| 100 | ―――●―――――――――――――――🎁 | $ | no |\r\n\t\t\t| 500 | ―――――――――――――――――――🎁 | $ | yes |\r\n\t\t\t| 650 | ―――――――――――――――――――🎁 | $ | yes |\r\n\t\t\t| 1200 | ―――――――――――――――――――🎁 | $ | yes |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The progress bar can be displayed with steps instead of a continuous line\r\n\t\tGiven a Task Card component\r\n\t\tAnd the user progress is <progress>\r\n\t\tAnd the goal is \"5\"\r\n\t\tAnd steps are enabled\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> has incrementing steps up to \"5\" in increments of 1\r\n\t\tAnd the steps behind the users progress are brand colour\r\n\t\tAnd the steps infront of the users progress are grey\r\n\t\tAnd the gift icon has <color>\r\n\t\tAnd the gift icon shows \"5\" below\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | color |\r\n\t\t\t| 0 | ―――○―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 1 | ―――●―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 5 | ―――●―――●―――●―――●―――🎁 | yes |\r\n\t\t\t| 7 | ―――●―――●―――●―――●―――🎁 | yes |\r\n\t\t\t| 12 | ―――●―――●―――●―――●―――🎁 | yes |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The continuous progress bar will continue to progress for repeatable rewards\r\n\t\tGiven a Task Card component\r\n\t\tAnd the user progress is <progress>\r\n\t\tAnd the goal is \"500\"\r\n\t\tAnd it is repeatable\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> shows <progress> with <unit> to the right\r\n\t\tAnd the first <icon1> is <color1> with <text1> displayed below\r\n\t\tAnd the second <icon2> is <color2> with <text2> displayed below\r\n\t\tAnd the third <icon3> is <color3> with <text3> displayed below\r\n\t\tAnd the circle on the progress bar is brand colour\r\n\t\tAnd the line behind the circle is brand colour\r\n\t\tAnd the line infront of the circle is grey\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | unit | icon1 | color1 | text1 | icon2 | color2 | text 2 | icon3 | color3 | text 3 |\r\n\t\t\t| 250 | ――――●――――🎁―――――――🎁 | $ | NA | NA | NA | gift | greyscale | 500 | gift | greyscale | 1000 |\r\n\t\t\t| 500 | ―――――――――🎁―――――――🎁 | $ | NA | NA | NA | gift | colorful | 500 | gift | greyscale | 1000 |\r\n\t\t\t| 750 | ―――――――――🎁―――●―――🎁 | $ | NA | NA | NA | gift | colorful | 500 | gift | greyscale | 1000 |\r\n\t\t\t| 1000 | 🎁―――――――🎁―――――――🎁 | $ | gift | colorful | 500 | gift | colorful | 1000 | gift | greyscale | 1500 |\r\n\t\t\t| 1250 | 🎁―――――――🎁―――●―――🎁 | $ | gift | colorful | 500 | gift | colorful | 1000 | gift | greyscale | 1500 |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The stepped progress bar will continue to progress for repeatable rewards\r\n\t\tGiven a Task Card component\r\n\t\tAnd the user progress is <progress>\r\n\t\tAnd the goal is \"5\"\r\n\t\tAnd steps are enabled\r\n\t\tAnd it is repeatable\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> has incrementing steps up to \"5\" in increments of 1\r\n\t\tAnd the first <icon1> is <color1>\r\n\t\tAnd the second <icon2> is <color2>\r\n\t\tAnd the third <icon3> is <color3>\r\n\t\tAnd the steps behind the users progress are brand colour\r\n\t\tAnd the steps infront of the users progress are grey\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | icon1 | color1 | icon2 | color2 | icon3 | color3 |\r\n\t\t\t| 0 | ―――○―○―○―○―🎁―○―○―○―○―🎁 | NA | NA | gift | greyscale | gift | greyscale |\r\n\t\t\t| 1 | ―――●―○―○―○―🎁―○―○―○―○―🎁 | NA | NA | gift | greyscale | gift | greyscale |\r\n\t\t\t| 5 | ―――●―●―●―●―🎁―○―○―○―○―🎁 | NA | NA | gift | colorful | gift | greyscale |\r\n\t\t\t| 7 | ―――●―●―●―●―🎁―●―●―○―○―🎁 | NA | NA | gift | colorful | gift | greyscale |\r\n\t\t\t| 12 | 🎁―●―●―●―●―🎁―●―●―○―○―🎁 | gift | colorful | gift | colorful | gift | greyscale |";
5881
+ const scenarioProgressBar = "@author:kutay\r\n@owner:kutay\r\nFeature: The progress bar can be shown as a continuous line with progress and end goal. \r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The progress bar displays a continuous bar with the goal represented by a present\r\n\t\tGiven a Task Card component\r\n\t\tAnd the users progress is <progress>\r\n\t\tAnd the task goal is \"500\"\r\n\t\tAnd the task is not repeatable\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> shows <progress> with <unit> on the right\r\n\t\tAnd the circle on the progress bar is brand colour\r\n\t\tAnd the line behind the circle is brand colour\r\n\t\tAnd the line infront of the circle is grey\r\n\t\tAnd the gift icon has <color>\r\n\t\tAnd the gift icon shows \"500\" with <unit> below\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | unit | color |\r\n\t\t\t| 0 | ●――――――――――――――――――🎁 | $ | no |\r\n\t\t\t| 100 | ―――●―――――――――――――――🎁 | $ | no |\r\n\t\t\t| 500 | ―――――――――――――――――――🎁 | $ | yes |\r\n\t\t\t| 650 | ―――――――――――――――――――🎁 | $ | yes |\r\n\t\t\t| 1200 | ―――――――――――――――――――🎁 | $ | yes |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The progress bar can be displayed with steps instead of a continuous line\r\n\t\tGiven a Task Card component\r\n\t\tAnd the user progress is <progress>\r\n\t\tAnd the goal is \"5\"\r\n\t\tAnd steps are enabled\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> has incrementing steps up to \"5\" in increments of 1\r\n\t\tAnd the steps behind the users progress are brand colour\r\n\t\tAnd the steps infront of the users progress are grey\r\n\t\tAnd the gift icon has <color>\r\n\t\tAnd the gift icon shows \"5\" below\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | color |\r\n\t\t\t| 0 | ―――○―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 1 | ―――●―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 5 | ―――●―――●―――●―――●―――🎁 | yes |\r\n\t\t\t| 7 | ―――●―――●―――●―――●―――🎁 | yes |\r\n\t\t\t| 12 | ―――●―――●―――●―――●―――🎁 | yes |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The continuous progress bar will continue to progress for repeatable rewards\r\n\t\tGiven a Task Card component\r\n\t\tAnd the user progress is <progress>\r\n\t\tAnd the goal is \"500\"\r\n\t\tAnd it is repeatable\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> shows <progress> with <unit> to the right\r\n\t\tAnd the first <icon1> is <color1> with <text1> displayed below\r\n\t\tAnd the second <icon2> is <color2> with <text2> displayed below\r\n\t\tAnd the third <icon3> is <color3> with <text3> displayed below\r\n\t\tAnd the circle on the progress bar is brand colour\r\n\t\tAnd the line behind the circle is brand colour\r\n\t\tAnd the line infront of the circle is grey\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | unit | icon1 | color1 | text1 | icon2 | color2 | text 2 | icon3 | color3 | text 3 |\r\n\t\t\t| 250 | ――――●――――🎁―――――――🎁 | $ | NA | NA | NA | gift | greyscale | 500 | gift | greyscale | 1000 |\r\n\t\t\t| 500 | ―――――――――🎁―――――――🎁 | $ | NA | NA | NA | gift | colorful | 500 | gift | greyscale | 1000 |\r\n\t\t\t| 750 | ―――――――――🎁―――●―――🎁 | $ | NA | NA | NA | gift | colorful | 500 | gift | greyscale | 1000 |\r\n\t\t\t| 1000 | 🎁―――――――🎁―――――――🎁 | $ | gift | colorful | 500 | gift | colorful | 1000 | gift | greyscale | 1500 |\r\n\t\t\t| 1250 | 🎁―――――――🎁―――●―――🎁 | $ | gift | colorful | 500 | gift | colorful | 1000 | gift | greyscale | 1500 |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The stepped progress bar will continue to progress for repeatable rewards\r\n\t\tGiven a Task Card component\r\n\t\tAnd the user progress is <progress>\r\n\t\tAnd the goal is \"5\"\r\n\t\tAnd steps are enabled\r\n\t\tAnd it is repeatable\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> has incrementing steps up to \"5\" in increments of 1\r\n\t\tAnd the first <icon1> is <color1>\r\n\t\tAnd the second <icon2> is <color2>\r\n\t\tAnd the third <icon3> is <color3>\r\n\t\tAnd the steps behind the users progress are brand colour\r\n\t\tAnd the steps infront of the users progress are grey\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | icon1 | color1 | icon2 | color2 | icon3 | color3 |\r\n\t\t\t| 0 | ―――○―○―○―○―🎁―○―○―○―○―🎁 | NA | NA | gift | greyscale | gift | greyscale |\r\n\t\t\t| 1 | ―――●―○―○―○―🎁―○―○―○―○―🎁 | NA | NA | gift | greyscale | gift | greyscale |\r\n\t\t\t| 5 | ―――●―●―●―●―🎁―○―○―○―○―🎁 | NA | NA | gift | colorful | gift | greyscale |\r\n\t\t\t| 7 | ―――●―●―●―●―🎁―●―●―○―○―🎁 | NA | NA | gift | colorful | gift | greyscale |\r\n\t\t\t| 12 | 🎁―●―●―●―●―🎁―●―●―○―○―🎁 | gift | colorful | gift | colorful | gift | greyscale |";
5809
5882
 
5810
5883
  const ResizerStylesheet = `
5811
5884
 
@@ -9299,14 +9372,7 @@ const EmailVerifiedReadme = "# sqm-portal-verify-email\r\n\r\n\r\n\r\n<!-- Auto
9299
9372
  const PortalTemplates_stories = {
9300
9373
  title: "Templates / Portal",
9301
9374
  };
9302
- // slot="footer"
9303
- // support-email="john@foodservicerewards.com"
9304
- // terms-link="example.com"
9305
- // faq-link="example.com"
9306
- // padding="large"
9307
- // show-powered-by="false"
9308
- // powered-by-link="https://www.saasquatch.com/"
9309
- function useTemplate$1(templateString) {
9375
+ function useTemplate$2(templateString) {
9310
9376
  const [editedTemplate, setEditedTemplate] = stencilHooks_module.useState(templateString);
9311
9377
  const [previewTemplate, setPreviewTemplate] = stencilHooks_module.useState(templateString);
9312
9378
  return {
@@ -9325,16 +9391,16 @@ function TemplateView$1(props) {
9325
9391
  index.h("div", { innerHTML: states.previewTemplate }),
9326
9392
  ];
9327
9393
  }
9328
- function Buttons({ callbacks, states, template }) {
9394
+ function Buttons$1({ callbacks, states, template }) {
9329
9395
  return (index.h("div", null,
9330
9396
  index.h("button", { onClick: () => callbacks.setPreviewTemplate(states.editedTemplate) }, "Update Preview"),
9331
9397
  index.h("button", { style: { marginLeft: "10px" }, onClick: () => callbacks.setPreviewTemplate(template) }, "Preview Dashboard")));
9332
9398
  }
9333
- function DefaultTemplateView(props) {
9399
+ function DefaultTemplateView$1(props) {
9334
9400
  const { states, callbacks } = props;
9335
9401
  return (index.h("div", { style: { height: "50vh" } },
9336
9402
  index.h("textarea", { style: { width: "100%", height: "300px" }, onChange: (e) => callbacks.setEditedTemplate(e.target.value) }, states.editedTemplate),
9337
- index.h(Buttons, { states: states, callbacks: callbacks, template: props.template }),
9403
+ index.h(Buttons$1, { states: states, callbacks: callbacks, template: props.template }),
9338
9404
  index.h("h2", null, "Navigation"),
9339
9405
  index.h("div", { style: {
9340
9406
  display: "grid",
@@ -9355,58 +9421,58 @@ function DefaultTemplateView(props) {
9355
9421
  index.h("div", { innerHTML: states.previewTemplate })));
9356
9422
  }
9357
9423
  const DefaultPortal = createHookStory(() => {
9358
- const { states, callbacks } = useTemplate$1(portalTemplate);
9359
- return (index.h(DefaultTemplateView, { states: states, callbacks: callbacks, template: portalTemplateWithDashboard }));
9424
+ const { states, callbacks } = useTemplate$2(portalTemplate);
9425
+ return (index.h(DefaultTemplateView$1, { states: states, callbacks: callbacks, template: portalTemplateWithDashboard }));
9360
9426
  });
9361
9427
  const MultiProgramPortal = createHookStory(() => {
9362
- const { states, callbacks } = useTemplate$1(multiProgramTemplate);
9363
- return (index.h(DefaultTemplateView, { states: states, callbacks: callbacks, template: multiProgramTemplateWithDashboard }));
9428
+ const { states, callbacks } = useTemplate$2(multiProgramTemplate);
9429
+ return (index.h(DefaultTemplateView$1, { states: states, callbacks: callbacks, template: multiProgramTemplateWithDashboard }));
9364
9430
  });
9365
9431
  const LeadSubmitPortal = createHookStory(() => {
9366
- const { states, callbacks } = useTemplate$1(portalLeadSubmitTemplate);
9367
- return (index.h(DefaultTemplateView, { states: states, callbacks: callbacks, template: portalLeadSubmitTemplateWithDashboard, leadSubmit: true }));
9432
+ const { states, callbacks } = useTemplate$2(portalLeadSubmitTemplate);
9433
+ return (index.h(DefaultTemplateView$1, { states: states, callbacks: callbacks, template: portalLeadSubmitTemplateWithDashboard, leadSubmit: true }));
9368
9434
  });
9369
9435
  const Login = createHookStory(() => {
9370
- const { states, callbacks } = useTemplate$1(loginTemplate);
9436
+ const { states, callbacks } = useTemplate$2(loginTemplate);
9371
9437
  return (index.h(TemplateView$1, { states: states, callbacks: callbacks, readme: LoginReadme }));
9372
9438
  });
9373
9439
  const ForgotPassword = createHookStory(() => {
9374
- const { states, callbacks } = useTemplate$1(forgotPasswordTemplate);
9440
+ const { states, callbacks } = useTemplate$2(forgotPasswordTemplate);
9375
9441
  return (index.h(TemplateView$1, { states: states, callbacks: callbacks, readme: ForgotPasswordReadme }));
9376
9442
  });
9377
9443
  const Register = createHookStory(() => {
9378
- const { states, callbacks } = useTemplate$1(registerTemplate);
9444
+ const { states, callbacks } = useTemplate$2(registerTemplate);
9379
9445
  return (index.h(TemplateView$1, { states: states, callbacks: callbacks, readme: RegisterReadme }));
9380
9446
  });
9381
9447
  const Dashboard$1 = createHookStory(() => {
9382
- const { states, callbacks } = useTemplate$1(dashboardTemplate);
9448
+ const { states, callbacks } = useTemplate$2(dashboardTemplate);
9383
9449
  return index.h(TemplateView$1, { states: states, callbacks: callbacks });
9384
9450
  });
9385
9451
  const LeadSubmitIframe = createHookStory(() => {
9386
- const { states, callbacks } = useTemplate$1(leadSubmitTemplate);
9452
+ const { states, callbacks } = useTemplate$2(leadSubmitTemplate);
9387
9453
  return (index.h(TemplateView$1, { states: states, callbacks: callbacks, readme: ReferralIframeReadme }));
9388
9454
  });
9389
9455
  const Activity$1 = createHookStory(() => {
9390
- const { states, callbacks } = useTemplate$1(activityTemplate);
9456
+ const { states, callbacks } = useTemplate$2(activityTemplate);
9391
9457
  return index.h(TemplateView$1, { states: states, callbacks: callbacks });
9392
9458
  });
9393
9459
  const EditProfile$2 = createHookStory(() => {
9394
- const { states, callbacks } = useTemplate$1(editProfileTemplate);
9460
+ const { states, callbacks } = useTemplate$2(editProfileTemplate);
9395
9461
  return (index.h(TemplateView$1, { states: states, callbacks: callbacks, readme: EditProfileReadme }));
9396
9462
  });
9397
9463
  const ResetPassword = createHookStory(() => {
9398
- const { states, callbacks } = useTemplate$1(resetPasswordTemplate);
9464
+ const { states, callbacks } = useTemplate$2(resetPasswordTemplate);
9399
9465
  return (index.h(TemplateView$1, { states: states, callbacks: callbacks, readme: ResetPasswordReadme }));
9400
9466
  });
9401
9467
  const EmailVerification = createHookStory(() => {
9402
- const { states, callbacks } = useTemplate$1(emailVerificationTemplate);
9468
+ const { states, callbacks } = useTemplate$2(emailVerificationTemplate);
9403
9469
  return (index.h(TemplateView$1, { states: states, callbacks: callbacks, readme: EmailVerificationReadme }));
9404
9470
  });
9405
9471
  const EmailVerified = createHookStory(() => {
9406
- const { states, callbacks } = useTemplate$1(emailVerifiedTemplate);
9472
+ const { states, callbacks } = useTemplate$2(emailVerifiedTemplate);
9407
9473
  return (index.h(TemplateView$1, { states: states, callbacks: callbacks, readme: EmailVerifiedReadme }));
9408
9474
  });
9409
- const Widget = createHookStory(() => {
9475
+ const Widget$1 = createHookStory(() => {
9410
9476
  return (index.h("sqb-widget", { "widget-type": "p/Vacay-referral/w/referrerWidget", demoData: {
9411
9477
  data: {
9412
9478
  html: dashboardTemplate,
@@ -9414,11 +9480,11 @@ const Widget = createHookStory(() => {
9414
9480
  } }));
9415
9481
  });
9416
9482
  const ResetPasswordEmail = createHookStory(() => {
9417
- const { states, callbacks } = useTemplate$1(resetPasswordEmailTemplate);
9483
+ const { states, callbacks } = useTemplate$2(resetPasswordEmailTemplate);
9418
9484
  return index.h(TemplateView$1, { states: states, callbacks: callbacks });
9419
9485
  });
9420
9486
  const VerifyEmail = createHookStory(() => {
9421
- const { states, callbacks } = useTemplate$1(verifyEmailTemplate);
9487
+ const { states, callbacks } = useTemplate$2(verifyEmailTemplate);
9422
9488
  return index.h(TemplateView$1, { states: states, callbacks: callbacks });
9423
9489
  });
9424
9490
 
@@ -9438,7 +9504,7 @@ const PortalTemplates = /*#__PURE__*/Object.freeze({
9438
9504
  ResetPassword: ResetPassword,
9439
9505
  EmailVerification: EmailVerification,
9440
9506
  EmailVerified: EmailVerified,
9441
- Widget: Widget,
9507
+ Widget: Widget$1,
9442
9508
  ResetPasswordEmail: ResetPasswordEmail,
9443
9509
  VerifyEmail: VerifyEmail
9444
9510
  });
@@ -9805,7 +9871,7 @@ const NameFields$1 = /*#__PURE__*/Object.freeze({
9805
9871
  NameFieldsWithErrors: NameFieldsWithErrors
9806
9872
  });
9807
9873
 
9808
- const scenario$i = "@author:derek\r\n@owner:\r\nFeature: Reward Exchange List\r\n\r\n The Reward Exchange List gives end users the power to exchange their rewards for other rewards.\r\n It populates a list from the reward exchange rules set up on a given tenant.\r\n\r\n Background:\r\n Given a tenant with reward exchange rules\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no visible exchanges\r\n Given a user with no visible exchanges\r\n When they view the reward exchange\r\n Then no exchange options are displayed\r\n And they see an image of a present\r\n And \"Redeem Rewards\" in bold\r\n And \"Use your points to redeem rewards once they become available\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no visible exchanges\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward exchange\r\n Then they see the custom empty state\r\n\r\n @motivating\r\n @ui\r\n Scenario: A Loading Skeleton is displayed when the reward exchange rules are loading\r\n Given a user\r\n When they load the reward exchange list\r\n Then they see a loading Skeleton\r\n And it has 8 skeleton cards\r\n When the reward exchange rules have loaded\r\n Then the skeleton is replaced with reward exchange options\r\n\r\n @motivating\r\n Scenario: An error banner appears when the reward exchange list fails to load\r\n Given a user trying to view the reward exchange list\r\n But it fails to load\r\n Then an error banner is displayed\r\n And it displays \"Unable to load reward exchange list. Please try again\"\r\n\r\n @motivating\r\n @ui\r\n Scenario: The exchange progress bar progresses through the exchange process\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the process bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with green outline, white fill and number 1 in green |\r\n | Step 2 `Select` title in grey |\r\n | Step 2 circle with grey fill and number 2 in white |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | lines between all steps are greyed out |\r\n When they continue to the selection page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with green outline, white fill and number 2 in green |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | Green line between step 1 and 2 |\r\n | Grey line between step 2 and 3 |\r\n When they continue to the confirmation page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with green outline, white fill and number 3 in green |\r\n | Green line between all steps |\r\n When they continue to the redemption page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with white checkmark and green fill |\r\n | Green line between all steps |\r\n\r\n @motivating\r\n Scenario: Users must choose a reward exchange option to continue to the selection page\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the 'Continue' button is disabled\r\n When they select a reward exchange card\r\n Then the card is outlined in brand colour with a brand colour cirlcular check box icon in the top right\r\n And the continue button is no longer disabled\r\n When they click \"Continue\"\r\n Then they are brought to the selection page\r\n\r\n @motivating\r\n @ui\r\n Scenario: Reward exchange rule names and images are used in the reward exchange cards\r\n Given a tenant reward exchange rule\r\n And it has name \"My Visa Exchange Rule\"\r\n And it has an image\r\n When a user views the reward exchange list\r\n Then they see a exchange card with title \"My Visa Exchange Rule\"\r\n And the exchange image on the left hand side of the card\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange source values are displayed on reward exchange cards\r\n Given a <type> reward exchange rule\r\n When a user views the reward exchange list\r\n Then they see <text> under the name on the exchange option cards\r\n And the pretty values are localized to a user locale\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | the exchange source pretty value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_CREDIT_REWARD | the exchange source min pretty value to the source max pretty value |\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange cards can display customized error messages\r\n Given a reward exchange rule\r\n And it has <availabilityPredicate>\r\n And the reward exchange list has prop \"not-available-error\" with <value>\r\n When the user views the reward exchange list\r\n Then the card for the reward exchange rule is disabled\r\n And <message> is displayed\r\n Examples:\r\n | availabilityPredicate | value | message |\r\n | 'champion' in user.segments ? \"NOT_CHAMPION\" : true | {unavailableReasonCode, select, NOT_CHAMPION {Sorry must be a champion!} other {unavailableReasonCode} } | Sorry must be a champion! |\r\n | user.customFields.purchaseCount < 10 ? \"MORE_PURCHASE\" : true | {unavailableReasonCode, select, MORE_PURCHASE {Complete 10 purchases to unlock} other {unavailableReasonCode} } | Complete 10 purchases to unlock |\r\n\r\n @motivating\r\n Scenario: Exchange options are disabled if they put a user over the W9 limit\r\n Given a user who is approaching their W9 limit\r\n And a reward exchange rule\r\n And its destination reward has a US taxable value that would put the user over their limit\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a \"US Tax Limit\" error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n\r\n @motivating\r\n Scenario Outline: Exchange options are disabled if a users lacks enough credit to redeem\r\n Given a <type> reward exchange rule\r\n But the user lacks enough credit to exchange for it\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a <text> error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_CREDIT_REWARD | {prettySourceMinValue} required |\r\n\r\n @motivating\r\n Scenario: Users can go back to the Rewards page from the Select page\r\n Given a user viewing the Select page\r\n Then they see a \"Cancel\" text button\r\n And a \"Continue to confirmation\" brand colour button in the bottom right corner\r\n When they click \"Cancel\"\r\n Then they return to the Rewards page\r\n\r\n @motivating\r\n Scenario: Users can go back to the Select Page from the Confirm page\r\n Given a user viewing the Confirm page\r\n Then they see a \"Back\" text button\r\n And a \"Redeem\" brand colour button in the bottom right corner\r\n When they click \"Back\"\r\n Then they return to the Select Page\r\n\r\n @motivating\r\n Scenario: Reward rules with visibility predicates that evaluates to false are not shown\r\n Given a tenant reward exchange rule with visibility predicates that evaluates to false\r\n When a user views the reward exchange list\r\n Then they do not see the card for that reward exchange rule\r\n\r\n @motivating\r\n Scenario Outline: Users can choose their reward option for variable rewards on the Select page\r\n Given a <type> exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange description |\r\n | select list with all exchange options using pretty values, destination reward above source reward |\r\n Examples:\r\n | type |\r\n | STEPPED_FIXED_GLOBAL_REWARD |\r\n | VARIABLE_GLOBAL_REWARD |\r\n | VARIABLE_CREDIT_REWARD |\r\n\r\n @motivating\r\n Scenario: Users who selected a fixed exchange rule see exchange information on the Select page\r\n Given a \"FIXED_GLOBAL_REWARD\" exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange source pretty value displayed in brand colour |\r\n | exchange description |\r\n\r\n @motivating\r\n Scenario Outline: Users selection variable rewards can only select rewards they are eligible to exchange for\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see a drop down with all the reward exchange selections\r\n When they click on the drop down\r\n But they are not eligible for all of the exchanges options <dueToReason>\r\n Then the ineligble options are disabled\r\n And under the source value is <text>\r\n Examples:\r\n | type | dueToReason | text |\r\n | STEPPED_FIXED_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_CREDIT_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_CREDIT_REWARD | w9 | US Tax Limit |\r\n\r\n @motivating\r\n Scenario Outline: The Confirm page allows users to view their exchange before committing\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they select the exchange\r\n And they progress to Confirm page\r\n Then they see a row with title \"Reward\"\r\n And it contains the exchange name\r\n And it contains the exchange image\r\n And they <maySee> a row with title \"Reward Amount\"\r\n And it <mayContain> <amountTitle>\r\n And they see a row with title \"Cost to Redeem\"\r\n And it contains the source reward pretty value in bolded text\r\n Examples:\r\n | type | maySee | mayContain | amountTitle |\r\n | FIXED_GLOBAL_REWARD | don't | doesn't contain | N/A |\r\n | VARIABLE_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | VARIABLE_CREDIT_REWARD | see | contains | the pretty destination value |\r\n\r\n @motivating\r\n Scenario: An error banner is displayed if an error occurs during redemeption\r\n Given a user has selected a reward to exchange\r\n And is on the confirmation page\r\n When they click \"Redeem\"\r\n But an error occurs\r\n Then an error banner appears\r\n And it contains details about the error\r\n And the reward exchange is not completed\r\n\r\n @motivating\r\n Scenario: Confetti is displayed when a reward exchange succeeds\r\n Given a user has selected a reward to exchange\r\n And they are on the confirmation page\r\n When they click \"Redeem\"\r\n And the exchange is successful\r\n Then they see confetti centered on the success page\r\n And they see text describing what they exchanged for their new reward\r\n And they see a \"Done\" brand colour button\r\n When they click \"Done\"\r\n Then they see the Rewards page\r\n\r\n @motivating\r\n Scenario: Fuel tank codes are shown when a reward exchange succeeds\r\n Given a user has selected to exchange for a fuel tank reward\r\n When they complete the reward exchange\r\n And are on the success page\r\n Then they see a textbox with their fuel tank code\r\n And a clipboard icon\r\n When they click the clipboard icon\r\n Then their fuel tank code is copied to their clipboard\r\n\r\n @motivating\r\n Scenario Outline: Users can exchange for any type of reward\r\n Given a <type> reward exchange rule for a <reward>\r\n And a user who has enough source credit to exchange for the reward\r\n When they go through the exchange flow\r\n And exchange for their reward\r\n Then their credit is exchanged for the <reward>\r\n Examples:\r\n | type | reward |\r\n | FIXED_GLOBAL_REWARD | gift card |\r\n | FIXED_GLOBAL_REWARD | fuel tank code |\r\n | FIXED_GLOBAL_REWARD | discount |\r\n | FIXED_GLOBAL_REWARD | credit reward |\r\n | STEPPED_FIXED_GLOBAL_REWARD | gift card |\r\n | STEPPED_FIXED_GLOBAL_REWARD | discount |\r\n | STEPPED_FIXED_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_GLOBAL_REWARD | gift card |\r\n | VARIABLE_GLOBAL_REWARD | discount |\r\n | VARIABLE_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_CREDIT_REWARD | credit reward |";
9874
+ const scenario$i = "@author:derek\r\n@owner:\r\nFeature: Reward Exchange List\r\n\r\n The Reward Exchange List gives end users the power to exchange their rewards for other rewards.\r\n It populates a list from the reward exchange rules set up on a given tenant.\r\n\r\n Background:\r\n Given a tenant with reward exchange rules\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no visible exchanges\r\n Given a user with no visible exchanges\r\n When they view the reward exchange\r\n Then no exchange options are displayed\r\n And they see an image of a present\r\n And \"Redeem Rewards\" in bold\r\n And \"Use your points to redeem rewards once they become available\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no visible exchanges\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward exchange\r\n Then they see the custom empty state\r\n\r\n @motivating\r\n @ui\r\n Scenario: A Loading Skeleton is displayed when the reward exchange rules are loading\r\n Given a user\r\n When they load the reward exchange list\r\n Then they see a loading Skeleton\r\n And it has 8 skeleton cards\r\n When the reward exchange rules have loaded\r\n Then the skeleton is replaced with reward exchange options\r\n\r\n @motivating\r\n Scenario: An error banner appears when the reward exchange list fails to load\r\n Given a user trying to view the reward exchange list\r\n But it fails to load\r\n Then an error banner is displayed\r\n And it displays \"Unable to load reward exchange list. Please try again\"\r\n\r\n @motivating\r\n @ui\r\n Scenario: The exchange progress bar progresses through the exchange process\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the process bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with green outline, white fill and number 1 in green |\r\n | Step 2 `Select` title in grey |\r\n | Step 2 circle with grey fill and number 2 in white |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | lines between all steps are greyed out |\r\n When they continue to the selection page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with green outline, white fill and number 2 in green |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | Green line between step 1 and 2 |\r\n | Grey line between step 2 and 3 |\r\n When they continue to the confirmation page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with green outline, white fill and number 3 in green |\r\n | Green line between all steps |\r\n When they continue to the redemption page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with white checkmark and green fill |\r\n | Green line between all steps |\r\n\r\n @motivating\r\n Scenario: Users must choose a reward exchange option to continue to the selection page\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the 'Continue' button is disabled\r\n When they select a reward exchange card\r\n Then the card is outlined in brand colour with a brand colour cirlcular check box icon in the top right\r\n And the continue button is no longer disabled\r\n When they click \"Continue\"\r\n Then they are brought to the selection page\r\n\r\n @motivating\r\n @ui\r\n Scenario: Reward exchange rule names and images are used in the reward exchange cards\r\n Given a tenant reward exchange rule\r\n And it has name \"My Visa Exchange Rule\"\r\n And it has an image\r\n When a user views the reward exchange list\r\n Then they see a exchange card with title \"My Visa Exchange Rule\"\r\n And the exchange image on the left hand side of the card\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange source values are displayed on reward exchange cards\r\n Given a <type> reward exchange rule\r\n When a user views the reward exchange list\r\n Then they see <text> under the name on the exchange option cards\r\n And the pretty values are localized to a user locale\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | the exchange source pretty value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_CREDIT_REWARD | the exchange source min pretty value to the source max pretty value |\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange cards can display customized error messages\r\n Given a reward exchange rule\r\n And it has <availabilityPredicate>\r\n And the reward exchange list has prop \"not-available-error\" with <value>\r\n When the user views the reward exchange list\r\n Then the card for the reward exchange rule is disabled\r\n And <message> is displayed\r\n Examples:\r\n | availabilityPredicate | value | message |\r\n | 'champion' in user.segments ? \"NOT_CHAMPION\" : true | {unavailableReasonCode, select, NOT_CHAMPION {Sorry must be a champion!} other {unavailableReasonCode} } | Sorry must be a champion! |\r\n | user.customFields.purchaseCount < 10 ? \"MORE_PURCHASE\" : true | {unavailableReasonCode, select, MORE_PURCHASE {Complete 10 purchases to unlock} other {unavailableReasonCode} } | Complete 10 purchases to unlock |\r\n\r\n @motivating\r\n Scenario: Exchange options are disabled if they put a user over the W9 limit\r\n Given a user who is approaching their W9 limit\r\n And a reward exchange rule\r\n And its destination reward has a US taxable value that would put the user over their limit\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a \"US Tax Limit\" error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n\r\n @motivating\r\n Scenario Outline: Exchange options are disabled if a users lacks enough credit to redeem\r\n Given a <type> reward exchange rule\r\n But the user lacks enough credit to exchange for it\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a <text> error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_CREDIT_REWARD | {prettySourceMinValue} required |\r\n\r\n @motivating\r\n Scenario: Users can go back to the Rewards page from the Select page\r\n Given a user viewing the Select page\r\n Then they see a \"Cancel\" text button\r\n And a \"Continue to confirmation\" brand colour button in the bottom right corner\r\n When they click \"Cancel\"\r\n Then they return to the Rewards page\r\n\r\n @motivating\r\n Scenario: Users can go back to the Select Page from the Confirm page\r\n Given a user viewing the Confirm page\r\n Then they see a \"Back\" text button\r\n And a \"Redeem\" brand colour button in the bottom right corner\r\n When they click \"Back\"\r\n Then they return to the Select Page\r\n\r\n @motivating\r\n Scenario: Reward rules with visibility predicates that evaluates to false are not shown\r\n Given a tenant reward exchange rule with visibility predicates that evaluates to false\r\n When a user views the reward exchange list\r\n Then they do not see the card for that reward exchange rule\r\n\r\n @motivating\r\n Scenario Outline: Users can choose their reward option for variable rewards on the Select page\r\n Given a <type> exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange description |\r\n | select list with all exchange options using pretty values, destination reward above source reward |\r\n Examples:\r\n | type |\r\n | STEPPED_FIXED_GLOBAL_REWARD |\r\n | VARIABLE_GLOBAL_REWARD |\r\n | VARIABLE_CREDIT_REWARD |\r\n\r\n @motivating\r\n Scenario: Users who selected a fixed exchange rule see exchange information on the Select page\r\n Given a \"FIXED_GLOBAL_REWARD\" exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange source pretty value displayed in brand colour |\r\n | exchange description |\r\n\r\n @motivating\r\n Scenario Outline: Users selection variable rewards can only select rewards they are eligible to exchange for\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see a drop down with all the reward exchange selections\r\n When they click on the drop down\r\n But they are not eligible for all of the exchanges options <dueToReason>\r\n Then the ineligble options are disabled\r\n And under the source value is <text>\r\n Examples:\r\n | type | dueToReason | text |\r\n | STEPPED_FIXED_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_CREDIT_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_CREDIT_REWARD | W9 | US Tax Limit |\r\n\r\n @motivating\r\n Scenario Outline: The Confirm page allows users to view their exchange before committing\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they select the exchange\r\n And they progress to Confirm page\r\n Then they see a row with title \"Reward\"\r\n And it contains the exchange name\r\n And it contains the exchange image\r\n And they <maySee> a row with title \"Reward Amount\"\r\n And it <mayContain> <amountTitle>\r\n And they see a row with title \"Cost to Redeem\"\r\n And it contains the source reward pretty value in bolded text\r\n Examples:\r\n | type | maySee | mayContain | amountTitle |\r\n | FIXED_GLOBAL_REWARD | don't | doesn't contain | N/A |\r\n | VARIABLE_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | VARIABLE_CREDIT_REWARD | see | contains | the pretty destination value |\r\n\r\n @motivating\r\n Scenario: An error banner is displayed if an error occurs during redemeption\r\n Given a user has selected a reward to exchange\r\n And is on the confirmation page\r\n When they click \"Redeem\"\r\n But an error occurs\r\n Then an error banner appears\r\n And it contains details about the error\r\n And the reward exchange is not completed\r\n\r\n @motivating\r\n Scenario: Confetti is displayed when a reward exchange succeeds\r\n Given a user has selected a reward to exchange\r\n And they are on the confirmation page\r\n When they click \"Redeem\"\r\n And the exchange is successful\r\n Then they see confetti centered on the success page\r\n And they see text describing what they exchanged for their new reward\r\n And they see a \"Done\" brand colour button\r\n When they click \"Done\"\r\n Then they see the Rewards page\r\n\r\n @motivating\r\n Scenario: Fuel tank codes are shown when a reward exchange succeeds\r\n Given a user has selected to exchange for a fuel tank reward\r\n When they complete the reward exchange\r\n And are on the success page\r\n Then they see a textbox with their fuel tank code\r\n And a clipboard icon\r\n When they click the clipboard icon\r\n Then their fuel tank code is copied to their clipboard\r\n\r\n @motivating\r\n Scenario Outline: Users can exchange for any type of reward\r\n Given a <type> reward exchange rule for a <reward>\r\n And a user who has enough source credit to exchange for the reward\r\n When they go through the exchange flow\r\n And exchange for their reward\r\n Then their credit is exchanged for the <reward>\r\n Examples:\r\n | type | reward |\r\n | FIXED_GLOBAL_REWARD | gift card |\r\n | FIXED_GLOBAL_REWARD | fuel tank code |\r\n | FIXED_GLOBAL_REWARD | discount |\r\n | FIXED_GLOBAL_REWARD | credit reward |\r\n | STEPPED_FIXED_GLOBAL_REWARD | gift card |\r\n | STEPPED_FIXED_GLOBAL_REWARD | discount |\r\n | STEPPED_FIXED_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_GLOBAL_REWARD | gift card |\r\n | VARIABLE_GLOBAL_REWARD | discount |\r\n | VARIABLE_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_CREDIT_REWARD | credit reward |";
9809
9875
 
9810
9876
  const RewardExchangeList_stories = {
9811
9877
  title: "Components/Reward Exchange List",
@@ -9941,7 +10007,7 @@ const ProgramExplainerStep$1 = /*#__PURE__*/Object.freeze({
9941
10007
  ProgramExplainerStepCustom: ProgramExplainerStepCustom
9942
10008
  });
9943
10009
 
9944
- const scenario$l = "@author:derek\r\n@owner:logan\r\nFeature: Brand Configuration\r\n\r\n\t@motivating\r\n\tScenario: The brand components creates a colour pallet from a brand colour and applies it to children\r\n\t\tGiven a brand component with \"brand-color\" \"#4225c4\"\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the following css variables are set\r\n\t\t\t| variable | value |\r\n\t\t\t| --sl-color-primary-50 | hsla(251, 68%, 95%, 1) |\r\n\t\t\t| --sl-color-primary-100 | hsla(251, 68%, 86%, 1) |\r\n\t\t\t| --sl-color-primary-200 | hsla(251, 68%, 76%, 1) |\r\n\t\t\t| --sl-color-primary-300 | hsla(251, 68%, 66%, 1) |\r\n\t\t\t| --sl-color-primary-400 | hsla(251, 68%, 56%, 1) |\r\n\t\t\t| --sl-color-primary-500 | hsla(251, 68%, 46%, 1) |\r\n\t\t\t| --sl-color-primary-600 | hsla(251, 68%, 39%, 1) |\r\n\t\t\t| --sl-color-primary-700 | hsla(251, 68%, 32%, 1) |\r\n\t\t\t| --sl-color-primary-800 | hsla(251, 68%, 25%, 1) |\r\n\t\t\t| --sl-color-primary-900 | hsla(251, 68%, 18%, 1) |\r\n\t\t\t| --sl-color-primary-950 | hsla(251, 68%, 15%, 1) |\r\n\t\t\t| --sl-focus-ring-color-primary | var(--sl-color-primary-100) |\r\n\t\t\t| --sl-input-border-color-focus | var(--sl-color-primary-500) |\r\n\t\t\t| --sl-color-primary-hue | var(--sl-color-primary-500) |\r\n\t\tAnd they are applied to the children components\r\n\t\tBut they are not applied to any components outside of the brand component\r\n\t\tAnd they are not applied to any vanilla components\r\n\r\n\t@minutae\r\n\tScenario Outline: The brand colour can be hex, HSL or rgb\r\n\t\tGiven a brand component with \"brand-color\" <colour>\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the colour is used to create a brand palete\r\n\t\tAnd it is applied to the children components\r\n\t\tExamples:\r\n\t\t\t| colour |\r\n\t\t\t| #4225c4 |\r\n\t\t\t| rgb(66, 37, 196) |\r\n\t\t\t| hsl(251, 68%, 46%) |\r\n\t\t\t| hsla(251, 68%, 46%, 1) |\r\n\r\n\t@motivating\r\n\tScenario: The brand component applies a background colour to child\r\n\t\tGiven a brand component with \"background\" \"#ABB8C3\"\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the following css variables are set\r\n\t\t\t| variable | value |\r\n\t\t\t| --sqm-portal-background | #ABB8C3 |\r\n\t\tAnd they are applied to the children components\r\n\t\tAnd children components using \"sqm-portal-background\" have \"#ABB8C3\" coloured backgrounds\r\n\r\n\t@motivating\r\n\tScenario: The brand component can apply a brand font to children components\r\n\t\tGiven a brand component with \"brand-font\" \"Nunito Sans\"\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the following css variables are set\r\n\t\t\t| variable | value |\r\n\t\t\t| --sl-font-sans | \"Nunito Sans\", arial |\r\n\t\t\t| --sl-input-font-family | \"Nunito Sans\", arial |\r\n\t\t\t| --sl-tooltip-font-family | \"Nunito Sans\", arial |\r\n\t\t\t| font-family | \"Nunito Sans\", arial |\r\n\t\tAnd they are applied to the children components\r\n\t\tAnd the children component's text is \"Nunito Sans\"";
10010
+ const scenario$l = "@author:derek\r\n@owner:logan\r\nFeature: Brand Configuration\r\n\r\n\t@motivating\r\n\tScenario: The brand components creates a colour pallet from a brand colour and applies it to children\r\n\t\tGiven a brand component with \"brand-color\" \"#4225c4\"\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the following css variables are set\r\n\t\t\t| variable | value |\r\n\t\t\t| --sl-color-primary-50 | hsla(251, 68%, 95%, 1) |\r\n\t\t\t| --sl-color-primary-100 | hsla(251, 68%, 86%, 1) |\r\n\t\t\t| --sl-color-primary-200 | hsla(251, 68%, 76%, 1) |\r\n\t\t\t| --sl-color-primary-300 | hsla(251, 68%, 66%, 1) |\r\n\t\t\t| --sl-color-primary-400 | hsla(251, 68%, 56%, 1) |\r\n\t\t\t| --sl-color-primary-500 | hsla(251, 68%, 46%, 1) |\r\n\t\t\t| --sl-color-primary-600 | hsla(251, 68%, 39%, 1) |\r\n\t\t\t| --sl-color-primary-700 | hsla(251, 68%, 32%, 1) |\r\n\t\t\t| --sl-color-primary-800 | hsla(251, 68%, 25%, 1) |\r\n\t\t\t| --sl-color-primary-900 | hsla(251, 68%, 18%, 1) |\r\n\t\t\t| --sl-color-primary-950 | hsla(251, 68%, 15%, 1) |\r\n\t\t\t| --sl-focus-ring-color-primary | var(--sl-color-primary-100) |\r\n\t\t\t| --sl-input-border-color-focus | var(--sl-color-primary-500) |\r\n\t\t\t| --sl-color-primary-hue | var(--sl-color-primary-500) |\r\n\t\tAnd they are applied to the children components\r\n\t\tBut they are not applied to any components outside of the brand component\r\n\t\tAnd they are not applied to any vanilla components\r\n\r\n\t@minutae\r\n\tScenario Outline: The brand colour can be hex, HSL or rgb\r\n\t\tGiven a brand component with \"brand-color\" <colour>\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the colour is used to create a brand palete\r\n\t\tAnd it is applied to the children components\r\n\t\tExamples:\r\n\t\t\t| colour |\r\n\t\t\t| #4225c4 |\r\n\t\t\t| rgb(66, 37, 196) |\r\n\t\t\t| hsl(251, 68%, 46%) |\r\n\t\t\t| hsla(251, 68%, 46%, 1) |\r\n\r\n\t@motivating\r\n\tScenario: The brand component can apply a brand font to children components\r\n\t\tGiven a brand component with \"brand-font\" \"Nunito Sans\"\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the following css variables are set\r\n\t\t\t| variable | value |\r\n\t\t\t| --sl-font-sans | \"Nunito Sans\", arial |\r\n\t\t\t| --sl-input-font-family | \"Nunito Sans\", arial |\r\n\t\t\t| --sl-tooltip-font-family | \"Nunito Sans\", arial |\r\n\t\t\t| font-family | \"Nunito Sans\", arial |\r\n\t\tAnd they are applied to the children components\r\n\t\tAnd the children component's text is \"Nunito Sans\"";
9945
10011
 
9946
10012
  const SqmBrand_stories = {
9947
10013
  title: "Components/Brand",
@@ -10335,7 +10401,79 @@ const FullWidth = () => (index.h("div", { style: { width: "1000px", border: "1px
10335
10401
  index.h("sqm-portal-container", { gap: "xxx-large", direction: "row", maxWidth: "100%" },
10336
10402
  index.h("sqm-share-button", { icon: "envelope", medium: "email", size: "medium", class: "hydrated" }, "Email a friend"),
10337
10403
  index.h("sqm-share-button", { medium: "twitter", size: "medium", class: "hydrated" }, "Tweet about us"),
10338
- index.h("sqm-share-button", { medium: "facebook", size: "medium", class: "hydrated" }, "Share on Facebook"))));
10404
+ index.h("sqm-share-button", { medium: "facebook", size: "medium", class: "hydrated" }, "Share on Facebook"))));
10405
+ const SpaceBetween = () => {
10406
+ return (index.h("div", { style: { width: "1000px", border: "1px dashed grey" } },
10407
+ index.h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "space-between" },
10408
+ index.h("sqm-stat-container", { space: "xxx-large", display: "flex" },
10409
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
10410
+ index.h("sqm-text", null,
10411
+ index.h("p", null, "Rewards Redeemed"))),
10412
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
10413
+ index.h("sqm-text", null,
10414
+ index.h("p", null, "Points Balance")))),
10415
+ index.h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
10416
+ };
10417
+ const SpaceAround = () => {
10418
+ return (index.h("div", { style: { width: "1000px", border: "1px dashed grey" } },
10419
+ index.h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "space-around" },
10420
+ index.h("sqm-stat-container", { space: "xxx-large", display: "flex" },
10421
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
10422
+ index.h("sqm-text", null,
10423
+ index.h("p", null, "Rewards Redeemed"))),
10424
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
10425
+ index.h("sqm-text", null,
10426
+ index.h("p", null, "Points Balance")))),
10427
+ index.h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
10428
+ };
10429
+ const SpaceEvenly = () => {
10430
+ return (index.h("div", { style: { width: "1000px", border: "1px dashed grey" } },
10431
+ index.h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "space-evenly" },
10432
+ index.h("sqm-stat-container", { space: "xxx-large", display: "flex" },
10433
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
10434
+ index.h("sqm-text", null,
10435
+ index.h("p", null, "Rewards Redeemed"))),
10436
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
10437
+ index.h("sqm-text", null,
10438
+ index.h("p", null, "Points Balance")))),
10439
+ index.h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
10440
+ };
10441
+ const Start$1 = () => {
10442
+ return (index.h("div", { style: { width: "1000px", border: "1px dashed grey" } },
10443
+ index.h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "start" },
10444
+ index.h("sqm-stat-container", { space: "xxx-large", display: "flex" },
10445
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
10446
+ index.h("sqm-text", null,
10447
+ index.h("p", null, "Rewards Redeemed"))),
10448
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
10449
+ index.h("sqm-text", null,
10450
+ index.h("p", null, "Points Balance")))),
10451
+ index.h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
10452
+ };
10453
+ const Center = () => {
10454
+ return (index.h("div", { style: { width: "1000px", border: "1px dashed grey" } },
10455
+ index.h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "center" },
10456
+ index.h("sqm-stat-container", { space: "xxx-large", display: "flex" },
10457
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
10458
+ index.h("sqm-text", null,
10459
+ index.h("p", null, "Rewards Redeemed"))),
10460
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
10461
+ index.h("sqm-text", null,
10462
+ index.h("p", null, "Points Balance")))),
10463
+ index.h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
10464
+ };
10465
+ const End = () => {
10466
+ return (index.h("div", { style: { width: "1000px", border: "1px dashed grey" } },
10467
+ index.h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "end" },
10468
+ index.h("sqm-stat-container", { space: "xxx-large", display: "flex" },
10469
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
10470
+ index.h("sqm-text", null,
10471
+ index.h("p", null, "Rewards Redeemed"))),
10472
+ index.h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
10473
+ index.h("sqm-text", null,
10474
+ index.h("p", null, "Points Balance")))),
10475
+ index.h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
10476
+ };
10339
10477
 
10340
10478
  const PortalContainer = /*#__PURE__*/Object.freeze({
10341
10479
  __proto__: null,
@@ -10347,7 +10485,13 @@ const PortalContainer = /*#__PURE__*/Object.freeze({
10347
10485
  TooWideDisplayFlex: TooWideDisplayFlex,
10348
10486
  HalfWidth: HalfWidth,
10349
10487
  HalfWidthCenter: HalfWidthCenter,
10350
- FullWidth: FullWidth
10488
+ FullWidth: FullWidth,
10489
+ SpaceBetween: SpaceBetween,
10490
+ SpaceAround: SpaceAround,
10491
+ SpaceEvenly: SpaceEvenly,
10492
+ Start: Start$1,
10493
+ Center: Center,
10494
+ End: End
10351
10495
  });
10352
10496
 
10353
10497
  const scenario1 = "@author:derek\r\n@owner:derek\r\nFeature: Reward Table Date Column\r\n\r\n Shows the date of each reward\r\n\r\n Background:\r\n Given the date column is included in the reward table\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The title of the date column is configurable\r\n Given the \"column-title\" prop is set to <value>\r\n Then the date column is shown with <columnTitle>\r\n Examples:\r\n | value | columnTitle |\r\n | Date received | |\r\n | My column title | My column title |\r\n\r\n @motivating\r\n Scenario Outline: A configurable date associated with the reward is shown for each reward\r\n Given the \"date-shown\" prop is set to <dateType>\r\n And a user with rewards\r\n When they view the date column\r\n Then for each reward the <rewardDate> is shown in the table\r\n And the date is localized to the users locale\r\n Examples:\r\n | dateType | rewardDate |\r\n | dateGiven | date given |\r\n | dateExpires | date expires |\r\n | dateCancelled | date cancelled |\r\n | dateRedeemed | date redeemed |\r\n | dateScheduledFor | date scheduled for |\r\n | | date given |";
@@ -10369,7 +10513,7 @@ const rewardsData$1 = {
10369
10513
  id: "61c100117a82a376d8804166",
10370
10514
  type: "CREDIT",
10371
10515
  value: 19,
10372
- unit: "TESTUNIT",
10516
+ unit: "Points",
10373
10517
  name: null,
10374
10518
  dateGiven: 1640038417468,
10375
10519
  meta: { message: "***CUSTOMER NOTE MESSAGE***" },
@@ -10401,7 +10545,7 @@ const RewardsCellCreditSingle = () => {
10401
10545
  return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...singleRedeemed } }));
10402
10546
  };
10403
10547
  const RewardsCellCreditFull = () => {
10404
- return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1 }, availableText: "19 Points remaining" }));
10548
+ return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1 }, availableText: "{availableAmount} remaining" }));
10405
10549
  };
10406
10550
  const partial = {
10407
10551
  prettyAvailableValue: "10 Points",
@@ -10410,16 +10554,16 @@ const partial = {
10410
10554
  dateRedeemed: 1640038417468,
10411
10555
  };
10412
10556
  const RewardsCellCreditPartial = () => {
10413
- return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...partial }, availableText: "10 Points remaining" }));
10557
+ return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...partial }, availableText: "{availableAmount} remaining" }));
10414
10558
  };
10415
10559
  const RewardsCellCreditCancelled = () => {
10416
- return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...cancelled }, redeemedText: "0 Points redeemed" }));
10560
+ return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...cancelled }, redeemedText: "{redeemedAmount} redeemed" }));
10417
10561
  };
10418
10562
  const RewardsCellCreditExpired = () => {
10419
- return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...partial, ...expired }, redeemedText: "9 Points redeemed" }));
10563
+ return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...partial, ...expired }, redeemedText: "{redeemedAmount} redeemed" }));
10420
10564
  };
10421
10565
  const RewardsCellCreditPending = () => {
10422
- return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...partial, ...pending }, availableText: "9 Points redeemed" }));
10566
+ return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...pending }, availableText: "{availableAmount} remaining" }));
10423
10567
  };
10424
10568
  const empty = {
10425
10569
  prettyAvailableValue: "0 Points",
@@ -10429,7 +10573,7 @@ const empty = {
10429
10573
  dateRedeemed: 1640038417468,
10430
10574
  };
10431
10575
  const RewardsCellCreditRedeemed = () => {
10432
- return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...empty }, availableText: "0 Points remaining" }));
10576
+ return (index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...empty }, availableText: "{availableAmount} remaining" }));
10433
10577
  };
10434
10578
  const singleRedeemed = {
10435
10579
  prettyValue: "1 Point",
@@ -10441,7 +10585,7 @@ const longName = {
10441
10585
  };
10442
10586
  const RewardsCellCreditLong = () => {
10443
10587
  return (index.h("div", { style: { maxWidth: "222px" } },
10444
- index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...longName }, availableText: "19 Points with a really really super duper longest name ever in the world wide web remaining" })));
10588
+ index.h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...longName }, availableText: "{availableAmount} remaining" })));
10445
10589
  };
10446
10590
  const RewardsCellNonCredit = () => {
10447
10591
  return (index.h("sqm-rewards-table-reward-cell", { reward: {
@@ -10456,7 +10600,7 @@ const RewardsCellFueltank = () => {
10456
10600
  type: "FUELTANK",
10457
10601
  prettyValue: "Fueltank Reward",
10458
10602
  fuelTankCode: "AFUELTANKCODE",
10459
- }, fueltankText: "Your code:", copyText: "Copied" }));
10603
+ }, copyText: "Copied" }));
10460
10604
  };
10461
10605
  const RewardsCellFueltankLong = () => {
10462
10606
  return (index.h("div", { style: { maxWidth: "222px" } },
@@ -10465,7 +10609,7 @@ const RewardsCellFueltankLong = () => {
10465
10609
  type: "FUELTANK",
10466
10610
  prettyValue: "Long Fueltank Reward",
10467
10611
  fuelTankCode: "AFUELTANKCODE123456789123456789123456789123456789",
10468
- }, fueltankText: "Your code:", copyText: "Copied" })));
10612
+ }, copyText: "Copied" })));
10469
10613
  };
10470
10614
  const SourceCellManual = () => {
10471
10615
  return (index.h("sqm-rewards-table-source-cell", { reward: rewardsData$1, rewardSourceText: "Manual" }));
@@ -10660,7 +10804,7 @@ const RewardsTableCell = /*#__PURE__*/Object.freeze({
10660
10804
  EmptyCell: EmptyCell$2
10661
10805
  });
10662
10806
 
10663
- const scenario$p = "@owner:sam\r\n@author:sam\r\nFeature: Rewards Table\r\n\r\n Shows a list of rewards as a table\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no rewards\r\n Given a user with rewards\r\n When they view the reward table\r\n Then no rewards are displayed\r\n And they see an image with a user icon\r\n And \"View your rewards\" in bold\r\n And \"See all the rewards you have earned from referring friends and completing tasks\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no rewards\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward table\r\n Then they see the custom empty state\r\n\r\n @minutae\r\n @ui\r\n Scenario: The loading state is shown while rewards are loading\r\n Given the table is loading\r\n Then the loading state is shown in the table\r\n And a custom loading state can be supplied in the \"loading\" slot\r\n And the pagination buttons are disabled\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The table becomes paginated when the number of rewards exceeds the per page limit\r\n Given the user has <number of rewards>\r\n And the table is configured to show <page limit> rewards per page\r\n Then the table will have <number of pages> page(s)\r\n And pagination buttons will allow users to navigate between pages\r\n And the pagination button to go to the next page is disabled on the last page of rewards\r\n And the pagination button to go to the previous page is disabled on the first page of rewards\r\n Examples:\r\n | number of rewards | page limit | number of pages |\r\n | 0 | 4 | 1 |\r\n | 1 | 4 | 1 |\r\n | 3 | 4 | 1 |\r\n | 5 | 4 | 2 |\r\n | 42 | 4 | 11 |\r\n\r\n @motivating\r\n @ui\r\n Scenario: The table converts to a card view on tablet and mobile window sizes\r\n Given a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"899px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"634px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario: Table and Mobile beakpoints can be configured\r\n Given the reward table has been configured with the following props\r\n | prop | value |\r\n | smBreakpoint | 599 |\r\n | mdBreakpoint | 799 |\r\n And a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"799px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"599px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: By default the first column heading is hidden in mobile\r\n Given a reward table with 4 columns\r\n And prop \"hidden-columns\" with <hideColumnValue>\r\n And a user with rewards\r\n When they view the reward table\r\n And their window size is below the tablet breakpoint\r\n Then reward cards are displayed\r\n And the titles of <columnsArehidden> within the card\r\n Examples:\r\n | hideColumnValue | columnsArehidden |\r\n | | the first column |\r\n | 0,1,2 | the first, second and third columns |\r\n | 3 | the fourth column |\r\n\r\n @motivating\r\n Scenario: Only rewards which occured in the program specific by \"program-id\" are shown\r\n Given the table is configured with \"program-id\"\r\n Then only rewards from the program with \"program-id\" are shown\r\n\r\n @landmine\r\n Scenario: Classic program rewards can't be filtered for\r\n There is no easy way for the backend to filter for \"classic\" programs,\r\n since it only allows filtering my \"programId: null\"\r\n and that returns manual rewards and reward exchanges\r\n\r\n Given the \"program-id\" of the table is set to \"classic\"\r\n Then there is an error shown\r\n\r\n @minutae\r\n @ui\r\n Scenario: Column heading can be hidden\r\n Given the table is configured with \"show-labels\" set to false\r\n Then the table is displayed without column headings";
10807
+ const scenario$p = "@owner:sam\r\n@author:sam\r\nFeature: Rewards Table\r\n\r\n Shows a list of rewards as a table\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no rewards\r\n Given a user with rewards\r\n When they view the reward table\r\n Then no rewards are displayed\r\n And they see an image with a user icon\r\n And \"View your rewards\" in bold\r\n And \"See all the rewards you have earned from referring friends and completing tasks\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no rewards\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward table\r\n Then they see the custom empty state\r\n\r\n @minutae\r\n @ui\r\n Scenario: The loading state is shown while rewards are loading\r\n Given the table is loading\r\n Then the loading state is shown in the table\r\n And a custom loading state can be supplied in the \"loading\" slot\r\n And the pagination buttons are disabled\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The table becomes paginated when the number of rewards exceeds the per page limit\r\n Given the user has <number of rewards>\r\n And the table is configured to show <page limit> rewards per page\r\n Then the table will have <number of pages> page(s)\r\n And pagination buttons will allow users to navigate between pages\r\n And the pagination button to go to the next page is disabled on the last page of rewards\r\n And the pagination button to go to the previous page is disabled on the first page of rewards\r\n Examples:\r\n | number of rewards | page limit | number of pages |\r\n | 0 | 4 | 1 |\r\n | 1 | 4 | 1 |\r\n | 3 | 4 | 1 |\r\n | 5 | 4 | 2 |\r\n | 42 | 4 | 11 |\r\n\r\n @motivating\r\n @ui\r\n Scenario: The table converts to a card view on tablet and mobile window sizes\r\n Given a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"899px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"634px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario: Table and Mobile beakpoints can be configured\r\n Given the reward table has been configured with the following props\r\n | prop | value |\r\n | smBreakpoint | 599 |\r\n | mdBreakpoint | 799 |\r\n And a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"799px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"599px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: By default the first column heading is hidden in mobile\r\n Given a reward table with 4 columns\r\n And prop \"hidden-columns\" with <hideColumnValue>\r\n And a user with rewards\r\n When they view the reward table\r\n And their window size is below the tablet breakpoint\r\n Then reward cards are displayed\r\n And the titles of <columnsArehidden> within the card\r\n Examples:\r\n | hideColumnValue | columnsArehidden |\r\n | | the first column |\r\n | 0,1,2 | the first, second and third columns |\r\n | 3 | the fourth column |\r\n\r\n @motivating\r\n Scenario: Only rewards which occured in the program specific by \"program-id\" are shown\r\n Given the table is configured with \"program-id\"\r\n Then only rewards from the program with \"program-id\" are shown\r\n\r\n @landmine\r\n Scenario: When a `classic` program Id is set then any reward without a programId is shown\r\n There is no easy way for the backend to filter for \"classic\" programs,\r\n thus we are filtering for rewards without programId's.\r\n\r\n Given the \"program-id\" of the table is set to \"classic\"\r\n Then rewards from classic programs are shown\r\n And manual rewards are shown\r\n\r\n @minutae\r\n @ui\r\n Scenario: Column heading can be hidden\r\n Given the table is configured with \"show-labels\" set to false\r\n Then the table is displayed without column headings";
10664
10808
 
10665
10809
  const RewardsTable_stories = {
10666
10810
  title: "Components/Rewards Table",
@@ -11438,7 +11582,7 @@ const Scroll_stories = {
11438
11582
  };
11439
11583
  const ScrollTag = () => {
11440
11584
  return (index.h("div", { style: { position: "relative", height: "2000px" } },
11441
- index.h("sqm-scroll", { "scroll-tag-name": "sqm-text", "button-text": "Scroll" }),
11585
+ index.h("sqm-scroll", { "scroll-tag-name": "sqm-text", "button-text": "Scroll", "scroll-animation": "smooth" }),
11442
11586
  index.h("div", { style: { position: "absolute", bottom: "0" } },
11443
11587
  index.h("sqm-text", { slot: "label" },
11444
11588
  index.h("h3", null, "Earn more rewards"),
@@ -11446,7 +11590,15 @@ const ScrollTag = () => {
11446
11590
  };
11447
11591
  const ScrollId = () => {
11448
11592
  return (index.h("div", { style: { position: "relative", height: "2000px" } },
11449
- index.h("sqm-scroll", { "button-text": "Scroll", "scroll-id": "my-id" }),
11593
+ index.h("sqm-scroll", { "button-text": "Scroll", "scroll-id": "my-id", "scroll-animation": "smooth" }),
11594
+ index.h("div", { style: { position: "absolute", bottom: "0" } },
11595
+ index.h("sqm-text", { slot: "label", id: "my-id" },
11596
+ index.h("h3", null, "Earn more rewards"),
11597
+ index.h("p", null, "Get points while using Klip. Use those points to redeem rewards like one free month of Klip Enterprise or two plane tickets to anywhere in North America")))));
11598
+ };
11599
+ const ScrollAutoAnimation = () => {
11600
+ return (index.h("div", { style: { position: "relative", height: "2000px" } },
11601
+ index.h("sqm-scroll", { "button-text": "Scroll", "scroll-id": "my-id", "scroll-animation": "auto" }),
11450
11602
  index.h("div", { style: { position: "absolute", bottom: "0" } },
11451
11603
  index.h("sqm-text", { slot: "label", id: "my-id" },
11452
11604
  index.h("h3", null, "Earn more rewards"),
@@ -11454,7 +11606,7 @@ const ScrollId = () => {
11454
11606
  };
11455
11607
  const ScrollTabGroup = () => {
11456
11608
  return (index.h("div", { style: { position: "relative", height: "2000px" } },
11457
- index.h("sqm-scroll", { "button-text": "Redeem rewards", "scroll-id": "tab-3" }),
11609
+ index.h("sqm-scroll", { "button-text": "Redeem rewards", "scroll-id": "tab-3", "scroll-animation": "smooth" }),
11458
11610
  index.h("div", { style: { position: "absolute", bottom: "0" }, innerHTML: `
11459
11611
  <sqm-tabs>
11460
11612
  <sqm-tab header="Leaderboard">
@@ -11543,12 +11695,9 @@ const ShoelaceProps = () => {
11543
11695
  index.h("br", null),
11544
11696
  " ",
11545
11697
  index.h("hr", null),
11546
- index.h("h3", null, "Caret:"),
11547
- index.h("sqm-scroll", { caret: true }, "Button"),
11548
- index.h("br", null),
11549
- " ",
11550
- index.h("hr", null),
11551
11698
  index.h("h3", null, "Icon:"),
11699
+ index.h("sqm-scroll", { "button-type": "primary", iconName: "facebook" }, "Icon Name"),
11700
+ index.h("br", null),
11552
11701
  index.h("sqm-scroll", { iconName: "gear", iconSlot: "prefix" }, "Icon Slot Prefix"),
11553
11702
  index.h("br", null),
11554
11703
  index.h("sqm-scroll", { iconName: "gear", iconSlot: "suffix" }, "Icon Slot Suffix"),
@@ -11565,22 +11714,8 @@ const ShoelaceProps = () => {
11565
11714
  index.h("br", null),
11566
11715
  " ",
11567
11716
  index.h("hr", null),
11568
- index.h("h3", null, "Disabled:"),
11569
- index.h("sqm-scroll", { disabled: true }, "Button"),
11570
- index.h("br", null),
11571
- " ",
11572
- index.h("hr", null),
11573
- index.h("h3", null, "Link:"),
11574
- index.h("sqm-scroll", { href: "https://example.com/" }, "Link"),
11575
- index.h("br", null),
11576
- index.h("sqm-scroll", { href: "https://example.com/", target: "_self" }, "Same Window"),
11577
- index.h("br", null),
11578
- index.h("sqm-scroll", { href: "/assets/images/wordmark.svg", download: "shoelace.svg" }, "Download"),
11579
- index.h("br", null),
11580
- " ",
11581
- index.h("hr", null),
11582
11717
  index.h("h3", null, "Mobile Friendly:"),
11583
- index.h("sqm-scroll", { "mobile-friendly": true }, "Button"),
11718
+ index.h("sqm-scroll", { mobile: true }, "Button"),
11584
11719
  index.h("br", null),
11585
11720
  " ",
11586
11721
  index.h("hr", null)));
@@ -11591,6 +11726,7 @@ const Scroll = /*#__PURE__*/Object.freeze({
11591
11726
  'default': Scroll_stories,
11592
11727
  ScrollTag: ScrollTag,
11593
11728
  ScrollId: ScrollId,
11729
+ ScrollAutoAnimation: ScrollAutoAnimation,
11594
11730
  ScrollTabGroup: ScrollTabGroup,
11595
11731
  ScrollTabGroupInner: ScrollTabGroupInner,
11596
11732
  ShoelaceProps: ShoelaceProps
@@ -11772,10 +11908,10 @@ const ShareCode = () => {
11772
11908
  return index.h("sqm-share-code", null);
11773
11909
  };
11774
11910
  const CustomTooltipText = () => {
11775
- return index.h("sqm-share-code", { tooltiptext: "CUSTOM TOOLTIP TEXT" });
11911
+ return index.h("sqm-share-code", { tooltipText: "CUSTOM TOOLTIP TEXT" });
11776
11912
  };
11777
11913
  const CustomTooltipDuration = () => {
11778
- return index.h("sqm-share-code", { tooltiplifespan: 5000 });
11914
+ return index.h("sqm-share-code", { tooltipLifespan: 5000 });
11779
11915
  };
11780
11916
 
11781
11917
  const ShareCode$1 = /*#__PURE__*/Object.freeze({
@@ -14462,6 +14598,7 @@ const stories = [
14462
14598
  PasswordField,
14463
14599
  TaskCard$2,
14464
14600
  PortalTemplates,
14601
+ Widget,
14465
14602
  ProgramMenu,
14466
14603
  PoweredByImg,
14467
14604
  PortalFooter,