@saasquatch/mint-components 1.13.2 → 1.13.3-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/cjs/{ShadowViewAddon-cf0ee0a0.js → ShadowViewAddon-3ddee92b.js} +6 -5
  2. package/dist/cjs/copy-text-view-c85acaaa.js +96 -0
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/mint-components.cjs.js +1 -1
  5. package/dist/cjs/sqm-big-stat_39.cjs.entry.js +3 -2
  6. package/dist/cjs/sqm-pagination_3.cjs.entry.js +6 -5
  7. package/dist/cjs/sqm-qr-code-view-7b26582e.js +87 -0
  8. package/dist/cjs/sqm-qr-code.cjs.entry.js +121 -0
  9. package/dist/cjs/sqm-stencilbook.cjs.entry.js +41 -5
  10. package/dist/cjs/{copy-text-view-a5524c20.js → useReferralCodes-82e8797b.js} +0 -93
  11. package/dist/collection/collection-manifest.json +1 -0
  12. package/dist/collection/components/sqm-qr-code/QRCode.stories.js +27 -0
  13. package/dist/collection/components/sqm-qr-code/sqm-qr-code-view.js +82 -0
  14. package/dist/collection/components/sqm-qr-code/sqm-qr-code.js +179 -0
  15. package/dist/collection/components/sqm-qr-code/useQRCode.js +59 -0
  16. package/dist/collection/components/sqm-stencilbook/sqm-stencilbook.js +2 -0
  17. package/dist/esm/{ShadowViewAddon-fd07e6e1.js → ShadowViewAddon-499b1f86.js} +2 -1
  18. package/dist/esm/copy-text-view-782137ba.js +94 -0
  19. package/dist/esm/loader.js +1 -1
  20. package/dist/esm/mint-components.js +1 -1
  21. package/dist/esm/sqm-big-stat_39.entry.js +3 -2
  22. package/dist/esm/sqm-pagination_3.entry.js +2 -1
  23. package/dist/esm/sqm-qr-code-view-814b2929.js +85 -0
  24. package/dist/esm/sqm-qr-code.entry.js +117 -0
  25. package/dist/esm/sqm-stencilbook.entry.js +41 -5
  26. package/dist/esm/{copy-text-view-459a2e35.js → useReferralCodes-8f75921a.js} +1 -93
  27. package/dist/esm-es5/ShadowViewAddon-499b1f86.js +1 -0
  28. package/dist/esm-es5/copy-text-view-782137ba.js +1 -0
  29. package/dist/esm-es5/loader.js +1 -1
  30. package/dist/esm-es5/mint-components.js +1 -1
  31. package/dist/esm-es5/sqm-big-stat_39.entry.js +1 -1
  32. package/dist/esm-es5/sqm-pagination_3.entry.js +1 -1
  33. package/dist/esm-es5/sqm-qr-code-view-814b2929.js +1 -0
  34. package/dist/esm-es5/sqm-qr-code.entry.js +1 -0
  35. package/dist/esm-es5/sqm-stencilbook.entry.js +1 -1
  36. package/dist/esm-es5/useReferralCodes-8f75921a.js +1 -0
  37. package/dist/mint-components/mint-components.esm.js +1 -1
  38. package/dist/mint-components/p-10cc43c9.entry.js +9 -0
  39. package/dist/mint-components/p-30362262.system.entry.js +1 -0
  40. package/dist/mint-components/p-31015791.js +1 -0
  41. package/dist/mint-components/p-313feb4a.system.entry.js +1 -0
  42. package/dist/mint-components/p-37996351.system.js +1 -1
  43. package/dist/mint-components/p-3b90e01b.system.js +1 -0
  44. package/dist/mint-components/p-3f7b81b8.js +52 -0
  45. package/dist/mint-components/p-49670357.entry.js +13 -0
  46. package/dist/mint-components/p-5aae2d61.system.js +1 -0
  47. package/dist/mint-components/p-5cb7f9fc.system.entry.js +1 -0
  48. package/dist/mint-components/{p-b51e79b3.entry.js → p-7846937e.entry.js} +2 -2
  49. package/dist/mint-components/p-97038074.system.entry.js +1 -0
  50. package/dist/mint-components/p-bcac3ecf.js +1 -0
  51. package/dist/mint-components/p-da4ff3b4.system.js +1 -0
  52. package/dist/mint-components/p-dbc0e4f8.system.js +1 -0
  53. package/dist/mint-components/{p-d12fc50f.js → p-e2d5cd22.js} +20 -20
  54. package/dist/mint-components/{p-87d385d8.entry.js → p-f15c1a53.entry.js} +1 -1
  55. package/dist/types/components/sqm-qr-code/QRCode.stories.d.ts +6 -0
  56. package/dist/types/components/sqm-qr-code/sqm-qr-code-view.d.ts +13 -0
  57. package/dist/types/components/sqm-qr-code/sqm-qr-code.d.ts +33 -0
  58. package/dist/types/components/sqm-qr-code/useQRCode.d.ts +14 -0
  59. package/dist/types/components.d.ts +56 -0
  60. package/docs/docs.docx +0 -0
  61. package/docs/raisins.json +1 -1
  62. package/grapesjs/grapesjs.js +1 -1
  63. package/package.json +1 -1
  64. package/dist/esm-es5/ShadowViewAddon-fd07e6e1.js +0 -1
  65. package/dist/esm-es5/copy-text-view-459a2e35.js +0 -1
  66. package/dist/mint-components/p-57e2c2fa.system.js +0 -1
  67. package/dist/mint-components/p-717cc8ac.system.js +0 -1
  68. package/dist/mint-components/p-71bc04d2.system.entry.js +0 -1
  69. package/dist/mint-components/p-7f2d4212.js +0 -52
  70. package/dist/mint-components/p-abedbbf3.system.entry.js +0 -1
  71. package/dist/mint-components/p-bc83460e.system.entry.js +0 -1
  72. package/dist/mint-components/p-da932ca2.entry.js +0 -9
