@tern-secure/nextjs 4.2.11 → 5.0.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 (232) hide show
  1. package/README.md +33 -33
  2. package/dist/cjs/app-router/admin/index.js +5 -8
  3. package/dist/cjs/app-router/admin/index.js.map +1 -1
  4. package/dist/cjs/app-router/admin/sessionTernSecure.js +3 -6
  5. package/dist/cjs/app-router/admin/sessionTernSecure.js.map +1 -1
  6. package/dist/cjs/app-router/client/TernSecureProvider.js +10 -18
  7. package/dist/cjs/app-router/client/TernSecureProvider.js.map +1 -1
  8. package/dist/cjs/app-router/client/actions.js +1 -177
  9. package/dist/cjs/app-router/client/actions.js.map +1 -1
  10. package/dist/cjs/app-router/route-handler/internal-route.js +4 -35
  11. package/dist/cjs/app-router/route-handler/internal-route.js.map +1 -1
  12. package/dist/cjs/boundary/{hooks/useSignUp.js → components.js} +16 -16
  13. package/dist/cjs/boundary/components.js.map +1 -0
  14. package/dist/cjs/{lib/utils.js → boundary/hooks.js} +9 -11
  15. package/dist/cjs/boundary/hooks.js.map +1 -0
  16. package/dist/cjs/{boundary/TernSecureCtx.js → components/uiComponents.js} +17 -24
  17. package/dist/cjs/components/uiComponents.js.map +1 -0
  18. package/dist/cjs/errors.js +1 -0
  19. package/dist/cjs/errors.js.map +1 -1
  20. package/dist/cjs/index.js +13 -27
  21. package/dist/cjs/index.js.map +1 -1
  22. package/dist/cjs/server/auth.js +4 -5
  23. package/dist/cjs/server/auth.js.map +1 -1
  24. package/dist/cjs/server/crypto.js.map +1 -1
  25. package/dist/cjs/server/ctx-store.js +1 -2
  26. package/dist/cjs/server/ctx-store.js.map +1 -1
  27. package/dist/cjs/server/edge-session.js +6 -7
  28. package/dist/cjs/server/edge-session.js.map +1 -1
  29. package/dist/cjs/server/index.js.map +1 -1
  30. package/dist/cjs/server/jwt-edge.js.map +1 -1
  31. package/dist/cjs/server/jwt.js.map +1 -1
  32. package/dist/cjs/server/session-store.js +3 -1
  33. package/dist/cjs/server/session-store.js.map +1 -1
  34. package/dist/cjs/server/ternSecureMiddleware.js.map +1 -1
  35. package/dist/cjs/server/types.js.map +1 -1
  36. package/dist/cjs/server/utils.js.map +1 -1
  37. package/dist/cjs/types.js.map +1 -1
  38. package/dist/cjs/utils/admin-init.js +3 -0
  39. package/dist/cjs/utils/admin-init.js.map +1 -1
  40. package/dist/cjs/utils/allNextProviderProps.js +108 -0
  41. package/dist/cjs/utils/allNextProviderProps.js.map +1 -0
  42. package/dist/cjs/utils/client-init.js +2 -47
  43. package/dist/cjs/utils/client-init.js.map +1 -1
  44. package/dist/cjs/utils/config.js.map +1 -1
  45. package/dist/cjs/utils/construct.js.map +1 -1
  46. package/dist/cjs/utils/create-styles.js.map +1 -1
  47. package/dist/cjs/utils/redirect.js.map +1 -1
  48. package/dist/cjs/{components/ui/separator.js → utils/tern-ui-script.js} +41 -24
  49. package/dist/cjs/utils/tern-ui-script.js.map +1 -0
  50. package/dist/esm/app-router/admin/index.js +6 -4
  51. package/dist/esm/app-router/admin/index.js.map +1 -1
  52. package/dist/esm/app-router/admin/sessionTernSecure.js +3 -6
  53. package/dist/esm/app-router/admin/sessionTernSecure.js.map +1 -1
  54. package/dist/esm/app-router/client/TernSecureProvider.js +13 -19
  55. package/dist/esm/app-router/client/TernSecureProvider.js.map +1 -1
  56. package/dist/esm/app-router/client/actions.js +1 -157
  57. package/dist/esm/app-router/client/actions.js.map +1 -1
  58. package/dist/esm/app-router/route-handler/internal-route.js +5 -30
  59. package/dist/esm/app-router/route-handler/internal-route.js.map +1 -1
  60. package/dist/esm/boundary/components.js +18 -0
  61. package/dist/esm/boundary/components.js.map +1 -0
  62. package/dist/esm/boundary/hooks.js +9 -0
  63. package/dist/esm/boundary/hooks.js.map +1 -0
  64. package/dist/esm/components/uiComponents.js +21 -0
  65. package/dist/esm/components/uiComponents.js.map +1 -0
  66. package/dist/esm/errors.js +1 -0
  67. package/dist/esm/errors.js.map +1 -1
  68. package/dist/esm/index.js +15 -16
  69. package/dist/esm/index.js.map +1 -1
  70. package/dist/esm/server/auth.js +4 -5
  71. package/dist/esm/server/auth.js.map +1 -1
  72. package/dist/esm/server/crypto.js.map +1 -1
  73. package/dist/esm/server/ctx-store.js +1 -2
  74. package/dist/esm/server/ctx-store.js.map +1 -1
  75. package/dist/esm/server/edge-session.js +6 -7
  76. package/dist/esm/server/edge-session.js.map +1 -1
  77. package/dist/esm/server/index.js.map +1 -1
  78. package/dist/esm/server/jwt-edge.js.map +1 -1
  79. package/dist/esm/server/jwt.js.map +1 -1
  80. package/dist/esm/server/session-store.js +3 -1
  81. package/dist/esm/server/session-store.js.map +1 -1
  82. package/dist/esm/server/ternSecureMiddleware.js.map +1 -1
  83. package/dist/esm/server/utils.js.map +1 -1
  84. package/dist/esm/types.js.map +1 -1
  85. package/dist/esm/utils/admin-init.js +2 -0
  86. package/dist/esm/utils/admin-init.js.map +1 -1
  87. package/dist/esm/utils/allNextProviderProps.js +84 -0
  88. package/dist/esm/utils/allNextProviderProps.js.map +1 -0
  89. package/dist/esm/utils/client-init.js +2 -21
  90. package/dist/esm/utils/client-init.js.map +1 -1
  91. package/dist/esm/utils/config.js.map +1 -1
  92. package/dist/esm/utils/construct.js.map +1 -1
  93. package/dist/esm/utils/create-styles.js.map +1 -1
  94. package/dist/esm/utils/redirect.js.map +1 -1
  95. package/dist/esm/utils/tern-ui-script.js +42 -0
  96. package/dist/esm/utils/tern-ui-script.js.map +1 -0
  97. package/dist/types/app-router/admin/index.d.ts +1 -2
  98. package/dist/types/app-router/admin/index.d.ts.map +1 -1
  99. package/dist/types/app-router/client/TernSecureProvider.d.ts +2 -14
  100. package/dist/types/app-router/client/TernSecureProvider.d.ts.map +1 -1
  101. package/dist/types/app-router/client/actions.d.ts +1 -54
  102. package/dist/types/app-router/client/actions.d.ts.map +1 -1
  103. package/dist/types/app-router/route-handler/internal-route.d.ts +1 -15
  104. package/dist/types/app-router/route-handler/internal-route.d.ts.map +1 -1
  105. package/dist/types/boundary/components.d.ts +2 -0
  106. package/dist/types/boundary/components.d.ts.map +1 -0
  107. package/dist/types/boundary/hooks.d.ts +2 -0
  108. package/dist/types/boundary/hooks.d.ts.map +1 -0
  109. package/dist/types/components/uiComponents.d.ts +6 -0
  110. package/dist/types/components/uiComponents.d.ts.map +1 -0
  111. package/dist/types/errors.d.ts +1 -1
  112. package/dist/types/errors.d.ts.map +1 -1
  113. package/dist/types/index.d.ts +3 -9
  114. package/dist/types/index.d.ts.map +1 -1
  115. package/dist/types/server/ternSecureMiddleware.d.ts.map +1 -1
  116. package/dist/types/types.d.ts +6 -13
  117. package/dist/types/types.d.ts.map +1 -1
  118. package/dist/types/utils/admin-init.d.ts +2 -1
  119. package/dist/types/utils/admin-init.d.ts.map +1 -1
  120. package/dist/types/utils/allNextProviderProps.d.ts +6 -0
  121. package/dist/types/utils/allNextProviderProps.d.ts.map +1 -0
  122. package/dist/types/utils/client-init.d.ts +1 -4
  123. package/dist/types/utils/client-init.d.ts.map +1 -1
  124. package/dist/types/utils/config.d.ts +1 -1
  125. package/dist/types/utils/config.d.ts.map +1 -1
  126. package/dist/types/utils/construct.d.ts.map +1 -1
  127. package/dist/types/utils/tern-ui-script.d.ts +8 -0
  128. package/dist/types/utils/tern-ui-script.d.ts.map +1 -0
  129. package/package.json +41 -52
  130. package/dist/cjs/boundary/TernSecureClientProvider.js +0 -240
  131. package/dist/cjs/boundary/TernSecureClientProvider.js.map +0 -1
  132. package/dist/cjs/boundary/TernSecureCtx.js.map +0 -1
  133. package/dist/cjs/boundary/hooks/useAuth.js +0 -63
  134. package/dist/cjs/boundary/hooks/useAuth.js.map +0 -1
  135. package/dist/cjs/boundary/hooks/useSignUp.js.map +0 -1
  136. package/dist/cjs/components/background.js +0 -65
  137. package/dist/cjs/components/background.js.map +0 -1
  138. package/dist/cjs/components/sign-in.js +0 -368
  139. package/dist/cjs/components/sign-in.js.map +0 -1
  140. package/dist/cjs/components/sign-out-button.js +0 -84
  141. package/dist/cjs/components/sign-out-button.js.map +0 -1
  142. package/dist/cjs/components/sign-out.js +0 -99
  143. package/dist/cjs/components/sign-out.js.map +0 -1
  144. package/dist/cjs/components/sign-up.js +0 -332
  145. package/dist/cjs/components/sign-up.js.map +0 -1
  146. package/dist/cjs/components/ui/alert.js +0 -88
  147. package/dist/cjs/components/ui/alert.js.map +0 -1
  148. package/dist/cjs/components/ui/button.js +0 -84
  149. package/dist/cjs/components/ui/button.js.map +0 -1
  150. package/dist/cjs/components/ui/card.js +0 -101
  151. package/dist/cjs/components/ui/card.js.map +0 -1
  152. package/dist/cjs/components/ui/input.js +0 -58
  153. package/dist/cjs/components/ui/input.js.map +0 -1
  154. package/dist/cjs/components/ui/label.js +0 -55
  155. package/dist/cjs/components/ui/label.js.map +0 -1
  156. package/dist/cjs/components/ui/separator.js.map +0 -1
  157. package/dist/cjs/components/verify.js +0 -195
  158. package/dist/cjs/components/verify.js.map +0 -1
  159. package/dist/cjs/lib/utils.d.js +0 -17
  160. package/dist/cjs/lib/utils.d.js.map +0 -1
  161. package/dist/cjs/lib/utils.js.map +0 -1
  162. package/dist/esm/boundary/TernSecureClientProvider.js +0 -216
  163. package/dist/esm/boundary/TernSecureClientProvider.js.map +0 -1
  164. package/dist/esm/boundary/TernSecureCtx.js +0 -23
  165. package/dist/esm/boundary/TernSecureCtx.js.map +0 -1
  166. package/dist/esm/boundary/hooks/useAuth.js +0 -39
  167. package/dist/esm/boundary/hooks/useAuth.js.map +0 -1
  168. package/dist/esm/boundary/hooks/useSignUp.js +0 -16
  169. package/dist/esm/boundary/hooks/useSignUp.js.map +0 -1
  170. package/dist/esm/components/background.js +0 -41
  171. package/dist/esm/components/background.js.map +0 -1
  172. package/dist/esm/components/sign-in.js +0 -344
  173. package/dist/esm/components/sign-in.js.map +0 -1
  174. package/dist/esm/components/sign-out-button.js +0 -60
  175. package/dist/esm/components/sign-out-button.js.map +0 -1
  176. package/dist/esm/components/sign-out.js +0 -65
  177. package/dist/esm/components/sign-out.js.map +0 -1
  178. package/dist/esm/components/sign-up.js +0 -298
  179. package/dist/esm/components/sign-up.js.map +0 -1
  180. package/dist/esm/components/ui/alert.js +0 -52
  181. package/dist/esm/components/ui/alert.js.map +0 -1
  182. package/dist/esm/components/ui/button.js +0 -49
  183. package/dist/esm/components/ui/button.js.map +0 -1
  184. package/dist/esm/components/ui/card.js +0 -62
  185. package/dist/esm/components/ui/card.js.map +0 -1
  186. package/dist/esm/components/ui/input.js +0 -24
  187. package/dist/esm/components/ui/input.js.map +0 -1
  188. package/dist/esm/components/ui/label.js +0 -21
  189. package/dist/esm/components/ui/label.js.map +0 -1
  190. package/dist/esm/components/ui/separator.js +0 -25
  191. package/dist/esm/components/ui/separator.js.map +0 -1
  192. package/dist/esm/components/verify.js +0 -161
  193. package/dist/esm/components/verify.js.map +0 -1
  194. package/dist/esm/lib/utils.d.js +0 -1
  195. package/dist/esm/lib/utils.d.js.map +0 -1
  196. package/dist/esm/lib/utils.js +0 -9
  197. package/dist/esm/lib/utils.js.map +0 -1
  198. package/dist/types/boundary/TernSecureClientProvider.d.ts +0 -27
  199. package/dist/types/boundary/TernSecureClientProvider.d.ts.map +0 -1
  200. package/dist/types/boundary/TernSecureCtx.d.ts +0 -11
  201. package/dist/types/boundary/TernSecureCtx.d.ts.map +0 -1
  202. package/dist/types/boundary/hooks/useAuth.d.ts +0 -15
  203. package/dist/types/boundary/hooks/useAuth.d.ts.map +0 -1
  204. package/dist/types/boundary/hooks/useSignUp.d.ts +0 -5
  205. package/dist/types/boundary/hooks/useSignUp.d.ts.map +0 -1
  206. package/dist/types/components/background.d.ts +0 -2
  207. package/dist/types/components/background.d.ts.map +0 -1
  208. package/dist/types/components/sign-in.d.ts +0 -18
  209. package/dist/types/components/sign-in.d.ts.map +0 -1
  210. package/dist/types/components/sign-out-button.d.ts +0 -14
  211. package/dist/types/components/sign-out-button.d.ts.map +0 -1
  212. package/dist/types/components/sign-out.d.ts +0 -12
  213. package/dist/types/components/sign-out.d.ts.map +0 -1
  214. package/dist/types/components/sign-up.d.ts +0 -11
  215. package/dist/types/components/sign-up.d.ts.map +0 -1
  216. package/dist/types/components/ui/alert.d.ts +0 -9
  217. package/dist/types/components/ui/alert.d.ts.map +0 -1
  218. package/dist/types/components/ui/button.d.ts +0 -12
  219. package/dist/types/components/ui/button.d.ts.map +0 -1
  220. package/dist/types/components/ui/card.d.ts +0 -9
  221. package/dist/types/components/ui/card.d.ts.map +0 -1
  222. package/dist/types/components/ui/input.d.ts +0 -4
  223. package/dist/types/components/ui/input.d.ts.map +0 -1
  224. package/dist/types/components/ui/label.d.ts +0 -6
  225. package/dist/types/components/ui/label.d.ts.map +0 -1
  226. package/dist/types/components/ui/separator.d.ts +0 -5
  227. package/dist/types/components/ui/separator.d.ts.map +0 -1
  228. package/dist/types/components/verify.d.ts +0 -2
  229. package/dist/types/components/verify.d.ts.map +0 -1
  230. package/dist/types/lib/utils.d.ts +0 -3
  231. package/dist/types/lib/utils.d.ts.map +0 -1
  232. package/server/package.json +0 -5
