@saasquatch/mint-components 1.5.2 → 1.5.3-10

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 (580) hide show
  1. package/CHANGELOG.md +32 -1
  2. package/dist/cjs/{GenericTableView-c2a781ea.js → GenericTableView-f98bcef7.js} +1 -1
  3. package/dist/cjs/{JSS-a75f3a9a.js → JSS-c73206b7.js} +35 -19
  4. package/dist/cjs/{ShadowViewAddon-9b256c28.js → ShadowViewAddon-0becaef1.js} +95 -54
  5. package/dist/cjs/{global-dd180d3b.js → global-7eb8c483.js} +161 -10
  6. package/dist/cjs/index-4933129a.js +2227 -0
  7. package/dist/cjs/{index.module-fb61a163.js → index.module-c9cec1f7.js} +58 -540
  8. package/dist/cjs/loader.cjs.js +5 -6
  9. package/dist/cjs/{luxon-59ca7d19.js → luxon-6b09461e.js} +1 -1
  10. package/dist/cjs/mint-components.cjs.js +5 -6
  11. package/dist/cjs/{re-render-f41e352c.js → re-render-12cb778f.js} +2 -2
  12. package/dist/cjs/{sqm-asset-card-view-07420209.js → sqm-asset-card-view-7e16757a.js} +1 -1
  13. package/dist/cjs/sqm-asset-card.cjs.entry.js +6 -7
  14. package/dist/cjs/{sqm-big-stat_34.cjs.entry.js → sqm-big-stat_35.cjs.entry.js} +196 -116
  15. package/dist/cjs/sqm-empty_5.cjs.entry.js +7 -8
  16. package/dist/cjs/sqm-form-message.cjs.entry.js +2 -2
  17. package/dist/cjs/sqm-graphql-client-provider.cjs.entry.js +4 -5
  18. package/dist/cjs/{sqm-hero-view-d5d46a36.js → sqm-hero-view-cc468ea3.js} +3 -3
  19. package/dist/cjs/sqm-hero.cjs.entry.js +5 -6
  20. package/dist/cjs/sqm-leaderboard-rank.cjs.entry.js +10 -10
  21. package/dist/cjs/{sqm-navigation-sidebar-item-view-bd8b4dfd.js → sqm-navigation-sidebar-item-view-1513be2d.js} +2 -2
  22. package/dist/cjs/sqm-navigation-sidebar-item.cjs.entry.js +6 -7
  23. package/dist/cjs/{sqm-navigation-sidebar-view-0ee28f65.js → sqm-navigation-sidebar-view-3feda5f1.js} +1 -1
  24. package/dist/cjs/sqm-navigation-sidebar.cjs.entry.js +4 -5
  25. package/dist/cjs/sqm-password-field.cjs.entry.js +5 -6
  26. package/dist/cjs/sqm-popup-container.cjs.entry.js +4 -5
  27. package/dist/cjs/{sqm-portal-container-view-2d11ed71.js → sqm-portal-container-view-4a8432e9.js} +1 -1
  28. package/dist/cjs/{sqm-portal-email-verification-view-423191eb.js → sqm-portal-email-verification-view-3d511906.js} +3 -3
  29. package/dist/cjs/sqm-portal-email-verification.cjs.entry.js +8 -9
  30. package/dist/cjs/{sqm-portal-footer-view-8442fd90.js → sqm-portal-footer-view-6be4691b.js} +2 -2
  31. package/dist/cjs/sqm-portal-footer.cjs.entry.js +7 -8
  32. package/dist/cjs/{sqm-portal-forgot-password-view-97932f7a.js → sqm-portal-forgot-password-view-aaa8dd17.js} +2 -2
  33. package/dist/cjs/sqm-portal-forgot-password.cjs.entry.js +8 -9
  34. package/dist/cjs/sqm-portal-logout.cjs.entry.js +4 -5
  35. package/dist/cjs/{sqm-portal-profile-view-b77382f6.js → sqm-portal-profile-view-09e80437.js} +4 -4
  36. package/dist/cjs/sqm-portal-profile.cjs.entry.js +15 -15
  37. package/dist/cjs/sqm-portal-protected-route.cjs.entry.js +4 -5
  38. package/dist/cjs/{sqm-portal-reset-password-view-042073ca.js → sqm-portal-reset-password-view-035245e6.js} +2 -2
  39. package/dist/cjs/sqm-portal-reset-password.cjs.entry.js +8 -9
  40. package/dist/cjs/{sqm-portal-section-view-765aae4d.js → sqm-portal-section-view-71a57cd9.js} +1 -1
  41. package/dist/cjs/{sqm-portal-verify-email-view-cb3c9c2f.js → sqm-portal-verify-email-view-7014ca89.js} +2 -2
  42. package/dist/cjs/sqm-portal-verify-email.cjs.entry.js +7 -8
  43. package/dist/cjs/sqm-referral-table_11.cjs.entry.js +20 -20
  44. package/dist/cjs/sqm-rewards-table-customer-note-cell.cjs.entry.js +4 -5
  45. package/dist/cjs/sqm-rewards-table-customer-note-column.cjs.entry.js +5 -6
  46. package/dist/cjs/sqm-rewards-table_9.cjs.entry.js +61 -61
  47. package/dist/cjs/sqm-stencilbook.cjs.entry.js +277 -70
  48. package/dist/cjs/sqm-tabs.cjs.entry.js +5 -6
  49. package/dist/cjs/{sqm-text-span-view-ab4ad6ef.js → sqm-text-span-view-b0c90c27.js} +1 -1
  50. package/dist/cjs/sqm-text-span.cjs.entry.js +4 -5
  51. package/dist/cjs/{stencil-hooks.module-87a1f4f7.js → stencil-hooks.module-ffd2b47a.js} +1 -3
  52. package/dist/cjs/{use-callback-e754042f.js → use-callback-5cddca5b.js} +1 -1
  53. package/dist/cjs/{useChildElements-097c3dc9.js → useChildElements-bf0a8e9a.js} +2 -2
  54. package/dist/cjs/{useReferralTable-a7fc07c6.js → useReferralTable-3ae21428.js} +11 -10
  55. package/dist/collection/collection-manifest.json +1 -0
  56. package/dist/collection/components/sqm-checkbox-field/CheckboxField.stories.js +8 -1
  57. package/dist/collection/components/sqm-checkbox-field/UseCheckboxField.stories.js +12 -2
  58. package/dist/collection/components/sqm-checkbox-field/sqm-checkbox-field-view.js +5 -2
  59. package/dist/collection/components/sqm-checkbox-field/sqm-checkbox-field.js +21 -8
  60. package/dist/collection/components/sqm-dropdown-field/UseDropdownField.stories.js +8 -0
  61. package/dist/collection/components/sqm-dropdown-field/sqm-dropdown-field-view.js +6 -2
  62. package/dist/collection/components/sqm-dropdown-field/sqm-dropdown-field.js +22 -8
  63. package/dist/collection/components/sqm-hero/Hero.stories.js +1 -1
  64. package/dist/collection/components/sqm-input-field/InputField.stories.js +81 -0
  65. package/dist/collection/components/sqm-input-field/UseInputField.stories.js +77 -0
  66. package/dist/collection/components/sqm-input-field/sqm-input-field-view.js +37 -0
  67. package/dist/collection/components/sqm-input-field/sqm-input-field.js +204 -0
  68. package/dist/collection/components/sqm-input-field/useInputField.js +10 -0
  69. package/dist/collection/components/sqm-name-fields/NameFields.stories.js +2 -2
  70. package/dist/collection/components/sqm-name-fields/sqm-name-fields.js +3 -0
  71. package/dist/collection/components/sqm-portal-footer/PortalFooter.stories.js +1 -1
  72. package/dist/collection/components/sqm-program-menu/ProgramMenu.stories.js +1 -1
  73. package/dist/collection/components/sqm-referral-iframe/ReferralIframe.stories.js +1 -1
  74. package/dist/collection/components/sqm-referral-iframe/sqm-referral-iframe.js +1 -1
  75. package/dist/collection/components/sqm-share-code/sqm-share-code.js +2 -3
  76. package/dist/collection/components/sqm-share-link/sqm-share-link.js +2 -3
  77. package/dist/collection/components/sqm-stencilbook/sqm-stencilbook.js +5 -1
  78. package/dist/collection/utils/RequiredPropsError.js +21 -13
  79. package/dist/esm/{GenericTableView-8dc8ae86.js → GenericTableView-786af302.js} +1 -1
  80. package/dist/esm/{JSS-418cab16.js → JSS-506b9295.js} +17 -1
  81. package/dist/esm/{ShadowViewAddon-b98faaf1.js → ShadowViewAddon-89f22fc6.js} +78 -38
  82. package/dist/esm/{global-15cdf41a.js → global-e42fe7b7.js} +161 -10
  83. package/dist/esm/index-bd34bcae.js +2225 -0
  84. package/dist/esm/{index.module-f5e17a4e.js → index.module-baacf60e.js} +58 -537
  85. package/dist/esm/loader.js +5 -6
  86. package/dist/esm/{luxon-f44215d9.js → luxon-12da328f.js} +1 -1
  87. package/dist/esm/mint-components.js +5 -6
  88. package/dist/esm/{re-render-8f0a7ab1.js → re-render-a9b7d08b.js} +2 -2
  89. package/dist/esm/{sqm-asset-card-view-68f80b85.js → sqm-asset-card-view-de0f3463.js} +1 -1
  90. package/dist/esm/sqm-asset-card.entry.js +5 -6
  91. package/dist/esm/{sqm-big-stat_34.entry.js → sqm-big-stat_35.entry.js} +154 -75
  92. package/dist/esm/sqm-empty_5.entry.js +4 -5
  93. package/dist/esm/sqm-form-message.entry.js +1 -1
  94. package/dist/esm/sqm-graphql-client-provider.entry.js +3 -4
  95. package/dist/esm/{sqm-hero-view-99b40ec1.js → sqm-hero-view-4af49f88.js} +3 -3
  96. package/dist/esm/sqm-hero.entry.js +4 -5
  97. package/dist/esm/sqm-leaderboard-rank.entry.js +5 -5
  98. package/dist/esm/{sqm-navigation-sidebar-item-view-73f753fa.js → sqm-navigation-sidebar-item-view-96cb4b73.js} +2 -2
  99. package/dist/esm/sqm-navigation-sidebar-item.entry.js +5 -6
  100. package/dist/esm/{sqm-navigation-sidebar-view-9cb9a5f4.js → sqm-navigation-sidebar-view-e2347888.js} +1 -1
  101. package/dist/esm/sqm-navigation-sidebar.entry.js +3 -4
  102. package/dist/esm/sqm-password-field.entry.js +4 -5
  103. package/dist/esm/sqm-popup-container.entry.js +3 -4
  104. package/dist/esm/{sqm-portal-container-view-34f26e2a.js → sqm-portal-container-view-8f1bcc77.js} +1 -1
  105. package/dist/esm/{sqm-portal-email-verification-view-cc73f8f4.js → sqm-portal-email-verification-view-65ec0fc7.js} +3 -3
  106. package/dist/esm/sqm-portal-email-verification.entry.js +7 -8
  107. package/dist/esm/{sqm-portal-footer-view-d06c4b78.js → sqm-portal-footer-view-31fbf426.js} +2 -2
  108. package/dist/esm/sqm-portal-footer.entry.js +6 -7
  109. package/dist/esm/{sqm-portal-forgot-password-view-f7239087.js → sqm-portal-forgot-password-view-38910bc9.js} +2 -2
  110. package/dist/esm/sqm-portal-forgot-password.entry.js +7 -8
  111. package/dist/esm/sqm-portal-logout.entry.js +3 -4
  112. package/dist/esm/{sqm-portal-profile-view-28c39970.js → sqm-portal-profile-view-d53e37e1.js} +4 -4
  113. package/dist/esm/sqm-portal-profile.entry.js +9 -9
  114. package/dist/esm/sqm-portal-protected-route.entry.js +3 -4
  115. package/dist/esm/{sqm-portal-reset-password-view-e0436989.js → sqm-portal-reset-password-view-55411ca5.js} +2 -2
  116. package/dist/esm/sqm-portal-reset-password.entry.js +7 -8
  117. package/dist/esm/{sqm-portal-section-view-c8d1c727.js → sqm-portal-section-view-d64cd5de.js} +1 -1
  118. package/dist/esm/{sqm-portal-verify-email-view-c489166b.js → sqm-portal-verify-email-view-7ba350f9.js} +2 -2
  119. package/dist/esm/sqm-portal-verify-email.entry.js +6 -7
  120. package/dist/esm/sqm-referral-table_11.entry.js +12 -12
  121. package/dist/esm/sqm-rewards-table-customer-note-cell.entry.js +3 -4
  122. package/dist/esm/sqm-rewards-table-customer-note-column.entry.js +4 -5
  123. package/dist/esm/sqm-rewards-table_9.entry.js +11 -11
  124. package/dist/esm/sqm-stencilbook.entry.js +275 -68
  125. package/dist/esm/sqm-tabs.entry.js +4 -5
  126. package/dist/esm/{sqm-text-span-view-020db63f.js → sqm-text-span-view-20c0f018.js} +1 -1
  127. package/dist/esm/sqm-text-span.entry.js +3 -4
  128. package/dist/esm/{stencil-hooks.module-acc8a613.js → stencil-hooks.module-59bf962a.js} +1 -1
  129. package/dist/esm/{use-callback-7e0bfd3b.js → use-callback-144b9a67.js} +1 -1
  130. package/dist/esm/{useChildElements-3ffd7077.js → useChildElements-aaca692e.js} +2 -2
  131. package/dist/esm/{useReferralTable-d8a7e3be.js → useReferralTable-52da5c20.js} +5 -4
  132. package/dist/esm-es5/{GenericTableView-8dc8ae86.js → GenericTableView-786af302.js} +1 -1
  133. package/dist/esm-es5/{JSS-418cab16.js → JSS-506b9295.js} +1 -1
  134. package/dist/esm-es5/ShadowViewAddon-89f22fc6.js +1 -0
  135. package/dist/esm-es5/global-e42fe7b7.js +285 -0
  136. package/dist/esm-es5/index-bd34bcae.js +1 -0
  137. package/dist/esm-es5/index.module-baacf60e.js +1 -0
  138. package/dist/esm-es5/loader.js +1 -1
  139. package/dist/esm-es5/{luxon-f44215d9.js → luxon-12da328f.js} +1 -1
  140. package/dist/esm-es5/mint-components.js +1 -1
  141. package/dist/esm-es5/{re-render-8f0a7ab1.js → re-render-a9b7d08b.js} +1 -1
  142. package/dist/esm-es5/{sqm-asset-card-view-68f80b85.js → sqm-asset-card-view-de0f3463.js} +1 -1
  143. package/dist/esm-es5/sqm-asset-card.entry.js +1 -1
  144. package/dist/esm-es5/sqm-big-stat_35.entry.js +1 -0
  145. package/dist/esm-es5/sqm-empty_5.entry.js +1 -1
  146. package/dist/esm-es5/sqm-form-message.entry.js +1 -1
  147. package/dist/esm-es5/sqm-graphql-client-provider.entry.js +1 -1
  148. package/dist/esm-es5/{sqm-hero-view-99b40ec1.js → sqm-hero-view-4af49f88.js} +1 -1
  149. package/dist/esm-es5/sqm-hero.entry.js +1 -1
  150. package/dist/esm-es5/sqm-leaderboard-rank.entry.js +1 -1
  151. package/dist/esm-es5/{sqm-navigation-sidebar-item-view-73f753fa.js → sqm-navigation-sidebar-item-view-96cb4b73.js} +1 -1
  152. package/dist/esm-es5/sqm-navigation-sidebar-item.entry.js +1 -1
  153. package/dist/esm-es5/{sqm-navigation-sidebar-view-9cb9a5f4.js → sqm-navigation-sidebar-view-e2347888.js} +1 -1
  154. package/dist/esm-es5/sqm-navigation-sidebar.entry.js +1 -1
  155. package/dist/esm-es5/sqm-password-field.entry.js +1 -1
  156. package/dist/esm-es5/sqm-popup-container.entry.js +1 -1
  157. package/dist/esm-es5/{sqm-portal-container-view-34f26e2a.js → sqm-portal-container-view-8f1bcc77.js} +1 -1
  158. package/dist/esm-es5/{sqm-portal-email-verification-view-cc73f8f4.js → sqm-portal-email-verification-view-65ec0fc7.js} +1 -1
  159. package/dist/esm-es5/sqm-portal-email-verification.entry.js +1 -1
  160. package/dist/esm-es5/{sqm-portal-footer-view-d06c4b78.js → sqm-portal-footer-view-31fbf426.js} +1 -1
  161. package/dist/esm-es5/sqm-portal-footer.entry.js +1 -1
  162. package/dist/esm-es5/{sqm-portal-forgot-password-view-f7239087.js → sqm-portal-forgot-password-view-38910bc9.js} +1 -1
  163. package/dist/esm-es5/sqm-portal-forgot-password.entry.js +1 -1
  164. package/dist/esm-es5/sqm-portal-logout.entry.js +1 -1
  165. package/dist/esm-es5/{sqm-portal-profile-view-28c39970.js → sqm-portal-profile-view-d53e37e1.js} +1 -1
  166. package/dist/esm-es5/sqm-portal-profile.entry.js +1 -1
  167. package/dist/esm-es5/sqm-portal-protected-route.entry.js +1 -1
  168. package/dist/esm-es5/{sqm-portal-reset-password-view-e0436989.js → sqm-portal-reset-password-view-55411ca5.js} +1 -1
  169. package/dist/esm-es5/sqm-portal-reset-password.entry.js +1 -1
  170. package/dist/esm-es5/sqm-portal-section-view-d64cd5de.js +1 -0
  171. package/dist/esm-es5/{sqm-portal-verify-email-view-c489166b.js → sqm-portal-verify-email-view-7ba350f9.js} +1 -1
  172. package/dist/esm-es5/sqm-portal-verify-email.entry.js +1 -1
  173. package/dist/esm-es5/sqm-referral-table_11.entry.js +1 -1
  174. package/dist/esm-es5/sqm-rewards-table-customer-note-cell.entry.js +1 -1
  175. package/dist/esm-es5/sqm-rewards-table-customer-note-column.entry.js +1 -1
  176. package/dist/esm-es5/sqm-rewards-table_9.entry.js +1 -1
  177. package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
  178. package/dist/esm-es5/sqm-tabs.entry.js +1 -1
  179. package/dist/esm-es5/{sqm-text-span-view-020db63f.js → sqm-text-span-view-20c0f018.js} +1 -1
  180. package/dist/esm-es5/sqm-text-span.entry.js +1 -1
  181. package/dist/esm-es5/{stencil-hooks.module-acc8a613.js → stencil-hooks.module-59bf962a.js} +1 -1
  182. package/dist/esm-es5/use-callback-144b9a67.js +1 -0
  183. package/dist/esm-es5/{useChildElements-3ffd7077.js → useChildElements-aaca692e.js} +1 -1
  184. package/dist/esm-es5/useReferralTable-52da5c20.js +1 -0
  185. package/dist/mint-components/mint-components.esm.js +1 -1
  186. package/dist/mint-components/mint-components.js +1 -1
  187. package/dist/mint-components/p-03f9d2d7.system.entry.js +1 -0
  188. package/dist/mint-components/p-06c6c9c8.system.entry.js +1 -0
  189. package/dist/mint-components/p-07e75fd0.system.js +1 -0
  190. package/dist/mint-components/{p-b968f779.js → p-07ee010b.js} +1 -1
  191. package/dist/mint-components/p-0cd07cea.entry.js +1 -0
  192. package/dist/mint-components/p-0d4d1169.system.js +1 -0
  193. package/dist/mint-components/p-14119252.system.entry.js +1 -0
  194. package/dist/mint-components/{p-baebc359.system.js → p-198b17ed.system.js} +1 -1
  195. package/dist/mint-components/{p-a1b9ca51.system.js → p-1cc7a8e6.system.js} +1 -1
  196. package/dist/mint-components/{p-ab2cbd56.js → p-1fbf8d0b.js} +1 -1
  197. package/dist/mint-components/p-21e882c2.system.entry.js +1 -0
  198. package/dist/mint-components/p-256a8daa.system.js +1 -0
  199. package/dist/mint-components/p-269fdb27.entry.js +1 -0
  200. package/dist/mint-components/p-26f81084.entry.js +1 -0
  201. package/dist/mint-components/p-28a5e360.entry.js +1 -0
  202. package/dist/mint-components/p-29a8adea.system.entry.js +1 -0
  203. package/dist/mint-components/p-29ba3da1.system.entry.js +1 -0
  204. package/dist/mint-components/{p-dcec5845.js → p-301d2d09.js} +1 -1
  205. package/dist/mint-components/p-3064bb3d.js +268 -0
  206. package/dist/mint-components/{p-cf9cfac0.entry.js → p-31847ef1.entry.js} +1 -1
  207. package/dist/mint-components/{p-5fca1bb9.system.js → p-330680dd.system.js} +1 -1
  208. package/dist/mint-components/{p-50019ebe.system.entry.js → p-377d5399.system.entry.js} +1 -1
  209. package/dist/mint-components/p-3bb4fd18.system.js +8 -0
  210. package/dist/mint-components/p-3bd4706b.system.entry.js +1 -0
  211. package/dist/mint-components/{p-85771eab.system.entry.js → p-3cea0d56.system.entry.js} +1 -1
  212. package/dist/mint-components/p-3f4789b5.entry.js +9 -0
  213. package/dist/mint-components/p-40b50dfa.entry.js +1 -0
  214. package/dist/mint-components/{p-774d205c.system.js → p-43b04cea.system.js} +22 -22
  215. package/dist/mint-components/{p-f214b557.js → p-450537d7.js} +3 -3
  216. package/dist/mint-components/p-45e9d3af.system.entry.js +1 -0
  217. package/dist/mint-components/{p-c4c73067.system.js → p-4708ece8.system.js} +1 -1
  218. package/dist/mint-components/p-48d0acd2.entry.js +1 -0
  219. package/dist/mint-components/p-4ed9b5a8.entry.js +1 -0
  220. package/dist/mint-components/p-510b5f3e.system.entry.js +1 -0
  221. package/dist/mint-components/p-51f65e88.system.entry.js +1 -0
  222. package/dist/mint-components/{p-894cf728.system.js → p-51fc3d02.system.js} +1 -1
  223. package/dist/mint-components/{p-48ec6605.system.js → p-57c3d6e3.system.js} +2 -2
  224. package/dist/mint-components/p-59b9b6cd.entry.js +1 -0
  225. package/dist/mint-components/{p-e8f5f4e0.js → p-5a1ed9bb.js} +1 -1
  226. package/dist/mint-components/{p-36c073ce.entry.js → p-5dc150ef.entry.js} +2 -2
  227. package/dist/mint-components/p-5f271b67.entry.js +13 -0
  228. package/dist/mint-components/{p-937bf427.system.js → p-621a2912.system.js} +1 -1
  229. package/dist/mint-components/p-65e7595f.entry.js +1 -0
  230. package/dist/mint-components/p-65f4f656.system.js +1 -0
  231. package/dist/mint-components/{p-c6e6162c.js → p-66072e0a.js} +1 -1
  232. package/dist/mint-components/p-72c8c85b.entry.js +1 -0
  233. package/dist/mint-components/{p-9c2fd3e4.system.js → p-760e06dc.system.js} +1 -1
  234. package/dist/mint-components/{p-72b3562a.system.js → p-774c9bb9.system.js} +1 -1
  235. package/dist/mint-components/p-7e014c96.js +1 -0
  236. package/dist/mint-components/p-81b6da22.system.entry.js +1 -0
  237. package/dist/mint-components/p-81bf0483.entry.js +1 -0
  238. package/dist/mint-components/p-8295d389.js +1 -0
  239. package/dist/mint-components/p-85e934c8.js +1 -0
  240. package/dist/mint-components/{p-46416f3e.js → p-864be7c2.js} +1 -1
  241. package/dist/mint-components/p-88074d22.entry.js +1 -0
  242. package/dist/mint-components/{p-36c2267d.js → p-896a1f38.js} +1 -1
  243. package/dist/mint-components/{p-27455c4c.js → p-8b4c8f6c.js} +1 -1
  244. package/dist/mint-components/p-8c06a2fc.system.entry.js +1 -0
  245. package/dist/mint-components/{p-ce474d92.system.js → p-91c3ddbf.system.js} +1 -1
  246. package/dist/mint-components/{p-7794c289.js → p-93f308ff.js} +1 -1
  247. package/dist/mint-components/{p-52ca31c9.entry.js → p-94941e98.entry.js} +12 -12
  248. package/dist/mint-components/{p-311a0e60.system.js → p-94b7c515.system.js} +1 -1
  249. package/dist/mint-components/p-954ffe64.system.entry.js +1 -0
  250. package/dist/mint-components/p-982fb67b.js +1 -0
  251. package/dist/mint-components/{p-5bbead79.system.entry.js → p-99cf69e3.system.entry.js} +1 -1
  252. package/dist/mint-components/{p-227ccb7c.js → p-9fd08e41.js} +1 -1
  253. package/dist/mint-components/p-9fff69ad.js +1 -0
  254. package/dist/mint-components/{p-c5573b7c.js → p-a0b933b5.js} +1 -1
  255. package/dist/mint-components/{p-8894c616.entry.js → p-a2ca69c1.entry.js} +1 -1
  256. package/dist/mint-components/p-a42b2f73.system.entry.js +1 -0
  257. package/dist/mint-components/p-a455e4b0.system.js +1 -0
  258. package/dist/mint-components/{p-06a4d499.system.js → p-a672dec4.system.js} +1 -1
  259. package/dist/mint-components/p-a6c936c4.system.entry.js +1 -0
  260. package/dist/mint-components/p-aa93012c.system.entry.js +1 -0
  261. package/dist/mint-components/{p-c5f46105.entry.js → p-b52ffaa6.entry.js} +3 -3
  262. package/dist/mint-components/{p-58442d48.system.entry.js → p-b9bd9853.system.entry.js} +1 -1
  263. package/dist/mint-components/p-b9e6ae04.system.entry.js +1 -0
  264. package/dist/mint-components/p-bb8a7842.entry.js +1 -0
  265. package/dist/mint-components/p-bc31cd46.system.entry.js +1 -0
  266. package/dist/mint-components/{p-13f034ac.system.js → p-c304cdde.system.js} +1 -1
  267. package/dist/mint-components/p-c3ecd0de.entry.js +1 -0
  268. package/dist/mint-components/{p-a6d4cffd.system.entry.js → p-c952a123.system.entry.js} +1 -1
  269. package/dist/mint-components/p-cf4c2f8e.system.js +1 -0
  270. package/dist/mint-components/{p-190d0446.system.js → p-d1242e79.system.js} +1 -1
  271. package/dist/mint-components/{p-99c57fce.js → p-d1dac237.js} +1 -1
  272. package/dist/mint-components/{p-bbf96ff3.system.js → p-d34a5072.system.js} +1 -1
  273. package/dist/mint-components/p-d624972c.entry.js +1 -0
  274. package/dist/mint-components/p-d926cf38.system.entry.js +1 -0
  275. package/dist/mint-components/p-dd1729db.entry.js +1 -0
  276. package/dist/mint-components/{p-8fc1aef1.js → p-e312a5ed.js} +1 -1
  277. package/dist/mint-components/{p-f0b9e163.js → p-e367460b.js} +153 -153
  278. package/dist/mint-components/p-e577f5dd.system.js +1 -0
  279. package/dist/mint-components/{p-274a87bd.js → p-ebd3a98b.js} +1 -1
  280. package/dist/mint-components/{p-3768d478.system.js → p-ec104c1d.system.js} +1 -1
  281. package/dist/mint-components/p-edeceedd.system.entry.js +1 -0
  282. package/dist/mint-components/p-ee49e509.entry.js +1 -0
  283. package/dist/mint-components/{p-9f08dc58.js → p-f30000d4.js} +1 -1
  284. package/dist/mint-components/p-f32d2074.entry.js +1 -0
  285. package/dist/mint-components/p-f3a65df7.js +1 -0
  286. package/dist/mint-components/{p-fa6a579e.system.js → p-f6c2e436.system.js} +1 -1
  287. package/dist/mint-components/p-fd6ba06e.system.entry.js +1 -0
  288. package/dist/mint-components/{p-380b25a3.js → p-ff39746d.js} +1 -1
  289. package/dist/mint-components/p-ffe8edba.entry.js +1 -0
  290. package/dist/types/components/sqm-checkbox-field/CheckboxField.stories.d.ts +3 -0
  291. package/dist/types/components/sqm-checkbox-field/UseCheckboxField.stories.d.ts +9 -0
  292. package/dist/types/components/sqm-checkbox-field/sqm-checkbox-field-view.d.ts +1 -1
  293. package/dist/types/components/sqm-checkbox-field/sqm-checkbox-field.d.ts +6 -3
  294. package/dist/types/components/sqm-dropdown-field/UseDropdownField.stories.d.ts +6 -0
  295. package/dist/types/components/sqm-dropdown-field/sqm-dropdown-field-view.d.ts +1 -1
  296. package/dist/types/components/sqm-dropdown-field/sqm-dropdown-field.d.ts +6 -3
  297. package/dist/types/components/sqm-input-field/InputField.stories.d.ts +15 -0
  298. package/dist/types/components/sqm-input-field/UseInputField.stories.d.ts +49 -0
  299. package/dist/types/components/sqm-input-field/sqm-input-field-view.d.ts +14 -0
  300. package/dist/types/components/sqm-input-field/sqm-input-field.d.ts +41 -0
  301. package/dist/types/components/sqm-input-field/useInputField.d.ts +5 -0
  302. package/dist/types/components/sqm-name-fields/sqm-name-fields.d.ts +4 -1
  303. package/dist/types/components.d.ts +92 -14
  304. package/dist/types/utils/RequiredPropsError.d.ts +4 -1
  305. package/docs/docs.docx +0 -0
  306. package/docs/grapesjs.js +54 -0
  307. package/docs/raisins.json +1 -0
  308. package/docs/stats.json +39222 -0
  309. package/grapesjs/grapesjs.js +1 -1
  310. package/package.json +8 -3
  311. package/shoelace/assets/icons/123.svg +3 -0
  312. package/shoelace/assets/icons/activity.svg +3 -0
  313. package/shoelace/assets/icons/apple.svg +4 -0
  314. package/shoelace/assets/icons/bandaid-fill.svg +3 -0
  315. package/shoelace/assets/icons/bandaid.svg +4 -0
  316. package/shoelace/assets/icons/bank.svg +3 -0
  317. package/shoelace/assets/icons/bank2.svg +3 -0
  318. package/shoelace/assets/icons/behance.svg +3 -0
  319. package/shoelace/assets/icons/bell-slash-fill.svg +3 -0
  320. package/shoelace/assets/icons/bell-slash.svg +3 -0
  321. package/shoelace/assets/icons/bluetooth.svg +3 -0
  322. package/shoelace/assets/icons/body-text.svg +3 -0
  323. package/shoelace/assets/icons/boombox-fill.svg +4 -0
  324. package/shoelace/assets/icons/boombox.svg +6 -0
  325. package/shoelace/assets/icons/boxes.svg +3 -0
  326. package/shoelace/assets/icons/cash-coin.svg +6 -0
  327. package/shoelace/assets/icons/check-lg.svg +3 -0
  328. package/shoelace/assets/icons/cloud-haze2.svg +3 -0
  329. package/shoelace/assets/icons/coin.svg +5 -0
  330. package/shoelace/assets/icons/currency-bitcoin.svg +3 -0
  331. package/shoelace/assets/icons/currency-dollar.svg +3 -0
  332. package/shoelace/assets/icons/currency-euro.svg +3 -0
  333. package/shoelace/assets/icons/currency-exchange.svg +3 -0
  334. package/shoelace/assets/icons/currency-pound.svg +3 -0
  335. package/shoelace/assets/icons/currency-yen.svg +3 -0
  336. package/shoelace/assets/icons/dash-lg.svg +3 -0
  337. package/shoelace/assets/icons/device-hdd-fill.svg +4 -0
  338. package/shoelace/assets/icons/device-hdd.svg +5 -0
  339. package/shoelace/assets/icons/device-ssd-fill.svg +4 -0
  340. package/shoelace/assets/icons/device-ssd.svg +4 -0
  341. package/shoelace/assets/icons/displayport-fill.svg +3 -0
  342. package/shoelace/assets/icons/displayport.svg +4 -0
  343. package/shoelace/assets/icons/dpad-fill.svg +3 -0
  344. package/shoelace/assets/icons/dpad.svg +4 -0
  345. package/shoelace/assets/icons/dribbble.svg +3 -0
  346. package/shoelace/assets/icons/ear-fill.svg +3 -0
  347. package/shoelace/assets/icons/ear.svg +3 -0
  348. package/shoelace/assets/icons/easel2-fill.svg +4 -0
  349. package/shoelace/assets/icons/easel2.svg +3 -0
  350. package/shoelace/assets/icons/easel3-fill.svg +3 -0
  351. package/shoelace/assets/icons/easel3.svg +3 -0
  352. package/shoelace/assets/icons/envelope-check-fill.svg +4 -0
  353. package/shoelace/assets/icons/envelope-check.svg +4 -0
  354. package/shoelace/assets/icons/envelope-dash-fill.svg +4 -0
  355. package/shoelace/assets/icons/envelope-dash.svg +4 -0
  356. package/shoelace/assets/icons/envelope-exclamation-fill.svg +4 -0
  357. package/shoelace/assets/icons/envelope-exclamation.svg +4 -0
  358. package/shoelace/assets/icons/envelope-plus-fill.svg +4 -0
  359. package/shoelace/assets/icons/envelope-plus.svg +4 -0
  360. package/shoelace/assets/icons/envelope-slash-fill.svg +4 -0
  361. package/shoelace/assets/icons/envelope-slash.svg +4 -0
  362. package/shoelace/assets/icons/envelope-x-fill.svg +4 -0
  363. package/shoelace/assets/icons/envelope-x.svg +4 -0
  364. package/shoelace/assets/icons/ethernet.svg +4 -0
  365. package/shoelace/assets/icons/exclamation-lg.svg +3 -0
  366. package/shoelace/assets/icons/explicit-fill.svg +3 -0
  367. package/shoelace/assets/icons/explicit.svg +4 -0
  368. package/shoelace/assets/icons/fan.svg +4 -0
  369. package/shoelace/assets/icons/file-earmark-pdf-fill.svg +4 -0
  370. package/shoelace/assets/icons/file-earmark-pdf.svg +4 -0
  371. package/shoelace/assets/icons/file-pdf-fill.svg +4 -0
  372. package/shoelace/assets/icons/file-pdf.svg +4 -0
  373. package/shoelace/assets/icons/fingerprint.svg +7 -0
  374. package/shoelace/assets/icons/gender-ambiguous.svg +3 -0
  375. package/shoelace/assets/icons/gender-female.svg +3 -0
  376. package/shoelace/assets/icons/gender-male.svg +3 -0
  377. package/shoelace/assets/icons/gender-trans.svg +3 -0
  378. package/shoelace/assets/icons/git.svg +3 -0
  379. package/shoelace/assets/icons/gpu-card.svg +5 -0
  380. package/shoelace/assets/icons/graph-down-arrow.svg +3 -0
  381. package/shoelace/assets/icons/graph-up-arrow.svg +3 -0
  382. package/shoelace/assets/icons/hdmi-fill.svg +3 -0
  383. package/shoelace/assets/icons/hdmi.svg +4 -0
  384. package/shoelace/assets/icons/headset-vr.svg +4 -0
  385. package/shoelace/assets/icons/hypnotize.svg +4 -0
  386. package/shoelace/assets/icons/infinity.svg +3 -0
  387. package/shoelace/assets/icons/info-lg.svg +3 -0
  388. package/shoelace/assets/icons/line.svg +3 -0
  389. package/shoelace/assets/icons/list-columns-reverse.svg +3 -0
  390. package/shoelace/assets/icons/list-columns.svg +3 -0
  391. package/shoelace/assets/icons/magic.svg +3 -0
  392. package/shoelace/assets/icons/mastodon.svg +3 -0
  393. package/shoelace/assets/icons/medium.svg +3 -0
  394. package/shoelace/assets/icons/memory.svg +3 -0
  395. package/shoelace/assets/icons/messenger.svg +3 -0
  396. package/shoelace/assets/icons/meta.svg +3 -0
  397. package/shoelace/assets/icons/microsoft.svg +3 -0
  398. package/shoelace/assets/icons/modem-fill.svg +3 -0
  399. package/shoelace/assets/icons/modem.svg +4 -0
  400. package/shoelace/assets/icons/mortarboard-fill.svg +4 -0
  401. package/shoelace/assets/icons/mortarboard.svg +4 -0
  402. package/shoelace/assets/icons/motherboard-fill.svg +4 -0
  403. package/shoelace/assets/icons/motherboard.svg +4 -0
  404. package/shoelace/assets/icons/nintendo-switch.svg +4 -0
  405. package/shoelace/assets/icons/optical-audio-fill.svg +4 -0
  406. package/shoelace/assets/icons/optical-audio.svg +5 -0
  407. package/shoelace/assets/icons/paypal.svg +3 -0
  408. package/shoelace/assets/icons/pc-display-horizontal.svg +3 -0
  409. package/shoelace/assets/icons/pc-display.svg +3 -0
  410. package/shoelace/assets/icons/pc-horizontal.svg +3 -0
  411. package/shoelace/assets/icons/pc.svg +3 -0
  412. package/shoelace/assets/icons/pci-card.svg +4 -0
  413. package/shoelace/assets/icons/person-rolodex.svg +4 -0
  414. package/shoelace/assets/icons/person-video.svg +4 -0
  415. package/shoelace/assets/icons/person-video2.svg +4 -0
  416. package/shoelace/assets/icons/person-video3.svg +4 -0
  417. package/shoelace/assets/icons/person-workspace.svg +4 -0
  418. package/shoelace/assets/icons/piggy-bank-fill.svg +3 -0
  419. package/shoelace/assets/icons/piggy-bank.svg +4 -0
  420. package/shoelace/assets/icons/pin-map-fill.svg +4 -0
  421. package/shoelace/assets/icons/pin-map.svg +4 -0
  422. package/shoelace/assets/icons/pinterest.svg +3 -0
  423. package/shoelace/assets/icons/playstation.svg +3 -0
  424. package/shoelace/assets/icons/plus-lg.svg +3 -0
  425. package/shoelace/assets/icons/plus-slash-minus.svg +3 -0
  426. package/shoelace/assets/icons/projector-fill.svg +3 -0
  427. package/shoelace/assets/icons/projector.svg +4 -0
  428. package/shoelace/assets/icons/qr-code-scan.svg +7 -0
  429. package/shoelace/assets/icons/qr-code.svg +7 -0
  430. package/shoelace/assets/icons/question-lg.svg +3 -0
  431. package/shoelace/assets/icons/quora.svg +3 -0
  432. package/shoelace/assets/icons/quote.svg +3 -0
  433. package/shoelace/assets/icons/radioactive.svg +4 -0
  434. package/shoelace/assets/icons/recycle.svg +3 -0
  435. package/shoelace/assets/icons/reddit.svg +4 -0
  436. package/shoelace/assets/icons/robot.svg +4 -0
  437. package/shoelace/assets/icons/router-fill.svg +6 -0
  438. package/shoelace/assets/icons/router.svg +6 -0
  439. package/shoelace/assets/icons/safe-fill.svg +4 -0
  440. package/shoelace/assets/icons/safe.svg +4 -0
  441. package/shoelace/assets/icons/safe2-fill.svg +4 -0
  442. package/shoelace/assets/icons/safe2.svg +4 -0
  443. package/shoelace/assets/icons/sd-card-fill.svg +3 -0
  444. package/shoelace/assets/icons/sd-card.svg +4 -0
  445. package/shoelace/assets/icons/send-check-fill.svg +4 -0
  446. package/shoelace/assets/icons/send-check.svg +4 -0
  447. package/shoelace/assets/icons/send-dash-fill.svg +4 -0
  448. package/shoelace/assets/icons/send-dash.svg +4 -0
  449. package/shoelace/assets/icons/send-exclamation-fill.svg +4 -0
  450. package/shoelace/assets/icons/send-exclamation.svg +4 -0
  451. package/shoelace/assets/icons/send-fill.svg +3 -0
  452. package/shoelace/assets/icons/send-plus-fill.svg +4 -0
  453. package/shoelace/assets/icons/send-plus.svg +4 -0
  454. package/shoelace/assets/icons/send-slash-fill.svg +4 -0
  455. package/shoelace/assets/icons/send-slash.svg +4 -0
  456. package/shoelace/assets/icons/send-x-fill.svg +4 -0
  457. package/shoelace/assets/icons/send-x.svg +4 -0
  458. package/shoelace/assets/icons/send.svg +3 -0
  459. package/shoelace/assets/icons/signal.svg +3 -0
  460. package/shoelace/assets/icons/skype.svg +3 -0
  461. package/shoelace/assets/icons/slash-lg.svg +3 -0
  462. package/shoelace/assets/icons/snapchat.svg +3 -0
  463. package/shoelace/assets/icons/spotify.svg +3 -0
  464. package/shoelace/assets/icons/stack-overflow.svg +4 -0
  465. package/shoelace/assets/icons/steam.svg +4 -0
  466. package/shoelace/assets/icons/strava.svg +3 -0
  467. package/shoelace/assets/icons/terminal-dash.svg +4 -0
  468. package/shoelace/assets/icons/terminal-plus.svg +4 -0
  469. package/shoelace/assets/icons/terminal-split.svg +4 -0
  470. package/shoelace/assets/icons/terminal-x.svg +4 -0
  471. package/shoelace/assets/icons/thunderbolt-fill.svg +3 -0
  472. package/shoelace/assets/icons/thunderbolt.svg +4 -0
  473. package/shoelace/assets/icons/ticket-detailed-fill.svg +3 -0
  474. package/shoelace/assets/icons/ticket-detailed.svg +4 -0
  475. package/shoelace/assets/icons/ticket-fill.svg +3 -0
  476. package/shoelace/assets/icons/ticket-perforated-fill.svg +3 -0
  477. package/shoelace/assets/icons/ticket-perforated.svg +4 -0
  478. package/shoelace/assets/icons/ticket.svg +3 -0
  479. package/shoelace/assets/icons/tiktok.svg +3 -0
  480. package/shoelace/assets/icons/translate.svg +4 -0
  481. package/shoelace/assets/icons/usb-c-fill.svg +3 -0
  482. package/shoelace/assets/icons/usb-c.svg +4 -0
  483. package/shoelace/assets/icons/usb-drive-fill.svg +3 -0
  484. package/shoelace/assets/icons/usb-drive.svg +3 -0
  485. package/shoelace/assets/icons/usb-fill.svg +3 -0
  486. package/shoelace/assets/icons/usb-micro-fill.svg +3 -0
  487. package/shoelace/assets/icons/usb-micro.svg +4 -0
  488. package/shoelace/assets/icons/usb-mini-fill.svg +3 -0
  489. package/shoelace/assets/icons/usb-mini.svg +4 -0
  490. package/shoelace/assets/icons/usb-plug-fill.svg +3 -0
  491. package/shoelace/assets/icons/usb-plug.svg +3 -0
  492. package/shoelace/assets/icons/usb-symbol.svg +3 -0
  493. package/shoelace/assets/icons/usb.svg +4 -0
  494. package/shoelace/assets/icons/vimeo.svg +3 -0
  495. package/shoelace/assets/icons/webcam-fill.svg +4 -0
  496. package/shoelace/assets/icons/webcam.svg +4 -0
  497. package/shoelace/assets/icons/window-dash.svg +5 -0
  498. package/shoelace/assets/icons/window-desktop.svg +4 -0
  499. package/shoelace/assets/icons/window-fullscreen.svg +4 -0
  500. package/shoelace/assets/icons/window-plus.svg +5 -0
  501. package/shoelace/assets/icons/window-split.svg +4 -0
  502. package/shoelace/assets/icons/window-stack.svg +4 -0
  503. package/shoelace/assets/icons/window-x.svg +5 -0
  504. package/shoelace/assets/icons/windows.svg +3 -0
  505. package/shoelace/assets/icons/wordpress.svg +5 -0
  506. package/shoelace/assets/icons/x-lg.svg +4 -0
  507. package/shoelace/assets/icons/xbox.svg +3 -0
  508. package/shoelace/assets/icons/yin-yang.svg +4 -0
  509. package/shoelace/themes/themes/dark.styles.d.ts +2 -0
  510. package/shoelace/themes/themes/dark.styles.js +531 -0
  511. package/shoelace/themes/themes/light.css +439 -0
  512. package/shoelace/themes/themes/light.styles.d.ts +2 -0
  513. package/shoelace/themes/themes/light.styles.js +531 -0
  514. package/dist/cjs/extends-08099afd.js +0 -21
  515. package/dist/esm/extends-c31f1eff.js +0 -19
  516. package/dist/esm-es5/ShadowViewAddon-b98faaf1.js +0 -1
  517. package/dist/esm-es5/extends-c31f1eff.js +0 -1
  518. package/dist/esm-es5/global-15cdf41a.js +0 -285
  519. package/dist/esm-es5/index.module-f5e17a4e.js +0 -1
  520. package/dist/esm-es5/sqm-big-stat_34.entry.js +0 -1
  521. package/dist/esm-es5/sqm-portal-section-view-c8d1c727.js +0 -1
  522. package/dist/esm-es5/use-callback-7e0bfd3b.js +0 -1
  523. package/dist/esm-es5/useReferralTable-d8a7e3be.js +0 -1
  524. package/dist/mint-components/p-003042cf.entry.js +0 -1
  525. package/dist/mint-components/p-02838fc9.system.entry.js +0 -1
  526. package/dist/mint-components/p-16b6aea4.js +0 -1
  527. package/dist/mint-components/p-1a10ffc0.entry.js +0 -13
  528. package/dist/mint-components/p-1a9cd574.entry.js +0 -1
  529. package/dist/mint-components/p-1c17892a.system.js +0 -1
  530. package/dist/mint-components/p-1c9004f0.system.entry.js +0 -1
  531. package/dist/mint-components/p-21b7949e.entry.js +0 -1
  532. package/dist/mint-components/p-2800ad44.system.js +0 -8
  533. package/dist/mint-components/p-2821a373.entry.js +0 -1
  534. package/dist/mint-components/p-31f0eaa9.system.entry.js +0 -1
  535. package/dist/mint-components/p-33707867.system.entry.js +0 -1
  536. package/dist/mint-components/p-342bfc16.entry.js +0 -1
  537. package/dist/mint-components/p-35a26fcd.entry.js +0 -1
  538. package/dist/mint-components/p-436da6b8.system.js +0 -1
  539. package/dist/mint-components/p-4a1f24ef.entry.js +0 -1
  540. package/dist/mint-components/p-4a2782fd.system.entry.js +0 -1
  541. package/dist/mint-components/p-596902cd.system.entry.js +0 -1
  542. package/dist/mint-components/p-67958347.system.entry.js +0 -1
  543. package/dist/mint-components/p-71ecbb3b.system.js +0 -1
  544. package/dist/mint-components/p-81f34787.js +0 -1
  545. package/dist/mint-components/p-842aa194.system.js +0 -1
  546. package/dist/mint-components/p-883f9baa.entry.js +0 -1
  547. package/dist/mint-components/p-8a1a1fb4.system.entry.js +0 -1
  548. package/dist/mint-components/p-95398ce2.js +0 -1
  549. package/dist/mint-components/p-95bbe8a7.entry.js +0 -1
  550. package/dist/mint-components/p-982ad256.js +0 -1
  551. package/dist/mint-components/p-9d162fc5.system.entry.js +0 -1
  552. package/dist/mint-components/p-a2b19c36.entry.js +0 -1
  553. package/dist/mint-components/p-a624b8d7.system.entry.js +0 -1
  554. package/dist/mint-components/p-a994df5c.system.entry.js +0 -1
  555. package/dist/mint-components/p-ab8f86d3.js +0 -1
  556. package/dist/mint-components/p-b1766f84.entry.js +0 -1
  557. package/dist/mint-components/p-b176c55c.entry.js +0 -9
  558. package/dist/mint-components/p-bb40479d.system.js +0 -1
  559. package/dist/mint-components/p-bc58ebb5.system.js +0 -1
  560. package/dist/mint-components/p-c2949a5b.entry.js +0 -1
  561. package/dist/mint-components/p-c2b561a0.system.entry.js +0 -1
  562. package/dist/mint-components/p-c712f1ca.system.entry.js +0 -1
  563. package/dist/mint-components/p-d3e114bb.system.entry.js +0 -1
  564. package/dist/mint-components/p-d4cc87d9.entry.js +0 -1
  565. package/dist/mint-components/p-d5bc4139.entry.js +0 -1
  566. package/dist/mint-components/p-dbe21db8.system.entry.js +0 -1
  567. package/dist/mint-components/p-e17c7323.system.entry.js +0 -1
  568. package/dist/mint-components/p-e3a7bab7.system.entry.js +0 -1
  569. package/dist/mint-components/p-e60132f2.system.entry.js +0 -1
  570. package/dist/mint-components/p-e7561cbf.entry.js +0 -1
  571. package/dist/mint-components/p-ebb79099.system.entry.js +0 -1
  572. package/dist/mint-components/p-ec7dd6f7.js +0 -1
  573. package/dist/mint-components/p-f209785c.entry.js +0 -1
  574. package/dist/mint-components/p-f221d418.entry.js +0 -1
  575. package/dist/mint-components/p-f298a1bc.system.entry.js +0 -1
  576. package/dist/mint-components/p-f69ecdf7.system.entry.js +0 -1
  577. package/dist/mint-components/p-f702ffef.js +0 -268
  578. package/dist/mint-components/p-fd4d90b9.system.js +0 -1
  579. package/dist/mint-components/p-fe887951.entry.js +0 -1
  580. package/dist/mint-components/p-ff932bfa.entry.js +0 -1
