@saasquatch/mint-components 1.3.2-10 → 1.3.2-14

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 (211) hide show
  1. package/dist/cjs/{ShadowViewAddon-d2fde0a2.js → ShadowViewAddon-a85b8c8d.js} +1 -1
  2. package/dist/cjs/{global-e04d7cde.js → global-6223fe8f.js} +4 -1
  3. package/dist/cjs/{index.module-07ed6ad2.js → index.module-7dd4b981.js} +1 -1
  4. package/dist/cjs/loader.cjs.js +3 -3
  5. package/dist/cjs/mint-components.cjs.js +3 -3
  6. package/dist/cjs/{re-render-81649c33.js → re-render-6111d4bd.js} +1 -1
  7. package/dist/cjs/sqm-asset-card.cjs.entry.js +1 -1
  8. package/dist/cjs/sqm-big-stat.cjs.entry.js +2 -2
  9. package/dist/cjs/sqm-divided-layout_30.cjs.entry.js +428 -479
  10. package/dist/cjs/sqm-graphql-client-provider.cjs.entry.js +1 -1
  11. package/dist/cjs/{sqm-leaderboard-rank-view-0ba128e2.js → sqm-leaderboard-rank-view-7dd44d62.js} +2 -2
  12. package/dist/cjs/sqm-leaderboard-rank.cjs.entry.js +3 -3
  13. package/dist/cjs/sqm-leaderboard.cjs.entry.js +2 -2
  14. package/dist/cjs/sqm-name-fields.cjs.entry.js +1 -1
  15. package/dist/cjs/{sqm-navigation-sidebar-item-view-0bad789c.js → sqm-navigation-sidebar-item-view-6c7f78e6.js} +1 -1
  16. package/dist/cjs/sqm-navigation-sidebar-item.cjs.entry.js +2 -2
  17. package/dist/cjs/sqm-popup-container.cjs.entry.js +1 -1
  18. package/dist/cjs/{sqm-portal-email-verification-view-3c7d8701.js → sqm-portal-email-verification-view-08d1848c.js} +1 -1
  19. package/dist/cjs/sqm-portal-email-verification.cjs.entry.js +3 -3
  20. package/dist/cjs/{sqm-portal-footer-view-8f5d682e.js → sqm-portal-footer-view-69c73802.js} +1 -1
  21. package/dist/cjs/sqm-portal-footer.cjs.entry.js +3 -3
  22. package/dist/cjs/sqm-portal-forgot-password.cjs.entry.js +1 -1
  23. package/dist/cjs/sqm-portal-logout.cjs.entry.js +1 -1
  24. package/dist/cjs/{sqm-portal-profile-view-14866b58.js → sqm-portal-profile-view-14b41436.js} +1 -1
  25. package/dist/cjs/sqm-portal-profile.cjs.entry.js +3 -3
  26. package/dist/cjs/sqm-portal-protected-route.cjs.entry.js +1 -1
  27. package/dist/cjs/sqm-portal-reset-password.cjs.entry.js +1 -1
  28. package/dist/cjs/sqm-portal-verify-email.cjs.entry.js +1 -1
  29. package/dist/cjs/sqm-referral-table-column.cjs.entry.js +2 -2
  30. package/dist/cjs/sqm-referral-table-date-column.cjs.entry.js +2 -2
  31. package/dist/cjs/sqm-referral-table-rewards-column.cjs.entry.js +2 -2
  32. package/dist/cjs/sqm-referral-table-status-column.cjs.entry.js +2 -2
  33. package/dist/cjs/sqm-referral-table-user-column.cjs.entry.js +2 -2
  34. package/dist/cjs/sqm-share-code.cjs.entry.js +1 -1
  35. package/dist/cjs/{useDemoBigStat-1692a6a1.js → useDemoBigStat-2786227e.js} +1 -1
  36. package/dist/collection/components/sqm-portal-register/sqm-portal-register.js +1 -1
  37. package/dist/collection/components/sqm-reward-exchange-list/RewardExchangeListData.js +2 -2
  38. package/dist/collection/components/sqm-reward-exchange-list/SVGs.js +1 -1
  39. package/dist/collection/components/sqm-reward-exchange-list/progressBar.js +8 -7
  40. package/dist/collection/components/sqm-reward-exchange-list/sqm-reward-exchange-list-view.js +87 -43
  41. package/dist/collection/components/sqm-reward-exchange-list/sqm-reward-exchange-list.js +29 -7
  42. package/dist/collection/components/sqm-reward-exchange-list/useRewardExchangeList.js +7 -31
  43. package/dist/collection/components/sqm-stencilbook/sqm-stencilbook.js +0 -2
  44. package/dist/collection/components/sqm-task-card/TaskCard.stories.js +167 -222
  45. package/dist/collection/components/sqm-task-card/progress-bar/progress-bar-view.js +12 -5
  46. package/dist/collection/components/sqm-task-card/sqm-task-card-view.js +82 -50
  47. package/dist/collection/components/sqm-task-card/sqm-task-card.js +16 -2
  48. package/dist/collection/global/styles.js +3 -0
  49. package/dist/collection/global/styles.ts +3 -0
  50. package/dist/esm/{ShadowViewAddon-aa087ef2.js → ShadowViewAddon-a3f510db.js} +1 -1
  51. package/dist/esm/{global-107bb084.js → global-90da933f.js} +4 -1
  52. package/dist/esm/{index.module-1f571929.js → index.module-90d2c3ad.js} +1 -1
  53. package/dist/esm/loader.js +3 -3
  54. package/dist/esm/mint-components.js +3 -3
  55. package/dist/esm/{re-render-76c9129f.js → re-render-e06f2f7f.js} +1 -1
  56. package/dist/esm/sqm-asset-card.entry.js +1 -1
  57. package/dist/esm/sqm-big-stat.entry.js +2 -2
  58. package/dist/esm/sqm-divided-layout_30.entry.js +428 -479
  59. package/dist/esm/sqm-graphql-client-provider.entry.js +1 -1
  60. package/dist/esm/{sqm-leaderboard-rank-view-c1aefdd5.js → sqm-leaderboard-rank-view-47844836.js} +2 -2
  61. package/dist/esm/sqm-leaderboard-rank.entry.js +3 -3
  62. package/dist/esm/sqm-leaderboard.entry.js +2 -2
  63. package/dist/esm/sqm-name-fields.entry.js +1 -1
  64. package/dist/esm/{sqm-navigation-sidebar-item-view-b3618185.js → sqm-navigation-sidebar-item-view-f2304ad9.js} +1 -1
  65. package/dist/esm/sqm-navigation-sidebar-item.entry.js +2 -2
  66. package/dist/esm/sqm-popup-container.entry.js +1 -1
  67. package/dist/esm/{sqm-portal-email-verification-view-df0559b0.js → sqm-portal-email-verification-view-8cefe480.js} +1 -1
  68. package/dist/esm/sqm-portal-email-verification.entry.js +3 -3
  69. package/dist/esm/{sqm-portal-footer-view-2b2bfc9e.js → sqm-portal-footer-view-d9fe0bf8.js} +1 -1
  70. package/dist/esm/sqm-portal-footer.entry.js +3 -3
  71. package/dist/esm/sqm-portal-forgot-password.entry.js +1 -1
  72. package/dist/esm/sqm-portal-logout.entry.js +1 -1
  73. package/dist/esm/{sqm-portal-profile-view-2fbb0845.js → sqm-portal-profile-view-b67467b4.js} +1 -1
  74. package/dist/esm/sqm-portal-profile.entry.js +3 -3
  75. package/dist/esm/sqm-portal-protected-route.entry.js +1 -1
  76. package/dist/esm/sqm-portal-reset-password.entry.js +1 -1
  77. package/dist/esm/sqm-portal-verify-email.entry.js +1 -1
  78. package/dist/esm/sqm-referral-table-column.entry.js +2 -2
  79. package/dist/esm/sqm-referral-table-date-column.entry.js +2 -2
  80. package/dist/esm/sqm-referral-table-rewards-column.entry.js +2 -2
  81. package/dist/esm/sqm-referral-table-status-column.entry.js +2 -2
  82. package/dist/esm/sqm-referral-table-user-column.entry.js +2 -2
  83. package/dist/esm/sqm-share-code.entry.js +1 -1
  84. package/dist/esm/{useDemoBigStat-49cdfe32.js → useDemoBigStat-c3b955b7.js} +1 -1
  85. package/dist/esm-es5/{ShadowViewAddon-aa087ef2.js → ShadowViewAddon-a3f510db.js} +1 -1
  86. package/dist/esm-es5/{global-107bb084.js → global-90da933f.js} +2 -2
  87. package/dist/esm-es5/{index.module-1f571929.js → index.module-90d2c3ad.js} +1 -1
  88. package/dist/esm-es5/loader.js +1 -1
  89. package/dist/esm-es5/mint-components.js +1 -1
  90. package/dist/esm-es5/{re-render-76c9129f.js → re-render-e06f2f7f.js} +1 -1
  91. package/dist/esm-es5/sqm-asset-card.entry.js +1 -1
  92. package/dist/esm-es5/sqm-big-stat.entry.js +1 -1
  93. package/dist/esm-es5/sqm-divided-layout_30.entry.js +1 -1
  94. package/dist/esm-es5/sqm-graphql-client-provider.entry.js +1 -1
  95. package/dist/esm-es5/{sqm-leaderboard-rank-view-c1aefdd5.js → sqm-leaderboard-rank-view-47844836.js} +1 -1
  96. package/dist/esm-es5/sqm-leaderboard-rank.entry.js +1 -1
  97. package/dist/esm-es5/sqm-leaderboard.entry.js +1 -1
  98. package/dist/esm-es5/sqm-name-fields.entry.js +1 -1
  99. package/dist/esm-es5/{sqm-navigation-sidebar-item-view-b3618185.js → sqm-navigation-sidebar-item-view-f2304ad9.js} +1 -1
  100. package/dist/esm-es5/sqm-navigation-sidebar-item.entry.js +1 -1
  101. package/dist/esm-es5/sqm-popup-container.entry.js +1 -1
  102. package/dist/esm-es5/{sqm-portal-email-verification-view-df0559b0.js → sqm-portal-email-verification-view-8cefe480.js} +1 -1
  103. package/dist/esm-es5/sqm-portal-email-verification.entry.js +1 -1
  104. package/dist/esm-es5/{sqm-portal-footer-view-2b2bfc9e.js → sqm-portal-footer-view-d9fe0bf8.js} +1 -1
  105. package/dist/esm-es5/sqm-portal-footer.entry.js +1 -1
  106. package/dist/esm-es5/sqm-portal-forgot-password.entry.js +1 -1
  107. package/dist/esm-es5/sqm-portal-logout.entry.js +1 -1
  108. package/dist/esm-es5/{sqm-portal-profile-view-2fbb0845.js → sqm-portal-profile-view-b67467b4.js} +1 -1
  109. package/dist/esm-es5/sqm-portal-profile.entry.js +1 -1
  110. package/dist/esm-es5/sqm-portal-protected-route.entry.js +1 -1
  111. package/dist/esm-es5/sqm-portal-reset-password.entry.js +1 -1
  112. package/dist/esm-es5/sqm-portal-verify-email.entry.js +1 -1
  113. package/dist/esm-es5/sqm-referral-table-column.entry.js +1 -1
  114. package/dist/esm-es5/sqm-referral-table-date-column.entry.js +1 -1
  115. package/dist/esm-es5/sqm-referral-table-rewards-column.entry.js +1 -1
  116. package/dist/esm-es5/sqm-referral-table-status-column.entry.js +1 -1
  117. package/dist/esm-es5/sqm-referral-table-user-column.entry.js +1 -1
  118. package/dist/esm-es5/sqm-share-code.entry.js +1 -1
  119. package/dist/esm-es5/{useDemoBigStat-49cdfe32.js → useDemoBigStat-c3b955b7.js} +1 -1
  120. package/dist/mint-components/global/styles.ts +3 -0
  121. package/dist/mint-components/mint-components.css +1 -0
  122. package/dist/mint-components/mint-components.esm.js +1 -1
  123. package/dist/mint-components/mint-components.js +1 -1
  124. package/dist/mint-components/{p-22ee65c4.system.js → p-07c924fa.system.js} +1 -1
  125. package/dist/mint-components/{p-3fd9db63.js → p-0eb3e89c.js} +1 -1
  126. package/dist/mint-components/{p-0f19ab40.entry.js → p-160bd62f.entry.js} +1 -1
  127. package/dist/mint-components/{p-bf10c781.system.js → p-16f5a7cb.system.js} +1 -1
  128. package/dist/mint-components/{p-62b134cb.system.entry.js → p-1a09e4e1.system.entry.js} +1 -1
  129. package/dist/mint-components/p-1c8b0290.entry.js +1 -0
  130. package/dist/mint-components/{p-57568b23.system.entry.js → p-1dcdca58.system.entry.js} +1 -1
  131. package/dist/mint-components/p-20d41ab1.entry.js +1 -0
  132. package/dist/mint-components/{p-3bbc61af.entry.js → p-221a4097.entry.js} +1 -1
  133. package/dist/mint-components/{p-f0cbf76e.system.entry.js → p-223b42bd.system.entry.js} +1 -1
  134. package/dist/mint-components/{p-ab378185.js → p-224504ad.js} +1 -1
  135. package/dist/mint-components/{p-2b9a01ce.system.entry.js → p-24b3c6f0.system.entry.js} +1 -1
  136. package/dist/mint-components/{p-dbc04567.system.entry.js → p-24c9a599.system.entry.js} +1 -1
  137. package/dist/mint-components/{p-c61c61e7.entry.js → p-29fab29b.entry.js} +1 -1
  138. package/dist/mint-components/{p-64299f78.system.entry.js → p-304e6c82.system.entry.js} +1 -1
  139. package/dist/mint-components/{p-c974b7d4.entry.js → p-3397167c.entry.js} +1 -1
  140. package/dist/mint-components/{p-beb02af2.entry.js → p-33c5ffb7.entry.js} +1 -1
  141. package/dist/mint-components/{p-bcb30771.system.entry.js → p-396bf448.system.entry.js} +1 -1
  142. package/dist/mint-components/{p-a48fc54e.system.js → p-3b97aed8.system.js} +1 -1
  143. package/dist/mint-components/{p-5e681b4b.system.js → p-3ce2fb83.system.js} +1 -1
  144. package/dist/mint-components/{p-57aa7493.entry.js → p-3d856985.entry.js} +1 -1
  145. package/dist/mint-components/{p-fc90a3fe.system.entry.js → p-4052b948.system.entry.js} +1 -1
  146. package/dist/mint-components/{p-03b7444e.system.entry.js → p-412a9226.system.entry.js} +1 -1
  147. package/dist/mint-components/{p-9ca6142b.system.entry.js → p-44d0fc80.system.entry.js} +1 -1
  148. package/dist/mint-components/{p-b0e9c89c.entry.js → p-45c752a0.entry.js} +1 -1
  149. package/dist/mint-components/{p-d73d26ec.js → p-46a4269a.js} +2 -2
  150. package/dist/mint-components/{p-874e7da3.entry.js → p-52802c88.entry.js} +1 -1
  151. package/dist/mint-components/{p-f0ad9b15.entry.js → p-5480e4ee.entry.js} +1 -1
  152. package/dist/mint-components/{p-75924795.system.entry.js → p-55508395.system.entry.js} +1 -1
  153. package/dist/mint-components/{p-f7e2418a.js → p-563253e8.js} +1 -1
  154. package/dist/mint-components/{p-8155cd07.system.js → p-60855d33.system.js} +1 -1
  155. package/dist/mint-components/{p-0ca63e9e.system.entry.js → p-67ae18d1.system.entry.js} +1 -1
  156. package/dist/mint-components/{p-4ae9f594.js → p-6882070c.js} +1 -1
  157. package/dist/mint-components/{p-123930ab.system.entry.js → p-69bcf4fa.system.entry.js} +1 -1
  158. package/dist/mint-components/{p-e01213a2.system.entry.js → p-6bf0a4d9.system.entry.js} +1 -1
  159. package/dist/mint-components/{p-59fa991d.entry.js → p-6d0cfe2b.entry.js} +10 -10
  160. package/dist/mint-components/{p-0ddd6063.system.entry.js → p-6e245fa3.system.entry.js} +1 -1
  161. package/dist/mint-components/{p-d1e28563.entry.js → p-723ebe45.entry.js} +1 -1
  162. package/dist/mint-components/{p-8ac0ec83.system.entry.js → p-73148868.system.entry.js} +1 -1
  163. package/dist/mint-components/{p-b0c6f82b.entry.js → p-8435a22d.entry.js} +1 -1
  164. package/dist/mint-components/p-86988aa2.system.entry.js +1 -0
  165. package/dist/mint-components/p-883a32e7.entry.js +1 -0
  166. package/dist/mint-components/{p-719c2664.system.js → p-9c554ca0.system.js} +1 -1
  167. package/dist/mint-components/{p-de0efef2.entry.js → p-9d6dbb2d.entry.js} +1 -1
  168. package/dist/mint-components/{p-c0e8aaa7.system.entry.js → p-9e4fee30.system.entry.js} +1 -1
  169. package/dist/mint-components/{p-70008004.js → p-a2c3cff3.js} +1 -1
  170. package/dist/mint-components/{p-3b9492a8.entry.js → p-a4c2c7ed.entry.js} +1 -1
  171. package/dist/mint-components/{p-d44e98b8.system.js → p-a6094ff9.system.js} +1 -1
  172. package/dist/mint-components/{p-f2db1c3b.entry.js → p-ade44a4e.entry.js} +1 -1
  173. package/dist/mint-components/{p-d37f227e.entry.js → p-b1bb07db.entry.js} +1 -1
  174. package/dist/mint-components/{p-beeeda0c.system.js → p-b608f7a4.system.js} +2 -2
  175. package/dist/mint-components/{p-cbf1db2b.entry.js → p-b8bd2607.entry.js} +1 -1
  176. package/dist/mint-components/{p-86a55c58.system.entry.js → p-be2738b0.system.entry.js} +1 -1
  177. package/dist/mint-components/{p-0470556b.system.js → p-c6114bfe.system.js} +1 -1
  178. package/dist/mint-components/{p-70a6f9d9.system.entry.js → p-c79c608d.system.entry.js} +1 -1
  179. package/dist/mint-components/{p-f538a675.system.entry.js → p-cca9026f.system.entry.js} +1 -1
  180. package/dist/mint-components/p-cd410a05.entry.js +9 -0
  181. package/dist/mint-components/{p-bdfdb088.system.js → p-cdeae699.system.js} +1 -1
  182. package/dist/mint-components/{p-c35b54e4.system.entry.js → p-d174d0bc.system.entry.js} +1 -1
  183. package/dist/mint-components/p-d21e0dbd.js +1 -0
  184. package/dist/mint-components/{p-f8abbd79.js → p-d35b0366.js} +1 -1
  185. package/dist/mint-components/{p-a37fc3cb.js → p-db2e4c42.js} +1 -1
  186. package/dist/mint-components/p-dc603d08.system.entry.js +1 -0
  187. package/dist/mint-components/{p-91b0d151.system.js → p-e7f633b9.system.js} +1 -1
  188. package/dist/mint-components/{p-b3bac2c6.entry.js → p-f17050de.entry.js} +1 -1
  189. package/dist/mint-components/{p-ac92b5ea.js → p-f90486ca.js} +1 -1
  190. package/dist/mint-components/p-fce1dbf6.entry.js +1 -0
  191. package/dist/types/components/sqm-reward-exchange-list/RewardExchangeListData.d.ts +2 -2
  192. package/dist/types/components/sqm-reward-exchange-list/sqm-reward-exchange-list-view.d.ts +2 -2
  193. package/dist/types/components/sqm-reward-exchange-list/sqm-reward-exchange-list.d.ts +4 -0
  194. package/dist/types/components/sqm-task-card/TaskCard.stories.d.ts +9 -4
  195. package/dist/types/components/sqm-task-card/progress-bar/progress-bar-view.d.ts +1 -0
  196. package/dist/types/components/sqm-task-card/sqm-task-card-view.d.ts +1 -1
  197. package/dist/types/components/sqm-task-card/sqm-task-card.d.ts +4 -1
  198. package/dist/types/components.d.ts +13 -1
  199. package/dist/types/global/styles.d.ts +1 -1
  200. package/grapesjs/grapesjs.js +1 -1
  201. package/package.json +1 -1
  202. package/dist/collection/components/sqm-task-card/progress-bar/progress-bar.stories.js +0 -53
  203. package/dist/mint-components/p-20991bdd.system.entry.js +0 -1
  204. package/dist/mint-components/p-458070cf.js +0 -1
  205. package/dist/mint-components/p-5986de11.entry.js +0 -1
  206. package/dist/mint-components/p-5a1a2b2c.entry.js +0 -1
  207. package/dist/mint-components/p-6466d643.entry.js +0 -1
  208. package/dist/mint-components/p-a26457cd.entry.js +0 -1
  209. package/dist/mint-components/p-dacbf435.entry.js +0 -9
  210. package/dist/mint-components/p-e2a855b8.system.entry.js +0 -1
  211. package/dist/types/components/sqm-task-card/progress-bar/progress-bar.stories.d.ts +0 -12