@@ -0,0 +1,121 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const index = require('./index-a29c60ef.js');
6
+ const stencilHooks_module = require('./stencil-hooks.module-3a336b0f.js');
7
+ const index_module = require('./index.module-ee84433d.js');
8
+ const cjs = require('./cjs-1066ec21.js');
9
+ const utils = require('./utils-6847bc06.js');
10
+ require('./JSS-8503a151.js');
11
+ const useReferralCodes = require('./useReferralCodes-82e8797b.js');
12
+ const sqmQrCodeView = require('./sqm-qr-code-view-7b26582e.js');
13
+
14
+ const ShareLinkQuery = index_module.dist.gql `
15
+ query shareLink($programId: ID, $engagementMedium: UserEngagementMedium!) {
16
+ user: viewer {
17
+ ... on User {
18
+ shareLink(
19
+ programId: $programId
20
+ engagementMedium: $engagementMedium
21
+ shareMedium: DIRECT
22
+ )
23
+ }
24
+ }
25
+ }
26
+ `;
27
+ function useQRCode(props) {
28
+ const programId = index_module.H();
29
+ const user = index_module.J();
30
+ const engagementMedium = index_module.B();
31
+ const contextData = index_module.Fn(useReferralCodes.REFERRAL_CODES_NAMESPACE);
32
+ const [dialogIsOpen, setDialog] = stencilHooks_module.useState(false);
33
+ const { data } = index_module.wn(ShareLinkQuery, { programId, engagementMedium }, !(user === null || user === void 0 ? void 0 : user.jwt) || (contextData === null || contextData === void 0 ? void 0 : contextData.shareLink) !== undefined);
34
+ const qrLink = `${data.user.shareLink}?qrCode`;
35
+ const createDownloadable = async () => {
36
+ const res = await fetch(`${qrLink}&qrCodeSize=800&qrCodeImageFormat=png`);
37
+ const blob = await res.blob();
38
+ const url = URL.createObjectURL(blob);
39
+ const link = document.createElement("a");
40
+ link.href = url;
41
+ link.download = "qrCode.png";
42
+ document.body.appendChild(link);
43
+ link.click();
44
+ document.body.removeChild(link);
45
+ };
46
+ const createPrintable = async () => {
47
+ const res = await fetch(`${qrLink}&qrCodeSize=1000&qrCodeImageFormat=png&qrCodeErrorCorrectionLevel=H`);
48
+ const blob = await res.blob();
49
+ const url = URL.createObjectURL(blob);
50
+ const page = window.open("about:blank", "_new");
51
+ const img = page.document.createElement("img");
52
+ img.src = url;
53
+ img.onload = () => {
54
+ page.print();
55
+ page.close();
56
+ };
57
+ page.document.body.appendChild(img);
58
+ };
59
+ return {
60
+ ...props,
61
+ qrLink,
62
+ dialogIsOpen,
63
+ showDialog: () => setDialog(true),
64
+ hideDialog: () => setDialog(false),
65
+ createDownloadable,
66
+ createPrintable,
67
+ };
68
+ }
69
+
70
+ const QrCode = class {
71
+ constructor(hostRef) {
72
+ index.registerInstance(this, hostRef);
73
+ /**
74
+ * @uiName Title
75
+ */
76
+ this.titleText = "Share your QR code";
77
+ /**
78
+ * @uiName View QR code text
79
+ */
80
+ this.viewCodeText = "View QR code";
81
+ /**
82
+ * @uiName Download QR code text
83
+ */
84
+ this.downloadCodeText = "Download";
85
+ /**
86
+ * @uiName Print QR code text
87
+ */
88
+ this.printCodeText = "Print";
89
+ stencilHooks_module.h$1(this);
90
+ }
91
+ disconnectedCallback() { }
92
+ render() {
93
+ const thisProps = utils.getProps(this);
94
+ const props = index_module.isDemo() ? useDemoQRCode(thisProps) : useQRCode(thisProps);
95
+ return index.h(sqmQrCodeView.QrCodeView, Object.assign({}, props));
96
+ }
97
+ };
98
+ function useDemoQRCode(props) {
99
+ const [dialogIsOpen, setDialog] = stencilHooks_module.useState(false);
100
+ return cjs.cjs({
101
+ dialogIsOpen,
102
+ showDialog: () => setDialog(true),
103
+ hideDialog: () => setDialog(false),
104
+ titleText: this.titleText,
105
+ viewCodeText: this.viewCodeText,
106
+ downloadCodeText: this.downloadCodeText,
107
+ printCodeText: this.printCodeText,
108
+ qrLink: "https://media.istockphoto.com/id/1251071788/vector/qr-code-bar-code-black-icon-digital-technology.jpg?s=612x612&w=0&k=20&c=maw4OqMSEegAdSo8Drm9HO7i1ddddvP2YaL1UuWbRig=",
109
+ fireViewQrEvent: () => {
110
+ console.log("View QR Code clicked");
111
+ },
112
+ createDownloadable: async () => {
113
+ console.log("Download QR Code clicked");
114
+ },
115
+ createPrintable: async () => {
116
+ console.log("Print QR Code clicked");
117
+ },
118
+ }, props.demoData || {}, { arrayMerge: (_, a) => a });
119
+ }
120
+
121
+ exports.sqm_qr_code = QrCode;
@@ -9,8 +9,9 @@ const index_module = require('./index.module-ee84433d.js');
9
9
  require('./cjs-1066ec21.js');
10
10
  require('./utils-6847bc06.js');
11
11
  const JSS = require('./JSS-8503a151.js');
12
- const copyTextView = require('./copy-text-view-a5524c20.js');
12
+ require('./useReferralCodes-82e8797b.js');
13
13
  require('./mixins-f7e0377a.js');
14
+ const copyTextView = require('./copy-text-view-c85acaaa.js');
14
15
  const GenericTableView = require('./GenericTableView-a9f4ba75.js');
15
16
  require('./useChildElements-1b35d945.js');