@@ -3,32 +3,32 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-b0129cd6.js');
6
- const stencilHooks_module = require('./stencil-hooks.module-87a1f4f7.js');
7
- require('./global-dd180d3b.js');
8
- require('./use-callback-e754042f.js');
9
- const index_module = require('./index.module-fb61a163.js');
10
- require('./extends-08099afd.js');
6
+ const stencilHooks_module = require('./stencil-hooks.module-ffd2b47a.js');
7
+ require('./global-7eb8c483.js');
8
+ require('./use-callback-5cddca5b.js');
9
+ const index_module = require('./index.module-c9cec1f7.js');
11
10
  require('./cjs-1066ec21.js');
12
11
  require('./mixins-338ca5f1.js');
13
- const JSS = require('./JSS-a75f3a9a.js');
14
- const GenericTableView = require('./GenericTableView-c2a781ea.js');
15
- const luxon = require('./luxon-59ca7d19.js');
12
+ const JSS = require('./JSS-c73206b7.js');
13
+ const GenericTableView = require('./GenericTableView-f98bcef7.js');
14
+ const luxon = require('./luxon-6b09461e.js');
15
+ const index$1 = require('./index-4933129a.js');
16
16
  require('./utils-8ef4fe4a.js');
17
- require('./sqm-text-span-view-ab4ad6ef.js');
18
- const sqmAssetCardView = require('./sqm-asset-card-view-07420209.js');
19
- const sqmHeroView = require('./sqm-hero-view-d5d46a36.js');
17
+ require('./sqm-text-span-view-b0c90c27.js');
18
+ const sqmAssetCardView = require('./sqm-asset-card-view-7e16757a.js');
19
+ const sqmHeroView = require('./sqm-hero-view-cc468ea3.js');
20
20
  const sqmLeaderboardRankView = require('./sqm-leaderboard-rank-view-35015d30.js');