@@ -4,9 +4,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-b0129cd6.js');
6
6
  const _extends = require('./extends-0302d27d.js');
7
- const global = require('./global-e04d7cde.js');
7
+ const global = require('./global-6223fe8f.js');
8
8
  const useCallback = require('./use-callback-fadb2643.js');
9
- const index_module = require('./index.module-07ed6ad2.js');
9
+ const index_module = require('./index.module-7dd4b981.js');
10
10
  const jsonpointer = require('./jsonpointer-11327262.js');
11
11
  const jssPresetDefault_esm = require('./jss-preset-default.esm-6304d24f.js');
12
12
  const utils = require('./utils-95e5317c.js');
@@ -15,21 +15,21 @@ const mixins = require('./mixins-7b7c59fe.js');
15
15
  const sqmPortalContainerView = require('./sqm-portal-container-view-d144735a.js');
16
16
  const sqmPortalSectionView = require('./sqm-portal-section-view-3b008930.js');
17
17
  const sqmTextSpanView = require('./sqm-text-span-view-b5ae787b.js');
18
- const sqmLeaderboardRankView = require('./sqm-leaderboard-rank-view-0ba128e2.js');
19
- const reRender = require('./re-render-81649c33.js');
20
- const useDemoBigStat = require('./useDemoBigStat-1692a6a1.js');
18
+ const sqmLeaderboardRankView = require('./sqm-leaderboard-rank-view-7dd44d62.js');
19
+ const reRender = require('./re-render-6111d4bd.js');
20
+ const useDemoBigStat = require('./useDemoBigStat-2786227e.js');
21
21
  const sqmShareLinkView = require('./sqm-share-link-view-a935d07e.js');
22
- const ShadowViewAddon = require('./ShadowViewAddon-d2fde0a2.js');
22
+ const ShadowViewAddon = require('./ShadowViewAddon-a85b8c8d.js');
23
23
  const sqmNavigationSidebarView = require('./sqm-navigation-sidebar-view-d06e1885.js');
24
- const sqmNavigationSidebarItemView = require('./sqm-navigation-sidebar-item-view-0bad789c.js');
24
+ const sqmNavigationSidebarItemView = require('./sqm-navigation-sidebar-item-view-6c7f78e6.js');
25
25
  const sqmStatContainerView = require('./sqm-stat-container-view-ee7b00ff.js');
26
- const sqmPortalProfileView = require('./sqm-portal-profile-view-14866b58.js');
26
+ const sqmPortalProfileView = require('./sqm-portal-profile-view-14b41436.js');
27
27
  const sqmPortalForgotPasswordView = require('./sqm-portal-forgot-password-view-1704d285.js');
28
- const sqmPortalEmailVerificationView = require('./sqm-portal-email-verification-view-3c7d8701.js');
28
+ const sqmPortalEmailVerificationView = require('./sqm-portal-email-verification-view-08d1848c.js');
29
29
  const sqmPortalResetPasswordView = require('./sqm-portal-reset-password-view-4d78fd6d.js');
30
30
  const sqmPortalVerifyEmailView = require('./sqm-portal-verify-email-view-b595e302.js');
31
31
  const sqmAssetCardView = require('./sqm-asset-card-view-07f86880.js');
32
- const sqmPortalFooterView = require('./sqm-portal-footer-view-8f5d682e.js');
32
+ const sqmPortalFooterView = require('./sqm-portal-footer-view-69c73802.js');
33
33
  const sqmHeroView = require('./sqm-hero-view-bb3d00a1.js');
34
34
  const sqmNameFieldsView = require('./sqm-name-fields-view-24614ac7.js');
35
35
 
@@ -14803,7 +14803,6 @@ const EXCHANGE = index_module.dist.gql `
14803
14803
  `;
14804
14804
  function useRewardExchangeList(props) {
14805
14805
  var _a, _b, _c, _d;
14806
- const drawerRef = _extends.useRef();
14807
14806
  const [exchangeState, setExchangeState] = _extends.useReducer((state, next) => ({
14808
14807
  ...state,
14809
14808
  ...next,
@@ -14817,22 +14816,16 @@ function useRewardExchangeList(props) {
14817
14816
  const { selectedItem, selectedStep, redeemStage, amount, exchangeError } = exchangeState;
14818
14817
  const user = index_module.T();
14819
14818
  const [exchange, { data: exchangeResponse, errors }] = index_module.be(EXCHANGE);
14820
- const { data, loading } = index_module.en(GET_EXCHANGE_LIST, !(user === null || user === void 0 ? void 0 : user.jwt));
14819
+ const { data, loading, refetch } = index_module.en(GET_EXCHANGE_LIST, !(user === null || user === void 0 ? void 0 : user.jwt));
14821
14820
  _extends.useEffect(() => {
14822
14821
  var _a, _b;
14823
14822
  if ((_b = (_a = exchangeResponse === null || exchangeResponse === void 0 ? void 0 : exchangeResponse.exchangeReward) === null || _a === void 0 ? void 0 : _a.reward) === null || _b === void 0 ? void 0 : _b.id) {
14824
14823
  setExchangeState({ redeemStage: "success" });
14825
14824
  }
14826
14825
  if (!!errors) {
14827
- console.log("YEA");
14828
14826
  setExchangeState({ exchangeError: true });
14829
14827
  }
14830
14828
  }, [exchangeResponse, errors]);
14831
- function openDrawer() {
14832
- var _a;
14833
- setExchangeState({ redeemStage: "chooseReward" });
14834
- (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.show();
14835
- }
14836
14829
  function exchangeReward() {
14837
14830
  if (!selectedItem)
14838
14831
  return;
@@ -14890,29 +14883,16 @@ function useRewardExchangeList(props) {
14890
14883
  }
14891
14884
  exchange({ exchangeRewardInput: exchangeVariables });
14892
14885
  }
14893
- const resetState = useCallback.useCallback((e) => {
14894
- var _a, _b;
14895
- // selects also trigger an sl-hide event :(
14896
- //@ts-ignore - componentId is not private here
14897
- if (((_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.componentId) !== ((_b = drawerRef.current) === null || _b === void 0 ? void 0 : _b.componentId))
14898
- return;
14886
+ const resetState = (refresh) => {
14887
+ refresh && refetch();
14899
14888
  setExchangeState({
14900
14889
  amount: 0,
14901
14890
  selectedStep: undefined,
14902
14891
  selectedItem: undefined,
14903
14892
  exchangeError: false,
14893
+ redeemStage: "chooseReward",
14904
14894
  });
14905
- }, []);
14906
- _extends.useEffect(() => {
14907
- if (!(drawerRef === null || drawerRef === void 0 ? void 0 : drawerRef.current))
14908
- return;
14909
- const drawer = drawerRef.current;
14910
- // Clear input value when drawer is closed
14911
- drawer.addEventListener("sl-hide", resetState);
14912
- return () => {
14913
- drawer.removeEventListener("sl-hide", resetState);
14914
- };
14915
- }, [drawerRef.current]);
14895
+ };
14916
14896
  function setStage(stage) {
14917
14897
  setExchangeState({ redeemStage: stage });
14918
14898
  }
@@ -14930,27 +14910,21 @@ function useRewardExchangeList(props) {
14930
14910
  },
14931
14911
  data: {
14932
14912
  exchangeList: (_b = (_a = data === null || data === void 0 ? void 0 : data.viewer) === null || _a === void 0 ? void 0 : _a.visibleRewardExchangeItems) === null || _b === void 0 ? void 0 : _b.data,
14933
- //@ts-ignore
14934
14913
  fuelTankCode: (_d = (_c = exchangeResponse === null || exchangeResponse === void 0 ? void 0 : exchangeResponse.exchangeReward) === null || _c === void 0 ? void 0 : _c.reward) === null || _d === void 0 ? void 0 : _d.fuelTankCode,
14935
14914
  },
14936
14915
  callbacks: {
14937
14916
  exchangeReward,
14938
- openDrawer,
14939
14917
  setExchangeState,
14940
14918
  setStage,
14941
- },
14942
- refs: {
14943
- drawerRef,
14919
+ resetState,
14944
14920
  },
14945
14921
  };
14946
14922
  }
14947
14923
 
14948
- const LeftArrow = () => (index.h("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { marginBottom: "-2px", marginRight: "5px" } },
14949
- index.h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M7.34655 1.90573C7.75405 2.31323 7.75405 2.97392 7.34655 3.38143L3.56266 7.16531H14.9565C15.5328 7.16531 16 7.6325 16 8.20879C16 8.78509 15.5328 9.25227 14.9565 9.25227H3.56266L7.69437 13.384C8.10188 13.7915 8.10188 14.4522 7.69437 14.8597C7.28687 15.2672 6.62617 15.2672 6.21867 14.8597L0.305628 8.94664C-0.101876 8.53914 -0.101876 7.87845 0.305628 7.47094L5.87084 1.90573C6.27835 1.49822 6.93904 1.49822 7.34655 1.90573Z", fill: "#858585" })));
14950
14924
  const ExchangeArrows = () => (index.h("svg", { width: "30", height: "30", viewBox: "0 0 30 30", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
14951
14925
  index.h("circle", { cx: "15", cy: "15", r: "15", fill: "white" }),
14952
14926
  index.h("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M10.6255 21.783C10.5129 21.8963 10.3597 21.96 10.2 21.96C10.0402 21.96 9.88705 21.8963 9.77442 21.783L5.87442 17.8597C5.64081 17.6247 5.64194 17.2448 5.87695 17.0112C6.11197 16.7775 6.49186 16.7787 6.72548 17.0137L9.59995 19.9054V8.52001C9.59995 8.18864 9.86858 7.92001 10.2 7.92001C10.5313 7.92001 10.8 8.18864 10.8 8.52001V19.9054L13.6744 17.0137C13.908 16.7787 14.2879 16.7775 14.5229 17.0112C14.758 17.2448 14.7591 17.6247 14.5255 17.8597L10.6255 21.783ZM20.2255 8.09707C20.1129 7.98378 19.9597 7.92007 19.8 7.92007C19.6402 7.92007 19.487 7.98378 19.3744 8.09707L15.4744 12.0204C15.2408 12.2554 15.2419 12.6353 15.477 12.8689C15.712 13.1025 16.0919 13.1014 16.3255 12.8664L19.2 9.97473V21.3601C19.2 21.6914 19.4686 21.9601 19.8 21.9601C20.1313 21.9601 20.4 21.6914 20.4 21.3601V9.97473L23.2744 12.8664C23.508 13.1014 23.8879 13.1025 24.1229 12.8689C24.358 12.6353 24.3591 12.2554 24.1255 12.0204L20.2255 8.09707Z", fill: "#333333" })));
14953
- const CheckMark = () => (index.h("svg", { style: { top: "-4px", position: "relative", left: "2px" }, xmlns: "http://www.w3.org/2000/svg", width: "10", height: "7", viewBox: "0 0 10 7", fill: "none" },
14927
+ const CheckMark = () => (index.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "10", height: "7", viewBox: "0 0 10 7", fill: "none" },
14954
14928
  index.h("path", { d: "M2.12828 2.71485C1.72536 2.33712 1.09253 2.35754 0.714799 2.76045C0.337068 3.16336 0.357483 3.7962 0.760395 4.17393L2.12828 2.71485ZM3.81471 5.66661L3.13076 6.39615C3.51542 6.75677 4.11399 6.75677 4.49865 6.39615L3.81471 5.66661ZM9.23939 1.95171C9.6423 1.57397 9.66271 0.941139 9.28498 0.538227C8.90725 0.135315 8.27442 0.114901 7.87151 0.492631L9.23939 1.95171ZM0.760395 4.17393L3.13076 6.39615L4.49865 4.93708L2.12828 2.71485L0.760395 4.17393ZM4.49865 6.39615L9.23939 1.95171L7.87151 0.492631L3.13076 4.93708L4.49865 6.39615Z", fill: "white" })));
14955
14929
 
14956
14930
  function Dot({ active, completed, incomplete, }) {
@@ -14972,17 +14946,18 @@ function Dot({ active, completed, incomplete, }) {
14972
14946
  index.h("div", { style: {
14973
14947
  backgroundColor: completed ? "#9E9E9E" : "#FFF",
14974
14948
  border: active
14975
- ? "2px solid #9E9E9E"
14949
+ ? "3px solid #9E9E9E"
14976
14950
  : incomplete
14977
- ? "2px solid #E5E5E5"
14978
- : "none",
14951
+ ? "3px solid #E5E5E5"
14952
+ : "3px solid #9E9E9E",
14979
14953
  borderRadius: "50%",
14980
- width: completed ? "14px" : "10px",
14981
- height: completed ? "14px" : "10px",
14982
- margin: "-5px auto 0px",
14954
+ width: "10px",
14955
+ height: "10px",
14956
+ margin: "-6px auto 0px",
14983
14957
  zIndex: "1",
14984
14958
  boxSizing: "content-box",
14985
- } }, completed && index.h(CheckMark, null))));
14959
+ } }, completed && (index.h("div", { style: { top: "-6px", position: "relative" } },
14960
+ index.h(CheckMark, null))))));
14986
14961
  }
14987
14962
  function ProgressLine({ incomplete = false, active = false }) {
14988
14963
  return (index.h("div", { style: {
@@ -15021,11 +14996,12 @@ const stageProgressList = {
15021
14996
  function RewardExchangeView(props) {
15022
14997
  const style = {
15023
14998
  Container: {
14999
+ padding: "var(--sl-spacing-medium)",
15024
15000
  position: "relative",
15025
15001
  },
15026
15002
  CardContainer: {
15027
- "&:hover": {
15028
- boxShadow: "0 3px 10px #87ceeb6e!important",
15003
+ "&:active": {
15004
+ //boxShadow: "0 3px 10px #87ceeb6e!important",
15029
15005
  },
15030
15006
  },
15031
15007
  Base: {
@@ -15034,8 +15010,9 @@ function RewardExchangeView(props) {
15034
15010
  textAlign: "center",
15035
15011
  height: "120px",
15036
15012
  "&::part(base)": {
15013
+ boxShadow: "none",
15037
15014
  width: "100%",
15038
- maxWidth: "350px",
15015
+ // maxWidth: "350px",
15039
15016
  display: "flex",
15040
15017
  margin: "0 auto",
15041
15018
  },
@@ -15110,12 +15087,39 @@ function RewardExchangeView(props) {
15110
15087
  },
15111
15088
  },
15112
15089
  },
15090
+ KutayCard: {
15091
+ "&::part(base)": {
15092
+ boxShadow: "none",
15093
+ },
15094
+ },
15095
+ KutayButton: {
15096
+ display: "flex",
15097
+ flexWrap: "wrap",
15098
+ margin: "var(--sl-spacing-medium) 0",
15099
+ "& .cancel": {
15100
+ width: "20%",
15101
+ marginLeft: "auto",
15102
+ marginRight: "var(--sl-spacing-medium)",
15103
+ "&::part(base)": {
15104
+ fontWeight: "var(--sl-font-weight-normal)",
15105
+ color: "var(--sl-color-neutral-1000)",
15106
+ },
15107
+ },
15108
+ "& .continue": {
15109
+ width: "20%",
15110
+ "&::part(base)": {
15111
+ background: "var(--sl-color-neutral-500)",
15112
+ fontWeight: "var(--sl-font-weight-normal)",
15113
+ color: "var(--sl-color-neutral-0)",
15114
+ },
15115
+ },
15116
+ },
15113
15117
  };
15114
15118
  // JSS config
15115
15119
  jssPresetDefault_esm.jss.setup(jssPresetDefault_esm.create());
15116
15120
  const sheet = jssPresetDefault_esm.jss.createStyleSheet(style);
15117
15121
  const styleString = sheet.toString();
15118
- const { states, data, callbacks, refs } = props;
15122
+ const { states, data, callbacks } = props;
15119
15123
  const { selectedItem, selectedStep } = states;
15120
15124
  function getInput() {
15121
15125
  var _a, _b;
@@ -15138,12 +15142,13 @@ function RewardExchangeView(props) {
15138
15142
  step.prettyDestinationValue,
15139
15143
  index.h("div", { slot: "suffix", style: { fontSize: "75%", float: "right" } },
15140
15144
  step.prettySourceValue,
15141
- step.unavailableReasonCode && (index.h("p", { style: { fontSize: "70%", color: "#F2994A" } }, step.unavailableReasonCode))))))));
15145
+ step.unavailableReasonCode && (index.h("p", { style: { fontSize: "70%", color: "#F2994A" } }, global.intl.formatMessage({
15146
+ id: "unavailableCode",
15147
+ defaultMessage: states.content.text.notAvailableError,
15148
+ }, { unavailableReasonCode: step.unavailableReasonCode })))))))));
15142
15149
  }
