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