@saasquatch/mint-components 1.4.1-1 → 1.4.3-0

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 (107) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/dist/cjs/{global-0c01d88f.js → global-413d075c.js} +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/mint-components.cjs.js +1 -1
  5. package/dist/cjs/sqm-divided-layout_26.cjs.entry.js +45 -13
  6. package/dist/cjs/{sqm-hero-view-bb3d00a1.js → sqm-hero-view-783ec385.js} +4 -19
  7. package/dist/cjs/sqm-hero.cjs.entry.js +2 -1
  8. package/dist/cjs/{sqm-leaderboard-rank-view-48245b30.js → sqm-leaderboard-rank-view-b1b55673.js} +1 -1
  9. package/dist/cjs/sqm-leaderboard-rank.cjs.entry.js +2 -2
  10. package/dist/cjs/{sqm-portal-email-verification-view-68b16f27.js → sqm-portal-email-verification-view-eeb4ca62.js} +1 -1
  11. package/dist/cjs/sqm-portal-email-verification.cjs.entry.js +2 -2
  12. package/dist/cjs/{sqm-portal-footer-view-edeeebab.js → sqm-portal-footer-view-08a2efd5.js} +1 -1
  13. package/dist/cjs/sqm-portal-footer.cjs.entry.js +2 -2
  14. package/dist/cjs/{sqm-portal-profile-view-2b48529e.js → sqm-portal-profile-view-ce86369e.js} +1 -1
  15. package/dist/cjs/sqm-portal-profile.cjs.entry.js +2 -2
  16. package/dist/cjs/sqm-portal-reset-password.cjs.entry.js +3 -1
  17. package/dist/cjs/sqm-portal-verify-email.cjs.entry.js +4 -2
  18. package/dist/cjs/utilities-21657336.js +28 -0
  19. package/dist/collection/components/sqm-portal-login/usePortalLogin.js +4 -2
  20. package/dist/collection/components/sqm-portal-reset-password/usePortalResetPassword.js +3 -1
  21. package/dist/collection/components/sqm-portal-verify-email/usePortalVerifyEmail.js +4 -2
  22. package/dist/collection/global/global.js +1 -1
  23. package/dist/collection/stories/ShareButton.stories.js +30 -1
  24. package/dist/collection/utilities.js +6 -0
  25. package/dist/esm/{global-0fcfbedf.js → global-2e50d2dc.js} +1 -1
  26. package/dist/esm/loader.js +1 -1
  27. package/dist/esm/mint-components.js +1 -1
  28. package/dist/esm/sqm-divided-layout_26.entry.js +45 -13
  29. package/dist/esm/{sqm-hero-view-bfd8abd1.js → sqm-hero-view-02144ced.js} +1 -16
  30. package/dist/esm/sqm-hero.entry.js +2 -1
  31. package/dist/esm/{sqm-leaderboard-rank-view-fd7d7f42.js → sqm-leaderboard-rank-view-387f0870.js} +1 -1
  32. package/dist/esm/sqm-leaderboard-rank.entry.js +2 -2
  33. package/dist/esm/{sqm-portal-email-verification-view-6cc56c87.js → sqm-portal-email-verification-view-e366e94a.js} +1 -1
  34. package/dist/esm/sqm-portal-email-verification.entry.js +2 -2
  35. package/dist/esm/{sqm-portal-footer-view-8a1128d5.js → sqm-portal-footer-view-f12d5e5a.js} +1 -1
  36. package/dist/esm/sqm-portal-footer.entry.js +2 -2
  37. package/dist/esm/{sqm-portal-profile-view-4acf74a5.js → sqm-portal-profile-view-9f3c79c3.js} +1 -1
  38. package/dist/esm/sqm-portal-profile.entry.js +2 -2
  39. package/dist/esm/sqm-portal-reset-password.entry.js +3 -1
  40. package/dist/esm/sqm-portal-verify-email.entry.js +4 -2
  41. package/dist/esm/utilities-63ba88bc.js +24 -0
  42. package/dist/esm-es5/{global-0fcfbedf.js → global-2e50d2dc.js} +1 -1
  43. package/dist/esm-es5/loader.js +1 -1
  44. package/dist/esm-es5/mint-components.js +1 -1
  45. package/dist/esm-es5/sqm-divided-layout_26.entry.js +1 -1
  46. package/dist/esm-es5/sqm-hero-view-02144ced.js +1 -0
  47. package/dist/esm-es5/sqm-hero.entry.js +1 -1
  48. package/dist/esm-es5/{sqm-leaderboard-rank-view-fd7d7f42.js → sqm-leaderboard-rank-view-387f0870.js} +1 -1
  49. package/dist/esm-es5/sqm-leaderboard-rank.entry.js +1 -1
  50. package/dist/esm-es5/{sqm-portal-email-verification-view-6cc56c87.js → sqm-portal-email-verification-view-e366e94a.js} +1 -1
  51. package/dist/esm-es5/sqm-portal-email-verification.entry.js +1 -1
  52. package/dist/esm-es5/{sqm-portal-footer-view-8a1128d5.js → sqm-portal-footer-view-f12d5e5a.js} +1 -1
  53. package/dist/esm-es5/sqm-portal-footer.entry.js +1 -1
  54. package/dist/esm-es5/{sqm-portal-profile-view-4acf74a5.js → sqm-portal-profile-view-9f3c79c3.js} +1 -1
  55. package/dist/esm-es5/sqm-portal-profile.entry.js +1 -1
  56. package/dist/esm-es5/sqm-portal-reset-password.entry.js +1 -1
  57. package/dist/esm-es5/sqm-portal-verify-email.entry.js +1 -1
  58. package/dist/esm-es5/utilities-63ba88bc.js +1 -0
  59. package/dist/mint-components/mint-components.esm.js +1 -1
  60. package/dist/mint-components/mint-components.js +1 -1
  61. package/dist/mint-components/{p-d513229d.js → p-2babeba4.js} +1 -1
  62. package/dist/mint-components/p-2bc94910.system.entry.js +1 -0
  63. package/dist/mint-components/{p-05a86906.entry.js → p-2dc28ab0.entry.js} +2 -2
  64. package/dist/mint-components/{p-51cfdd14.js → p-3adf6ff3.js} +1 -1
  65. package/dist/mint-components/{p-18aa175f.system.js → p-48fff767.system.js} +1 -1
  66. package/dist/mint-components/p-49e3f8f1.js +1 -0
  67. package/dist/mint-components/p-4ab42513.js +1 -0
  68. package/dist/mint-components/p-50557966.system.js +1 -0
  69. package/dist/mint-components/{p-6815e7ba.entry.js → p-52b0b65d.entry.js} +1 -1
  70. package/dist/mint-components/p-57fe3fe6.system.entry.js +1 -0
  71. package/dist/mint-components/p-5d613ac4.entry.js +1 -0
  72. package/dist/mint-components/p-66cae6b3.entry.js +230 -0
  73. package/dist/mint-components/{p-602180a2.system.js → p-679a7054.system.js} +1 -1
  74. package/dist/mint-components/p-696e3217.system.entry.js +1 -0
  75. package/dist/mint-components/p-6aa43483.entry.js +1 -0
  76. package/dist/mint-components/{p-7d996b49.js → p-726c9080.js} +1 -1
  77. package/dist/mint-components/p-77d17f35.js +1 -0
  78. package/dist/mint-components/p-89479f63.system.entry.js +1 -0
  79. package/dist/mint-components/{p-9ff0425e.system.entry.js → p-9741333b.system.entry.js} +1 -1
  80. package/dist/mint-components/{p-64759dda.system.js → p-9f9191a4.system.js} +1 -1
  81. package/dist/mint-components/p-b83fa0d3.system.js +1 -0
  82. package/dist/mint-components/{p-54707082.system.js → p-bf26396f.system.js} +1 -1
  83. package/dist/mint-components/{p-d55abc13.entry.js → p-c579f318.entry.js} +2 -2
  84. package/dist/mint-components/p-cd3fa54f.entry.js +1 -0
  85. package/dist/mint-components/{p-e50839df.entry.js → p-d1d45d97.entry.js} +1 -1
  86. package/dist/mint-components/{p-991bd182.system.entry.js → p-d5573e0e.system.entry.js} +1 -1
  87. package/dist/mint-components/p-d9a3caba.system.js +1 -0
  88. package/dist/mint-components/{p-036c5a7e.system.entry.js → p-e1df7914.system.entry.js} +1 -1
  89. package/dist/mint-components/{p-a646db48.system.entry.js → p-f3fbcdb0.system.entry.js} +1 -1
  90. package/dist/mint-components/{p-3452bdae.system.js → p-fd33dd62.system.js} +1 -1
  91. package/dist/mint-components/{p-d0cad85c.js → p-fe4ecc11.js} +1 -1
  92. package/dist/types/stories/ShareButton.stories.d.ts +1 -0
  93. package/dist/types/utilities.d.ts +1 -0
  94. package/package.json +1 -1
  95. package/dist/esm-es5/sqm-hero-view-bfd8abd1.js +0 -1
  96. package/dist/mint-components/p-099e36f5.system.entry.js +0 -1
  97. package/dist/mint-components/p-192539d2.entry.js +0 -1
  98. package/dist/mint-components/p-35476f7e.system.js +0 -1
  99. package/dist/mint-components/p-606506d6.system.entry.js +0 -1
  100. package/dist/mint-components/p-739b3032.js +0 -1
  101. package/dist/mint-components/p-756a5e6f.system.js +0 -1
  102. package/dist/mint-components/p-768b9014.system.entry.js +0 -1
  103. package/dist/mint-components/p-7cf335a0.entry.js +0 -1
  104. package/dist/mint-components/p-975dd0ec.entry.js +0 -230
  105. package/dist/mint-components/p-a565e753.entry.js +0 -1
  106. package/dist/mint-components/p-c84a5b33.js +0 -1
  107. package/dist/mint-components/p-e14c15ca.system.entry.js +0 -1