15143
15150
  function chooseReward() {
15144
15151
  var _a;
15145
- const nextStage = "chooseAmount";
15146
- // console.log({ nextStage, ruleType: selectedItem?.ruleType });
15147
15152
  return [
15148
15153
  index.h("div", { style: {
15149
15154
  display: "grid",
@@ -15152,8 +15157,11 @@ function RewardExchangeView(props) {
15152
15157
  gridTemplateColumns: "repeat(auto-fill, minmax(300px, 1fr))",
15153
15158
  } }, (_a = data.exchangeList) === null || _a === void 0 ? void 0 : _a.map((item) => {
15154
15159
  const style = {
15155
- boxShadow: item.key === (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.key) ? "0 1px 8px #87ceeb" : "none",
15160
+ boxShadow: item.key === (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.key)
15161
+ ? "0 0 0 2px var(--sl-color-primary-500)"
15162
+ : "none",
15156
15163
  marginBottom: "10px 0",
15164
+ borderRadius: "var(--sl-border-radius-medium)",
15157
15165
  flex: "1",
15158
15166
  minWidth: "100%",
15159
15167
  color: !item.available && "#eee",
@@ -15164,6 +15172,17 @@ function RewardExchangeView(props) {
15164
15172
  return (index.h("div", { key: item.key, class: item.available ? sheet.classes.CardContainer : "", style: style },
15165
15173
  index.h("sl-card", { class: sheet.classes.Base, onClick: () => item.available &&
15166
15174
  callbacks.setExchangeState({ selectedItem: item }) },
15175
+ item.key === (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.key) && (index.h("div", { style: {
15176
+ width: "18px",
15177
+ height: "18px",
15178
+ borderRadius: "50%",
15179
+ background: "var(--sl-color-primary-500)",
15180
+ position: "relative",
15181
+ margin: "-9px",
15182
+ left: "350px",
15183
+ } },
15184
+ index.h("div", { style: { position: "relative", top: "-6px" } },
15185
+ index.h(CheckMark, null)))),
15167
15186
  // item?.imageUrl &&
15168
15187
  index.h("img", { class: sheet.classes.PreviewImage, src: (item === null || item === void 0 ? void 0 : item.imageUrl) || index.getAssetPath("./assets/Reward-icon.png") }),
15169
15188
  index.h("p", { style: {
@@ -15171,7 +15190,7 @@ function RewardExchangeView(props) {
15171
15190
  margin: "0",
15172
15191
  flex: "1",
15173
15192
  fontSize: "90%",
15174
- padding: "8px"
15193
+ padding: "8px",
15175
15194
  } },
15176
15195
  index.h("b", null, item.description),
15177
15196
  index.h("p", { style: { margin: "0" } }, amount),
@@ -15179,16 +15198,14 @@ function RewardExchangeView(props) {
15179
15198
  fontSize: "70%",
15180
15199
  color: "#F2994A",
15181
15200
  marginTop: "0",
15182
- } }, item.unavailableReasonCode ===
15183
- "INSUFFICIENT_REDEEMABLE_CREDIT"
15184
- ? "Not enough points"
15185
- : item.unavailableReasonCode))))));
15201
+ } }, global.intl.formatMessage({
15202
+ id: "unavailableCode",
15203
+ defaultMessage: states.content.text.notAvailableError,
15204
+ }, { unavailableReasonCode: item.unavailableReasonCode })))))));
15186
15205
  })),
15187
- index.h("div", { class: sheet.classes.Buttons },
15188
- index.h("sl-button", { onClick: () => callbacks.setStage(nextStage), style: { display: "block" }, class: sheet.classes.Button, disabled: !states.selectedItem }, "Continue"),
15189
- index.h("a", {
15190
- // onClick={() => refs.drawerRef.current?.hide()}
15191
- style: { display: "block" }, class: sheet.classes.Button }, "Cancel")),
15206
+ index.h("div", { class: sheet.classes.KutayButton },
15207
+ index.h("sl-button", { class: "cancel", size: "large", type: "text" }, "Cancel"),
15208
+ index.h("sl-button", { class: "continue", size: "large", onClick: () => callbacks.setStage("chooseAmount"), disabled: !states.selectedItem }, "Continue")),
15192
15209
  ];
15193
15210
  }
15194
15211
  function chooseAmount() {
@@ -15197,13 +15214,11 @@ function RewardExchangeView(props) {
15197
15214
  index.h("div", { style: { width: "50%", margin: "0 auto" } }, (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.imageUrl) && (index.h("img", { class: sheet.classes.FullImage, src: selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.imageUrl }))),
15198
15215
  index.h("p", null, selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.description),
15199
15216
  index.h("div", { class: sheet.classes.InputBox }, input),
15200
- index.h("div", { class: sheet.classes.Buttons },
15201
- index.h("sl-button", { onClick: () => callbacks.setStage("confirmation"), disabled: input && !states.amount, style: { display: "block" }, class: sheet.classes.Button }, "Continue"),
15202
- index.h("a", { onClick: () => callbacks.setStage("chooseReward"), style: { display: "block" }, class: sheet.classes.Button }, "Back"))));
15217
+ index.h("div", { class: sheet.classes.KutayButton },
15218
+ index.h("sl-button", { class: "cancel", size: "large", type: "text", onClick: () => callbacks.resetState() }, "Cancel"),
15219
+ index.h("sl-button", { class: "continue", size: "large", onClick: () => callbacks.setStage("confirmation"), disabled: input && !states.amount }, "Continue to confirmation"))));
15203
15220
  }
15204
- // console.log({ selectedItem, selectedStep });
15205
15221
  function confirmation() {
15206
- const previousStage = "chooseAmount";
15207
15222
  return (index.h("div", null,
15208
15223
  index.h("h2", null, "Confirm and redeem"),
15209
15224
  index.h("div", { style: { textAlign: "center" } },
@@ -15223,13 +15238,14 @@ function RewardExchangeView(props) {
15223
15238
  index.h("p", { style: { marginBottom: "0", flex: "1" } }, selectedStep === null || selectedStep === void 0 ? void 0 : selectedStep.prettyDestinationValue)))),
15224
15239
  index.h("div", { class: sheet.classes.Buttons },
15225
15240
  index.h("sl-button", { onClick: callbacks.exchangeReward, style: { display: "block" }, class: sheet.classes.Button }, "Redeem"),
15226
- index.h("a", { onClick: () => callbacks.setStage(previousStage), style: { display: "block" }, class: sheet.classes.Button }, "Back"))));
15241
+ index.h("a", { onClick: () => callbacks.setStage("chooseAmount"), style: { display: "block" }, class: sheet.classes.Button }, "Back"))));
15227
15242
  }
15228
15243
  function success() {
15229
15244
  return (index.h("div", { style: { textAlign: "center" } },
15230
15245
  index.h("img", { class: sheet.classes.FullImage, src: index.getAssetPath("./assets/Reward-icon.png") }),
15231
15246
  index.h("p", { style: { color: "forestgreen" } }, "Reward Redeemed"),
15232
- (data === null || data === void 0 ? void 0 : data.fuelTankCode) && index.h("pre", null, data === null || data === void 0 ? void 0 : data.fuelTankCode)));
15247
+ (data === null || data === void 0 ? void 0 : data.fuelTankCode) && index.h("pre", null, data === null || data === void 0 ? void 0 : data.fuelTankCode),
15248
+ index.h("sl-button", { onClick: () => callbacks.resetState(true) }, "Done")));
15233
15249
  }
15234
15250
  const stages = {
15235
15251
  chooseReward: () => chooseReward(),
@@ -15251,26 +15267,28 @@ function RewardExchangeView(props) {
15251
15267
  })),
15252
15268
  index.h(ProgressBar, { stageCount: 3, currentStage: stageNumber })));
15253
15269
  }
15254
- const BackButton = () => {
15255
- if (states.redeemStage === "success")
15256
- return "";
15257
- let previousStage = "";
15258
- if (states.redeemStage === "confirmation") {
15259
- previousStage = "chooseAmount";
15260
- }
15261
- else if (states.redeemStage === "chooseAmount") {
15262
- previousStage = "chooseReward";
15263
- }
15264
- return (index.h("div", { slot: "label" },
15265
- index.h("a", { style: { cursor: "pointer", fontSize: "80%", color: "#858585" }, onClick: () => callbacks.setStage(previousStage) },
15266
- index.h(LeftArrow, null),
15267
- " Back")));
15268
- };
15269
- console.log(props);
15270
+ // const BackButton = () => {
15271
+ // if (states.redeemStage === "success") return "";
15272
+ // let previousStage: Stages = "";
15273
+ // if (states.redeemStage === "confirmation") {
15274
+ // previousStage = "chooseAmount";
15275
+ // } else if (states.redeemStage === "chooseAmount") {
15276
+ // previousStage = "chooseReward";
15277
+ // }
15278
+ // return (
15279
+ // <div slot="label">
15280
+ // <a
15281
+ // style={{ cursor: "pointer", fontSize: "80%", color: "#858585" }}
15282
+ // onClick={() => callbacks.setStage(previousStage)}
15283
+ // >
15284
+ // <LeftArrow /> Back
15285
+ // </a>
15286
+ // </div>
15287
+ // );
15288
+ // };
15270
15289
  return (index.h("div", { class: sheet.classes.Container },
15271
15290
  index.h("style", { type: "text/css" }, styleString),
15272
15291
  index.h("div", null,
15273
- index.h(BackButton, null),
15274
15292
  stageMap(),
15275
15293
  currentStage && currentStage(),
15276
15294
  states.exchangeError &&
@@ -15285,6 +15303,10 @@ const SqmRewardExchangeList = class {
15285
15303
  * @uiName Exchange button text
15286
15304
  */
15287
15305
  this.buttonText = "Exchange Rewards";
15306
+ /**
15307
+ * @uiName Exchange button text
15308
+ */
15309
+ this.notAvailableError = "{unavailableReasonCode, select, US_TAX {US Tax limit} INSUFFICIENT_REDEEMABLE_CREDIT {Not enough points} other {Not available} }";
15288
15310
  _extends.h$1(this);
15289
15311
  }
15290
15312
  disconnectedCallback() { }
@@ -15298,10 +15320,10 @@ const SqmRewardExchangeList = class {
15298
15320
  // if (missingProps) {
15299
15321
  // return <RequiredPropsError missingProps={missingProps} />;
15300
15322
  // }
15301
- const { states, data, callbacks, refs } = index_module.j()
15323
+ const { states, data, callbacks } = index_module.j()
15302
15324
  ? useRewardExchangeListDemo(utils.getProps(this))
15303
15325
  : useRewardExchangeList(utils.getProps(this));
15304
- return (index.h(index.Host, { style: { display: "contents" } }, index.h(RewardExchangeView, { states: states, data: data, callbacks: callbacks, refs: refs })));
15326
+ return (index.h(index.Host, { style: { display: "contents" } }, index.h(RewardExchangeView, { states: states, data: data, callbacks: callbacks })));
15305
15327
  }
15306
15328
  static get assetsDirs() { return ["assets"]; }
15307
15329
  };
@@ -15322,12 +15344,9 @@ function useRewardExchangeListDemo(props) {
15322
15344
  },
15323
15345
  callbacks: {
15324
15346
  exchangeReward: () => { },
15325
- openDrawer: () => { },
15326
15347
  setExchangeState: (_) => { },
15327
15348
  setStage: (_) => { },
15328
- },
15329
- refs: {
15330
- drawerRef: {},
15349
+ resetState: () => { },
15331
15350
  },
15332
15351
  }, props.demoData || {}, { arrayMerge: (_, a) => a });
15333
15352
  }
@@ -21010,6 +21029,69 @@ const PasswordField = /*#__PURE__*/Object.freeze({
21010
21029
  ValidationError: ValidationError
21011
21030
  });
21012
21031
 
21032
+ /**
21033
+ * Displays a cartesian product of the input props
21034
+ *
21035
+ * @returns
21036
+ */
21037
+ function MatrixStory({ matrix, props, Component, }) {
21038
+ const propMatrix = Object.keys(matrix).map((propKey) => {
21039
+ const propValues = matrix[propKey];
21040
+ return propValues.map((val) => {
21041
+ return {
21042
+ [propKey]: val,
21043
+ };
21044
+ });
21045
+ });
21046
+ const combinations = cartesian(...propMatrix);
21047
+ const propsCombinations = combinations.map((combo) => {
21048
+ return combo.reduce((props, prop) => {
21049
+ return {
21050
+ ...props,
21051
+ ...prop,
21052
+ };
21053
+ }, {});
21054
+ });
21055
+ return propsCombinations.map((combo) => {
21056
+ const example = { ...props, ...combo };
21057
+ return (index.h("div", null,
21058
+ index.h(PropsTable, { values: example }),
21059
+ index.h("hr", null),
21060
+ index.h(Component, Object.assign({}, example))));
21061
+ });
21062
+ }
21063
+ function PropsTable({ values }) {
21064
+ return (index.h("table", null,
21065
+ index.h("tbody", null, Object.keys(values).map((key) => {
21066
+ return (index.h("tr", null,
21067
+ index.h("th", null, key),
21068
+ index.h("td", null, JSON.stringify(values[key]))));
21069
+ }))));
21070
+ }
21071
+ /**
21072
+ * Source: https://stackoverflow.com/questions/15298912/javascript-generating-combinations-from-n-arrays-with-m-elements
21073
+ *
21074
+ * TODO: Could replace with a fork of https://www.npmjs.com/package/cartesian
21075
+ *
21076
+ * @param args - an array of arrays
21077
+ * @returns combinations of the elements in those array
21078
+ */
21079
+ function cartesian(...args) {
21080
+ var r = [], max = args.length - 1;
21081
+ function helper(arr, i) {
21082
+ for (var j = 0, l = args[i].length; j < l; j++) {
21083
+ var a = arr.slice(0); // clone arr
21084
+ a.push(args[i][j]);
21085
+ if (i == max)
21086
+ r.push(a);
21087
+ else
21088
+ helper(a, i + 1);
21089
+ }
21090
+ }
21091
+ helper([], 0);
21092
+ return r;
21093
+ }
21094
+
21013
21095
  const checkmark_circle = () => {
21014
21096
  return (index.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 18 18" },
21015
21097
  index.h("path", { fill: "currentColor", "fill-rule": "evenodd", d: "M1.636 9a7.364 7.364 0 1114.728 0A7.364 7.364 0 011.636 9zM9 0a9 9 0 100 18A9 9 0 009 0zm5.192 6.266a.982.982 0 00-1.548-1.208l-4.787 6.137-2.58-2.58a.982.982 0 00-1.39 1.388l3.367 3.366a.982.982 0 001.468-.09l5.47-7.013z", "clip-rule": "evenodd" })));
@@ -21027,7 +21109,7 @@ const gift = () => {
21027
21109
  };
21028
21110
 