16
17
  const luxon = require('./luxon-2926d85f.js');
@@ -32,7 +33,8 @@ const sqmPortalProfileView = require('./sqm-portal-profile-view-33164798.js');
32
33
  require('./utilities-78f5e169.js');
33
34
  const sqmPortalResetPasswordView = require('./sqm-portal-reset-password-view-fe602822.js');
34
35
  const sqmPortalVerifyEmailView = require('./sqm-portal-verify-email-view-7b678f34.js');
35
- const ShadowViewAddon = require('./ShadowViewAddon-cf0ee0a0.js');
36
+ const sqmQrCodeView = require('./sqm-qr-code-view-7b26582e.js');
37
+ const ShadowViewAddon = require('./ShadowViewAddon-3ddee92b.js');
36
38
  const sqmPortalContainerView = require('./sqm-portal-container-view-4f15143a.js');
37
39
  const sqmInvoiceTableView = require('./sqm-invoice-table-view-baded4af.js');
38
40
 
@@ -4104,7 +4106,7 @@ const promoCodeReferralWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\
4104
4106
 
4105
4107
  const loyaltyWidget = "<sqm-brand brand-color=\"#4225c4\" brand-font=\"Nunito Sans\">\n <sqm-portal-container\n direction=\"column\"\n padding=\"small\"\n gap=\"xxxx-large\"\n display=\"grid\"\n max-width=\"100%\"\n background-color=\"#ffffff\"\n >\n <sqm-portal-container\n direction=\"column\"\n padding=\"none\"\n gap=\"xxx-large\"\n display=\"grid\"\n max-width=\"100%\"\n >\n <sqm-hero-image\n image-url=\"https://res.cloudinary.com/saasquatch/image/upload/v1644000275/squatch-assets/yr6ER3R.png\"\n header=\"MyCompany Rewards\"\n description=\"Complete tasks to earn rewards\"\n layout=\"overlay\"\n padding-image=\"xxxx-large\"\n padding-text=\"xxx-large\"\n image-pos=\"center\"\n overlay-color=\"#5e5669\"\n overlay-opacity=\"0.9\"\n >\n </sqm-hero-image>\n <sqm-portal-container\n direction=\"column\"\n padding=\"none\"\n gap=\"xxx-large\"\n max-width=\"770px\"\n center\n display=\"grid\"\n >\n <sqm-program-explainer header=\"How it works\">\n <sqm-program-explainer-step\n description=\"Complete tasks like uploading your first video or sharing videos with friends\"\n header=\"Earn points for using our product\"\n icon=\"cash-stack\"\n text-color=\"#000000\"\n >\n </sqm-program-explainer-step>\n <sqm-program-explainer-step\n description=\"Redeem rewards like one free month of Enterprise or two plane tickets to anywhere in North America\"\n header=\"Redeem rewards with your points\"\n icon=\"people\"\n text-color=\"#000000\"\n >\n </sqm-program-explainer-step>\n </sqm-program-explainer>\n <sqm-portal-container\n center\n direction=\"row\"\n display=\"flex\"\n justify-content=\"space-between\"\n gap=\"xxx-large\"\n max-width=\"100%\"\n padding=\"none\"\n >\n <sqm-stat-container space=\"xxx-large\" display=\"flex\">\n <sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/rewardsRedeemed/CREDIT/POINTS\"\n >\n <p>Points Redeemed</p>\n </sqm-big-stat>\n <sqm-big-stat\n flex-reverse=\"true\"\n alignment=\"left\"\n stat-type=\"/rewardBalance/CREDIT/POINT/value/global\"\n >\n <p>Points Balance</p>\n </sqm-big-stat>\n </sqm-stat-container>\n </sqm-portal-container>\n <sqm-portal-container\n direction=\"column\"\n padding=\"none\"\n gap=\"xx-large\"\n display=\"grid\"\n max-width=\"100%\"\n >\n <sqm-titled-section\n label-margin=\"small\"\n padding=\"none\"\n text-align=\"center\"\n >\n <h3 slot=\"label\">Earn points</h3>\n </sqm-titled-section>\n <sqm-card-feed gap=\"24\" width=\"347\">\n <sqm-task-card\n reward-amount=\"20\"\n goal=\"1\"\n card-title=\"Complete a Survey\"\n description=\"Fill out our NPS survey and get 20 points for giving us honest feedback.\"\n button-text=\"Take survey\"\n reward-unit=\"Points\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n finite=\"0\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n <sqm-task-card\n reward-amount=\"250\"\n goal=\"500\"\n show-progress-bar\n card-title=\"Spend $500\"\n description=\"Earn 250 points when you spend $500 or more.\"\n button-text=\"See plans\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n progress-bar-unit=\"$\"\n finite=\"0\"\n reward-unit=\"Points\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n <sqm-task-card\n goal=\"1\"\n reward-amount=\"50\"\n card-title=\"Follow Us on X\"\n description=\"Earn 50 points when you Follow Us on X!\"\n button-text=\"Follow\"\n button-link=\"https://twitter.com/\"\n open-new-tab=\"true\"\n event-key=\"socialFollow\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n finite=\"0\"\n reward-unit=\"Points\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n <sqm-task-card\n reward-amount=\"1\"\n reward-unit=\"Free Month\"\n goal=\"1\"\n card-title=\"Upgrade Your Plan\"\n description=\"Receive one free month for being a committed customer when you upgrade your plan.\"\n button-text=\"Upgrade\"\n completed-text=\"Completed {finite, select, 0 {{count, plural, =1 {{count} time} other {{count} times}}} other {{count}/{finite} times}}\"\n ended-message=\"Ended {endDate}\"\n expiry-message=\"Ends {endDate}\"\n open-new-tab=\"false\"\n finite=\"0\"\n starts-on-message=\"Starts {startDate}\"\n >\n </sqm-task-card>\n </sqm-card-feed>\n <sqm-portal-container\n gap=\"large\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n >\n <sqm-titled-section\n padding=\"none\"\n text-align=\"center\"\n label-margin=\"xx-small\"\n >\n <h3 slot=\"label\">Reward History</h3>\n </sqm-titled-section>\n <sqm-rewards-table\n per-page=\"4\"\n hidden-columns=\"0\"\n more-label=\"Next\"\n prev-label=\"Prev\"\n sm-breakpoint=\"599\"\n md-breakpoint=\"799\"\n >\n <sqm-rewards-table-reward-column\n available-text=\"{availableAmount} remaining\"\n column-title=\"Reward\"\n copy-text=\"Copied!\"\n redeemed-text=\"{redeemedAmount} redeemed\"\n >\n </sqm-rewards-table-reward-column>\n <sqm-rewards-table-source-column\n anonymous-user=\"Anonymous User\"\n column-title=\"Source\"\n deleted-user=\"Deleted User\"\n referral-text=\"{rewardSource, select, FRIEND_SIGNUP {Referral to} REFERRED {Referred by} other {}}\"\n reward-exchange-text=\"Reward Exchange\"\n reward-source-text=\"{rewardSource, select, MANUAL {Manual} AUTOMATED {{programName}} other {}}\"\n >\n </sqm-rewards-table-source-column>\n <sqm-rewards-table-status-column\n column-title=\"Status\"\n expiry-text=\"Expires on \"\n status-text=\"{status, select, AVAILABLE {Available} CANCELLED {Cancelled} PENDING {Pending} EXPIRED {Expired} REDEEMED {Redeemed} other {Not available} }\"\n >\n </sqm-rewards-table-status-column>\n <sqm-rewards-table-date-column\n column-title=\"Date received\"\n date-shown=\"dateGiven\"\n >\n </sqm-rewards-table-date-column>\n <sqm-empty\n slot=\"empty\"\n empty-state-image=\"https://res.cloudinary.com/saasquatch/image/upload/v1644360953/squatch-assets/empty_reward2.png\"\n empty-state-header=\"View your rewards\"\n empty-state-text=\"Refer friends and complete tasks to view the details of your rewards\"\n >\n </sqm-empty>\n </sqm-rewards-table>\n </sqm-portal-container>\n </sqm-portal-container>\n <sqm-portal-footer\n support-email=\"support@example.com\"\n terms-link=\"https:\\/\\/example.com\"\n faq-link=\"https:\\/\\/example.com\"\n terms-text=\"Terms And Conditions\"\n faq-text=\"FAQ\"\n show-powered-by=\"true\"\n padding-bottom=\"none\"\n padding-left=\"none\"\n padding-right=\"none\"\n padding-top=\"none\"\n ></sqm-portal-footer>\n </sqm-portal-container>\n </sqm-portal-container>\n </sqm-portal-container>\n</sqm-brand>\n";
