@replicated/portal-components 0.0.28 → 0.0.29

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.
@@ -10,7 +10,8 @@ import { useRouter } from 'next/navigation';
10
10
  function useVerifyMagicLink({
11
11
  verifyAction,
12
12
  onSuccess,
13
- redirectUrl = "/"
13
+ redirectUrl = "/",
14
+ isPreview
14
15
  }) {
15
16
  const router = useRouter();
16
17
  const [state, setState] = useState({ status: "verifying" });
@@ -35,7 +36,7 @@ function useVerifyMagicLink({
35
36
  }
36
37
  if (verifyingRef.current) return;
37
38
  verifyingRef.current = true;
38
- verifyAction(code).then((result) => {
39
+ verifyAction(code, isPreview).then((result) => {
39
40
  if (result.success) {
40
41
  setState({
41
42
  status: "success",
@@ -65,7 +66,7 @@ function useVerifyMagicLink({
65
66
  message: "An unexpected error occurred. Please try again."
66
67
  });
67
68
  });
68
- }, [verifyAction, router, redirectUrl, onSuccess]);
69
+ }, [verifyAction, router, redirectUrl, onSuccess, isPreview]);
69
70
  return state;
70
71
  }
71
72
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/use-verify-magic-link.ts"],"names":[],"mappings":";;;;;;;;AAiCO,SAAS,kBAAA,CAAmB;AAAA,EACjC,YAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA,GAAc;AAChB,CAAA,EAA8B;AAC5B,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAI,SAAsB,EAAE,MAAA,EAAQ,aAAa,CAAA;AACvE,EAAA,MAAM,YAAA,GAAe,OAAO,KAAK,CAAA;AAEjC,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAEnC,IAAA,MAAM,IAAA,GAAO,OAAO,QAAA,CAAS,IAAA;AAE7B,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,MAAA,IAAU,CAAA,EAAG;AAC7B,MAAA,QAAA,CAAS;AAAA,QACP,MAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACV,CAAA;AACD,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,EAAG,IAAA,EAAK,IAAK,EAAA;AAExD,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,QAAA,CAAS;AAAA,QACP,MAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACV,CAAA;AACD,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,aAAa,OAAA,EAAS;AAC1B,IAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AAGvB,IAAA,YAAA,CAAa,IAAI,CAAA,CACd,IAAA,CAAK,CAAC,MAAA,KAAW;AAChB,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,QAAA,CAAS;AAAA,UACP,MAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAS;AAAA,SACV,CAAA;AAGD,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,SAAA,EAAU;AAAA,QACZ;AAGA,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,MAAA,CAAO,KAAK,WAAW,CAAA;AAAA,QACzB,GAAG,IAAI,CAAA;AAAA,MACT,CAAA,MAAA,IAAW,OAAO,SAAA,EAAW;AAC3B,QAAA,QAAA,CAAS;AAAA,UACP,MAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAS,OAAO,OAAA,IAAW;AAAA,SAC5B,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,QAAA,CAAS;AAAA,UACP,MAAA,EAAQ,OAAA;AAAA,UACR,OAAA,EAAS,OAAO,OAAA,IAAW;AAAA,SAC5B,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,GAAA,KAAQ;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,6CAA6C,GAAG,CAAA;AAC9D,MAAA,QAAA,CAAS;AAAA,QACP,MAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACL,GAAG,CAAC,YAAA,EAAc,MAAA,EAAQ,WAAA,EAAa,SAAS,CAAC,CAAA;AAEjD,EAAA,OAAO,KAAA;AACT","file":"use-verify-magic-link.js","sourcesContent":["\"use client\";\n\nimport { useEffect, useState, useRef } from \"react\";\nimport { useRouter } from \"next/navigation\";\n\nexport type VerifyState = \n | { status: \"verifying\" }\n | { status: \"success\"; message: string }\n | { status: \"expired\"; message: string }\n | { status: \"error\"; message: string };\n\nexport interface VerifyActionResult {\n success: boolean;\n message?: string;\n isExpired?: boolean;\n}\n\nexport type VerifyAction = (code: string) => Promise<VerifyActionResult>;\n\nexport interface UseVerifyMagicLinkOptions {\n verifyAction: VerifyAction;\n onSuccess?: () => void;\n redirectUrl?: string;\n}\n\n/**\n * Shared hook for magic link and trial signup verification.\n * Extracts the code from URL hash, calls the verification action,\n * handles all error states, and redirects on success.\n * \n * Note: The verifyAction should be selected based on the verification type\n * (regular magic link vs trial signup) before calling this hook.\n */\nexport function useVerifyMagicLink({\n verifyAction,\n onSuccess,\n redirectUrl = \"/\"\n}: UseVerifyMagicLinkOptions) {\n const router = useRouter();\n const [state, setState] = useState<VerifyState>({ status: \"verifying\" });\n const verifyingRef = useRef(false);\n\n useEffect(() => {\n // Extract code from URL hash\n if (typeof window === \"undefined\") return;\n\n const hash = window.location.hash;\n \n if (!hash || hash.length <= 1) {\n setState({ \n status: \"error\", \n message: \"No verification code found. Please use the link from your email.\" \n });\n return;\n }\n\n // Remove the # and any trailing path segments, trim whitespace\n const code = hash.substring(1).split(\"/\")[0]?.trim() || \"\";\n \n if (!code) {\n setState({ \n status: \"error\", \n message: \"Invalid verification code. Please use the link from your email.\" \n });\n return;\n }\n\n // Prevent duplicate verification attempts\n if (verifyingRef.current) return;\n verifyingRef.current = true;\n\n // Auto-verify on mount\n verifyAction(code)\n .then((result) => {\n if (result.success) {\n setState({ \n status: \"success\", \n message: \"Verified! Redirecting to the portal...\" \n });\n \n // Call success callback if provided\n if (onSuccess) {\n onSuccess();\n }\n \n // Redirect to dashboard after a short delay\n setTimeout(() => {\n router.push(redirectUrl);\n }, 1500);\n } else if (result.isExpired) {\n setState({ \n status: \"expired\", \n message: result.message || \"Magic link has expired. A new link has been sent to your email.\" \n });\n } else {\n setState({ \n status: \"error\", \n message: result.message || \"Failed to verify. Please try again.\" \n });\n }\n })\n .catch((err) => {\n console.error(\"[use-verify-magic-link] Unexpected error:\", err);\n setState({ \n status: \"error\", \n message: \"An unexpected error occurred. Please try again.\" \n });\n });\n }, [verifyAction, router, redirectUrl, onSuccess]);\n\n return state;\n}\n"]}
1
+ {"version":3,"sources":["../../src/hooks/use-verify-magic-link.ts"],"names":[],"mappings":";;;;;;;;AAkCO,SAAS,kBAAA,CAAmB;AAAA,EACjC,YAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA,GAAc,GAAA;AAAA,EACd;AACF,CAAA,EAA8B;AAC5B,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,CAAC,OAAO,QAAQ,CAAA,GAAI,SAAsB,EAAE,MAAA,EAAQ,aAAa,CAAA;AACvE,EAAA,MAAM,YAAA,GAAe,OAAO,KAAK,CAAA;AAEjC,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAEnC,IAAA,MAAM,IAAA,GAAO,OAAO,QAAA,CAAS,IAAA;AAE7B,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,MAAA,IAAU,CAAA,EAAG;AAC7B,MAAA,QAAA,CAAS;AAAA,QACP,MAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACV,CAAA;AACD,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,EAAG,IAAA,EAAK,IAAK,EAAA;AAExD,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,QAAA,CAAS;AAAA,QACP,MAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACV,CAAA;AACD,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,aAAa,OAAA,EAAS;AAC1B,IAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AAGvB,IAAA,YAAA,CAAa,IAAA,EAAM,SAAS,CAAA,CACzB,IAAA,CAAK,CAAC,MAAA,KAAW;AAChB,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,QAAA,CAAS;AAAA,UACP,MAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAS;AAAA,SACV,CAAA;AAGD,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,SAAA,EAAU;AAAA,QACZ;AAGA,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,MAAA,CAAO,KAAK,WAAW,CAAA;AAAA,QACzB,GAAG,IAAI,CAAA;AAAA,MACT,CAAA,MAAA,IAAW,OAAO,SAAA,EAAW;AAC3B,QAAA,QAAA,CAAS;AAAA,UACP,MAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAS,OAAO,OAAA,IAAW;AAAA,SAC5B,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,QAAA,CAAS;AAAA,UACP,MAAA,EAAQ,OAAA;AAAA,UACR,OAAA,EAAS,OAAO,OAAA,IAAW;AAAA,SAC5B,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,GAAA,KAAQ;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,6CAA6C,GAAG,CAAA;AAC9D,MAAA,QAAA,CAAS;AAAA,QACP,MAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACL,GAAG,CAAC,YAAA,EAAc,QAAQ,WAAA,EAAa,SAAA,EAAW,SAAS,CAAC,CAAA;AAE5D,EAAA,OAAO,KAAA;AACT","file":"use-verify-magic-link.js","sourcesContent":["\"use client\";\n\nimport { useEffect, useState, useRef } from \"react\";\nimport { useRouter } from \"next/navigation\";\n\nexport type VerifyState = \n | { status: \"verifying\" }\n | { status: \"success\"; message: string }\n | { status: \"expired\"; message: string }\n | { status: \"error\"; message: string };\n\nexport interface VerifyActionResult {\n success: boolean;\n message?: string;\n isExpired?: boolean;\n}\n\nexport type VerifyAction = (code: string, isPreview?: boolean) => Promise<VerifyActionResult>;\n\nexport interface UseVerifyMagicLinkOptions {\n verifyAction: VerifyAction;\n onSuccess?: () => void;\n redirectUrl?: string;\n isPreview?: boolean;\n}\n\n/**\n * Shared hook for magic link and trial signup verification.\n * Extracts the code from URL hash, calls the verification action,\n * handles all error states, and redirects on success.\n * \n * Note: The verifyAction should be selected based on the verification type\n * (regular magic link vs trial signup) before calling this hook.\n */\nexport function useVerifyMagicLink({\n verifyAction,\n onSuccess,\n redirectUrl = \"/\",\n isPreview\n}: UseVerifyMagicLinkOptions) {\n const router = useRouter();\n const [state, setState] = useState<VerifyState>({ status: \"verifying\" });\n const verifyingRef = useRef(false);\n\n useEffect(() => {\n // Extract code from URL hash\n if (typeof window === \"undefined\") return;\n\n const hash = window.location.hash;\n \n if (!hash || hash.length <= 1) {\n setState({ \n status: \"error\", \n message: \"No verification code found. Please use the link from your email.\" \n });\n return;\n }\n\n // Remove the # and any trailing path segments, trim whitespace\n const code = hash.substring(1).split(\"/\")[0]?.trim() || \"\";\n \n if (!code) {\n setState({ \n status: \"error\", \n message: \"Invalid verification code. Please use the link from your email.\" \n });\n return;\n }\n\n // Prevent duplicate verification attempts\n if (verifyingRef.current) return;\n verifyingRef.current = true;\n\n // Auto-verify on mount\n verifyAction(code, isPreview)\n .then((result) => {\n if (result.success) {\n setState({ \n status: \"success\", \n message: \"Verified! Redirecting to the portal...\" \n });\n \n // Call success callback if provided\n if (onSuccess) {\n onSuccess();\n }\n \n // Redirect to dashboard after a short delay\n setTimeout(() => {\n router.push(redirectUrl);\n }, 1500);\n } else if (result.isExpired) {\n setState({ \n status: \"expired\", \n message: result.message || \"Magic link has expired. A new link has been sent to your email.\" \n });\n } else {\n setState({ \n status: \"error\", \n message: result.message || \"Failed to verify. Please try again.\" \n });\n }\n })\n .catch((err) => {\n console.error(\"[use-verify-magic-link] Unexpected error:\", err);\n setState({ \n status: \"error\", \n message: \"An unexpected error occurred. Please try again.\" \n });\n });\n }, [verifyAction, router, redirectUrl, onSuccess, isPreview]);\n\n return state;\n}\n"]}
package/dist/index.js CHANGED
@@ -127,7 +127,7 @@ var init_tracer = __esm({
127
127
 
128
128
  // package.json
129
129
  var package_default = {
130
- version: "0.0.28"};
130
+ version: "0.0.29"};
131
131
 
132
132
  // src/tokens/index.ts
133
133
  var baseTokens = {