21029
21111
  function ProgressBarView(props) {
21030
- const { progress = 0, goal = 1, steps = false, progressBarUnit = "", repeatable = false, complete = false, } = props;
21112
+ const { progress = 0, goal = 1, steps = false, progressBarUnit = "", repeatable = false, complete = false, expired = false, } = props;
21031
21113
  console.log("progress bar props", props);
21032
21114
  const gift1 = gift();
21033
21115
  const gift2 = gift();
@@ -21056,7 +21138,10 @@ function ProgressBarView(props) {
21056
21138
  ProgressBar: {
21057
21139
  "& .progress-bar": {
21058
21140
  height: "15px",
21059
- marginTop: steps ? "var(--sl-spacing-x-medium)" : "var(--sl-spacing-large)",
21141
+ marginTop: steps
21142
+ ? "var(--sl-spacing-medium)"
21143
+ : "var(--sl-spacing-large)",
21144
+ filter: expired ? "grayscale(1)" : "",
21060
21145
  marginBottom: "var(--sl-spacing-xx-large)",
21061
21146
  marginRight: "var(--sl-spacing-x-small)",
21062
21147
  fontSize: "var(--sl-font-size-x-small)",
@@ -21074,7 +21159,9 @@ function ProgressBarView(props) {
21074
21159
  width: "100%",
21075
21160
  height: "4px",
21076
21161
  borderRadius: "4px",
21077
- backgroundColor: complete ? "var(--sl-color-success-500)" : "var(--sl-color-primary-500)",
21162
+ backgroundColor: complete
21163
+ ? "var(--sl-color-success-500)"
21164
+ : "var(--sl-color-primary-500)",
21078
21165
  },
21079
21166
  "& .progress": {
21080
21167
  display: "block",
@@ -21087,7 +21174,9 @@ function ProgressBarView(props) {
21087
21174
  width: "12px",
21088
21175
  height: "12px",
21089
21176
  display: "flex",
21090
- backgroundColor: complete ? "var(--sl-color-success-500)" : "var(--sl-color-primary-500)",
21177
+ backgroundColor: complete
21178
+ ? "var(--sl-color-success-500)"
21179
+ : "var(--sl-color-primary-500)",
21091
21180
  borderRadius: "50%",
21092
21181
  position: "relative",
21093
21182
  left: "47%",
@@ -21277,7 +21366,7 @@ function ProgressBarView(props) {
21277
21366
  }
21278
21367
  else {
21279
21368
  items.push(index.h("div", { class: "remain" }));
21280
- items.push(index.h("div", { class: "empty" }, progressBarUnit + i));
21369
+ items.push(index.h("div", { class: "empty" }, i));
21281
21370
  }
21282
21371
  }
21283
21372
  else if (i == goal) {
@@ -21335,7 +21424,6 @@ function ProgressBarView(props) {
21335
21424
  }
21336
21425
 
21337
21426
  function TaskCardView(props) {
21338
- const { rewardAmount, cardTitle, description, showProgressBar, progress = 0, goal, rewardUnit, repeatable, showExpiry, dateExpires, buttonText, buttonLink, loading, } = props;
21339
21427
  console.log({ props });
21340
21428
  const checkmark_circle$1 = checkmark_circle();
21341
21429
  const arrow_left_right$1 = arrow_left_right();
@@ -21349,16 +21437,28 @@ function TaskCardView(props) {
21349
21437
  position: "relative",
21350
21438
  boxSizing: "border-box",
21351
21439
  minWidth: "347px",
21352
- background: "var(--sl-color-white)",
21353
- border: "1px solid var(--sl-color-gray-300)",
21440
+ background: "var(--sl-color-neutral-0)",
21441
+ border: "1px solid var(--sl-color-neutral-300)",
21354
21442
  borderRadius: "var(--sl-border-radius-medium)",
21355
21443
  fontSize: "var(--sl-font-size-small)",
21356
21444
  lineHeight: "var(--sl-line-height-dense)",
21445
+ color: "var(--sl-color-neutral-600)",
21357
21446
  },
21358
21447
  "& .main.complete": {
21359
21448
  background: "var(--sl-color-success-50)",
21360
21449
  borderColor: "var(--sl-color-success-700)",
21361
21450
  },
21451
+ "& .main.expired": {
21452
+ color: "var(--sl-color-neutral-400)",
21453
+ background: "var(--sl-color-neutral-100)",
21454
+ },
21455
+ "& .title": {
21456
+ fontSize: "var(--sl-font-size-small)",
21457
+ fontWeight: "var(--sl-font-weight-semibold)",
21458
+ },
21459
+ "& .black": {
21460
+ color: "var(--sl-color-neutral-1000)",
21461
+ },
21362
21462
  },
21363
21463
  Header: {
21364
21464
  display: "flex",
@@ -21371,7 +21471,6 @@ function TaskCardView(props) {
21371
21471
  },
21372
21472
  "& .value": {
21373
21473
  alignSelf: "center",
21374
- color: "var(--sl-color-black)",
21375
21474
  fontSize: "var(--sl-font-size-x-large)",
21376
21475
  fontWeight: "var(--sl-font-weight-semibold)",
21377
21476
  lineHeight: "100%",
@@ -21380,16 +21479,21 @@ function TaskCardView(props) {
21380
21479
  "& .text": {
21381
21480
  alignSelf: "end",
21382
21481
  textTransform: "uppercase",
21383
- color: "var(--sl-color-gray-600)",
21384
21482
  fontSize: "var(--sl-font-size-x-small)",
21385
21483
  lineHeight: "var(--sl-font-size-medium)",
21386
21484
  marginRight: "var(--sl-spacing-xx-small)",
21387
21485
  },
21388
- },
21389
- Title: {
21390
- color: "var(--sl-color-black)",
21391
- fontSize: "var(--sl-font-size-small)",
21392
- fontWeight: "var(--sl-font-weight-semibold)",
21486
+ "& .end": {
21487
+ color: "var(--sl-color-warning-600)",
21488
+ fontWeight: "var(--sl-font-weight-semibold)",
21489
+ marginBottom: "var(--sl-spacing-xx-small)",
21490
+ },
21491
+ "& .black": {
21492
+ color: "var(--sl-color-neutral-1000)",
21493
+ },
21494
+ "& .neutral": {
21495
+ color: "var(--sl-color-neutral-400)",
21496
+ },
21393
21497
  },
21394
21498
  Footer: {
21395
21499
  display: "flex",
@@ -21401,58 +21505,69 @@ function TaskCardView(props) {
21401
21505
  marginTop: "auto",
21402
21506
  verticalAlign: "text-bottom",
21403
21507
  fontSize: "var(--sl-font-size-x-small)",
21404
- color: "var(--sl-color-gray-600)",
21405
21508
  },
21406
21509
  "& .success": {
21407
- color: "var(--sl-color-success-600)!important",
21510
+ color: "var(--sl-color-success-600)",
21408
21511
  fontWeight: "var(--sl-font-weight-semibold)",
21409
21512
  },
21410
21513
  "& .action": {
21411
21514
  marginTop: "auto",
21412
21515
  marginLeft: "auto",
21516
+ "&::part(base)": {
21517
+ color: "var(--sl-color-neutral-0)",
21518
+ borderRadius: "var(--sl-border-radius-medium)",
21519
+ },
21520
+ "&.disabled::part(base)": {
21521
+ border: "1px solid var(--sl-color-neutral-400)",
21522
+ background: "var(--sl-color-neutral-400)",
21523
+ },
21413
21524
  },
21414
- "& sl-button.action::part(base) ": {
21415
- color: "var(--sl-color-white)",
21416
- background: "var(--sl-color-primary-500)",
21417
- border: "1px solid var(--sl-color-primary-500)",
21418
- borderRadius: "var(--sl-border-radius-medium)",
21419
- },
21420
- "& sl-button.action.completed::part(base) ": {
21421
- border: "1px solid var(--sl-color-gray-300)!important",
21422
- background: "var(--sl-color-gray-300)!important",
21525
+ "& .neutral": {
21526
+ color: "var(--sl-color-neutral-400)",
21423
21527
  },
21424
21528
  },
21425
21529
  };
21426
21530
  jssPresetDefault_esm.jss.setup(jssPresetDefault_esm.create());
21427
21531
  const sheet = jssPresetDefault_esm.jss.createStyleSheet(style);
21428
21532
  const styleString = sheet.toString();
21429
- const showComplete = progress >= goal;
21430
- const repetitions = showProgressBar ? Math.floor(progress / goal) : progress;
21431
- const taskComplete = showComplete && repeatable === false;
21432
- console.log({ showProgressBar, loading });
21533
+ const showComplete = props.progress >= props.goal;
21534
+ const repetitions = props.showProgressBar
21535
+ ? Math.floor(props.progress / props.goal)
21536
+ : props.progress;
21537
+ const taskComplete = showComplete && props.repeatable === false;
21538
+ const dateExpire = props.showExpiry && luxon.DateTime.fromISO(props.dateExpires.split("/").pop());
21539
+ const taskExpired = props.showExpiry && luxon.DateTime.now() > dateExpire;
21540
+ const dateExpireText = dateExpire.toLocaleString(luxon.DateTime.DATE_FULL);
21541
+ console.log(taskExpired);
21433
21542
  return (index.h("div", { class: sheet.classes.TaskCard },
21434
- index.h("div", { class: showComplete ? "main complete" : "main" },
21543
+ index.h("div", { class: taskExpired ? "main expired" : taskComplete ? "main complete" : "main" },
21435
21544
  index.h("style", { type: "text/css" }, styleString),
21436
- index.h("div", { class: sheet.classes.Header },
21437
- showComplete && index.h("span", { class: "icon" }, checkmark_circle$1),
21438
- index.h("span", { class: "value" }, rewardAmount),
21439
- index.h("span", { class: "text" }, rewardUnit)),
21440
- index.h("div", { class: sheet.classes.Title }, cardTitle),
21441
- index.h(Details, { description: description }),
21442
- showProgressBar && loading ? (index.h("sl-skeleton", { style: { width: "98%", margin: "0 auto" } })) : (showProgressBar && index.h(ProgressBarView, Object.assign({}, props, { complete: taskComplete }))),
21443
- index.h("div", { class: sheet.classes.Footer },
21545
+ index.h("div", { class: sheet.classes.Header }, props.loading ? (index.h("sl-skeleton", { style: { width: "22%", margin: "0" } })) : (index.h("div", null,
21546
+ taskExpired && (index.h("div", { class: "end" },
21547
+ " ",
21548
+ "Ended " + dateExpireText,
21549
+ " ")),
21550
+ showComplete && (index.h("span", { class: taskExpired ? "icon neutral" : "icon" }, checkmark_circle$1)),
21551
+ index.h("span", { class: taskExpired ? "value" : "value black" }, props.rewardAmount),
21552
+ index.h("span", { class: "text" }, props.rewardUnit)))),
21553
+ props.loading ? (index.h("sl-skeleton", { style: { width: "42%", margin: "0 16px" } })) : (index.h("div", { class: taskExpired ? "title" : "title black" }, props.cardTitle)),
21554
+ props.loading ? (index.h("sl-skeleton", { style: { width: "91%", margin: "12px 16px" } })) : (index.h(Details, Object.assign({}, props))),
21555
+ props.showProgressBar && props.loading ? (index.h("sl-skeleton", { style: { width: "91%", margin: "0 auto" } })) : (props.showProgressBar && (index.h(ProgressBarView, Object.assign({}, props, { complete: taskComplete, expired: taskExpired })))),
21556
+ index.h("div", { class: sheet.classes.Footer }, props.loading ? (index.h("sl-skeleton", { style: { width: "25%", marginLeft: "auto" } })) : (index.h("div", { style: { display: "contents" } },
21444
21557
  index.h("span", { class: "text" },
21445
- repeatable && (index.h("div", null,
21446
- index.h("span", { class: repetitions > 0 ? "icon success" : "icon" }, arrow_left_right$1),
21447
- index.h("span", { class: repetitions > 0 ? "success" : "" },
21448
- "Completed ",
21449
- repetitions,
21450
- " times"))),
21451
- showExpiry && (index.h("span", null,
21452
- "Ends ",
21453
- " ",
21454
- dateExpires))),
21455
- index.h("sl-button", { class: taskComplete ? "action completed" : "action", size: "small", onClick: () => window.open(buttonLink), disabled: taskComplete }, buttonText)))));
21558
+ props.repeatable && (index.h("div", null,
21559
+ index.h("span", { class: repetitions > 0
21560
+ ? taskExpired
21561
+ ? "icon neutral"
21562
+ : "icon success"
21563
+ : "icon" }, arrow_left_right$1),
21564
+ index.h("span", { class: repetitions > 0
21565
+ ? taskExpired
21566
+ ? "neutral"
21567
+ : "success"
21568
+ : "" }, "Completed " + repetitions + " times"))),
21569
+ props.showExpiry && !taskExpired && (index.h("span", null, "Ends " + dateExpireText))),
21570
+ index.h("sl-button", { class: taskComplete || taskExpired ? "action disabled" : "action", type: "primary", size: "small", onClick: () => window.open(props.buttonLink), disabled: taskComplete || taskExpired }, props.buttonText)))))));
21456
21571
  }
21457
21572
  function Details(props) {
21458
21573
  const style = {
@@ -21467,7 +21582,7 @@ function Details(props) {
21467
21582
  position: "absolute",
21468
21583
  top: "var(--sl-spacing-medium)",
21469
21584
  right: "var(--sl-spacing-medium)",
21470
- color: "var(--sl-color-gray-700)",
21585
+ color: "var(--sl-color-neutral-700)",
21471
21586
  fontSize: "var(--sl-font-size-large)",
21472
21587
  "& :hover": {
21473
21588
  color: "var(--sl-color-primary-700)",
@@ -21476,16 +21591,21 @@ function Details(props) {
21476
21591
  transition: "transform var(--sl-transition-medium) ease",
21477
21592
  },
21478
21593
  "& input:checked ~ .summary": {
21479
- transition: "max-height var(--sl-transition-medium) ease",
21594
+ transition: "all var(--sl-transition-medium) ease",
21480
21595
  maxHeight: "300px",
21596
+ marginBottom: props.steps
21597
+ ? "var(--sl-spacing-large)"
21598
+ : props.showProgressBar
21599
+ ? "var(--sl-spacing-xx-large)"
21600
+ : "var(--sl-spacing-large)",
21481
21601
  },
21482
21602
  "& .summary": {
21483
21603
  display: "block",
21484
21604
  overflow: "hidden",
21485
- color: "var(--sl-color-gray-700)",
21486
- fontSize: "var(--sl-font-size-x-small)",
21605
+ fontSize: "var(--sl-font-size-small)",
21487
21606
  maxHeight: "0px",
21488
- transition: "max-height var(--sl-transition-fast) ease-out",
21607
+ transition: "all var(--sl-transition-fast) ease-out",
21608
+ marginBottom: "var(--sl-spacing-medium)",
21489
21609
  },
21490
21610
  },
21491
21611
  };
@@ -21502,14 +21622,21 @@ function Details(props) {
21502
21622
  index.h("span", { class: "summary" }, props.description))));
21503
21623
  }
21504
21624
 
21505
- const scenario$5 = "@author:derek\r\n@owner:\r\nFeature: Task Card\r\n\r\n\tScenario: A header, body title, description 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| description | Fill out our survey form and receive points! |\r\n\t\t\t| buttonText | Take Survey |\r\n\t\t\t| buttonLink | https://example.com/ |\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\t\tWhen they click the details icon\r\n\t\tThen \"Fill out our survey form and receive points!\" is shown as the card description\r\n\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\tScenario Outline: The Progress Bar can be shown or hidden but is hidden by default\r\n\t\tGiven a Task Card component\r\n\t\tAnd it <mayHave> \"showProgressBar\" <value>\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| mayHave | value | mayBe |\r\n\t\t\t| has | true | is |\r\n\t\t\t| has | false | isn't |\r\n\t\t\t| doesn't have | | isn't |\r\n\r\n\tScenario Outline: Tasks can be repeatable or one-time only but are one-time only be default\r\n\t\tGiven a Task Card component\r\n\t\tAnd it <mayHave> \"repeatable\" <value>\r\n\t\tAnd a user who has already completed the task\r\n\t\tWhen they views the Task Card\r\n\t\tThen they see a green checkmark icon beside the card heading\r\n\t\tAnd the card <mayBe> green\r\n\t\tAnd the card's border <mayBe> green\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| mayHave | value | mayBe |\r\n\t\t\t| has | true | isn't |\r\n\t\t\t| has | false | is |\r\n\t\t\t| doesn't have | | is |\r\n\r\n\tScenario: Task Expiries can be configured and disable the CTA after the expiry\r\n\t\tGiven a Task Card component\r\n\t\tAnd it is configured for <expiry>\r\n\t\tWhen a user views the Card on <day>\r\n\t\tThen they the expiry on <cardLocation>\r\n\t\tAnd the text <mayBe> orange\r\n\t\tAnd the card <mayBe> disabled\r\n\t\tAnd the card <mayBe> grey\r\n\t\tAnd the user <mayBe> unable to complete the loyalty task\r\n\t\tExamples:\r\n\t\t\t| expiry | day | cardLocation | mayBe |\r\n\t\t\t| Dec 31 2021 11:59:59 | Dec 1st 2021 12:00:00 | bottom left | isn't |\r\n\t\t\t| Dec 31 2021 11:59:59 | Dec 31 2021 11:00:00 | top right | isn't |\r\n\t\t\t| Dec 31 2021 11:59:59 | Jan 15th 2022 10:00:00 | top right | is |\r\n\r\n\tScenario Outline: Task expiry can be hidden or shown but is hidden by default\r\n\t\tGiven a Task Card\r\n\t\tAnd it is configured with an expiry\r\n\t\tAnd it <mayHave> \"showExpiry\" <value>\r\n\t\tWhen a user views the Task card\r\n\t\tThen the expiry <mayBe> shown in the bottom left hand corner\r\n\t\tExamples:\r\n\t\t\t| mayHave | value | mayBe |\r\n\t\t\t| has | true | is |\r\n\t\t\t| has | false | isn't |\r\n\t\t\t| doesn't have | | isn't |\r\n\r\n\t#DS: Currently this text is non configurable and isnt set up for proper pluralization\r\n\tScenario Outline: A task completion count is displayed for repeatable tasks\r\n\t\tGiven a Task Card is configured for a repeatable task\r\n\t\tAnd has \"goalCompletionNumber\" <goalCompletionNumberValue>\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 green\r\n\t\tExamples:\r\n\t\t\t| goalCompletionNumber | userGoalProgress | text |\r\n\t\t\t| 1 | 0 | Completed 0 times |\r\n\t\t\t| 1 | 1 | Completed 1 times |\r\n\t\t\t| 1 | 2 | Completed 2 times |\r\n\t\t\t| 10 | 5 | Completed 0 times |\r\n\t\t\t| 10 | 12 | Completed 1 times |\r\n\t\t\t| 10 | 29 | Completed 2 times |\r\n\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 is configured to have <progressSourcePath> progress source\r\n\t\tAnd a user\r\n\t\tWhen they view 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| value |\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\tScenario Outline: The users completion of a goal is calculated by the Goal Completion Number\r\n\t\tGiven a Task Card is configured to have <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\tScenario: The Goal Completion Number defaults to 1\r\n\t\tGiven a Task Card without a configured \"goalCompletionNumber\"\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 |";
21625
+ const scenarioTaskCard = "@author:derek\r\n@owner:\r\nFeature: Task Card\r\n\r\n\tScenario: A header, body title, description 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| description | Fill out our survey form and receive points! |\r\n\t\t\t| buttonText | Take Survey |\r\n\t\t\t| buttonLink | https://example.com/ |\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\t\tWhen they click the details icon\r\n\t\tThen \"Fill out our survey form and receive points!\" is shown as the card description\r\n\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\tScenario Outline: The Progress Bar can be shown or hidden but is hidden by default\r\n\t\tGiven a Task Card component\r\n\t\tAnd it <mayHave> \"showProgressBar\" <value>\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| mayHave | value | mayBe |\r\n\t\t\t| has | true | is |\r\n\t\t\t| has | false | isn't |\r\n\t\t\t| doesn't have | | isn't |\r\n\r\n\tScenario Outline: Tasks can be repeatable or one-time only but are one-time only be default\r\n\t\tGiven a Task Card component\r\n\t\tAnd it <mayHave> \"repeatable\" <value>\r\n\t\tAnd a user who has already completed the task\r\n\t\tWhen they views the Task Card\r\n\t\tThen they see a green checkmark icon beside the card heading\r\n\t\tAnd the card <mayBe> green\r\n\t\tAnd the card's border <mayBe> green\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| mayHave | value | mayBe |\r\n\t\t\t| has | true | isn't |\r\n\t\t\t| has | false | is |\r\n\t\t\t| doesn't have | | is |\r\n\r\n\tScenario: Task Expiries can be configured and disable the CTA after the expiry\r\n\t\tGiven a Task Card component\r\n\t\tAnd it is configured for <expiry>\r\n\t\tWhen a user views the Card on <day>\r\n\t\tThen they the expiry on <cardLocation>\r\n\t\tAnd the text <mayBe> orange\r\n\t\tAnd the card <mayBe> disabled\r\n\t\tAnd the card <mayBe> grey\r\n\t\tAnd the user <mayBe> unable to complete the loyalty task\r\n\t\tExamples:\r\n\t\t\t| expiry | day | cardLocation | mayBe |\r\n\t\t\t| Dec 31 2021 11:59:59 | Dec 1st 2021 12:00:00 | bottom left | isn't |\r\n\t\t\t| Dec 31 2021 11:59:59 | Dec 31 2021 11:00:00 | top right | isn't |\r\n\t\t\t| Dec 31 2021 11:59:59 | Jan 15th 2022 10:00:00 | top right | is |\r\n\r\n\tScenario Outline: Task expiry can be hidden or shown but is hidden by default\r\n\t\tGiven a Task Card\r\n\t\tAnd it is configured with an expiry\r\n\t\tAnd it <mayHave> \"showExpiry\" <value>\r\n\t\tWhen a user views the Task card\r\n\t\tThen the expiry <mayBe> shown in the bottom left hand corner\r\n\t\tExamples:\r\n\t\t\t| mayHave | value | mayBe |\r\n\t\t\t| has | true | is |\r\n\t\t\t| has | false | isn't |\r\n\t\t\t| doesn't have | | isn't |\r\n\r\n\t#DS: Currently this text is non configurable and isnt set up for proper pluralization\r\n\tScenario Outline: A task completion count is displayed for repeatable tasks\r\n\t\tGiven a Task Card is configured for a repeatable task\r\n\t\tAnd has \"goalCompletionNumber\" <goalCompletionNumberValue>\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 green\r\n\t\tExamples:\r\n\t\t\t| goalCompletionNumber | userGoalProgress | text |\r\n\t\t\t| 1 | 0 | Completed 0 times |\r\n\t\t\t| 1 | 1 | Completed 1 times |\r\n\t\t\t| 1 | 2 | Completed 2 times |\r\n\t\t\t| 10 | 5 | Completed 0 times |\r\n\t\t\t| 10 | 12 | Completed 1 times |\r\n\t\t\t| 10 | 29 | Completed 2 times |\r\n\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 is configured to have <progressSourcePath> progress source\r\n\t\tAnd a user\r\n\t\tWhen they view 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| value |\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\tScenario Outline: The users completion of a goal is calculated by the Goal Completion Number\r\n\t\tGiven a Task Card is configured to have <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\tScenario: The Goal Completion Number defaults to 1\r\n\t\tGiven a Task Card without a configured \"goalCompletionNumber\"\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 |";
21626
+
21627
+ const scenarioProgressBar = "@author:\r\n@owner:\r\nFeature: Task Card Progress Bar\r\n\r\n\tScenario Outline: Progress Bar\r\n\r\n\t\tGiven <progress> and <goal>\r\n\t\tThen I have <progressBar>\r\n\t\tAnd <progressBar> shows <progress> with <unit> above\r\n\t\tAnd gift icon has <color>\r\n\t\tAnd gift icon shows <goal> with <unit> below\r\n\r\n\t\tExamples:\r\n\t\t\t| progress | goal | progressBar | unit | color |\r\n\t\t\t| -100 | 500 | ●――――――――――――――――――🎁 | $ | no |\r\n\t\t\t| 0 | 500 | ●――――――――――――――――――🎁 | $ | no |\r\n\t\t\t| 250 | 500 | ―――――――――●―――――――――🎁 | $ | no |\r\n\t\t\t| 500 | 500 | ―――――――――――――――――――🎁 | $ | yes |\r\n\t\t\t| 1000 | 500 | ―――――――――――――――――――🎁 | $ | yes |\r\n\r\n\tScenario Outline: Progress Bar Steps\r\n\r\n\t\tGiven <progress> and <goal>\r\n\t\tAnd steps is enabled\r\n\t\tThen I have <progressBar>\r\n\t\tAnd <progressBar> has incrementing steps from 1 to <goal>\r\n\t\tAnd gift icon has <color>\r\n\t\tAnd gift icon shows <goal> below\r\n\r\n\t\tExamples:\r\n\t\t\t| progress | goal | progressBar | color |\r\n\t\t\t| -1 | 5 | ―――○―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 0 | 5 | ―――○―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 1 | 5 | ―――●―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 5 | 5 | ―――○―――○―――○―――●―――🎁 | yes |\r\n\t\t\t| 7 | 5 | ―――○―――○―――○―――●―――🎁 | yes |\r\n\r\n\r\n\tScenario Outline: Progress Bar Repeatable\r\n\r\n\t\tGiven <progress> and <goal>\r\n\t\tThen I have <progressBar>\r\n\t\tAnd <progressBar> shows <progress> with <unit> above\r\n\t\tAnd <icon1> has <color1>\r\n\t\tAnd <icon2> has <color2>\r\n\t\tAnd <icon3> has <color3>\r\n\t\tAnd <icon1> shows <text1> below\r\n\t\tAnd <icon2> shows <text2> below\r\n\t\tAnd <icon3> shows <text3> below\r\n\r\n\t\tExamples:\r\n\t\t\t| progress | goal | progressBar | unit | icon1 | icon2 | icon3 | color1 | color2 | color3 | text 1 | text 2 | text 3 |\r\n\t\t\t| 250 | 500 | ――――●――――🎁―――――――🎁 | $ | NA | gift | gift | NA | no | no | NA | 500 | 1000 |\r\n\t\t\t| 500 | 500 | ―――――――――🎁―――――――🎁 | $ | NA | gift | gift | NA | yes | no | NA | 500 | 1000 |\r\n\t\t\t| 750 | 500 | ―――――――――🎁―――●―――🎁 | $ | NA | gift | gift | NA | yes | no | NA | 500 | 1000 |\r\n\t\t\t| 1000 | 500 | 🎁―――――――🎁―――――――🎁 | $ | gift | gift | gift | yes | yes | no | 500 | 1000 | 1500 |\r\n\t\t\t| 1250 | 500 | 🎁―――――――🎁―――●―――🎁 | $ | gift | gift | gift | yes | yes | no | 500 | 1000 | 1500 |\r\n\r\n\t# \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t math logic inside text ?\r\n\t# | 1250 | 500 | 🎁―――――――🎁―――●―――🎁 | gift | gift | gift | yes | yes | no | goal * (⌊ progress / goal ⌋ - 1) | goal * ⌊ progress / goal ⌋ | goal * (⌊ progress / goal ⌋ +1) |\r\n\r\n\r\n\tScenario Outline: Progress Bar Steps Repeatable\r\n\r\n\t\tGiven <progress> and <goal>\r\n\t\tAnd steps is enabled\r\n\t\tThen I have <progressBar>\r\n\t\tAnd <progressBar> has incrementing steps\r\n\r\n\t\tExamples:\r\n\t\t\t| progress | goal | progressBar |";
21506
21628
 
21629
+ const scenario$5 = scenarioTaskCard + scenarioProgressBar;
21507
21630
  const TaskCard_stories = {
21508
21631
  title: "Components/Task Card/",
21509
21632
  parameters: {
21510
21633
  scenario: scenario$5,
21511
21634
  },
21512
21635
  };
21636
+ const storyFrame = {
21637
+ display: "inline-flex",
21638
+ gap: "32px",
21639
+ };
21513
21640
  const resizable = {
21514
21641
  width: "347px",
21515
21642
  minWidth: "347px",
@@ -21517,49 +21644,55 @@ const resizable = {
21517
21644
  height: "fit-content",
21518
21645
  overflow: "hidden",
21519
21646
  };
21520
- const NotRepeatable = () => {
21521
- const oneAction = {
21522
- rewardAmount: 20,
21523
- showExpiry: false,
21524
- rewardUnit: "Points",
21525
- cardTitle: "Complete a survey",
21526
- repeatable: false,
21527
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21528
- buttonText: "Take survey",
21529
- goal: 1,
21530
- buttonLink: "https://example.com/",
21531
- showProgressBar: false,
21532
- loading: false,
21533
- };
21534
- const coupleActions = {
21535
- rewardAmount: 40,
21536
- rewardUnit: "Points",
21537
- cardTitle: "Comment on 5 articles",
21538
- showProgressBar: true,
21539
- showExpiry: false,
21540
- goal: 5,
21541
- repeatable: false,
21542
- steps: true,
21543
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21544
- buttonText: "Start reading",
21545
- buttonLink: "https://example.com/",
21546
- loading: false,
21547
- };
21548
- const manyActions = {
21549
- rewardAmount: 150,
21550
- rewardUnit: "Points",
21551
- cardTitle: "Spend $500 at our Store",
21552
- showProgressBar: true,
21553
- showExpiry: false,
21554
- goal: 500,
21555
- repeatable: false,
21556
- progressBarUnit: "$",
21557
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21558
- buttonText: "Visit our Store",
21559
- buttonLink: "https://example.com/",
21560
- loading: false,
21561
- };
21562
- return (index.h("div", { style: { display: "inline-flex", gap: "32px" } },
21647
+ const oneAction = {
21648
+ rewardAmount: 20,
21649
+ rewardUnit: "Points",
21650
+ cardTitle: "Complete a survey",
21651
+ description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21652
+ repeatable: false,
21653
+ showProgressBar: false,
21654
+ progress: 0,
21655
+ goal: 1,
21656
+ buttonText: "Take survey",
21657
+ buttonLink: "https://example.com/",
21658
+ showExpiry: false,
21659
+ dateExpires: null,
21660
+ loading: false,
21661
+ };
21662
+ const coupleActions = {
21663
+ rewardAmount: 40,
21664
+ rewardUnit: "Points",
21665
+ cardTitle: "Comment on 5 articles",
21666
+ description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21667
+ repeatable: false,
21668
+ showProgressBar: true,
21669
+ steps: true,
21670
+ progress: 1,
21671
+ goal: 5,
21672
+ buttonText: "Take survey",
21673
+ buttonLink: "https://example.com/",
21674
+ showExpiry: false,
21675
+ dateExpires: null,
21676
+ loading: false,
21677
+ };
21678
+ const manyActions = {
21679
+ rewardAmount: 150,
21680
+ rewardUnit: "Points",
21681
+ cardTitle: "Spend $500 at our Store",
21682
+ description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21683
+ repeatable: false,
21684
+ showProgressBar: true,
21685
+ progress: 100,
21686
+ goal: 500,
21687
+ progressBarUnit: "$",
21688
+ buttonText: "Take survey",
21689
+ buttonLink: "https://example.com/",
21690
+ showExpiry: false,
21691
+ dateExpires: null,
21692
+ loading: false,
21693
+ };
21694
+ const TaskCardNotRepeatable = () => {
21695
+ return (index.h("div", { style: storyFrame },
21563
21696
  index.h("div", { style: resizable },
21564
21697
  index.h("h4", null, "One Action"),
21565
21698
  index.h(TaskCardView, Object.assign({}, oneAction, { progress: 0 })),
@@ -21570,9 +21703,6 @@ const NotRepeatable = () => {
21570
21703
  index.h("h5", null)),
21571
21704
  index.h("div", { style: resizable },
21572
21705
  index.h("h4", null, "A Couple Actions"),
21573
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 0 })),
21574
- " ",
21575
- index.h("h5", null),
21576
21706
  index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 1 })),
21577
21707
  " ",
21578
21708
  index.h("h5", null),
@@ -21581,9 +21711,6 @@ const NotRepeatable = () => {
21581
21711
  index.h("h5", null)),
21582
21712
  index.h("div", { style: resizable },
21583
21713
  index.h("h4", null, "Many Actions"),
21584
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 0 })),
21585
- " ",
21586
- index.h("h5", null),
21587
21714
  index.h(TaskCardView, Object.assign({}, manyActions, { progress: 230 })),
21588
21715
  " ",
21589
21716
  index.h("h5", null),
@@ -21591,329 +21718,142 @@ const NotRepeatable = () => {
21591
21718
  " ",
21592
21719
  index.h("h5", null))));
21593
21720
  };
21594
- const NotRepeatableWithExpiry = () => {
21595
- const oneAction = {
21596
- rewardAmount: 20,
21597
- rewardUnit: "Points",
21598
- cardTitle: "Complete a survey",
21599
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21600
- buttonText: "Take survey",
21601
- goal: 1,
21602
- showExpiry: true,
21603
- repeatable: false,
21604
- dateExpires: "Nov 1, 2021",
21605
- buttonLink: "https://example.com/",
21606
- showProgressBar: false,
21607
- loading: false,
21608
- };
21609
- const coupleActions = {
21610
- rewardAmount: 40,
21611
- rewardUnit: "Points",
21612
- cardTitle: "Comment on 5 articles",
21613
- showProgressBar: true,
21614
- goal: 5,
21615
- steps: true,
21616
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21617
- buttonText: "Start reading",
21618
- showExpiry: true,
21619
- repeatable: false,
21620
- dateExpires: "Nov 1, 2021",
21621
- buttonLink: "https://example.com/",
21622
- loading: false,
21623
- };
21624
- const manyActions = {
21625
- rewardAmount: 150,
21626
- rewardUnit: "Points",
21627
- repeatable: false,
21628
- cardTitle: "Spend $500 at our Store",
21629
- showProgressBar: true,
21630
- goal: 500,
21631
- progressBarUnit: "$",
21632
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21633
- buttonText: "Visit our Store",
21634
- showExpiry: true,
21635
- dateExpires: "Nov 1, 2021",
21636
- buttonLink: "https://example.com/",
21637
- loading: false,
21638
- };
21639
- return (index.h("div", { style: { display: "inline-flex", gap: "32px" } },
21721
+ const TaskCardRepeatable = () => {
21722
+ return (index.h("div", { style: storyFrame },
21640
21723
  index.h("div", { style: resizable },
21641
21724
  index.h("h4", null, "One Action"),
21642
- index.h(TaskCardView, Object.assign({}, oneAction, { progress: 0 })),
21725
+ index.h(TaskCardView, Object.assign({}, oneAction, { progress: 0, repeatable: true })),
21643
21726
  " ",
21644
21727
  index.h("h5", null),
21645
- index.h(TaskCardView, Object.assign({}, oneAction, { progress: 1 })),
21728
+ index.h(TaskCardView, Object.assign({}, oneAction, { progress: 1, repeatable: true })),
21646
21729
  " ",
21647
21730
  index.h("h5", null)),
21648
21731
  index.h("div", { style: resizable },
21649
21732
  index.h("h4", null, "A Couple Actions"),
21650
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 0 })),
21651
- " ",
21733
+ index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 1, repeatable: true })),
21652
21734
  index.h("h5", null),
21653
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 1 })),
21654
- " ",
21735
+ index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 5, repeatable: true })),
21655
21736
  index.h("h5", null),