4106
4108
 
4107
- const instantAccessReferrerShareWidget = "<sqm-hero\n background=\"https://res.cloudinary.com/saasquatch/image/upload/v1683589933/Portal%20Assets/Screen-Shot-2022-01-06-at-3.23.58-AM.png\"\n columns=\"2\"\n padding-size=\"medium\"\n wrap-direction=\"wrap\"\n secondary-background=\"#FFFFFF\"\n min-height=\"200\"\n ><sqm-referral-card\n vertical-alignment=\"start\"\n slot=\"secondary-column\"\n padding-bottom=\"small\"\n padding-left=\"x-large\"\n padding-right=\"x-large\"\n padding-top=\"small\"\n >\n <sqm-titled-section\n text-align=\"center\"\n label-margin=\"none\"\n padding=\"none\"\n slot=\"header\"\n ><h1 slot=\"label\">Invite your friends to unlock rewards!</h1>\n <p slot=\"content\">\n They&#x2019;ll get a &#x24;50 credit towards a new account and\n you&#x2019;ll get a &#x24;50 in credit for each friend you refer.\n </p></sqm-titled-section\n >\n <sqm-portal-container\n gap=\"small\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n slot=\"left\"\n >\n <p style=\"margin: 0\">Choose how you want to share:</p>\n <sqm-share-link\n tooltip-text=\"Copied to Clipboard\"\n tooltip-lifespan=\"1000\"\n >\n </sqm-share-link>\n <sqm-share-button\n medium=\"email\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Share via email\n </sqm-share-button>\n <sqm-share-button\n medium=\"linkedin\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Share on LinkedIn\n </sqm-share-button>\n <sqm-share-button\n medium=\"twitter\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Post about us on X\n </sqm-share-button> </sqm-portal-container\n ><sqm-portal-container\n display=\"flex\"\n slot=\"footer\"\n gap=\"small\"\n justify-content=\"center\"\n >\n <sqm-logout-current-user\n user-identification-text=\"{email}\"\n switch-user-link=\"#\"\n switch-user-text=\"not you?\"\n ></sqm-logout-current-user>\n <sqm-portal-footer\n support-email=\"support@example.com\"\n show-powered-by=\"true\"\n padding-bottom=\"x-small\"\n padding-left=\"none\"\n padding-right=\"none\"\n padding-top=\"none\"\n hide-support-text\n terms-text=\"Terms And Conditions\"\n terms-link=\"https://example.com\"\n ></sqm-portal-footer></sqm-portal-container\n ></sqm-referral-card>\n</sqm-hero>\n";
4109
+ const instantAccessReferrerShareWidget = "<sqm-hero\n background=\"https://res.cloudinary.com/saasquatch/image/upload/v1683589933/Portal%20Assets/Screen-Shot-2022-01-06-at-3.23.58-AM.png\"\n columns=\"2\"\n padding-size=\"medium\"\n wrap-direction=\"wrap\"\n secondary-background=\"#FFFFFF\"\n min-height=\"200\"\n ><sqm-referral-card\n vertical-alignment=\"start\"\n slot=\"secondary-column\"\n padding-bottom=\"small\"\n padding-left=\"x-large\"\n padding-right=\"x-large\"\n padding-top=\"small\"\n >\n <sqm-titled-section\n text-align=\"center\"\n label-margin=\"none\"\n padding=\"none\"\n slot=\"header\"\n ><h1 slot=\"label\">Invite your friends to unlock rewards!</h1>\n <p slot=\"content\">\n They&#x2019;ll get a &#x24;50 credit towards a new account and\n you&#x2019;ll get a &#x24;50 in credit for each friend you refer.\n </p></sqm-titled-section\n >\n <sqm-portal-container\n gap=\"small\"\n direction=\"column\"\n display=\"grid\"\n max-width=\"100%\"\n padding=\"none\"\n slot=\"left\"\n >\n <p style=\"margin: 0\">Choose how you want to share:</p>\n <sqm-share-link\n tooltip-text=\"Copied to Clipboard\"\n tooltip-lifespan=\"1000\"\n >\n </sqm-share-link>\n <sqm-share-button\n medium=\"email\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Share via email\n </sqm-share-button>\n <sqm-share-button\n medium=\"linkedin\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Share on LinkedIn\n </sqm-share-button>\n <sqm-share-button\n medium=\"twitter\"\n icon-slot=\"prefix\"\n size=\"medium\"\n type=\"default\"\n >\n Post about us on X\n </sqm-share-button> </sqm-portal-container\n ><sqm-portal-container\n display=\"flex\"\n slot=\"footer\"\n gap=\"small\"\n justify-content=\"center\"\n >\n <sqm-logout-current-user\n user-identification-text=\"{email}\"\n switch-user-link=\"#\"\n switch-user-text=\"not you?\"\n email-error-text=\"Error fetching email\"\n ></sqm-logout-current-user>\n <sqm-portal-footer\n support-email=\"support@example.com\"\n show-powered-by=\"true\"\n padding-bottom=\"x-small\"\n padding-left=\"none\"\n padding-right=\"none\"\n padding-top=\"none\"\n hide-support-text\n terms-text=\"Terms And Conditions\"\n terms-link=\"https://example.com\"\n ></sqm-portal-footer></sqm-portal-container\n ></sqm-referral-card>\n</sqm-hero>\n";
4108
4110
 
