@saasquatch/mint-components 1.5.0-113 → 1.5.0-117
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +82 -15
- package/dist/cjs/{GenericTableView-f947b749.js → GenericTableView-ed381b89.js} +7 -6
- package/dist/cjs/{ShadowViewAddon-79dd6c07.js → ShadowViewAddon-60ca6e6c.js} +242 -179
- package/dist/cjs/{global-633d1fb7.js → global-13123238.js} +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/mint-components.cjs.js +2 -2
- package/dist/cjs/{sqm-big-stat_30.cjs.entry.js → sqm-big-stat_31.cjs.entry.js} +198 -154
- package/dist/cjs/sqm-empty_5.cjs.entry.js +3 -2
- package/dist/cjs/{sqm-hero-view-a13795c0.js → sqm-hero-view-3b0d45d0.js} +1 -0
- package/dist/cjs/sqm-hero.cjs.entry.js +1 -1
- package/dist/cjs/sqm-leaderboard-rank.cjs.entry.js +1 -1
- package/dist/cjs/{sqm-portal-container-view-d101032e.js → sqm-portal-container-view-5ea913a8.js} +2 -1
- package/dist/cjs/{sqm-portal-email-verification-view-c32a55d6.js → sqm-portal-email-verification-view-535ae80c.js} +2 -2
- package/dist/cjs/sqm-portal-email-verification.cjs.entry.js +3 -3
- package/dist/cjs/{sqm-portal-footer-view-cac67bc9.js → sqm-portal-footer-view-3c62d7a6.js} +1 -1
- package/dist/cjs/sqm-portal-footer.cjs.entry.js +2 -2
- package/dist/cjs/{sqm-portal-forgot-password-view-10c0b54f.js → sqm-portal-forgot-password-view-02b046e1.js} +1 -1
- package/dist/cjs/sqm-portal-forgot-password.cjs.entry.js +2 -2
- package/dist/cjs/{sqm-portal-profile-view-72c40619.js → sqm-portal-profile-view-12c9cd73.js} +3 -3
- package/dist/cjs/sqm-portal-profile.cjs.entry.js +4 -4
- package/dist/cjs/{sqm-portal-reset-password-view-1fdc957e.js → sqm-portal-reset-password-view-20df8d45.js} +1 -1
- package/dist/cjs/sqm-portal-reset-password.cjs.entry.js +2 -2
- package/dist/cjs/{sqm-portal-section-view-186a5f7e.js → sqm-portal-section-view-f3c8475a.js} +1 -0
- package/dist/cjs/{sqm-portal-verify-email-view-4c78e231.js → sqm-portal-verify-email-view-1b07a1ba.js} +1 -1
- package/dist/cjs/sqm-portal-verify-email.cjs.entry.js +2 -2
- package/dist/cjs/sqm-referral-table_11.cjs.entry.js +27 -10
- package/dist/cjs/sqm-rewards-table-customer-note-cell.cjs.entry.js +1 -1
- package/dist/cjs/sqm-rewards-table_9.cjs.entry.js +37 -21
- package/dist/cjs/sqm-stencilbook.cjs.entry.js +252 -115
- package/dist/cjs/sqm-text-span-view-c54af22c.js +59 -0
- package/dist/cjs/sqm-text-span.cjs.entry.js +1 -1
- package/dist/collection/components/sqm-big-stat/UseBigStat.stories.js +15 -3
- package/dist/collection/components/sqm-big-stat/sqm-big-stat-view.js +1 -0
- package/dist/collection/components/sqm-big-stat/sqm-big-stat.js +3 -3
- package/dist/collection/components/sqm-big-stat/useBigStat.js +1 -1
- package/dist/collection/components/sqm-card-feed/sqm-card-feed-view.js +1 -0
- package/dist/collection/components/sqm-hero/sqm-hero-view.js +1 -0
- package/dist/collection/components/sqm-hero-image/sqm-hero-image-view.js +9 -2
- package/dist/collection/components/sqm-image/sqm-image-view.js +1 -0
- package/dist/collection/components/sqm-leaderboard/UseLeaderboard.stories.js +2 -2
- package/dist/collection/components/sqm-leaderboard/sqm-leaderboard-view.js +0 -5
- package/dist/collection/components/sqm-portal-container/PortalContainer.stories.js +72 -0
- package/dist/collection/components/sqm-portal-container/sqm-portal-container-view.js +2 -1
- package/dist/collection/components/sqm-portal-container/sqm-portal-container.js +26 -0
- package/dist/collection/components/sqm-referral-card/sqm-referral-card-view.js +40 -38
- package/dist/collection/components/sqm-referral-iframe/sqm-referral-iframe-view.js +1 -0
- package/dist/collection/components/sqm-referral-table/ReferralTable.stories.js +1 -1
- package/dist/collection/components/sqm-referral-table/cells/sqm-referral-table-rewards-cell.js +0 -1
- package/dist/collection/components/sqm-referral-table/columns/sqm-referral-table-rewards-column.js +10 -1
- package/dist/collection/components/sqm-referral-table/columns/sqm-referral-table-status-column.js +5 -1
- package/dist/collection/components/sqm-referral-table/sqm-referral-table.js +12 -10
- package/dist/collection/components/sqm-reward-exchange-list/RewardExchangeListData.js +1 -1
- package/dist/collection/components/sqm-reward-exchange-list/sqm-reward-exchange-list-view.js +1 -1
- package/dist/collection/components/sqm-reward-exchange-list/sqm-reward-exchange-list.js +11 -9
- package/dist/collection/components/sqm-rewards-table/RewardsTableCell.stories.js +10 -10
- package/dist/collection/components/sqm-rewards-table/cells/sqm-rewards-table-reward-cell.js +9 -25
- package/dist/collection/components/sqm-rewards-table/columns/sqm-rewards-table-reward-column.js +7 -27
- package/dist/collection/components/sqm-rewards-table/columns/sqm-rewards-table-source-column.js +3 -0
- package/dist/collection/components/sqm-rewards-table/columns/sqm-rewards-table-status-column.js +1 -1
- package/dist/collection/components/sqm-rewards-table/sqm-rewards-table.js +14 -9
- package/dist/collection/components/sqm-rewards-table/useRewardsTable.js +7 -1
- package/dist/collection/components/sqm-scroll/Scroll.stories.js +14 -23
- package/dist/collection/components/sqm-scroll/sqm-scroll.js +102 -147
- package/dist/collection/components/sqm-share-button/ShareButton.stories.js +8 -8
- package/dist/collection/components/sqm-share-button/sqm-share-button-view.js +29 -29
- package/dist/collection/components/sqm-share-button/sqm-share-button.js +21 -21
- package/dist/collection/components/sqm-share-code/ShareCode.stories.js +2 -2
- package/dist/collection/components/sqm-share-code/sqm-share-code.js +7 -7
- package/dist/collection/components/sqm-share-code/useShareCode.js +1 -1
- package/dist/collection/components/sqm-share-link/ShareLink.stories.js +3 -3
- package/dist/collection/components/sqm-share-link/UseShareLink.stories.js +3 -3
- package/dist/collection/components/sqm-share-link/sqm-share-link-view.js +1 -1
- package/dist/collection/components/sqm-share-link/sqm-share-link.js +4 -4
- package/dist/collection/components/sqm-stat-container/sqm-stat-container-view.js +1 -0
- package/dist/collection/components/sqm-stencilbook/sqm-stencilbook.js +2 -0
- package/dist/collection/components/sqm-tabs/sqm-tabs.js +1 -1
- package/dist/collection/components/sqm-task-card/DetailsView.js +1 -1
- package/dist/collection/components/sqm-task-card/progress-bar/SVGs.js +7 -0
- package/dist/collection/components/sqm-task-card/progress-bar/progress-bar-view.js +52 -50
- package/dist/collection/components/sqm-task-card/sqm-task-card-view.js +18 -10
- package/dist/collection/components/sqm-task-card/sqm-task-card.js +3 -1
- package/dist/collection/components/sqm-text-span/sqm-text-span-view.js +42 -42
- package/dist/collection/components/sqm-timeline/sqm-timeline-entry-view.js +77 -0
- package/dist/collection/components/sqm-timeline/sqm-timeline-entry.js +1 -80
- package/dist/collection/components/sqm-timeline/sqm-timeline.js +0 -18
- package/dist/collection/components/sqm-titled-section/sqm-portal-section-view.js +1 -0
- package/dist/collection/global/styles.js +1 -0
- package/dist/collection/global/styles.ts +1 -0
- package/dist/collection/stories/NewPortal.stories.js +2 -2
- package/dist/collection/stories/PortalTemplates.stories.js +0 -7
- package/dist/collection/stories/Widget.stories.js +49 -0
- package/dist/collection/tables/GenericTableView.js +7 -6
- package/dist/esm/{GenericTableView-6b7b537b.js → GenericTableView-6924630b.js} +7 -6
- package/dist/esm/{ShadowViewAddon-9c382e30.js → ShadowViewAddon-3347acdb.js} +242 -180
- package/dist/esm/{global-7d4eb5e5.js → global-9bff4920.js} +1 -0
- package/dist/esm/loader.js +2 -2
- package/dist/esm/mint-components.js +2 -2
- package/dist/esm/{sqm-big-stat_30.entry.js → sqm-big-stat_31.entry.js} +199 -156
- package/dist/esm/sqm-empty_5.entry.js +3 -2
- package/dist/esm/{sqm-hero-view-5ea17052.js → sqm-hero-view-8e70916e.js} +1 -0
- package/dist/esm/sqm-hero.entry.js +1 -1
- package/dist/esm/sqm-leaderboard-rank.entry.js +1 -1
- package/dist/esm/{sqm-portal-container-view-dea0cdcc.js → sqm-portal-container-view-46929235.js} +2 -1
- package/dist/esm/{sqm-portal-email-verification-view-86e3ff2e.js → sqm-portal-email-verification-view-1d7eca0a.js} +2 -2
- package/dist/esm/sqm-portal-email-verification.entry.js +3 -3
- package/dist/esm/{sqm-portal-footer-view-d6a43c4d.js → sqm-portal-footer-view-df66904d.js} +1 -1
- package/dist/esm/sqm-portal-footer.entry.js +2 -2
- package/dist/esm/{sqm-portal-forgot-password-view-fa088f83.js → sqm-portal-forgot-password-view-6b99a1ad.js} +1 -1
- package/dist/esm/sqm-portal-forgot-password.entry.js +2 -2
- package/dist/esm/{sqm-portal-profile-view-c34e781b.js → sqm-portal-profile-view-b96b89a3.js} +3 -3
- package/dist/esm/sqm-portal-profile.entry.js +4 -4
- package/dist/esm/{sqm-portal-reset-password-view-73e14282.js → sqm-portal-reset-password-view-2c0da51c.js} +1 -1
- package/dist/esm/sqm-portal-reset-password.entry.js +2 -2
- package/dist/esm/{sqm-portal-section-view-88a80af9.js → sqm-portal-section-view-61dbb8a9.js} +1 -0
- package/dist/esm/{sqm-portal-verify-email-view-cbf1cfdc.js → sqm-portal-verify-email-view-0d005914.js} +1 -1
- package/dist/esm/sqm-portal-verify-email.entry.js +2 -2
- package/dist/esm/sqm-referral-table_11.entry.js +27 -10
- package/dist/esm/sqm-rewards-table-customer-note-cell.entry.js +1 -1
- package/dist/esm/sqm-rewards-table_9.entry.js +37 -21
- package/dist/esm/sqm-stencilbook.entry.js +248 -111
- package/dist/esm/sqm-text-span-view-c8793d61.js +57 -0
- package/dist/esm/sqm-text-span.entry.js +1 -1
- package/dist/esm-es5/GenericTableView-6924630b.js +1 -0
- package/dist/esm-es5/ShadowViewAddon-3347acdb.js +1 -0
- package/dist/esm-es5/{global-7d4eb5e5.js → global-9bff4920.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/mint-components.js +1 -1
- package/dist/esm-es5/sqm-big-stat_31.entry.js +1 -0
- package/dist/esm-es5/sqm-empty_5.entry.js +1 -1
- package/dist/esm-es5/{sqm-hero-view-5ea17052.js → sqm-hero-view-8e70916e.js} +0 -0
- package/dist/esm-es5/sqm-hero.entry.js +1 -1
- package/dist/esm-es5/sqm-leaderboard-rank.entry.js +1 -1
- package/dist/esm-es5/sqm-portal-container-view-46929235.js +1 -0
- package/dist/esm-es5/{sqm-portal-email-verification-view-86e3ff2e.js → sqm-portal-email-verification-view-1d7eca0a.js} +1 -1
- package/dist/esm-es5/sqm-portal-email-verification.entry.js +1 -1
- package/dist/esm-es5/{sqm-portal-footer-view-d6a43c4d.js → sqm-portal-footer-view-df66904d.js} +1 -1
- package/dist/esm-es5/sqm-portal-footer.entry.js +1 -1
- package/dist/esm-es5/{sqm-portal-forgot-password-view-fa088f83.js → sqm-portal-forgot-password-view-6b99a1ad.js} +1 -1
- package/dist/esm-es5/sqm-portal-forgot-password.entry.js +1 -1
- package/dist/esm-es5/{sqm-portal-profile-view-c34e781b.js → sqm-portal-profile-view-b96b89a3.js} +1 -1
- package/dist/esm-es5/sqm-portal-profile.entry.js +1 -1
- package/dist/esm-es5/{sqm-portal-reset-password-view-73e14282.js → sqm-portal-reset-password-view-2c0da51c.js} +1 -1
- package/dist/esm-es5/sqm-portal-reset-password.entry.js +1 -1
- package/dist/esm-es5/{sqm-portal-section-view-88a80af9.js → sqm-portal-section-view-61dbb8a9.js} +0 -0
- package/dist/esm-es5/{sqm-portal-verify-email-view-cbf1cfdc.js → sqm-portal-verify-email-view-0d005914.js} +1 -1
- package/dist/esm-es5/sqm-portal-verify-email.entry.js +1 -1
- package/dist/esm-es5/sqm-referral-table_11.entry.js +1 -1
- package/dist/esm-es5/sqm-rewards-table-customer-note-cell.entry.js +1 -1
- package/dist/esm-es5/sqm-rewards-table_9.entry.js +1 -1
- package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
- package/dist/{mint-components/p-179988b5.js → esm-es5/sqm-text-span-view-c8793d61.js} +1 -1
- package/dist/esm-es5/sqm-text-span.entry.js +1 -1
- package/dist/mint-components/global/styles.ts +1 -0
- package/dist/mint-components/mint-components.esm.js +1 -1
- package/dist/mint-components/mint-components.js +1 -1
- package/dist/mint-components/{p-e08f5f8e.js → p-00c0fd3c.js} +0 -0
- package/dist/mint-components/{p-49667de1.system.entry.js → p-07b18f4a.system.entry.js} +1 -1
- package/dist/mint-components/{p-f31a3a08.system.entry.js → p-099d949d.system.entry.js} +1 -1
- package/dist/mint-components/{p-ce0ec1c4.system.js → p-1830b02e.system.js} +1 -1
- package/dist/mint-components/p-1e57c649.entry.js +9 -0
- package/dist/mint-components/p-23a3e161.entry.js +1 -0
- package/dist/mint-components/{p-3dbd3303.entry.js → p-258dc62f.entry.js} +1 -1
- package/dist/mint-components/{p-1c3c2ddb.system.js → p-26b42a93.system.js} +1 -1
- package/dist/mint-components/{p-147440c3.js → p-2ec8c64c.js} +0 -0
- package/dist/mint-components/{p-e82076e4.system.js → p-2ef43b0b.system.js} +1 -1
- package/dist/mint-components/{p-91951a0a.system.entry.js → p-3295bcea.system.entry.js} +1 -1
- package/dist/mint-components/{p-d7736049.system.entry.js → p-32b9d246.system.entry.js} +1 -1
- package/dist/mint-components/p-33159b8f.entry.js +99 -0
- package/dist/mint-components/p-39928661.system.entry.js +1 -0
- package/dist/mint-components/{p-96bbb28a.system.entry.js → p-3bb7f637.system.entry.js} +1 -1
- package/dist/mint-components/{p-6b43e4cc.system.js → p-3bf4f950.system.js} +1 -1
- package/dist/mint-components/{p-53af4433.system.js → p-3cf449ba.system.js} +0 -0
- package/dist/mint-components/{p-fe0d7472.entry.js → p-4556231d.entry.js} +1 -1
- package/dist/mint-components/{p-759df017.system.entry.js → p-4fdc7713.system.entry.js} +1 -1
- package/dist/mint-components/{p-6a87a09f.entry.js → p-5c35a4e6.entry.js} +1 -1
- package/dist/mint-components/p-5c71ba83.js +268 -0
- package/dist/mint-components/{p-8d7ae057.system.entry.js → p-60abe71f.system.entry.js} +1 -1
- package/dist/mint-components/p-6660f97d.system.js +1 -0
- package/dist/mint-components/p-6faceb79.system.entry.js +1 -0
- package/dist/mint-components/{p-eb61462d.entry.js → p-710dd330.entry.js} +12 -12
- package/dist/mint-components/{p-1959da16.system.js → p-73e64749.system.js} +1 -1
- package/dist/mint-components/{p-4f4bdfad.system.entry.js → p-79e4c06a.system.entry.js} +1 -1
- package/dist/mint-components/{p-3bdc5918.js → p-7b074331.js} +1 -1
- package/dist/mint-components/{p-4a1b7d35.js → p-7fe7dbb0.js} +1 -1
- package/dist/mint-components/{p-d264d1a0.system.js → p-80845175.system.js} +1 -1
- package/dist/mint-components/{p-200ffff7.entry.js → p-96f571e5.entry.js} +1 -1
- package/dist/mint-components/p-99e7434e.js +1 -0
- package/dist/mint-components/{p-93e15034.entry.js → p-9dee36f6.entry.js} +1 -1
- package/dist/mint-components/{p-16023c39.system.entry.js → p-a35ce12b.system.entry.js} +1 -1
- package/dist/mint-components/{p-2af6bb32.system.entry.js → p-a36892ea.system.entry.js} +1 -1
- package/dist/mint-components/p-a82df645.system.entry.js +1 -0
- package/dist/mint-components/{p-55b6147d.js → p-abc7fa04.js} +1 -1
- package/dist/mint-components/p-ad741ee2.system.entry.js +1 -0
- package/dist/mint-components/p-aebee81d.system.js +1 -0
- package/dist/mint-components/{p-3e65453b.system.js → p-b756428e.system.js} +0 -0
- package/dist/mint-components/{p-1d1e9197.js → p-ba597021.js} +1 -1
- package/dist/mint-components/p-bb630f90.system.js +1 -0
- package/dist/mint-components/p-c887a653.system.js +1 -0
- package/dist/mint-components/{p-d33eb961.js → p-c8cb3674.js} +1 -1
- package/dist/mint-components/{p-20e8567f.entry.js → p-ca696a40.entry.js} +1 -1
- package/dist/mint-components/{p-1204f7df.entry.js → p-cfe3ceb7.entry.js} +1 -1
- package/dist/mint-components/{p-a8141e7b.entry.js → p-d073aead.entry.js} +1 -1
- package/dist/mint-components/p-db46fe90.js +1 -0
- package/dist/mint-components/{p-fcd096b3.entry.js → p-dc0b8fdb.entry.js} +1 -1
- package/dist/mint-components/{p-ce8b1b36.system.js → p-e2cb443e.system.js} +1 -1
- package/dist/mint-components/{p-72a798c3.entry.js → p-e3fff405.entry.js} +1 -1
- package/dist/mint-components/p-ec5633b8.js +1 -0
- package/dist/mint-components/p-ec77261d.system.js +1 -0
- package/dist/mint-components/{p-e57bb617.entry.js → p-ee1684ae.entry.js} +1 -1
- package/dist/mint-components/{p-c5314bbc.js → p-eff88c3d.js} +1 -1
- package/dist/mint-components/p-f34dd1c1.js +1 -0
- package/dist/mint-components/{p-72296718.system.entry.js → p-f72dc3a5.system.entry.js} +1 -1
- package/dist/types/components/sqm-big-stat/UseBigStat.stories.d.ts +24 -0
- package/dist/types/components/sqm-portal-container/PortalContainer.stories.d.ts +6 -0
- package/dist/types/components/sqm-portal-container/sqm-portal-container-view.d.ts +1 -0
- package/dist/types/components/sqm-portal-container/sqm-portal-container.d.ts +6 -0
- package/dist/types/components/sqm-referral-table/sqm-referral-table.d.ts +2 -3
- package/dist/types/components/sqm-reward-exchange-list/RewardExchangeListData.d.ts +19 -19
- package/dist/types/components/sqm-reward-exchange-list/sqm-reward-exchange-list-view.d.ts +1 -1
- package/dist/types/components/sqm-reward-exchange-list/sqm-reward-exchange-list.d.ts +6 -4
- package/dist/types/components/sqm-reward-exchange-list/useRewardExchangeList.d.ts +1 -1
- package/dist/types/components/sqm-rewards-table/cells/sqm-rewards-table-reward-cell.d.ts +0 -1
- package/dist/types/components/sqm-rewards-table/columns/sqm-rewards-table-reward-column.d.ts +0 -4
- package/dist/types/components/sqm-rewards-table/sqm-rewards-table.d.ts +7 -4
- package/dist/types/components/sqm-scroll/Scroll.stories.d.ts +1 -0
- package/dist/types/components/sqm-scroll/sqm-scroll.d.ts +56 -8
- package/dist/types/components/sqm-share-button/sqm-share-button-view.d.ts +6 -6
- package/dist/types/components/sqm-share-button/sqm-share-button.d.ts +9 -9
- package/dist/types/components/sqm-share-code/sqm-share-code.d.ts +2 -2
- package/dist/types/components/sqm-share-code/useShareCode.d.ts +2 -2
- package/dist/types/components/sqm-share-link/sqm-share-link-view.d.ts +1 -1
- package/dist/types/components/sqm-share-link/sqm-share-link.d.ts +1 -1
- package/dist/types/components/sqm-share-link/useShareLink.d.ts +1 -1
- package/dist/types/components/sqm-tabs/sqm-tabs.d.ts +1 -1
- package/dist/types/components/sqm-task-card/progress-bar/SVGs.d.ts +1 -0
- package/dist/types/components/sqm-task-card/progress-bar/progress-bar-view.d.ts +1 -0
- package/dist/types/components/sqm-task-card/sqm-task-card.d.ts +2 -0
- package/dist/types/components/sqm-timeline/sqm-timeline-entry-view.d.ts +9 -0
- package/dist/types/components.d.ts +172 -78
- package/dist/types/global/styles.d.ts +1 -1
- package/dist/types/stories/Widget.stories.d.ts +22 -0
- package/grapesjs/grapesjs.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/sqm-stat-container-view-8aaf6cb8.js +0 -52
- package/dist/cjs/sqm-stat-container.cjs.entry.js +0 -36
- package/dist/cjs/sqm-text-span-view-f101dedf.js +0 -59
- package/dist/esm/sqm-stat-container-view-226b6496.js +0 -50
- package/dist/esm/sqm-stat-container.entry.js +0 -32
- package/dist/esm/sqm-text-span-view-7e61c95c.js +0 -57
- package/dist/esm-es5/GenericTableView-6b7b537b.js +0 -1
- package/dist/esm-es5/ShadowViewAddon-9c382e30.js +0 -1
- package/dist/esm-es5/sqm-big-stat_30.entry.js +0 -1
- package/dist/esm-es5/sqm-portal-container-view-dea0cdcc.js +0 -1
- package/dist/esm-es5/sqm-stat-container-view-226b6496.js +0 -1
- package/dist/esm-es5/sqm-stat-container.entry.js +0 -1
- package/dist/esm-es5/sqm-text-span-view-7e61c95c.js +0 -1
- package/dist/mint-components/p-1a786c17.js +0 -1
- package/dist/mint-components/p-1b71a09e.system.entry.js +0 -1
- package/dist/mint-components/p-1cd23e56.system.entry.js +0 -1
- package/dist/mint-components/p-2c5d7a20.js +0 -268
- package/dist/mint-components/p-3f88f8eb.system.js +0 -1
- package/dist/mint-components/p-45581e0b.entry.js +0 -9
- package/dist/mint-components/p-48161ba8.js +0 -1
- package/dist/mint-components/p-4e0ce80b.js +0 -1
- package/dist/mint-components/p-546ee840.entry.js +0 -1
- package/dist/mint-components/p-55f3d841.system.js +0 -1
- package/dist/mint-components/p-78df4d2d.system.js +0 -1
- package/dist/mint-components/p-8bcaafaf.system.js +0 -1
- package/dist/mint-components/p-9e4f0169.system.entry.js +0 -1
- package/dist/mint-components/p-a44b64d5.js +0 -1
- package/dist/mint-components/p-ac303785.system.js +0 -1
- package/dist/mint-components/p-b359d5a5.entry.js +0 -1
- package/dist/mint-components/p-bb497e73.entry.js +0 -93
- package/dist/mint-components/p-c5086d90.system.js +0 -1
- package/dist/mint-components/p-e16186c0.system.entry.js +0 -1
- package/dist/mint-components/p-e2731437.system.entry.js +0 -1
|
@@ -1,32 +1,31 @@
|
|
|
1
1
|
import { h, r as registerInstance, c as Host } from './index-17b4da69.js';
|
|
2
2
|
import { a as commonjsGlobal, i as useMemo, k as useState, e as useEffect, c as createCommonjsModule, m as h$1 } from './stencil-hooks.module-acc8a613.js';
|
|
3
|
-
import './global-
|
|
3
|
+
import './global-9bff4920.js';
|
|
4
4
|
import './use-callback-7e0bfd3b.js';
|
|
5
5
|
import { c as dn, l as ln, e as ae$1, d as dist, _ as _e, f as A$1 } from './index.module-aac201f3.js';
|
|
6
6
|
import './extends-c31f1eff.js';
|
|
7
7
|
import './cjs-bdfb4486.js';
|
|
8
8
|
import './mixins-10353a39.js';
|
|
9
9
|
import { c as createStyleSheet } from './JSS-96eeab98.js';
|
|
10
|
-
import { G as GenericTableView } from './GenericTableView-
|
|
10
|
+
import { G as GenericTableView } from './GenericTableView-6924630b.js';
|
|
11
11
|
import { l as luxon } from './luxon-f44215d9.js';
|
|
12
12
|
import './utils-1d345130.js';
|
|
13
|
-
import './sqm-text-span-view-
|
|
13
|
+
import './sqm-text-span-view-c8793d61.js';
|
|
14
14
|
import { A as AssetCardView } from './sqm-asset-card-view-f9ca5345.js';
|
|
15
|
-
import { H as HeroView } from './sqm-hero-view-
|
|
15
|
+
import { H as HeroView } from './sqm-hero-view-8e70916e.js';
|
|
16
16
|
import { L as LeaderboardRankView } from './sqm-leaderboard-rank-view-da91f5f3.js';
|
|
17
17
|
import { N as NameFieldsView } from './sqm-name-fields-view-69b1583f.js';
|
|
18
18
|
import { N as NavigationSidebarView } from './sqm-navigation-sidebar-view-816558e3.js';
|
|
19
19
|
import { N as NavigationSidebarItemView } from './sqm-navigation-sidebar-item-view-df7cc698.js';
|
|
20
|
-
import { P as PortalEmailVerificationView } from './sqm-portal-email-verification-view-
|
|
21
|
-
import { a as PoweredByImg$1, P as PortalFooterView } from './sqm-portal-footer-view-
|
|
22
|
-
import { P as PortalForgotPasswordView } from './sqm-portal-forgot-password-view-
|
|
23
|
-
import { P as PortalContainerView } from './sqm-portal-container-view-
|
|
24
|
-
import { P as PortalProfileView } from './sqm-portal-profile-view-
|
|
25
|
-
import { P as PortalResetPasswordView } from './sqm-portal-reset-password-view-
|
|
26
|
-
import { P as PortalVerifyEmailView } from './sqm-portal-verify-email-view-
|
|
27
|
-
import { S as StatContainerView } from './
|
|
28
|
-
import {
|
|
29
|
-
import { P as PortalSectionView } from './sqm-portal-section-view-88a80af9.js';
|
|
20
|
+
import { P as PortalEmailVerificationView } from './sqm-portal-email-verification-view-1d7eca0a.js';
|
|
21
|
+
import { a as PoweredByImg$1, P as PortalFooterView } from './sqm-portal-footer-view-df66904d.js';
|
|
22
|
+
import { P as PortalForgotPasswordView } from './sqm-portal-forgot-password-view-6b99a1ad.js';
|
|
23
|
+
import { P as PortalContainerView } from './sqm-portal-container-view-46929235.js';
|
|
24
|
+
import { P as PortalProfileView } from './sqm-portal-profile-view-b96b89a3.js';
|
|
25
|
+
import { P as PortalResetPasswordView } from './sqm-portal-reset-password-view-2c0da51c.js';
|
|
26
|
+
import { P as PortalVerifyEmailView } from './sqm-portal-verify-email-view-0d005914.js';
|
|
27
|
+
import { S as ShareButtonView, L as LeaderboardView, a as ShareLinkView, B as BigStatView, P as PortalFrameView, E as EditProfileView, u as useShareLink, b as useShareButton, c as useDemoBigStat, d as StatContainerView, e as PortalChangePasswordView, f as PortalLoginView, g as PortalRegisterView, T as TaskCardView, h as ProgressBarView, R as ReferralIframeView, i as RewardExchangeView, r as rewardExchangeCustomErrorMsg, j as rewardExchangeLongText, k as rewardExchangeSelected, l as chooseAmountFixed, m as chooseAmountFixedNoDescription, n as chooseAmountVariable, o as chooseAmountVariableNoDescription, p as chooseAmountVariableDisabled, q as chooseAmountVariableUnavailable, s as confirmFixed, t as confirmVariable, v as redemptionError, w as queryError, x as success, y as successVariable, z as loading, A as empty$1, C as rewardExchange, D as CardFeedView, F as autoColorScaleCss, G as ShadowViewAddon } from './ShadowViewAddon-3347acdb.js';
|
|
28
|
+
import { P as PortalSectionView } from './sqm-portal-section-view-61dbb8a9.js';
|
|
30
29
|
|
|
31
30
|
/**
|
|
32
31
|
* lodash (Custom Build) <https://lodash.com/>
|
|
@@ -1453,11 +1452,11 @@ const ShareButton_stories = {
|
|
|
1453
1452
|
},
|
|
1454
1453
|
};
|
|
1455
1454
|
const WithIconPrefix = () => {
|
|
1456
|
-
const props = { medium: "whatsapp",
|
|
1455
|
+
const props = { medium: "whatsapp", iconSlot: "prefix" };
|
|
1457
1456
|
return h(ShareButtonView, Object.assign({}, props), "Share");
|
|
1458
1457
|
};
|
|
1459
1458
|
const WithIconSuffix = () => {
|
|
1460
|
-
const props = { medium: "whatsapp",
|
|
1459
|
+
const props = { medium: "whatsapp", iconSlot: "suffix" };
|
|
1461
1460
|
return h(ShareButtonView, Object.assign({}, props), "Share");
|
|
1462
1461
|
};
|
|
1463
1462
|
const WithIconOverride = () => {
|
|
@@ -1475,15 +1474,15 @@ const TextStyle = () => {
|
|
|
1475
1474
|
return h(ShareButtonView, Object.assign({}, props), "Share");
|
|
1476
1475
|
};
|
|
1477
1476
|
const WithoutIcon = () => {
|
|
1478
|
-
const props = { medium: "facebook",
|
|
1477
|
+
const props = { medium: "facebook", hideIcon: true };
|
|
1479
1478
|
return h(ShareButtonView, Object.assign({}, props), "Share");
|
|
1480
1479
|
};
|
|
1481
1480
|
const WithoutText = () => {
|
|
1482
|
-
const props = { medium: "facebook",
|
|
1481
|
+
const props = { medium: "facebook", hideText: true };
|
|
1483
1482
|
return h(ShareButtonView, Object.assign({}, props), "Share");
|
|
1484
1483
|
};
|
|
1485
1484
|
const TextStyleWithoutIcon = () => {
|
|
1486
|
-
const props = { medium: "facebook", type: "text",
|
|
1485
|
+
const props = { medium: "facebook", type: "text", hideIcon: true };
|
|
1487
1486
|
return h(ShareButtonView, Object.assign({}, props), "Share");
|
|
1488
1487
|
};
|
|
1489
1488
|
const WithCustomColors = () => {
|
|
@@ -1492,7 +1491,7 @@ const WithCustomColors = () => {
|
|
|
1492
1491
|
type: "text",
|
|
1493
1492
|
backgroundcolor: "red",
|
|
1494
1493
|
textcolor: "yellow",
|
|
1495
|
-
|
|
1494
|
+
iconSlot: "prefix",
|
|
1496
1495
|
};
|
|
1497
1496
|
return h(ShareButtonView, Object.assign({}, props), "Facebook");
|
|
1498
1497
|
};
|
|
@@ -1500,8 +1499,8 @@ const WithCustomBorderRadius = () => {
|
|
|
1500
1499
|
const props = {
|
|
1501
1500
|
medium: "facebook",
|
|
1502
1501
|
type: "text",
|
|
1503
|
-
|
|
1504
|
-
|
|
1502
|
+
borderRadius: 8,
|
|
1503
|
+
iconSlot: "prefix",
|
|
1505
1504
|
};
|
|
1506
1505
|
return h(ShareButtonView, Object.assign({}, props), "Facebook");
|
|
1507
1506
|
};
|
|
@@ -1621,7 +1620,7 @@ const EmptyState = /*#__PURE__*/Object.freeze({
|
|
|
1621
1620
|
SlottedIntoComponent: SlottedIntoComponent
|
|
1622
1621
|
});
|
|
1623
1622
|
|
|
1624
|
-
const scenario$2 = "@author:johan\r\n@owner:johan\r\nFeature: Share Link\r\n\r\n The share link component is a box that allows users to see and copy their share link for a given program\r\n\r\n Background: Environment\r\n Given there is a valid program ID in the environment\r\n And there is a valid user ID and account ID in the environment\r\n\r\n @motivating\r\n Scenario: A Users sharelink can be copied to their clipboard\r\n Given
|
|
1623
|
+
const scenario$2 = "@author:johan\r\n@owner:johan\r\nFeature: Share Link\r\n\r\n The share link component is a box that allows users to see and copy their share link for a given program\r\n\r\n Background: Environment\r\n Given there is a valid program ID in the environment\r\n And there is a valid user ID and account ID in the environment\r\n\r\n @motivating\r\n Scenario: A Users sharelink can be copied to their clipboard\r\n Given tooltipText is \"hello tooltip\"\r\n When the component renders\r\n Then there is a textbox with the user's share link\r\n When the clipboard icon is clicked\r\n Then the link is copied to clipboard\r\n And a tooltip appears for ~1 second\r\n\r\n @minutae\r\n Scenario: Tooltip lifespan defaults to 2000\r\n Given the tooltip's lifespan is set to 2000\r\n And there is tooltip text\r\n When the component renders\r\n And the clipboard icon is clicked\r\n Then a tooltip appears for ~2 seconds\r\n\r\n @minutae\r\n Scenario: Demo\r\n Given isDemo() returns true\r\n Then the share link is \"https://www.example.com/sharelink/abc\"\r\n And the component won't be interactive\r\n And the tooltip is hidden\r\n\r\n @minutae\r\n Scenario: Program ID can be sourced from prop\r\n Given the programId prop is set to \"program-a\"\r\n And window.widgetIdent.programId is set to \"program-b\"\r\n When the component renders\r\n Then the share link is for \"program-a\"\r\n\r\n @minutae\r\n Scenario: Program ID can be sourced from window\r\n Given the programId prop is unset\r\n And window.widgetIdent.programId is set to \"program-b\"\r\n When the component renders\r\n Then the share link is for \"program-b\"\r\n\r\n @minutae\r\n Scenario: An analytic event is fired when a user copies their sharelink\r\n Given a user viewing the share link component\r\n And the component is rendered for \"program-a\"\r\n When they click to copy their link\r\n Then an \"USER_REFERRAL_PROGRAM_ENGAGEMENT_EVENT\" analytic event is fired\r\n And it is for \"program-a\"\r\n And it has share medium \"DIRECT\"\r\n";
|
|
1625
1624
|
|
|
1626
1625
|
const ShareLink_stories = {
|
|
1627
1626
|
title: "Components/Share Link",
|
|
@@ -1633,14 +1632,14 @@ const Default = () => {
|
|
|
1633
1632
|
const props = {
|
|
1634
1633
|
shareString: "https://noah.example.com",
|
|
1635
1634
|
open: false,
|
|
1636
|
-
|
|
1635
|
+
tooltipText: "Copied!",
|
|
1637
1636
|
};
|
|
1638
1637
|
return h(ShareLinkView, Object.assign({}, props));
|
|
1639
1638
|
};
|
|
1640
1639
|
const Tooltip = () => {
|
|
1641
1640
|
const props = {
|
|
1642
1641
|
shareString: "https://noah.example.com",
|
|
1643
|
-
|
|
1642
|
+
tooltipText: "Some text for the tooltip",
|
|
1644
1643
|
open: true,
|
|
1645
1644
|
};
|
|
1646
1645
|
return h(ShareLinkView, Object.assign({}, props));
|
|
@@ -1650,7 +1649,7 @@ const Disabled = () => {
|
|
|
1650
1649
|
shareString: "https://noah.example.com",
|
|
1651
1650
|
disabled: true,
|
|
1652
1651
|
open: true,
|
|
1653
|
-
|
|
1652
|
+
tooltipText: "Copied!",
|
|
1654
1653
|
};
|
|
1655
1654
|
return h(ShareLinkView, Object.assign({}, props));
|
|
1656
1655
|
};
|
|
@@ -1756,7 +1755,7 @@ const BigStat = /*#__PURE__*/Object.freeze({
|
|
|
1756
1755
|
InvalidStatValue: InvalidStatValue
|
|
1757
1756
|
});
|
|
1758
1757
|
|
|
1759
|
-
const scenario$4 = "@owner:noah\r\n@author:noah\r\nFeature: Leaderboard\r\n\r\n\tThe leaderboard displays the top referrers along with their scores\r\n\r\n\t@motivating\r\n\tScenario Outline: The leaderboard can be for referrals started or converted\r\n\t\tGiven a leaderboard is configured with \"leaderboard-type\" <value>\r\n\t\tAnd a user with started referrals\r\n\t\tAnd a user with converted referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen then only <referralType> referrals are counted in the leaderboard\r\n\t\tExamples:\r\n\t\t\t| value | referralType |\r\n\t\t\t| topStartedReferrers | started |\r\n\t\t\t| topConvertedReferrers | converted |\r\n\t\t\t| | started |\r\n\r\n\t@motivating\r\n\tScenario: If there are any users with referrals the leaderboard is shown\r\n\t\tGiven there is aleast one user\r\n\t\tThen the leaderboard displays up to 10 top referrers\r\n\t\tAnd leaderboard is ordered by the referrers score in descending ordered\r\n\
|
|
1758
|
+
const scenario$4 = "@owner:noah\r\n@author:noah\r\nFeature: Leaderboard\r\n\r\n\tThe leaderboard displays the top referrers along with their scores\r\n\r\n\t@motivating\r\n\tScenario Outline: The leaderboard can be for referrals started or converted\r\n\t\tGiven a leaderboard is configured with \"leaderboard-type\" <value>\r\n\t\tAnd a user with started referrals\r\n\t\tAnd a user with converted referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen then only <referralType> referrals are counted in the leaderboard\r\n\t\tExamples:\r\n\t\t\t| value | referralType |\r\n\t\t\t| topStartedReferrers | started |\r\n\t\t\t| topConvertedReferrers | converted |\r\n\t\t\t| | started |\r\n\r\n\t@motivating\r\n\tScenario: If there are any users with referrals the leaderboard is shown\r\n\t\tGiven there is aleast one user\r\n\t\tThen the leaderboard displays up to 10 top referrers\r\n\t\tAnd leaderboard is ordered by the referrers score in descending ordered\r\n\r\n\t@motivating\r\n\tScenario: The leaderboard can filter referrals within an time interval\r\n\t\tGiven a leaderboard is configured with \"interval\" \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\"\r\n\t\tAnd a user with referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen only referrals from within \"2021-11-02T07:00:00.000Z/2021-11-07T07:00:00.000Z\" are counted in the leaderboard\r\n\r\n\t@motivating\r\n\tScenario Outline: Rank Type can be configured\r\n\t\tGiven a leaderboard is configured with \"rank-type\" <value>\r\n\t\tAnd a user\r\n\t\tWhen they view the leaderboard\r\n\t\tThen their leaderboard rank is their <rank>\r\n\t\tExamples:\r\n\t\t\t| value | rank |\r\n\t\t\t| rowNumber | row number |\r\n\t\t\t| denseRank | dense rank |\r\n\t\t\t| rank | rank |\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: An empty state is displayed if no users\r\n\t\tGiven a user\r\n\t\tBut no users have made any referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen an empty state is dislayed\r\n\t\tAnd they see an image of a leaderboard\r\n\t\tAnd below they see \"View your rank in the leaderboard\"\r\n\t\tAnd below they see \"Be the first to refer a friend and reach the top of the leaderboard\"\r\n\t\tAnd the text is center aligned\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: A custom empty state can be provided\r\n\t\tGiven a user\r\n\t\tBut no users have made any referrals\r\n\t\tWhen they view the leaderboard\r\n\t\tThen the contents of the \"empty\" slot are displayed\r\n\r\n\t@minutiae\r\n\t@ui\r\n\tScenario: Leaderboard headings can be customized\r\n\t\tGiven a leaderboard\r\n\t\tAnd it has the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| rankheading | Place |\r\n\t\t\t| usersheading | Customer |\r\n\t\t\t| statsheading | Referral Count |\r\n\t\t\t| show-rank | true |\r\n\t\tAnd a user\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the following columns with headings\r\n\t\t\t| column | heading |\r\n\t\t\t| rank | Place |\r\n\t\t\t| user | Customer |\r\n\t\t\t| stat | Referral Count |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Rank can be hidden or shown\r\n\t\tGiven a leaderboard\r\n\t\tAnd it has prop \"show-rank\" with <propValue>\r\n\t\tAnd a user\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they <maySee> the rank column\r\n\t\tExamples:\r\n\t\t\t| propValue | maySee |\r\n\t\t\t| true | see |\r\n\t\t\t| false | don't see |\r\n\t\t\t| | don't see |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: Users in the top 10 referrers see their leaderboard row highlighted\r\n\t\tGiven a user\r\n\t\tAnd they are in the top 10 referrers\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the row with their name highlighted with brand colour\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Users not in the top 10 referrers can see their progress at the bottom of the leaderboard\r\n\t\tGiven a user\r\n\t\tAnd they <mayHmayHaveReferralave>\r\n\t\tAnd they are not in the top 10 referrers\r\n\t\tAnd the leaderboard has prop \"show-user\" with <value>\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they <maySee> \"...\" under the top 10 referrers\r\n\t\tAnd under \"...\" they <maySee> a row highlighted with brand colour\r\n\t\tAnd they <maySee> their name\r\n\t\tAnd they <maySee> their referral count\r\n\t\tAnd they <maySeeRank>\r\n\t\tExamples:\r\n\t\t\t| mayHaveReferral | value | maySee | maySeeRank |\r\n\t\t\t| have referrals | true | see | see their rank |\r\n\t\t\t| don't have referrals | true | see | don't see their rank |\r\n\t\t\t| | false | don't see | don't see their rank |\r\n\t\t\t| have referrals | | see | see their rank |\r\n\r\n\t@minutiae\r\n\tScenario: Users without names are displayed as an \"Anonymous User\"\r\n\t\tGiven a user\r\n\t\tAnd they do not have a first name\r\n\t\tAnd they do not have a last initial\r\n\t\tWhen they view the leaderboard\r\n\t\tThen they see the user displayed as \"Anonymous User\"";
|
|
1760
1759
|
|
|
1761
1760
|
const Leaderboard_stories = {
|
|
1762
1761
|
title: "Components/Leaderboard",
|
|
@@ -2541,7 +2540,7 @@ const BareBonesView = createHookStory(() => {
|
|
|
2541
2540
|
const res = useShareLink({
|
|
2542
2541
|
programId: "sam-partner-test-2",
|
|
2543
2542
|
tooltiplifespan: 0,
|
|
2544
|
-
|
|
2543
|
+
tooltipText: "",
|
|
2545
2544
|
});
|
|
2546
2545
|
return (h("div", null,
|
|
2547
2546
|
"Sharelink:",
|
|
@@ -2552,7 +2551,7 @@ const RegularView = createHookStory(() => {
|
|
|
2552
2551
|
setupGraphQL$1();
|
|
2553
2552
|
return (h(ShareLinkView, Object.assign({}, useShareLink({
|
|
2554
2553
|
programId: "sam-partner-test-2",
|
|
2555
|
-
|
|
2554
|
+
tooltipText: "Copied to clipboard",
|
|
2556
2555
|
tooltiplifespan: 1000,
|
|
2557
2556
|
}))));
|
|
2558
2557
|
});
|
|
@@ -2560,7 +2559,7 @@ const FastTooltip = createHookStory(() => {
|
|
|
2560
2559
|
setupGraphQL$1();
|
|
2561
2560
|
return (h(ShareLinkView, Object.assign({}, useShareLink({
|
|
2562
2561
|
programId: "sam-partner-test-2",
|
|
2563
|
-
|
|
2562
|
+
tooltipText: "⠀⠀⠀⠀⠀⠀⠀⠀⠀HELLO THERE!!!\n⠀⠀⠀⡯⡯⡾⠝⠘⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢊⠘⡮⣣⠪⠢⡑⡌\n⠀⠀⠀⠟⠝⠈⠀⠀⠀⠡⠀⠠⢈⠠⢐⢠⢂⢔⣐⢄⡂⢔⠀⡁⢉⠸⢨⢑⠕⡌\n⠀⠀⡀⠁⠀⠀⠀⡀⢂⠡⠈⡔⣕⢮⣳⢯⣿⣻⣟⣯⣯⢷⣫⣆⡂⠀⠀⢐⠑⡌\n⢀⠠⠐⠈⠀⢀⢂⠢⡂⠕⡁⣝⢮⣳⢽⡽⣾⣻⣿⣯⡯⣟⣞⢾⢜⢆⠀⡀⠀⠪\n⣬⠂⠀⠀⢀⢂⢪⠨⢂⠥⣺⡪⣗⢗⣽⢽⡯⣿⣽⣷⢿⡽⡾⡽⣝⢎⠀⠀⠀⢡\n⣿⠀⠀⠀⢂⠢⢂⢥⢱⡹⣪⢞⡵⣻⡪⡯⡯⣟⡾⣿⣻⡽⣯⡻⣪⠧⠑⠀⠁⢐\n⣿⠀⠀⠀⠢⢑⠠⠑⠕⡝⡎⡗⡝⡎⣞⢽⡹⣕⢯⢻⠹⡹⢚⠝⡷⡽⡨⠀⠀⢔\n⣿⡯⠀⢈⠈⢄⠂⠂⠐⠀⠌⠠⢑⠱⡱⡱⡑⢔⠁⠀⡀⠐⠐⠐⡡⡹⣪⠀⠀⢘\n⣿⣽⠀⡀⡊⠀⠐⠨⠈⡁⠂⢈⠠⡱⡽⣷⡑⠁⠠⠑⠀⢉⢇⣤⢘⣪⢽⠀⢌⢎\n⣿⢾⠀⢌⠌⠀⡁⠢⠂⠐⡀⠀⢀⢳⢽⣽⡺⣨⢄⣑⢉⢃⢭⡲⣕⡭⣹⠠⢐⢗\n⣿⡗⠀⠢⠡⡱⡸⣔⢵⢱⢸⠈⠀⡪⣳⣳⢹⢜⡵⣱⢱⡱⣳⡹⣵⣻⢔⢅⢬⡷\n⣷⡇⡂⠡⡑⢕⢕⠕⡑⠡⢂⢊⢐⢕⡝⡮⡧⡳⣝⢴⡐⣁⠃⡫⡒⣕⢏⡮⣷⡟\n⣷⣻⣅⠑⢌⠢⠁⢐⠠⠑⡐⠐⠌⡪⠮⡫⠪⡪⡪⣺⢸⠰⠡⠠⠐⢱⠨⡪⡪⡰\n⣯⢷⣟⣇⡂⡂⡌⡀⠀⠁⡂⠅⠂⠀⡑⡄⢇⠇⢝⡨⡠⡁⢐⠠⢀⢪⡐⡜⡪⡊\n⣿⢽⡾⢹⡄⠕⡅⢇⠂⠑⣴⡬⣬⣬⣆⢮⣦⣷⣵⣷⡗⢃⢮⠱⡸⢰⢱⢸⢨⢌\n⣯⢯⣟⠸⣳⡅⠜⠔⡌⡐⠈⠻⠟⣿⢿⣿⣿⠿⡻⣃⠢⣱⡳⡱⡩⢢⠣⡃⠢⠁\n⡯⣟⣞⡇⡿⣽⡪⡘⡰⠨⢐⢀⠢⢢⢄⢤⣰⠼⡾⢕⢕⡵⣝⠎⢌⢪⠪⡘⡌⠀\n⡯⣳⠯⠚⢊⠡⡂⢂⠨⠊⠔⡑⠬⡸⣘⢬⢪⣪⡺⡼⣕⢯⢞⢕⢝⠎⢻⢼⣀⠀\n⠁⡂⠔⡁⡢⠣⢀⠢⠀⠅⠱⡐⡱⡘⡔⡕⡕⣲⡹⣎⡮⡏⡑⢜⢼⡱⢩⣗⣯⣟\n⢀⢂⢑⠀⡂⡃⠅⠊⢄⢑⠠⠑⢕⢕⢝⢮⢺⢕⢟⢮⢊⢢⢱⢄⠃⣇⣞⢞⣞⢾\n⢀⠢⡑⡀⢂⢊⠠⠁⡂⡐⠀⠅⡈⠪⠪⠪⠣⠫⠑⡁⢔⠕⣜⣜⢦⡰⡎⡯⡾⡽",
|
|
2564
2563
|
tooltiplifespan: 500,
|
|
2565
2564
|
}))));
|
|
2566
2565
|
});
|
|
@@ -2660,8 +2659,8 @@ function setupGraphQL$3() {
|
|
|
2660
2659
|
};
|
|
2661
2660
|
}, []);
|
|
2662
2661
|
}
|
|
2663
|
-
const View = (statType, format) => {
|
|
2664
|
-
console.log(`View("${statType}") - CALLED`);
|
|
2662
|
+
const View = (statType, format, label) => {
|
|
2663
|
+
// console.log(`View("${statType}") - CALLED`);
|
|
2665
2664
|
setupGraphQL$3();
|
|
2666
2665
|
return (h("div", null,
|
|
2667
2666
|
h("b", null, "Stat format:"),
|
|
@@ -2670,7 +2669,7 @@ const View = (statType, format) => {
|
|
|
2670
2669
|
h("b", null, "Stat selected:"),
|
|
2671
2670
|
" ",
|
|
2672
2671
|
h("pre", { style: { color: "green" } }, statType),
|
|
2673
|
-
h("sqm-big-stat", { "stat-type": statType })));
|
|
2672
|
+
h("sqm-big-stat", { "stat-type": statType }, label)));
|
|
2674
2673
|
};
|
|
2675
2674
|
const DemoView = () => {
|
|
2676
2675
|
const [type, setType] = useState("/someRandomThing/with/someArguments/1234");
|
|
@@ -2728,6 +2727,18 @@ const ProgramGoals = createHookStory(() => {
|
|
|
2728
2727
|
});
|
|
2729
2728
|
const CustomField = createHookStory(() => {
|
|
2730
2729
|
return View(`/customFields/thingCount`, "/(customFields)/:customField");
|
|
2730
|
+
});
|
|
2731
|
+
const CustomFieldWithLabel = createHookStory(() => {
|
|
2732
|
+
return View(`/customFields/thingCount`, "/(customFields)/:customField", h("sqm-text", null, "Thing Count"));
|
|
2733
|
+
});
|
|
2734
|
+
const CustomFieldWithEmptyLabel = createHookStory(() => {
|
|
2735
|
+
return View(`/customFields/thingCount`, "/(customFields)/:customField", " ");
|
|
2736
|
+
});
|
|
2737
|
+
const CustomFieldWithEmptySpaceLabel = createHookStory(() => {
|
|
2738
|
+
return View(`/customFields/thingCount`, "/(customFields)/:customField", "\n ");
|
|
2739
|
+
});
|
|
2740
|
+
const CustomFieldWithTextLabel = createHookStory(() => {
|
|
2741
|
+
return View(`/customFields/thingCount`, "/(customFields)/:customField", "Thing Count");
|
|
2731
2742
|
});
|
|
2732
2743
|
|
|
2733
2744
|
const UseBigStat = /*#__PURE__*/Object.freeze({
|
|
@@ -2760,7 +2771,11 @@ const UseBigStat = /*#__PURE__*/Object.freeze({
|
|
|
2760
2771
|
RewardBalance: RewardBalance,
|
|
2761
2772
|
RewardBalanceCashUSD: RewardBalanceCashUSD,
|
|
2762
2773
|
ProgramGoals: ProgramGoals,
|
|
2763
|
-
CustomField: CustomField
|
|
2774
|
+
CustomField: CustomField,
|
|
2775
|
+
CustomFieldWithLabel: CustomFieldWithLabel,
|
|
2776
|
+
CustomFieldWithEmptyLabel: CustomFieldWithEmptyLabel,
|
|
2777
|
+
CustomFieldWithEmptySpaceLabel: CustomFieldWithEmptySpaceLabel,
|
|
2778
|
+
CustomFieldWithTextLabel: CustomFieldWithTextLabel
|
|
2764
2779
|
});
|
|
2765
2780
|
|
|
2766
2781
|
function setupGraphQL$4() {
|
|
@@ -2869,7 +2884,7 @@ const View$1 = (overrideProps) => {
|
|
|
2869
2884
|
...overrideProps,
|
|
2870
2885
|
};
|
|
2871
2886
|
const { leaderboardType, rankType } = props;
|
|
2872
|
-
console.log(`View("${leaderboardType}") - CALLED`, { ...props });
|
|
2887
|
+
// console.log(`View("${leaderboardType}") - CALLED`, { ...props });
|
|
2873
2888
|
return (h("div", { style: { marginBottom: "20px" } },
|
|
2874
2889
|
h("sqm-divided-layout", { direction: "row" },
|
|
2875
2890
|
h("div", { style: { padding: "10px" } },
|
|
@@ -2951,7 +2966,7 @@ const DemoHookEmpty = createHookStory(() => {
|
|
|
2951
2966
|
anonymousUser: "Anonymous User",
|
|
2952
2967
|
showRank: true,
|
|
2953
2968
|
},
|
|
2954
|
-
}
|
|
2969
|
+
},
|
|
2955
2970
|
} },
|
|
2956
2971
|
h("sqm-empty", { "empty-state-image": "https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_leaderboard2.png", "empty-state-header": "View your rank in the leaderboard", "empty-state-text": "Be the first to refer a friend and reach the top of the leaderboard" })));
|
|
2957
2972
|
});
|
|
@@ -3377,14 +3392,14 @@ const Dashboard = () => {
|
|
|
3377
3392
|
shareString: "https://ssqt.co/johnsmithrox",
|
|
3378
3393
|
open: false,
|
|
3379
3394
|
disabled: false,
|
|
3380
|
-
|
|
3395
|
+
tooltipText: "Share link copied",
|
|
3381
3396
|
onClick: () => console.log("Share link copied"),
|
|
3382
3397
|
};
|
|
3383
3398
|
const sharecodeProps = {
|
|
3384
3399
|
shareString: "JOHNSMITH1",
|
|
3385
3400
|
open: false,
|
|
3386
3401
|
disabled: false,
|
|
3387
|
-
|
|
3402
|
+
tooltipText: "Share code copied",
|
|
3388
3403
|
onClick: () => console.log("Share code copied"),
|
|
3389
3404
|
};
|
|
3390
3405
|
const twitterButtonProps = {
|
|
@@ -3623,6 +3638,64 @@ const NewPortal = /*#__PURE__*/Object.freeze({
|
|
|
3623
3638
|
Activity: Activity
|
|
3624
3639
|
});
|
|
3625
3640
|
|
|
3641
|
+
const referralWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\"Nunito Sans\">\r\n <sqm-portal-container direction=\"column\" padding=\"small\" gap=\"xxx-large\">\r\n <sqm-portal-container direction=\"column\" padding=\"none\" gap=\"xxx-large\">\r\n <sqm-hero-image\r\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\"\r\n header=\"Klip Rewards\"\r\n description=\"Refer a friend to Klip and earn up to $1200 in rewards\"\r\n layout=\"columns\"\r\n image-pos=\"right\"\r\n background-color=\"#F9F9F9\"\r\n >\r\n </sqm-hero-image>\r\n </sqm-portal-container>\r\n <sqm-portal-container\r\n direction=\"column\"\r\n padding=\"none\"\r\n gap=\"xxx-large\"\r\n max-width=\"770px\"\r\n center\r\n >\r\n <sqm-portal-container\r\n justify-content=\"center\"\r\n direction=\"row\"\r\n center\r\n display=\"flex\"\r\n >\r\n <sqm-stat-container space=\"xxx-large\" display=\"flex\">\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/referralsCount\"\r\n >\r\n <sqm-text>\r\n <p>Referrals</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/integrationRewardsCountFiltered/AVAILABLE/global\"\r\n >\r\n <sqm-text>\r\n <p>Giftcards</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n </sqm-stat-container>\r\n </sqm-portal-container>\r\n\r\n <sqm-portal-container gap=\"large\">\r\n <sqm-titled-section text-align=\"center\" label-margin=\"xxx-small\">\r\n <sqm-text slot=\"label\">\r\n <h3>Get rewarded when your friend uses Klip</h3>\r\n </sqm-text>\r\n </sqm-titled-section>\r\n <sqm-referral-card>\r\n <sqm-portal-container gap=\"large\" slot=\"left\">\r\n <sqm-text\r\n >They’ll get a $50 credit towards a new account and you’ll get:\r\n </sqm-text>\r\n <sqm-timeline icon=\"circle\">\r\n <sqm-timeline-entry\r\n reward=\"$50\"\r\n unit=\"visa giftcard\"\r\n desc=\"Your friend purchases Klip Business\"\r\n >\r\n </sqm-timeline-entry>\r\n <sqm-timeline-entry\r\n reward=\"$200\"\r\n unit=\"visa giftcard\"\r\n desc=\"Our sales team qualifies your friend as a good fit for Klip Enterprise\"\r\n >\r\n </sqm-timeline-entry>\r\n <sqm-timeline-entry\r\n reward=\"$1000\"\r\n unit=\"visa giftcard\"\r\n desc=\"Your friend purchases Klip Enterprise\"\r\n >\r\n </sqm-timeline-entry>\r\n </sqm-timeline>\r\n </sqm-portal-container>\r\n <sqm-portal-container gap=\"large\" slot=\"right\">\r\n <sqm-text>Choose how you want to share: </sqm-text>\r\n <sqm-text>\r\n <sub>Your unique referral link:</sub>\r\n <sqm-share-link> </sqm-share-link>\r\n </sqm-text>\r\n <sqm-portal-container gap=\"x-small\">\r\n <sqm-share-button medium=\"email\">\r\n Share via email\r\n </sqm-share-button>\r\n <sqm-share-button medium=\"linkedin\">\r\n Share on LinkedIn\r\n </sqm-share-button>\r\n <sqm-share-button medium=\"twitter\">\r\n Tweet about us\r\n </sqm-share-button>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n </sqm-referral-card>\r\n </sqm-portal-container>\r\n <sqm-tabs>\r\n <sqm-tab header=\"Leaderboard\">\r\n <sqm-portal-container gap=\"large\">\r\n <sqm-hero-image\r\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000248/squatch-assets/MVgOJn7.png\"\r\n description=\"Be one of the top 3 referrers at the end of the year and receive Klip free for 1 year!\"\r\n layout=\"columns\"\r\n image-percentage=\"33%\"\r\n padding-image=\"large\"\r\n padding-text=\"large\"\r\n background-color=\"#EFF8FE\"\r\n >\r\n </sqm-hero-image>\r\n <sqm-leaderboard\r\n usersheading=\"Referrer\"\r\n statsheading=\"Referrals\"\r\n rankheading=\"Rank\"\r\n rank-type=\"rowNumber\"\r\n leaderboard-type=\"topStartedReferrers\"\r\n show-rank=\"true\"\r\n >\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000223/squatch-assets/empty_leaderboard2.png\"\r\n empty-state-header=\"View your rank in the leaderboard\"\r\n empty-state-text=\"Be the first to refer a friend and reach the top of the leaderboard\"\r\n ></sqm-empty>\r\n </sqm-leaderboard>\r\n </sqm-portal-container>\r\n </sqm-tab>\r\n <sqm-tab header=\"Referral history\">\r\n <sqm-referral-table per-page=\"4\" hidden-columns=\"2\">\r\n <sqm-referral-table-user-column column-title=\"User\">\r\n </sqm-referral-table-user-column>\r\n <sqm-referral-table-status-column column-title=\"Referral status\">\r\n </sqm-referral-table-status-column>\r\n <sqm-referral-table-rewards-column>\r\n </sqm-referral-table-rewards-column>\r\n <sqm-referral-table-date-column\r\n column-title=\"Date referred\"\r\n date-shown=\"dateReferralStarted\"\r\n >\r\n </sqm-referral-table-date-column>\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000223/squatch-assets/empty_referral2.png\"\r\n empty-state-header=\"View your referral details\"\r\n empty-state-text=\"Refer a friend to view the status of your referrals and rewards earned\"\r\n ></sqm-empty>\r\n </sqm-referral-table>\r\n </sqm-tab>\r\n </sqm-tabs>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n</sqm-brand>\r\n";
|
|
3642
|
+
|
|
3643
|
+
const monoWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\"Nunito Sans\">\r\n <sqm-portal-container direction=\"column\" padding=\"small\" gap=\"xxx-large\">\r\n <sqm-portal-container direction=\"column\" padding=\"none\" gap=\"xxx-large\">\r\n <sqm-hero-image\r\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\"\r\n header=\"Klip Rewards\"\r\n description=\"Refer friends and complete tasks while using Klip to earn rewards\"\r\n layout=\"columns\"\r\n image-pos=\"right\"\r\n background-color=\"#F9F9F9\"\r\n >\r\n </sqm-hero-image>\r\n </sqm-portal-container>\r\n <sqm-portal-container\r\n direction=\"column\"\r\n padding=\"none\"\r\n gap=\"xxx-large\"\r\n max-width=\"770px\"\r\n center\r\n >\r\n <sqm-portal-container\r\n direction=\"row\"\r\n center\r\n display=\"flex\"\r\n justify-content=\"space-between\"\r\n >\r\n <sqm-stat-container space=\"xxx-large\" display=\"flex\">\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/referralsCount\"\r\n >\r\n <sqm-text>\r\n <p>Referrals</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/integrationRewardsCountFiltered/AVAILABLE/global\"\r\n >\r\n <sqm-text>\r\n <p>Giftcards Earned</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/rewardBalance/CREDIT/POINT/value/global\"\r\n >\r\n <sqm-text>\r\n <p>Points Balance</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n </sqm-stat-container>\r\n <sqm-scroll\r\n scroll-id=\"tab-3\"\r\n outline\r\n button-type=\"primary\"\r\n button-text=\"Redeem your rewards\"\r\n outline\r\n mobile\r\n ></sqm-scroll>\r\n </sqm-portal-container>\r\n\r\n <sqm-portal-container gap=\"xx-large\">\r\n <sqm-titled-section text-align=\"center\" label-margin=\"xxx-small\">\r\n <sqm-text slot=\"label\">\r\n <h3>Share $50 with friends</h3>\r\n </sqm-text>\r\n <sqm-text slot=\"content\">\r\n <p>\r\n They’ll get a $50 credit towards a new account and you’ll get up\r\n to $1200\r\n </p>\r\n </sqm-text>\r\n </sqm-titled-section>\r\n <sqm-referral-card>\r\n <sqm-portal-container gap=\"large\" slot=\"left\">\r\n <sqm-text>Get rewarded when your friend uses Klip </sqm-text>\r\n <sqm-timeline icon=\"circle\">\r\n <sqm-timeline-entry\r\n reward=\"75\"\r\n unit=\"points\"\r\n desc=\"Your friends signs up for a free trial\"\r\n >\r\n </sqm-timeline-entry>\r\n <sqm-timeline-entry\r\n reward=\"$50\"\r\n unit=\"visa giftcard\"\r\n desc=\"Your friends signs up for Klip Business\"\r\n >\r\n </sqm-timeline-entry>\r\n <sqm-timeline-entry\r\n reward=\"$200\"\r\n unit=\"visa giftcard\"\r\n desc=\"Your friend qualifies as a good fit for Klip Enterprise\"\r\n >\r\n </sqm-timeline-entry>\r\n <sqm-timeline-entry\r\n reward=\"$1000\"\r\n unit=\"visa giftcard\"\r\n desc=\"Your friend purchases Klip Enterprise\"\r\n >\r\n </sqm-timeline-entry>\r\n </sqm-timeline>\r\n </sqm-portal-container>\r\n <sqm-portal-container gap=\"large\" slot=\"right\">\r\n <sqm-text>Choose how you want to share: </sqm-text>\r\n <sqm-text>\r\n <sub>Your unique referral link:</sub>\r\n <sqm-share-link> </sqm-share-link>\r\n </sqm-text>\r\n <sqm-portal-container gap=\"x-small\">\r\n <sqm-share-button medium=\"email\">\r\n Share via email\r\n </sqm-share-button>\r\n <sqm-share-button medium=\"linkedin\">\r\n Share on LinkedIn\r\n </sqm-share-button>\r\n <sqm-share-button medium=\"twitter\">\r\n Tweet about us\r\n </sqm-share-button>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n </sqm-referral-card>\r\n </sqm-portal-container>\r\n\r\n <sqm-portal-container gap=\"xx-large\">\r\n <sqm-titled-section text-align=\"center\" label-margin=\"xxx-small\">\r\n <sqm-text slot=\"label\">\r\n <h3>Earn more rewards</h3>\r\n </sqm-text>\r\n <sqm-text slot=\"content\">\r\n <p>\r\n Get points while using Klip. Use those points to redeem rewards\r\n like one free month of Klip Enterprise or two plane tickets to\r\n anywhere in North America\r\n </p>\r\n </sqm-text>\r\n </sqm-titled-section>\r\n <sqm-card-feed>\r\n <sqm-task-card\r\n reward-amount=\"50\"\r\n card-title=\"Follow Us on Twitter\"\r\n description=\"Earn 50 points when you follow us on Twitter!\"\r\n button-text=\"Follow\"\r\n button-link=\"https://twitter.com/\"\r\n goal=\"1\"\r\n stat-type=\"/programGoals/count/Follow-on-Social-Media\"\r\n open-new-tab=\"true\"\r\n event-key=\"socialFollow\"\r\n program-id=\"klip-loyalty\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"250\"\r\n goal=\"500\"\r\n show-progress-bar=\"true\"\r\n card-title=\"Spend $500 on Klip Products\"\r\n description=\"Earn 250 points when you spend $500 or more on Klip products.\"\r\n button-text=\"See plans\"\r\n button-link=\"https://klip-staging.vercel.app/app/plans\"\r\n stat-type=\"/customFields/purchaseTotal\"\r\n open-new-tab=\"false\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"25\"\r\n goal=\"1\"\r\n card-title=\"Upload Your First Video\"\r\n description=\"Earn 25 points for exploring the Klip platform when you upload your first video.\"\r\n button-text=\"Upload\"\r\n button-link=\"https://klip-staging.vercel.app/app\"\r\n stat-type=\"/programGoals/count/Record-First-Video\"\r\n open-new-tab=\"false\"\r\n program-id=\"klip-loyalty\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"100\"\r\n goal=\"5\"\r\n repeatable=\"true\"\r\n show-progress-bar=\"true\"\r\n steps=\"true\"\r\n card-title=\"Share 5 Videos\"\r\n description=\"Earn 100 points for collaborating each time you share 5 videos.\"\r\n button-text=\"Share\"\r\n button-link=\"https://klip-staging.vercel.app/app\"\r\n stat-type=\"/customFields/videosShared\"\r\n open-new-tab=\"false\"\r\n >\r\n </sqm-task-card>\r\n </sqm-card-feed>\r\n </sqm-portal-container>\r\n <sqm-tabs>\r\n <sqm-tab header=\"Leaderboard\">\r\n <sqm-portal-container gap=\"large\">\r\n <sqm-hero-image\r\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000248/squatch-assets/MVgOJn7.png\"\r\n description=\"Be one of the top 3 referrers at the end of the year and receive Klip free for 1 year!\"\r\n layout=\"columns\"\r\n image-percentage=\"33%\"\r\n padding-image=\"large\"\r\n padding-text=\"large\"\r\n background-color=\"#EFF8FE\"\r\n >\r\n </sqm-hero-image>\r\n <sqm-leaderboard\r\n usersheading=\"Referrer\"\r\n statsheading=\"Referrals\"\r\n rankheading=\"Rank\"\r\n rank-type=\"rowNumber\"\r\n leaderboard-type=\"topStartedReferrers\"\r\n show-rank=\"true\"\r\n >\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000223/squatch-assets/empty_leaderboard2.png\"\r\n empty-state-header=\"View your rank in the leaderboard\"\r\n empty-state-text=\"Be the first to refer a friend and reach the top of the leaderboard\"\r\n ></sqm-empty>\r\n </sqm-leaderboard>\r\n </sqm-portal-container>\r\n </sqm-tab>\r\n <sqm-tab header=\"Referral history\">\r\n <sqm-referral-table per-page=\"4\" hidden-columns=\"2\">\r\n <sqm-referral-table-user-column column-title=\"User\">\r\n </sqm-referral-table-user-column>\r\n <sqm-referral-table-status-column column-title=\"Referral status\">\r\n </sqm-referral-table-status-column>\r\n <sqm-referral-table-rewards-column>\r\n </sqm-referral-table-rewards-column>\r\n <sqm-referral-table-date-column\r\n column-title=\"Date referred\"\r\n date-shown=\"dateReferralStarted\"\r\n >\r\n </sqm-referral-table-date-column>\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000223/squatch-assets/empty_referral2.png\"\r\n empty-state-header=\"View your referral details\"\r\n empty-state-text=\"Refer a friend to view the status of your referrals and rewards earned\"\r\n ></sqm-empty>\r\n </sqm-referral-table>\r\n </sqm-tab>\r\n <sqm-tab header=\"Reward history\">\r\n <sqm-rewards-table per-page=\"4\" program-id=\"\">\r\n <sqm-rewards-table-reward-column></sqm-rewards-table-reward-column>\r\n <sqm-rewards-table-source-column></sqm-rewards-table-source-column>\r\n <sqm-rewards-table-status-column></sqm-rewards-table-status-column>\r\n <sqm-rewards-table-date-column></sqm-rewards-table-date-column>\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_reward2.png\"\r\n empty-state-header=\"View your rewards\"\r\n empty-state-text=\"Refer friends and complete tasks to view the details of your rewards\"\r\n ></sqm-empty>\r\n </sqm-rewards-table>\r\n </sqm-tab>\r\n <sqm-tab header=\"Redeem\">\r\n <sqm-reward-exchange-list>\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_exchange2.png\"\r\n empty-state-header=\"Redeem rewards\"\r\n empty-state-text=\"Use your points to redeem rewards once they become available\"\r\n ></sqm-empty>\r\n </sqm-reward-exchange-list>\r\n </sqm-tab>\r\n </sqm-tabs>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n</sqm-brand>\r\n";
|
|
3644
|
+
|
|
3645
|
+
const loyaltyWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\"Nunito Sans\">\r\n <sqm-portal-container direction=\"column\" padding=\"small\" gap=\"xxxx-large\">\r\n <sqm-portal-container direction=\"column\" padding=\"none\" gap=\"xxx-large\">\r\n <sqm-hero-image\r\n image-url=\"https://i.imgur.com/bTwu1Um.png\"\r\n header=\"Klip Rewards\"\r\n description=\"Refer friends and complete tasks while using Klip to earn rewards\"\r\n layout=\"overlay\"\r\n padding-image=\"xxxx-large\"\r\n padding-text=\"xxx-large\"\r\n image-pos=\"center\"\r\n overlay-color=\"#5e5669\"\r\n overlay-opacity=\"0.9\"\r\n ></sqm-hero-image>\r\n\r\n <sqm-portal-container\r\n direction=\"column\"\r\n padding=\"none\"\r\n gap=\"xxx-large\"\r\n max-width=\"770px\"\r\n center\r\n >\r\n <sqm-program-explainer header=\"How it works\">\r\n <sqm-program-explainer-step\r\n description=\"Complete tasks like uploading your first video or sharing videos with friends\"\r\n header=\"Earn points for using Klip\"\r\n icon=\"cash-stack\"\r\n >\r\n </sqm-program-explainer-step>\r\n <sqm-program-explainer-step\r\n description=\"Redeem rewards like one free month of Klip Enterprise or two plane tickets to anywhere in North America\"\r\n header=\"Redeem rewards with your points\"\r\n icon=\"people\"\r\n >\r\n </sqm-program-explainer-step>\r\n </sqm-program-explainer>\r\n\r\n <sqm-portal-container center direction=\"row\" display=\"flex\" justify-content=\"space-between\">\r\n <sqm-stat-container space=\"xxx-large\" display=\"flex\">\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/rewardsRedeemed/CREDIT/global\"\r\n >\r\n <sqm-text>\r\n <p>Rewards Redeemed</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n <sqm-big-stat\r\n flex-reverse=\"true\"\r\n alignment=\"left\"\r\n stat-type=\"/rewardBalance/CREDIT/POINT/value/global\"\r\n >\r\n <sqm-text>\r\n <p>Points Balance</p>\r\n </sqm-text>\r\n </sqm-big-stat>\r\n </sqm-stat-container>\r\n <sqm-scroll\r\n scroll-id=\"tab-2\"\r\n outline\r\n button-type=\"primary\"\r\n button-text=\"Redeem your rewards\"\r\n mobile\r\n ></sqm-scroll>\r\n </sqm-portal-container>\r\n <sqm-portal-container direction=\"column\" padding=\"none\" gap=\"xx-large\">\r\n <sqm-titled-section>\r\n <sqm-text>Earn points</sqm-text>\r\n </sqm-titled-section>\r\n <sqm-card-feed>\r\n <sqm-task-card\r\n reward-amount=\"20\"\r\n goal=\"1\"\r\n card-title=\"Complete a Survey\"\r\n description=\"Fill out our NPS survey and get 100 points for giving us honest feedback. Be sure to use your Klip account email when completing the survey.\"\r\n button-text=\"Take survey\"\r\n button-link=\"https://y5tqgj96plv.typeform.com/to/p6N7lHUk\"\r\n stat-type=\"/programGoals/count/NPS-Survey\"\r\n reward-unit=\"Points\"\r\n open-new-tab=\"true\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"250\"\r\n goal=\"500\"\r\n show-progress-bar=\"true\"\r\n card-title=\"Spend $500 on Klip Products\"\r\n description=\"Earn 150 points when you spend $500 or more on Klip products.\"\r\n button-text=\"See plans\"\r\n button-link=\"https://klip-staging.vercel.app/app/plans\"\r\n stat-type=\"/customFields/purchaseTotal\"\r\n open-new-tab=\"false\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"100\"\r\n goal=\"5\"\r\n repeatable=\"true\"\r\n show-progress-bar=\"true\"\r\n steps=\"true\"\r\n card-title=\"Share 5 Videos\"\r\n description=\"Earn 100 points for collaborating each time you share 5 videos.\"\r\n button-text=\"Share\"\r\n button-link=\"https://klip-staging.vercel.app/app\"\r\n stat-type=\"/customFields/videosShared\"\r\n open-new-tab=\"false\"\r\n >\r\n </sqm-task-card>\r\n <sqm-task-card\r\n reward-amount=\"25\"\r\n goal=\"1\"\r\n card-title=\"Upload Your First Video\"\r\n description=\"Earn 25 points for exploring the Klip platform when you upload your first video.\"\r\n button-text=\"Upload\"\r\n button-link=\"https://klip-staging.vercel.app/app\"\r\n stat-type=\"/programGoals/count/Record-First-Video\"\r\n open-new-tab=\"false\"\r\n program-id=\"klip-loyalty\"\r\n >\r\n </sqm-task-card>\r\n\r\n </sqm-card-feed>\r\n\r\n <sqm-tabs>\r\n <sqm-tab header=\"Reward history\">\r\n <sqm-rewards-table per-page=\"4\" program-id=\"\">\r\n <sqm-rewards-table-reward-column></sqm-rewards-table-reward-column>\r\n <sqm-rewards-table-source-column></sqm-rewards-table-source-column>\r\n <sqm-rewards-table-status-column></sqm-rewards-table-status-column>\r\n <sqm-rewards-table-date-column></sqm-rewards-table-date-column>\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_reward2.png\"\r\n empty-state-header=\"View your rewards\"\r\n empty-state-text=\"Refer friends and complete tasks to view the details of your rewards\"\r\n ></sqm-empty>\r\n </sqm-rewards-table>\r\n </sqm-tab>\r\n <sqm-tab header=\"Redeem\">\r\n <sqm-reward-exchange-list\r\n back-text=\"Back\"\r\n button-text=\"Exchange Rewards\"\r\n cancel-text=\"Cancel\"\r\n choose-amount-title=\"Select\"\r\n choose-reward-title=\"Rewards\"\r\n confirmation-title=\"Confirm\"\r\n continue-text=\"Continue\"\r\n continue-to-confirmation-text=\"Continue to confirmation\"\r\n done-text=\"Done\"\r\n reward-title=\"Choose a reward\"\r\n not-available-error=\"{unavailableReasonCode, select, US_TAX {US Tax limit} INSUFFICIENT_REDEEMABLE_CREDIT {{sourceValue} required} AVAILABILITY_PREDICATE {Not available} other {unavailableReasonCode} }\"\r\n not-enough-error=\"Not enough {sourceUnit} to redeem for this reward\"\r\n query-error=\"Unable to load reward exchange list. Please try again\"\r\n redeem-text=\"Redeem\"\r\n redeem-title=\"Confirm and redeem\"\r\n redemption-error=\"An error occured trying to redeem this reward. Please try again\"\r\n redemption-success-text=\"Redeemed {sourceValue} for {destinationValue}\"\r\n select-text=\"Select amount to receive\"\r\n source-amount-message=\"{ruleType, select, FIXED_GLOBAL_REWARD {{sourceValue}} other {{sourceMinValue} to {sourceMaxValue}}}\"\r\n tooltiptext=\"Copied\"\r\n reward-name-title=\"Reward\"\r\n reward-amount-title=\"Reward Amount\"\r\n cost-title=\"Cost to Redeem\"\r\n reward-redeemed-text=\"Reward redeemed\"\r\n skeleton-card-num=\"8\"\r\n promo-code=\"Promo Code\"\r\n\r\n >\r\n <sqm-empty\r\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_exchange2.png\"\r\n empty-state-header=\"Redeem rewards\"\r\n empty-state-text=\"Use your points to redeem rewards once they become available\"\r\n ></sqm-empty>\r\n </sqm-reward-exchange-list>\r\n </sqm-tab>\r\n </sqm-tabs>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n </sqm-portal-container>\r\n</sqm-brand>\r\n";
|
|
3646
|
+
|
|
3647
|
+
const Widget_stories = {
|
|
3648
|
+
title: "Templates / Widgets",
|
|
3649
|
+
};
|
|
3650
|
+
// slot="footer"
|
|
3651
|
+
// support-email="john@foodservicerewards.com"
|
|
3652
|
+
// terms-link="example.com"
|
|
3653
|
+
// faq-link="example.com"
|
|
3654
|
+
// padding="large"
|
|
3655
|
+
// show-powered-by="false"
|
|
3656
|
+
// powered-by-link="https://www.saasquatch.com/"
|
|
3657
|
+
function useTemplate$1(templateString) {
|
|
3658
|
+
const [editedTemplate, setEditedTemplate] = useState(templateString);
|
|
3659
|
+
const [previewTemplate, setPreviewTemplate] = useState(templateString);
|
|
3660
|
+
return {
|
|
3661
|
+
states: { previewTemplate, editedTemplate },
|
|
3662
|
+
callbacks: { setEditedTemplate, setPreviewTemplate },
|
|
3663
|
+
};
|
|
3664
|
+
}
|
|
3665
|
+
function Buttons({ callbacks, states, template }) {
|
|
3666
|
+
return (h("div", null,
|
|
3667
|
+
h("button", { onClick: () => callbacks.setPreviewTemplate(states.editedTemplate) }, "Update Preview"),
|
|
3668
|
+
h("button", { style: { marginLeft: "10px" }, onClick: () => callbacks.setPreviewTemplate(template) }, "Preview Dashboard")));
|
|
3669
|
+
}
|
|
3670
|
+
function DefaultTemplateView(props) {
|
|
3671
|
+
const { states, callbacks } = props;
|
|
3672
|
+
return (h("div", { style: { height: "50vh" } },
|
|
3673
|
+
h("textarea", { style: { width: "100%", height: "300px" }, onChange: (e) => callbacks.setEditedTemplate(e.target.value) }, states.editedTemplate),
|
|
3674
|
+
h(Buttons, { states: states, callbacks: callbacks, template: props.template }),
|
|
3675
|
+
h("br", null),
|
|
3676
|
+
h("div", { innerHTML: states.previewTemplate })));
|
|
3677
|
+
}
|
|
3678
|
+
const ReferralWidget = createHookStory(() => {
|
|
3679
|
+
const { states, callbacks } = useTemplate$1(referralWidget);
|
|
3680
|
+
return (h(DefaultTemplateView, { states: states, callbacks: callbacks, template: referralWidget }));
|
|
3681
|
+
});
|
|
3682
|
+
const MonoWidget = createHookStory(() => {
|
|
3683
|
+
const { states, callbacks } = useTemplate$1(monoWidget);
|
|
3684
|
+
return (h(DefaultTemplateView, { states: states, callbacks: callbacks, template: monoWidget }));
|
|
3685
|
+
});
|
|
3686
|
+
const Loyalty = createHookStory(() => {
|
|
3687
|
+
const { states, callbacks } = useTemplate$1(loyaltyWidget);
|
|
3688
|
+
return (h(DefaultTemplateView, { states: states, callbacks: callbacks, template: loyaltyWidget }));
|
|
3689
|
+
});
|
|
3690
|
+
|
|
3691
|
+
const Widget = /*#__PURE__*/Object.freeze({
|
|
3692
|
+
__proto__: null,
|
|
3693
|
+
'default': Widget_stories,
|
|
3694
|
+
ReferralWidget: ReferralWidget,
|
|
3695
|
+
MonoWidget: MonoWidget,
|
|
3696
|
+
Loyalty: Loyalty
|
|
3697
|
+
});
|
|
3698
|
+
|
|
3626
3699
|
const SidebarItem_stories = {
|
|
3627
3700
|
title: "Components/Sidebar Item",
|
|
3628
3701
|
};
|
|
@@ -5519,7 +5592,7 @@ const FullRewardsTable = () => {
|
|
|
5519
5592
|
prevLabel: "Prev",
|
|
5520
5593
|
moreLabel: "View More",
|
|
5521
5594
|
},
|
|
5522
|
-
hiddenColumns: "",
|
|
5595
|
+
hiddenColumns: "1",
|
|
5523
5596
|
mdBreakpoint: 899,
|
|
5524
5597
|
smBreakpoint: 599,
|
|
5525
5598
|
},
|
|
@@ -5801,7 +5874,7 @@ function cartesian(...args) {
|
|
|
5801
5874
|
|
|
5802
5875
|
const scenarioTaskCard = "@author:derek\r\n@owner:kutay\r\nFeature: Task Card\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario: A header, body title and a CTA button are always displayed\r\n\t\tGiven the Task Card is configured with the following props\r\n\t\t\t| prop | value |\r\n\t\t\t| rewardAmount | \"40\" |\r\n\t\t\t| rewardUnit | \"Points\" |\r\n\t\t\t| cardTitle | Complete a survey |\r\n\t\t\t| buttonText | Take Survey |\r\n\t\tWhen a user views the Task Card\r\n\t\tThen they see \"40 Points\" as the heading\r\n\t\tAnd the \"40\" is bolded\r\n\t\tAnd they see \"Complete a survey\" bolded in the body\r\n\t\tAnd a details icon in the top right hand corner\r\n\t\tAnd a button with text \"Take Survey\" in the bottom right hand corner\r\n\t\tWhen they click the button\r\n\t\tThen they are redirected to \"example.com\" in a new window\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: A Task Card description can be included but is not required\r\n\t\tGiven a Task Card\r\n\t\tAnd it has <descriptionPropValue>\r\n\t\tWhen a user views the Task card\r\n\t\tThen they <maySee> a chevron icon in the top right\r\n\t\tWhen they attempt to click the chevron\r\n\t\tThen they <maySee> the card description\r\n\t\tExamples:\r\n\t\t\t| descriptionPropValue | maySee |\r\n\t\t\t| This is my task card description | see |\r\n\t\t\t| | don't see |\r\n\r\n\t@motivating\r\n\tScenario Outline: CTA links can open in a new tab or the same tab\r\n\t\tGiven a Task Card\r\n\t\tAnd it has <openNewTabPropValue>\r\n\t\tWhen a user views the Task card\r\n\t\tAnd they click on the CTA\r\n\t\tThen they are redirected to the CTA link in <tab>\r\n\t\tExamples:\r\n\t\t\t| openNewTabPropValue | tab |\r\n\t\t\t| true | a new tab |\r\n\t\t\t| false | the same tab |\r\n\t\t\t| N/A | the same tab |\r\n\r\n\t@minutae\r\n\t@ui\r\n\tScenario: A loading state is displayed while the Task Card is loading\r\n\t\tGiven a Task Card component\r\n\t\tWhen a user views the Task Card\r\n\t\tThen a loading state is displayed\r\n\t\tWhen the Task Card has loaded\r\n\t\tThen the loading state disapears\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The Progress Bar can be shown or hidden but is hidden by default\r\n\t\tGiven a Task Card\r\n\t\tAnd it has <showProgressBarPropValue>\r\n\t\tWhen a user views the Task Card\r\n\t\tThen the progress bar <mayBe> displayed\r\n\t\tExamples:\r\n\t\t\t| showProgressBarPropValue | mayBe |\r\n\t\t\t| true | is |\r\n\t\t\t| false | isn't |\r\n\t\t\t| N/A | isn't |\r\n\r\n\t@motivating\r\n\tScenario: Clicking the CTA Button can trigger an event to be sent and refresh the widget\r\n\t\tGiven a Task card\r\n\t\tAnd it is configured to send an \"test\" event\r\n\t\tWhen a user views the Task card\r\n\t\tAnd clicks on the CTA\r\n\t\tThen a \"test\" event is sent to SSQT on the users behalf\r\n\t\tAnd the contents of the widget the card is dislayed within are refreshed\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: Tasks can be repeatable or one-time only but are one-time only by default\r\n\t\tGiven a Task Card\r\n\t\tAnd it has <repeatablePropValue>\r\n\t\tAnd a user who has already completed the task\r\n\t\tWhen they view the Task Card\r\n\t\tThen they see a brand colour checkmark icon beside the card heading\r\n\t\tAnd the card <mayBe> brand colour\r\n\t\tAnd the CTA button <mayBe> disabled\r\n\t\tAnd the CTA button <mayBe> grey\r\n\t\tExamples:\r\n\t\t\t| repeatablePropValue | mayBe |\r\n\t\t\t| true | isn't |\r\n\t\t\t| false | is |\r\n\t\t\t| N/A | is |\r\n\r\n\t@motivating\r\n\tScenario Outline: Display duration hides or shows a task\r\n\t\tGiven a Task Card\r\n\t\tAnd it has a \"display-duration\" interval\r\n\t\tWhen a user views the Card on <day>\r\n\t\tThen card <mayBeHidden>\r\n\t\tExamples:\r\n\t\t\t| day | mayBeHidden |\r\n\t\t\t| a day before the interval | is hidden |\r\n\t\t\t| a day during the interval | is not hidden |\r\n\t\t\t| a day after the interval | is hidden |\r\n\r\n\t@motivating\r\n\tScenario: Task Expiries can be configured and disable the CTA after the expiry\r\n\t\tGiven a Task Card\r\n\t\tAnd it has an \"reward-duration\" interval\r\n\t\tWhen a user views the card on <day>\r\n\t\tThen the card <mayBeDisabled>\r\n\t\tAnd it <mayHaveAlert>\r\n\t\tAnd it <mayHaveExpiryText> on the bottom left hand side of the card\r\n\t\tExamples:\r\n\t\t\t| day | mayBeDisabled | mayHaveAlert | mayHaveExpiryText |\r\n\t\t\t| a day before the expiry interval | is disabled | has alert stating the month, date, year and time the task starts | doesn't have expiry text |\r\n\t\t\t| a day during the expiry interval | isn't disabled | doesn't have an alert | has the month, date, year and time the task expires |\r\n\t\t\t| a day after the expiry interval | is disabled | has alert stating the month, date, year and time the task expired | doesn't have expiry text |\r\n\r\n\t@motivating\r\n\tScenario Outline: Task Card dates support localization\r\n\t\tGiven a Task Card\r\n\t\tAnd it's configured with a expiry duration interval\r\n\t\tWhen a user with <locale> views the task card <atTime>\r\n\t\tThen they <seeDate> translated for <locale>\r\n\t\tExamples:\r\n\t\t\t| atTime | locale | seeDate |\r\n\t\t\t| before the interval | en | Task Start Date |\r\n\t\t\t| during the interval | en | Task End Date |\r\n\t\t\t| after the interval | en | Task Ended Date |\r\n\t\t\t| before the interval | fr | Task Start Date |\r\n\t\t\t| during the interval | fr | Task End Date |\r\n\t\t\t| after the interval | fr | Task Ended Date |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: A task completion count is displayed for repeatable tasks\r\n\t\tGiven a Task Card\r\n\t\tAnd it is configured for a repeatable task\r\n\t\tAnd has it has <goalValue>\r\n\t\tAnd a user with <userGoalProgress>\r\n\t\tWhen the user views the task card\r\n\t\tThen they see a repeat icon\r\n\t\tAnd the <text> in the bottom left hand corner\r\n\t\tAnd the <text> is brand colour\r\n\t\tExamples:\r\n\t\t\t| goalValue | userGoalProgress | text |\r\n\t\t\t| 2 | 0 | Completed 0 times |\r\n\t\t\t| 2 | 1 | Completed 0 times |\r\n\t\t\t| 2 | 2 | Completed 1 times |\r\n\t\t\t| 2 | 4 | Completed 2 times |\r\n\r\n\t@motivating\r\n\tScenario Outline: The source of a user's progress can be a custom field or a program goal\r\n\t\tGiven a Task Card\r\n\t\tAnd it is configured <progressSourcePath>\r\n\t\tWhen a user views the Task card\r\n\t\tThen the value at <progressSourcePath> is used to benchmark their progress against the \"Goal Completion Count\"\r\n\t\tExamples:\r\n\t\t\t| progressSourcePath |\r\n\t\t\t| /customFields/activityCount |\r\n\t\t\t| /customFields/purchaseTotal |\r\n\t\t\t| /programGoals/count%2FComment-on-Article |\r\n\t\t\t| /programGoals/count/Referral-Started%2Freferrals |\r\n\r\n\t@motivating\r\n\tScenario Outline: The users completion of a goal is calculated by the Goal Completion Number\r\n\t\tGiven a Task Card\r\n\t\tAnd it is configured for <goalValue>\r\n\t\tAnd a user who has <progressValue>\r\n\t\tWhen they view the Task Card\r\n\t\tThen they are shown to have <progressValue> towards <goalValue>\r\n\t\tWhen their progress grows larger than <goalValue>\r\n\t\tThen the task is marked as completed\r\n\t\tExamples:\r\n\t\t\t| goalValue | progressValue |\r\n\t\t\t| 1 | 0 |\r\n\t\t\t| 10 | 9 |\r\n\t\t\t| 5 | 2 |\r\n\r\n\t@motivating\r\n\tScenario: The Goal Completion Number defaults to 1\r\n\t\tGiven a Task Card without a configured \"goal\" value\r\n\t\tAnd a user who has <progressValue>\r\n\t\tWhen they view the Task Card\r\n\t\tThen it <mayBe> marked as completed\r\n\t\tExamples:\r\n\t\t\t| progressValue | mayBe |\r\n\t\t\t| 0 | isn't |\r\n\t\t\t| 1 | is |\r\n\t\t\t| 2 | is |";
|
|
5803
5876
|
|
|
5804
|
-
const scenarioProgressBar = "@author:kutay\r\n@owner:kutay\r\nFeature:
|
|
5877
|
+
const scenarioProgressBar = "@author:kutay\r\n@owner:kutay\r\nFeature: The progress bar can be shown as a continuous line with progress and end goal. \r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The progress bar displays a continuous bar with the goal represented by a present\r\n\t\tGiven a Task Card component\r\n\t\tAnd the users progress is <progress>\r\n\t\tAnd the task goal is \"500\"\r\n\t\tAnd the task is not repeatable\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> shows <progress> with <unit> on the right\r\n\t\tAnd the circle on the progress bar is brand colour\r\n\t\tAnd the line behind the circle is brand colour\r\n\t\tAnd the line infront of the circle is grey\r\n\t\tAnd the gift icon has <color>\r\n\t\tAnd the gift icon shows \"500\" with <unit> below\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | unit | color |\r\n\t\t\t| 0 | ●――――――――――――――――――🎁 | $ | no |\r\n\t\t\t| 100 | ―――●―――――――――――――――🎁 | $ | no |\r\n\t\t\t| 500 | ―――――――――――――――――――🎁 | $ | yes |\r\n\t\t\t| 650 | ―――――――――――――――――――🎁 | $ | yes |\r\n\t\t\t| 1200 | ―――――――――――――――――――🎁 | $ | yes |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The progress bar can be displayed with steps instead of a continuous line\r\n\t\tGiven a Task Card component\r\n\t\tAnd the user progress is <progress>\r\n\t\tAnd the goal is \"5\"\r\n\t\tAnd steps are enabled\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> has incrementing steps up to \"5\" in increments of 1\r\n\t\tAnd the steps behind the users progress are brand colour\r\n\t\tAnd the steps infront of the users progress are grey\r\n\t\tAnd the gift icon has <color>\r\n\t\tAnd the gift icon shows \"5\" below\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | color |\r\n\t\t\t| 0 | ―――○―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 1 | ―――●―――○―――○―――○―――🎁 | no |\r\n\t\t\t| 5 | ―――●―――●―――●―――●―――🎁 | yes |\r\n\t\t\t| 7 | ―――●―――●―――●―――●―――🎁 | yes |\r\n\t\t\t| 12 | ―――●―――●―――●―――●―――🎁 | yes |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The continuous progress bar will continue to progress for repeatable rewards\r\n\t\tGiven a Task Card component\r\n\t\tAnd the user progress is <progress>\r\n\t\tAnd the goal is \"500\"\r\n\t\tAnd it is repeatable\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> shows <progress> with <unit> to the right\r\n\t\tAnd the first <icon1> is <color1> with <text1> displayed below\r\n\t\tAnd the second <icon2> is <color2> with <text2> displayed below\r\n\t\tAnd the third <icon3> is <color3> with <text3> displayed below\r\n\t\tAnd the circle on the progress bar is brand colour\r\n\t\tAnd the line behind the circle is brand colour\r\n\t\tAnd the line infront of the circle is grey\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | unit | icon1 | color1 | text1 | icon2 | color2 | text 2 | icon3 | color3 | text 3 |\r\n\t\t\t| 250 | ――――●――――🎁―――――――🎁 | $ | NA | NA | NA | gift | greyscale | 500 | gift | greyscale | 1000 |\r\n\t\t\t| 500 | ―――――――――🎁―――――――🎁 | $ | NA | NA | NA | gift | colorful | 500 | gift | greyscale | 1000 |\r\n\t\t\t| 750 | ―――――――――🎁―――●―――🎁 | $ | NA | NA | NA | gift | colorful | 500 | gift | greyscale | 1000 |\r\n\t\t\t| 1000 | 🎁―――――――🎁―――――――🎁 | $ | gift | colorful | 500 | gift | colorful | 1000 | gift | greyscale | 1500 |\r\n\t\t\t| 1250 | 🎁―――――――🎁―――●―――🎁 | $ | gift | colorful | 500 | gift | colorful | 1000 | gift | greyscale | 1500 |\r\n\r\n\t@motivating\r\n\t@ui\r\n\tScenario Outline: The stepped progress bar will continue to progress for repeatable rewards\r\n\t\tGiven a Task Card component\r\n\t\tAnd the user progress is <progress>\r\n\t\tAnd the goal is \"5\"\r\n\t\tAnd steps are enabled\r\n\t\tAnd it is repeatable\r\n\t\tThen I have <progressBar>\r\n\t\tAnd the <progressBar> has incrementing steps up to \"5\" in increments of 1\r\n\t\tAnd the first <icon1> is <color1>\r\n\t\tAnd the second <icon2> is <color2>\r\n\t\tAnd the third <icon3> is <color3>\r\n\t\tAnd the steps behind the users progress are brand colour\r\n\t\tAnd the steps infront of the users progress are grey\r\n\t\tExamples:\r\n\t\t\t| progress | progressBar | icon1 | color1 | icon2 | color2 | icon3 | color3 |\r\n\t\t\t| 0 | ―――○―○―○―○―🎁―○―○―○―○―🎁 | NA | NA | gift | greyscale | gift | greyscale |\r\n\t\t\t| 1 | ―――●―○―○―○―🎁―○―○―○―○―🎁 | NA | NA | gift | greyscale | gift | greyscale |\r\n\t\t\t| 5 | ―――●―●―●―●―🎁―○―○―○―○―🎁 | NA | NA | gift | colorful | gift | greyscale |\r\n\t\t\t| 7 | ―――●―●―●―●―🎁―●―●―○―○―🎁 | NA | NA | gift | colorful | gift | greyscale |\r\n\t\t\t| 12 | 🎁―●―●―●―●―🎁―●―●―○―○―🎁 | gift | colorful | gift | colorful | gift | greyscale |";
|
|
5805
5878
|
|
|
5806
5879
|
const ResizerStylesheet = `
|
|
5807
5880
|
|
|
@@ -9295,14 +9368,7 @@ const EmailVerifiedReadme = "# sqm-portal-verify-email\r\n\r\n\r\n\r\n<!-- Auto
|
|
|
9295
9368
|
const PortalTemplates_stories = {
|
|
9296
9369
|
title: "Templates / Portal",
|
|
9297
9370
|
};
|
|
9298
|
-
|
|
9299
|
-
// support-email="john@foodservicerewards.com"
|
|
9300
|
-
// terms-link="example.com"
|
|
9301
|
-
// faq-link="example.com"
|
|
9302
|
-
// padding="large"
|
|
9303
|
-
// show-powered-by="false"
|
|
9304
|
-
// powered-by-link="https://www.saasquatch.com/"
|
|
9305
|
-
function useTemplate$1(templateString) {
|
|
9371
|
+
function useTemplate$2(templateString) {
|
|
9306
9372
|
const [editedTemplate, setEditedTemplate] = useState(templateString);
|
|
9307
9373
|
const [previewTemplate, setPreviewTemplate] = useState(templateString);
|
|
9308
9374
|
return {
|
|
@@ -9321,16 +9387,16 @@ function TemplateView$1(props) {
|
|
|
9321
9387
|
h("div", { innerHTML: states.previewTemplate }),
|
|
9322
9388
|
];
|
|
9323
9389
|
}
|
|
9324
|
-
function Buttons({ callbacks, states, template }) {
|
|
9390
|
+
function Buttons$1({ callbacks, states, template }) {
|
|
9325
9391
|
return (h("div", null,
|
|
9326
9392
|
h("button", { onClick: () => callbacks.setPreviewTemplate(states.editedTemplate) }, "Update Preview"),
|
|
9327
9393
|
h("button", { style: { marginLeft: "10px" }, onClick: () => callbacks.setPreviewTemplate(template) }, "Preview Dashboard")));
|
|
9328
9394
|
}
|
|
9329
|
-
function DefaultTemplateView(props) {
|
|
9395
|
+
function DefaultTemplateView$1(props) {
|
|
9330
9396
|
const { states, callbacks } = props;
|
|
9331
9397
|
return (h("div", { style: { height: "50vh" } },
|
|
9332
9398
|
h("textarea", { style: { width: "100%", height: "300px" }, onChange: (e) => callbacks.setEditedTemplate(e.target.value) }, states.editedTemplate),
|
|
9333
|
-
h(Buttons, { states: states, callbacks: callbacks, template: props.template }),
|
|
9399
|
+
h(Buttons$1, { states: states, callbacks: callbacks, template: props.template }),
|
|
9334
9400
|
h("h2", null, "Navigation"),
|
|
9335
9401
|
h("div", { style: {
|
|
9336
9402
|
display: "grid",
|
|
@@ -9351,58 +9417,58 @@ function DefaultTemplateView(props) {
|
|
|
9351
9417
|
h("div", { innerHTML: states.previewTemplate })));
|
|
9352
9418
|
}
|
|
9353
9419
|
const DefaultPortal = createHookStory(() => {
|
|
9354
|
-
const { states, callbacks } = useTemplate$
|
|
9355
|
-
return (h(DefaultTemplateView, { states: states, callbacks: callbacks, template: portalTemplateWithDashboard }));
|
|
9420
|
+
const { states, callbacks } = useTemplate$2(portalTemplate);
|
|
9421
|
+
return (h(DefaultTemplateView$1, { states: states, callbacks: callbacks, template: portalTemplateWithDashboard }));
|
|
9356
9422
|
});
|
|
9357
9423
|
const MultiProgramPortal = createHookStory(() => {
|
|
9358
|
-
const { states, callbacks } = useTemplate$
|
|
9359
|
-
return (h(DefaultTemplateView, { states: states, callbacks: callbacks, template: multiProgramTemplateWithDashboard }));
|
|
9424
|
+
const { states, callbacks } = useTemplate$2(multiProgramTemplate);
|
|
9425
|
+
return (h(DefaultTemplateView$1, { states: states, callbacks: callbacks, template: multiProgramTemplateWithDashboard }));
|
|
9360
9426
|
});
|
|
9361
9427
|
const LeadSubmitPortal = createHookStory(() => {
|
|
9362
|
-
const { states, callbacks } = useTemplate$
|
|
9363
|
-
return (h(DefaultTemplateView, { states: states, callbacks: callbacks, template: portalLeadSubmitTemplateWithDashboard, leadSubmit: true }));
|
|
9428
|
+
const { states, callbacks } = useTemplate$2(portalLeadSubmitTemplate);
|
|
9429
|
+
return (h(DefaultTemplateView$1, { states: states, callbacks: callbacks, template: portalLeadSubmitTemplateWithDashboard, leadSubmit: true }));
|
|
9364
9430
|
});
|
|
9365
9431
|
const Login = createHookStory(() => {
|
|
9366
|
-
const { states, callbacks } = useTemplate$
|
|
9432
|
+
const { states, callbacks } = useTemplate$2(loginTemplate);
|
|
9367
9433
|
return (h(TemplateView$1, { states: states, callbacks: callbacks, readme: LoginReadme }));
|
|
9368
9434
|
});
|
|
9369
9435
|
const ForgotPassword = createHookStory(() => {
|
|
9370
|
-
const { states, callbacks } = useTemplate$
|
|
9436
|
+
const { states, callbacks } = useTemplate$2(forgotPasswordTemplate);
|
|
9371
9437
|
return (h(TemplateView$1, { states: states, callbacks: callbacks, readme: ForgotPasswordReadme }));
|
|
9372
9438
|
});
|
|
9373
9439
|
const Register = createHookStory(() => {
|
|
9374
|
-
const { states, callbacks } = useTemplate$
|
|
9440
|
+
const { states, callbacks } = useTemplate$2(registerTemplate);
|
|
9375
9441
|
return (h(TemplateView$1, { states: states, callbacks: callbacks, readme: RegisterReadme }));
|
|
9376
9442
|
});
|
|
9377
9443
|
const Dashboard$1 = createHookStory(() => {
|
|
9378
|
-
const { states, callbacks } = useTemplate$
|
|
9444
|
+
const { states, callbacks } = useTemplate$2(dashboardTemplate);
|
|
9379
9445
|
return h(TemplateView$1, { states: states, callbacks: callbacks });
|
|
9380
9446
|
});
|
|
9381
9447
|
const LeadSubmitIframe = createHookStory(() => {
|
|
9382
|
-
const { states, callbacks } = useTemplate$
|
|
9448
|
+
const { states, callbacks } = useTemplate$2(leadSubmitTemplate);
|
|
9383
9449
|
return (h(TemplateView$1, { states: states, callbacks: callbacks, readme: ReferralIframeReadme }));
|
|
9384
9450
|
});
|
|
9385
9451
|
const Activity$1 = createHookStory(() => {
|
|
9386
|
-
const { states, callbacks } = useTemplate$
|
|
9452
|
+
const { states, callbacks } = useTemplate$2(activityTemplate);
|
|
9387
9453
|
return h(TemplateView$1, { states: states, callbacks: callbacks });
|
|
9388
9454
|
});
|
|
9389
9455
|
const EditProfile$2 = createHookStory(() => {
|
|
9390
|
-
const { states, callbacks } = useTemplate$
|
|
9456
|
+
const { states, callbacks } = useTemplate$2(editProfileTemplate);
|
|
9391
9457
|
return (h(TemplateView$1, { states: states, callbacks: callbacks, readme: EditProfileReadme }));
|
|
9392
9458
|
});
|
|
9393
9459
|
const ResetPassword = createHookStory(() => {
|
|
9394
|
-
const { states, callbacks } = useTemplate$
|
|
9460
|
+
const { states, callbacks } = useTemplate$2(resetPasswordTemplate);
|
|
9395
9461
|
return (h(TemplateView$1, { states: states, callbacks: callbacks, readme: ResetPasswordReadme }));
|
|
9396
9462
|
});
|
|
9397
9463
|
const EmailVerification = createHookStory(() => {
|
|
9398
|
-
const { states, callbacks } = useTemplate$
|
|
9464
|
+
const { states, callbacks } = useTemplate$2(emailVerificationTemplate);
|
|
9399
9465
|
return (h(TemplateView$1, { states: states, callbacks: callbacks, readme: EmailVerificationReadme }));
|
|
9400
9466
|
});
|
|
9401
9467
|
const EmailVerified = createHookStory(() => {
|
|
9402
|
-
const { states, callbacks } = useTemplate$
|
|
9468
|
+
const { states, callbacks } = useTemplate$2(emailVerifiedTemplate);
|
|
9403
9469
|
return (h(TemplateView$1, { states: states, callbacks: callbacks, readme: EmailVerifiedReadme }));
|
|
9404
9470
|
});
|
|
9405
|
-
const Widget = createHookStory(() => {
|
|
9471
|
+
const Widget$1 = createHookStory(() => {
|
|
9406
9472
|
return (h("sqb-widget", { "widget-type": "p/Vacay-referral/w/referrerWidget", demoData: {
|
|
9407
9473
|
data: {
|
|
9408
9474
|
html: dashboardTemplate,
|
|
@@ -9410,11 +9476,11 @@ const Widget = createHookStory(() => {
|
|
|
9410
9476
|
} }));
|
|
9411
9477
|
});
|
|
9412
9478
|
const ResetPasswordEmail = createHookStory(() => {
|
|
9413
|
-
const { states, callbacks } = useTemplate$
|
|
9479
|
+
const { states, callbacks } = useTemplate$2(resetPasswordEmailTemplate);
|
|
9414
9480
|
return h(TemplateView$1, { states: states, callbacks: callbacks });
|
|
9415
9481
|
});
|
|
9416
9482
|
const VerifyEmail = createHookStory(() => {
|
|
9417
|
-
const { states, callbacks } = useTemplate$
|
|
9483
|
+
const { states, callbacks } = useTemplate$2(verifyEmailTemplate);
|
|
9418
9484
|
return h(TemplateView$1, { states: states, callbacks: callbacks });
|
|
9419
9485
|
});
|
|
9420
9486
|
|
|
@@ -9434,7 +9500,7 @@ const PortalTemplates = /*#__PURE__*/Object.freeze({
|
|
|
9434
9500
|
ResetPassword: ResetPassword,
|
|
9435
9501
|
EmailVerification: EmailVerification,
|
|
9436
9502
|
EmailVerified: EmailVerified,
|
|
9437
|
-
Widget: Widget,
|
|
9503
|
+
Widget: Widget$1,
|
|
9438
9504
|
ResetPasswordEmail: ResetPasswordEmail,
|
|
9439
9505
|
VerifyEmail: VerifyEmail
|
|
9440
9506
|
});
|
|
@@ -9801,7 +9867,7 @@ const NameFields$1 = /*#__PURE__*/Object.freeze({
|
|
|
9801
9867
|
NameFieldsWithErrors: NameFieldsWithErrors
|
|
9802
9868
|
});
|
|
9803
9869
|
|
|
9804
|
-
const scenario$i = "@author:derek\r\n@owner:\r\nFeature: Reward Exchange List\r\n\r\n The Reward Exchange List gives end users the power to exchange their rewards for other rewards.\r\n It populates a list from the reward exchange rules set up on a given tenant.\r\n\r\n Background:\r\n Given a tenant with reward exchange rules\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no visible exchanges\r\n Given a user with no visible exchanges\r\n When they view the reward exchange\r\n Then no exchange options are displayed\r\n And they see an image of a present\r\n And \"Redeem Rewards\" in bold\r\n And \"Use your points to redeem rewards once they become available\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no visible exchanges\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward exchange\r\n Then they see the custom empty state\r\n\r\n @motivating\r\n @ui\r\n Scenario: A Loading Skeleton is displayed when the reward exchange rules are loading\r\n Given a user\r\n When they load the reward exchange list\r\n Then they see a loading Skeleton\r\n And it has 8 skeleton cards\r\n When the reward exchange rules have loaded\r\n Then the skeleton is replaced with reward exchange options\r\n\r\n @motivating\r\n Scenario: An error banner appears when the reward exchange list fails to load\r\n Given a user trying to view the reward exchange list\r\n But it fails to load\r\n Then an error banner is displayed\r\n And it displays \"Unable to load reward exchange list. Please try again\"\r\n\r\n @motivating\r\n @ui\r\n Scenario: The exchange progress bar progresses through the exchange process\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the process bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with green outline, white fill and number 1 in green |\r\n | Step 2 `Select` title in grey |\r\n | Step 2 circle with grey fill and number 2 in white |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | lines between all steps are greyed out |\r\n When they continue to the selection page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with green outline, white fill and number 2 in green |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | Green line between step 1 and 2 |\r\n | Grey line between step 2 and 3 |\r\n When they continue to the confirmation page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with green outline, white fill and number 3 in green |\r\n | Green line between all steps |\r\n When they continue to the redemption page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with white checkmark and green fill |\r\n | Green line between all steps |\r\n\r\n @motivating\r\n Scenario: Users must choose a reward exchange option to continue to the selection page\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the 'Continue' button is disabled\r\n When they select a reward exchange card\r\n Then the card is outlined in brand colour with a brand colour cirlcular check box icon in the top right\r\n And the continue button is no longer disabled\r\n When they click \"Continue\"\r\n Then they are brought to the selection page\r\n\r\n @motivating\r\n @ui\r\n Scenario: Reward exchange rule names and images are used in the reward exchange cards\r\n Given a tenant reward exchange rule\r\n And it has name \"My Visa Exchange Rule\"\r\n And it has an image\r\n When a user views the reward exchange list\r\n Then they see a exchange card with title \"My Visa Exchange Rule\"\r\n And the exchange image on the left hand side of the card\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange source values are displayed on reward exchange cards\r\n Given a <type> reward exchange rule\r\n When a user views the reward exchange list\r\n Then they see <text> under the name on the exchange option cards\r\n And the pretty values are localized to a user locale\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | the exchange source pretty value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_CREDIT_REWARD | the exchange source min pretty value to the source max pretty value |\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange cards can display customized error messages\r\n Given a reward exchange rule\r\n And it has <availabilityPredicate>\r\n And the reward exchange list has prop \"not-available-error\" with <value>\r\n When the user views the reward exchange list\r\n Then the card for the reward exchange rule is disabled\r\n And <message> is displayed\r\n Examples:\r\n | availabilityPredicate | value | message |\r\n | 'champion' in user.segments ? \"NOT_CHAMPION\" : true | {unavailableReasonCode, select, NOT_CHAMPION {Sorry must be a champion!} other {unavailableReasonCode} } | Sorry must be a champion! |\r\n | user.customFields.purchaseCount < 10 ? \"MORE_PURCHASE\" : true | {unavailableReasonCode, select, MORE_PURCHASE {Complete 10 purchases to unlock} other {unavailableReasonCode} } | Complete 10 purchases to unlock |\r\n\r\n @motivating\r\n Scenario: Exchange options are disabled if they put a user over the W9 limit\r\n Given a user who is approaching their W9 limit\r\n And a reward exchange rule\r\n And its destination reward has a US taxable value that would put the user over their limit\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a \"US Tax Limit\" error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n\r\n @motivating\r\n Scenario Outline: Exchange options are disabled if a users lacks enough credit to redeem\r\n Given a <type> reward exchange rule\r\n But the user lacks enough credit to exchange for it\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a <text> error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_CREDIT_REWARD | {prettySourceMinValue} required |\r\n\r\n @motivating\r\n Scenario: Users can go back to the Rewards page from the Select page\r\n Given a user viewing the Select page\r\n Then they see a \"Cancel\" text button\r\n And a \"Continue to confirmation\" brand colour button in the bottom right corner\r\n When they click \"Cancel\"\r\n Then they return to the Rewards page\r\n\r\n @motivating\r\n Scenario: Users can go back to the Select Page from the Confirm page\r\n Given a user viewing the Confirm page\r\n Then they see a \"Back\" text button\r\n And a \"Redeem\" brand colour button in the bottom right corner\r\n When they click \"Back\"\r\n Then they return to the Select Page\r\n\r\n @motivating\r\n Scenario: Reward rules with visibility predicates that evaluates to false are not shown\r\n Given a tenant reward exchange rule with visibility predicates that evaluates to false\r\n When a user views the reward exchange list\r\n Then they do not see the card for that reward exchange rule\r\n\r\n @motivating\r\n Scenario Outline: Users can choose their reward option for variable rewards on the Select page\r\n Given a <type> exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange description |\r\n | select list with all exchange options using pretty values, destination reward above source reward |\r\n Examples:\r\n | type |\r\n | STEPPED_FIXED_GLOBAL_REWARD |\r\n | VARIABLE_GLOBAL_REWARD |\r\n | VARIABLE_CREDIT_REWARD |\r\n\r\n @motivating\r\n Scenario: Users who selected a fixed exchange rule see exchange information on the Select page\r\n Given a \"FIXED_GLOBAL_REWARD\" exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange source pretty value displayed in brand colour |\r\n | exchange description |\r\n\r\n @motivating\r\n Scenario Outline: Users selection variable rewards can only select rewards they are eligible to exchange for\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see a drop down with all the reward exchange selections\r\n When they click on the drop down\r\n But they are not eligible for all of the exchanges options <dueToReason>\r\n Then the ineligble options are disabled\r\n And under the source value is <text>\r\n Examples:\r\n | type | dueToReason | text |\r\n | STEPPED_FIXED_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_CREDIT_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_CREDIT_REWARD | w9 | US Tax Limit |\r\n\r\n @motivating\r\n Scenario Outline: The Confirm page allows users to view their exchange before committing\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they select the exchange\r\n And they progress to Confirm page\r\n Then they see a row with title \"Reward\"\r\n And it contains the exchange name\r\n And it contains the exchange image\r\n And they <maySee> a row with title \"Reward Amount\"\r\n And it <mayContain> <amountTitle>\r\n And they see a row with title \"Cost to Redeem\"\r\n And it contains the source reward pretty value in bolded text\r\n Examples:\r\n | type | maySee | mayContain | amountTitle |\r\n | FIXED_GLOBAL_REWARD | don't | doesn't contain | N/A |\r\n | VARIABLE_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | VARIABLE_CREDIT_REWARD | see | contains | the pretty destination value |\r\n\r\n @motivating\r\n Scenario: An error banner is displayed if an error occurs during redemeption\r\n Given a user has selected a reward to exchange\r\n And is on the confirmation page\r\n When they click \"Redeem\"\r\n But an error occurs\r\n Then an error banner appears\r\n And it contains details about the error\r\n And the reward exchange is not completed\r\n\r\n @motivating\r\n Scenario: Confetti is displayed when a reward exchange succeeds\r\n Given a user has selected a reward to exchange\r\n And they are on the confirmation page\r\n When they click \"Redeem\"\r\n And the exchange is successful\r\n Then they see confetti centered on the success page\r\n And they see text describing what they exchanged for their new reward\r\n And they see a \"Done\" brand colour button\r\n When they click \"Done\"\r\n Then they see the Rewards page\r\n\r\n @motivating\r\n Scenario: Fuel tank codes are shown when a reward exchange succeeds\r\n Given a user has selected to exchange for a fuel tank reward\r\n When they complete the reward exchange\r\n And are on the success page\r\n Then they see a textbox with their fuel tank code\r\n And a clipboard icon\r\n When they click the clipboard icon\r\n Then their fuel tank code is copied to their clipboard\r\n\r\n @motivating\r\n Scenario Outline: Users can exchange for any type of reward\r\n Given a <type> reward exchange rule for a <reward>\r\n And a user who has enough source credit to exchange for the reward\r\n When they go through the exchange flow\r\n And exchange for their reward\r\n Then their credit is exchanged for the <reward>\r\n Examples:\r\n | type | reward |\r\n | FIXED_GLOBAL_REWARD | gift card |\r\n | FIXED_GLOBAL_REWARD | fuel tank code |\r\n | FIXED_GLOBAL_REWARD | discount |\r\n | FIXED_GLOBAL_REWARD | credit reward |\r\n | STEPPED_FIXED_GLOBAL_REWARD | gift card |\r\n | STEPPED_FIXED_GLOBAL_REWARD | discount |\r\n | STEPPED_FIXED_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_GLOBAL_REWARD | gift card |\r\n | VARIABLE_GLOBAL_REWARD | discount |\r\n | VARIABLE_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_CREDIT_REWARD | credit reward |";
|
|
9870
|
+
const scenario$i = "@author:derek\r\n@owner:\r\nFeature: Reward Exchange List\r\n\r\n The Reward Exchange List gives end users the power to exchange their rewards for other rewards.\r\n It populates a list from the reward exchange rules set up on a given tenant.\r\n\r\n Background:\r\n Given a tenant with reward exchange rules\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no visible exchanges\r\n Given a user with no visible exchanges\r\n When they view the reward exchange\r\n Then no exchange options are displayed\r\n And they see an image of a present\r\n And \"Redeem Rewards\" in bold\r\n And \"Use your points to redeem rewards once they become available\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no visible exchanges\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward exchange\r\n Then they see the custom empty state\r\n\r\n @motivating\r\n @ui\r\n Scenario: A Loading Skeleton is displayed when the reward exchange rules are loading\r\n Given a user\r\n When they load the reward exchange list\r\n Then they see a loading Skeleton\r\n And it has 8 skeleton cards\r\n When the reward exchange rules have loaded\r\n Then the skeleton is replaced with reward exchange options\r\n\r\n @motivating\r\n Scenario: An error banner appears when the reward exchange list fails to load\r\n Given a user trying to view the reward exchange list\r\n But it fails to load\r\n Then an error banner is displayed\r\n And it displays \"Unable to load reward exchange list. Please try again\"\r\n\r\n @motivating\r\n @ui\r\n Scenario: The exchange progress bar progresses through the exchange process\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the process bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with green outline, white fill and number 1 in green |\r\n | Step 2 `Select` title in grey |\r\n | Step 2 circle with grey fill and number 2 in white |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | lines between all steps are greyed out |\r\n When they continue to the selection page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with green outline, white fill and number 2 in green |\r\n | Step 3 `Confirm` title in grey |\r\n | Step 3 circle with grey fill and number 3 in white |\r\n | Green line between step 1 and 2 |\r\n | Grey line between step 2 and 3 |\r\n When they continue to the confirmation page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with green outline, white fill and number 3 in green |\r\n | Green line between all steps |\r\n When they continue to the redemption page\r\n Then the progress bar displays the following elements\r\n | elements |\r\n | Step 1 `Rewards` title in black |\r\n | Step 1 circle with white checkmark and green fill |\r\n | Step 2 `Select` title in black |\r\n | Step 2 circle with white checkmark and green fill |\r\n | Step 3 `Confirm` title in black |\r\n | Step 3 circle with white checkmark and green fill |\r\n | Green line between all steps |\r\n\r\n @motivating\r\n Scenario: Users must choose a reward exchange option to continue to the selection page\r\n Given a user who is eligible for the tenants reward exchange rules\r\n When they view the reward exchange list\r\n Then the 'Continue' button is disabled\r\n When they select a reward exchange card\r\n Then the card is outlined in brand colour with a brand colour cirlcular check box icon in the top right\r\n And the continue button is no longer disabled\r\n When they click \"Continue\"\r\n Then they are brought to the selection page\r\n\r\n @motivating\r\n @ui\r\n Scenario: Reward exchange rule names and images are used in the reward exchange cards\r\n Given a tenant reward exchange rule\r\n And it has name \"My Visa Exchange Rule\"\r\n And it has an image\r\n When a user views the reward exchange list\r\n Then they see a exchange card with title \"My Visa Exchange Rule\"\r\n And the exchange image on the left hand side of the card\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange source values are displayed on reward exchange cards\r\n Given a <type> reward exchange rule\r\n When a user views the reward exchange list\r\n Then they see <text> under the name on the exchange option cards\r\n And the pretty values are localized to a user locale\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | the exchange source pretty value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_GLOBAL_REWARD | the exchange source min pretty value to the source max pretty value |\r\n | VARIABLE_CREDIT_REWARD | the exchange source min pretty value to the source max pretty value |\r\n\r\n @motivating\r\n Scenario Outline: Reward exchange cards can display customized error messages\r\n Given a reward exchange rule\r\n And it has <availabilityPredicate>\r\n And the reward exchange list has prop \"not-available-error\" with <value>\r\n When the user views the reward exchange list\r\n Then the card for the reward exchange rule is disabled\r\n And <message> is displayed\r\n Examples:\r\n | availabilityPredicate | value | message |\r\n | 'champion' in user.segments ? \"NOT_CHAMPION\" : true | {unavailableReasonCode, select, NOT_CHAMPION {Sorry must be a champion!} other {unavailableReasonCode} } | Sorry must be a champion! |\r\n | user.customFields.purchaseCount < 10 ? \"MORE_PURCHASE\" : true | {unavailableReasonCode, select, MORE_PURCHASE {Complete 10 purchases to unlock} other {unavailableReasonCode} } | Complete 10 purchases to unlock |\r\n\r\n @motivating\r\n Scenario: Exchange options are disabled if they put a user over the W9 limit\r\n Given a user who is approaching their W9 limit\r\n And a reward exchange rule\r\n And its destination reward has a US taxable value that would put the user over their limit\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a \"US Tax Limit\" error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n\r\n @motivating\r\n Scenario Outline: Exchange options are disabled if a users lacks enough credit to redeem\r\n Given a <type> reward exchange rule\r\n But the user lacks enough credit to exchange for it\r\n When they view the reward exchange list\r\n Then the reward exchange card is disabled\r\n And a <text> error message is displayed on to the right of a exclamation triangle icon\r\n And the text is orange\r\n And the icon is orange\r\n Examples:\r\n | type | text |\r\n | FIXED_GLOBAL_REWARD | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_GLOBAL_REWARD | {prettySourceMinValue} required |\r\n | VARIABLE_CREDIT_REWARD | {prettySourceMinValue} required |\r\n\r\n @motivating\r\n Scenario: Users can go back to the Rewards page from the Select page\r\n Given a user viewing the Select page\r\n Then they see a \"Cancel\" text button\r\n And a \"Continue to confirmation\" brand colour button in the bottom right corner\r\n When they click \"Cancel\"\r\n Then they return to the Rewards page\r\n\r\n @motivating\r\n Scenario: Users can go back to the Select Page from the Confirm page\r\n Given a user viewing the Confirm page\r\n Then they see a \"Back\" text button\r\n And a \"Redeem\" brand colour button in the bottom right corner\r\n When they click \"Back\"\r\n Then they return to the Select Page\r\n\r\n @motivating\r\n Scenario: Reward rules with visibility predicates that evaluates to false are not shown\r\n Given a tenant reward exchange rule with visibility predicates that evaluates to false\r\n When a user views the reward exchange list\r\n Then they do not see the card for that reward exchange rule\r\n\r\n @motivating\r\n Scenario Outline: Users can choose their reward option for variable rewards on the Select page\r\n Given a <type> exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange description |\r\n | select list with all exchange options using pretty values, destination reward above source reward |\r\n Examples:\r\n | type |\r\n | STEPPED_FIXED_GLOBAL_REWARD |\r\n | VARIABLE_GLOBAL_REWARD |\r\n | VARIABLE_CREDIT_REWARD |\r\n\r\n @motivating\r\n Scenario: Users who selected a fixed exchange rule see exchange information on the Select page\r\n Given a \"FIXED_GLOBAL_REWARD\" exchange rule\r\n And it has the following fields\r\n | fields |\r\n | name |\r\n | description |\r\n | image |\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see the exchange rule image on the left hand side\r\n And on the right hand side they see the following in this order from top to bottom\r\n | elements |\r\n | exchange name |\r\n | exchange source pretty value displayed in brand colour |\r\n | exchange description |\r\n\r\n @motivating\r\n Scenario Outline: Users selection variable rewards can only select rewards they are eligible to exchange for\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they progress to the Select page for this exchange\r\n Then they see a drop down with all the reward exchange selections\r\n When they click on the drop down\r\n But they are not eligible for all of the exchanges options <dueToReason>\r\n Then the ineligble options are disabled\r\n And under the source value is <text>\r\n Examples:\r\n | type | dueToReason | text |\r\n | STEPPED_FIXED_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_GLOBAL_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | VARIABLE_CREDIT_REWARD | due to insufficent source value | {prettySourceValue} required |\r\n | STEPPED_FIXED_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_GLOBAL_REWARD | W9 | US Tax Limit |\r\n | VARIABLE_CREDIT_REWARD | W9 | US Tax Limit |\r\n\r\n @motivating\r\n Scenario Outline: The Confirm page allows users to view their exchange before committing\r\n Given a <type> exchange rule\r\n When a user views the reward exchange list\r\n And they select the exchange\r\n And they progress to Confirm page\r\n Then they see a row with title \"Reward\"\r\n And it contains the exchange name\r\n And it contains the exchange image\r\n And they <maySee> a row with title \"Reward Amount\"\r\n And it <mayContain> <amountTitle>\r\n And they see a row with title \"Cost to Redeem\"\r\n And it contains the source reward pretty value in bolded text\r\n Examples:\r\n | type | maySee | mayContain | amountTitle |\r\n | FIXED_GLOBAL_REWARD | don't | doesn't contain | N/A |\r\n | VARIABLE_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | STEPPED_FIXED_GLOBAL_REWARD | see | contains | the pretty destination value |\r\n | VARIABLE_CREDIT_REWARD | see | contains | the pretty destination value |\r\n\r\n @motivating\r\n Scenario: An error banner is displayed if an error occurs during redemeption\r\n Given a user has selected a reward to exchange\r\n And is on the confirmation page\r\n When they click \"Redeem\"\r\n But an error occurs\r\n Then an error banner appears\r\n And it contains details about the error\r\n And the reward exchange is not completed\r\n\r\n @motivating\r\n Scenario: Confetti is displayed when a reward exchange succeeds\r\n Given a user has selected a reward to exchange\r\n And they are on the confirmation page\r\n When they click \"Redeem\"\r\n And the exchange is successful\r\n Then they see confetti centered on the success page\r\n And they see text describing what they exchanged for their new reward\r\n And they see a \"Done\" brand colour button\r\n When they click \"Done\"\r\n Then they see the Rewards page\r\n\r\n @motivating\r\n Scenario: Fuel tank codes are shown when a reward exchange succeeds\r\n Given a user has selected to exchange for a fuel tank reward\r\n When they complete the reward exchange\r\n And are on the success page\r\n Then they see a textbox with their fuel tank code\r\n And a clipboard icon\r\n When they click the clipboard icon\r\n Then their fuel tank code is copied to their clipboard\r\n\r\n @motivating\r\n Scenario Outline: Users can exchange for any type of reward\r\n Given a <type> reward exchange rule for a <reward>\r\n And a user who has enough source credit to exchange for the reward\r\n When they go through the exchange flow\r\n And exchange for their reward\r\n Then their credit is exchanged for the <reward>\r\n Examples:\r\n | type | reward |\r\n | FIXED_GLOBAL_REWARD | gift card |\r\n | FIXED_GLOBAL_REWARD | fuel tank code |\r\n | FIXED_GLOBAL_REWARD | discount |\r\n | FIXED_GLOBAL_REWARD | credit reward |\r\n | STEPPED_FIXED_GLOBAL_REWARD | gift card |\r\n | STEPPED_FIXED_GLOBAL_REWARD | discount |\r\n | STEPPED_FIXED_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_GLOBAL_REWARD | gift card |\r\n | VARIABLE_GLOBAL_REWARD | discount |\r\n | VARIABLE_GLOBAL_REWARD | credit reward |\r\n | VARIABLE_CREDIT_REWARD | credit reward |";
|
|
9805
9871
|
|
|
9806
9872
|
const RewardExchangeList_stories = {
|
|
9807
9873
|
title: "Components/Reward Exchange List",
|
|
@@ -9937,7 +10003,7 @@ const ProgramExplainerStep$1 = /*#__PURE__*/Object.freeze({
|
|
|
9937
10003
|
ProgramExplainerStepCustom: ProgramExplainerStepCustom
|
|
9938
10004
|
});
|
|
9939
10005
|
|
|
9940
|
-
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
|
|
10006
|
+
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\"";
|
|
9941
10007
|
|
|
9942
10008
|
const SqmBrand_stories = {
|
|
9943
10009
|
title: "Components/Brand",
|
|
@@ -10331,7 +10397,79 @@ const FullWidth = () => (h("div", { style: { width: "1000px", border: "1px dashe
|
|
|
10331
10397
|
h("sqm-portal-container", { gap: "xxx-large", direction: "row", maxWidth: "100%" },
|
|
10332
10398
|
h("sqm-share-button", { icon: "envelope", medium: "email", size: "medium", class: "hydrated" }, "Email a friend"),
|
|
10333
10399
|
h("sqm-share-button", { medium: "twitter", size: "medium", class: "hydrated" }, "Tweet about us"),
|
|
10334
|
-
h("sqm-share-button", { medium: "facebook", size: "medium", class: "hydrated" }, "Share on Facebook"))));
|
|
10400
|
+
h("sqm-share-button", { medium: "facebook", size: "medium", class: "hydrated" }, "Share on Facebook"))));
|
|
10401
|
+
const SpaceBetween = () => {
|
|
10402
|
+
return (h("div", { style: { width: "1000px", border: "1px dashed grey" } },
|
|
10403
|
+
h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "space-between" },
|
|
10404
|
+
h("sqm-stat-container", { space: "xxx-large", display: "flex" },
|
|
10405
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
|
|
10406
|
+
h("sqm-text", null,
|
|
10407
|
+
h("p", null, "Rewards Redeemed"))),
|
|
10408
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
|
|
10409
|
+
h("sqm-text", null,
|
|
10410
|
+
h("p", null, "Points Balance")))),
|
|
10411
|
+
h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
|
|
10412
|
+
};
|
|
10413
|
+
const SpaceAround = () => {
|
|
10414
|
+
return (h("div", { style: { width: "1000px", border: "1px dashed grey" } },
|
|
10415
|
+
h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "space-around" },
|
|
10416
|
+
h("sqm-stat-container", { space: "xxx-large", display: "flex" },
|
|
10417
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
|
|
10418
|
+
h("sqm-text", null,
|
|
10419
|
+
h("p", null, "Rewards Redeemed"))),
|
|
10420
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
|
|
10421
|
+
h("sqm-text", null,
|
|
10422
|
+
h("p", null, "Points Balance")))),
|
|
10423
|
+
h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
|
|
10424
|
+
};
|
|
10425
|
+
const SpaceEvenly = () => {
|
|
10426
|
+
return (h("div", { style: { width: "1000px", border: "1px dashed grey" } },
|
|
10427
|
+
h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "space-evenly" },
|
|
10428
|
+
h("sqm-stat-container", { space: "xxx-large", display: "flex" },
|
|
10429
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
|
|
10430
|
+
h("sqm-text", null,
|
|
10431
|
+
h("p", null, "Rewards Redeemed"))),
|
|
10432
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
|
|
10433
|
+
h("sqm-text", null,
|
|
10434
|
+
h("p", null, "Points Balance")))),
|
|
10435
|
+
h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
|
|
10436
|
+
};
|
|
10437
|
+
const Start$1 = () => {
|
|
10438
|
+
return (h("div", { style: { width: "1000px", border: "1px dashed grey" } },
|
|
10439
|
+
h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "start" },
|
|
10440
|
+
h("sqm-stat-container", { space: "xxx-large", display: "flex" },
|
|
10441
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
|
|
10442
|
+
h("sqm-text", null,
|
|
10443
|
+
h("p", null, "Rewards Redeemed"))),
|
|
10444
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
|
|
10445
|
+
h("sqm-text", null,
|
|
10446
|
+
h("p", null, "Points Balance")))),
|
|
10447
|
+
h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
|
|
10448
|
+
};
|
|
10449
|
+
const Center = () => {
|
|
10450
|
+
return (h("div", { style: { width: "1000px", border: "1px dashed grey" } },
|
|
10451
|
+
h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "center" },
|
|
10452
|
+
h("sqm-stat-container", { space: "xxx-large", display: "flex" },
|
|
10453
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
|
|
10454
|
+
h("sqm-text", null,
|
|
10455
|
+
h("p", null, "Rewards Redeemed"))),
|
|
10456
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
|
|
10457
|
+
h("sqm-text", null,
|
|
10458
|
+
h("p", null, "Points Balance")))),
|
|
10459
|
+
h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
|
|
10460
|
+
};
|
|
10461
|
+
const End = () => {
|
|
10462
|
+
return (h("div", { style: { width: "1000px", border: "1px dashed grey" } },
|
|
10463
|
+
h("sqm-portal-container", { center: true, direction: "row", display: "flex", "justify-content": "end" },
|
|
10464
|
+
h("sqm-stat-container", { space: "xxx-large", display: "flex" },
|
|
10465
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardsRedeemed/CREDIT/global" },
|
|
10466
|
+
h("sqm-text", null,
|
|
10467
|
+
h("p", null, "Rewards Redeemed"))),
|
|
10468
|
+
h("sqm-big-stat", { "flex-reverse": "true", alignment: "left", "stat-type": "/rewardBalance/CREDIT/POINT/value/global" },
|
|
10469
|
+
h("sqm-text", null,
|
|
10470
|
+
h("p", null, "Points Balance")))),
|
|
10471
|
+
h("sqm-scroll", { "scroll-id": "tab-2", outline: true, "button-type": "primary", "button-text": "Redeem your rewards", mobile: true }))));
|
|
10472
|
+
};
|
|
10335
10473
|
|
|
10336
10474
|
const PortalContainer = /*#__PURE__*/Object.freeze({
|
|
10337
10475
|
__proto__: null,
|
|
@@ -10343,7 +10481,13 @@ const PortalContainer = /*#__PURE__*/Object.freeze({
|
|
|
10343
10481
|
TooWideDisplayFlex: TooWideDisplayFlex,
|
|
10344
10482
|
HalfWidth: HalfWidth,
|
|
10345
10483
|
HalfWidthCenter: HalfWidthCenter,
|
|
10346
|
-
FullWidth: FullWidth
|
|
10484
|
+
FullWidth: FullWidth,
|
|
10485
|
+
SpaceBetween: SpaceBetween,
|
|
10486
|
+
SpaceAround: SpaceAround,
|
|
10487
|
+
SpaceEvenly: SpaceEvenly,
|
|
10488
|
+
Start: Start$1,
|
|
10489
|
+
Center: Center,
|
|
10490
|
+
End: End
|
|
10347
10491
|
});
|
|
10348
10492
|
|
|
10349
10493
|
const scenario1 = "@author:derek\r\n@owner:derek\r\nFeature: Reward Table Date Column\r\n\r\n Shows the date of each reward\r\n\r\n Background:\r\n Given the date column is included in the reward table\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The title of the date column is configurable\r\n Given the \"column-title\" prop is set to <value>\r\n Then the date column is shown with <columnTitle>\r\n Examples:\r\n | value | columnTitle |\r\n | Date received | |\r\n | My column title | My column title |\r\n\r\n @motivating\r\n Scenario Outline: A configurable date associated with the reward is shown for each reward\r\n Given the \"date-shown\" prop is set to <dateType>\r\n And a user with rewards\r\n When they view the date column\r\n Then for each reward the <rewardDate> is shown in the table\r\n And the date is localized to the users locale\r\n Examples:\r\n | dateType | rewardDate |\r\n | dateGiven | date given |\r\n | dateExpires | date expires |\r\n | dateCancelled | date cancelled |\r\n | dateRedeemed | date redeemed |\r\n | dateScheduledFor | date scheduled for |\r\n | | date given |";
|
|
@@ -10365,7 +10509,7 @@ const rewardsData$1 = {
|
|
|
10365
10509
|
id: "61c100117a82a376d8804166",
|
|
10366
10510
|
type: "CREDIT",
|
|
10367
10511
|
value: 19,
|
|
10368
|
-
unit: "
|
|
10512
|
+
unit: "Points",
|
|
10369
10513
|
name: null,
|
|
10370
10514
|
dateGiven: 1640038417468,
|
|
10371
10515
|
meta: { message: "***CUSTOMER NOTE MESSAGE***" },
|
|
@@ -10397,7 +10541,7 @@ const RewardsCellCreditSingle = () => {
|
|
|
10397
10541
|
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...singleRedeemed } }));
|
|
10398
10542
|
};
|
|
10399
10543
|
const RewardsCellCreditFull = () => {
|
|
10400
|
-
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1 }, availableText: "
|
|
10544
|
+
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1 }, availableText: "{availableAmount} remaining" }));
|
|
10401
10545
|
};
|
|
10402
10546
|
const partial = {
|
|
10403
10547
|
prettyAvailableValue: "10 Points",
|
|
@@ -10406,16 +10550,16 @@ const partial = {
|
|
|
10406
10550
|
dateRedeemed: 1640038417468,
|
|
10407
10551
|
};
|
|
10408
10552
|
const RewardsCellCreditPartial = () => {
|
|
10409
|
-
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...partial }, availableText: "
|
|
10553
|
+
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...partial }, availableText: "{availableAmount} remaining" }));
|
|
10410
10554
|
};
|
|
10411
10555
|
const RewardsCellCreditCancelled = () => {
|
|
10412
|
-
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...cancelled }, redeemedText: "
|
|
10556
|
+
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...cancelled }, redeemedText: "{redeemedAmount} redeemed" }));
|
|
10413
10557
|
};
|
|
10414
10558
|
const RewardsCellCreditExpired = () => {
|
|
10415
|
-
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...partial, ...expired }, redeemedText: "
|
|
10559
|
+
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...partial, ...expired }, redeemedText: "{redeemedAmount} redeemed" }));
|
|
10416
10560
|
};
|
|
10417
10561
|
const RewardsCellCreditPending = () => {
|
|
10418
|
-
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...
|
|
10562
|
+
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...pending }, availableText: "{availableAmount} remaining" }));
|
|
10419
10563
|
};
|
|
10420
10564
|
const empty = {
|
|
10421
10565
|
prettyAvailableValue: "0 Points",
|
|
@@ -10425,7 +10569,7 @@ const empty = {
|
|
|
10425
10569
|
dateRedeemed: 1640038417468,
|
|
10426
10570
|
};
|
|
10427
10571
|
const RewardsCellCreditRedeemed = () => {
|
|
10428
|
-
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...empty }, availableText: "
|
|
10572
|
+
return (h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...empty }, availableText: "{availableAmount} remaining" }));
|
|
10429
10573
|
};
|
|
10430
10574
|
const singleRedeemed = {
|
|
10431
10575
|
prettyValue: "1 Point",
|
|
@@ -10437,7 +10581,7 @@ const longName = {
|
|
|
10437
10581
|
};
|
|
10438
10582
|
const RewardsCellCreditLong = () => {
|
|
10439
10583
|
return (h("div", { style: { maxWidth: "222px" } },
|
|
10440
|
-
h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...longName }, availableText: "
|
|
10584
|
+
h("sqm-rewards-table-reward-cell", { reward: { ...rewardsData$1, ...longName }, availableText: "{availableAmount} remaining" })));
|
|
10441
10585
|
};
|
|
10442
10586
|
const RewardsCellNonCredit = () => {
|
|
10443
10587
|
return (h("sqm-rewards-table-reward-cell", { reward: {
|
|
@@ -10452,7 +10596,7 @@ const RewardsCellFueltank = () => {
|
|
|
10452
10596
|
type: "FUELTANK",
|
|
10453
10597
|
prettyValue: "Fueltank Reward",
|
|
10454
10598
|
fuelTankCode: "AFUELTANKCODE",
|
|
10455
|
-
},
|
|
10599
|
+
}, copyText: "Copied" }));
|
|
10456
10600
|
};
|
|
10457
10601
|
const RewardsCellFueltankLong = () => {
|
|
10458
10602
|
return (h("div", { style: { maxWidth: "222px" } },
|
|
@@ -10461,7 +10605,7 @@ const RewardsCellFueltankLong = () => {
|
|
|
10461
10605
|
type: "FUELTANK",
|
|
10462
10606
|
prettyValue: "Long Fueltank Reward",
|
|
10463
10607
|
fuelTankCode: "AFUELTANKCODE123456789123456789123456789123456789",
|
|
10464
|
-
},
|
|
10608
|
+
}, copyText: "Copied" })));
|
|
10465
10609
|
};
|
|
10466
10610
|
const SourceCellManual = () => {
|
|
10467
10611
|
return (h("sqm-rewards-table-source-cell", { reward: rewardsData$1, rewardSourceText: "Manual" }));
|
|
@@ -10656,7 +10800,7 @@ const RewardsTableCell = /*#__PURE__*/Object.freeze({
|
|
|
10656
10800
|
EmptyCell: EmptyCell$2
|
|
10657
10801
|
});
|
|
10658
10802
|
|
|
10659
|
-
const scenario$p = "@owner:sam\r\n@author:sam\r\nFeature: Rewards Table\r\n\r\n Shows a list of rewards as a table\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no rewards\r\n Given a user with rewards\r\n When they view the reward table\r\n Then no rewards are displayed\r\n And they see an image with a user icon\r\n And \"View your rewards\" in bold\r\n And \"See all the rewards you have earned from referring friends and completing tasks\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no rewards\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward table\r\n Then they see the custom empty state\r\n\r\n @minutae\r\n @ui\r\n Scenario: The loading state is shown while rewards are loading\r\n Given the table is loading\r\n Then the loading state is shown in the table\r\n And a custom loading state can be supplied in the \"loading\" slot\r\n And the pagination buttons are disabled\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The table becomes paginated when the number of rewards exceeds the per page limit\r\n Given the user has <number of rewards>\r\n And the table is configured to show <page limit> rewards per page\r\n Then the table will have <number of pages> page(s)\r\n And pagination buttons will allow users to navigate between pages\r\n And the pagination button to go to the next page is disabled on the last page of rewards\r\n And the pagination button to go to the previous page is disabled on the first page of rewards\r\n Examples:\r\n | number of rewards | page limit | number of pages |\r\n | 0 | 4 | 1 |\r\n | 1 | 4 | 1 |\r\n | 3 | 4 | 1 |\r\n | 5 | 4 | 2 |\r\n | 42 | 4 | 11 |\r\n\r\n @motivating\r\n @ui\r\n Scenario: The table converts to a card view on tablet and mobile window sizes\r\n Given a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"899px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"634px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario: Table and Mobile beakpoints can be configured\r\n Given the reward table has been configured with the following props\r\n | prop | value |\r\n | smBreakpoint | 599 |\r\n | mdBreakpoint | 799 |\r\n And a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"799px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"599px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: By default the first column heading is hidden in mobile\r\n Given a reward table with 4 columns\r\n And prop \"hidden-columns\" with <hideColumnValue>\r\n And a user with rewards\r\n When they view the reward table\r\n And their window size is below the tablet breakpoint\r\n Then reward cards are displayed\r\n And the titles of <columnsArehidden> within the card\r\n Examples:\r\n | hideColumnValue | columnsArehidden |\r\n | | the first column |\r\n | 0,1,2 | the first, second and third columns |\r\n | 3 | the fourth column |\r\n\r\n @motivating\r\n Scenario: Only rewards which occured in the program specific by \"program-id\" are shown\r\n Given the table is configured with \"program-id\"\r\n Then only rewards from the program with \"program-id\" are shown\r\n\r\n @landmine\r\n Scenario:
|
|
10803
|
+
const scenario$p = "@owner:sam\r\n@author:sam\r\nFeature: Rewards Table\r\n\r\n Shows a list of rewards as a table\r\n\r\n @motivating\r\n @ui\r\n Scenario: The empty state is shown if there are no rewards\r\n Given a user with rewards\r\n When they view the reward table\r\n Then no rewards are displayed\r\n And they see an image with a user icon\r\n And \"View your rewards\" in bold\r\n And \"See all the rewards you have earned from referring friends and completing tasks\" below the bolded text\r\n And the pagination buttons are disabled\r\n\r\n @minutae\r\n @ui\r\n Scenario: A custom empty state can be provided\r\n Given a user with no rewards\r\n And a custom empty state has been supplied in the \"empty\" slot\r\n When they view the reward table\r\n Then they see the custom empty state\r\n\r\n @minutae\r\n @ui\r\n Scenario: The loading state is shown while rewards are loading\r\n Given the table is loading\r\n Then the loading state is shown in the table\r\n And a custom loading state can be supplied in the \"loading\" slot\r\n And the pagination buttons are disabled\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: The table becomes paginated when the number of rewards exceeds the per page limit\r\n Given the user has <number of rewards>\r\n And the table is configured to show <page limit> rewards per page\r\n Then the table will have <number of pages> page(s)\r\n And pagination buttons will allow users to navigate between pages\r\n And the pagination button to go to the next page is disabled on the last page of rewards\r\n And the pagination button to go to the previous page is disabled on the first page of rewards\r\n Examples:\r\n | number of rewards | page limit | number of pages |\r\n | 0 | 4 | 1 |\r\n | 1 | 4 | 1 |\r\n | 3 | 4 | 1 |\r\n | 5 | 4 | 2 |\r\n | 42 | 4 | 11 |\r\n\r\n @motivating\r\n @ui\r\n Scenario: The table converts to a card view on tablet and mobile window sizes\r\n Given a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"899px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"634px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario: Table and Mobile beakpoints can be configured\r\n Given the reward table has been configured with the following props\r\n | prop | value |\r\n | smBreakpoint | 599 |\r\n | mdBreakpoint | 799 |\r\n And a user with rewards\r\n When they view the table\r\n And their window size is smaller than \"799px\"\r\n Then rewards are displayed as cards\r\n And they are in two columns\r\n When their window size is smaller than \"599px\"\r\n Then the rewards are displayed as cards in a singular column\r\n\r\n @motivating\r\n @ui\r\n Scenario Outline: By default the first column heading is hidden in mobile\r\n Given a reward table with 4 columns\r\n And prop \"hidden-columns\" with <hideColumnValue>\r\n And a user with rewards\r\n When they view the reward table\r\n And their window size is below the tablet breakpoint\r\n Then reward cards are displayed\r\n And the titles of <columnsArehidden> within the card\r\n Examples:\r\n | hideColumnValue | columnsArehidden |\r\n | | the first column |\r\n | 0,1,2 | the first, second and third columns |\r\n | 3 | the fourth column |\r\n\r\n @motivating\r\n Scenario: Only rewards which occured in the program specific by \"program-id\" are shown\r\n Given the table is configured with \"program-id\"\r\n Then only rewards from the program with \"program-id\" are shown\r\n\r\n @landmine\r\n Scenario: When a `classic` program Id is set then any reward without a programId is shown\r\n There is no easy way for the backend to filter for \"classic\" programs,\r\n thus we are filtering for rewards without programId's.\r\n\r\n Given the \"program-id\" of the table is set to \"classic\"\r\n Then rewards from classic programs are shown\r\n And manual rewards are shown\r\n\r\n @minutae\r\n @ui\r\n Scenario: Column heading can be hidden\r\n Given the table is configured with \"show-labels\" set to false\r\n Then the table is displayed without column headings";
|
|
10660
10804
|
|
|
10661
10805
|
const RewardsTable_stories = {
|
|
10662
10806
|
title: "Components/Rewards Table",
|
|
@@ -11434,7 +11578,7 @@ const Scroll_stories = {
|
|
|
11434
11578
|
};
|
|
11435
11579
|
const ScrollTag = () => {
|
|
11436
11580
|
return (h("div", { style: { position: "relative", height: "2000px" } },
|
|
11437
|
-
h("sqm-scroll", { "scroll-tag-name": "sqm-text", "button-text": "Scroll" }),
|
|
11581
|
+
h("sqm-scroll", { "scroll-tag-name": "sqm-text", "button-text": "Scroll", "scroll-animation": "smooth" }),
|
|
11438
11582
|
h("div", { style: { position: "absolute", bottom: "0" } },
|
|
11439
11583
|
h("sqm-text", { slot: "label" },
|
|
11440
11584
|
h("h3", null, "Earn more rewards"),
|
|
@@ -11442,7 +11586,15 @@ const ScrollTag = () => {
|
|
|
11442
11586
|
};
|
|
11443
11587
|
const ScrollId = () => {
|
|
11444
11588
|
return (h("div", { style: { position: "relative", height: "2000px" } },
|
|
11445
|
-
h("sqm-scroll", { "button-text": "Scroll", "scroll-id": "my-id" }),
|
|
11589
|
+
h("sqm-scroll", { "button-text": "Scroll", "scroll-id": "my-id", "scroll-animation": "smooth" }),
|
|
11590
|
+
h("div", { style: { position: "absolute", bottom: "0" } },
|
|
11591
|
+
h("sqm-text", { slot: "label", id: "my-id" },
|
|
11592
|
+
h("h3", null, "Earn more rewards"),
|
|
11593
|
+
h("p", null, "Get points while using Klip. Use those points to redeem rewards like one free month of Klip Enterprise or two plane tickets to anywhere in North America")))));
|
|
11594
|
+
};
|
|
11595
|
+
const ScrollAutoAnimation = () => {
|
|
11596
|
+
return (h("div", { style: { position: "relative", height: "2000px" } },
|
|
11597
|
+
h("sqm-scroll", { "button-text": "Scroll", "scroll-id": "my-id", "scroll-animation": "auto" }),
|
|
11446
11598
|
h("div", { style: { position: "absolute", bottom: "0" } },
|
|
11447
11599
|
h("sqm-text", { slot: "label", id: "my-id" },
|
|
11448
11600
|
h("h3", null, "Earn more rewards"),
|
|
@@ -11450,7 +11602,7 @@ const ScrollId = () => {
|
|
|
11450
11602
|
};
|
|
11451
11603
|
const ScrollTabGroup = () => {
|
|
11452
11604
|
return (h("div", { style: { position: "relative", height: "2000px" } },
|
|
11453
|
-
h("sqm-scroll", { "button-text": "Redeem rewards", "scroll-id": "tab-3" }),
|
|
11605
|
+
h("sqm-scroll", { "button-text": "Redeem rewards", "scroll-id": "tab-3", "scroll-animation": "smooth" }),
|
|
11454
11606
|
h("div", { style: { position: "absolute", bottom: "0" }, innerHTML: `
|
|
11455
11607
|
<sqm-tabs>
|
|
11456
11608
|
<sqm-tab header="Leaderboard">
|
|
@@ -11539,12 +11691,9 @@ const ShoelaceProps = () => {
|
|
|
11539
11691
|
h("br", null),
|
|
11540
11692
|
" ",
|
|
11541
11693
|
h("hr", null),
|
|
11542
|
-
h("h3", null, "Caret:"),
|
|
11543
|
-
h("sqm-scroll", { caret: true }, "Button"),
|
|
11544
|
-
h("br", null),
|
|
11545
|
-
" ",
|
|
11546
|
-
h("hr", null),
|
|
11547
11694
|
h("h3", null, "Icon:"),
|
|
11695
|
+
h("sqm-scroll", { "button-type": "primary", iconName: "facebook" }, "Icon Name"),
|
|
11696
|
+
h("br", null),
|
|
11548
11697
|
h("sqm-scroll", { iconName: "gear", iconSlot: "prefix" }, "Icon Slot Prefix"),
|
|
11549
11698
|
h("br", null),
|
|
11550
11699
|
h("sqm-scroll", { iconName: "gear", iconSlot: "suffix" }, "Icon Slot Suffix"),
|
|
@@ -11561,22 +11710,8 @@ const ShoelaceProps = () => {
|
|
|
11561
11710
|
h("br", null),
|
|
11562
11711
|
" ",
|
|
11563
11712
|
h("hr", null),
|
|
11564
|
-
h("h3", null, "Disabled:"),
|
|
11565
|
-
h("sqm-scroll", { disabled: true }, "Button"),
|
|
11566
|
-
h("br", null),
|
|
11567
|
-
" ",
|
|
11568
|
-
h("hr", null),
|
|
11569
|
-
h("h3", null, "Link:"),
|
|
11570
|
-
h("sqm-scroll", { href: "https://example.com/" }, "Link"),
|
|
11571
|
-
h("br", null),
|
|
11572
|
-
h("sqm-scroll", { href: "https://example.com/", target: "_self" }, "Same Window"),
|
|
11573
|
-
h("br", null),
|
|
11574
|
-
h("sqm-scroll", { href: "/assets/images/wordmark.svg", download: "shoelace.svg" }, "Download"),
|
|
11575
|
-
h("br", null),
|
|
11576
|
-
" ",
|
|
11577
|
-
h("hr", null),
|
|
11578
11713
|
h("h3", null, "Mobile Friendly:"),
|
|
11579
|
-
h("sqm-scroll", {
|
|
11714
|
+
h("sqm-scroll", { mobile: true }, "Button"),
|
|
11580
11715
|
h("br", null),
|
|
11581
11716
|
" ",
|
|
11582
11717
|
h("hr", null)));
|
|
@@ -11587,6 +11722,7 @@ const Scroll = /*#__PURE__*/Object.freeze({
|
|
|
11587
11722
|
'default': Scroll_stories,
|
|
11588
11723
|
ScrollTag: ScrollTag,
|
|
11589
11724
|
ScrollId: ScrollId,
|
|
11725
|
+
ScrollAutoAnimation: ScrollAutoAnimation,
|
|
11590
11726
|
ScrollTabGroup: ScrollTabGroup,
|
|
11591
11727
|
ScrollTabGroupInner: ScrollTabGroupInner,
|
|
11592
11728
|
ShoelaceProps: ShoelaceProps
|
|
@@ -11768,10 +11904,10 @@ const ShareCode = () => {
|
|
|
11768
11904
|
return h("sqm-share-code", null);
|
|
11769
11905
|
};
|
|
11770
11906
|
const CustomTooltipText = () => {
|
|
11771
|
-
return h("sqm-share-code", {
|
|
11907
|
+
return h("sqm-share-code", { tooltipText: "CUSTOM TOOLTIP TEXT" });
|
|
11772
11908
|
};
|
|
11773
11909
|
const CustomTooltipDuration = () => {
|
|
11774
|
-
return h("sqm-share-code", {
|
|
11910
|
+
return h("sqm-share-code", { tooltipLifespan: 5000 });
|
|
11775
11911
|
};
|
|
11776
11912
|
|
|
11777
11913
|
const ShareCode$1 = /*#__PURE__*/Object.freeze({
|
|
@@ -14458,6 +14594,7 @@ const stories = [
|
|
|
14458
14594
|
PasswordField,
|
|
14459
14595
|
TaskCard$2,
|
|
14460
14596
|
PortalTemplates,
|
|
14597
|
+
Widget,
|
|
14461
14598
|
ProgramMenu,
|
|
14462
14599
|
PoweredByImg,
|
|
14463
14600
|
PortalFooter,
|