21656
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 5 })),
21657
- " ",
21737
+ index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 7, repeatable: true })),
21738
+ index.h("h5", null),
21739
+ index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 10, repeatable: true })),
21658
21740
  index.h("h5", null)),
21659
21741
  index.h("div", { style: resizable },
21660
21742
  index.h("h4", null, "Many Actions"),
21661
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 0 })),
21662
- " ",
21743
+ index.h(TaskCardView, Object.assign({}, manyActions, { progress: 100, repeatable: true })),
21663
21744
  index.h("h5", null),
21664
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 230 })),
21665
- " ",
21745
+ index.h(TaskCardView, Object.assign({}, manyActions, { progress: 500, repeatable: true })),
21666
21746
  index.h("h5", null),
21667
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 500 })),
21668
- " ",
21747
+ index.h(TaskCardView, Object.assign({}, manyActions, { progress: 650, repeatable: true })),
21748
+ index.h("h5", null),
21749
+ index.h(TaskCardView, Object.assign({}, manyActions, { progress: 1000, repeatable: true })),
21669
21750
  index.h("h5", null))));
21670
21751
  };
21671
- const Repeatable = () => {
21672
- const oneAction = {
21673
- rewardAmount: 20,
21674
- rewardUnit: "Points",
21675
- showExpiry: false,
21676
- cardTitle: "Complete a survey",
21677
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21678
- buttonText: "Take survey",
21679
- goal: 1,
21680
- repeatable: true,
21681
- buttonLink: "https://example.com/",
21682
- showProgressBar: false,
21683
- loading: false,
21684
- };
21685
- const coupleActions = {
21686
- rewardAmount: 40,
21687
- rewardUnit: "Points",
21688
- showExpiry: false,
21689
- cardTitle: "Comment on 5 articles",
21690
- showProgressBar: true,
21691
- repeatable: true,
21692
- goal: 5,
21693
- steps: true,
21694
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21695
- buttonText: "Start reading",
21696
- buttonLink: "https://example.com/",
21697
- loading: false,
21698
- };
21699
- const manyActions = {
21700
- rewardAmount: 150,
21701
- rewardUnit: "Points",
21702
- showExpiry: false,
21703
- cardTitle: "Spend $500 at our Store",
21704
- showProgressBar: true,
21705
- repeatable: true,
21706
- goal: 500,
21707
- progressBarUnit: "$",
21708
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21709
- buttonText: "Visit our Store",
21710
- buttonLink: "https://example.com/",
21711
- loading: false,
21752
+ const TaskCardDateExpires = () => {
21753
+ const expire = {
21754
+ showExpiry: true,
21755
+ dateExpires: "2021-12-01T08:00:00.000Z/2077-12-01T08:00:00.000Z",
21712
21756
  };
21713
- return (index.h("div", { style: { display: "inline-flex", gap: "32px" } },
21757
+ const expireRepeat = { ...expire, repeatable: true };
21758
+ return (index.h("div", { style: storyFrame },
21714
21759
  index.h("div", { style: resizable },
21715
21760
  index.h("h4", null, "One Action"),
21716
- index.h(TaskCardView, Object.assign({}, oneAction, { progress: 0 })),
21761
+ index.h(TaskCardView, Object.assign({}, oneAction, expire)),
21717
21762
  " ",
21718
21763
  index.h("h5", null),
21719
- index.h(TaskCardView, Object.assign({}, oneAction, { progress: 1 })),
21764
+ index.h(TaskCardView, Object.assign({}, oneAction, expireRepeat)),
21720
21765
  " ",
21721
21766
  index.h("h5", null)),
21722
21767
  index.h("div", { style: resizable },
21723
21768
  index.h("h4", null, "A Couple Actions"),
21724
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 1 })),
21769
+ index.h(TaskCardView, Object.assign({}, coupleActions, expire)),
21725
21770
  " ",
21726
21771
  index.h("h5", null),
21727
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 5 })),
21772
+ index.h(TaskCardView, Object.assign({}, coupleActions, expireRepeat)),
21773
+ " ",
21774
+ index.h("h5", null)),
21775
+ index.h("div", { style: resizable },
21776
+ index.h("h4", null, "Many Actions"),
21777
+ index.h(TaskCardView, Object.assign({}, manyActions, expire)),
21728
21778
  " ",
21729
21779
  index.h("h5", null),
21730
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 7 })),
21780
+ index.h(TaskCardView, Object.assign({}, manyActions, expireRepeat)),
21781
+ " ",
21782
+ index.h("h5", null))));
21783
+ };
21784
+ const TaskCardLoading = () => {
21785
+ const loading = { loading: true };
21786
+ return (index.h("div", { style: storyFrame },
21787
+ index.h("div", { style: resizable },
21788
+ index.h("h4", null, "One Action"),
21789
+ index.h(TaskCardView, Object.assign({}, oneAction, loading)),
21731
21790
  " ",
21732
21791
  index.h("h5", null),
21733
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 10 })),
21792
+ index.h(TaskCardView, Object.assign({}, oneAction, loading)),
21734
21793
  " ",
21735
21794
  index.h("h5", null)),