4109
4111
  const instantAccessFriendCouponWidget = "<sqm-hero\n background=\"https://res.cloudinary.com/saasquatch/image/upload/v1683589933/Portal%20Assets/Screen-Shot-2022-01-06-at-3.23.58-AM.png\"\n columns=\"2\"\n padding-size=\"medium\"\n wrap-direction=\"wrap\"\n secondary-background=\"#FFFFFF\"\n>\n <sqm-referral-card\n vertical-alignment=\"start\"\n padding-bottom=\"small\"\n padding-left=\"x-large\"\n padding-right=\"x-large\"\n padding-top=\"small\"\n slot=\"secondary-column\"\n >\n <sqm-portal-container\n gap=\"large\"\n direction=\"column\"\n display=\"flex\"\n justify-content=\"center\"\n max-width=\"100%\"\n padding=\"none\"\n slot=\"header\"\n >\n <sqm-titled-section\n text-align=\"center\"\n label-margin=\"xxx-small\"\n padding=\"none\"\n >\n <h1 slot=\"label\">You got &#x24;50 off thanks to a friend!</h1>\n <p slot=\"content\">\n <span> Use this reward to get &#x24;50 off your next purchase. </span>\n </p>\n </sqm-titled-section>\n\n <sqm-coupon-code copy-button-style=\"button-outside\"></sqm-coupon-code>\n </sqm-portal-container>\n\n <sqm-portal-footer\n slot=\"footer\"\n show-powered-by=\"true\"\n padding-bottom=\"none\"\n padding-left=\"none\"\n padding-right=\"none\"\n padding-top=\"none\"\n hide-support-text\n terms-text=\"Terms And Conditions\"\n terms-link=\"https://example.com\"\n ></sqm-portal-footer>\n </sqm-referral-card>\n</sqm-hero>\n";
4110
4112
 
@@ -15671,6 +15673,39 @@ const PortalGoogleRegistrationFormStories = /*#__PURE__*/Object.freeze({
15671
15673
  TermsAndConditions: TermsAndConditions$4
15672
15674
  });
15673
15675
 