@@ -4,7 +4,7 @@ export default {
4
4
  title: "Share Button",
5
5
  };
6
6
  export const WithIcon = () => {
7
- const props = { medium: "facebook", iconslot: "suffix" };
7
+ const props = { medium: "whatsapp", iconslot: "suffix" };
8
8
  return h(ShareButtonView, Object.assign({}, props), "Share");
9
9
  };
10
10
  export const WithIconOverride = () => {
@@ -43,3 +43,32 @@ export const FullStackIcon = () => {
43
43
  h("sqm-share-button", { medium: "email", icon: "envelope", iconslot: "prefix" },
44
44
  h("span", null, "Email"))));
45
45
  };
46
+ export const AllMediums = () => {
47
+ return (h("div", null,
48
+ h("sqm-share-button", { medium: "facebook", iconslot: "prefix" },
49
+ h("span", null, "Facebook")),
50
+ h("br", null),
51
+ h("sqm-share-button", { medium: "email", icon: "envelope", iconslot: "prefix" },
52
+ h("span", null, "Email")),
53
+ h("br", null),
54
+ h("sqm-share-button", { medium: "whatsapp", icon: "whatsapp", iconslot: "prefix" },
55
+ h("span", null, "WhatsApp")),
56
+ h("br", null),
57
+ h("sqm-share-button", { medium: "linkedin", iconslot: "prefix" },
58
+ h("span", null, "Linkedin")),
59
+ h("br", null),
60
+ h("sqm-share-button", { medium: "twitter", iconslot: "prefix" },
61
+ h("span", null, "Twitter")),
62
+ h("br", null),
63
+ h("sqm-share-button", { medium: "pinterest", iconslot: "prefix" },
64
+ h("span", null, "Pinterest")),
65
+ h("br", null),
66
+ h("sqm-share-button", { medium: "fbmessenger", icon: "messenger", iconslot: "prefix" },
67
+ h("span", null, "Messenger")),
68
+ h("br", null),
69
+ h("sqm-share-button", { medium: "sms", icon: "chat", iconslot: "prefix" },
70
+ h("span", null, "SMS")),
71
+ h("br", null),
72
+ h("sqm-share-button", { medium: "linemessenger", icon: "line", iconslot: "prefix" },
73
+ h("span", null, "Line Messenger"))));
74
+ };
@@ -19,3 +19,9 @@ export function isMobile(breakPoint) {
19
19
  export function isValidColor(teststr) {
20
20
  return CSS.supports(`(color: ${teststr})`);
21
21
  }
22
+ export function sanitizeUrlPath(path) {
23
+ const url = new URL(path, window.location.href);
24
+ const cleanUrl = new URL(window.location.href);
25
+ cleanUrl.pathname = url.pathname;
26
+ return cleanUrl.pathname;
27
+ }
@@ -26495,7 +26495,7 @@ try {
26495
26495
  // SlAlert.register();
26496
26496
  registerIconLibrary("default", {
26497
26497
  // same link that shoelace uses internally
26498
- resolver: (name) => `https://fast.ssqt.io/npm/bootstrap-icons@1.2.0/icons/${name}.svg`,
26498
+ resolver: (name) => `https://fast.ssqt.io/npm/bootstrap-icons@1.7.2/icons/${name}.svg`,
26499
26499
  });
26500
26500
  // SlAlert.register();
26501
26501
  customElements.define("sl-alert", alert_default2);
@@ -1,6 +1,6 @@
1
1
  import { p as promiseResolve, b as bootstrapLazy } from './index-17b4da69.js';
2
2
  import './extends-3a3f9fe2.js';
3
- import './global-0fcfbedf.js';
3
+ import './global-2e50d2dc.js';
4
4
  import './use-callback-b38a1523.js';
5
5
  import './index.module-1e92a7a3.js';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { p as promiseResolve, H, b as bootstrapLazy } from './index-17b4da69.js';
2
2
  import './extends-3a3f9fe2.js';
3
- import './global-0fcfbedf.js';
3
+ import './global-2e50d2dc.js';
4
4
  import './use-callback-b38a1523.js';
5
5
  import './index.module-1e92a7a3.js';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { h, r as registerInstance, c as Host } from './index-17b4da69.js';
2
2
  import { m as h$1, j as useState, e as useEffect, f as useRef, n as d$2, y as y$1, b as browser, u as useReducer, c as createCommonjsModule, a as commonjsGlobal, k as useMemo } from './extends-3a3f9fe2.js';
3
- import { i as intl, a as insertCSS } from './global-0fcfbedf.js';
3
+ import { i as intl, a as insertCSS } from './global-2e50d2dc.js';
4
4
  import { u as useCallback } from './use-callback-b38a1523.js';
5
5
  import { d as dist, n as ne$1, c as cn, D as De, j as j$1, a as sn, b as mn, H as He, $ as $e, S as S$1, V as Ve, M as M$1, p as pn, v as vn, x as x$1, e as D$1, Y } from './index.module-1e92a7a3.js';
6
6
  import { j as jsonpointer } from './jsonpointer-388a7082.js';
@@ -11,7 +11,8 @@ import { E as ErrorStyles, H as HostBlock, A as AuthWrapper, a as AuthColumn, b
11
11
  import { P as PortalContainerView } from './sqm-portal-container-view-73757ca5.js';
12
12
  import { P as PortalSectionView } from './sqm-portal-section-view-f0876545.js';
13
13
  import { T as TextSpanView } from './sqm-text-span-view-1781df94.js';
14
- import { g as gql, L as LeaderboardRankView } from './sqm-leaderboard-rank-view-fd7d7f42.js';
14
+ import { s as sanitizeUrlPath } from './utilities-63ba88bc.js';
15
+ import { g as gql, L as LeaderboardRankView } from './sqm-leaderboard-rank-view-387f0870.js';
15
16
  import { u as useRerenderListener } from './re-render-b8468637.js';
16
17
  import { p as pathToRegexp, B as BigStatView, u as useBigStat, a as useDemoBigStat } from './useDemoBigStat-5557504e.js';
17
18
  import { S as ShareLinkView } from './sqm-share-link-view-9282b8e8.js';
@@ -19,14 +20,14 @@ import { L as LeaderboardView, u as useLeaderboard, S as ShadowViewAddon } from
19
20
  import { N as NavigationSidebarView } from './sqm-navigation-sidebar-view-2242502c.js';
20
21
  import { N as NavigationSidebarItemView } from './sqm-navigation-sidebar-item-view-a48bca9b.js';
21
22
  import { S as StatContainerView } from './sqm-stat-container-view-4133feb6.js';
22
- import { P as PortalProfileView } from './sqm-portal-profile-view-4acf74a5.js';
23
+ import { P as PortalProfileView } from './sqm-portal-profile-view-9f3c79c3.js';
23
24
  import { P as PortalForgotPasswordView } from './sqm-portal-forgot-password-view-e3a6a716.js';
24
- import { P as PortalEmailVerificationView } from './sqm-portal-email-verification-view-6cc56c87.js';
25
+ import { P as PortalEmailVerificationView } from './sqm-portal-email-verification-view-e366e94a.js';
25
26
  import { P as PortalResetPasswordView$1 } from './sqm-portal-reset-password-view-a4e50da2.js';
26
27
  import { P as PortalVerifyEmailView } from './sqm-portal-verify-email-view-6f18bac2.js';
27
28
  import { A as AssetCardView } from './sqm-asset-card-view-6f360937.js';
28
- import { P as PoweredByImg$1, a as PortalFooterView } from './sqm-portal-footer-view-8a1128d5.js';
29
- import { H as HeroView } from './sqm-hero-view-bfd8abd1.js';
29
+ import { P as PoweredByImg$1, a as PortalFooterView } from './sqm-portal-footer-view-f12d5e5a.js';
30
+ import { H as HeroView } from './sqm-hero-view-02144ced.js';
30
31
  import { N as NameFieldsView } from './sqm-name-fields-view-4162fb7b.js';
31
32
 
32
33
  function DividedLayoutView(props, children) {
@@ -1409,8 +1410,9 @@ function usePortalLogin(props) {
1409
1410
  var _a;
1410
1411
  if ((_a = data === null || data === void 0 ? void 0 : data.authenticateManagedIdentityWithEmailAndPassword) === null || _a === void 0 ? void 0 : _a.token) {
1411
1412
  urlParams.delete("nextPage");
1413
+ const path = sanitizeUrlPath(nextPageOverride || props.nextPage);
1412
1414
  mn.push({
1413
- pathname: nextPageOverride || props.nextPage,
1415
+ pathname: path,
1414
1416
  search: urlParams.toString() && "?" + urlParams.toString(),
1415
1417
  });
1416
1418
  }
@@ -1427,7 +1429,7 @@ function usePortalLogin(props) {
1427
1429
  loading,
1428
1430
  error: errorMessage,
1429
1431
  registerPath: props.registerPath,
1430
- forgotPasswordPath: props.forgotPasswordPath
1432
+ forgotPasswordPath: props.forgotPasswordPath,
1431
1433
  },
1432
1434
  callbacks: {
1433
1435
  submit,
@@ -16521,7 +16523,7 @@ const ShareButton_stories = {
16521
16523
  title: "Share Button",
16522
16524
  };
16523
16525
  const WithIcon = () => {
16524
- const props = { medium: "facebook", iconslot: "suffix" };
16526
+ const props = { medium: "whatsapp", iconslot: "suffix" };
16525
16527
  return h(ShareButtonView, Object.assign({}, props), "Share");
16526
16528
  };
16527
16529
  const WithIconOverride = () => {
@@ -16559,6 +16561,35 @@ const FullStackIcon = () => {
16559
16561
  h("br", null),
16560
16562
  h("sqm-share-button", { medium: "email", icon: "envelope", iconslot: "prefix" },
16561
16563
  h("span", null, "Email"))));
16564
+ };
16565
+ const AllMediums = () => {
16566
+ return (h("div", null,
16567
+ h("sqm-share-button", { medium: "facebook", iconslot: "prefix" },
16568
+ h("span", null, "Facebook")),
16569
+ h("br", null),
16570
+ h("sqm-share-button", { medium: "email", icon: "envelope", iconslot: "prefix" },
16571
+ h("span", null, "Email")),
16572
+ h("br", null),
16573
+ h("sqm-share-button", { medium: "whatsapp", icon: "whatsapp", iconslot: "prefix" },
16574
+ h("span", null, "WhatsApp")),
16575
+ h("br", null),
16576
+ h("sqm-share-button", { medium: "linkedin", iconslot: "prefix" },
16577
+ h("span", null, "Linkedin")),
16578
+ h("br", null),
16579
+ h("sqm-share-button", { medium: "twitter", iconslot: "prefix" },
16580
+ h("span", null, "Twitter")),
16581
+ h("br", null),
16582
+ h("sqm-share-button", { medium: "pinterest", iconslot: "prefix" },
16583
+ h("span", null, "Pinterest")),
16584
+ h("br", null),
16585
+ h("sqm-share-button", { medium: "fbmessenger", icon: "messenger", iconslot: "prefix" },
16586
+ h("span", null, "Messenger")),
16587
+ h("br", null),
16588
+ h("sqm-share-button", { medium: "sms", icon: "chat", iconslot: "prefix" },
16589
+ h("span", null, "SMS")),
16590
+ h("br", null),
16591
+ h("sqm-share-button", { medium: "linemessenger", icon: "line", iconslot: "prefix" },
16592
+ h("span", null, "Line Messenger"))));
16562
16593
  };
16563
16594
 
16564
16595
  const ShareButton$1 = /*#__PURE__*/Object.freeze({
@@ -16570,7 +16601,8 @@ const ShareButton$1 = /*#__PURE__*/Object.freeze({
16570
16601
  WithoutIcon: WithoutIcon,
16571
16602
  WithoutText: WithoutText,
16572
16603
  TextStyleWithoutIcon: TextStyleWithoutIcon,
16573
- FullStackIcon: FullStackIcon
16604
+ FullStackIcon: FullStackIcon,
16605
+ AllMediums: AllMediums
16574
16606
  });
16575
16607
 
16576
16608
  const ShareLink_stories = {
@@ -18308,7 +18340,7 @@ const PortalEmailVerification = /*#__PURE__*/Object.freeze({
18308
18340
  EmailVerificationSuccess: EmailVerificationSuccess
18309
18341
  });
18310
18342
 
18311
- const scenario$2 = "@author:derek\r\n@owner:ian\r\nFeature: Reset Password\r\n\r\n Background: A user in on the password reset page\r\n Given a user who has been redirected to the password reset page\r\n\r\n @motivating\r\n Scenario: Users can reset their password\r\n Given a user has a valid oob code as a url query parameter\r\n When they enter their password twice\r\n And they click \"Update\"\r\n Then their password is updated\r\n And a banner with a success message is displayed\r\n And they can log in with their new password\r\n\r\n @motivating\r\n Scenario Outline: Users cannot reset their password with an invalid or missing oob code\r\n Given a user has a <oobCode> as a url query parameter\r\n And the component <mayHave> \"failed-page\" with <value>\r\n Then they see an error message saying that their password reset code is invalid/expired\r\n When they click \"Continue\"\r\n Then they are redirected to <redirectPath>\r\n Examples:\r\n | oobCode | mayHave | value | redirectPath |\r\n | invalid oob code | doesn't have | N/A | / |\r\n | non existant oob code | doesn't have | N/A | / |\r\n | invalid oob code | has | /login | /login |\r\n | non existant oob code | has | /login | /login |\r\n\r\n @motivating\r\n Scenario: Users must enter the same password twice to successfully reset their password\r\n Given a user has been redirected to the password reset page\r\n And they have a valid oob code as a url query parameter\r\n When they enter two different passwords into the password reset form\r\n And they click \"Update\"\r\n Then their password is not be reset\r\n And an error banner stating the input passwords must match appears\r\n And their password is not be reset\r\n When they enter the same password twice\r\n And they click \"Update\"\r\n Then a banner appears with a success message\r\n And they can log in with their new password\r\n\r\n @motivating\r\n Scenario: Users are redirected to \"/\" by default\r\n Given the component does not have prop \"nextPage\"\r\n And the users url does not contain a \"nextPage\" query parameter\r\n And a user has entered their password twice\r\n When they click \"Update\"\r\n Then their password is updated\r\n And they are redirected to \"/\"\r\n\r\n @motivating\r\n Scenario: Custom redirection can be configured\r\n Given the component has prop \"nextPage\" with value \"/activity\"\r\n And the users url does not contain a \"nextPage\" query parameter\r\n And a user has entered their password twice\r\n When they click \"Update\"\r\n Then their password is updated\r\n And they are redirected to \"/activity\"";
18343
+ const scenario$2 = "@author:derek\r\n@owner:ian\r\nFeature: Reset Password\r\n\r\n Background: A user in on the password reset page\r\n Given a user who has been redirected to the password reset page\r\n\r\n @motivating\r\n Scenario: Users can reset their password\r\n Given a user has a valid oob code as a url query parameter\r\n When they enter their password twice\r\n And they click \"Update\"\r\n Then their password is updated\r\n And a banner with a success message is displayed\r\n And they can log in with their new password\r\n\r\n @motivating\r\n Scenario Outline: Users cannot reset their password with an invalid or missing oob code\r\n Given a user has a <oobCode> as a url query parameter\r\n And the component <mayHave> \"failed-page\" with <value>\r\n Then they see an error message saying that their password reset code is invalid/expired\r\n When they click \"Continue\"\r\n Then they are redirected to <redirectPath>\r\n Examples:\r\n | oobCode | mayHave | value | redirectPath |\r\n | invalid oob code | doesn't have | N/A | / |\r\n | non existant oob code | doesn't have | N/A | / |\r\n | invalid oob code | has | /login | /login |\r\n | non existant oob code | has | /login | /login |\r\n\r\n @motivating\r\n Scenario: Users must enter the same password twice to successfully reset their password\r\n Given a user has been redirected to the password reset page\r\n And they have a valid oob code as a url query parameter\r\n When they enter two different passwords into the password reset form\r\n And they click \"Update\"\r\n Then their password is not be reset\r\n And an error banner stating the input passwords must match appears\r\n And their password is not be reset\r\n When they enter the same password twice\r\n And they click \"Update\"\r\n Then a banner appears with a success message\r\n And they can log in with their new password\r\n\r\n @motivating\r\n Scenario: Users are redirected to \"/\" by default\r\n Given the component does not have prop \"nextPage\"\r\n And the users url does not contain a \"nextPage\" query parameter\r\n And a user has entered their password twice\r\n When they click \"Update\"\r\n Then their password is updated\r\n And they are redirected to \"/\"\r\n\r\n @motivating\r\n Scenario: Custom redirection can be configured\r\n Given the component has prop \"nextPage\" with value \"/activity\"\r\n And the users url does not contain a \"nextPage\" query parameter\r\n And a user has entered their password twice\r\n When they click \"Update\"\r\n Then their password is updated\r\n And they are redirected to \"/activity\"\r\n\r\n @motivating\r\n Scenario Outline: Users are redirected to the value of the nextPage url parameter as if it were a relative path\r\n Given the component is loaded at <domain>\r\n And the component does not have prop \"nextPage\"\r\n And the users url contains a \"nextPage\" query paramater with <nextPageParamValue>\r\n When they click \"Update\"\r\n Then their password is updated\r\n And they are redirected to <url>\r\n Examples:\r\n | domain | nextPageParamValue | url |\r\n | www.example.com | /activity | https://www.example.com/activity |\r\n | www.example.com | activity | https://www.example.com/activity |\r\n | www.example.com | www.google.com | https://www.example.com/www.google.com |\r\n | www.example.com | //foo.com | https://www.example.com/ |\r\n | www.example.com | activity?foo=bar | https://www.example.com/activity |\r\n | www.example.com | /activity?foo=bar | https://www.example.com/activity |";
18312
18344
 
18313
18345
  const PortalResetPassword_stories = {
18314
18346
  title: "Portal Reset Password",
@@ -18472,7 +18504,7 @@ const PortalResetPassword = /*#__PURE__*/Object.freeze({
18472
18504
  CodeValidating: CodeValidating
18473
18505
  });
18474
18506
 
18475
- const scenario$3 = "@author:derek\r\n@owner:ian\r\nFeature: Verify Email\r\n\r\n Background: A user is on the email verification page\r\n Given a user who has been redirected to the email verification page\r\n\r\n @motivating\r\n Scenario: Verifying your email takes you to the portal login page\r\n Given a user has a valid oob code as a url query parameter\r\n When they click \"Verify Email\"\r\n Then the button enters a loading state\r\n When their email is validated\r\n Then a button that says \"Continue\" appears\r\n When they click \"Continue\"\r\n Then they are redirected to login\r\n\r\n @motivating\r\n Scenario: Users are automatically redirected if they dont click \"Continue\"\r\n Given a user has a valid oob code as a url query parameter\r\n When they click \"Verify Email\"\r\n Then the button enters a loading state\r\n When their email is validated\r\n Then a button that says \"Continue\" appears\r\n When they wait 5 seconds\r\n Then they are redirected to login\r\n\r\n @motivating\r\n Scenario: Users are notified if verifying their email has failed\r\n Given a user has a valid oob code as a url query parameter\r\n When they click \"Verify Email\"\r\n Then the button enters a loading state\r\n When their email fails to be validated\r\n Then an banner is shown stating that an error occured\r\n\r\n @motivating\r\n Scenario Outline: Users cannot verify their email with an invalid or missing oob code\r\n Given a user has a <oobCode> as a url query parameter\r\n And the component <mayHave> \"failed-page\" with <value>\r\n Then they see an error message saying that their verification code is invalid/expired\r\n When they click \"Continue\"\r\n Then they are redirected to <redirectPath>\r\n Examples:\r\n | oobCode | mayHave | value | redirectPath |\r\n | invalid oob code | doesn't have | N/A | / |\r\n | non existant oob code | doesn't have | N/A | / |\r\n | invalid oob code | has | /login | /login |\r\n | non existant oob code | has | /login | /login |\r\n\r\n @motivating\r\n Scenario: Users are redirected to \"/\" by default\r\n Given the component does not have prop \"nextPage\"\r\n And the users url does not contain a \"nextPage\" query parameter\r\n And a user has verified their email\r\n When they click \"Continue\"\r\n Then they are redirected to \"/\"\r\n\r\n @motivating\r\n Scenario: Custom redirection can be configured\r\n Given the component has prop \"nextPage\" with value \"/activity\"\r\n And the users url does not contain a \"nextPage\" query parameter\r\n And a user has verified their email\r\n When they click \"Continue\"\r\n Then they are redirected to \"/activity\"\r\n\r\n @motivating\r\n Scenario Outline: Users are redirected to the value of the nextPage url parameter if it exists\r\n Given the component <mayHave> prop \"nextPage\" with <nextPageValue>\r\n And the users url contains a \"nextPage\" query paramater with <nextPageParamValue>\r\n And the user has verified their email\r\n When they click \"Continue\"\r\n Then they are redirected to <nextPageParamValue>\r\n Examples:\r\n | mayHave | nextPageValue | nextPageParamValue |\r\n | has | /dashboard | /activity |\r\n | does not have | N/A | /activity |";
18507
+ const scenario$3 = "@author:derek\r\n@owner:ian\r\nFeature: Verify Email\r\n\r\n Background: A user is on the email verification page\r\n Given a user who has been redirected to the email verification page\r\n\r\n @motivating\r\n Scenario: Verifying your email takes you to the portal login page\r\n Given a user has a valid oob code as a url query parameter\r\n When they click \"Verify Email\"\r\n Then the button enters a loading state\r\n When their email is validated\r\n Then a button that says \"Continue\" appears\r\n When they click \"Continue\"\r\n Then they are redirected to login\r\n\r\n @motivating\r\n Scenario: Users are automatically redirected if they dont click \"Continue\"\r\n Given a user has a valid oob code as a url query parameter\r\n When they click \"Verify Email\"\r\n Then the button enters a loading state\r\n When their email is validated\r\n Then a button that says \"Continue\" appears\r\n When they wait 5 seconds\r\n Then they are redirected to login\r\n\r\n @motivating\r\n Scenario: Users are notified if verifying their email has failed\r\n Given a user has a valid oob code as a url query parameter\r\n When they click \"Verify Email\"\r\n Then the button enters a loading state\r\n When their email fails to be validated\r\n Then an banner is shown stating that an error occured\r\n\r\n @motivating\r\n Scenario Outline: Users cannot verify their email with an invalid or missing oob code\r\n Given a user has a <oobCode> as a url query parameter\r\n And the component <mayHave> \"failed-page\" with <value>\r\n Then they see an error message saying that their verification code is invalid/expired\r\n When they click \"Continue\"\r\n Then they are redirected to <redirectPath>\r\n Examples:\r\n | oobCode | mayHave | value | redirectPath |\r\n | invalid oob code | doesn't have | N/A | / |\r\n | non existant oob code | doesn't have | N/A | / |\r\n | invalid oob code | has | /login | /login |\r\n | non existant oob code | has | /login | /login |\r\n\r\n @motivating\r\n Scenario: Users are redirected to \"/\" by default\r\n Given the component does not have prop \"nextPage\"\r\n And the users url does not contain a \"nextPage\" query parameter\r\n And a user has verified their email\r\n When they click \"Continue\"\r\n Then they are redirected to \"/\"\r\n\r\n @motivating\r\n Scenario: Custom redirection can be configured\r\n Given the component has prop \"nextPage\" with value \"/activity\"\r\n And the users url does not contain a \"nextPage\" query parameter\r\n And a user has verified their email\r\n When they click \"Continue\"\r\n Then they are redirected to \"/activity\"\r\n\r\n @motivating\r\n Scenario Outline: Users are redirected to the value of the nextPage url parameter if it exists\r\n Given the component <mayHave> prop \"nextPage\" with <nextPageValue>\r\n And the users url contains a \"nextPage\" query paramater with <nextPageParamValue>\r\n And the user has verified their email\r\n When they click \"Continue\"\r\n Then they are redirected to <nextPageParamValue>\r\n Examples:\r\n | mayHave | nextPageValue | nextPageParamValue |\r\n | has | /dashboard | /activity |\r\n | does not have | N/A | /activity |\r\n\r\n @motivating\r\n Scenario Outline: Users are redirected to the value of the nextPage url parameter as if it were a relative path\r\n Given the component is loaded at <domain>\r\n And the component does not have prop \"nextPage\"\r\n And the users url contains a \"nextPage\" query paramater with <nextPageParamValue>\r\n And the user has verified their email\r\n When they click \"Continue\"\r\n And they are redirected to <url>\r\n Examples:\r\n | domain | nextPageParamValue | url |\r\n | www.example.com | /activity | https://www.example.com/activity |\r\n | www.example.com | activity | https://www.example.com/activity |\r\n | www.example.com | www.google.com | https://www.example.com/www.google.com |\r\n | www.example.com | //foo.com | https://www.example.com/ |\r\n | www.example.com | activity?foo=bar | https://www.example.com/activity |\r\n | www.example.com | /activity?foo=bar | https://www.example.com/activity |";
18476
18508
 
18477
18509
  const PortalVerifyEmail_stories = {
18478
18510
  title: "Portal Verify Email",
@@ -22916,7 +22948,7 @@ const ReferralIframeReadme = "# sqm-referral-iframe\r\n\r\n\r\n\r\n<!-- Auto Gen
22916
22948
 
22917
22949
  const ForgotPasswordReadme = "# sqm-portal-forgot-password\r\n\r\n\r\n\r\n<!-- Auto Generated Below -->\r\n\r\n\r\n## Properties\r\n\r\n| Property | Attribute | Description | Type | Default |\r\n| -------------- | --------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |\r\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; success: boolean; loginPath: string; }; content?: { secondaryButton: any; messageSlot: any; emailLabel?: string; submitLabel?: string; }; }` | `undefined` |\r\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\r\n| `loginPath` | `login-path` | | `string` | `\"/login\"` |\r\n| `redirectPath` | `redirect-path` | The page that users are redirected to from the password reset email. | `string` | `\"/resetPassword\"` |\r\n| `submitLabel` | `submit-label` | | `string` | `\"Request Password Reset\"` |\r\n\r\n\r\n## Dependencies\r\n\r\n### Depends on\r\n\r\n- [sqm-form-message](../sqm-form-message)\r\n\r\n### Graph\r\n```mermaid\r\ngraph TD;\r\n sqm-portal-forgot-password --> sqm-form-message\r\n style sqm-portal-forgot-password fill:#f9f,stroke:#333,stroke-width:4px\r\n```\r\n\r\n----------------------------------------------\r\n\r\n*Built with [StencilJS](https://stenciljs.com/)*\r\n";
22918
22950
 
22919
- const RegisterReadme = "# sqm-portal-register\r\n\r\n\r\n\r\n<!-- Auto Generated Below -->\r\n\r\n\r\n## Properties\r\n\r\n| Property | Attribute | Description | Type | Default |\r\n| -------------------------- | ---------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |\r\n| `confirmPassword` | `confirm-password` | | `boolean` | `false` |\r\n| `confirmPasswordLabel` | `confirm-password-label` | | `string` | `\"Confirm Password\"` |\r\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; confirmPassword: boolean; hideInputs: boolean; validationState?: FormState; enablePasswordValidation?: boolean; loginPath: string; }; content?: { formData?: any; passwordField?: any; secondaryButton?: any; emailLabel?: string; passwordLabel?: string; submitLabel?: string; pageLabel?: string; confirmPasswordLabel: string; }; refs?: { formRef: any; }; }` | `undefined` |\r\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\r\n| `enablePasswordValidation` | `enable-password-validation` | | `boolean` | `true` |\r\n| `hideInputs` | `hide-inputs` | | `boolean` | `false` |\r\n| `loginLabel` | `login-label` | | `string` | `\"Sign in\"` |\r\n| `loginPath` | `login-path` | | `string` | `\"/login\"` |\r\n| `nextPage` | `next-page` | | `string` | `\"/\"` |\r\n| `pageLabel` | `page-label` | | `string` | `\"Register\"` |\r\n| `passwordLabel` | `password-label` | | `string` | `\"Password\"` |\r\n| `redirectPath` | `redirect-path` | The page that users are redirected to from the verification email. | `string` | `\"/verifyEmail\"` |\r\n| `submitLabel` | `submit-label` | | `string` | `\"Register\"` |\r\n\r\n\r\n## Dependencies\r\n\r\n### Used by\r\n\r\n - [sqm-stencilbook](../sqm-stencilbook)\r\n\r\n### Depends on\r\n\r\n- [sqm-form-message](../sqm-form-message)\r\n- [sqm-password-field](../sqm-password-field)\r\n\r\n### Graph\r\n```mermaid\r\ngraph TD;\r\n sqm-portal-register --> sqm-form-message\r\n sqm-portal-register --> sqm-password-field\r\n sqm-stencilbook --> sqm-portal-register\r\n style sqm-portal-register fill:#f9f,stroke:#333,stroke-width:4px\r\n```\r\n\r\n----------------------------------------------\r\n\r\n*Built with [StencilJS](https://stenciljs.com/)*\r\n";
22951
+ const RegisterReadme = "# sqm-portal-register\r\n\r\n\r\n\r\n<!-- Auto Generated Below -->\r\n\r\n\r\n## Properties\r\n\r\n| Property | Attribute | Description | Type | Default |\r\n| -------------------------- | ---------------------------- | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- |\r\n| `confirmPassword` | `confirm-password` | | `boolean` | `false` |\r\n| `confirmPasswordLabel` | `confirm-password-label` | | `string` | `\"Confirm Password\"` |\r\n| `demoData` | -- | | `{ states?: { error: string; loading: boolean; confirmPassword: boolean; hideInputs: boolean; validationState?: FormState; enablePasswordValidation?: boolean; loginPath: string; }; content?: { formData?: VNode; terms?: VNode; passwordField?: VNode; secondaryButton?: VNode; emailLabel?: string; passwordLabel?: string; submitLabel?: string; pageLabel?: string; confirmPasswordLabel: string; }; refs?: { formRef: any; }; }` | `undefined` |\r\n| `emailLabel` | `email-label` | | `string` | `\"Email\"` |\r\n| `enablePasswordValidation` | `enable-password-validation` | | `boolean` | `true` |\r\n| `hideInputs` | `hide-inputs` | | `boolean` | `false` |\r\n| `loginLabel` | `login-label` | | `string` | `\"Sign in\"` |\r\n| `loginPath` | `login-path` | | `string` | `\"/login\"` |\r\n| `nextPage` | `next-page` | | `string` | `\"/\"` |\r\n| `pageLabel` | `page-label` | | `string` | `\"Register\"` |\r\n| `passwordLabel` | `password-label` | | `string` | `\"Password\"` |\r\n| `redirectPath` | `redirect-path` | The page that users are redirected to from the verification email. | `string` | `\"/verifyEmail\"` |\r\n| `submitLabel` | `submit-label` | | `string` | `\"Register\"` |\r\n\r\n\r\n## Dependencies\r\n\r\n### Used by\r\n\r\n - [sqm-stencilbook](../sqm-stencilbook)\r\n\r\n### Depends on\r\n\r\n- [sqm-form-message](../sqm-form-message)\r\n- [sqm-password-field](../sqm-password-field)\r\n\r\n### Graph\r\n```mermaid\r\ngraph TD;\r\n sqm-portal-register --> sqm-form-message\r\n sqm-portal-register --> sqm-password-field\r\n sqm-stencilbook --> sqm-portal-register\r\n style sqm-portal-register fill:#f9f,stroke:#333,stroke-width:4px\r\n```\r\n\r\n----------------------------------------------\r\n\r\n*Built with [StencilJS](https://stenciljs.com/)*\r\n";
22920
22952
 
22921
22953
  const EditProfileReadme = "# sqm-portal-profile\r\n\r\n\r\n\r\n<!-- Auto Generated Below -->\r\n\r\n\r\n## Properties\r\n\r\n| Property | Attribute | Description | Type | Default |\r\n| ------------------------ | --------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |\r\n| `countrytext` | `countrytext` | | `string` | `\"Country\"` |\r\n| `demoData` | -- | | `{ states?: { success: boolean; loading: boolean; submitDisabled: boolean; showCountry: boolean; formState: { country: string; firstName: string; lastName: string; errors: any; error: string; }; user: { id: string; accountId: string; firstName: string; lastName: string; email: string; countryCode: string; }; text: { firstnametext: string; lastnametext: string; emailtext: string; countrytext: string; editProfileHeader: string; editProfileSubHeader: string; submitChangeButtonText: string; }; }; }` | `undefined` |\r\n| `editProfileHeader` | `edit-profile-header` | | `string` | `\"Edit your profile\"` |\r\n| `editProfileSubHeader` | `edit-profile-sub-header` | | `string` | `\"Personal Information\"` |\r\n| `emailtext` | `emailtext` | | `string` | `\"Email\"` |\r\n| `firstnametext` | `firstnametext` | | `string` | `\"First Name\"` |\r\n| `lastnametext` | `lastnametext` | | `string` | `\"Last Name\"` |\r\n| `showCountry` | `show-country` | | `boolean` | `true` |\r\n| `submitChangeButtonText` | `submit-change-button-text` | | `string` | `\"Submit Changes\"` |\r\n\r\n\r\n## Dependencies\r\n\r\n### Depends on\r\n\r\n- [sqm-form-message](../sqm-form-message)\r\n\r\n### Graph\r\n```mermaid\r\ngraph TD;\r\n sqm-portal-profile --> sqm-form-message\r\n style sqm-portal-profile fill:#f9f,stroke:#333,stroke-width:4px\r\n```\r\n\r\n----------------------------------------------\r\n\r\n*Built with [StencilJS](https://stenciljs.com/)*\r\n";
22922
22954
 
@@ -1,21 +1,6 @@
1
1
  import { h } from './index-17b4da69.js';
2
- import { j as useState, e as useEffect } from './extends-3a3f9fe2.js';
3
- import { u as useCallback } from './use-callback-b38a1523.js';
4
2
  import { j as jss, c as create } from './jss-preset-default.esm-71fae192.js';
5
-
6
- // import { IntlMessageFormat } from 'intl-messageformat';
7
- function isMobile(breakPoint) {
8
- const [width, setWidth] = useState(window.innerWidth);
9
- const handleWindowResize = useCallback(() => setWidth(window.innerWidth), []);
10
- useEffect(() => {
11
- window.addEventListener("resize", handleWindowResize);
12
- return () => window.removeEventListener("resize", handleWindowResize);
13
- }, []);
14
- return width > breakPoint ? false : true;
15
- }
16
- function isValidColor(teststr) {
17
- return CSS.supports(`(color: ${teststr})`);
18
- }
3
+ import { i as isValidColor, a as isMobile } from './utilities-63ba88bc.js';
19
4
 
20
5
  const paddingList = [
21
6
  "var(--sl-spacing-xxx-small)",
@@ -3,7 +3,8 @@ import { m as h } from './extends-3a3f9fe2.js';
3
3
  import './use-callback-b38a1523.js';
4
4
  import './jss-preset-default.esm-71fae192.js';
5
5
  import { g as getProps } from './utils-454405f5.js';
6
- import { H as HeroView } from './sqm-hero-view-bfd8abd1.js';
6
+ import './utilities-63ba88bc.js';
7
+ import { H as HeroView } from './sqm-hero-view-02144ced.js';
7
8
 
8
9
  const Hero = class {
9
10
  constructor(hostRef) {
@@ -1,5 +1,5 @@
1
1
  import { h } from './index-17b4da69.js';
2
- import { _ as __assign } from './global-0fcfbedf.js';
2
+ import { _ as __assign } from './global-2e50d2dc.js';
3
3
  import { f as parse } from './index.module-1e92a7a3.js';
4
4
 
5
5
  var docCache = new Map();
@@ -1,10 +1,10 @@
1
1
  import { r as registerInstance, h as h$1 } from './index-17b4da69.js';
2
2
  import { m as h } from './extends-3a3f9fe2.js';
3
- import { i as intl, c as createIntl } from './global-0fcfbedf.js';
3
+ import { i as intl, c as createIntl } from './global-2e50d2dc.js';
4
4
  import './use-callback-b38a1523.js';
5
5
  import { M, n as ne, c as cn, j } from './index.module-1e92a7a3.js';
6
6
  import { c as cjs } from './cjs-bdfb4486.js';
7
- import { g as gql, L as LeaderboardRankView } from './sqm-leaderboard-rank-view-fd7d7f42.js';
7
+ import { g as gql, L as LeaderboardRankView } from './sqm-leaderboard-rank-view-387f0870.js';
8
8
 
9
9
  const GET_RANK = gql `
10
10
  query ($type: String!, $filter: UserLeaderboardFilterInput) {
@@ -1,5 +1,5 @@
1
1
  import { h } from './index-17b4da69.js';
2
- import { i as intl } from './global-0fcfbedf.js';
2
+ import { i as intl } from './global-2e50d2dc.js';
3
3
  import { j as jss, c as create } from './jss-preset-default.esm-71fae192.js';
4
4
  import { A as AuthWrapper, a as AuthColumn } from './mixins-10353a39.js';
5
5
  import { T as TextSpanView } from './sqm-text-span-view-1781df94.js';
@@ -1,13 +1,13 @@
1
1
  import { r as registerInstance, h as h$1 } from './index-17b4da69.js';
2
2
  import { j as useState, e as useEffect, m as h } from './extends-3a3f9fe2.js';
3
- import './global-0fcfbedf.js';
3
+ import './global-2e50d2dc.js';
4
4
  import './use-callback-b38a1523.js';
5
5
  import { i as an, n as ne, j } from './index.module-1e92a7a3.js';
6
6
  import './jss-preset-default.esm-71fae192.js';
7
7
  import { c as cjs } from './cjs-bdfb4486.js';
8
8
  import './mixins-10353a39.js';
9
9
  import './sqm-text-span-view-1781df94.js';
10
- import { P as PortalEmailVerificationView } from './sqm-portal-email-verification-view-6cc56c87.js';
10
+ import { P as PortalEmailVerificationView } from './sqm-portal-email-verification-view-e366e94a.js';
11
11
 
12
12
  function usePortalEmailVerification(props) {
13
13
  var _a, _b, _c, _d, _e;
@@ -1,5 +1,5 @@
1
1
  import { h } from './index-17b4da69.js';
2
- import { i as intl } from './global-0fcfbedf.js';
2
+ import { i as intl } from './global-2e50d2dc.js';
3
3
  import { j as jss, c as create } from './jss-preset-default.esm-71fae192.js';
4
4
 
5
5
  function PoweredByImg({ color = "#A6A6A6", width = 190, height = 29, }) {
@@ -1,11 +1,11 @@
1
1
  import { r as registerInstance, h as h$1 } from './index-17b4da69.js';
2
2
  import { m as h } from './extends-3a3f9fe2.js';
3
- import './global-0fcfbedf.js';
3
+ import './global-2e50d2dc.js';
4
4
  import './use-callback-b38a1523.js';
5
5
  import './index.module-1e92a7a3.js';
6
6
  import './jss-preset-default.esm-71fae192.js';
7
7
  import { g as getProps } from './utils-454405f5.js';
8
- import { a as PortalFooterView } from './sqm-portal-footer-view-8a1128d5.js';
8
+ import { a as PortalFooterView } from './sqm-portal-footer-view-f12d5e5a.js';
9
9
 
10
10
  const PortalFooter = class {
11
11
  constructor(hostRef) {
@@ -1,5 +1,5 @@
1
1
  import { h } from './index-17b4da69.js';
2
- import { i as intl } from './global-0fcfbedf.js';
2
+ import { i as intl } from './global-2e50d2dc.js';
3
3
  import { j as jss, c as create } from './jss-preset-default.esm-71fae192.js';
4
4
  import { P as PortalContainerView } from './sqm-portal-container-view-73757ca5.js';
5
5
  import { T as TextSpanView } from './sqm-text-span-view-1781df94.js';
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, h as h$1 } from './index-17b4da69.js';
2
2
  import { j as useState, e as useEffect, m as h } from './extends-3a3f9fe2.js';
3
- import './global-0fcfbedf.js';
3
+ import './global-2e50d2dc.js';
4
4
  import './use-callback-b38a1523.js';
5
5
  import { d as dist, n as ne, c as cn, D as De, j } from './index.module-1e92a7a3.js';
6
6
  import './jss-preset-default.esm-71fae192.js';
@@ -8,7 +8,7 @@ import { g as getProps } from './utils-454405f5.js';
8
8
  import { c as cjs } from './cjs-bdfb4486.js';
9
9
  import './sqm-portal-container-view-73757ca5.js';
10
10
  import './sqm-text-span-view-1781df94.js';
11
- import { P as PortalProfileView } from './sqm-portal-profile-view-4acf74a5.js';
11
+ import { P as PortalProfileView } from './sqm-portal-profile-view-9f3c79c3.js';
12
12
 
13
13
  const GET_USER = dist.gql `
14
14
  query {
@@ -7,6 +7,7 @@ import './jss-preset-default.esm-71fae192.js';
7
7
  import { c as cjs } from './cjs-bdfb4486.js';
8
8
  import './mixins-10353a39.js';
9
9
  import './sqm-text-span-view-1781df94.js';
10
+ import { s as sanitizeUrlPath } from './utilities-63ba88bc.js';
10
11
  import { P as PortalResetPasswordView } from './sqm-portal-reset-password-view-a4e50da2.js';
11
12
 
12
13
  function usePortalResetPassword(props) {
@@ -34,8 +35,9 @@ function usePortalResetPassword(props) {
34
35
  };
35
36
  const gotoNextPage = () => {
36
37
  urlParams.delete("nextPage");
38
+ const path = sanitizeUrlPath(nextPageOverride || props.nextPage);
37
39
  mn.push({
38
- pathname: nextPageOverride || props.nextPage,
40
+ pathname: path,
39
41
  search: urlParams.toString() && "?" + urlParams.toString(),
40
42
  });
41
43
  };
@@ -6,6 +6,7 @@ import './jss-preset-default.esm-71fae192.js';
6
6
  import { c as cjs } from './cjs-bdfb4486.js';
7
7
  import './mixins-10353a39.js';
8
8
  import './sqm-text-span-view-1781df94.js';
9
+ import { s as sanitizeUrlPath } from './utilities-63ba88bc.js';
9
10
  import { P as PortalVerifyEmailView } from './sqm-portal-verify-email-view-6f18bac2.js';
10
11
 
11
12
  function usePortalVerifyEmail({ nextPage, failedPage }) {
@@ -27,8 +28,9 @@ function usePortalVerifyEmail({ nextPage, failedPage }) {
27
28
  };
28
29
  const gotoNextPage = () => {
29
30
  urlParams.delete("nextPage");
30
- return mn.push({
31
- pathname: nextPageOverride || nextPage,
31
+ const path = sanitizeUrlPath(nextPageOverride || nextPage);
32
+ mn.push({
33
+ pathname: path,
32
34
  search: urlParams.toString() && "?" + urlParams.toString(),
33
35
  });
34
36
  };
@@ -0,0 +1,24 @@
1
+ import { j as useState, e as useEffect } from './extends-3a3f9fe2.js';
2
+ import { u as useCallback } from './use-callback-b38a1523.js';
3
+
4
+ // import { IntlMessageFormat } from 'intl-messageformat';
5
+ function isMobile(breakPoint) {
6
+ const [width, setWidth] = useState(window.innerWidth);
7
+ const handleWindowResize = useCallback(() => setWidth(window.innerWidth), []);
8
+ useEffect(() => {
9
+ window.addEventListener("resize", handleWindowResize);
10
+ return () => window.removeEventListener("resize", handleWindowResize);
11
+ }, []);
12
+ return width > breakPoint ? false : true;
13
+ }
14
+ function isValidColor(teststr) {
15
+ return CSS.supports(`(color: ${teststr})`);
16
+ }
17
+ function sanitizeUrlPath(path) {
18
+ const url = new URL(path, window.location.href);
19
+ const cleanUrl = new URL(window.location.href);
20
+ cleanUrl.pathname = url.pathname;
21
+ return cleanUrl.pathname;
22
+ }
23
+
24
+ export { isMobile as a, isValidColor as i, sanitizeUrlPath as s };