21736
21795
  index.h("div", { style: resizable },
21737
- index.h("h4", null, "Many Actions"),
21738
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 100 })),
21796
+ index.h("h4", null, "A Couple Actions"),
21797
+ index.h(TaskCardView, Object.assign({}, coupleActions, loading)),
21739
21798
  " ",
21740
21799
  index.h("h5", null),
21741
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 500 })),
21800
+ index.h(TaskCardView, Object.assign({}, coupleActions, loading)),
21742
21801
  " ",
21743
- index.h("h5", null),
21744
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 650 })),
21802
+ index.h("h5", null)),
21803
+ index.h("div", { style: resizable },
21804
+ index.h("h4", null, "Many Actions"),
21805
+ index.h(TaskCardView, Object.assign({}, manyActions, loading)),
21745
21806
  " ",
21746
21807
  index.h("h5", null),
21747
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 1000 })),
21808
+ index.h(TaskCardView, Object.assign({}, manyActions, loading)),
21748
21809
  " ",
21749
21810
  index.h("h5", null))));
21750
21811
  };
21751
- const RepeatableWithExpiry = () => {
21752
- const oneAction = {
21753
- rewardAmount: 20,
21754
- rewardUnit: "Points",
21755
- cardTitle: "Complete a survey",
21756
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21757
- buttonText: "Take survey",
21758
- goal: 1,
21759
- repeatable: true,
21760
- showExpiry: true,
21761
- dateExpires: "Nov 1, 2021",
21762
- buttonLink: "https://example.com/",
21763
- showProgressBar: false,
21764
- loading: false,
21765
- };
21766
- const coupleActions = {
21767
- rewardAmount: 40,
21768
- rewardUnit: "Points",
21769
- cardTitle: "Comment on 5 articles",
21770
- showProgressBar: true,
21771
- repeatable: true,
21772
- goal: 5,
21773
- steps: true,
21774
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21775
- buttonText: "Start reading",
21776
- showExpiry: true,
21777
- dateExpires: "Nov 1, 2021",
21778
- buttonLink: "https://example.com/",
21779
- loading: false,
21780
- };
21781
- const manyActions = {
21782
- rewardAmount: 150,
21783
- rewardUnit: "Points",
21784
- cardTitle: "Spend $500 at our Store",
21785
- showProgressBar: true,
21786
- repeatable: true,
21787
- goal: 500,
21788
- progressBarUnit: "$",
21789
- description: "Description of action and reward. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eget quisque commodo leo.",
21790
- buttonText: "Visit our Store",
21812
+ const TaskCardExpired = () => {
21813
+ const expire = {
21791
21814
  showExpiry: true,
21792
- dateExpires: "Nov 1, 2021",
21793
- buttonLink: "https://example.com/",
21794
- loading: false,
21815
+ dateExpires: "2021-12-01T08:00:00.000Z/2021-12-01T08:00:00.000Z",
21795
21816
  };
21796
- return (index.h("div", { style: { display: "inline-flex", gap: "32px" } },
21817
+ const expireRepeat = { ...expire, repeatable: true };
21818
+ return (index.h("div", { style: storyFrame },
21797
21819
  index.h("div", { style: resizable },
21798
21820
  index.h("h4", null, "One Action"),
21799
- index.h(TaskCardView, Object.assign({}, oneAction, { progress: 0 })),
21821
+ index.h(TaskCardView, Object.assign({}, oneAction, { progress: 0 }, expire)),
21800
21822
  " ",
21801
21823
  index.h("h5", null),
21802
- index.h(TaskCardView, Object.assign({}, oneAction, { progress: 1 })),
21824
+ index.h(TaskCardView, Object.assign({}, oneAction, { progress: 1 }, expire)),
21825
+ " ",
21826
+ index.h("h5", null),
21827
+ index.h(TaskCardView, Object.assign({}, oneAction, { progress: 0 }, expireRepeat)),
21828
+ " ",
21829
+ index.h("h5", null),
21830
+ index.h(TaskCardView, Object.assign({}, oneAction, { progress: 1 }, expireRepeat)),
21803
21831
  " ",
21804
21832
  index.h("h5", null)),
21805
21833
  index.h("div", { style: resizable },
21806
21834
  index.h("h4", null, "A Couple Actions"),
21807
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 1 })),
21835
+ index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 1 }, expire)),
21808
21836
  " ",
21809
21837
  index.h("h5", null),
21810
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 5 })),
21838
+ index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 5 }, expire)),
21811
21839
  " ",
21812
21840
  index.h("h5", null),
21813
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 7 })),
21814
- " ",
21841
+ index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 1 }, expireRepeat)),
21815
21842
  index.h("h5", null),
21816
- index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 10 })),
21817
- " ",
21843
+ index.h(TaskCardView, Object.assign({}, coupleActions, { progress: 5 }, expireRepeat)),
21818
21844
  index.h("h5", null)),
21819
21845
  index.h("div", { style: resizable },
21820
21846
  index.h("h4", null, "Many Actions"),
21821
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 100 })),
21847
+ index.h(TaskCardView, Object.assign({}, manyActions, { progress: 100 }, expire)),
21822
21848
  " ",
21823
21849
  index.h("h5", null),
21824
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 500 })),
21850
+ index.h(TaskCardView, Object.assign({}, manyActions, { progress: 500 }, expire)),
21825
21851
  " ",
21826
21852
  index.h("h5", null),
21827
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 650 })),
21828
- " ",
21853
+ index.h(TaskCardView, Object.assign({}, manyActions, { progress: 100 }, expireRepeat)),
21829
21854
  index.h("h5", null),
21830
- index.h(TaskCardView, Object.assign({}, manyActions, { progress: 1000 })),
21831
- " ",
21855
+ index.h(TaskCardView, Object.assign({}, manyActions, { progress: 500 }, expireRepeat)),
21832
21856
  index.h("h5", null))));
21833
- };
21834
-
21835
- const TaskCard$1 = /*#__PURE__*/Object.freeze({
21836
- __proto__: null,
21837
- 'default': TaskCard_stories,
21838
- NotRepeatable: NotRepeatable,
21839
- NotRepeatableWithExpiry: NotRepeatableWithExpiry,
21840
- Repeatable: Repeatable,
21841
- RepeatableWithExpiry: RepeatableWithExpiry
21842
- });
21843
-
21844
- /**
21845
- * Displays a cartesian product of the input props
21846
- *
21847
- * @returns
21848
- */
21849
- function MatrixStory({ matrix, props, Component, }) {
21850
- const propMatrix = Object.keys(matrix).map((propKey) => {
21851
- const propValues = matrix[propKey];
21852
- return propValues.map((val) => {
21853
- return {
21854
- [propKey]: val,
21855
- };
21856
- });
21857
- });
21858
- const combinations = cartesian(...propMatrix);
21859
- const propsCombinations = combinations.map((combo) => {
21860
- return combo.reduce((props, prop) => {
21861
- return {
21862
- ...props,
21863
- ...prop,
21864
- };
21865
- }, {});
21866
- });
21867
- return propsCombinations.map((combo) => {
21868
- const example = { ...props, ...combo };
21869
- return (index.h("div", null,
21870
- index.h(PropsTable, { values: example }),
21871
- index.h("hr", null),
21872
- index.h(Component, Object.assign({}, example))));
21873
- });
21874
- }
21875
- function PropsTable({ values }) {
21876
- return (index.h("table", null,
21877
- index.h("tbody", null, Object.keys(values).map((key) => {
21878
- return (index.h("tr", null,
21879
- index.h("th", null, key),
21880
- index.h("td", null, JSON.stringify(values[key]))));
21881
- }))));
21882
- }
21883
- /**
21884
- * Source: https://stackoverflow.com/questions/15298912/javascript-generating-combinations-from-n-arrays-with-m-elements
21885
- *
21886
- * TODO: Could replace with a fork of https://www.npmjs.com/package/cartesian
21887
- *
21888
- * @param args - an array of arrays
21889
- * @returns combinations of the elements in those array
21890
- */
21891
- function cartesian(...args) {
21892
- var r = [], max = args.length - 1;
21893
- function helper(arr, i) {
21894
- for (var j = 0, l = args[i].length; j < l; j++) {
21895
- var a = arr.slice(0); // clone arr
21896
- a.push(args[i][j]);
21897
- if (i == max)
21898
- r.push(a);
21899
- else
21900
- helper(a, i + 1);
21901
- }
21902
- }
21903
- helper([], 0);
21904
- return r;
21905
- }
21906
-
21907
- const scenario$6 = "@author:\r\n@owner:\r\nFeature: Task Card Progress Bar\r\n\r\n\tScenario Outline: Progress Bar\r\n\r\n\t\tGiven <progress> and <goal>\r\n\t\tThen I have <progressBar>\r\n\t\tAnd <progressBar> shows <progress> with <unit> above\r\n\t\tAnd gift icon has <color>\r\n\t\tAnd gift icon shows <goal> with <unit> below\r\n\r\n\t\tExamples:\r\n\t\t\t| progress | goal | progressBar | unit | color |\r\n\t\t\t| -100 | 500 | ●――――――――――――――――――🎁 | $ | no |\r\n\t\t\t| 0 | 500 | ●――――――――――――――――――🎁 | $ | no |\r\n\t\t\t| 250 | 500 | ―――――――――●―――――――――🎁 | $ | no |\r\n\t\t\t| 500 | 500 | ―――――――――――――――――――🎁 | $ | yes |\r\n\t\t\t| 1000 | 500 | ―――――――――――――――――――🎁 | $ | yes |\r\n\r\n\tScenario Outline: Progress Bar Steps\r\n\r\n\t\tGiven <progress> and <goal>\r\n\t\tAnd steps is enabled\r\n\t\tThen I have <progressBar>\r\n\t\tAnd <progressBar> has incrementing steps from 1 to <goal>\r\n\t\tAnd gift icon has <color>\r\n\t\tAnd gift icon shows <goal> below\r\n\r\n\t\tExamples:\r\n\t\t\t| progress | goal | progressBar | color |\r\n\t\t\t| -1 | 5 | ―――○―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 0 | 5 | ―――○―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 1 | 5 | ―――●―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 5 | 5 | ―――○―――○―――○―――●―――🎁 | yes |\r\n\t\t\t| 7 | 5 | ―――○―――○―――○―――●―――🎁 | yes |\r\n\r\n\r\n\tScenario Outline: Progress Bar Repeatable\r\n\r\n\t\tGiven <progress> and <goal>\r\n\t\tThen I have <progressBar>\r\n\t\tAnd <progressBar> shows <progress> with <unit> above\r\n\t\tAnd <icon1> has <color1>\r\n\t\tAnd <icon2> has <color2>\r\n\t\tAnd <icon3> has <color3>\r\n\t\tAnd <icon1> shows <text1> below\r\n\t\tAnd <icon2> shows <text2> below\r\n\t\tAnd <icon3> shows <text3> below\r\n\r\n\t\tExamples:\r\n\t\t\t| progress | goal | progressBar | unit | icon1 | icon2 | icon3 | color1 | color2 | color3 | text 1 | text 2 | text 3 |\r\n\t\t\t| 250 | 500 | ――――●――――🎁―――――――🎁 | $ | NA | gift | gift | NA | no | no | NA | 500 | 1000 |\r\n\t\t\t| 500 | 500 | ―――――――――🎁―――――――🎁 | $ | NA | gift | gift | NA | yes | no | NA | 500 | 1000 |\r\n\t\t\t| 750 | 500 | ―――――――――🎁―――●―――🎁 | $ | NA | gift | gift | NA | yes | no | NA | 500 | 1000 |\r\n\t\t\t| 1000 | 500 | 🎁―――――――🎁―――――――🎁 | $ | gift | gift | gift | yes | yes | no | 500 | 1000 | 1500 |\r\n\t\t\t| 1250 | 500 | 🎁―――――――🎁―――●―――🎁 | $ | gift | gift | gift | yes | yes | no | 500 | 1000 | 1500 |\r\n\r\n\t# \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t math logic inside text ?\r\n\t# | 1250 | 500 | 🎁―――――――🎁―――●―――🎁 | gift | gift | gift | yes | yes | no | goal * (⌊ progress / goal ⌋ - 1) | goal * ⌊ progress / goal ⌋ | goal * (⌊ progress / goal ⌋ +1) |\r\n\r\n\r\n\tScenario Outline: Progress Bar Steps Repeatable\r\n\r\n\t\tGiven <progress> and <goal>\r\n\t\tAnd steps is enabled\r\n\t\tThen I have <progressBar>\r\n\t\tAnd <progressBar> has incrementing steps\r\n\r\n\t\tExamples:\r\n\t\t\t| progress | goal | progressBar |";
21908
-
21909
- const progressBar_stories = {
21910
- title: "Components/Task Card Progress Bar",
21911
- parameters: {
21912
- scenario: scenario$6,
21913
- },
21914
- };
21915
- const Default$a = () => {
21916
- return index.h(ProgressBarView, null);
21917
21857
  };
21918
21858
  const ProgressBar$1 = () => {
21919
21859
  const props = {
@@ -21956,10 +21896,14 @@ const ProgressBarStepsRepeatable = () => {
21956
21896
  index.h(MatrixStory, { matrix: { progress: [1, 5, 7, 12] }, props: props, Component: ProgressBarView })));
21957
21897
  };