21
- const sqmNavigationSidebarView = require('./sqm-navigation-sidebar-view-0ee28f65.js');
22
- const sqmNavigationSidebarItemView = require('./sqm-navigation-sidebar-item-view-bd8b4dfd.js');
23
- const sqmPortalEmailVerificationView = require('./sqm-portal-email-verification-view-423191eb.js');
24
- const sqmPortalFooterView = require('./sqm-portal-footer-view-8442fd90.js');
25
- const sqmPortalForgotPasswordView = require('./sqm-portal-forgot-password-view-97932f7a.js');
26
- const sqmPortalContainerView = require('./sqm-portal-container-view-2d11ed71.js');
27
- const sqmPortalProfileView = require('./sqm-portal-profile-view-b77382f6.js');
28
- const sqmPortalResetPasswordView = require('./sqm-portal-reset-password-view-042073ca.js');
29
- const sqmPortalVerifyEmailView = require('./sqm-portal-verify-email-view-cb3c9c2f.js');
30
- const ShadowViewAddon = require('./ShadowViewAddon-9b256c28.js');
31
- const sqmPortalSectionView = require('./sqm-portal-section-view-765aae4d.js');
21
+ const sqmNavigationSidebarView = require('./sqm-navigation-sidebar-view-3feda5f1.js');
22
+ const sqmNavigationSidebarItemView = require('./sqm-navigation-sidebar-item-view-1513be2d.js');
23
+ const sqmPortalEmailVerificationView = require('./sqm-portal-email-verification-view-3d511906.js');
24
+ const sqmPortalFooterView = require('./sqm-portal-footer-view-6be4691b.js');
25
+ const sqmPortalForgotPasswordView = require('./sqm-portal-forgot-password-view-aaa8dd17.js');
26
+ const sqmPortalContainerView = require('./sqm-portal-container-view-4a8432e9.js');
27
+ const sqmPortalProfileView = require('./sqm-portal-profile-view-09e80437.js');
28
+ const sqmPortalResetPasswordView = require('./sqm-portal-reset-password-view-035245e6.js');
29
+ const sqmPortalVerifyEmailView = require('./sqm-portal-verify-email-view-7014ca89.js');
30
+ const ShadowViewAddon = require('./ShadowViewAddon-0becaef1.js');
31
+ const sqmPortalSectionView = require('./sqm-portal-section-view-71a57cd9.js');
32
32
 
33
33
  /**
34
34
  * lodash (Custom Build) <https://lodash.com/>
@@ -3035,7 +3035,7 @@ const FormMessage = /*#__PURE__*/Object.freeze({
3035
3035
  FullStackSuccess: FullStackSuccess
3036
3036
  });
3037
3037
 