15676
+ const QRCode_stories = {
15677
+ title: "Components/QR Code",
15678
+ };
15679
+ const defaultProps$r = {
15680
+ dialogIsOpen: false,
15681
+ showDialog: () => void 0,
15682
+ hideDialog: () => void 0,
15683
+ qrLink: "https://media.istockphoto.com/id/1251071788/vector/qr-code-bar-code-black-icon-digital-technology.jpg?s=612x612&w=0&k=20&c=maw4OqMSEegAdSo8Drm9HO7i1ddddvP2YaL1UuWbRig=",
15684
+ createDownloadable: async () => {
15685
+ console.log("Download QR Code clicked");
15686
+ },
15687
+ createPrintable: async () => {
15688
+ console.log("Print QR Code clicked");
15689
+ },
15690
+ titleText: "Share your QR code",
15691
+ viewCodeText: "View QR code",
15692
+ downloadCodeText: "Download",
15693
+ printCodeText: "Print",
15694
+ };
15695
+ const Default$o = () => {
15696
+ return index.h(sqmQrCodeView.QrCodeView, Object.assign({}, defaultProps$r));
15697
+ };
15698
+ const Expanded = () => {
15699
+ return index.h(sqmQrCodeView.QrCodeView, Object.assign({}, defaultProps$r, { dialogIsOpen: true }));
15700
+ };
15701
+
15702
+ const QRCode = /*#__PURE__*/Object.freeze({
15703
+ __proto__: null,
15704
+ 'default': QRCode_stories,
15705
+ Default: Default$o,
15706
+ Expanded: Expanded
15707
+ });
15708
+
15674
15709
  /**
15675
15710
  *
15676
15711
  * Themes
@@ -15683,7 +15718,7 @@ const PortalGoogleRegistrationFormStories = /*#__PURE__*/Object.freeze({
15683
15718
  *
15684
15719
  */
15685
15720
  //
15686
- const Default$o = `
15721
+ const Default$p = `
15687
15722
  // No CSS
15688
15723
  `;
15689
15724
  const Orangey = `
@@ -15717,7 +15752,7 @@ const Klip = `
15717
15752
 
15718
15753
  const Themes = /*#__PURE__*/Object.freeze({
15719
15754
  __proto__: null,
15720
- Default: Default$o,
15755
+ Default: Default$p,
15721
15756
  Orangey: Orangey,
15722
15757
  Netflix: Netflix,
15723
15758
  SaaSquatchCorporate: SaaSquatchCorporate,
@@ -18404,6 +18439,7 @@ const stories = [
18404
18439
  WidgetCodeVerification,
18405
18440
  PayoutButtonScroll,
18406
18441
  PayoutStatusAlert,
18442
+ QRCode,
18407
18443
  ];
18408
18444
  const StencilStorybook = class {
18409
18445
  constructor(hostRef) {
@@ -1,10 +1,7 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index-a29c60ef.js');
4
3
  const stencilHooks_module = require('./stencil-hooks.module-3a336b0f.js');
5
4
  const index_module = require('./index.module-ee84433d.js');
6
- const JSS = require('./JSS-8503a151.js');
7
- const mixins = require('./mixins-f7e0377a.js');
8
5
 
9
6
  const GET_REFERRAL_CODES = index_module.dist.gql `
10
7
  query getCodes(
@@ -135,96 +132,6 @@ function useReferralCodes(props) {
135
132
  };
136
133
  }
137
134
 
138
- const style = {
139
- HostBlock: mixins.HostBlock,
140
- inputStyle: {
141
- "&::part(input)": { textOverflow: "ellipsis", width: "100%" },
142
- "&::part(base)": { cursor: "pointer", overflow: "visible" },
143
- width: "100%",
144
- },
145
- inputErrorStyle: {
146
- "&::part(base)": {
147
- border: "2px solid red",
148
- },
149
- },
150
- ContainerDiv: {
151
- display: "flex",
152
- alignItems: "flex-start",
153
- flexDirection: "column",
154
- justifyContent: "center",
155
- gap: "var(--sl-spacing-x-small)",
156
- width: "100%",
157
- },
158
- containerStyle: {
159
- display: "flex",
160
- alignItems: "center",
161
- gap: "var(--sl-spacing-x-small)",
162
- width: "100%",
163
- },
164
- errorTextStyle: {
165
- margin: "0",
166
- color: "var(--sl-color-danger-500)",
167
- },
168
- notificationTextStyle: {
169
- margin: "0",
170
- color: "var(--sl-color-neutral-500)",
171
- },
172
- };
173
- const vanillaStyle = `
174
- :host{
175
- display: block;
176
- width: 100%;
177
- }
178
- `;
179
- const textAlignStyle = {
180
- right: `
181
- sl-input::part(input){
182
- text-align: right;
183
- }`,
184
- center: `
185
- sl-input::part(input){
186
- text-align: center;
187
- }`,
188
- left: ``,
189
- };
190
- const disabledStyles = `
191
- sl-input::part(input){
192
- cursor: default;
193
- }
194
- `;
195
- const sheet = JSS.createStyleSheet(style);
196
- const styleString = sheet.toString();
197
- function CopyTextView(props) {
198
- const { buttonStyle = "icon" } = props;
199
- const error = !props.loading && props.error;
200
- const inputText = error ? props.inputPlaceholderText : props.copyString;
201
- const disabled = error || props.loading || props.disabled;
202
- const tooltipPlacement = props.buttonStyle === "button-below"
203
- ? "bottom"
204
- : props.buttonStyle === "button-outside"
205
- ? "top"
206
- : "top-end";
207
- const copyButton = (index.h("sl-tooltip", { trigger: "manual", content: props.tooltiptext, placement: tooltipPlacement, disabled: props.disabled, open: props.open, skidding: props.buttonStyle === "icon" ? -5 : 0, slot: "suffix" }, buttonStyle === "icon" ? (index.h("sl-icon-button", { exportparts: "base: icon-button-base", onClick: () => { var _a; return (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props); }, name: "files", disabled: disabled })) : (index.h("sl-button", { exportparts: "base: copy-button-base", onClick: () => { var _a; return (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props); }, size: "medium", style: { width: `${buttonStyle === "button-below" && "100%"}` }, disabled: disabled, type: "primary" }, props.copyButtonLabel || "Copy"))));
208
- return (index.h("div", { class: sheet.classes.ContainerDiv },
209
- index.h("style", { type: "text/css" },
210
- styleString,
211
- vanillaStyle,
212
- textAlignStyle[props.textAlign],
213
- disabled && disabledStyles),
214
- index.h("div", { class: sheet.classes.containerStyle, style: {
215
- flexDirection: `${buttonStyle === "button-below" ? "column" : "row"}`,
216
- } },
217
- index.h("sl-input", { class: `${sheet.classes.inputStyle} ${error ? sheet.classes.inputErrorStyle : ""}`, exportparts: "base: input-base, input: input-label", value: props.loading ? "Loading..." : inputText, readonly: true, disabled: disabled },
218
- buttonStyle === "icon" && copyButton,
219
- error && (index.h("p", { slot: "help-text", class: sheet.classes.errorTextStyle }, props.errorText))),
220
- (buttonStyle === "button-outside" || buttonStyle === "button-below") &&
221
- copyButton),
222
- props.isCopied &&
223
- props.showNotificationText &&
224
- props.notificationText && (index.h("p", { part: "sqm-notification-text", class: sheet.classes.notificationTextStyle }, props.notificationText))));
225
- }
226
-
227
- exports.CopyTextView = CopyTextView;
228
135
  exports.REFERRAL_CODES_NAMESPACE = REFERRAL_CODES_NAMESPACE;
229
136
  exports.REFERRAL_CODES_PAGINATION_CONTEXT = REFERRAL_CODES_PAGINATION_CONTEXT;
230
137
  exports.SET_CODE_COPIED = SET_CODE_COPIED;
@@ -70,6 +70,7 @@
70
70
  "./components/sqm-program-explainer/sqm-program-explainer.js",
71
71
  "./components/sqm-program-explainer-step/sqm-program-explainer-step.js",
72
72
  "./components/sqm-program-menu/sqm-program-menu.js",
73
+ "./components/sqm-qr-code/sqm-qr-code.js",
73
74
  "./components/sqm-referral-card/sqm-referral-card.js",
74
75
  "./components/sqm-referral-code/sqm-referral-code.js",
75
76
  "./components/sqm-referral-iframe/sqm-referral-iframe.js",
@@ -0,0 +1,27 @@
1
+ import { h } from "@stencil/core";
2
+ import { QrCodeView } from "./sqm-qr-code-view";
3
+ export default {
4
+ title: "Components/QR Code",
5
+ };
6
+ const defaultProps = {
7
+ dialogIsOpen: false,
8
+ showDialog: () => void 0,
9
+ hideDialog: () => void 0,
10
+ qrLink: "https://media.istockphoto.com/id/1251071788/vector/qr-code-bar-code-black-icon-digital-technology.jpg?s=612x612&w=0&k=20&c=maw4OqMSEegAdSo8Drm9HO7i1ddddvP2YaL1UuWbRig=",
11
+ createDownloadable: async () => {
12
+ console.log("Download QR Code clicked");
13
+ },
14
+ createPrintable: async () => {
15
+ console.log("Print QR Code clicked");
16
+ },
17
+ titleText: "Share your QR code",
18
+ viewCodeText: "View QR code",
19
+ downloadCodeText: "Download",
20
+ printCodeText: "Print",
21
+ };
22
+ export const Default = () => {
23
+ return h(QrCodeView, Object.assign({}, defaultProps));
24
+ };
25
+ export const Expanded = () => {
26
+ return h(QrCodeView, Object.assign({}, defaultProps, { dialogIsOpen: true }));
27
+ };
@@ -0,0 +1,82 @@
1
+ import { h } from "@stencil/core";
2
+ import { createStyleSheet } from "../../styling/JSS";
3
+ const style = {
4
+ DialogContainer: {
5
+ maxWidth: "390px !important",
6
+ },
7
+ Container: {
8
+ padding: "var(--sl-spacing-small)",
9
+ display: "flex",
10
+ flexDirection: "row",
11
+ gap: "var(--sl-spacing-small)",
12
+ justifyContent: "space-between",
13
+ },
14
+ FacadeContainer: {
15
+ display: "flex",
16
+ gap: "var(--sl-spacing-medium)",
17
+ flexDirection: "column",
18
+ },
19
+ ButtonContainer: {
20
+ display: "flex",
21
+ gap: "var(--sl-spacing-medium)",
22
+ },
23
+ FooterContainer: {
24
+ textAlign: "left",
25
+ display: "flex",
26
+ flexDirection: "column",
27
+ gap: "var(--sl-spacing-medium)",
28
+ },
29
+ CodeContainer: {
30
+ display: "flex",
31
+ width: "100%",
32
+ alignItems: "center",
33
+ justifyContent: "center",
34
+ },
35
+ Code: {
36
+ width: "100%",
37
+ height: "100%",
38
+ maxWidth: "335px",
39
+ },
40
+ };
41
+ const sheet = createStyleSheet(style);
42
+ const styleString = sheet.toString();
43
+ const vanillaStyle = `
44
+ sl-dialog::part(panel) {
45
+ max-width: 390px;
46
+ width: 100%;
47
+ }
48
+ sl-dialog::part(footer) {
49
+ display: flex;
50
+ flex-direction: column;
51
+ gap: var(--sl-spacing-small);
52
+ width: 100%;
53
+ }
54
+ sl-dialog::part(body) {
55
+ padding: 0 var(--sl-spacing-large);
56
+ }
57
+ :host{
58
+ display: flex;
59
+ width: 100%;
60
+ }
61
+ @media (max-width: 499px) {
62
+ :host{
63
+ display: block;
64
+ }
65
+ }`;
66
+ export function QrCodeView({ dialogIsOpen, showDialog, hideDialog, qrLink, titleText, viewCodeText, downloadCodeText, printCodeText, createDownloadable, createPrintable, }) {
67
+ return (h("div", { class: sheet.classes.Container, part: "sqm-base" },
68
+ h("style", null, vanillaStyle),
69
+ h("style", null, styleString),
70
+ h("div", { class: sheet.classes.FacadeContainer },
71
+ h("span", { part: "sqm-title" }, titleText),
72
+ h("div", { class: sheet.classes.ButtonContainer },
73
+ h("sl-button", { type: "primary", onClick: showDialog }, viewCodeText),
74
+ h("sl-button", { type: "text", onClick: createDownloadable }, downloadCodeText),
75
+ h("sl-button", { type: "text", onClick: createPrintable }, printCodeText))),
76
+ h("sl-dialog", { class: sheet.classes.DialogContainer, width: "250px", open: dialogIsOpen, label: titleText, "onSl-hide": hideDialog },
77
+ h("div", { class: sheet.classes.CodeContainer },
78
+ h("img", { class: sheet.classes.Code, src: `${qrLink}&qrCodeImageFormat=svg` })),
79
+ h("div", { slot: "footer", class: sheet.classes.FooterContainer },
80
+ h("sl-button", { variant: "default", onClick: createDownloadable }, downloadCodeText),
81
+ h("sl-button", { variant: "default", onClick: createPrintable }, printCodeText)))));
82
+ }
@@ -0,0 +1,179 @@
1
+ import { isDemo } from "@saasquatch/component-boilerplate";
2
+ import { useState, withHooks } from "@saasquatch/stencil-hooks";
3
+ import { Component, h, Prop } from "@stencil/core";
4
+ import deepmerge from "deepmerge";
5
+ import { getProps } from "../../utils/utils";
6
+ import { QrCodeView } from "./sqm-qr-code-view";
7
+ import { useQRCode } from "./useQRCode";
8
+ /**
9
+ * @uiName QR Code
10
+ * @exampleGroup Sharing
11
+ * @example QR Code - <sqm-qr-code></sqm-qr-code>
12
+ */
13
+ export class QrCode {
14
+ constructor() {
15
+ /**
16
+ * @uiName Title
17
+ */
18
+ this.titleText = "Share your QR code";
19
+ /**
20
+ * @uiName View QR code text
21
+ */
22
+ this.viewCodeText = "View QR code";
23
+ /**
24
+ * @uiName Download QR code text
25
+ */
26
+ this.downloadCodeText = "Download";
27
+ /**
28
+ * @uiName Print QR code text
29
+ */
30
+ this.printCodeText = "Print";
31
+ withHooks(this);
32
+ }
33
+ disconnectedCallback() { }
34
+ render() {
35
+ const thisProps = getProps(this);
36
+ const props = isDemo() ? useDemoQRCode(thisProps) : useQRCode(thisProps);
37
+ return h(QrCodeView, Object.assign({}, props));
38
+ }
39
+ static get is() { return "sqm-qr-code"; }
40
+ static get encapsulation() { return "shadow"; }
41
+ static get properties() { return {
42
+ "titleText": {
43
+ "type": "string",
44
+ "mutable": false,
45
+ "complexType": {
46
+ "original": "string",
47
+ "resolved": "string",
48
+ "references": {}
49
+ },
50
+ "required": false,
51
+ "optional": true,
52
+ "docs": {
53
+ "tags": [{
54
+ "text": "Title",
55
+ "name": "uiName"
56
+ }],
57
+ "text": ""
58
+ },
59
+ "attribute": "title-text",
60
+ "reflect": false,
61
+ "defaultValue": "\"Share your QR code\""
62
+ },
63
+ "viewCodeText": {
64
+ "type": "string",
65
+ "mutable": false,
66
+ "complexType": {
67
+ "original": "string",
68
+ "resolved": "string",
69
+ "references": {}
70
+ },
71
+ "required": false,
72
+ "optional": true,
73
+ "docs": {
74
+ "tags": [{
75
+ "text": "View QR code text",
76
+ "name": "uiName"
77
+ }],
78
+ "text": ""
79
+ },
80
+ "attribute": "view-code-text",
81
+ "reflect": false,
82
+ "defaultValue": "\"View QR code\""
83
+ },
84
+ "downloadCodeText": {
85
+ "type": "string",
86
+ "mutable": false,
87
+ "complexType": {
88
+ "original": "string",
89
+ "resolved": "string",
90
+ "references": {}
91
+ },
92
+ "required": false,
93
+ "optional": true,
94
+ "docs": {
95
+ "tags": [{
96
+ "text": "Download QR code text",
97
+ "name": "uiName"
98
+ }],
99
+ "text": ""
100
+ },
101
+ "attribute": "download-code-text",
102
+ "reflect": false,
103
+ "defaultValue": "\"Download\""
104
+ },
105
+ "printCodeText": {
106
+ "type": "string",
107
+ "mutable": false,
108
+ "complexType": {
109
+ "original": "string",
110
+ "resolved": "string",
111
+ "references": {}
112
+ },
113
+ "required": false,
114
+ "optional": true,
115
+ "docs": {
116
+ "tags": [{
117
+ "text": "Print QR code text",
118
+ "name": "uiName"
119
+ }],
120
+ "text": ""
121
+ },
122
+ "attribute": "print-code-text",
123
+ "reflect": false,
124
+ "defaultValue": "\"Print\""
125
+ },
126
+ "demoData": {
127
+ "type": "unknown",
128
+ "mutable": false,
129
+ "complexType": {
130
+ "original": "DemoData<QRCodeViewProps>",
131
+ "resolved": "{ titleText?: string; dialogIsOpen?: boolean; showDialog?: () => void; hideDialog?: () => void; qrLink?: string; createDownloadable?: () => void; viewCodeText?: string; downloadCodeText?: string; printCodeText?: string; createPrintable?: () => void; }",
132
+ "references": {
133
+ "DemoData": {
134
+ "location": "import",
135
+ "path": "../../global/demo"
136
+ },
137
+ "QRCodeViewProps": {
138
+ "location": "import",
139
+ "path": "./sqm-qr-code-view"
140
+ }
141
+ }
142
+ },
143
+ "required": false,
144
+ "optional": true,
145
+ "docs": {
146
+ "tags": [{
147
+ "text": undefined,
148
+ "name": "undocumented"
149
+ }, {
150
+ "text": "object",
151
+ "name": "uiType"
152
+ }],
153
+ "text": ""
154
+ }
155
+ }
156
+ }; }
157
+ }
158
+ function useDemoQRCode(props) {
159
+ const [dialogIsOpen, setDialog] = useState(false);
160
+ return deepmerge({
161
+ dialogIsOpen,
162
+ showDialog: () => setDialog(true),
163
+ hideDialog: () => setDialog(false),
164
+ titleText: this.titleText,
165
+ viewCodeText: this.viewCodeText,
166
+ downloadCodeText: this.downloadCodeText,
167
+ printCodeText: this.printCodeText,
168
+ qrLink: "https://media.istockphoto.com/id/1251071788/vector/qr-code-bar-code-black-icon-digital-technology.jpg?s=612x612&w=0&k=20&c=maw4OqMSEegAdSo8Drm9HO7i1ddddvP2YaL1UuWbRig=",
169
+ fireViewQrEvent: () => {
170
+ console.log("View QR Code clicked");
171
+ },
172
+ createDownloadable: async () => {
173
+ console.log("Download QR Code clicked");
174
+ },
175
+ createPrintable: async () => {
176
+ console.log("Print QR Code clicked");
177
+ },
178
+ }, props.demoData || {}, { arrayMerge: (_, a) => a });
179
+ }