@@ -1,161 +0,0 @@
1
- "use client";
2
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
- import { useState, useEffect } from "react";
4
- import { useRouter } from "next/navigation";
5
- import Link from "next/link";
6
- import { Loader2, MailCheck, ChevronLeft, RefreshCw, ArrowRight } from "lucide-react";
7
- import { Button } from "./ui/button";
8
- import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "./ui/card";
9
- import { Alert, AlertDescription } from "./ui/alert";
10
- import { Separator } from "./ui/separator";
11
- import { AuthBackground } from "./background";
12
- import { cn } from "../lib/utils";
13
- import { useSignUp } from "../boundary/hooks/useSignUp";
14
- import { resendEmailVerification } from "../app-router/client/actions";
15
- const RESEND_COOLDOWN = 59;
16
- const MAX_RESEND_ATTEMPTS = 3;
17
- function Verify() {
18
- const router = useRouter();
19
- const { email } = useSignUp();
20
- const [error, setError] = useState("");
21
- const [success, setSuccess] = useState("");
22
- const [resendCooldown, setResendCooldown] = useState(0);
23
- const [isResending, setIsResending] = useState(false);
24
- const [resendAttempts, setResendAttempts] = useState(0);
25
- useEffect(() => {
26
- if (!email) {
27
- router.push("/sign-in");
28
- }
29
- }, [email, router]);
30
- useEffect(() => {
31
- let timer;
32
- if (resendCooldown > 0) {
33
- timer = setInterval(() => {
34
- setResendCooldown((prev) => prev - 1);
35
- }, 1e3);
36
- }
37
- return () => clearInterval(timer);
38
- }, [resendCooldown]);
39
- const handleResendVerification = async () => {
40
- if (!email || isResending || resendCooldown > 0 || resendAttempts >= MAX_RESEND_ATTEMPTS) return;
41
- try {
42
- setIsResending(true);
43
- setError("");
44
- setSuccess("");
45
- const result = await resendEmailVerification();
46
- if (result.success) {
47
- if (result.isVerified) {
48
- setSuccess(result.message);
49
- setTimeout(() => {
50
- router.push("/sign-in");
51
- }, 2e3);
52
- } else {
53
- setSuccess(result.message);
54
- setResendAttempts((prev) => prev + 1);
55
- setResendCooldown(RESEND_COOLDOWN);
56
- }
57
- }
58
- } catch (error2) {
59
- setError("Failed to resend verification email. Please try again.");
60
- } finally {
61
- setIsResending(false);
62
- }
63
- };
64
- const handleRedirectToSignIn = () => {
65
- router.push("/sign-in");
66
- };
67
- if (!email) {
68
- return null;
69
- }
70
- return /* @__PURE__ */ jsxs("div", { className: "relative min-h-screen flex flex-col items-center justify-center py-12 px-4 sm:px-6 lg:px-8", children: [
71
- /* @__PURE__ */ jsx(AuthBackground, {}),
72
- /* @__PURE__ */ jsxs(
73
- Link,
74
- {
75
- href: "/sign-in",
76
- className: cn(
77
- "absolute top-8 left-8 flex items-center text-sm font-medium text-muted-foreground",
78
- "transition-colors hover:text-primary"
79
- ),
80
- children: [
81
- /* @__PURE__ */ jsx(ChevronLeft, { className: "mr-2 h-4 w-4" }),
82
- "Back to sign in"
83
- ]
84
- }
85
- ),
86
- /* @__PURE__ */ jsxs(Card, { className: "w-full max-w-md mx-auto", children: [
87
- /* @__PURE__ */ jsxs(CardHeader, { className: "space-y-1", children: [
88
- /* @__PURE__ */ jsx("div", { className: "flex justify-center mb-4", children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
89
- /* @__PURE__ */ jsx("div", { className: "absolute -inset-1 rounded-full bg-primary/20 blur-lg" }),
90
- /* @__PURE__ */ jsx("div", { className: "relative rounded-full bg-primary/10 p-3", children: /* @__PURE__ */ jsx(MailCheck, { className: "h-8 w-8 text-primary" }) })
91
- ] }) }),
92
- /* @__PURE__ */ jsx(CardTitle, { className: "text-2xl font-bold tracking-tight text-center", children: "Check your email" }),
93
- /* @__PURE__ */ jsxs(CardDescription, { className: "text-center", children: [
94
- "We've sent a verification link to",
95
- /* @__PURE__ */ jsx("br", {}),
96
- /* @__PURE__ */ jsx("span", { className: "font-medium", children: email })
97
- ] })
98
- ] }),
99
- /* @__PURE__ */ jsxs(CardContent, { className: "p-6 space-y-6", children: [
100
- error && /* @__PURE__ */ jsx(Alert, { variant: "destructive", className: "animate-in fade-in-50", children: /* @__PURE__ */ jsx(AlertDescription, { children: error }) }),
101
- success && /* @__PURE__ */ jsx(
102
- Alert,
103
- {
104
- variant: "default",
105
- className: cn(
106
- "animate-in fade-in-50",
107
- success.includes("already verified") ? "bg-green-50" : "bg-blue-50"
108
- ),
109
- children: /* @__PURE__ */ jsx(
110
- AlertDescription,
111
- {
112
- className: success.includes("already verified") ? "text-green-800" : "text-blue-800",
113
- children: success
114
- }
115
- )
116
- }
117
- ),
118
- /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
119
- /* @__PURE__ */ jsx("div", { className: "p-4 rounded-lg bg-muted/50", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start space-x-4", children: [
120
- /* @__PURE__ */ jsx("div", { className: "mt-1", children: /* @__PURE__ */ jsx(MailCheck, { className: "h-5 w-5 text-muted-foreground" }) }),
121
- /* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-1", children: [
122
- /* @__PURE__ */ jsx("p", { className: "text-sm font-medium", children: "Already verified?" }),
123
- /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "If you've already clicked the verification link in your email, you can proceed to sign in." })
124
- ] })
125
- ] }) }),
126
- /* @__PURE__ */ jsxs(Button, { onClick: handleRedirectToSignIn, className: "w-full", variant: "outline", children: [
127
- "Continue to sign in",
128
- /* @__PURE__ */ jsx(ArrowRight, { className: "ml-2 h-4 w-4" })
129
- ] }),
130
- /* @__PURE__ */ jsx(Separator, {}),
131
- /* @__PURE__ */ jsx("div", { className: "space-y-2", children: /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
132
- /* @__PURE__ */ jsxs("p", { className: "text-sm text-center text-muted-foreground", children: [
133
- "Didn't receive the email? Check your spam folder or request a new link",
134
- resendCooldown > 0 && ` in ${resendCooldown}s`
135
- ] }),
136
- resendAttempts >= MAX_RESEND_ATTEMPTS ? /* @__PURE__ */ jsx(Alert, { children: /* @__PURE__ */ jsx(AlertDescription, { children: "Maximum resend attempts reached. Please try signing up again or contact support." }) }) : /* @__PURE__ */ jsx(
137
- Button,
138
- {
139
- onClick: handleResendVerification,
140
- className: "w-full",
141
- disabled: isResending || resendCooldown > 0 || resendAttempts >= MAX_RESEND_ATTEMPTS,
142
- children: isResending ? /* @__PURE__ */ jsxs(Fragment, { children: [
143
- /* @__PURE__ */ jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
144
- "Sending..."
145
- ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
146
- /* @__PURE__ */ jsx(RefreshCw, { className: "mr-2 h-4 w-4" }),
147
- "Resend verification email",
148
- resendAttempts > 0 && ` (${MAX_RESEND_ATTEMPTS - resendAttempts} left)`
149
- ] })
150
- }
151
- )
152
- ] }) })
153
- ] })
154
- ] })
155
- ] })
156
- ] });
157
- }
158
- export {
159
- Verify
160
- };
161
- //# sourceMappingURL=verify.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/verify.tsx"],"sourcesContent":["\"use client\"\n\nimport { useState, useEffect } from \"react\"\nimport { useRouter } from \"next/navigation\"\nimport Link from \"next/link\"\nimport { Loader2, MailCheck, ChevronLeft, RefreshCw, ArrowRight } from 'lucide-react'\nimport { Button } from \"./ui/button\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"./ui/card\"\nimport { Alert, AlertDescription } from \"./ui/alert\"\nimport { Separator } from \"./ui/separator\"\nimport { AuthBackground } from \"./background\"\nimport { cn } from \"../lib/utils\"\nimport { useSignUp } from '../boundary/hooks/useSignUp'\nimport { resendEmailVerification } from '../app-router/client/actions'\n\nconst RESEND_COOLDOWN = 59 // 59 seconds cooldown for resend\nconst MAX_RESEND_ATTEMPTS = 3\n\n\nexport function Verify() {\n const router = useRouter()\n const { email } = useSignUp()\n \n const [error, setError] = useState(\"\")\n const [success, setSuccess] = useState(\"\")\n const [resendCooldown, setResendCooldown] = useState(0)\n const [isResending, setIsResending] = useState(false)\n const [resendAttempts, setResendAttempts] = useState(0)\n \n // Redirect if no email in context\n useEffect(() => {\n if (!email) {\n router.push(\"/sign-in\")\n }\n }, [email, router])\n \n useEffect(() => {\n let timer: NodeJS.Timeout\n if (resendCooldown > 0) {\n timer = setInterval(() => {\n setResendCooldown((prev) => prev - 1)\n }, 1000)\n }\n return () => clearInterval(timer)\n }, [resendCooldown])\n \n const handleResendVerification = async () => {\n if (!email || isResending || resendCooldown > 0 || resendAttempts >= MAX_RESEND_ATTEMPTS) return\n \n try {\n setIsResending(true)\n setError(\"\")\n setSuccess(\"\")\n\n const result = await resendEmailVerification()\n\n if (result.success) {\n if (result.isVerified) {\n // If already verified, show success message and redirect after delay\n setSuccess(result.message)\n setTimeout(() => {\n router.push('/sign-in')\n }, 2000)\n } else {\n // If not verified, increment attempts and start cooldown\n setSuccess(result.message)\n setResendAttempts((prev) => prev + 1)\n setResendCooldown(RESEND_COOLDOWN)\n }\n }\n\n } catch (error) {\n setError(\"Failed to resend verification email. Please try again.\")\n } finally {\n setIsResending(false)\n }\n }\n \n const handleRedirectToSignIn = () => {\n router.push(\"/sign-in\")\n }\n \n if (!email) {\n return null // Will redirect in useEffect\n }\n \n return (\n <div className=\"relative min-h-screen flex flex-col items-center justify-center py-12 px-4 sm:px-6 lg:px-8\">\n <AuthBackground />\n \n <Link\n href=\"/sign-in\"\n className={cn(\n \"absolute top-8 left-8 flex items-center text-sm font-medium text-muted-foreground\",\n \"transition-colors hover:text-primary\",\n )}\n >\n <ChevronLeft className=\"mr-2 h-4 w-4\" />\n Back to sign in\n </Link>\n \n <Card className=\"w-full max-w-md mx-auto\">\n <CardHeader className=\"space-y-1\">\n <div className=\"flex justify-center mb-4\">\n <div className=\"relative\">\n <div className=\"absolute -inset-1 rounded-full bg-primary/20 blur-lg\" />\n <div className=\"relative rounded-full bg-primary/10 p-3\">\n <MailCheck className=\"h-8 w-8 text-primary\" />\n </div>\n </div>\n </div>\n <CardTitle className=\"text-2xl font-bold tracking-tight text-center\">Check your email</CardTitle>\n <CardDescription className=\"text-center\">\n We&apos;ve sent a verification link to\n <br />\n <span className=\"font-medium\">{email}</span>\n </CardDescription>\n </CardHeader>\n \n <CardContent className=\"p-6 space-y-6\">\n {error && (\n <Alert variant=\"destructive\" className=\"animate-in fade-in-50\">\n <AlertDescription>{error}</AlertDescription>\n </Alert>\n )}\n\n{success && (\n <Alert \n variant=\"default\" \n className={cn(\n \"animate-in fade-in-50\",\n success.includes(\"already verified\") ? \"bg-green-50\" : \"bg-blue-50\"\n )}\n >\n <AlertDescription \n className={success.includes(\"already verified\") ? \"text-green-800\" : \"text-blue-800\"}\n >\n {success}\n </AlertDescription>\n </Alert>\n)}\n \n <div className=\"space-y-4\">\n <div className=\"p-4 rounded-lg bg-muted/50\">\n <div className=\"flex items-start space-x-4\">\n <div className=\"mt-1\">\n <MailCheck className=\"h-5 w-5 text-muted-foreground\" />\n </div>\n <div className=\"flex-1 space-y-1\">\n <p className=\"text-sm font-medium\">Already verified?</p>\n <p className=\"text-sm text-muted-foreground\">\n If you&apos;ve already clicked the verification link in your email, you can proceed to sign in.\n </p>\n </div>\n </div>\n </div>\n \n <Button onClick={handleRedirectToSignIn} className=\"w-full\" variant=\"outline\">\n Continue to sign in\n <ArrowRight className=\"ml-2 h-4 w-4\" />\n </Button>\n \n <Separator />\n \n <div className=\"space-y-2\">\n <div className=\"space-y-2\">\n <p className=\"text-sm text-center text-muted-foreground\">\n Didn&apos;t receive the email? Check your spam folder or request a new link\n {resendCooldown > 0 && ` in ${resendCooldown}s`}\n </p>\n {resendAttempts >= MAX_RESEND_ATTEMPTS ? (\n <Alert>\n <AlertDescription>\n Maximum resend attempts reached. Please try signing up again or contact support.\n </AlertDescription>\n </Alert>\n ) : (\n <Button\n onClick={handleResendVerification}\n className=\"w-full\"\n disabled={isResending || resendCooldown > 0 || resendAttempts >= MAX_RESEND_ATTEMPTS}\n >\n {isResending ? (\n <>\n <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n Sending...\n </>\n ) : (\n <>\n <RefreshCw className=\"mr-2 h-4 w-4\" />\n Resend verification email\n {resendAttempts > 0 && ` (${MAX_RESEND_ATTEMPTS - resendAttempts} left)`}\n </>\n )}\n </Button>\n )}\n </div>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n )\n }"],"mappings":";AAwFQ,SA+FgB,UA/FhB,KAEA,YAFA;AAtFR,SAAS,UAAU,iBAAiB;AACpC,SAAS,iBAAiB;AAC1B,OAAO,UAAU;AACjB,SAAS,SAAS,WAAW,aAAa,WAAW,kBAAkB;AACvE,SAAS,cAAc;AACvB,SAAS,MAAM,aAAa,iBAAiB,YAAY,iBAAiB;AAC1E,SAAS,OAAO,wBAAwB;AACxC,SAAS,iBAAiB;AAC1B,SAAS,sBAAsB;AAC/B,SAAS,UAAU;AACnB,SAAS,iBAAiB;AAC1B,SAAS,+BAA+B;AAExC,MAAM,kBAAkB;AACxB,MAAM,sBAAsB;AAGrB,SAAS,SAAS;AACrB,QAAM,SAAS,UAAU;AACzB,QAAM,EAAE,MAAM,IAAI,UAAU;AAE5B,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AACrC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,EAAE;AACzC,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,CAAC;AACtD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AACpD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,CAAC;AAGtD,YAAU,MAAM;AACd,QAAI,CAAC,OAAO;AACV,aAAO,KAAK,UAAU;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,OAAO,MAAM,CAAC;AAElB,YAAU,MAAM;AACZ,QAAI;AACJ,QAAI,iBAAiB,GAAG;AACtB,cAAQ,YAAY,MAAM;AACxB,0BAAkB,CAAC,SAAS,OAAO,CAAC;AAAA,MACtC,GAAG,GAAI;AAAA,IACT;AACA,WAAO,MAAM,cAAc,KAAK;AAAA,EAClC,GAAG,CAAC,cAAc,CAAC;AAErB,QAAM,2BAA2B,YAAY;AAC3C,QAAI,CAAC,SAAS,eAAe,iBAAiB,KAAK,kBAAkB,oBAAqB;AAE1F,QAAI;AACF,qBAAe,IAAI;AACnB,eAAS,EAAE;AACX,iBAAW,EAAE;AAEb,YAAM,SAAS,MAAM,wBAAwB;AAE7C,UAAI,OAAO,SAAS;AAChB,YAAI,OAAO,YAAY;AAErB,qBAAW,OAAO,OAAO;AACzB,qBAAW,MAAM;AACf,mBAAO,KAAK,UAAU;AAAA,UACxB,GAAG,GAAI;AAAA,QACT,OAAO;AAEL,qBAAW,OAAO,OAAO;AACzB,4BAAkB,CAAC,SAAS,OAAO,CAAC;AACpC,4BAAkB,eAAe;AAAA,QACnC;AAAA,MACF;AAAA,IAEJ,SAASA,QAAO;AACd,eAAS,wDAAwD;AAAA,IACnE,UAAE;AACA,qBAAe,KAAK;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,yBAAyB,MAAM;AACnC,WAAO,KAAK,UAAU;AAAA,EACxB;AAEA,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,SACE,qBAAC,SAAI,WAAU,8FACb;AAAA,wBAAC,kBAAe;AAAA,IAEhB;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QAEA;AAAA,8BAAC,eAAY,WAAU,gBAAe;AAAA,UAAE;AAAA;AAAA;AAAA,IAE1C;AAAA,IAEA,qBAAC,QAAK,WAAU,2BACd;AAAA,2BAAC,cAAW,WAAU,aACpB;AAAA,4BAAC,SAAI,WAAU,4BACb,+BAAC,SAAI,WAAU,YACb;AAAA,8BAAC,SAAI,WAAU,wDAAuD;AAAA,UACtE,oBAAC,SAAI,WAAU,2CACb,8BAAC,aAAU,WAAU,wBAAuB,GAC9C;AAAA,WACF,GACF;AAAA,QACA,oBAAC,aAAU,WAAU,iDAAgD,8BAAgB;AAAA,QACrF,qBAAC,mBAAgB,WAAU,eAAc;AAAA;AAAA,UAEvC,oBAAC,QAAG;AAAA,UACJ,oBAAC,UAAK,WAAU,eAAe,iBAAM;AAAA,WACvC;AAAA,SACF;AAAA,MAEA,qBAAC,eAAY,WAAU,iBACpB;AAAA,iBACC,oBAAC,SAAM,SAAQ,eAAc,WAAU,yBACrC,8BAAC,oBAAkB,iBAAM,GAC3B;AAAA,QAGb,WACC;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,WAAW;AAAA,cACT;AAAA,cACA,QAAQ,SAAS,kBAAkB,IAAI,gBAAgB;AAAA,YACzD;AAAA,YAEA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW,QAAQ,SAAS,kBAAkB,IAAI,mBAAmB;AAAA,gBAEpE;AAAA;AAAA,YACH;AAAA;AAAA,QACF;AAAA,QAGU,qBAAC,SAAI,WAAU,aACb;AAAA,8BAAC,SAAI,WAAU,8BACb,+BAAC,SAAI,WAAU,8BACb;AAAA,gCAAC,SAAI,WAAU,QACb,8BAAC,aAAU,WAAU,iCAAgC,GACvD;AAAA,YACA,qBAAC,SAAI,WAAU,oBACb;AAAA,kCAAC,OAAE,WAAU,uBAAsB,+BAAiB;AAAA,cACpD,oBAAC,OAAE,WAAU,iCAAgC,wGAE7C;AAAA,eACF;AAAA,aACF,GACF;AAAA,UAEA,qBAAC,UAAO,SAAS,wBAAwB,WAAU,UAAS,SAAQ,WAAU;AAAA;AAAA,YAE5E,oBAAC,cAAW,WAAU,gBAAe;AAAA,aACvC;AAAA,UAEA,oBAAC,aAAU;AAAA,UAEX,oBAAC,SAAI,WAAU,aACb,+BAAC,SAAI,WAAU,aACb;AAAA,iCAAC,OAAE,WAAU,6CAA4C;AAAA;AAAA,cAEtD,iBAAiB,KAAK,OAAO,cAAc;AAAA,eAC9C;AAAA,YACC,kBAAkB,sBACjB,oBAAC,SACC,8BAAC,oBAAiB,8FAElB,GACF,IAEA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAS;AAAA,gBACT,WAAU;AAAA,gBACV,UAAU,eAAe,iBAAiB,KAAK,kBAAkB;AAAA,gBAEhE,wBACC,iCACE;AAAA,sCAAC,WAAQ,WAAU,6BAA4B;AAAA,kBAAE;AAAA,mBAEnD,IAEA,iCACE;AAAA,sCAAC,aAAU,WAAU,gBAAe;AAAA,kBAAE;AAAA,kBAErC,iBAAiB,KAAK,KAAK,sBAAsB,cAAc;AAAA,mBAClE;AAAA;AAAA,YAEJ;AAAA,aAEJ,GACF;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;","names":["error"]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=utils.d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,9 +0,0 @@
1
- import { clsx } from "clsx";
2
- import { twMerge } from "tailwind-merge";
3
- function cn(...inputs) {
4
- return twMerge(clsx(inputs));
5
- }
6
- export {
7
- cn
8
- };
9
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n"],"mappings":"AAAA,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;","names":[]}
@@ -1,27 +0,0 @@
1
- import React from 'react';
2
- import { User } from "firebase/auth";
3
- /**
4
- * @internal
5
- * Internal provider props - not meant for direct usage
6
- */
7
- interface TernSecureClientProviderProps {
8
- children: React.ReactNode;
9
- /** Callback when user state changes */
10
- onUserChanged?: (user: User | null) => Promise<void>;
11
- /** Login page path */
12
- loginPath?: string;
13
- /** Signup page path */
14
- signUpPath?: string;
15
- /** Custom loading component */
16
- loadingComponent?: React.ReactNode;
17
- /** Whether email verification is required */
18
- requiresVerification: boolean;
19
- }
20
- /**
21
- * @internal
22
- * Internal provider component that handles authentication state
23
- * This is wrapped by the public TernSecureProvider
24
- */
25
- export declare function TernSecureClientProvider({ children, loginPath, signUpPath, loadingComponent, requiresVerification, }: TernSecureClientProviderProps): import("react/jsx-runtime").JSX.Element;
26
- export {};
27
- //# sourceMappingURL=TernSecureClientProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TernSecureClientProvider.d.ts","sourceRoot":"","sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAExE,OAAO,EAAsB,IAAI,EAAE,MAAM,eAAe,CAAA;AAUxD;;;GAGG;AACH,UAAU,6BAA6B;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,uCAAuC;IACvC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,6CAA6C;IAC7C,oBAAoB,EAAE,OAAO,CAAA;CAC9B;AAED;;;;GAIG;AAEH,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,SAA8D,EAC9D,UAA+D,EAC/D,gBAAgB,EAChB,oBAAoB,GACrB,EAAE,6BAA6B,2CAqP/B"}
@@ -1,11 +0,0 @@
1
- import type { TernSecureState, SignInResponse, TernSecureUser } from '../types';
2
- export declare const getCurrentUser: () => TernSecureUser | null;
3
- export interface TernSecureCtxValue extends TernSecureState {
4
- signOut: () => Promise<void>;
5
- setEmail: (email: string) => void;
6
- getAuthError: () => SignInResponse;
7
- redirectToLogin: () => void;
8
- }
9
- export declare const TernSecureCtx: import("react").Context<TernSecureCtxValue | null>;
10
- export declare const useTernSecure: (hookName: string) => TernSecureCtxValue;
11
- //# sourceMappingURL=TernSecureCtx.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TernSecureCtx.d.ts","sourceRoot":"","sources":["../../../src/boundary/TernSecureCtx.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGhF,eAAO,MAAM,cAAc,QAAO,cAAc,GAAG,IAElD,CAAA;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IAC1D,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,YAAY,EAAE,MAAM,cAAc,CAAA;IAClC,eAAe,EAAE,MAAM,IAAI,CAAA;CAC3B;AAED,eAAO,MAAM,aAAa,oDAAiD,CAAA;AAI3E,eAAO,MAAM,aAAa,aAAc,MAAM,uBAU7C,CAAA"}
@@ -1,15 +0,0 @@
1
- import type { SignInResponse } from '../../types';
2
- export declare function useAuth(): {
3
- user: import("firebase/auth").User | null;
4
- userId: string | null;
5
- isLoaded: boolean;
6
- error: SignInResponse | null;
7
- isValid: boolean;
8
- isVerified: boolean;
9
- isAuthenticated: boolean;
10
- token: any;
11
- status: "loading" | "authenticated" | "unauthenticated" | "unverified";
12
- requiresVerification: boolean;
13
- signOut: () => Promise<void>;
14
- };
15
- //# sourceMappingURL=useAuth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../../src/boundary/hooks/useAuth.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAA;AAGjE,wBAAgB,OAAO;;;;;;;;;;;;EAgCtB"}
@@ -1,5 +0,0 @@
1
- export declare function useSignUp(): {
2
- email: string | null;
3
- setEmail: (email: string) => void;
4
- };
5
- //# sourceMappingURL=useSignUp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSignUp.d.ts","sourceRoot":"","sources":["../../../../src/boundary/hooks/useSignUp.ts"],"names":[],"mappings":"AAIA,wBAAgB,SAAS;;;EAUxB"}
@@ -1,2 +0,0 @@
1
- export declare function AuthBackground(): import("react/jsx-runtime").JSX.Element;
2
- //# sourceMappingURL=background.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../../src/components/background.tsx"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,4CAgC3B"}
@@ -1,18 +0,0 @@
1
- export interface SignInProps {
2
- redirectUrl?: string;
3
- onError?: (error: Error) => void;
4
- onSuccess?: () => void;
5
- className?: string;
6
- customStyles?: {
7
- card?: string;
8
- input?: string;
9
- button?: string;
10
- label?: string;
11
- separator?: string;
12
- title?: string;
13
- description?: string;
14
- socialButton?: string;
15
- };
16
- }
17
- export declare function SignIn({ redirectUrl, onError, onSuccess, className, customStyles }: SignInProps): import("react/jsx-runtime").JSX.Element;
18
- //# sourceMappingURL=sign-in.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sign-in.d.ts","sourceRoot":"","sources":["../../../src/components/sign-in.tsx"],"names":[],"mappings":"AA6BA,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAOD,wBAAgB,MAAM,CAAC,EACrB,WAAW,EACX,OAAO,EACP,SAAS,EACT,SAAS,EACT,YAAiB,EAClB,EAAE,WAAW,2CAgWb"}
@@ -1,14 +0,0 @@
1
- import { type ButtonProps } from './ui/button';
2
- type SignOutCustomProps = {
3
- children?: React.ReactNode;
4
- onError?: (error: Error) => void;
5
- onSignOutSuccess?: () => void;
6
- redirectPath?: string;
7
- className?: string;
8
- variant?: ButtonProps['variant'];
9
- size?: ButtonProps['size'];
10
- };
11
- type SignOutProps = Omit<ButtonProps, 'onClick'> & SignOutCustomProps;
12
- export declare function SignOutButton({ children, onError, onSignOutSuccess, redirectPath, className, variant, size, ...buttonProps }: SignOutProps): import("react/jsx-runtime").JSX.Element;
13
- export {};
14
- //# sourceMappingURL=sign-out-button.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sign-out-button.d.ts","sourceRoot":"","sources":["../../../src/components/sign-out-button.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAOtD,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAC3B,CAAA;AAED,KAAK,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,kBAAkB,CAAA;AAErE,wBAAgB,aAAa,CAAC,EAC5B,QAAqB,EACrB,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,WAAW,EACf,EAAE,YAAY,2CA8Cd"}
@@ -1,12 +0,0 @@
1
- interface SignOutLinkProps {
2
- children?: React.ReactNode;
3
- onError?: (error: Error) => void;
4
- onSignOutSuccess?: () => void;
5
- className?: string;
6
- activeClassName?: string;
7
- disabled?: boolean;
8
- redirectPath?: string;
9
- }
10
- export declare function SignOut({ children, onError, onSignOutSuccess, className, activeClassName, disabled, redirectPath, }: SignOutLinkProps): import("react/jsx-runtime").JSX.Element;
11
- export {};
12
- //# sourceMappingURL=sign-out.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sign-out.d.ts","sourceRoot":"","sources":["../../../src/components/sign-out.tsx"],"names":[],"mappings":"AAYA,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAqB,EACrB,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,QAAgB,EAChB,YAAY,GACb,EAAE,gBAAgB,2CAsDlB"}
@@ -1,11 +0,0 @@
1
- export interface SignUpProps {
2
- redirectUrl?: string;
3
- onError?: (error: Error) => void;
4
- onSuccess?: () => void;
5
- }
6
- export interface PasswordRequirement {
7
- text: string;
8
- satisfied: boolean;
9
- }
10
- export declare function SignUp({ redirectUrl, onError, onSuccess, }: SignUpProps): import("react/jsx-runtime").JSX.Element;
11
- //# sourceMappingURL=sign-up.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sign-up.d.ts","sourceRoot":"","sources":["../../../src/components/sign-up.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,WAAW;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;CACnB;AAGD,wBAAgB,MAAM,CAAC,EACnB,WAAW,EACX,OAAO,EACP,SAAS,GACX,EAAE,WAAW,2CA8Rd"}
@@ -1,9 +0,0 @@
1
- import * as React from "react";
2
- import { type VariantProps } from "class-variance-authority";
3
- declare const Alert: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
4
- variant?: "destructive" | "default" | null | undefined;
5
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLDivElement>>;
6
- declare const AlertTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLParagraphElement>>;
7
- declare const AlertDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
8
- export { Alert, AlertTitle, AlertDescription };
9
- //# sourceMappingURL=alert.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/alert.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAoBjE,QAAA,MAAM,KAAK;;2HAUT,CAAA;AAGF,QAAA,MAAM,UAAU,uHASd,CAAA;AAGF,QAAA,MAAM,gBAAgB,yHASpB,CAAA;AAGF,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAA"}
@@ -1,12 +0,0 @@
1
- import * as React from "react";
2
- import { type VariantProps } from "class-variance-authority";
3
- declare const buttonVariants: (props?: ({
4
- variant?: "destructive" | "default" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
5
- size?: "default" | "sm" | "lg" | "icon" | null | undefined;
6
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
7
- export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
8
- asChild?: boolean;
9
- }
10
- declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
11
- export { Button, buttonVariants };
12
- //# sourceMappingURL=button.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,cAAc;;;mFA4BnB,CAAA;AAED,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EACnD,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,QAAA,MAAM,MAAM,uFAWX,CAAA;AAGD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
@@ -1,9 +0,0 @@
1
- import * as React from "react";
2
- declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
3
- declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
4
- declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
5
- declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
6
- declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
7
- declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
8
- export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };
9
- //# sourceMappingURL=card.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,QAAA,MAAM,IAAI,6GAYR,CAAA;AAGF,QAAA,MAAM,UAAU,6GASd,CAAA;AAGF,QAAA,MAAM,SAAS,6GASb,CAAA;AAGF,QAAA,MAAM,eAAe,6GASnB,CAAA;AAGF,QAAA,MAAM,WAAW,6GAKf,CAAA;AAGF,QAAA,MAAM,UAAU,6GASd,CAAA;AAGF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,CAAA"}
@@ -1,4 +0,0 @@
1
- import * as React from "react";
2
- declare const Input: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
3
- export { Input };
4
- //# sourceMappingURL=input.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,QAAA,MAAM,KAAK,8KAcV,CAAA;AAGD,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -1,6 +0,0 @@
1
- import * as React from "react";
2
- import * as LabelPrimitive from "@radix-ui/react-label";
3
- import { type VariantProps } from "class-variance-authority";
4
- declare const Label: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string> & React.RefAttributes<HTMLLabelElement>>;
5
- export { Label };
6
- //# sourceMappingURL=label.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAQjE,QAAA,MAAM,KAAK,iQAUT,CAAA;AAGF,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -1,5 +0,0 @@
1
- import * as React from "react";
2
- import * as SeparatorPrimitive from "@radix-ui/react-separator";
3
- declare const Separator: React.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
4
- export { Separator };
5
- //# sourceMappingURL=separator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/separator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAA;AAI/D,QAAA,MAAM,SAAS,6JAoBd,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -1,2 +0,0 @@
1
- export declare function Verify(): import("react/jsx-runtime").JSX.Element | null;
2
- //# sourceMappingURL=verify.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/components/verify.tsx"],"names":[],"mappings":"AAmBA,wBAAgB,MAAM,mDAwLnB"}
@@ -1,3 +0,0 @@
1
- import { type ClassValue } from "clsx";
2
- export declare function cn(...inputs: ClassValue[]): string;
3
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAA;AAG5C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -1,5 +0,0 @@
1
- {
2
- "main": "../dist/cjs/app-router/server/index.js",
3
- "module": "../dist/esm/app-router/server/index.js",
4
- "types": "../dist/types/app-router/server/index.d.ts"
5
- }