3038
- const EXCHANGE = index_module.dist.gql `
3038
+ const EXCHANGE = index$1.dist.gql `
3039
3039
  mutation exchange($exchangeRewardInput: ExchangeRewardInput!) {
3040
3040
  exchangeReward(exchangeRewardInput: $exchangeRewardInput) {
3041
3041
  reward {
@@ -9381,7 +9381,7 @@ const ReferralIframeReadme = "# sqm-referral-iframe\r\n\r\n\r\n\r\n<!-- Auto Gen
9381
9381
 
9382
9382
  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; loginPath: string; }; content?: { secondaryButton: any; messageSlot: any; emailLabel?: string; submitLabel?: string; }; }` | `undefined` |\r\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\r\n| `loginPath` | `login-path` | | `string` | `\"/login\"` |\r\n| `redirectPath` | `redirect-path` | The page that users are redirected to from the password reset email. | `string` | `\"/resetPassword\"` |\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";
9383
9383
 
9384
- 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; loginPath: string; }; refs?: { formRef: any; }; content?: { formData?: VNode; terms?: VNode; passwordField?: VNode; secondaryButton?: VNode; emailLabel?: string; passwordLabel?: string; submitLabel?: string; pageLabel?: string; confirmPasswordLabel: string; }; }` | `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| `loginPath` | `login-path` | | `string` | `\"/login\"` |\n| `nextPage` | `next-page` | | `string` | `\"/\"` |\n| `pageLabel` | `page-label` | | `string` | `\"Register\"` |\n| `passwordLabel` | `password-label` | | `string` | `\"Password\"` |\n| `redirectPath` | `redirect-path` | The page that users are redirected to from the verification email. | `string` | `\"/verifyEmail\"` |\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";
9384
+ 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; loginPath: string; }; refs?: { formRef: any; }; content?: { formData?: VNode; terms?: VNode; passwordField?: VNode; secondaryButton?: VNode; 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| `loginPath` | `login-path` | | `string` | `\"/login\"` |\r\n| `nextPage` | `next-page` | | `string` | `\"/\"` |\r\n| `pageLabel` | `page-label` | | `string` | `\"Register\"` |\r\n| `passwordLabel` | `password-label` | | `string` | `\"Password\"` |\r\n| `redirectPath` | `redirect-path` | The page that users are redirected to from the verification email. | `string` | `\"/verifyEmail\"` |\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";
9385
9385
 
9386
9386
  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";
9387
9387
 
@@ -9532,7 +9532,7 @@ const PortalTemplates = /*#__PURE__*/Object.freeze({
9532
9532
  });
9533
9533
 
9534
9534
  const ProgramMenu_stories = {
9535
- title: "Program Menu",
9535
+ title: "Components/Program Menu",
9536
9536
  };
9537
9537
  const OneProgram = createHookStory(() => {
9538
9538
  return (index.h("sqm-program-menu", null,
@@ -9601,7 +9601,7 @@ const PoweredByImg = /*#__PURE__*/Object.freeze({
9601
9601
  const scenario$e = "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";
9602
9602
 
9603
9603
  const PortalFooter_stories = {
9604
- title: "Portal Footer",
9604
+ title: "Components/Portal Footer",
9605
9605
  parameters: {
9606
9606
  scenario: scenario$e,
9607
9607
  },
@@ -9635,7 +9635,7 @@ const PortalFooter = /*#__PURE__*/Object.freeze({
9635
9635
  const scenario$f = "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 |";
9636
9636
 
9637
9637
  const Hero_stories = {
9638
- title: "Hero Layout",
9638
+ title: "Components/Hero Layout",
9639
9639
  parameters: {
9640
9640
  scenario: scenario$f,
9641
9641
  },
@@ -9817,7 +9817,7 @@ const Hero = /*#__PURE__*/Object.freeze({
9817
9817
  const scenario$g = "@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 | |";
9818
9818
 
9819
9819
  const ReferralIframe_stories = {
9820
- title: "Referral Iframe",
9820
+ title: "Components/Referral Iframe",
9821
9821
  parameters: {
9822
9822
  scenario: scenario$g,
9823
9823
  },
@@ -9853,7 +9853,7 @@ const ReferralIframe$1 = /*#__PURE__*/Object.freeze({
9853
9853
  const scenario$h = "@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";
9854
9854
 
9855
9855
  const NameFields_stories = {
9856
- title: "Name Fields",
9856
+ title: "Components/Name Fields",
9857
9857
  parameters: {
9858
9858
  scenario: scenario$h,
9859
9859
  },
@@ -9893,8 +9893,13 @@ const NameFields$1 = /*#__PURE__*/Object.freeze({
9893
9893
  NameFieldsWithErrors: NameFieldsWithErrors
9894
9894
  });
9895
9895
 
9896
+ const scenario$i = "@owner:sam\r\n@author:sam\r\nFeature: Checkbox Field\r\n\r\n Field to be used to be used as a checkbox during registration. A motivating use case is to use this component as a terms\r\n and conditions field, to sastisfy legal requirements that a customer might have for their end users.\r\n\r\n Background: A user is on the portal registration page\r\n Given a user is viewing the \"/register\"\r\n And \"/register\" contains the registration form\r\n And the registration form has the following fields\r\n | fields |\r\n | first name |\r\n | last name |\r\n | email |\r\n | password |\r\n | checkbox |\r\n\r\n @motivating\r\n Scenario: Checkbox is required by default\r\n Given the user is filling out the registration form\r\n And the name fields have valid input\r\n And the email field has valid input\r\n And the password field has valid input\r\n And the checkbox is not checked\r\n When they try to register\r\n Then the checkbox is highlighted in red\r\n And the error message says \"Must be checked\"\r\n\r\n @landmine\r\n Scenario: Checkboxes with the same \"checkbox-name\" are not submitted in the form data\r\n Given the register form has the following html\r\n \"\"\"\r\n <sqm-portal-register>\r\n <sqm-name-fields slot=\"formData\"></sqm-name-fields>\r\n <sqm-checkbox-field\r\n slot=\"formData\"\r\n checkbox-label=\"I am not a robot\"\r\n error-message=\"Cannot be a robot\"\r\n checkbox-name=\"isHuman\"\r\n ></sqm-checkbox-field>\r\n <div slot=\"terms\">\r\n <sqm-checkbox-field checkbox-name=\"isHuman\"></sqm-checkbox-field>\r\n </div>\r\n </sqm-portal-register>\r\n \"\"\"\r\n And the checkboxes are checked\r\n When the user tries to register\r\n Then the form is submitted\r\n But no field with key \"isHuman\" is included in the form data\r\n\r\n @motivating\r\n Scenario: Multiple checkboxes need different \"checkbox-name\" values\r\n Given the register form has the following html\r\n \"\"\"\r\n <sqm-portal-register>\r\n <sqm-name-fields slot=\"formData\"></sqm-name-fields>\r\n <sqm-checkbox-field\r\n slot=\"formData\"\r\n checkbox-label=\"I am not a robot\"\r\n error-message=\"Cannot be a robot\"\r\n checkbox-name=\"isHuman\"\r\n ></sqm-checkbox-field>\r\n <div slot=\"terms\">\r\n <sqm-checkbox-field checkbox-name=\"myCheckbox\"></sqm-checkbox-field>\r\n </div>\r\n </sqm-portal-register>\r\n \"\"\"\r\n And the checkboxes are not checked\r\n When the user tries to register\r\n Then both checkboxes are bordered in red\r\n And the checkboxes have different error messages\r\n When the user checks the boxes\r\n And tries to register\r\n Then the form is submitted\r\n And the following fields are included in the form data\r\n | feilds |\r\n | isHuman |\r\n | myCheckbox |\r\n\r\n @motivating\r\n Scenario: Checkboxes can be optional\r\n Given the register form has the following html\r\n \"\"\"\r\n <sqm-portal-register>\r\n <sqm-name-fields slot=\"formData\"></sqm-name-fields>\r\n <sqm-checkbox-field\r\n slot=\"formData\"\r\n checkbox-label=\"I am not a robot\"\r\n checkbox-optional=\"true\"\r\n checkbox-name=\"isHuman\"\r\n />\r\n </sqm-portal-register>\r\n \"\"\"\r\n And the checkbox is not checked\r\n When the user tries to register\r\n Then there is no error for the checkbox\r\n\r\n @minutae\r\n Scenario Outline: Validation error message is configurable\r\n The error message string is evaluated as an ICU string, but currently is provided no context\r\n Given the checkbox is required\r\n And the checkbox has prop \"error-message\" with <propValue>\r\n When the user tries to register\r\n But they havent checked the checkbox\r\n Then they see <errorMessage> below\r\n Examples:\r\n | propValue | errorMessage |\r\n | | Must be checked |\r\n | My Custom Message | My Custom Message |\r\n\r\n @motivating\r\n Scenario Outline: Checkbox text and link are configurable\r\n Given the checkbox has the following prop values\r\n | prop | value |\r\n | checkbox-label | <labelText> |\r\n | checkbox-label-link | <labelLink> |\r\n | checkbox-label-link-text | <labelLinkText> |\r\n When the user views the checkbox\r\n Then they see <text>\r\n And when they click <labelLinkText> they are redirected to <labelLink>\r\n #First example below is the defaults set by the controller\r\n Examples:\r\n | labelText | labelLinkText | labelLink | text |\r\n | By signing up you agree to the {labelLink} | Terms and Conditions | https://example.com | By signing up you agree to the Terms and Conditions |\r\n | Read our {labelLink} before registration | Terms of Service | https://example.com/terms | Read our Terms of Service before registration |\r\n | By registering you agree to our terms and conditions | N/A | N/A | By registering you agree to our terms and conditions |\r\n\r\n @motivating\r\n Scenario: The form field name attribute is configurable\r\n Given the checkbox has prop \"checkbox-name\" with value \"myCheckBox\"\r\n When the user checks the box\r\n And they register\r\n Then the boolean value of the checkbox is submitted under \"myCheckBox\" field\r\n\r\n @minutae\r\n Scenario Outline: The checkbox field component fails fast if a checkbox name isn't provided\r\n Given the checkbox <mayHave> prop \"checkbox-name\"\r\n And it <mayHavePropValue>\r\n When a user views the checkbox\r\n Then an alert with an error message is displayed in place of the checkbox\r\n And it has a details section\r\n When \"More details\" is clicked\r\n Then the following information is displayed\r\n | information |\r\n | component being used |\r\n | missing attribute(s) |\r\n Examples:\r\n | mayBeAnAttribute | mayHavePropValue |\r\n | doesn't have | N/A |\r\n | has | \"\" |\r\n | has | |";
9897
+
9896
9898
  const CheckboxField_stories = {
9897
9899
  title: "Components/Checkbox Field",
9900
+ parameters: {
9901
+ scenario: scenario$i,
9902
+ },
9898
9903
  };
9899
9904
  const defaultProps$a = {
9900
9905
  states: {
@@ -9947,8 +9952,11 @@ const Error$3 = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView
9947
9952
  const CustomError = createHookStory(() => (index.h(ShadowViewAddon.CheckboxFieldView, Object.assign({}, defaultProps$a, { states: {
9948
9953
  ...defaultProps$a.states,
9949
9954
  validationErrors: {
9950
- agree: "This checkbox must be checked to continue",
9955
+ agree: "Must be checked",
9951
9956
  },
9957
+ }, content: {
9958
+ ...defaultProps$a.content,
9959
+ errorMessage: "This checkbox must be checked to continue",
9952
9960
  } }))));
9953
9961
  const TermsAndConditions$1 = createHookStory(() => (index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultRegisterProps, {
9954
9962
  //@ts-ignore
@@ -9989,6 +9997,9 @@ const CheckboxField = /*#__PURE__*/Object.freeze({
9989
9997
 
9990
9998
  const UseCheckboxField_stories = {
9991
9999
  title: "Hooks / useCheckboxField",
10000
+ parameters: {
10001
+ scenario: scenario$i,
10002
+ },
9992
10003
  };
9993
10004
  function setupGraphQL$9() {
9994
10005
  const id = "testestest";
@@ -10031,13 +10042,19 @@ const MultipleCheckboxes = createHookStory(() => {
10031
10042
  index.h("sqm-name-fields", { slot: "formData" }),
10032
10043
  index.h("sqm-checkbox-field", { slot: "formData", "checkbox-label": "I am not a robot", "error-message": "Cannot be a robot", "checkbox-name": "isHuman" }),
10033
10044
  index.h("div", { slot: "terms" },
10034
- index.h("sqm-checkbox-field", null))));
10045
+ index.h("sqm-checkbox-field", { "checkbox-name": "otherCheckbox" }))));
10035
10046
  });
10036
10047
  const OptionalCheckboxes = createHookStory(() => {
10037
10048
  setupGraphQL$9();
10038
10049
  return (index.h("sqm-portal-register", null,
10039
10050
  index.h("sqm-name-fields", { slot: "formData" }),
10040
- index.h("sqm-checkbox-field", { slot: "formData", "checkbox-label": "I am not a robot", "checkbox-required": "false", "checkbox-name": "isHuman" }),
10051
+ index.h("sqm-checkbox-field", { slot: "formData", "checkbox-label": "I am not a robot", "checkbox-optional": "true", "checkbox-name": "isHuman" }),
10052
+ index.h("div", { slot: "terms" },
10053
+ index.h("sqm-checkbox-field", { "checkbox-name": "required" }))));
10054
+ });
10055
+ const MissingName = createHookStory(() => {
10056
+ setupGraphQL$9();
10057
+ return (index.h("sqm-portal-register", null,
10041
10058
  index.h("div", { slot: "terms" },
10042
10059
  index.h("sqm-checkbox-field", null))));
10043
10060
  });
@@ -10048,7 +10065,8 @@ const UseCheckboxField = /*#__PURE__*/Object.freeze({
10048
10065
  TermsAndConditions: TermsAndConditions$2,
10049
10066
  TermsAndConditionsWithLabel: TermsAndConditionsWithLabel,
10050
10067
  MultipleCheckboxes: MultipleCheckboxes,
10051
- OptionalCheckboxes: OptionalCheckboxes
10068
+ OptionalCheckboxes: OptionalCheckboxes,
10069
+ MissingName: MissingName
10052
10070
  });
10053
10071
 
10054
10072
  const DropdownField_stories = {
@@ -10137,21 +10155,208 @@ const Countries = createHookStory(() => {
10137
10155
  index.h("sl-menu-item", { value: "CA" }, "Canada"),
10138
10156
  index.h("sl-menu-item", { value: "US" }, "United States"),
10139
10157
  index.h("sl-menu-item", { value: "GB" }, "United Kingdom"))));
10158
+ });
10159
+ const MissingName$1 = createHookStory(() => {
10160
+ setupGraphQL$a();
10161
+ return (index.h("sqm-portal-register", null,
10162
+ index.h("sqm-dropdown-field", { slot: "formData", "dropdown-label": "Country" },
10163
+ index.h("sl-menu-item", { value: "CA" }, "Canada"),
10164
+ index.h("sl-menu-item", { value: "US" }, "United States"),
10165
+ index.h("sl-menu-item", { value: "GB" }, "United Kingdom"))));
10140
10166
  });
10141
10167
 
10142
10168
  const UseDropdownField = /*#__PURE__*/Object.freeze({
10143
10169
  __proto__: null,
10144
10170
  'default': UseDropdownField_stories,
10145
10171
  SelectOptions: SelectOptions,
10146
- Countries: Countries
10172
+ Countries: Countries,
10173
+ MissingName: MissingName$1
10147
10174
  });
10148
10175
 
10149
- const scenario$i = "@author:derek\r\n@owner:derek\r\nFeature: Reward Exchange List\r\n\r\n The Reward Exchange List gives end users the power to exchange their rewards for other rewards.\r\n It populates a list from the reward exchange rules set up on a given tenant.\r\n\r\n Background:\r\n Given a tenant with reward exchange rules\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no visible exchanges\r\n Given a user with no visible exchanges\r\n When they view the reward exchange\r\n Then no exchange options are displayed\r\n And they see an image of a present\r\n And \"Redeem Rewards\" in bold\r\n And \"Use your points to redeem rewards once they become available\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no visible exchanges\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward exchange\r\n Then they see the custom empty state\r\n\r\n @motivating\r\n @ui\r\n Scenario: A Loading Skeleton is displayed when the reward exchange rules are loading\r\n Given a user\r\n When they load the reward exchange list\r\n Then they see a loading Skeleton\r\n And it has 8 skeleton cards\r\n When the reward exchange rules have loaded\r\n Then the skeleton is replaced with reward exchange options\r\n\r\n @motivating\r\n Scenario: An error banner appears when the reward exchange list fails to load\r\n Given a user trying to view the reward exchange list\r\n But it fails to load\r\n Then an error banner is displayed\r\n And it displays \"Unable to load reward exchange list. Please try again\"\r\n\r\n @motivating\r\n @ui\r\n Scenario: The exchange progress bar progresses through the exchange process\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the process bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with green outline, white fill and number 1 in green |\r\n | Step 2 `Select` title in grey |\r\n | Step 2 circle with grey fill and number 2 in white |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | lines between all steps are greyed out |\r\n When they continue to the selection page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with green outline, white fill and number 2 in green |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | Green line between step 1 and 2 |\r\n | Grey line between step 2 and 3 |\r\n When they continue to the confirmation page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with green outline, white fill and number 3 in green |\r\n | Green line between all steps |\r\n When they continue to the redemption page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with white checkmark and green fill |\r\n | Green line between all steps |\r\n\r\n @motivating\r\n Scenario: Users must choose a reward exchange option to continue to the selection page\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the 'Continue' button is disabled\r\n When they select a reward exchange card\r\n Then the card is outlined in brand colour with a brand colour cirlcular check box icon in the top right\r\n And the continue button is no longer disabled\r\n When they click \"Continue\"\r\n Then they are brought to the selection page\r\n\r\n @motivating\r\n @ui\r\n Scenario: Reward exchange rule names and images are used in the reward exchange cards\r\n Given a tenant reward exchange rule\r\n And it has name \"My Visa Exchange Rule\"\r\n And it has an image\r\n When a user views the reward exchange list\r\n Then they see a exchange card with title \"My Visa Exchange Rule\"\r\n And the exchange image on the left hand side of the card\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange source values are displayed on reward exchange cards\r\n Given a <type> reward exchange rule\r\n When a user views the reward exchange list\r\n Then they see <text> under the name on the exchange option cards\r\n And the pretty values are localized to a user locale\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | the exchange source pretty value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_CREDIT_REWARD | the exchange source min pretty value to the source max pretty value |\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange cards can display customized error messages\r\n Given a reward exchange rule\r\n And it has <availabilityPredicate>\r\n And the reward exchange list has prop \"not-available-error\" with <value>\r\n When the user views the reward exchange list\r\n Then the card for the reward exchange rule is disabled\r\n And <message> is displayed\r\n Examples:\r\n | availabilityPredicate | value | message |\r\n | 'champion' in user.segments ? \"NOT_CHAMPION\" : true | {unavailableReasonCode, select, NOT_CHAMPION {Sorry must be a champion!} other {unavailableReasonCode} } | Sorry must be a champion! |\r\n | user.customFields.purchaseCount < 10 ? \"MORE_PURCHASE\" : true | {unavailableReasonCode, select, MORE_PURCHASE {Complete 10 purchases to unlock} other {unavailableReasonCode} } | Complete 10 purchases to unlock |\r\n\r\n @motivating\r\n Scenario: Exchange options are disabled if they put a user over the W9 limit\r\n Given a user who is approaching their W9 limit\r\n And a reward exchange rule\r\n And its destination reward has a US taxable value that would put the user over their limit\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a \"US Tax Limit\" error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n\r\n @motivating\r\n Scenario Outline: Exchange options are disabled if a users lacks enough credit to redeem\r\n Given a <type> reward exchange rule\r\n But the user lacks enough credit to exchange for it\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a <text> error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_CREDIT_REWARD | {prettySourceMinValue} required |\r\n\r\n @motivating\r\n Scenario: Users can go back to the Rewards page from the Select page\r\n Given a user viewing the Select page\r\n Then they see a \"Cancel\" text button\r\n And a \"Continue to confirmation\" brand colour button in the bottom right corner\r\n When they click \"Cancel\"\r\n Then they return to the Rewards page\r\n\r\n @motivating\r\n Scenario: Users can go back to the Select Page from the Confirm page\r\n Given a user viewing the Confirm page\r\n Then they see a \"Back\" text button\r\n And a \"Redeem\" brand colour button in the bottom right corner\r\n When they click \"Back\"\r\n Then they return to the Select Page\r\n\r\n @motivating\r\n Scenario: Reward rules with visibility predicates that evaluates to false are not shown\r\n Given a tenant reward exchange rule with visibility predicates that evaluates to false\r\n When a user views the reward exchange list\r\n Then they do not see the card for that reward exchange rule\r\n\r\n @motivating\r\n Scenario Outline: Users can choose their reward option for variable rewards on the Select page\r\n Given a <type> exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange description |\r\n | select list with all exchange options using pretty values, destination reward above source reward |\r\n Examples:\r\n | type |\r\n | STEPPED_FIXED_GLOBAL_REWARD |\r\n | VARIABLE_GLOBAL_REWARD |\r\n | VARIABLE_CREDIT_REWARD |\r\n\r\n @motivating\r\n Scenario: Users who selected a fixed exchange rule see exchange information on the Select page\r\n Given a \"FIXED_GLOBAL_REWARD\" exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange source pretty value displayed in brand colour |\r\n | exchange description |\r\n\r\n @motivating\r\n Scenario Outline: Users selection variable rewards can only select rewards they are eligible to exchange for\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see a drop down with all the reward exchange selections\r\n When they click on the drop down\r\n But they are not eligible for all of the exchanges options <dueToReason>\r\n Then the ineligble options are disabled\r\n And under the source value is <text>\r\n Examples:\r\n | type | dueToReason | text |\r\n | STEPPED_FIXED_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_CREDIT_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_CREDIT_REWARD | W9 | US Tax Limit |\r\n\r\n @motivating\r\n Scenario Outline: The Confirm page allows users to view their exchange before committing\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they select the exchange\r\n And they progress to Confirm page\r\n Then they see a row with title \"Reward\"\r\n And it contains the exchange name\r\n And it contains the exchange image\r\n And they <maySee> a row with title \"Reward Amount\"\r\n And it <mayContain> <amountTitle>\r\n And they see a row with title \"Cost to Redeem\"\r\n And it contains the source reward pretty value in bolded text\r\n Examples:\r\n | type | maySee | mayContain | amountTitle |\r\n | FIXED_GLOBAL_REWARD | don't | doesn't contain | N/A |\r\n | VARIABLE_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | VARIABLE_CREDIT_REWARD | see | contains | the pretty destination value |\r\n\r\n @motivating\r\n Scenario: An error banner is displayed if an error occurs during redemeption\r\n Given a user has selected a reward to exchange\r\n And is on the confirmation page\r\n When they click \"Redeem\"\r\n But an error occurs\r\n Then an error banner appears\r\n And it contains details about the error\r\n And the reward exchange is not completed\r\n\r\n @motivating\r\n Scenario: Confetti is displayed when a reward exchange succeeds\r\n Given a user has selected a reward to exchange\r\n And they are on the confirmation page\r\n When they click \"Redeem\"\r\n And the exchange is successful\r\n Then they see confetti centered on the success page\r\n And they see text describing what they exchanged for their new reward\r\n And they see a \"Done\" brand colour button\r\n When they click \"Done\"\r\n Then they see the Rewards page\r\n\r\n @motivating\r\n Scenario: Fuel tank codes are shown when a reward exchange succeeds\r\n Given a user has selected to exchange for a fuel tank reward\r\n When they complete the reward exchange\r\n And are on the success page\r\n Then they see a textbox with their fuel tank code\r\n And a clipboard icon\r\n When they click the clipboard icon\r\n Then their fuel tank code is copied to their clipboard\r\n\r\n @motivating\r\n Scenario Outline: Users can exchange for any type of reward\r\n Given a <type> reward exchange rule for a <reward>\r\n And a user who has enough source credit to exchange for the reward\r\n When they go through the exchange flow\r\n And exchange for their reward\r\n Then their credit is exchanged for the <reward>\r\n Examples:\r\n | type | reward |\r\n | FIXED_GLOBAL_REWARD | gift card |\r\n | FIXED_GLOBAL_REWARD | fuel tank code |\r\n | FIXED_GLOBAL_REWARD | discount |\r\n | FIXED_GLOBAL_REWARD | credit reward |\r\n | STEPPED_FIXED_GLOBAL_REWARD | gift card |\r\n | STEPPED_FIXED_GLOBAL_REWARD | discount |\r\n | STEPPED_FIXED_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_GLOBAL_REWARD | gift card |\r\n | VARIABLE_GLOBAL_REWARD | discount |\r\n | VARIABLE_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_CREDIT_REWARD | credit reward |";
10176
+ const scenario$j = "@author:derek\r\n@owner:derek\r\nFeature: Form Input Field\r\n\r\n This component is used as a custom registration field during registration. The field can be text,\r\n a date or phone number. A motivating use case is to ask for a users company name, this value would then be mapped\r\n through the Managed Identity Service and upserted on the user after registration.\r\n\r\n Background: A user exists and is viewing the hosted portal registration\r\n Given a user is viewing \"/register\"\r\n And \"/register\" contains the registration form\r\n And the registration form has a custom input field\r\n\r\n @motivating\r\n Scenario Outline: Input fields are required by default but can be optional\r\n Given the input has prop \"field-optional\" with <value>\r\n And the input is empty\r\n When the user tries to register\r\n Then the input <mayBe> highlighted in red\r\n And an error message <mayAppear> in red below\r\n And form submission <mayBe> blocked\r\n Examples:\r\n | value | mayBe | mayAppear |\r\n | false | is | appears |\r\n | | is | appears |\r\n | true | isn't | doesn't appear |\r\n\r\n @motivating\r\n Scenario: Input field labels are configurable\r\n Given the input has prop \"field-label\" with value \"My Custom Input\"\r\n When the user views the registration form\r\n Then they see the input field\r\n And it has label \"My Custom Input\" above the input\r\n\r\n @minutae\r\n Scenario Outline: The validation error message is configurable\r\n The error message string is evaluated as an ICU string, but currently is provided no context\r\n Given the input is required\r\n And it has prop \"error-message\" with <value>\r\n When the user tries to register\r\n But they haven't filled in the input\r\n Then they see <errorMessage> below\r\n Examples:\r\n | value | errorMessage |\r\n | | Cannot be empty |\r\n | My Custom Message | My Custom Message |\r\n\r\n @motivating\r\n Scenario: Form data attribute name is configurable\r\n Given the input has prop \"field-name\" with value \"myCustomField\"\r\n When the user types \"testing testing\" into the input\r\n And they register\r\n Then \"testing testing\" is submitted under \"myCustomField\" in the form data\r\n\r\n @motivating\r\n Scenario Outline: The input field is a text input by default\r\n Given the input <mayHave> prop \"field-type\" with <value>\r\n When the user views the input field\r\n Then it is a text input\r\n Examples:\r\n | mayHave | value |\r\n | has | text |\r\n | doesn't have | |\r\n\r\n @motivating\r\n Scenario: Date type inputs are supported\r\n Given the input has prop \"field-type\" \"date\"\r\n When the user views the input field\r\n Then they see \"mm/dd/yyyy\" as a placeholder\r\n And they see a calendar icon on the right\r\n When they start typing a date\r\n Then it maintains the \"mm/dd/yyyy\" format\r\n When they click the calendar icon\r\n Then a dropdown appears\r\n And they see a calendar\r\n When they select a date\r\n Then it is applied to the input\r\n\r\n @landmine\r\n Scenario: The clear text button in the date picker does not clear the date\r\n Due to an incompatibility between our shoelace version and the browser, the clear funtionality is not supported currently\r\n Given the input has prop \"field-type\" \"date\"\r\n And the user has entered a date\r\n When they click the calendar icon\r\n And click the 'clear' text button\r\n Then their selected date is not cleared\r\n\r\n @motivating\r\n Scenario: Phone number type inputs are supported\r\n Given the input has prop \"field-type\" with value \"tel\"\r\n When the user starts typing a phone number in the input\r\n Then it is formatted into the following form \"(XXX) XXX-XXXX\"\r\n When they pre-fix their phone number with a \"1\"\r\n Then it is formatted into the following form \"1 (XXX) XXX-XXXX\"\r\n\r\n @landmine\r\n Scenario: Telephone formatting is removed after 10 numbers\r\n Given a user using a phone number input field\r\n And they entered their 10 character phone number\r\n And it was not prefixed with a 1\r\n When they add another character\r\n Then the formatting is removed\r\n\r\n @landmine\r\n Scenario Outline: Input values are always recorded as strings in the form data\r\n Given the input has prop \"field-type\" with <value>\r\n And it has a \"field-name\"\r\n When the user inputs <formInput>\r\n And they register\r\n Then <formData> is recorded in the form data as a string\r\n Examples:\r\n | value | formInput | formData |\r\n | text | Hello there | Hello there |\r\n | date | 05/07/2021 | 2021-05-07 |\r\n | tel | (250) 234-9877 | (250) 234-9877 |\r\n\r\n @minutae\r\n Scenario Outline: The input field component fails fast if a field name isn't provided\r\n Given the input <mayHave> prop \"field-name\"\r\n And it <mayHavePropValue>\r\n When a user views the input\r\n Then an alert with an error message is displayed in place of the input\r\n And it has a details section\r\n When \"More details\" is clicked\r\n Then the following information is displayed\r\n | information |\r\n | component being used |\r\n | missing attribute(s) |\r\n Examples:\r\n | mayBeAnAttribute | mayHavePropValue |\r\n | doesn't have | N/A |\r\n | has | \"\" |\r\n | has | |";
10177
+
10178
+ const InputField_stories = {
10179
+ title: "Components/Input Field",
10180
+ parameters: {
10181
+ scenario: scenario$j,
10182
+ },
10183
+ };
10184
+ const defaultProps$c = {
10185
+ states: {
10186
+ validationErrors: {},
10187
+ },
10188
+ content: {
10189
+ fieldName: "field",
10190
+ fieldLabel: "My Custom Input",
10191
+ fieldType: "text",
10192
+ fieldOptional: true,
10193
+ errorMessage: "Cannot be empty",
10194
+ },
10195
+ };
10196
+ const defaultRegisterProps$1 = {
10197
+ states: {
10198
+ error: "",
10199
+ loading: false,
10200
+ confirmPassword: true,
10201
+ hideInputs: false,
10202
+ loginPath: "/login",
10203
+ },
10204
+ callbacks: {
10205
+ submit: () => console.log("Submit!"),
10206
+ inputFunction: () => { },
10207
+ },
10208
+ refs: {
10209
+ formRef: {},
10210
+ },
10211
+ content: { pageLabel: "Register", confirmPasswordLabel: "Confirm Password" },
10212
+ };
10213
+ const Default$d = () => index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c));
10214
+ const CustomLabel$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: { ...defaultProps$c.content, fieldLabel: "My Label" } })));
10215
+ const Error$5 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { states: {
10216
+ ...defaultProps$c.states,
10217
+ validationErrors: {
10218
+ field: "Cannot be empty",
10219
+ },
10220
+ } })));
10221
+ const CustomError$2 = () => (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
10222
+ ...defaultProps$c.content,
10223
+ errorMessage: "A value must be entered to continue",
10224
+ }, states: {
10225
+ ...defaultProps$c.states,
10226
+ validationErrors: {
10227
+ field: "Cannot be empty",
10228
+ },
10229
+ } })));
10230
+ const DateType = () => {
10231
+ return (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
10232
+ ...defaultProps$c.content,
10233
+ fieldLabel: "Date",
10234
+ fieldType: "date",
10235
+ } })));
10236
+ };
10237
+ const TelType = () => {
10238
+ return (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
10239
+ ...defaultProps$c.content,
10240
+ fieldLabel: "Phone Number",
10241
+ fieldType: "tel",
10242
+ } })));
10243
+ };
10244
+ const RegistrationField = () => (index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultRegisterProps$1, { content: {
10245
+ ...defaultRegisterProps$1.content,
10246
+ formData: index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c)),
10247
+ } })));
10248
+ const RegistrationFieldCustomLabel = () => (index.h(ShadowViewAddon.PortalRegisterView, Object.assign({}, defaultRegisterProps$1, { content: {
10249
+ ...defaultRegisterProps$1.content,
10250
+ formData: (index.h(ShadowViewAddon.InputFieldView, Object.assign({}, defaultProps$c, { content: {
10251
+ ...defaultProps$c.content,
10252
+ fieldLabel: "Data",
10253
+ } }))),
10254
+ } })));
10255
+
10256
+ const InputField = /*#__PURE__*/Object.freeze({
10257
+ __proto__: null,
10258
+ 'default': InputField_stories,
10259
+ Default: Default$d,
10260
+ CustomLabel: CustomLabel$2,
10261
+ Error: Error$5,
10262
+ CustomError: CustomError$2,
10263
+ DateType: DateType,
10264
+ TelType: TelType,
10265
+ RegistrationField: RegistrationField,
10266
+ RegistrationFieldCustomLabel: RegistrationFieldCustomLabel
10267
+ });
10268
+
10269
+ const UseInputField_stories = {
10270
+ title: "Hooks / useInputField",
10271
+ parameters: {
10272
+ scenario: scenario$j,
10273
+ },
10274
+ };
10275
+ function setupGraphQL$b() {
10276
+ const id = "testestest";
10277
+ const accountId = id;
10278
+ const programId = "sam-partner-test-2";
10279
+ //@ts-ignore
10280
+ window.widgetIdent = {
10281
+ tenantAlias: "test_a8b41jotf8a1v",
10282
+ appDomain: "https://staging.referralsaasquatch.com",
10283
+ programId,
10284
+ };
10285
+ stencilHooks_module.useEffect(() => {
10286
+ index_module.ae({
10287
+ accountId,
10288
+ id,
10289
+ jwt: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImFjY291bnRJZCI6InRlc3Rlc3Rlc3QiLCJpZCI6InRlc3Rlc3Rlc3QifX0.qYnU5hNeIj9C_G3NogfG7btgCPGZC7JRXY0MG6a63zs",
10290
+ });
10291
+ return () => {
10292
+ window.widgetIdent = undefined;
10293
+ index_module.ae(undefined);
10294
+ };
10295
+ }, []);
10296
+ return { id, accountId };
10297
+ }
10298
+ const FormData = createHookStory(() => {
10299
+ setupGraphQL$b();
10300
+ return (index.h("sqm-portal-register", null,
10301
+ index.h("div", { slot: "formData" },
10302
+ index.h("sqm-input-field", { "field-name": "myData" }))));
10303
+ });
10304
+ const FormDataWithLabel = createHookStory(() => {
10305
+ setupGraphQL$b();
10306
+ return (index.h("sqm-portal-register", null,
10307
+ index.h("div", { slot: "formData" },
10308
+ index.h("sqm-input-field", { "field-label": "Custom Label", "field-name": "myData" }))));
10309
+ });
10310
+ const MultipleInputs = createHookStory(() => {
10311
+ setupGraphQL$b();
10312
+ return (index.h("sqm-portal-register", null,
10313
+ index.h("sqm-name-fields", { slot: "formData" }),
10314
+ index.h("sqm-input-field", { slot: "formData", "field-label": "Field One", "field-name": "fieldOne" }),
10315
+ index.h("sqm-input-field", { slot: "formData", "field-label": "Field Two", "field-name": "fieldTwo" })));
10316
+ });
10317
+ const OptionalInputs = createHookStory(() => {
10318
+ setupGraphQL$b();
10319
+ return (index.h("sqm-portal-register", null,
10320
+ index.h("sqm-name-fields", { slot: "formData" }),
10321
+ index.h("sqm-input-field", { slot: "formData", "field-label": "Optional Field", "field-optional": "true", "field-name": "optionalField" })));
10322
+ });
10323
+ const DateType$1 = createHookStory(() => {
10324
+ setupGraphQL$b();
10325
+ return (index.h("sqm-portal-register", null,
10326
+ index.h("sqm-name-fields", { slot: "formData" }),
10327
+ index.h("sqm-input-field", { slot: "formData", "field-label": "Date", "field-name": "date", "field-type": "date" })));
10328
+ });
10329
+ const TelType$1 = createHookStory(() => {
10330
+ setupGraphQL$b();
10331
+ return (index.h("sqm-portal-register", null,
10332
+ index.h("sqm-name-fields", { slot: "formData" }),
10333
+ index.h("sqm-input-field", { slot: "formData", "field-label": "Phone Number", "field-name": "tel", "field-type": "tel" })));
10334
+ });
10335
+ const MissingName$2 = createHookStory(() => {
10336
+ setupGraphQL$b();
10337
+ return (index.h("sqm-portal-register", null,
10338
+ index.h("sqm-name-fields", { slot: "formData" }),
10339
+ index.h("sqm-input-field", { slot: "formData", "field-label": "Phone Number", "field-type": "tel" })));
10340
+ });
10341
+
10342
+ const UseInputField = /*#__PURE__*/Object.freeze({
10343
+ __proto__: null,
10344
+ 'default': UseInputField_stories,
10345
+ FormData: FormData,
10346
+ FormDataWithLabel: FormDataWithLabel,
10347
+ MultipleInputs: MultipleInputs,
10348
+ OptionalInputs: OptionalInputs,
10349
+ DateType: DateType$1,
10350
+ TelType: TelType$1,
10351
+ MissingName: MissingName$2
10352
+ });
10353
+
10354
+ const scenario$k = "@author:derek\r\n@owner:derek\r\nFeature: Reward Exchange List\r\n\r\n The Reward Exchange List gives end users the power to exchange their rewards for other rewards.\r\n It populates a list from the reward exchange rules set up on a given tenant.\r\n\r\n Background:\r\n Given a tenant with reward exchange rules\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no visible exchanges\r\n Given a user with no visible exchanges\r\n When they view the reward exchange\r\n Then no exchange options are displayed\r\n And they see an image of a present\r\n And \"Redeem Rewards\" in bold\r\n And \"Use your points to redeem rewards once they become available\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no visible exchanges\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward exchange\r\n Then they see the custom empty state\r\n\r\n @motivating\r\n @ui\r\n Scenario: A Loading Skeleton is displayed when the reward exchange rules are loading\r\n Given a user\r\n When they load the reward exchange list\r\n Then they see a loading Skeleton\r\n And it has 8 skeleton cards\r\n When the reward exchange rules have loaded\r\n Then the skeleton is replaced with reward exchange options\r\n\r\n @motivating\r\n Scenario: An error banner appears when the reward exchange list fails to load\r\n Given a user trying to view the reward exchange list\r\n But it fails to load\r\n Then an error banner is displayed\r\n And it displays \"Unable to load reward exchange list. Please try again\"\r\n\r\n @motivating\r\n @ui\r\n Scenario: The exchange progress bar progresses through the exchange process\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the process bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with green outline, white fill and number 1 in green |\r\n | Step 2 `Select` title in grey |\r\n | Step 2 circle with grey fill and number 2 in white |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | lines between all steps are greyed out |\r\n When they continue to the selection page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with green outline, white fill and number 2 in green |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | Green line between step 1 and 2 |\r\n | Grey line between step 2 and 3 |\r\n When they continue to the confirmation page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with green outline, white fill and number 3 in green |\r\n | Green line between all steps |\r\n When they continue to the redemption page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with white checkmark and green fill |\r\n | Green line between all steps |\r\n\r\n @motivating\r\n Scenario: Users must choose a reward exchange option to continue to the selection page\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the 'Continue' button is disabled\r\n When they select a reward exchange card\r\n Then the card is outlined in brand colour with a brand colour cirlcular check box icon in the top right\r\n And the continue button is no longer disabled\r\n When they click \"Continue\"\r\n Then they are brought to the selection page\r\n\r\n @motivating\r\n @ui\r\n Scenario: Reward exchange rule names and images are used in the reward exchange cards\r\n Given a tenant reward exchange rule\r\n And it has name \"My Visa Exchange Rule\"\r\n And it has an image\r\n When a user views the reward exchange list\r\n Then they see a exchange card with title \"My Visa Exchange Rule\"\r\n And the exchange image on the left hand side of the card\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange source values are displayed on reward exchange cards\r\n Given a <type> reward exchange rule\r\n When a user views the reward exchange list\r\n Then they see <text> under the name on the exchange option cards\r\n And the pretty values are localized to a user locale\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | the exchange source pretty value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_CREDIT_REWARD | the exchange source min pretty value to the source max pretty value |\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange cards can display customized error messages\r\n Given a reward exchange rule\r\n And it has <availabilityPredicate>\r\n And the reward exchange list has prop \"not-available-error\" with <value>\r\n When the user views the reward exchange list\r\n Then the card for the reward exchange rule is disabled\r\n And <message> is displayed\r\n Examples:\r\n | availabilityPredicate | value | message |\r\n | 'champion' in user.segments ? \"NOT_CHAMPION\" : true | {unavailableReasonCode, select, NOT_CHAMPION {Sorry must be a champion!} other {unavailableReasonCode} } | Sorry must be a champion! |\r\n | user.customFields.purchaseCount < 10 ? \"MORE_PURCHASE\" : true | {unavailableReasonCode, select, MORE_PURCHASE {Complete 10 purchases to unlock} other {unavailableReasonCode} } | Complete 10 purchases to unlock |\r\n\r\n @motivating\r\n Scenario: Exchange options are disabled if they put a user over the W9 limit\r\n Given a user who is approaching their W9 limit\r\n And a reward exchange rule\r\n And its destination reward has a US taxable value that would put the user over their limit\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a \"US Tax Limit\" error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n\r\n @motivating\r\n Scenario Outline: Exchange options are disabled if a users lacks enough credit to redeem\r\n Given a <type> reward exchange rule\r\n But the user lacks enough credit to exchange for it\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a <text> error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_CREDIT_REWARD | {prettySourceMinValue} required |\r\n\r\n @motivating\r\n Scenario: Users can go back to the Rewards page from the Select page\r\n Given a user viewing the Select page\r\n Then they see a \"Cancel\" text button\r\n And a \"Continue to confirmation\" brand colour button in the bottom right corner\r\n When they click \"Cancel\"\r\n Then they return to the Rewards page\r\n\r\n @motivating\r\n Scenario: Users can go back to the Select Page from the Confirm page\r\n Given a user viewing the Confirm page\r\n Then they see a \"Back\" text button\r\n And a \"Redeem\" brand colour button in the bottom right corner\r\n When they click \"Back\"\r\n Then they return to the Select Page\r\n\r\n @motivating\r\n Scenario: Reward rules with visibility predicates that evaluates to false are not shown\r\n Given a tenant reward exchange rule with visibility predicates that evaluates to false\r\n When a user views the reward exchange list\r\n Then they do not see the card for that reward exchange rule\r\n\r\n @motivating\r\n Scenario Outline: Users can choose their reward option for variable rewards on the Select page\r\n Given a <type> exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange description |\r\n | select list with all exchange options using pretty values, destination reward above source reward |\r\n Examples:\r\n | type |\r\n | STEPPED_FIXED_GLOBAL_REWARD |\r\n | VARIABLE_GLOBAL_REWARD |\r\n | VARIABLE_CREDIT_REWARD |\r\n\r\n @motivating\r\n Scenario: Users who selected a fixed exchange rule see exchange information on the Select page\r\n Given a \"FIXED_GLOBAL_REWARD\" exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange source pretty value displayed in brand colour |\r\n | exchange description |\r\n\r\n @motivating\r\n Scenario Outline: Users selection variable rewards can only select rewards they are eligible to exchange for\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see a drop down with all the reward exchange selections\r\n When they click on the drop down\r\n But they are not eligible for all of the exchanges options <dueToReason>\r\n Then the ineligble options are disabled\r\n And under the source value is <text>\r\n Examples:\r\n | type | dueToReason | text |\r\n | STEPPED_FIXED_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_CREDIT_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_CREDIT_REWARD | W9 | US Tax Limit |\r\n\r\n @motivating\r\n Scenario Outline: The Confirm page allows users to view their exchange before committing\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they select the exchange\r\n And they progress to Confirm page\r\n Then they see a row with title \"Reward\"\r\n And it contains the exchange name\r\n And it contains the exchange image\r\n And they <maySee> a row with title \"Reward Amount\"\r\n And it <mayContain> <amountTitle>\r\n And they see a row with title \"Cost to Redeem\"\r\n And it contains the source reward pretty value in bolded text\r\n Examples:\r\n | type | maySee | mayContain | amountTitle |\r\n | FIXED_GLOBAL_REWARD | don't | doesn't contain | N/A |\r\n | VARIABLE_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | VARIABLE_CREDIT_REWARD | see | contains | the pretty destination value |\r\n\r\n @motivating\r\n Scenario: An error banner is displayed if an error occurs during redemeption\r\n Given a user has selected a reward to exchange\r\n And is on the confirmation page\r\n When they click \"Redeem\"\r\n But an error occurs\r\n Then an error banner appears\r\n And it contains details about the error\r\n And the reward exchange is not completed\r\n\r\n @motivating\r\n Scenario: Confetti is displayed when a reward exchange succeeds\r\n Given a user has selected a reward to exchange\r\n And they are on the confirmation page\r\n When they click \"Redeem\"\r\n And the exchange is successful\r\n Then they see confetti centered on the success page\r\n And they see text describing what they exchanged for their new reward\r\n And they see a \"Done\" brand colour button\r\n When they click \"Done\"\r\n Then they see the Rewards page\r\n\r\n @motivating\r\n Scenario: Fuel tank codes are shown when a reward exchange succeeds\r\n Given a user has selected to exchange for a fuel tank reward\r\n When they complete the reward exchange\r\n And are on the success page\r\n Then they see a textbox with their fuel tank code\r\n And a clipboard icon\r\n When they click the clipboard icon\r\n Then their fuel tank code is copied to their clipboard\r\n\r\n @motivating\r\n Scenario Outline: Users can exchange for any type of reward\r\n Given a <type> reward exchange rule for a <reward>\r\n And a user who has enough source credit to exchange for the reward\r\n When they go through the exchange flow\r\n And exchange for their reward\r\n Then their credit is exchanged for the <reward>\r\n Examples:\r\n | type | reward |\r\n | FIXED_GLOBAL_REWARD | gift card |\r\n | FIXED_GLOBAL_REWARD | fuel tank code |\r\n | FIXED_GLOBAL_REWARD | discount |\r\n | FIXED_GLOBAL_REWARD | credit reward |\r\n | STEPPED_FIXED_GLOBAL_REWARD | gift card |\r\n | STEPPED_FIXED_GLOBAL_REWARD | discount |\r\n | STEPPED_FIXED_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_GLOBAL_REWARD | gift card |\r\n | VARIABLE_GLOBAL_REWARD | discount |\r\n | VARIABLE_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_CREDIT_REWARD | credit reward |";
10150
10355
 