21958
21898
 
21959
- const TaskCardProgressBar = /*#__PURE__*/Object.freeze({
21899
+ const TaskCard$1 = /*#__PURE__*/Object.freeze({
21960
21900
  __proto__: null,
21961
- 'default': progressBar_stories,
21962
- Default: Default$a,
21901
+ 'default': TaskCard_stories,
21902
+ TaskCardNotRepeatable: TaskCardNotRepeatable,
21903
+ TaskCardRepeatable: TaskCardRepeatable,
21904
+ TaskCardDateExpires: TaskCardDateExpires,
21905
+ TaskCardLoading: TaskCardLoading,
21906
+ TaskCardExpired: TaskCardExpired,
21963
21907
  ProgressBar: ProgressBar$1,
21964
21908
  ProgressBarSteps: ProgressBarSteps,
21965
21909
  ProgressBarRepeatable: ProgressBarRepeatable,
@@ -24978,7 +24922,7 @@ const ReferralIframeReadme = "# sqm-referral-iframe\r\n\r\n\r\n\r\n<!-- Auto Gen
24978
24922
 
24979
24923
  const ForgotPasswordReadme = "# sqm-portal-forgot-password\r\n\r\n\r\n\r\n<!-- Auto Generated Below -->\r\n\r\n\r\n## Properties\r\n\r\n| Property | Attribute | Description | Type | Default |\r\n| ------------- | -------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------- |\r\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; success: boolean; }; content?: { secondaryButton: any; messageSlot: any; emailLabel?: string; submitLabel?: string; }; }` | `undefined` |\r\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\r\n| `submitLabel` | `submit-label` | | `string` | `\"Request Password Reset\"` |\r\n\r\n\r\n## Dependencies\r\n\r\n### Depends on\r\n\r\n- [sqm-form-message](../sqm-form-message)\r\n\r\n### Graph\r\n```mermaid\r\ngraph TD;\r\n sqm-portal-forgot-password --> sqm-form-message\r\n style sqm-portal-forgot-password fill:#f9f,stroke:#333,stroke-width:4px\r\n```\r\n\r\n----------------------------------------------\r\n\r\n*Built with [StencilJS](https://stenciljs.com/)*\r\n";
24980
24924
 
24981
- const RegisterReadme = "# sqm-portal-register\r\n\r\n\r\n\r\n<!-- Auto Generated Below -->\r\n\r\n\r\n## Properties\r\n\r\n| Property | Attribute | Description | Type | Default |\r\n| -------------------------- | ---------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |\r\n| `confirmPassword` | `confirm-password` | | `boolean` | `false` |\r\n| `confirmPasswordLabel` | `confirm-password-label` | | `string` | `\"Confirm Password\"` |\r\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; confirmPassword: boolean; hideInputs: boolean; validationState?: FormState; enablePasswordValidation?: boolean; }; refs?: { formRef: any; }; content?: { formData?: any; passwordField?: any; secondaryButton?: any; emailLabel?: string; passwordLabel?: string; submitLabel?: string; pageLabel?: string; confirmPasswordLabel: string; }; }` | `undefined` |\r\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\r\n| `enablePasswordValidation` | `enable-password-validation` | | `boolean` | `true` |\r\n| `hideInputs` | `hide-inputs` | | `boolean` | `false` |\r\n| `loginLabel` | `login-label` | | `string` | `\"Sign in\"` |\r\n| `nextPage` | `next-page` | | `string` | `\"/\"` |\r\n| `pageLabel` | `page-label` | | `string` | `\"Register\"` |\r\n| `passwordLabel` | `password-label` | | `string` | `\"Password\"` |\r\n| `submitLabel` | `submit-label` | | `string` | `\"Register\"` |\r\n\r\n\r\n## Dependencies\r\n\r\n### Used by\r\n\r\n - [sqm-stencilbook](../sqm-stencilbook)\r\n\r\n### Depends on\r\n\r\n- [sqm-form-message](../sqm-form-message)\r\n- [sqm-password-field](../sqm-password-field)\r\n\r\n### Graph\r\n```mermaid\r\ngraph TD;\r\n sqm-portal-register --> sqm-form-message\r\n sqm-portal-register --> sqm-password-field\r\n sqm-stencilbook --> sqm-portal-register\r\n style sqm-portal-register fill:#f9f,stroke:#333,stroke-width:4px\r\n```\r\n\r\n----------------------------------------------\r\n\r\n*Built with [StencilJS](https://stenciljs.com/)*\r\n";
24925
+ const RegisterReadme = "# sqm-portal-register\r\n\r\n\r\n\r\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| -------------------------- | ---------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |\n| `confirmPassword` | `confirm-password` | | `boolean` | `false` |\n| `confirmPasswordLabel` | `confirm-password-label` | | `string` | `\"Confirm Password\"` |\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; confirmPassword: boolean; hideInputs: boolean; validationState?: FormState; enablePasswordValidation?: boolean; }; content?: { formData?: any; passwordField?: any; secondaryButton?: any; emailLabel?: string; passwordLabel?: string; submitLabel?: string; pageLabel?: string; confirmPasswordLabel: string; }; refs?: { formRef: any; }; }` | `undefined` |\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\n| `enablePasswordValidation` | `enable-password-validation` | | `boolean` | `true` |\n| `hideInputs` | `hide-inputs` | | `boolean` | `false` |\n| `loginLabel` | `login-label` | | `string` | `\"Sign in\"` |\n| `nextPage` | `next-page` | | `string` | `\"/\"` |\n| `pageLabel` | `page-label` | | `string` | `\"Register\"` |\n| `passwordLabel` | `password-label` | | `string` | `\"Password\"` |\n| `submitLabel` | `submit-label` | | `string` | `\"Register\"` |\n\n\n## Dependencies\n\n### Used by\n\n - [sqm-stencilbook](../sqm-stencilbook)\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n- [sqm-password-field](../sqm-password-field)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-register --> sqm-form-message\n sqm-portal-register --> sqm-password-field\n sqm-stencilbook --> sqm-portal-register\n style sqm-portal-register fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
24982
24926
 
24983
24927
  const EditProfileReadme = "# sqm-portal-profile\r\n\r\n\r\n\r\n<!-- Auto Generated Below -->\r\n\r\n\r\n## Properties\r\n\r\n| Property | Attribute | Description | Type | Default |\r\n| ------------------------ | --------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |\r\n| `countrytext` | `countrytext` | | `string` | `\"Country\"` |\r\n| `demoData` | -- | | `{ states?: { success: boolean; loading: boolean; submitDisabled: boolean; showCountry: boolean; formState: { country: string; firstName: string; lastName: string; errors: any; error: string; }; user: { id: string; accountId: string; firstName: string; lastName: string; email: string; countryCode: string; }; text: { firstnametext: string; lastnametext: string; emailtext: string; countrytext: string; editProfileHeader: string; editProfileSubHeader: string; submitChangeButtonText: string; }; }; }` | `undefined` |\r\n| `editProfileHeader` | `edit-profile-header` | | `string` | `\"Edit your profile\"` |\r\n| `editProfileSubHeader` | `edit-profile-sub-header` | | `string` | `\"Personal Information\"` |\r\n| `emailtext` | `emailtext` | | `string` | `\"Email\"` |\r\n| `firstnametext` | `firstnametext` | | `string` | `\"First Name\"` |\r\n| `lastnametext` | `lastnametext` | | `string` | `\"Last Name\"` |\r\n| `showCountry` | `show-country` | | `boolean` | `true` |\r\n| `submitChangeButtonText` | `submit-change-button-text` | | `string` | `\"Submit Changes\"` |\r\n\r\n\r\n## Dependencies\r\n\r\n### Depends on\r\n\r\n- [sqm-form-message](../sqm-form-message)\r\n\r\n### Graph\r\n```mermaid\r\ngraph TD;\r\n sqm-portal-profile --> sqm-form-message\r\n style sqm-portal-profile fill:#f9f,stroke:#333,stroke-width:4px\r\n```\r\n\r\n----------------------------------------------\r\n\r\n*Built with [StencilJS](https://stenciljs.com/)*\r\n";
24984
24928
 
@@ -24986,7 +24930,7 @@ const ResetPasswordReadme = "# sqm-portal-reset-password\r\n\r\n\r\n\r\n<!-- Aut
24986
24930
 
24987
24931
  const EmailVerificationReadme = "# sqm-portal-email-verification\r\n\r\n\r\n\r\n<!-- Auto Generated Below -->\r\n\r\n\r\n## Properties\r\n\r\n| Property | Attribute | Description | Type | Default |\r\n| ------------------------- | --------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\r\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; success: boolean; }; content?: { email: string; verifyMessage: string; emailVerificationHeader: string; resendEmailButtonText: string; }; }` | `undefined` |\r\n| `emailVerificationHeader` | `email-verification-header` | | `string` | `\"Verify your email\"` |\r\n| `resendEmailButtonText` | `resend-email-button-text` | | `string` | `\"Re-send Email\"` |\r\n| `verifyMessage` | `verify-message` | | `string` | `\"A verification email was sent to {email}. Please verify your email to continue to the portal.\"` |\r\n\r\n\r\n## Dependencies\r\n\r\n### Depends on\r\n\r\n- [sqm-form-message](../sqm-form-message)\r\n\r\n### Graph\r\n```mermaid\r\ngraph TD;\r\n sqm-portal-email-verification --> sqm-form-message\r\n style sqm-portal-email-verification fill:#f9f,stroke:#333,stroke-width:4px\r\n```\r\n\r\n----------------------------------------------\r\n\r\n*Built with [StencilJS](https://stenciljs.com/)*\r\n";
24988
24932
 
24989
- const EmailVerifiedReadme = "# sqm-portal-verify-email\r\n\r\n\r\n\r\n<!-- Auto Generated Below -->\r\n\r\n\r\n## Properties\r\n\r\n| Property | Attribute | Description | Type | Default |\r\n| ---------- | ----------- | ----------- | ---------------------------------------------------------------------------------------------------- | ----------- |\r\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; verified: boolean; }; data?: { oobCode: string; }; }` | `undefined` |\r\n| `nextPage` | `next-page` | | `string` | `\"/\"` |\r\n\r\n\r\n## Dependencies\r\n\r\n### Depends on\r\n\r\n- [sqm-form-message](../sqm-form-message)\r\n\r\n### Graph\r\n```mermaid\r\ngraph TD;\r\n sqm-portal-verify-email --> sqm-form-message\r\n style sqm-portal-verify-email fill:#f9f,stroke:#333,stroke-width:4px\r\n```\r\n\r\n----------------------------------------------\r\n\r\n*Built with [StencilJS](https://stenciljs.com/)*\r\n";
24933
+ const EmailVerifiedReadme = "# sqm-portal-verify-email\r\n\r\n\r\n\r\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property | Attribute | Description | Type | Default |\n| ---------- | ----------- | ----------- | ---------------------------------------------------------------------------------------------------- | ----------- |\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; verified: boolean; }; data?: { oobCode: string; }; }` | `undefined` |\n| `nextPage` | `next-page` | | `string` | `\"/\"` |\n\n\n## Dependencies\n\n### Depends on\n\n- [sqm-form-message](../sqm-form-message)\n\n### Graph\n```mermaid\ngraph TD;\n sqm-portal-verify-email --> sqm-form-message\n style sqm-portal-verify-email fill:#f9f,stroke:#333,stroke-width:4px\n```\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n";
24990
24934
 
24991
24935
  const PortalTemplates_stories = {
24992
24936
  title: "Templates / Portal",
@@ -25184,7 +25128,7 @@ const ProgramMenu$1 = /*#__PURE__*/Object.freeze({
25184
25128
  const PoweredByImg_stories = {
25185
25129
  title: "Powered By",
25186
25130
  };
25187
- const Default$b = () => {
25131
+ const Default$a = () => {
25188
25132
  return index.h(sqmPortalFooterView.PoweredByImg, null);
25189
25133
  };
25190
25134
  const CustomColor = () => {
@@ -25197,17 +25141,17 @@ const CustomWidthAndHeight = () => {
25197
25141
  const PoweredByImg = /*#__PURE__*/Object.freeze({
25198
25142
  __proto__: null,
25199
25143
  'default': PoweredByImg_stories,
25200
- Default: Default$b,
25144
+ Default: Default$a,
25201
25145
  CustomColor: CustomColor,
25202
25146
  CustomWidthAndHeight: CustomWidthAndHeight
25203
25147
  });
25204
25148
 
25205
- const scenario$7 = "Feature: Portal Footer\r\n\r\n Background: A user is viewing the portal\r\n Given a hosted portal\r\n And a user is viewing the portal\r\n And the portal has a footer\r\n\r\n Scenario Outline: FAQ and T&C links/text are configurable and open in a new page when clicked\r\n Given the footer has prop \"terms-link\" with value \"https://example.com/terms\"\r\n And prop \"terms-text\" with value \"Terms and Conditions\"\r\n And prop \"faq-link\" with value \"https://example.com/FAQ\"\r\n And prop \"faq-text\" with value \"Visit FAQ\"\r\n When a user clicks on the \"Visit FAQ\" link\r\n Then they will be redirected to \"https://example.com/FAQ\" in a new page\r\n When they go back to the portal\r\n And click on the \"Terms and Conditions\" link\r\n Then they will be redirected to \"https://example.com/terms\" in a new page\r\n\r\n Scenario Outline: FAQ/T&C Links are not shown if a link is not provided\r\n Given the footer does not have <linkProp>\r\n But it <mayHave> <textProp> with <value>\r\n Then the <link> will not be shown in the footer\r\n Examples:\r\n | linkProp | mayHave | textProp | value | link |\r\n | terms-link | has | termsText | Terms and Conditions | T&C Link |\r\n | faq-link | has | faqText | Visit FAQ | FAQ Link |\r\n | terms-link | doesn't have | | | T&C Link |\r\n | faq-link | doesn't have | | | FAQ Link |\r\n\r\n Scenario Outline: The support email and text is configurable but has a default\r\n Given the footer <mayHave> <emailPropWithValue>\r\n And the footer <mayAlsoHave> <textPropWithValue>\r\n Then the footer's support email text is <renderedEmailText>\r\n And the email address will be a mailto link with <mailtoEmail>\r\n When the user clicks on the email address mailto Link\r\n Then the users preferred email client will open with a draft email to <mailtoEmail>\r\n Examples:\r\n | mayHave | emailPropWithValue | mayAlsoHave | textPropWithValue | mailtoEmail | renderedEmailText |\r\n | has | support@saasquatch.com | has | For support please contact {email} | support@saasquatch.com | For support please contact support@saasquatch.com |\r\n | doesn't have | N/A | doesn't have | N/A | support@example.com | For program support, contact support@example.com |\r\n\r\n Scenario Outline: Powered by SaaSquatch is shown by default\r\n Given the footer <mayHaveProp> \"show-powered-by\" with <value>\r\n Then the powered by SaaSquatch image <mayBeShown>\r\n Examples:\r\n | mayHaveProp | value | mayBeShown |\r\n | has prop | true | is shown |\r\n | has prop | false | isn't shown |\r\n | has prop | test | is shown |\r\n | has prop | | is shown |\r\n | doesn't have prop | | is shown |\r\n\r\n Scenario: Powered By Saasquatch links out to \"https://saasquatch.com\"\r\n Given the footer has the powered by SaaSquatch image\r\n When a user clicks on it\r\n Then they will be redirected to \"https://saasquatch.com\" in a new page";
25149
+ const scenario$6 = "Feature: Portal Footer\r\n\r\n Background: A user is viewing the portal\r\n Given a hosted portal\r\n And a user is viewing the portal\r\n And the portal has a footer\r\n\r\n Scenario Outline: FAQ and T&C links/text are configurable and open in a new page when clicked\r\n Given the footer has prop \"terms-link\" with value \"https://example.com/terms\"\r\n And prop \"terms-text\" with value \"Terms and Conditions\"\r\n And prop \"faq-link\" with value \"https://example.com/FAQ\"\r\n And prop \"faq-text\" with value \"Visit FAQ\"\r\n When a user clicks on the \"Visit FAQ\" link\r\n Then they will be redirected to \"https://example.com/FAQ\" in a new page\r\n When they go back to the portal\r\n And click on the \"Terms and Conditions\" link\r\n Then they will be redirected to \"https://example.com/terms\" in a new page\r\n\r\n Scenario Outline: FAQ/T&C Links are not shown if a link is not provided\r\n Given the footer does not have <linkProp>\r\n But it <mayHave> <textProp> with <value>\r\n Then the <link> will not be shown in the footer\r\n Examples:\r\n | linkProp | mayHave | textProp | value | link |\r\n | terms-link | has | termsText | Terms and Conditions | T&C Link |\r\n | faq-link | has | faqText | Visit FAQ | FAQ Link |\r\n | terms-link | doesn't have | | | T&C Link |\r\n | faq-link | doesn't have | | | FAQ Link |\r\n\r\n Scenario Outline: The support email and text is configurable but has a default\r\n Given the footer <mayHave> <emailPropWithValue>\r\n And the footer <mayAlsoHave> <textPropWithValue>\r\n Then the footer's support email text is <renderedEmailText>\r\n And the email address will be a mailto link with <mailtoEmail>\r\n When the user clicks on the email address mailto Link\r\n Then the users preferred email client will open with a draft email to <mailtoEmail>\r\n Examples:\r\n | mayHave | emailPropWithValue | mayAlsoHave | textPropWithValue | mailtoEmail | renderedEmailText |\r\n | has | support@saasquatch.com | has | For support please contact {email} | support@saasquatch.com | For support please contact support@saasquatch.com |\r\n | doesn't have | N/A | doesn't have | N/A | support@example.com | For program support, contact support@example.com |\r\n\r\n Scenario Outline: Powered by SaaSquatch is shown by default\r\n Given the footer <mayHaveProp> \"show-powered-by\" with <value>\r\n Then the powered by SaaSquatch image <mayBeShown>\r\n Examples:\r\n | mayHaveProp | value | mayBeShown |\r\n | has prop | true | is shown |\r\n | has prop | false | isn't shown |\r\n | has prop | test | is shown |\r\n | has prop | | is shown |\r\n | doesn't have prop | | is shown |\r\n\r\n Scenario: Powered By Saasquatch links out to \"https://saasquatch.com\"\r\n Given the footer has the powered by SaaSquatch image\r\n When a user clicks on it\r\n Then they will be redirected to \"https://saasquatch.com\" in a new page";
25206
25150
 
25207
25151
  const PortalFooter_stories = {
25208
25152
  title: "Portal Footer",
25209
25153
  parameters: {
25210
- scenario: scenario$7,
25154
+ scenario: scenario$6,
25211
25155
  },
25212
25156
  };
25213
25157
  const defaultProps$9 = {
@@ -25236,12 +25180,12 @@ const PortalFooter = /*#__PURE__*/Object.freeze({
25236
25180
  FooterNoPoweredBy: FooterNoPoweredBy
25237
25181
  });
25238
25182
 
25239
- const scenario$8 = "Feature: Hero Unit\r\n\r\n Background: A portal with a hero unit exists\r\n Given a hosted portal\r\n And the portal has hero unit on the login page\r\n And a user is viewing the login page\r\n\r\n Scenario: The hero unit defaults to a single column layout\r\n Given a hero unit does not have a \"columns\" prop\r\n But the following html is wrapped by the hero unit\r\n \"\"\"\r\n <sqm-portal-login></sqm-portal-login>\r\n <div slot=\"secondary-column\">\r\n <h1 style=\"text-align:center\">Get Referring!</h1>\r\n <p style=\"text-align:center\">\r\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do\r\n eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim\r\n ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut\r\n aliquip ex ea commodo consequat. Duis aute irure dolor in\r\n reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla\r\n pariatur.\r\n </p>\r\n </div>\r\n \"\"\"\r\n Then only a single column will be displayed\r\n And within it will be the login component\r\n\r\n Scenario Outline: The hero unit supports single or dual column layouts\r\n Given a hero unit with prop \"columns\" having <columnValue>\r\n And it wraps <html>\r\n Then the hero unit displays <columnValue> columns\r\n Examples:\r\n | columnValue | html |\r\n | 1 | <h1>Column 1!</h1> |\r\n | 2 | <h1>Column 1!</h1><div slot=\"secondary-column\"><h1 style=\"text-align:center\">Column 2!</h1></div> |\r\n\r\n Scenario: HTML to be displayed in the second column comes from the \"secondary-column\" slot\r\n Given a hero unit with \"columns\" \"2\"\r\n And the following html\r\n \"\"\"\r\n <h1>Column 1!</h1>\r\n <div>\r\n <h1 style=\"text-align:center\">Column 2!</h1>\r\n </div>\r\n \"\"\"\r\n When the hero unit is rendered\r\n Then only one column is displayed with content\r\n And column 1 will contain the \"Column 1!\" text\r\n And column 1 will contain the \"Column 2!\" text\r\n When the div for column two is updated to have 'slot=\"secondary-column\"'\r\n Then the two columns are displayed with content\r\n And column 1 will contain the \"Column 1!\" text\r\n And column 2 will contain the \"Column 2!\" text\r\n\r\n Scenario Outline: A background for the hero unit can be set as an image or colour\r\n Given a hero unit with <backgroundPropValue>\r\n Then the background will be <background>\r\n Examples:\r\n | background | background |\r\n | https://images.unsplash.com/photo-1599676821464-3555954838d | image of misty mountains |\r\n | LightSlateGrey | light slate grey |\r\n | #00FF00 | green |\r\n | rgb(128,0,128) | purple |\r\n\r\n Scenario Outline: Wrap Direction can be configured for mobile experiences\r\n Given a hero unit with the following HTML\r\n \"\"\"\r\n <h1>Column 1!</h1>\r\n <div slot=\"secondary-column\">\r\n <h1 style=\"text-align:center\">Column 2!</h1>\r\n </div>\r\n \"\"\"\r\n And prop \"wrap-direction\" has <value>\r\n When the window width is less than 600px\r\n Then the two columns will stack\r\n And <column> will be on top\r\n Examples:\r\n | value | column |\r\n | wrap | 1 |\r\n | wrap-reverse | 2 |\r\n | | 1 |";
25183
+ const scenario$7 = "Feature: Hero Unit\r\n\r\n Background: A portal with a hero unit exists\r\n Given a hosted portal\r\n And the portal has hero unit on the login page\r\n And a user is viewing the login page\r\n\r\n Scenario: The hero unit defaults to a single column layout\r\n Given a hero unit does not have a \"columns\" prop\r\n But the following html is wrapped by the hero unit\r\n \"\"\"\r\n <sqm-portal-login></sqm-portal-login>\r\n <div slot=\"secondary-column\">\r\n <h1 style=\"text-align:center\">Get Referring!</h1>\r\n <p style=\"text-align:center\">\r\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do\r\n eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim\r\n ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut\r\n aliquip ex ea commodo consequat. Duis aute irure dolor in\r\n reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla\r\n pariatur.\r\n </p>\r\n </div>\r\n \"\"\"\r\n Then only a single column will be displayed\r\n And within it will be the login component\r\n\r\n Scenario Outline: The hero unit supports single or dual column layouts\r\n Given a hero unit with prop \"columns\" having <columnValue>\r\n And it wraps <html>\r\n Then the hero unit displays <columnValue> columns\r\n Examples:\r\n | columnValue | html |\r\n | 1 | <h1>Column 1!</h1> |\r\n | 2 | <h1>Column 1!</h1><div slot=\"secondary-column\"><h1 style=\"text-align:center\">Column 2!</h1></div> |\r\n\r\n Scenario: HTML to be displayed in the second column comes from the \"secondary-column\" slot\r\n Given a hero unit with \"columns\" \"2\"\r\n And the following html\r\n \"\"\"\r\n <h1>Column 1!</h1>\r\n <div>\r\n <h1 style=\"text-align:center\">Column 2!</h1>\r\n </div>\r\n \"\"\"\r\n When the hero unit is rendered\r\n Then only one column is displayed with content\r\n And column 1 will contain the \"Column 1!\" text\r\n And column 1 will contain the \"Column 2!\" text\r\n When the div for column two is updated to have 'slot=\"secondary-column\"'\r\n Then the two columns are displayed with content\r\n And column 1 will contain the \"Column 1!\" text\r\n And column 2 will contain the \"Column 2!\" text\r\n\r\n Scenario Outline: A background for the hero unit can be set as an image or colour\r\n Given a hero unit with <backgroundPropValue>\r\n Then the background will be <background>\r\n Examples:\r\n | background | background |\r\n | https://images.unsplash.com/photo-1599676821464-3555954838d | image of misty mountains |\r\n | LightSlateGrey | light slate grey |\r\n | #00FF00 | green |\r\n | rgb(128,0,128) | purple |\r\n\r\n Scenario Outline: Wrap Direction can be configured for mobile experiences\r\n Given a hero unit with the following HTML\r\n \"\"\"\r\n <h1>Column 1!</h1>\r\n <div slot=\"secondary-column\">\r\n <h1 style=\"text-align:center\">Column 2!</h1>\r\n </div>\r\n \"\"\"\r\n And prop \"wrap-direction\" has <value>\r\n When the window width is less than 600px\r\n Then the two columns will stack\r\n And <column> will be on top\r\n Examples:\r\n | value | column |\r\n | wrap | 1 |\r\n | wrap-reverse | 2 |\r\n | | 1 |";
25240
25184
 
25241
25185
  const Hero_stories = {
25242
25186
  title: "Hero Layout",
25243
25187
  parameters: {
25244
- scenario: scenario$8,
25188
+ scenario: scenario$7,
25245
25189
  },
25246
25190
  };
25247
25191
  const LoginOneColumn = () => {
@@ -25418,12 +25362,12 @@ const Hero = /*#__PURE__*/Object.freeze({
25418
25362
  TwoColumnLoginWithImgElement: TwoColumnLoginWithImgElement
25419
25363
  });
25420
25364
 
25421
- const scenario$9 = "@owner:sam\r\n@author:sam\r\n\r\nFeature: Referral Iframe\r\n\r\n Used to provide an external form for submitting referral leads using the current user's referral code\r\n\r\n Background: A user is logged in\r\n Given there is a logged in user\r\n\r\n @motivating\r\n Scenario: Referral code is passed to the iframe as a query parameter\r\n Given the \"iframe-src\" is \"https://example.com\"\r\n And the user has navigated to \"/refer\"\r\n And the user's referral code is \"BOBBYREFER\"\r\n When the iframe content is loaded\r\n Then the iframe url will be \"https://example.com?rsCode=BOBBYREFER\"\r\n\r\n @ui\r\n Scenario Outline: The height and width of the iFrame can be controlled via props\r\n Given the \"iframe-src\" is \"https://example.com\"\r\n And the iframe content is 1000x1000\r\n And the \"iframe-height\" is set to <heightValue>\r\n And the \"iframe-width\" is set to <widthValue>\r\n Then the content of the iframe will be displayed with scrollbars\r\n And the dimension of the iFrame displayed will be 500x500\r\n When the \"iframe-height\" is set to <heightValue>\r\n And the \"iframe-width\" is set to <widthValue>\r\n Then the full content of the iframe will be displayed on the page\r\n And the dimension of the iFrame displayed will be 1000x1000\r\n Examples:\r\n | heightValue | widthValue |\r\n | 500px | 500px |\r\n | 50% | 50% |\r\n\r\n @minutae\r\n Scenario Outline: The iFrame will fail fast if a iFrame source isn't provided\r\n Given \"iframe-src\" <mayBeAnAttribute>\r\n And it <mayHaveValue>\r\n When a user views the referral iFrame component\r\n Then an alert with an error message is displayed in place of the iFrame\r\n And it has a details section\r\n When \"More details\" is clicked\r\n Then the following information will be displayed\r\n | component being used |\r\n | missing attribute(s) |\r\n\r\n Examples:\r\n | mayBeAnAttribute | mayHaveValue |\r\n | is not an attribute | N/A |\r\n | is an attribute | \"\" |\r\n | is an attribute | |";
25365
+ const scenario$8 = "@owner:sam\r\n@author:sam\r\n\r\nFeature: Referral Iframe\r\n\r\n Used to provide an external form for submitting referral leads using the current user's referral code\r\n\r\n Background: A user is logged in\r\n Given there is a logged in user\r\n\r\n @motivating\r\n Scenario: Referral code is passed to the iframe as a query parameter\r\n Given the \"iframe-src\" is \"https://example.com\"\r\n And the user has navigated to \"/refer\"\r\n And the user's referral code is \"BOBBYREFER\"\r\n When the iframe content is loaded\r\n Then the iframe url will be \"https://example.com?rsCode=BOBBYREFER\"\r\n\r\n @ui\r\n Scenario Outline: The height and width of the iFrame can be controlled via props\r\n Given the \"iframe-src\" is \"https://example.com\"\r\n And the iframe content is 1000x1000\r\n And the \"iframe-height\" is set to <heightValue>\r\n And the \"iframe-width\" is set to <widthValue>\r\n Then the content of the iframe will be displayed with scrollbars\r\n And the dimension of the iFrame displayed will be 500x500\r\n When the \"iframe-height\" is set to <heightValue>\r\n And the \"iframe-width\" is set to <widthValue>\r\n Then the full content of the iframe will be displayed on the page\r\n And the dimension of the iFrame displayed will be 1000x1000\r\n Examples:\r\n | heightValue | widthValue |\r\n | 500px | 500px |\r\n | 50% | 50% |\r\n\r\n @minutae\r\n Scenario Outline: The iFrame will fail fast if a iFrame source isn't provided\r\n Given \"iframe-src\" <mayBeAnAttribute>\r\n And it <mayHaveValue>\r\n When a user views the referral iFrame component\r\n Then an alert with an error message is displayed in place of the iFrame\r\n And it has a details section\r\n When \"More details\" is clicked\r\n Then the following information will be displayed\r\n | component being used |\r\n | missing attribute(s) |\r\n\r\n Examples:\r\n | mayBeAnAttribute | mayHaveValue |\r\n | is not an attribute | N/A |\r\n | is an attribute | \"\" |\r\n | is an attribute | |";
25422
25366
 
25423
25367
  const ReferralIframe_stories = {
25424
25368
  title: "Referral Iframe",
25425
25369
  parameters: {
25426
- scenario: scenario$9,
25370
+ scenario: scenario$8,
25427
25371
  },
25428
25372
  };
25429
25373
  const props = {
@@ -25454,12 +25398,12 @@ const ReferralIframe$1 = /*#__PURE__*/Object.freeze({
25454
25398
  ReferralIframeError: ReferralIframeError
25455
25399
  });
25456
25400
 
25457
- const scenario$a = "@owner:sam\r\n@author:sam\r\n\r\nFeature: Name Fields\r\n\r\n Fields to be used to fill the first and last name of a user during registration\r\n\r\n Background:\r\n Given the current page is \"/register\"\r\n\r\n @motivating\r\n Scenario: Both first name and last name are required\r\n Given the email field has valid input\r\n And the password field has valid input\r\n And first name field is empty\r\n And last name field is empty\r\n When register is clicked\r\n Then the name fields will be highlighted in red\r\n And the error messages will say \"Cannot be empty\"\r\n\r\n @motivating\r\n Scenario: First and last name are upserted with the SaaSquatch user\r\n Given all fields have been filled with data\r\n | firstName | lastName | email | password |\r\n | Bob | Testerson | bob@example.com | SecurePassword1 |\r\n When register is clicked\r\n Then the email verification page will be loaded\r\n And the user will be upserted\r\n And the SaaSquatch user will contain data\r\n | firstName | lastName | email |\r\n | Bob | Testerson | bob@example.com |\r\n\r\n";
25401
+ const scenario$9 = "@owner:sam\r\n@author:sam\r\n\r\nFeature: Name Fields\r\n\r\n Fields to be used to fill the first and last name of a user during registration\r\n\r\n Background:\r\n Given the current page is \"/register\"\r\n\r\n @motivating\r\n Scenario: Both first name and last name are required\r\n Given the email field has valid input\r\n And the password field has valid input\r\n And first name field is empty\r\n And last name field is empty\r\n When register is clicked\r\n Then the name fields will be highlighted in red\r\n And the error messages will say \"Cannot be empty\"\r\n\r\n @motivating\r\n Scenario: First and last name are upserted with the SaaSquatch user\r\n Given all fields have been filled with data\r\n | firstName | lastName | email | password |\r\n | Bob | Testerson | bob@example.com | SecurePassword1 |\r\n When register is clicked\r\n Then the email verification page will be loaded\r\n And the user will be upserted\r\n And the SaaSquatch user will contain data\r\n | firstName | lastName | email |\r\n | Bob | Testerson | bob@example.com |\r\n\r\n";
25458
25402
 
25459
25403
  const NameFields_stories = {
25460
25404
  title: "Name Fields",
25461
25405
  parameters: {
25462
- scenario: scenario$a,
25406
+ scenario: scenario$9,
25463
25407
  },
25464
25408
  };
25465
25409
  const props$1 = {
@@ -25512,7 +25456,7 @@ const baseResponse = (data) => ({
25512
25456
  },
25513
25457
  callbacks: {
25514
25458
  exchangeReward: null,
25515
- openDrawer: null,
25459
+ resetState: null,
25516
25460
  setStage: null,
25517
25461
  setExchangeState: null,
25518
25462
  refs: null,
@@ -25706,7 +25650,7 @@ const test2 = {
25706
25650
  },
25707
25651
  callbacks: {
25708
25652
  exchangeReward: null,
25709
- openDrawer: null,
25653
+ resetState: null,
25710
25654
  setStage: null,
25711
25655
  setExchangeState: null,
25712
25656
  refs: {
@@ -25726,7 +25670,7 @@ const resizable$1 = {
25726
25670
  height: "fit-content",
25727
25671
  overflow: "hidden",
25728
25672
  };
25729
- const Default$c = () => {
25673
+ const Default$b = () => {
25730
25674
  return (index.h("div", { style: resizable$1 },
25731
25675
  index.h(RewardExchangeView, Object.assign({}, test))));
25732
25676
  };
@@ -25738,7 +25682,7 @@ const Default2 = () => {
25738
25682
  const RewardExchangeList = /*#__PURE__*/Object.freeze({
25739
25683
  __proto__: null,
25740
25684
  'default': RewardExchangeList_stories,
25741
- Default: Default$c,
25685
+ Default: Default$b,
25742
25686
  Default2: Default2
25743
25687
  });
25744
25688
 
@@ -28362,7 +28306,6 @@ const stories = [
28362
28306
  UserName,
28363
28307
  PasswordField,
28364
28308
  TaskCard$1,
28365
- TaskCardProgressBar,
28366
28309
  PortalTemplates,
28367
28310
  ProgramMenu$1,
28368
28311
  PoweredByImg,
@@ -28457,6 +28400,12 @@ const TaskCard$2 = class {
28457
28400
  * @uiName Show Goal Expiry
28458
28401
  */
28459
28402
  this.showExpiry = false;
28403
+ /**
28404
+ * @uiName Date Goal Expires
28405
+ * @uiWidget DateRange
28406
+ * @uiOptions {"allowPastDates":true, "months": 1}
28407
+ */
28408
+ this.dateExpires = "/";
28460
28409
  /**
28461
28410
  * @uiName CTA Button Text
28462
28411
  */