10151
10356
  const RewardExchangeList_stories = {
10152
10357
  title: "Components/Reward Exchange List",
10153
10358
  parameters: {
10154
- scenario: scenario$i,
10359
+ scenario: scenario$k,
10155
10360
  },
10156
10361
  };
10157
10362
  const StoryBase = (props) => () => {
@@ -10199,12 +10404,12 @@ const RewardExchangeList = /*#__PURE__*/Object.freeze({
10199
10404
  Empty: Empty$2
10200
10405
  });
10201
10406
 
10202
- const scenario$j = "@author:derek\r\n@owner:derek\r\nFeature: Program Explainer\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The program explainer wraps program explainer steps and aligns them\r\n Given a program explainer component\r\n And it has <number> program explainer steps as components\r\n When a user views the program explainer\r\n Then they see <number> steps aligned horizontally\r\n And they have equal height/width\r\n And equal padding in between\r\n When they are viewed on a screen smaller than 500px\r\n Then the steps stack vertically with equal padding in between\r\n And they have equal width\r\n But height may vary\r\n Examples:\r\n | number |\r\n | 2 |\r\n | 3 |\r\n | 4 |\r\n\r\n @motivating\r\n @ui\r\n Scenario: The program explainer displays a section header\r\n Given a program explainer step with props\r\n | prop | value |\r\n | header | My Header |\r\n And it has program explainer steps as children\r\n When a user views the program explainer\r\n Then they see \"My Header\" centered above the explainer steps\r\n\r\n @motivating\r\n @ui\r\n Scenario: Colours are customizable\r\n Given a program explainer with props\r\n | prop | value |\r\n | text-color | purple |\r\n | background-color | grey |\r\n When a user views the program explainer\r\n Then the header is purple\r\n And the background between steos is grey\r\n";
10407
+ const scenario$l = "@author:derek\r\n@owner:derek\r\nFeature: Program Explainer\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The program explainer wraps program explainer steps and aligns them\r\n Given a program explainer component\r\n And it has <number> program explainer steps as components\r\n When a user views the program explainer\r\n Then they see <number> steps aligned horizontally\r\n And they have equal height/width\r\n And equal padding in between\r\n When they are viewed on a screen smaller than 500px\r\n Then the steps stack vertically with equal padding in between\r\n And they have equal width\r\n But height may vary\r\n Examples:\r\n | number |\r\n | 2 |\r\n | 3 |\r\n | 4 |\r\n\r\n @motivating\r\n @ui\r\n Scenario: The program explainer displays a section header\r\n Given a program explainer step with props\r\n | prop | value |\r\n | header | My Header |\r\n And it has program explainer steps as children\r\n When a user views the program explainer\r\n Then they see \"My Header\" centered above the explainer steps\r\n\r\n @motivating\r\n @ui\r\n Scenario: Colours are customizable\r\n Given a program explainer with props\r\n | prop | value |\r\n | text-color | purple |\r\n | background-color | grey |\r\n When a user views the program explainer\r\n Then the header is purple\r\n And the background between steos is grey\r\n";
10203
10408
 
10204
10409
  const ProgramExplainer_stories = {
10205
10410
  title: "Components/Program Explainer",
10206
10411
  parameters: {
10207
- scenario: scenario$j,
10412
+ scenario: scenario$l,
10208
10413
  },
10209
10414
  };
10210
10415
  const OneStep = () => {
@@ -10260,12 +10465,12 @@ const ProgramExplainer = /*#__PURE__*/Object.freeze({
10260
10465
  ProgramExplainerGeneric: ProgramExplainerGeneric
10261
10466
  });
10262
10467
 
10263
- const scenario$k = "@author:derek\r\n@owner:derek\r\nFeature: Program Explainer Step\r\n\r\n @motivating\r\n @ui\r\n Scenario: The program explainer step displays a icon, header and description\r\n Given a program explainer step with props\r\n | prop | value |\r\n | header | My Header |\r\n | description | My program explainer description |\r\n | icon | person-plus-fill |\r\n When a user views the explainer step\r\n Then they see an person icon with a + in the top left hand corner\r\n And the icon is weight 300 brand colour\r\n And below they see \"My Header\" in large bold font\r\n And below they see \"My program explainer description\" in medium font\r\n And the step background colour is weight 50 brand colour\r\n\r\n @motivating\r\n @ui\r\n Scenario: The program explainer can display an image in place of an icon\r\n Given a program explainer\r\n And it has an \"image-url\" prop with a value of a valid url to an image\r\n When a user views the explainer step\r\n Then the image is displayed in place of an incon in the top left hand corner\r\n\r\n @motivating\r\n @ui\r\n Scenario: Colours are customizable\r\n Given a program explainer step with props\r\n | prop | value |\r\n | text-color | purple |\r\n | background-color | grey |\r\n When a user views the explainer step\r\n Then they see the step background is grey\r\n And the header text is purple\r\n And the description text is purple\r\n";
10468
+ const scenario$m = "@author:derek\r\n@owner:derek\r\nFeature: Program Explainer Step\r\n\r\n @motivating\r\n @ui\r\n Scenario: The program explainer step displays a icon, header and description\r\n Given a program explainer step with props\r\n | prop | value |\r\n | header | My Header |\r\n | description | My program explainer description |\r\n | icon | person-plus-fill |\r\n When a user views the explainer step\r\n Then they see an person icon with a + in the top left hand corner\r\n And the icon is weight 300 brand colour\r\n And below they see \"My Header\" in large bold font\r\n And below they see \"My program explainer description\" in medium font\r\n And the step background colour is weight 50 brand colour\r\n\r\n @motivating\r\n @ui\r\n Scenario: The program explainer can display an image in place of an icon\r\n Given a program explainer\r\n And it has an \"image-url\" prop with a value of a valid url to an image\r\n When a user views the explainer step\r\n Then the image is displayed in place of an incon in the top left hand corner\r\n\r\n @motivating\r\n @ui\r\n Scenario: Colours are customizable\r\n Given a program explainer step with props\r\n | prop | value |\r\n | text-color | purple |\r\n | background-color | grey |\r\n When a user views the explainer step\r\n Then they see the step background is grey\r\n And the header text is purple\r\n And the description text is purple\r\n";
10264
10469
 
10265
10470
  const ProgramExplainerStep_stories = {
10266
10471
  title: "Components/Program Explainer Step",
10267
10472
  parameters: {
10268
- scenario: scenario$k,
10473
+ scenario: scenario$m,
10269
10474
  },
10270
10475
  };
10271
10476
  const ProgramExplainerStep = () => {
@@ -10282,12 +10487,12 @@ const ProgramExplainerStep$1 = /*#__PURE__*/Object.freeze({
10282
10487
  ProgramExplainerStepCustom: ProgramExplainerStepCustom
10283
10488
  });
10284
10489
 
10285
- const scenario$l = "@author:derek\r\n@owner:logan\r\nFeature: Brand Configuration\r\n\r\n\t@motivating\r\n\tScenario: The brand components creates a colour pallet from a brand colour and applies it to children\r\n\t\tGiven a brand component with \"brand-color\" \"#4225c4\"\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the following css variables are set\r\n\t\t\t| variable | value |\r\n\t\t\t| --sl-color-primary-50 | hsla(251, 68%, 95%, 1) |\r\n\t\t\t| --sl-color-primary-100 | hsla(251, 68%, 86%, 1) |\r\n\t\t\t| --sl-color-primary-200 | hsla(251, 68%, 76%, 1) |\r\n\t\t\t| --sl-color-primary-300 | hsla(251, 68%, 66%, 1) |\r\n\t\t\t| --sl-color-primary-400 | hsla(251, 68%, 56%, 1) |\r\n\t\t\t| --sl-color-primary-500 | hsla(251, 68%, 46%, 1) |\r\n\t\t\t| --sl-color-primary-600 | hsla(251, 68%, 39%, 1) |\r\n\t\t\t| --sl-color-primary-700 | hsla(251, 68%, 32%, 1) |\r\n\t\t\t| --sl-color-primary-800 | hsla(251, 68%, 25%, 1) |\r\n\t\t\t| --sl-color-primary-900 | hsla(251, 68%, 18%, 1) |\r\n\t\t\t| --sl-color-primary-950 | hsla(251, 68%, 15%, 1) |\r\n\t\t\t| --sl-focus-ring-color-primary | var(--sl-color-primary-100) |\r\n\t\t\t| --sl-input-border-color-focus | var(--sl-color-primary-500) |\r\n\t\t\t| --sl-color-primary-hue | var(--sl-color-primary-500) |\r\n\t\tAnd they are applied to the children components\r\n\t\tBut they are not applied to any components outside of the brand component\r\n\t\tAnd they are not applied to any vanilla components\r\n\r\n\t@minutae\r\n\tScenario Outline: The brand colour can be hex, HSL or rgb\r\n\t\tGiven a brand component with \"brand-color\" <colour>\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the colour is used to create a brand palete\r\n\t\tAnd it is applied to the children components\r\n\t\tExamples:\r\n\t\t\t| colour |\r\n\t\t\t| #4225c4 |\r\n\t\t\t| rgb(66, 37, 196) |\r\n\t\t\t| hsl(251, 68%, 46%) |\r\n\t\t\t| hsla(251, 68%, 46%, 1) |\r\n\r\n\t@motivating\r\n\tScenario: The brand component can apply a brand font to children components\r\n\t\tGiven a brand component with \"brand-font\" \"Nunito Sans\"\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the following css variables are set\r\n\t\t\t| variable | value |\r\n\t\t\t| --sl-font-sans | \"Nunito Sans\", arial |\r\n\t\t\t| --sl-input-font-family | \"Nunito Sans\", arial |\r\n\t\t\t| --sl-tooltip-font-family | \"Nunito Sans\", arial |\r\n\t\t\t| font-family | \"Nunito Sans\", arial |\r\n\t\tAnd they are applied to the children components\r\n\t\tAnd the children component's text is \"Nunito Sans\"";
10490
+ const scenario$n = "@author:derek\r\n@owner:logan\r\nFeature: Brand Configuration\r\n\r\n\t@motivating\r\n\tScenario: The brand components creates a colour pallet from a brand colour and applies it to children\r\n\t\tGiven a brand component with \"brand-color\" \"#4225c4\"\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the following css variables are set\r\n\t\t\t| variable | value |\r\n\t\t\t| --sl-color-primary-50 | hsla(251, 68%, 95%, 1) |\r\n\t\t\t| --sl-color-primary-100 | hsla(251, 68%, 86%, 1) |\r\n\t\t\t| --sl-color-primary-200 | hsla(251, 68%, 76%, 1) |\r\n\t\t\t| --sl-color-primary-300 | hsla(251, 68%, 66%, 1) |\r\n\t\t\t| --sl-color-primary-400 | hsla(251, 68%, 56%, 1) |\r\n\t\t\t| --sl-color-primary-500 | hsla(251, 68%, 46%, 1) |\r\n\t\t\t| --sl-color-primary-600 | hsla(251, 68%, 39%, 1) |\r\n\t\t\t| --sl-color-primary-700 | hsla(251, 68%, 32%, 1) |\r\n\t\t\t| --sl-color-primary-800 | hsla(251, 68%, 25%, 1) |\r\n\t\t\t| --sl-color-primary-900 | hsla(251, 68%, 18%, 1) |\r\n\t\t\t| --sl-color-primary-950 | hsla(251, 68%, 15%, 1) |\r\n\t\t\t| --sl-focus-ring-color-primary | var(--sl-color-primary-100) |\r\n\t\t\t| --sl-input-border-color-focus | var(--sl-color-primary-500) |\r\n\t\t\t| --sl-color-primary-hue | var(--sl-color-primary-500) |\r\n\t\tAnd they are applied to the children components\r\n\t\tBut they are not applied to any components outside of the brand component\r\n\t\tAnd they are not applied to any vanilla components\r\n\r\n\t@minutae\r\n\tScenario Outline: The brand colour can be hex, HSL or rgb\r\n\t\tGiven a brand component with \"brand-color\" <colour>\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the colour is used to create a brand palete\r\n\t\tAnd it is applied to the children components\r\n\t\tExamples:\r\n\t\t\t| colour |\r\n\t\t\t| #4225c4 |\r\n\t\t\t| rgb(66, 37, 196) |\r\n\t\t\t| hsl(251, 68%, 46%) |\r\n\t\t\t| hsla(251, 68%, 46%, 1) |\r\n\r\n\t@motivating\r\n\tScenario: The brand component can apply a brand font to children components\r\n\t\tGiven a brand component with \"brand-font\" \"Nunito Sans\"\r\n\t\tAnd it is wrapping several mint components\r\n\t\tWhen a user views the children components\r\n\t\tThen the following css variables are set\r\n\t\t\t| variable | value |\r\n\t\t\t| --sl-font-sans | \"Nunito Sans\", arial |\r\n\t\t\t| --sl-input-font-family | \"Nunito Sans\", arial |\r\n\t\t\t| --sl-tooltip-font-family | \"Nunito Sans\", arial |\r\n\t\t\t| font-family | \"Nunito Sans\", arial |\r\n\t\tAnd they are applied to the children components\r\n\t\tAnd the children component's text is \"Nunito Sans\"";
10286
10491
 
10287
10492
  const SqmBrand_stories = {
10288
10493
  title: "Components/Brand",
10289
10494
  parameters: {
10290
- scenario: scenario$l,
10495
+ scenario: scenario$n,
10291
10496
  },
10292
10497
  };
10293
10498
  const SampleComponents = () => (index.h("div", { style: { padding: "10px", border: "5px solid #EEE" } },
@@ -10388,12 +10593,12 @@ const BrandStories = /*#__PURE__*/Object.freeze({
10388
10593
  Fonts: Fonts
10389
10594
  });
10390
10595
 
10391
- const scenario$m = "@author:kutay\r\n@owner:kutay\r\nFeature: Card Feed\r\n\r\n\tThe Card Feed component displays Task Card components in a grid layout.\r\n\r\n\tBackground: A user on the portal is viewing the widget\r\n\t\tGiven a user viewing the Card Feed component\r\n\r\n\t@motivating\r\n\tScenario: The Card Feed component displays Task Cards given as children slots\r\n\t\tGiven a Card Feed component\r\n\t\tAnd it is wrapping a number of task cards as children\r\n\t\tWhen the user views the Card Feed\r\n\t\tThen the task cards are displayed in a masonry layout\r\n\t\tWhen the card feed with grows or shrinks in width\r\n\t\tThen the number of columns adjust to the given width\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The Card Feed component can have a maximum width\r\n\t\tGiven a Card Feed component\r\n\t\tAnd it is wrapping a number of task cards as children\r\n\t\tAnd has prop \"width\" has a provided <value>\r\n\t\tThen the task cards are displayed in a masonry layout\r\n\t\tWhen the card feed with grows or shrinks in width\r\n\t\tThen the number of columns adjust to the given width\r\n\t\tAnd the task cards do not exceed <width>\r\n\t\tExamples:\r\n\t\t\t| value | width |\r\n\t\t\t| | 347px |\r\n\t\t\t| 200 | 200px |\r\n\t\t\t| 400 | 400px |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The Card Feed component gap between task cards can be customized\r\n\t\tGiven a Card Feed component\r\n\t\tAnd it is wrapping a number of task cards as children\r\n\t\tAnd has prop \"gap\" has a provided <value>\r\n\t\tThen the task cards are displayed in a masonry layout\r\n\t\tAnd the gap between the columns is the <gap>\r\n\t\tExamples:\r\n\t\t\t| value | gap |\r\n\t\t\t| | 24px |\r\n\t\t\t| 20 | 20px |\r\n\t\t\t| 50 | 50px |";
10596
+ const scenario$o = "@author:kutay\r\n@owner:kutay\r\nFeature: Card Feed\r\n\r\n\tThe Card Feed component displays Task Card components in a grid layout.\r\n\r\n\tBackground: A user on the portal is viewing the widget\r\n\t\tGiven a user viewing the Card Feed component\r\n\r\n\t@motivating\r\n\tScenario: The Card Feed component displays Task Cards given as children slots\r\n\t\tGiven a Card Feed component\r\n\t\tAnd it is wrapping a number of task cards as children\r\n\t\tWhen the user views the Card Feed\r\n\t\tThen the task cards are displayed in a masonry layout\r\n\t\tWhen the card feed with grows or shrinks in width\r\n\t\tThen the number of columns adjust to the given width\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The Card Feed component can have a maximum width\r\n\t\tGiven a Card Feed component\r\n\t\tAnd it is wrapping a number of task cards as children\r\n\t\tAnd has prop \"width\" has a provided <value>\r\n\t\tThen the task cards are displayed in a masonry layout\r\n\t\tWhen the card feed with grows or shrinks in width\r\n\t\tThen the number of columns adjust to the given width\r\n\t\tAnd the task cards do not exceed <width>\r\n\t\tExamples:\r\n\t\t\t| value | width |\r\n\t\t\t| | 347px |\r\n\t\t\t| 200 | 200px |\r\n\t\t\t| 400 | 400px |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The Card Feed component gap between task cards can be customized\r\n\t\tGiven a Card Feed component\r\n\t\tAnd it is wrapping a number of task cards as children\r\n\t\tAnd has prop \"gap\" has a provided <value>\r\n\t\tThen the task cards are displayed in a masonry layout\r\n\t\tAnd the gap between the columns is the <gap>\r\n\t\tExamples:\r\n\t\t\t| value | gap |\r\n\t\t\t| | 24px |\r\n\t\t\t| 20 | 20px |\r\n\t\t\t| 50 | 50px |";
10392
10597
 
10393
10598
  const CardFeed_stories = {
10394
10599
  title: "Components/Card Feed",
10395
10600
  parameters: {
10396
- scenario: scenario$m,
10601
+ scenario: scenario$o,
10397
10602
  },
10398
10603
  };
10399
10604
  const oneAction$1 = {
@@ -10630,12 +10835,12 @@ const CardFeed = /*#__PURE__*/Object.freeze({
10630
10835
  CardFeedGeneric: CardFeedGeneric
10631
10836
  });
10632
10837
 
10633
- const scenario$n = "@author:kutay\r\n@owner:noah\r\nFeature: Portal Container\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Horizontal content overflows, but does not stretch\r\n\t\tGiven there are two element in the container\r\n\t\tAnd the first is small\r\n\t\tAnd the second would stretch the container wider than it's parent\r\n\t\tThen the second one is clipped\r\n\t\tAnd the first one doesn't stretch\r\n\r\n\t@landmine\r\n\t@ui\r\n\tScenario: `max-width` is required for displaying as a row\r\n\t\tGiven I have `direction` to \"row\"\r\n\t\tAnd I have not set a `max-width`\r\n\t\tThen it displays as a column\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Content padding can be customized\r\n\t\tGiven prop \"padding\" has <value>\r\n\t\tThen <padding> is applied to content\r\n\r\n\t\tExamples:\r\n\t\t\t| value | padding |\r\n\t\t\t| none | no padding |\r\n\t\t\t| xxx-small | xxx-small |\r\n\t\t\t| xx-small | xx-small |\r\n\t\t\t| x-small | x-small |\r\n\t\t\t| small | small |\r\n\t\t\t| medium | medium |\r\n\t\t\t| large | large |\r\n\t\t\t| x-large | x-large |\r\n\t\t\t| xx-large | xx-large |\r\n\t\t\t| xxx-large | xxx-large |\r\n\t\t\t| xxxx-large | xxxx-large |\r\n\t\t\t| N/A | no padding |\r\n\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Gap between content elements can be customized\r\n\t\tGiven prop \"gap\" has <value>\r\n\t\tThen <gap> is applied to elements between content\r\n\r\n\t\tExamples:\r\n\t\t\t| value | gap |\r\n\t\t\t| none | no padding |\r\n\t\t\t| xxx-small | xxx-small |\r\n\t\t\t| xx-small | xx-small |\r\n\t\t\t| x-small | x-small |\r\n\t\t\t| small | small |\r\n\t\t\t| medium | medium |\r\n\t\t\t| large | large |\r\n\t\t\t| x-large | x-large |\r\n\t\t\t| xx-large | xx-large |\r\n\t\t\t| xxx-large | xxx-large |\r\n\t\t\t| xxxx-large | xxxx-large |\r\n\t\t\t| N/A | no padding |\r\n\r\n\t@minutae\r\n\t@ui\r\n\tScenario: Content can be center aligned in horizontal view\r\n\t\tGiven I have supplied the prop \"center\"\r\n\t\tThen the content is center aligned\r\n\r\n\t@minutae\r\n\t@ui\r\n\tScenario: Content in the last row can span full width with display in horizontal view\r\n\t\tGiven I have `display` to \"flex\"\r\n\t\tThen the content is full width on the last row\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Content can be aligned along the x-axis \r\n\t\tGiven prop \"justify-content\" has <value>\r\n\t\tThen content within the container is aligned <alignment>\r\n\r\n\t\tExamples:\r\n\t\t\t| value | alignment |\r\n\t\t\t| none | no alignment |\r\n\t\t\t| start | to the start |\r\n\t\t\t| center | to the center |\r\n\t\t\t| end | to the end |\r\n\t\t\t| space-between | with space between |\r\n\t\t\t| space-around | with space around |\r\n\t\t\t| space-evenly | with space evenly |";
10838
+ const scenario$p = "@author:kutay\r\n@owner:noah\r\nFeature: Portal Container\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Horizontal content overflows, but does not stretch\r\n\t\tGiven there are two element in the container\r\n\t\tAnd the first is small\r\n\t\tAnd the second would stretch the container wider than it's parent\r\n\t\tThen the second one is clipped\r\n\t\tAnd the first one doesn't stretch\r\n\r\n\t@landmine\r\n\t@ui\r\n\tScenario: `max-width` is required for displaying as a row\r\n\t\tGiven I have `direction` to \"row\"\r\n\t\tAnd I have not set a `max-width`\r\n\t\tThen it displays as a column\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Content padding can be customized\r\n\t\tGiven prop \"padding\" has <value>\r\n\t\tThen <padding> is applied to content\r\n\r\n\t\tExamples:\r\n\t\t\t| value | padding |\r\n\t\t\t| none | no padding |\r\n\t\t\t| xxx-small | xxx-small |\r\n\t\t\t| xx-small | xx-small |\r\n\t\t\t| x-small | x-small |\r\n\t\t\t| small | small |\r\n\t\t\t| medium | medium |\r\n\t\t\t| large | large |\r\n\t\t\t| x-large | x-large |\r\n\t\t\t| xx-large | xx-large |\r\n\t\t\t| xxx-large | xxx-large |\r\n\t\t\t| xxxx-large | xxxx-large |\r\n\t\t\t| N/A | no padding |\r\n\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Gap between content elements can be customized\r\n\t\tGiven prop \"gap\" has <value>\r\n\t\tThen <gap> is applied to elements between content\r\n\r\n\t\tExamples:\r\n\t\t\t| value | gap |\r\n\t\t\t| none | no padding |\r\n\t\t\t| xxx-small | xxx-small |\r\n\t\t\t| xx-small | xx-small |\r\n\t\t\t| x-small | x-small |\r\n\t\t\t| small | small |\r\n\t\t\t| medium | medium |\r\n\t\t\t| large | large |\r\n\t\t\t| x-large | x-large |\r\n\t\t\t| xx-large | xx-large |\r\n\t\t\t| xxx-large | xxx-large |\r\n\t\t\t| xxxx-large | xxxx-large |\r\n\t\t\t| N/A | no padding |\r\n\r\n\t@minutae\r\n\t@ui\r\n\tScenario: Content can be center aligned in horizontal view\r\n\t\tGiven I have supplied the prop \"center\"\r\n\t\tThen the content is center aligned\r\n\r\n\t@minutae\r\n\t@ui\r\n\tScenario: Content in the last row can span full width with display in horizontal view\r\n\t\tGiven I have `display` to \"flex\"\r\n\t\tThen the content is full width on the last row\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Content can be aligned along the x-axis \r\n\t\tGiven prop \"justify-content\" has <value>\r\n\t\tThen content within the container is aligned <alignment>\r\n\r\n\t\tExamples:\r\n\t\t\t| value | alignment |\r\n\t\t\t| none | no alignment |\r\n\t\t\t| start | to the start |\r\n\t\t\t| center | to the center |\r\n\t\t\t| end | to the end |\r\n\t\t\t| space-between | with space between |\r\n\t\t\t| space-around | with space around |\r\n\t\t\t| space-evenly | with space evenly |";
10634
10839
 
10635
10840
  const PortalContainer_stories = {
10636
10841
  title: "Components/Portal Container",
10637
10842
  parameters: {
10638
- scenario: scenario$n,
10843
+ scenario: scenario$p,
10639
10844
  },
10640
10845
  };
10641
10846
  const TooWideColumn = () => (index.h("div", { style: { width: "200px", border: "1px dashed grey" } },
@@ -10777,11 +10982,11 @@ const scenario3 = "@author:derek\r\n@owner:derek\r\nFeature: Reward Table Status
10777
10982
 
10778
10983
  const scenario4 = "@author:derek\r\n@owner:derek\r\nFeature: Reward Table Source Column\r\n\r\n Shows the source of each reward\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The title of the source column is configurable\r\n Given the \"column-title\" prop is set to <value>\r\n Then the source column is shown with <columnTitle>\r\n Examples:\r\n | value | columnTitle |\r\n | Source | |\r\n | My column title | My column title |\r\n\r\n @motivating\r\n @ui\r\n Scenario: The source column displays manual if the reward is caused by a manual action\r\n Given a user with a \"MANUAL\" reward\r\n When they view the rewards table\r\n Then the source of their reward is displayed as \"Manual\"\r\n\r\n @motivating\r\n @ui\r\n Scenario: The source column displays the program name if the reward is caused automatically by a program\r\n Given a user with a \"AUTOMATED\" program reward\r\n And the program has name \"Loyalty Program\"\r\n When they view the rewards table\r\n Then the source of their reward is displayed as \"Loyalty Program\"\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The source column displays customizable reward exchange text with amount if the reward is caused by reward exchange\r\n Given the \"reward-exchange-text\" prop is <propValue>\r\n And a user with a \"MANUAL\" reward\r\n But it was created by a reward exchange\r\n Then they view the rewards table\r\n Then the source displays <exchangeText>\r\n And under it displays the following\r\n | prettyRedeemedCredit → prettyValue |\r\n Examples:\r\n | propValue | exchangeText |\r\n | | Reward Exchange |\r\n | Exchanged | Exchanged |\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The source column displays customizable referral information if the reward is from a referral\r\n Given the \"reward-source-text\" prop is <propValue>\r\n And a user with a referral reward\r\n And that reward has <rewardSource>\r\n When they view the rewards table\r\n Then then source displays <referralText>\r\n And under it displays the full name of the <referralUser>\r\n Examples:\r\n | propValue | rewardSource | referralText | referralUser |\r\n | | REFERRED | Referred by | referrer user |\r\n | | FRIEND_SIGNUP | Referral to | referred user |\r\n | {rewardSource, select, FRIEND_SIGNUP {You Referred} REFERRED {Referred you} other {}} | REFERRED | Referred you | referrer user |\r\n | {rewardSource, select, FRIEND_SIGNUP {You Referred} REFERRED {Referred you} other {}} | FRIEND_SIGNUP | You Referred | referred user |\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The source column displays the existing name for a referral if either the first name or last name does not exist\r\n Given a user with a referral reward\r\n And referral user exists\r\n And referral user has <name>\r\n But referral user has no <otherName>\r\n When they view the rewards table\r\n Then referral user's name is displayed as <name>\r\n Examples:\r\n | name | otherName |\r\n | first.name | last.name |\r\n | last.name | first.name |\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The source column displays referral as \"Anonymous User\" if the referral user has no names\r\n Given a user with a referral reward\r\n And that reward has <rewardSource>\r\n And the <referralUser> has no first name\r\n And the <referralUser> has no last name\r\n When they view the rewards table\r\n Then then source displays <sourceText>\r\n And under it displays \"Anonymous User\"\r\n Examples:\r\n | rewardSource | referralUser | sourceText |\r\n | FRIEND_SIGNUP | referrer | Referral to |\r\n | REFERRED | referred user | Referred by |\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The source column displays referral as \"Deleted User\" if the referral user is deleted in the system\r\n Given a user with a referral reward\r\n And that reward has <rewardSource>\r\n But <referral> user was deleted\r\n When they view the rewards table\r\n Then the source displays <sourceText>\r\n And under it displays \"Deleted User\"\r\n Examples:\r\n | rewardSource | referral | sourceText |\r\n | \"FRIEND_SIGNUP\" | referrer | Referral to |\r\n | \"REFERRED\" | referred | Referred by |\r\n\r\n @minutae\r\n @ui\r\n Scenario Outline: Name fallbacks for referral users without names are customizable\r\n Given <prop> with <value>\r\n And a user with a referral reward\r\n But the referral user <hadAction>\r\n When they view the rewards table\r\n Then the source displays <value> as the referral user\r\n Examples:\r\n | prop | value | hadAction |\r\n | deleted-user | Former Customer | was deleted |\r\n | anonymous-user | Nameless User | had first and last name deleted |\r\n\r\n @motivating\r\n Scenario Outline: Source text can be customized\r\n Given the \"reward-source-text\" prop is \"{rewardSource, select, MANUAL {Support} AUTOMATED {Loyalty Program} other {}}\"\r\n And a user with a <rewardSource> reward\r\n When they view the rewards table\r\n Then the source is <sourceText>\r\n Examples:\r\n | rewardSource | sourceText |\r\n | MANUAL | Support |\r\n | AUTOMATED | Loyalty Program |";
10779
10984
 
10780
- const scenario$o = scenario1 + scenario2 + scenario3 + scenario4;
10985
+ const scenario$q = scenario1 + scenario2 + scenario3 + scenario4;
10781
10986
  const RewardsTableCell_stories = {
10782
10987
  title: "Components/Rewards Table Cell",
10783
10988
  parameters: {
10784
- scenario: scenario$o,
10989
+ scenario: scenario$q,
10785
10990
  },
10786
10991
  };
10787
10992
  const rewardsData$1 = {
@@ -11079,12 +11284,12 @@ const RewardsTableCell = /*#__PURE__*/Object.freeze({
11079
11284
  EmptyCell: EmptyCell$2
11080
11285
  });
11081
11286
 
11082
- const scenario$p = "@owner:sam\r\n@author:sam\r\nFeature: Rewards Table\r\n\r\n Shows a list of rewards as a table\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no rewards\r\n Given a user with rewards\r\n When they view the reward table\r\n Then no rewards are displayed\r\n And they see an image with a user icon\r\n And \"View your rewards\" in bold\r\n And \"See all the rewards you have earned from referring friends and completing tasks\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no rewards\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward table\r\n Then they see the custom empty state\r\n\r\n @minutae\r\n @ui\r\n Scenario: The loading state is shown while rewards are loading\r\n Given the table is loading\r\n Then the loading state is shown in the table\r\n And a custom loading state can be supplied in the \"loading\" slot\r\n And the pagination buttons are disabled\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The table becomes paginated when the number of rewards exceeds the per page limit\r\n Given the user has <number of rewards>\r\n And the table is configured to show <page limit> rewards per page\r\n Then the table will have <number of pages> page(s)\r\n And pagination buttons will allow users to navigate between pages\r\n And the pagination button to go to the next page is disabled on the last page of rewards\r\n And the pagination button to go to the previous page is disabled on the first page of rewards\r\n Examples:\r\n | number of rewards | page limit | number of pages |\r\n | 0 | 4 | 1 |\r\n | 1 | 4 | 1 |\r\n | 3 | 4 | 1 |\r\n | 5 | 4 | 2 |\r\n | 42 | 4 | 11 |\r\n\r\n @motivating\r\n @ui\r\n Scenario: The table converts to a card view on tablet and mobile window sizes\r\n Given a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"799px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"599px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario: Table and Mobile beakpoints can be configured\r\n Given the reward table has been configured with the following props\r\n | prop | value |\r\n | smBreakpoint | 599 |\r\n | mdBreakpoint | 799 |\r\n And a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"799px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"599px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: By default the first column heading is hidden in mobile\r\n Given a reward table with 4 columns\r\n And prop \"hidden-columns\" with <hideColumnValue>\r\n And a user with rewards\r\n When they view the reward table\r\n And their window size is below the tablet breakpoint\r\n Then reward cards are displayed\r\n And the titles of <columnsArehidden> within the card\r\n Examples:\r\n | hideColumnValue | columnsArehidden |\r\n | | the first column |\r\n | 0,1,2 | the first, second and third columns |\r\n | 3 | the fourth column |\r\n\r\n @motivating\r\n Scenario: Only rewards which occured in the program specific by \"program-id\" are shown\r\n Given the table is configured with \"program-id\"\r\n Then only rewards from the program with \"program-id\" are shown\r\n\r\n @landmine\r\n Scenario: When a `classic` program Id is set then any reward without a programId is shown\r\n There is no easy way for the backend to filter for \"classic\" programs,\r\n thus we are filtering for rewards without programId's.\r\n\r\n Given the \"program-id\" of the table is set to \"classic\"\r\n Then rewards from classic programs are shown\r\n And manual rewards are shown\r\n\r\n @minutae\r\n @ui\r\n Scenario: Column heading can be hidden\r\n Given the table is configured with \"show-labels\" set to false\r\n Then the table is displayed without column headings";
11287
+ const scenario$r = "@owner:sam\r\n@author:sam\r\nFeature: Rewards Table\r\n\r\n Shows a list of rewards as a table\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no rewards\r\n Given a user with rewards\r\n When they view the reward table\r\n Then no rewards are displayed\r\n And they see an image with a user icon\r\n And \"View your rewards\" in bold\r\n And \"See all the rewards you have earned from referring friends and completing tasks\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no rewards\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward table\r\n Then they see the custom empty state\r\n\r\n @minutae\r\n @ui\r\n Scenario: The loading state is shown while rewards are loading\r\n Given the table is loading\r\n Then the loading state is shown in the table\r\n And a custom loading state can be supplied in the \"loading\" slot\r\n And the pagination buttons are disabled\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The table becomes paginated when the number of rewards exceeds the per page limit\r\n Given the user has <number of rewards>\r\n And the table is configured to show <page limit> rewards per page\r\n Then the table will have <number of pages> page(s)\r\n And pagination buttons will allow users to navigate between pages\r\n And the pagination button to go to the next page is disabled on the last page of rewards\r\n And the pagination button to go to the previous page is disabled on the first page of rewards\r\n Examples:\r\n | number of rewards | page limit | number of pages |\r\n | 0 | 4 | 1 |\r\n | 1 | 4 | 1 |\r\n | 3 | 4 | 1 |\r\n | 5 | 4 | 2 |\r\n | 42 | 4 | 11 |\r\n\r\n @motivating\r\n @ui\r\n Scenario: The table converts to a card view on tablet and mobile window sizes\r\n Given a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"799px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"599px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario: Table and Mobile beakpoints can be configured\r\n Given the reward table has been configured with the following props\r\n | prop | value |\r\n | smBreakpoint | 599 |\r\n | mdBreakpoint | 799 |\r\n And a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"799px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"599px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: By default the first column heading is hidden in mobile\r\n Given a reward table with 4 columns\r\n And prop \"hidden-columns\" with <hideColumnValue>\r\n And a user with rewards\r\n When they view the reward table\r\n And their window size is below the tablet breakpoint\r\n Then reward cards are displayed\r\n And the titles of <columnsArehidden> within the card\r\n Examples:\r\n | hideColumnValue | columnsArehidden |\r\n | | the first column |\r\n | 0,1,2 | the first, second and third columns |\r\n | 3 | the fourth column |\r\n\r\n @motivating\r\n Scenario: Only rewards which occured in the program specific by \"program-id\" are shown\r\n Given the table is configured with \"program-id\"\r\n Then only rewards from the program with \"program-id\" are shown\r\n\r\n @landmine\r\n Scenario: When a `classic` program Id is set then any reward without a programId is shown\r\n There is no easy way for the backend to filter for \"classic\" programs,\r\n thus we are filtering for rewards without programId's.\r\n\r\n Given the \"program-id\" of the table is set to \"classic\"\r\n Then rewards from classic programs are shown\r\n And manual rewards are shown\r\n\r\n @minutae\r\n @ui\r\n Scenario: Column heading can be hidden\r\n Given the table is configured with \"show-labels\" set to false\r\n Then the table is displayed without column headings";
11083
11288
 
11084
11289
  const RewardsTable_stories = {
11085
11290
  title: "Components/Rewards Table",
11086
11291
  parameters: {
11087
- scenario: scenario$p,
11292
+ scenario: scenario$r,
11088
11293
  },
11089
11294
  };
11090
11295
  const loadingElement$1 = (index.h("div", { slot: "loading", style: { display: "contents" } },
@@ -11215,7 +11420,7 @@ const RewardsTable$1 = /*#__PURE__*/Object.freeze({
11215
11420
  const UseReferralTable_stories = {
11216
11421
  title: "Hooks / useReferralTable",
11217
11422
  };
11218
- function setupGraphQL$b() {
11423
+ function setupGraphQL$c() {
11219
11424
  const id = "testestest";
11220
11425
  const accountId = id;
11221
11426
  //@ts-ignore
@@ -11258,7 +11463,7 @@ function setupGraphQLKlip$1({ token, id }) {
11258
11463
  return { id, accountId };
11259
11464
  }
11260
11465
  const ReferralTable$1 = createHookStory(() => {
11261
- setupGraphQL$b();
11466
+ setupGraphQL$c();
11262
11467
  index_module.A("sam-partner-test-2");
11263
11468
  return (index.h("sqm-referral-table", null,
11264
11469
  index.h("sqm-referral-table-user-column", null),
@@ -11328,12 +11533,12 @@ const UseReferralTable = /*#__PURE__*/Object.freeze({
11328
11533
  ReferralTableFr: ReferralTableFr
11329
11534
  });
11330
11535
 
11331
- const scenario$q = "@author:kutay\r\n@owner:kutay\r\nFeature: Hero Image\r\n\r\n\tThe Hero Image component displays media images with a header, description and button using an overlay or a double column layout to offer an attrative widget page.\r\n\r\n\tBackground: A user on the portal is viewing the widget\r\n\t\tGiven a user viewing the Hero Image component\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Overlay image displays header, description, and button with brand color\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"overlay\" |\r\n\t\tThen they see their image\r\n\t\tAnd the image has no padding\r\n\t\tAnd it has a brand colour overlay\r\n\t\tAnd \"Klip Rewards\" is displayed over top of the image in xxx-large font\r\n\t\tAnd below \"Refer friends or complete tasks while using Klip to earn rewards\" is displayed over top of the image in x-large font\r\n\t\tAnd below they see a brand coloured button with text \"Start earning\"\r\n\t\tAnd the text section has xxx-large padding\r\n\t\tWhen the component is scaled down to 599px\r\n\t\tThen the image is scaled to fit content\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Overlay image crop can be aligned left, center or right\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"overlay\" |\r\n\t\t\t| image-pos | <value> |\r\n\t\tThen the image with overlay is displayed\r\n\t\tWhen the component is scaled down to 599px\r\n\t\tThen the image is <alignment> to fit content\r\n\t\tExamples:\r\n\t\t\t| value | alignment |\r\n\t\t\t| left | left aligned |\r\n\t\t\t| center | centered |\r\n\t\t\t| right | right aligned |\r\n\t\t\t| N/A | centered |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Overlay padding is configurable\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"overlay\" |\r\n\t\t\t| padding-text | <value> |\r\n\t\tThen the image with overlay is displayed\r\n\t\tAnd <padding> is applied around header, description and button\r\n\t\tExamples:\r\n\t\t\t| value | padding |\r\n\t\t\t| none | no padding |\r\n\t\t\t| xxx-small | xxx-small |\r\n\t\t\t| xx-small | xx-small |\r\n\t\t\t| x-small | x-small |\r\n\t\t\t| small | small |\r\n\t\t\t| medium | medium |\r\n\t\t\t| large | large |\r\n\t\t\t| x-large | x-large |\r\n\t\t\t| xx-large | xx-large |\r\n\t\t\t| xxx-large | xxx-large |\r\n\t\t\t| xxxx-large | xxxx-large |\r\n\t\t\t| N/A | no padding |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Overlay color and background is configurable\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"overlay\" |\r\n\t\t\t| text-color | <textColor> |\r\n\t\t\t| overlay-color | <overlayColor> |\r\n\t\t\t| overlay-opacity | <overlayOpacity> |\r\n\t\tThen the image with overlay is displayed\r\n\t\tAnd the overlay is <overlayColor>\r\n\t\tAnd the overlay has <overlayOpacity>\r\n\t\tAnd the text is <textColor>\r\n\t\tExamples:\r\n\t\t\t| textColor | overlayColor | overlayOpacity |\r\n\t\t\t| #fffc4b | #ff7f7f | 0.9 |\r\n\t\t\t| #1d0314 | #4baa1a | 0 |\r\n\t\t\t| #211a27 | #aa481a | 1 |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Two-column layout displays an image on one side and on the other side a header, description, and button\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"columns\" |\r\n\t\tThen the image is displayed on the left\r\n\t\tAnd the following elements are displayed on the right\r\n\t\t\t| elements |\r\n\t\t\t| header |\r\n\t\t\t| description |\r\n\t\t\t| button |\r\n\t\tWhen the component is scaled down to 599px\r\n\t\tThen the two-column layout switches to a row layout\r\n\t\tAnd the image is displayed on top\r\n\t\tAnd the content is displayed below\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Image position is configurable for desktop and mobile\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"columns\" |\r\n\t\t\t| image-pos | <imagePos> |\r\n\t\t\t| image-mobile-pos | <imageMobilePos> |\r\n\t\tThen the image is displayed on the <imagePos>\r\n\t\tWhen the component is scaled down to 599px\r\n\t\tThen two-column layout switches to a row layout\r\n\t\tAnd image is displayed on the <imageMobilePos>\r\n\t\tExamples:\r\n\t\t\t| imagePos | imageMobilePos |\r\n\t\t\t| left | top |\r\n\t\t\t| right | bottom |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Padding is configurable for the image and text of two column layouts\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"columns\" |\r\n\t\t\t| padding-text | <paddingText> |\r\n\t\t\t| padding-image | <paddingImage> |\r\n\t\tThen the two column layout is displayed\r\n\t\tAnd the image has padding <paddingImage>\r\n\t\tAnd the text has padding <paddingText>\r\n\t\tExamples:\r\n\t\t\t| paddingText | paddingImage |\r\n\t\t\t| xxx-small | xxx-small |\r\n\t\t\t| xx-small | xx-small |\r\n\t\t\t| x-small | x-small |\r\n\t\t\t| small | small |\r\n\t\t\t| medium | medium |\r\n\t\t\t| large | large |\r\n\t\t\t| x-large | x-large |\r\n\t\t\t| xx-large | xx-large |\r\n\t\t\t| xxx-large | xxx-large |\r\n\t\t\t| xxxx-large | xxxx-large |\r\n\t\t\t| none | none |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Two-column layout image division percentage is configurable\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000248/squatch-assets/MVgOJn7.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"columns\" |\r\n\t\t\t| image-percentage | <percent> |\r\n\t\tThen the two column layout is displayed\r\n\t\tAnd the image takes up <percent> of the two-column layout\r\n\t\tAnd the text elements take up the remainder of the space\r\n\t\tExamples:\r\n\t\t\t| percent |\r\n\t\t\t| 25% |\r\n\t\t\t| 42% |\r\n\t\t\t| 66% |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Two-column layout text and background color is configurable\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"columns\" |\r\n\t\t\t| text-color | <textColor> |\r\n\t\t\t| background-color | <backgroundColor> |\r\n\t\tThen the two column layout is displayed\r\n\t\tAnd the text has color <textColor>\r\n\t\tAnd the background has color <backgroundColor>\r\n\t\tExamples:\r\n\t\t\t| textColor | backgroundColor |\r\n\t\t\t| #fffc4b | #ff7f7f |\r\n\t\t\t| #1d0314 | #4baa1a |\r\n\t\t\t| #211a27 | #aa481a |";
11536
+ const scenario$s = "@author:kutay\r\n@owner:kutay\r\nFeature: Hero Image\r\n\r\n\tThe Hero Image component displays media images with a header, description and button using an overlay or a double column layout to offer an attrative widget page.\r\n\r\n\tBackground: A user on the portal is viewing the widget\r\n\t\tGiven a user viewing the Hero Image component\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Overlay image displays header, description, and button with brand color\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"overlay\" |\r\n\t\tThen they see their image\r\n\t\tAnd the image has no padding\r\n\t\tAnd it has a brand colour overlay\r\n\t\tAnd \"Klip Rewards\" is displayed over top of the image in xxx-large font\r\n\t\tAnd below \"Refer friends or complete tasks while using Klip to earn rewards\" is displayed over top of the image in x-large font\r\n\t\tAnd below they see a brand coloured button with text \"Start earning\"\r\n\t\tAnd the text section has xxx-large padding\r\n\t\tWhen the component is scaled down to 599px\r\n\t\tThen the image is scaled to fit content\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Overlay image crop can be aligned left, center or right\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"overlay\" |\r\n\t\t\t| image-pos | <value> |\r\n\t\tThen the image with overlay is displayed\r\n\t\tWhen the component is scaled down to 599px\r\n\t\tThen the image is <alignment> to fit content\r\n\t\tExamples:\r\n\t\t\t| value | alignment |\r\n\t\t\t| left | left aligned |\r\n\t\t\t| center | centered |\r\n\t\t\t| right | right aligned |\r\n\t\t\t| N/A | centered |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Overlay padding is configurable\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"overlay\" |\r\n\t\t\t| padding-text | <value> |\r\n\t\tThen the image with overlay is displayed\r\n\t\tAnd <padding> is applied around header, description and button\r\n\t\tExamples:\r\n\t\t\t| value | padding |\r\n\t\t\t| none | no padding |\r\n\t\t\t| xxx-small | xxx-small |\r\n\t\t\t| xx-small | xx-small |\r\n\t\t\t| x-small | x-small |\r\n\t\t\t| small | small |\r\n\t\t\t| medium | medium |\r\n\t\t\t| large | large |\r\n\t\t\t| x-large | x-large |\r\n\t\t\t| xx-large | xx-large |\r\n\t\t\t| xxx-large | xxx-large |\r\n\t\t\t| xxxx-large | xxxx-large |\r\n\t\t\t| N/A | no padding |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Overlay color and background is configurable\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000278/squatch-assets/bTwu1Um.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"overlay\" |\r\n\t\t\t| text-color | <textColor> |\r\n\t\t\t| overlay-color | <overlayColor> |\r\n\t\t\t| overlay-opacity | <overlayOpacity> |\r\n\t\tThen the image with overlay is displayed\r\n\t\tAnd the overlay is <overlayColor>\r\n\t\tAnd the overlay has <overlayOpacity>\r\n\t\tAnd the text is <textColor>\r\n\t\tExamples:\r\n\t\t\t| textColor | overlayColor | overlayOpacity |\r\n\t\t\t| #fffc4b | #ff7f7f | 0.9 |\r\n\t\t\t| #1d0314 | #4baa1a | 0 |\r\n\t\t\t| #211a27 | #aa481a | 1 |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Two-column layout displays an image on one side and on the other side a header, description, and button\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"columns\" |\r\n\t\tThen the image is displayed on the left\r\n\t\tAnd the following elements are displayed on the right\r\n\t\t\t| elements |\r\n\t\t\t| header |\r\n\t\t\t| description |\r\n\t\t\t| button |\r\n\t\tWhen the component is scaled down to 599px\r\n\t\tThen the two-column layout switches to a row layout\r\n\t\tAnd the image is displayed on top\r\n\t\tAnd the content is displayed below\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Image position is configurable for desktop and mobile\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"columns\" |\r\n\t\t\t| image-pos | <imagePos> |\r\n\t\t\t| image-mobile-pos | <imageMobilePos> |\r\n\t\tThen the image is displayed on the <imagePos>\r\n\t\tWhen the component is scaled down to 599px\r\n\t\tThen two-column layout switches to a row layout\r\n\t\tAnd image is displayed on the <imageMobilePos>\r\n\t\tExamples:\r\n\t\t\t| imagePos | imageMobilePos |\r\n\t\t\t| left | top |\r\n\t\t\t| right | bottom |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Padding is configurable for the image and text of two column layouts\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"columns\" |\r\n\t\t\t| padding-text | <paddingText> |\r\n\t\t\t| padding-image | <paddingImage> |\r\n\t\tThen the two column layout is displayed\r\n\t\tAnd the image has padding <paddingImage>\r\n\t\tAnd the text has padding <paddingText>\r\n\t\tExamples:\r\n\t\t\t| paddingText | paddingImage |\r\n\t\t\t| xxx-small | xxx-small |\r\n\t\t\t| xx-small | xx-small |\r\n\t\t\t| x-small | x-small |\r\n\t\t\t| small | small |\r\n\t\t\t| medium | medium |\r\n\t\t\t| large | large |\r\n\t\t\t| x-large | x-large |\r\n\t\t\t| xx-large | xx-large |\r\n\t\t\t| xxx-large | xxx-large |\r\n\t\t\t| xxxx-large | xxxx-large |\r\n\t\t\t| none | none |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Two-column layout image division percentage is configurable\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000248/squatch-assets/MVgOJn7.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"columns\" |\r\n\t\t\t| image-percentage | <percent> |\r\n\t\tThen the two column layout is displayed\r\n\t\tAnd the image takes up <percent> of the two-column layout\r\n\t\tAnd the text elements take up the remainder of the space\r\n\t\tExamples:\r\n\t\t\t| percent |\r\n\t\t\t| 25% |\r\n\t\t\t| 42% |\r\n\t\t\t| 66% |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Two-column layout text and background color is configurable\r\n\t\tGiven a Hero Image component configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| image-url | \"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\" |\r\n\t\t\t| header | \"Klip Rewards\" |\r\n\t\t\t| description | \"Refer friends or complete tasks while using Klip to earn rewards\" |\r\n\t\t\t| button-text | \"Start earning\" |\r\n\t\t\t| layout | \"columns\" |\r\n\t\t\t| text-color | <textColor> |\r\n\t\t\t| background-color | <backgroundColor> |\r\n\t\tThen the two column layout is displayed\r\n\t\tAnd the text has color <textColor>\r\n\t\tAnd the background has color <backgroundColor>\r\n\t\tExamples:\r\n\t\t\t| textColor | backgroundColor |\r\n\t\t\t| #fffc4b | #ff7f7f |\r\n\t\t\t| #1d0314 | #4baa1a |\r\n\t\t\t| #211a27 | #aa481a |";
11332
11537
 
11333
11538
  const HeroImage_stories = {
11334
11539
  title: "Components/Hero Image",
11335
11540
  parameters: {
11336
- scenario: scenario$q,
11541
+ scenario: scenario$s,
11337
11542
  },
11338
11543
  };
11339
11544
  const OverlayHeader = () => {
@@ -11406,12 +11611,12 @@ const HeroImage = /*#__PURE__*/Object.freeze({
11406
11611
  ColumnsCustomColors: ColumnsCustomColors
11407
11612
  });
11408
11613
 
11409
- const scenario$r = "@author:kutay\r\n@owner:kutay\r\nFeature: Referral Card\r\n\r\n\tThe Referral Card component takes in two slots and displays them side by side.\r\n\r\n\tBackground: A user on the portal is viewing the widget\r\n\t\tGiven a user viewing the Referral Card component\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Referral Card component displays provided content in left and right slots side by side\r\n\t\tGiven a Referral Card component\r\n\t\tAnd a slot with the name \"left\"\r\n\t\tAnd a slot with the name \"right\"\r\n\t\tWhen the user views the referral card\r\n\t\tThen the slot contents are displayed the card with equal width\r\n\t\tWhen the component is scaled down to 499px\r\n\t\tThen the column layout switches to row layout\r\n\t\tAnd the \"left\" slot content is displayed above the \"right\" slot content\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Referral Card component content can be vertically aligned start, center, end\r\n\t\tGiven a Referral Card component\r\n\t\tAnd a slot with the name \"left\"\r\n\t\tAnd a slot with the name \"right\"\r\n\t\tAnd the prop \"vertical-alignment\" has <value>\r\n\t\tThen slots contents are displayed inside the card\r\n\t\tAnd slots are vertically aligned to <alignment> of the card\r\n\t\tExamples:\r\n\t\t\t| value | alignment |\r\n\t\t\t| start | the top |\r\n\t\t\t| center | the center |\r\n\t\t\t| end | the bottom |\r\n\t\t\t| N/A | the top |\r\n\r\n";
11614
+ const scenario$t = "@author:kutay\r\n@owner:kutay\r\nFeature: Referral Card\r\n\r\n\tThe Referral Card component takes in two slots and displays them side by side.\r\n\r\n\tBackground: A user on the portal is viewing the widget\r\n\t\tGiven a user viewing the Referral Card component\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Referral Card component displays provided content in left and right slots side by side\r\n\t\tGiven a Referral Card component\r\n\t\tAnd a slot with the name \"left\"\r\n\t\tAnd a slot with the name \"right\"\r\n\t\tWhen the user views the referral card\r\n\t\tThen the slot contents are displayed the card with equal width\r\n\t\tWhen the component is scaled down to 499px\r\n\t\tThen the column layout switches to row layout\r\n\t\tAnd the \"left\" slot content is displayed above the \"right\" slot content\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Referral Card component content can be vertically aligned start, center, end\r\n\t\tGiven a Referral Card component\r\n\t\tAnd a slot with the name \"left\"\r\n\t\tAnd a slot with the name \"right\"\r\n\t\tAnd the prop \"vertical-alignment\" has <value>\r\n\t\tThen slots contents are displayed inside the card\r\n\t\tAnd slots are vertically aligned to <alignment> of the card\r\n\t\tExamples:\r\n\t\t\t| value | alignment |\r\n\t\t\t| start | the top |\r\n\t\t\t| center | the center |\r\n\t\t\t| end | the bottom |\r\n\t\t\t| N/A | the top |\r\n\r\n";
11410
11615
 
11411
11616
  const ReferralCard_stories = {
11412
11617
  title: "Components/Referral Card",
11413
11618
  parameters: {
11414
- scenario: scenario$r,
11619
+ scenario: scenario$t,
11415
11620
  },
11416
11621
  };
11417
11622
  const media = (slot) => {
@@ -11502,11 +11707,11 @@ const scenarioTimeline = "@author:derek\r\n@owner:kutay\r\nFeature: Timeline\r\n
11502
11707
 
11503
11708
  const scenarioTimelineEntry = "@author:derek\r\n@owner:kutay\r\nFeature: Timeline Entry\r\n\r\n @motivating\r\n @ui\r\n Scenario: Timeline entries have an icon, a reward and an entry desciption\r\n Given an timeline entry with the following props\r\n | prop | value |\r\n | unit | Visa Giftcard |\r\n | reward | 50$ |\r\n | desc | Earn a 50$ Visa Giftcard for each referral you make |\r\n When a user views the entry\r\n Then they see a gift icon\r\n And see \"$50 VISA GIFTCARRD\" to the right\r\n And \"$50\" is bolded with x-large font size\r\n And below they see \"Earn a 50$ Visa Giftcard for each referral you make\"\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: Icon can either be a gift or a brand colour cirle\r\n Given a timeline entry with \"icon\" <iconPropValue>\r\n When a user views the entry\r\n Then they see an <icon>\r\n Examples:\r\n | iconPropValue 1 | icon |\r\n | gift | gift |\r\n | circle | brand colour circle |\r\n | | gift |\r\n\r\n @motivating\r\n @ui\r\n Scenario: A timeline entry can display a line to connect it to another entry\r\n Given a timeline entry with \"line\" \"true\"\r\n When a user views the entry\r\n Then they see the entry\r\n But it has a brand colour line connecting it to the next timeline entry\r\n";
11504
11709
 
11505
- const scenario$s = scenarioTimeline + scenarioTimelineEntry;
11710
+ const scenario$u = scenarioTimeline + scenarioTimelineEntry;
11506
11711
  const Timeline_stories = {
11507
11712
  title: "Components/Timeline",
11508
11713
  parameters: {
11509
- scenario: scenario$s,
11714
+ scenario: scenario$u,
11510
11715
  },
11511
11716
  };
11512
11717
  const TimelineWith1Reward = () => {
@@ -11579,12 +11784,12 @@ const Timeline = /*#__PURE__*/Object.freeze({
11579
11784
  TimelineWith4Rewards: TimelineWith4Rewards
11580
11785
  });
11581
11786
 
11582
- const scenario$t = "@author:kutay\r\n@owner:kutay\r\nFeature: Image\r\n\r\n\tBackground: A user on the portal is viewing the widget\r\n\t\tGiven a user viewing the image component\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Image is displayed from URL\r\n\t\tGiven an Image component\r\n\t\tAnd prop \"image-url\" is provided with a valid image url\r\n\t\tThen the image is displayed\r\n\t\tAnd it is centered\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Images can be aligned left, center or right\r\n\t\tGiven an Image component\r\n\t\tAnd prop \"image-url\" is provided with a valid image url\r\n\t\tAnd prop \"align\" has <value>\r\n\t\tThen the image is displayed\r\n\t\tAnd it is aligned to the <value>\r\n\t\tExamples:\r\n\t\t\t| value |\r\n\t\t\t| left |\r\n\t\t\t| center |\r\n\t\t\t| right |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Image background can be assigned a color\r\n\t\tGiven an Image component\r\n\t\tAnd prop \"image-url\" is provided with a valid image url\r\n\t\tAnd prop \"background-color\" is provided a color\r\n\t\tThen the image is displayed\r\n\t\tAnd the background is the provided color\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Image minimum height can be constrained\r\n\t\tGiven an Image component\r\n\t\tAnd prop \"image-url\" is provided\r\n\t\tAnd prop \"min-height\" is given a minimum value\r\n\t\tThen the image is displayed\r\n\t\tAnd the container size changes\r\n\t\tThen the image does not shrink below its minimum height";
11787
+ const scenario$v = "@author:kutay\r\n@owner:kutay\r\nFeature: Image\r\n\r\n\tBackground: A user on the portal is viewing the widget\r\n\t\tGiven a user viewing the image component\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Image is displayed from URL\r\n\t\tGiven an Image component\r\n\t\tAnd prop \"image-url\" is provided with a valid image url\r\n\t\tThen the image is displayed\r\n\t\tAnd it is centered\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Images can be aligned left, center or right\r\n\t\tGiven an Image component\r\n\t\tAnd prop \"image-url\" is provided with a valid image url\r\n\t\tAnd prop \"align\" has <value>\r\n\t\tThen the image is displayed\r\n\t\tAnd it is aligned to the <value>\r\n\t\tExamples:\r\n\t\t\t| value |\r\n\t\t\t| left |\r\n\t\t\t| center |\r\n\t\t\t| right |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Image background can be assigned a color\r\n\t\tGiven an Image component\r\n\t\tAnd prop \"image-url\" is provided with a valid image url\r\n\t\tAnd prop \"background-color\" is provided a color\r\n\t\tThen the image is displayed\r\n\t\tAnd the background is the provided color\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Image minimum height can be constrained\r\n\t\tGiven an Image component\r\n\t\tAnd prop \"image-url\" is provided\r\n\t\tAnd prop \"min-height\" is given a minimum value\r\n\t\tThen the image is displayed\r\n\t\tAnd the container size changes\r\n\t\tThen the image does not shrink below its minimum height";
11583
11788
 
11584
11789
  const Image_stories = {
11585
11790
  title: "Components/Image",
11586
11791
  parameters: {
11587
- scenario: scenario$t,
11792
+ scenario: scenario$v,
11588
11793
  },
11589
11794
  };
11590
11795
  const Image = () => {
@@ -11617,12 +11822,12 @@ const Image$1 = /*#__PURE__*/Object.freeze({
11617
11822
  MinimumHeight: MinimumHeight
11618
11823
  });
11619
11824
 
11620
- const scenario$u = "@author:derek\r\n@owner:noah\r\nFeature: Titled Section\r\n\r\n Background: The titled section has a label and content\r\n Given a titled section\r\n And it has a label\r\n And it has content in the content slot\r\n\r\n @motivating\r\n @ui\r\n Scenario: Text alignment defaults to left align but can be configured\r\n Given the titled section has \"text-align\" <textAlignPropValue>\r\n When a user views the titled section\r\n Then the text in the label is <aligned>\r\n And the text in the content is <aligned>\r\n Examples:\r\n | textAlignPropValue | aligned |\r\n | center | center |\r\n | left | left |\r\n | right | right |\r\n | | left |\r\n\r\n @minutae\r\n @ui\r\n Scenario: Label margin is configurable\r\n Given the titled section has \"label-margin\" <marginPropValue>\r\n When a user views the titled section\r\n Then <marginPropValue> margin is between the label and content\r\n Examples:\r\n | marginPropValue | margin |\r\n | none | no |\r\n | xxx-small | xxx-small |\r\n | xx-small | xx-small |\r\n | x-small | x-small |\r\n | small | small |\r\n | medium | medium |\r\n | large | large |\r\n | x-large | x-large |\r\n | xx-large | xx-large |\r\n | xxx-large | xxx-large |\r\n | xxxx-large | xxxx-large |\r\n | | no |\r\n\r\n @minutae\r\n @ui\r\n Scenario Outline: Titled section padding is configurable\r\n Given the titled section has \"padding\" <paddingPropValue>\r\n When a user views the titled section\r\n Then <paddingPropValue> padding is applied around the titled section\r\n Examples:\r\n | paddingPropValue | padding |\r\n | none | no |\r\n | xxx-small | xxx-small |\r\n | xx-small | xx-small |\r\n | x-small | x-small |\r\n | small | small |\r\n | medium | medium |\r\n | large | large |\r\n | x-large | x-large |\r\n | xx-large | xx-large |\r\n | xxx-large | xxx-large |\r\n | xxxx-large | xxxx-large |\r\n | | no |";
11825
+ const scenario$w = "@author:derek\r\n@owner:noah\r\nFeature: Titled Section\r\n\r\n Background: The titled section has a label and content\r\n Given a titled section\r\n And it has a label\r\n And it has content in the content slot\r\n\r\n @motivating\r\n @ui\r\n Scenario: Text alignment defaults to left align but can be configured\r\n Given the titled section has \"text-align\" <textAlignPropValue>\r\n When a user views the titled section\r\n Then the text in the label is <aligned>\r\n And the text in the content is <aligned>\r\n Examples:\r\n | textAlignPropValue | aligned |\r\n | center | center |\r\n | left | left |\r\n | right | right |\r\n | | left |\r\n\r\n @minutae\r\n @ui\r\n Scenario: Label margin is configurable\r\n Given the titled section has \"label-margin\" <marginPropValue>\r\n When a user views the titled section\r\n Then <marginPropValue> margin is between the label and content\r\n Examples:\r\n | marginPropValue | margin |\r\n | none | no |\r\n | xxx-small | xxx-small |\r\n | xx-small | xx-small |\r\n | x-small | x-small |\r\n | small | small |\r\n | medium | medium |\r\n | large | large |\r\n | x-large | x-large |\r\n | xx-large | xx-large |\r\n | xxx-large | xxx-large |\r\n | xxxx-large | xxxx-large |\r\n | | no |\r\n\r\n @minutae\r\n @ui\r\n Scenario Outline: Titled section padding is configurable\r\n Given the titled section has \"padding\" <paddingPropValue>\r\n When a user views the titled section\r\n Then <paddingPropValue> padding is applied around the titled section\r\n Examples:\r\n | paddingPropValue | padding |\r\n | none | no |\r\n | xxx-small | xxx-small |\r\n | xx-small | xx-small |\r\n | x-small | x-small |\r\n | small | small |\r\n | medium | medium |\r\n | large | large |\r\n | x-large | x-large |\r\n | xx-large | xx-large |\r\n | xxx-large | xxx-large |\r\n | xxxx-large | xxxx-large |\r\n | | no |";
11621
11826
 
11622
11827
  const TitledSection_stories = {
11623
11828
  title: "Components/Titled Section",
11624
11829
  parameters: {
11625
- scenario: scenario$u,
11830
+ scenario: scenario$w,
11626
11831
  },
11627
11832
  };
11628
11833
  const AlignLeft = () => {
@@ -12018,12 +12223,12 @@ const Scroll = /*#__PURE__*/Object.freeze({
12018
12223
  ShoelaceProps: ShoelaceProps
12019
12224
  });
12020
12225
 
12021
- const scenario$v = "@author:Zach\r\n@owner:Zach\r\nFeature: Tabs\r\n\r\n The Tabs takes in the Tab component as children and maps through to display their header and content.\r\n\r\n Background: A user on the portal is viewing the widget\r\n Given a user viewing the Tabs component\r\n\r\n @motivating\r\n Scenario: Content inside the active tab is shown\r\n Given the header is set to <tabHeader>\r\n And the content inside is <tabContent>\r\n And the user has clicked <tabHeader>\r\n Then the <tabContent> is shown\r\n Examples:\r\n | tabHeader | tabContent |\r\n | Settings | This is the settings tab |\r\n | General | This is the general tab |\r\n | History | This is the history tab |\r\n\r\n @motivating\r\n @ui\r\n Scenario: The placement of the tabs is configurable\r\n Given The placement prop has been passed a valid <placement>\r\n Then tabs are placed on the <placementResult>\r\n Examples:\r\n | placement | placementResult |\r\n | | top of the content |\r\n | left | left hand side of the content |\r\n | right | right hand side of the content |\r\n | bottom | bottom of the content |\r\n\r\n\r\n @minutae\r\n @ui\r\n Scenario Outline: Tabs are setup to use the brand color\r\n Given the brand color is set to darkblue\r\n Then the text inside the active tab is darkblue\r\n And the underline of the active tab is darkblue\r\n\r\n @ui\r\n Scenario: Tabs are responsive\r\n Given the user is on a mobile device\r\n When there are more tabs than the horizontal space allows for\r\n Then clickable arrows appear on the left and right of the tabs\r\n And the tabs are scrollable\r\n\r\n @landmine\r\n Scenario: Program section cannot be used inside of tabs\r\n Given a tabs component\r\n And tab containing a program section with program-id \"test123\"\r\n And the program section wraps a component using program context\r\n When the tabs component is rendered\r\n Then the \"sq:program-id\" event listener for the program section is removed\r\n And the component does not use program-id \"test123\" to source its data\r\n And falls back to the global program id";
12226
+ const scenario$x = "@author:Zach\r\n@owner:Zach\r\nFeature: Tabs\r\n\r\n The Tabs takes in the Tab component as children and maps through to display their header and content.\r\n\r\n Background: A user on the portal is viewing the widget\r\n Given a user viewing the Tabs component\r\n\r\n @motivating\r\n Scenario: Content inside the active tab is shown\r\n Given the header is set to <tabHeader>\r\n And the content inside is <tabContent>\r\n And the user has clicked <tabHeader>\r\n Then the <tabContent> is shown\r\n Examples:\r\n | tabHeader | tabContent |\r\n | Settings | This is the settings tab |\r\n | General | This is the general tab |\r\n | History | This is the history tab |\r\n\r\n @motivating\r\n @ui\r\n Scenario: The placement of the tabs is configurable\r\n Given The placement prop has been passed a valid <placement>\r\n Then tabs are placed on the <placementResult>\r\n Examples:\r\n | placement | placementResult |\r\n | | top of the content |\r\n | left | left hand side of the content |\r\n | right | right hand side of the content |\r\n | bottom | bottom of the content |\r\n\r\n\r\n @minutae\r\n @ui\r\n Scenario Outline: Tabs are setup to use the brand color\r\n Given the brand color is set to darkblue\r\n Then the text inside the active tab is darkblue\r\n And the underline of the active tab is darkblue\r\n\r\n @ui\r\n Scenario: Tabs are responsive\r\n Given the user is on a mobile device\r\n When there are more tabs than the horizontal space allows for\r\n Then clickable arrows appear on the left and right of the tabs\r\n And the tabs are scrollable\r\n\r\n @landmine\r\n Scenario: Program section cannot be used inside of tabs\r\n Given a tabs component\r\n And tab containing a program section with program-id \"test123\"\r\n And the program section wraps a component using program context\r\n When the tabs component is rendered\r\n Then the \"sq:program-id\" event listener for the program section is removed\r\n And the component does not use program-id \"test123\" to source its data\r\n And falls back to the global program id";
12022
12227
 
12023
12228
  const Tabs_stories = {
12024
12229
  title: "Components/Tabs",
12025
12230
  parameters: {
12026
- scenario: scenario$v,
12231
+ scenario: scenario$x,
12027
12232
  },
12028
12233
  };
12029
12234
  const SimpleTabs = () => (index.h("div", { style: { maxWidth: "700px", margin: "auto" }, innerHTML: `
@@ -12522,12 +12727,12 @@ const Tabs = /*#__PURE__*/Object.freeze({
12522
12727
  RightTabs: RightTabs
12523
12728
  });
12524
12729
 
12525
- const scenario$w = "@author:johan\r\n@owner:johan\r\nFeature: Share Code\r\n\r\n The share code component is a box that allows users to see and copy their referral code for a given program\r\n \r\n Background: Environment\r\n Given there is a valid program ID in the environment\r\n And there is a valid user ID and account ID in the environment\r\n\r\n @motivating\r\n Scenario: A Users referral code can be copied to their clipboard\r\n Given tooltiptext is \"hello tooltip\"\r\n When the component renders\r\n Then there is a textbox with the user's share link\r\n When the clipboard icon is clicked\r\n Then the link is copied to clipboard\r\n And a tooltip will appear for ~1 second\r\n\r\n @minutae\r\n Scenario: Tooltip lifespan defaults to 2000\r\n Given the tooltip's lifespan is set to 2000\r\n And there is tooltip text\r\n When the component renders\r\n And the clipboard icon is clicked\r\n Then a tooltip will appear for ~2 seconds\r\n\r\n @minutae\r\n Scenario: Demo\r\n Given isDemo() returns true\r\n Then the share link is \"https://www.example.com/sharelink/abc\"\r\n And the component won't be interactive\r\n And the tooltip is hidden\r\n\r\n @minutae\r\n Scenario: Program ID can be sourced from prop\r\n Given the programId prop is set to \"program-a\"\r\n And window.widgetIdent.programId is set to \"program-b\"\r\n When the component renders\r\n Then the share link is for \"program-a\"\r\n\r\n @minutae\r\n Scenario: Program ID can be sourced from window\r\n Given the programId prop is unset\r\n And window.widgetIdent.programId is set to \"program-b\"\r\n When the component renders\r\n Then the share link is for \"program-b\"\r\n\r\n @minutae\r\n Scenario: An analytic event is fired when a user copies their code\r\n Given a user viewing the share code component\r\n And the component is rendered for \"program-a\"\r\n When they click to copy their code\r\n Then an \"USER_REFERRAL_PROGRAM_ENGAGEMENT_EVENT\" analytic event is fired\r\n And it is for \"program-a\"\r\n And it has share medium \"DIRECT\"\r\n";
12730
+ const scenario$y = "@author:johan\r\n@owner:johan\r\nFeature: Share Code\r\n\r\n The share code component is a box that allows users to see and copy their referral code for a given program\r\n \r\n Background: Environment\r\n Given there is a valid program ID in the environment\r\n And there is a valid user ID and account ID in the environment\r\n\r\n @motivating\r\n Scenario: A Users referral code can be copied to their clipboard\r\n Given tooltiptext is \"hello tooltip\"\r\n When the component renders\r\n Then there is a textbox with the user's share link\r\n When the clipboard icon is clicked\r\n Then the link is copied to clipboard\r\n And a tooltip will appear for ~1 second\r\n\r\n @minutae\r\n Scenario: Tooltip lifespan defaults to 2000\r\n Given the tooltip's lifespan is set to 2000\r\n And there is tooltip text\r\n When the component renders\r\n And the clipboard icon is clicked\r\n Then a tooltip will appear for ~2 seconds\r\n\r\n @minutae\r\n Scenario: Demo\r\n Given isDemo() returns true\r\n Then the share link is \"https://www.example.com/sharelink/abc\"\r\n And the component won't be interactive\r\n And the tooltip is hidden\r\n\r\n @minutae\r\n Scenario: Program ID can be sourced from prop\r\n Given the programId prop is set to \"program-a\"\r\n And window.widgetIdent.programId is set to \"program-b\"\r\n When the component renders\r\n Then the share link is for \"program-a\"\r\n\r\n @minutae\r\n Scenario: Program ID can be sourced from window\r\n Given the programId prop is unset\r\n And window.widgetIdent.programId is set to \"program-b\"\r\n When the component renders\r\n Then the share link is for \"program-b\"\r\n\r\n @minutae\r\n Scenario: An analytic event is fired when a user copies their code\r\n Given a user viewing the share code component\r\n And the component is rendered for \"program-a\"\r\n When they click to copy their code\r\n Then an \"USER_REFERRAL_PROGRAM_ENGAGEMENT_EVENT\" analytic event is fired\r\n And it is for \"program-a\"\r\n And it has share medium \"DIRECT\"\r\n";
12526
12731
 
12527
12732
  const ShareCode_stories = {
12528
12733
  title: "Components/Share Code",
12529
12734
  parameters: {
12530
- scenario: scenario$w,
12735
+ scenario: scenario$y,
12531
12736
  },
12532
12737
  };
12533
12738
  const ShareCode = () => {
@@ -12560,7 +12765,7 @@ const ShareCode$1 = /*#__PURE__*/Object.freeze({
12560
12765
  *
12561
12766
  */
12562
12767
  //
12563
- const Default$d = `
12768
+ const Default$e = `
12564
12769
  // No CSS
12565
12770
  `;
12566
12771
  const Orangey = `
@@ -12594,7 +12799,7 @@ const Klip = `
12594
12799
 
12595
12800
  const Themes = /*#__PURE__*/Object.freeze({
12596
12801
  __proto__: null,
12597
- Default: Default$d,
12802
+ Default: Default$e,
12598
12803
  Orangey: Orangey,
12599
12804
  Netflix: Netflix,
12600
12805
  SaaSquatchCorporate: SaaSquatchCorporate,
@@ -15202,6 +15407,7 @@ const stories = [
15202
15407
  UseLeaderboard,
15203
15408
  UseCheckboxField,
15204
15409
  UseDropdownField,
15410
+ UseInputField,
15205
15411
  Router,
15206
15412
  PortalFrame,
15207
15413
  EditProfile,
@@ -15235,6 +15441,7 @@ const stories = [
15235
15441
  NameFields$1,
15236
15442
  CheckboxField,
15237
15443
  DropdownField,
15444
+ InputField,
15238
15445
  RewardExchangeList,
15239
15446
  UseRewardExchangeList,
15240
15447
  UseTaskCard,
@@ -15260,14 +15467,14 @@ const StencilStorybook = class {
15260
15467
  constructor(hostRef) {
15261
15468
  index.registerInstance(this, hostRef);
15262
15469
  this.ignored = true;
15263
- stencilHooks_module.h$1(this);
15470
+ stencilHooks_module.h(this);
15264
15471
  }
15265
15472
  disconnectedCallback() { }
15266
15473
  render() {
15267
15474
  const { class: Style, children } = f(stories, {
15268
15475
  h: index.h,
15269
15476
  title: "Mint Components",
15270
- addons: [CucumberAddon, ShadowViewAddon.ShadowViewAddon, HookStoryAddon],
15477
+ addons: [HookStoryAddon, ShadowViewAddon.ShadowViewAddon, CucumberAddon],
15271
15478
  });
15272
15479
  const [selectedTheme, setSelected] = stencilHooks_module.useState("Default");
15273
15480
  const [checkerboard, setCheckerboard] = stencilHooks_module.useState(true);