@tern-secure/nextjs 3.3.2 → 3.3.5

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 (173) hide show
  1. package/README.md +33 -33
  2. package/package.json +79 -79
  3. package/dist/cjs/app-router/client/TernSecureProvider.js +0 -33
  4. package/dist/cjs/app-router/client/TernSecureProvider.js.map +0 -1
  5. package/dist/cjs/app-router/client/actions.js +0 -97
  6. package/dist/cjs/app-router/client/actions.js.map +0 -1
  7. package/dist/cjs/app-router/server/auth.js +0 -71
  8. package/dist/cjs/app-router/server/auth.js.map +0 -1
  9. package/dist/cjs/app-router/server/index.js +0 -42
  10. package/dist/cjs/app-router/server/index.js.map +0 -1
  11. package/dist/cjs/app-router/server/sessionTernSecure.js +0 -159
  12. package/dist/cjs/app-router/server/sessionTernSecure.js.map +0 -1
  13. package/dist/cjs/app-router/server/ternSecureMiddleware.js +0 -50
  14. package/dist/cjs/app-router/server/ternSecureMiddleware.js.map +0 -1
  15. package/dist/cjs/boundary/TernSecureClientProvider.js +0 -94
  16. package/dist/cjs/boundary/TernSecureClientProvider.js.map +0 -1
  17. package/dist/cjs/boundary/TernSecureCtx.js +0 -49
  18. package/dist/cjs/boundary/TernSecureCtx.js.map +0 -1
  19. package/dist/cjs/boundary/hooks/useAuth.js +0 -51
  20. package/dist/cjs/boundary/hooks/useAuth.js.map +0 -1
  21. package/dist/cjs/boundary/hooks/useUser.js +0 -44
  22. package/dist/cjs/boundary/hooks/useUser.js.map +0 -1
  23. package/dist/cjs/components/background.js +0 -65
  24. package/dist/cjs/components/background.js.map +0 -1
  25. package/dist/cjs/components/sign-in.js +0 -243
  26. package/dist/cjs/components/sign-in.js.map +0 -1
  27. package/dist/cjs/components/sign-out.js +0 -69
  28. package/dist/cjs/components/sign-out.js.map +0 -1
  29. package/dist/cjs/components/ui/alert.js +0 -88
  30. package/dist/cjs/components/ui/alert.js.map +0 -1
  31. package/dist/cjs/components/ui/button.js +0 -84
  32. package/dist/cjs/components/ui/button.js.map +0 -1
  33. package/dist/cjs/components/ui/card.js +0 -101
  34. package/dist/cjs/components/ui/card.js.map +0 -1
  35. package/dist/cjs/components/ui/input.js +0 -58
  36. package/dist/cjs/components/ui/input.js.map +0 -1
  37. package/dist/cjs/components/ui/label.js +0 -55
  38. package/dist/cjs/components/ui/label.js.map +0 -1
  39. package/dist/cjs/components/ui/separator.js +0 -59
  40. package/dist/cjs/components/ui/separator.js.map +0 -1
  41. package/dist/cjs/errors.js +0 -41
  42. package/dist/cjs/errors.js.map +0 -1
  43. package/dist/cjs/index.js +0 -56
  44. package/dist/cjs/index.js.map +0 -1
  45. package/dist/cjs/lib/utils.d.js +0 -17
  46. package/dist/cjs/lib/utils.d.js.map +0 -1
  47. package/dist/cjs/lib/utils.js +0 -33
  48. package/dist/cjs/lib/utils.js.map +0 -1
  49. package/dist/cjs/types.js +0 -17
  50. package/dist/cjs/types.js.map +0 -1
  51. package/dist/cjs/utils/admin-init.js +0 -57
  52. package/dist/cjs/utils/admin-init.js.map +0 -1
  53. package/dist/cjs/utils/client-init.js +0 -49
  54. package/dist/cjs/utils/client-init.js.map +0 -1
  55. package/dist/cjs/utils/config.js +0 -113
  56. package/dist/cjs/utils/config.js.map +0 -1
  57. package/dist/cjs/utils/construct.js +0 -63
  58. package/dist/cjs/utils/construct.js.map +0 -1
  59. package/dist/cjs/utils/create-styles.js +0 -149
  60. package/dist/cjs/utils/create-styles.js.map +0 -1
  61. package/dist/esm/app-router/client/TernSecureProvider.js +0 -9
  62. package/dist/esm/app-router/client/TernSecureProvider.js.map +0 -1
  63. package/dist/esm/app-router/client/actions.js +0 -70
  64. package/dist/esm/app-router/client/actions.js.map +0 -1
  65. package/dist/esm/app-router/server/auth.js +0 -47
  66. package/dist/esm/app-router/server/auth.js.map +0 -1
  67. package/dist/esm/app-router/server/index.js +0 -13
  68. package/dist/esm/app-router/server/index.js.map +0 -1
  69. package/dist/esm/app-router/server/sessionTernSecure.js +0 -129
  70. package/dist/esm/app-router/server/sessionTernSecure.js.map +0 -1
  71. package/dist/esm/app-router/server/ternSecureMiddleware.js +0 -26
  72. package/dist/esm/app-router/server/ternSecureMiddleware.js.map +0 -1
  73. package/dist/esm/boundary/TernSecureClientProvider.js +0 -70
  74. package/dist/esm/boundary/TernSecureClientProvider.js.map +0 -1
  75. package/dist/esm/boundary/TernSecureCtx.js +0 -23
  76. package/dist/esm/boundary/TernSecureCtx.js.map +0 -1
  77. package/dist/esm/boundary/hooks/useAuth.js +0 -27
  78. package/dist/esm/boundary/hooks/useAuth.js.map +0 -1
  79. package/dist/esm/boundary/hooks/useUser.js +0 -20
  80. package/dist/esm/boundary/hooks/useUser.js.map +0 -1
  81. package/dist/esm/components/background.js +0 -41
  82. package/dist/esm/components/background.js.map +0 -1
  83. package/dist/esm/components/sign-in.js +0 -219
  84. package/dist/esm/components/sign-in.js.map +0 -1
  85. package/dist/esm/components/sign-out.js +0 -45
  86. package/dist/esm/components/sign-out.js.map +0 -1
  87. package/dist/esm/components/ui/alert.js +0 -52
  88. package/dist/esm/components/ui/alert.js.map +0 -1
  89. package/dist/esm/components/ui/button.js +0 -49
  90. package/dist/esm/components/ui/button.js.map +0 -1
  91. package/dist/esm/components/ui/card.js +0 -62
  92. package/dist/esm/components/ui/card.js.map +0 -1
  93. package/dist/esm/components/ui/input.js +0 -24
  94. package/dist/esm/components/ui/input.js.map +0 -1
  95. package/dist/esm/components/ui/label.js +0 -21
  96. package/dist/esm/components/ui/label.js.map +0 -1
  97. package/dist/esm/components/ui/separator.js +0 -25
  98. package/dist/esm/components/ui/separator.js.map +0 -1
  99. package/dist/esm/errors.js +0 -16
  100. package/dist/esm/errors.js.map +0 -1
  101. package/dist/esm/index.js +0 -22
  102. package/dist/esm/index.js.map +0 -1
  103. package/dist/esm/lib/utils.d.js +0 -1
  104. package/dist/esm/lib/utils.d.js.map +0 -1
  105. package/dist/esm/lib/utils.js +0 -9
  106. package/dist/esm/lib/utils.js.map +0 -1
  107. package/dist/esm/types.js +0 -1
  108. package/dist/esm/types.js.map +0 -1
  109. package/dist/esm/utils/admin-init.js +0 -22
  110. package/dist/esm/utils/admin-init.js.map +0 -1
  111. package/dist/esm/utils/client-init.js +0 -22
  112. package/dist/esm/utils/client-init.js.map +0 -1
  113. package/dist/esm/utils/config.js +0 -84
  114. package/dist/esm/utils/config.js.map +0 -1
  115. package/dist/esm/utils/construct.js +0 -37
  116. package/dist/esm/utils/construct.js.map +0 -1
  117. package/dist/esm/utils/create-styles.js +0 -123
  118. package/dist/esm/utils/create-styles.js.map +0 -1
  119. package/dist/types/app-router/client/TernSecureProvider.d.ts +0 -26
  120. package/dist/types/app-router/client/TernSecureProvider.d.ts.map +0 -1
  121. package/dist/types/app-router/client/actions.d.ts +0 -39
  122. package/dist/types/app-router/client/actions.d.ts.map +0 -1
  123. package/dist/types/app-router/server/auth.d.ts +0 -7
  124. package/dist/types/app-router/server/auth.d.ts.map +0 -1
  125. package/dist/types/app-router/server/index.d.ts +0 -5
  126. package/dist/types/app-router/server/index.d.ts.map +0 -1
  127. package/dist/types/app-router/server/sessionTernSecure.d.ts +0 -37
  128. package/dist/types/app-router/server/sessionTernSecure.d.ts.map +0 -1
  129. package/dist/types/app-router/server/ternSecureMiddleware.d.ts +0 -7
  130. package/dist/types/app-router/server/ternSecureMiddleware.d.ts.map +0 -1
  131. package/dist/types/boundary/TernSecureClientProvider.d.ts +0 -11
  132. package/dist/types/boundary/TernSecureClientProvider.d.ts.map +0 -1
  133. package/dist/types/boundary/TernSecureCtx.d.ts +0 -15
  134. package/dist/types/boundary/TernSecureCtx.d.ts.map +0 -1
  135. package/dist/types/boundary/hooks/useAuth.d.ts +0 -11
  136. package/dist/types/boundary/hooks/useAuth.d.ts.map +0 -1
  137. package/dist/types/boundary/hooks/useUser.d.ts +0 -7
  138. package/dist/types/boundary/hooks/useUser.d.ts.map +0 -1
  139. package/dist/types/components/background.d.ts +0 -2
  140. package/dist/types/components/background.d.ts.map +0 -1
  141. package/dist/types/components/sign-in.d.ts +0 -18
  142. package/dist/types/components/sign-in.d.ts.map +0 -1
  143. package/dist/types/components/sign-out.d.ts +0 -10
  144. package/dist/types/components/sign-out.d.ts.map +0 -1
  145. package/dist/types/components/ui/alert.d.ts +0 -9
  146. package/dist/types/components/ui/alert.d.ts.map +0 -1
  147. package/dist/types/components/ui/button.d.ts +0 -12
  148. package/dist/types/components/ui/button.d.ts.map +0 -1
  149. package/dist/types/components/ui/card.d.ts +0 -9
  150. package/dist/types/components/ui/card.d.ts.map +0 -1
  151. package/dist/types/components/ui/input.d.ts +0 -4
  152. package/dist/types/components/ui/input.d.ts.map +0 -1
  153. package/dist/types/components/ui/label.d.ts +0 -6
  154. package/dist/types/components/ui/label.d.ts.map +0 -1
  155. package/dist/types/components/ui/separator.d.ts +0 -5
  156. package/dist/types/components/ui/separator.d.ts.map +0 -1
  157. package/dist/types/errors.d.ts +0 -9
  158. package/dist/types/errors.d.ts.map +0 -1
  159. package/dist/types/index.d.ts.map +0 -1
  160. package/dist/types/lib/utils.d.ts +0 -3
  161. package/dist/types/lib/utils.d.ts.map +0 -1
  162. package/dist/types/types.d.ts +0 -63
  163. package/dist/types/types.d.ts.map +0 -1
  164. package/dist/types/utils/admin-init.d.ts +0 -4
  165. package/dist/types/utils/admin-init.d.ts.map +0 -1
  166. package/dist/types/utils/client-init.d.ts +0 -5
  167. package/dist/types/utils/client-init.d.ts.map +0 -1
  168. package/dist/types/utils/config.d.ts +0 -35
  169. package/dist/types/utils/config.d.ts.map +0 -1
  170. package/dist/types/utils/construct.d.ts +0 -22
  171. package/dist/types/utils/construct.d.ts.map +0 -1
  172. package/dist/types/utils/create-styles.d.ts +0 -99
  173. package/dist/types/utils/create-styles.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/sessionTernSecure.ts"],"sourcesContent":["'use server'\r\n\r\nimport { cookies } from 'next/headers';\r\nimport { adminTernSecureAuth as adminAuth } from '../../utils/admin-init';\r\n\r\ninterface FirebaseAuthError extends Error {\r\n code?: string;\r\n}\r\n\r\nexport interface User {\r\n uid: string | null;\r\n email: string | null;\r\n }\r\n\r\nexport interface Session {\r\n user: User | null;\r\n token: string | null;\r\n error: Error | null;\r\n}\r\n\r\nexport async function createSessionCookie(idToken: string) {\r\n try {\r\n const expiresIn = 60 * 60 * 24 * 5 * 1000;\r\n const sessionCookie = await adminAuth.createSessionCookie(idToken, { expiresIn });\r\n\r\n const cookieStore = await cookies();\r\n cookieStore.set('_session_cookie', sessionCookie, {\r\n maxAge: expiresIn,\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n path: '/',\r\n });\r\n return { success: true, message: 'Session created' };\r\n } catch (error) {\r\n return { success: false, message: 'Failed to create session' };\r\n }\r\n}\r\n\r\n\r\n\r\nexport async function getServerSessionCookie() {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('_session_cookie')?.value;\r\n\r\n if (!sessionCookie) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decondeClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\r\n return {\r\n token: sessionCookie,\r\n userId: decondeClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\n\r\nexport async function getIdToken() {\r\n const cookieStore = await cookies();\r\n const token = cookieStore.get('_session_token')?.value;\r\n\r\n if (!token) {\r\n throw new Error('No session cookie found')\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifyIdToken(token)\r\n return {\r\n token: token,\r\n userId: decodedClaims.uid\r\n }\r\n } catch (error) {\r\n console.error('Error verifying session:', error)\r\n throw new Error('Invalid Session')\r\n }\r\n}\r\n\r\nexport async function setServerSession(token: string) {\r\n const cookieStore = await cookies();\r\n cookieStore.set('_session', token, {\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n sameSite: 'strict',\r\n maxAge: 60 * 60, // 1 hour\r\n path: '/',\r\n });\r\n }\r\n\r\n export async function verifyTernIdToken(token: string): Promise<{ valid: boolean; uid?: string; error?: string }> {\r\n try {\r\n const decodedToken = await adminAuth.verifyIdToken(token, true);\r\n return { valid: true, uid: decodedToken.uid };\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n const firebaseError = error as FirebaseAuthError;\r\n if (error.name === 'FirebaseAuthError') {\r\n // Handle specific Firebase Auth errors\r\n switch (firebaseError.code) {\r\n case 'auth/id-token-expired':\r\n return { valid: false, error: 'Token has expired' };\r\n case 'auth/id-token-revoked':\r\n return { valid: false, error: 'Token has been revoked' };\r\n case 'auth/user-disabled':\r\n return { valid: false, error: 'User account has been disabled' };\r\n default:\r\n return { valid: false, error: 'Invalid token' };\r\n }\r\n }\r\n }\r\n return { valid: false, error: 'Error verifying token' };\r\n }\r\n }\r\n \r\n\r\n export async function verifyTernSessionCookie(session: string): Promise<{ valid: boolean; uid?: any; error?: any }>{\r\n try {\r\n const res = await adminAuth.verifySessionCookie(session, true);\r\n if (res) {\r\n return { valid: true, uid: res.uid };\r\n } else {\r\n return { valid: false, error: 'Invalid session'};\r\n }\r\n } catch (error) {\r\n return {error: error, valid: false}\r\n }\r\n }\r\n\r\n\r\n export async function clearSessionCookie() {\r\n const cookieStore = await cookies()\r\n \r\n cookieStore.delete('_session_cookie')\r\n cookieStore.delete('_session_token')\r\n cookieStore.delete('_session')\r\n \r\n try {\r\n // Verify if there's an active session before revoking\r\n const sessionCookie = cookieStore.get('_session_cookie')?.value\r\n if (sessionCookie) {\r\n // Get the decoded claims to get the user's ID\r\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie)\r\n \r\n // Revoke all sessions for the user\r\n await adminAuth.revokeRefreshTokens(decodedClaims.uid)\r\n }\r\n \r\n return { success: true, message: 'Session cleared successfully' }\r\n } catch (error) {\r\n console.error('Error clearing session:', error)\r\n // Still return success even if revoking fails, as cookies are cleared\r\n return { success: true, message: 'Session cookies cleared' }\r\n }\r\n }\r\n\r\n\r\n\r\n/*\r\n export async function GET(request: NextRequest) {\r\n const cookieStore = await cookies();\r\n const sessionCookie = cookieStore.get('session')?.value\r\n \r\n if (!sessionCookie) {\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n \r\n try {\r\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\r\n return NextResponse.json({ isAuthenticated: true, user: decodedClaims }, { status: 200 })\r\n } catch (error) {\r\n console.error('Error verifying session cookie:', error)\r\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\r\n }\r\n }\r\n\r\n*/"],"mappings":"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","names":["adminAuth"]}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var ternSecureMiddleware_exports = {};
20
- __export(ternSecureMiddleware_exports, {
21
- ternSecureMiddleware: () => ternSecureMiddleware
22
- });
23
- module.exports = __toCommonJS(ternSecureMiddleware_exports);
24
- var import_server = require("next/server");
25
- var import_auth = require("./auth");
26
- function ternSecureMiddleware(options = {}) {
27
- const { publicPaths = [], redirectTo = "/login" } = options;
28
- return async function middleware(request) {
29
- const { pathname } = request.nextUrl;
30
- if (publicPaths.includes(pathname)) {
31
- return import_server.NextResponse.next();
32
- }
33
- try {
34
- const { userId, token, error } = await (0, import_auth.auth)();
35
- if (error || !userId || !token) {
36
- return import_server.NextResponse.redirect(new URL(redirectTo, request.url));
37
- }
38
- const response = import_server.NextResponse.next();
39
- return response;
40
- } catch (error) {
41
- console.error("Error in ternSecureMiddleware:", error);
42
- return import_server.NextResponse.redirect(new URL(redirectTo, request.url));
43
- }
44
- };
45
- }
46
- // Annotate the CommonJS export names for ESM import in node:
47
- 0 && (module.exports = {
48
- ternSecureMiddleware
49
- });
50
- //# sourceMappingURL=ternSecureMiddleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/app-router/server/ternSecureMiddleware.ts"],"sourcesContent":["import { NextRequest, NextResponse } from 'next/server';\r\nimport { auth } from './auth';\r\n\r\nexport interface TernSecureMiddlewareOptions {\r\n publicPaths?: string[];\r\n redirectTo?: string;\r\n}\r\n\r\nexport function ternSecureMiddleware(options: TernSecureMiddlewareOptions = {}) {\r\n const { publicPaths = [], redirectTo = '/login' } = options;\r\n\r\n return async function middleware(request: NextRequest) {\r\n const { pathname } = request.nextUrl;\r\n\r\n // Check if the path is public\r\n if (publicPaths.includes(pathname)) {\r\n return NextResponse.next();\r\n }\r\n\r\n try {\r\n const { userId, token, error } = await auth();\r\n\r\n if (error || !userId || !token) {\r\n // If there's no valid session, redirect to login\r\n return NextResponse.redirect(new URL(redirectTo, request.url));\r\n }\r\n\r\n // If there's a valid session, allow the request to proceed\r\n const response = NextResponse.next();\r\n \r\n // Optionally, you can set headers here if needed\r\n // response.headers.set('X-User-ID', userId);\r\n\r\n return response;\r\n } catch (error) {\r\n console.error('Error in ternSecureMiddleware:', error);\r\n return NextResponse.redirect(new URL(redirectTo, request.url));\r\n }\r\n };\r\n}\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA0C;AAC1C,kBAAqB;AAOd,SAAS,qBAAqB,UAAuC,CAAC,GAAG;AAC9E,QAAM,EAAE,cAAc,CAAC,GAAG,aAAa,SAAS,IAAI;AAEpD,SAAO,eAAe,WAAW,SAAsB;AACrD,UAAM,EAAE,SAAS,IAAI,QAAQ;AAG7B,QAAI,YAAY,SAAS,QAAQ,GAAG;AAClC,aAAO,2BAAa,KAAK;AAAA,IAC3B;AAEA,QAAI;AACF,YAAM,EAAE,QAAQ,OAAO,MAAM,IAAI,UAAM,kBAAK;AAE5C,UAAI,SAAS,CAAC,UAAU,CAAC,OAAO;AAE9B,eAAO,2BAAa,SAAS,IAAI,IAAI,YAAY,QAAQ,GAAG,CAAC;AAAA,MAC/D;AAGA,YAAM,WAAW,2BAAa,KAAK;AAKnC,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,MAAM,kCAAkC,KAAK;AACrD,aAAO,2BAAa,SAAS,IAAI,IAAI,YAAY,QAAQ,GAAG,CAAC;AAAA,IAC/D;AAAA,EACF;AACF;","names":[]}
@@ -1,94 +0,0 @@
1
- "use strict";
2
- "use client";
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
- var TernSecureClientProvider_exports = {};
21
- __export(TernSecureClientProvider_exports, {
22
- TernSecureClientProvider: () => TernSecureClientProvider
23
- });
24
- module.exports = __toCommonJS(TernSecureClientProvider_exports);
25
- var import_jsx_runtime = require("react/jsx-runtime");
26
- var import_react = require("react");
27
- var import_client_init = require("../utils/client-init");
28
- var import_auth = require("firebase/auth");
29
- var import_TernSecureCtx = require("./TernSecureCtx");
30
- var import_navigation = require("next/navigation");
31
- function TernSecureClientProvider({
32
- children,
33
- loginPath = "/sign-in",
34
- loadingComponent
35
- }) {
36
- const auth = (0, import_react.useMemo)(() => import_client_init.ternSecureAuth, []);
37
- const router = (0, import_navigation.useRouter)();
38
- const [authState, setAuthState] = (0, import_react.useState)(() => ({
39
- userId: null,
40
- isLoaded: false,
41
- error: null,
42
- isValid: false,
43
- token: null
44
- }));
45
- const handleSignOut = (0, import_react.useCallback)(async (error) => {
46
- await auth.signOut();
47
- setAuthState({
48
- isLoaded: true,
49
- userId: null,
50
- error: error || null,
51
- isValid: false,
52
- token: null
53
- });
54
- router.push(loginPath);
55
- }, [auth, router, loginPath]);
56
- (0, import_react.useEffect)(() => {
57
- const unsubscribe = (0, import_auth.onAuthStateChanged)(auth, async (user) => {
58
- if (user) {
59
- setAuthState({
60
- isLoaded: true,
61
- userId: user.uid,
62
- isValid: true,
63
- token: user.getIdToken(),
64
- error: null
65
- });
66
- } else {
67
- setAuthState({
68
- isLoaded: true,
69
- userId: null,
70
- isValid: false,
71
- token: null,
72
- error: new Error("User is not authenticated")
73
- });
74
- router.push(loginPath);
75
- }
76
- }, (error) => {
77
- handleSignOut(error instanceof Error ? error : new Error("Authentication error occurred"));
78
- });
79
- return () => unsubscribe();
80
- }, [auth, handleSignOut, router, loginPath]);
81
- const contextValue = (0, import_react.useMemo)(() => ({
82
- ...authState,
83
- signOut: handleSignOut
84
- }), [authState, auth, handleSignOut]);
85
- if (!authState.isLoaded) {
86
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TernSecureCtx.TernSecureCtx.Provider, { value: contextValue, children: loadingComponent || /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "aria-live": "polite", "aria-busy": "true", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sr-only", children: "Loading authentication state..." }) }) });
87
- }
88
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TernSecureCtx.TernSecureCtx.Provider, { value: contextValue, children });
89
- }
90
- // Annotate the CommonJS export names for ESM import in node:
91
- 0 && (module.exports = {
92
- TernSecureClientProvider
93
- });
94
- //# sourceMappingURL=TernSecureClientProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/boundary/TernSecureClientProvider.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React, { useState, useEffect, useMemo, useCallback } from 'react'\r\nimport { ternSecureAuth } from '../utils/client-init'\r\nimport { onAuthStateChanged, User } from \"firebase/auth\"\r\nimport { TernSecureCtx, TernSecureCtxValue, TernSecureState } from './TernSecureCtx'\r\nimport { useRouter } from 'next/navigation'\r\n\r\ninterface TernSecureClientProviderProps {\r\n children: React.ReactNode;\r\n onUserChanged?: (user: User | null) => Promise<void>;\r\n loginPath?: string;\r\n loadingComponent?: React.ReactNode;\r\n}\r\n\r\nexport function TernSecureClientProvider({ \r\n children, \r\n loginPath = '/sign-in',\r\n loadingComponent\r\n}: TernSecureClientProviderProps) {\r\n const auth = useMemo(() => ternSecureAuth, []);\r\n const router = useRouter();\r\n const [authState, setAuthState] = useState<TernSecureState>(() => ({\r\n userId: null,\r\n isLoaded: false,\r\n error: null,\r\n isValid: false,\r\n token: null\r\n }));\r\n\r\n const handleSignOut = useCallback(async (error?: Error) => {\r\n await auth.signOut();\r\n setAuthState({\r\n isLoaded: true,\r\n userId: null,\r\n error: error || null,\r\n isValid: false,\r\n token: null\r\n });\r\n router.push(loginPath);\r\n }, [auth, router, loginPath]);\r\n\r\nuseEffect(() => {\r\n const unsubscribe = onAuthStateChanged(auth, async (user: User | null) => {\r\n if (user) {\r\n setAuthState({\r\n isLoaded: true,\r\n userId: user.uid,\r\n isValid: true,\r\n token: user.getIdToken(),\r\n error: null\r\n })\r\n } else {\r\n setAuthState({\r\n isLoaded: true,\r\n userId: null,\r\n isValid: false,\r\n token: null,\r\n error: new Error('User is not authenticated')\r\n })\r\n router.push(loginPath);\r\n }\r\n }, (error) => {\r\n handleSignOut(error instanceof Error ? error : new Error('Authentication error occurred'));\r\n })\r\n \r\n return () => unsubscribe()\r\n }, [auth, handleSignOut, router, loginPath])\r\n\r\n const contextValue: TernSecureCtxValue = useMemo(() => ({\r\n ...authState,\r\n signOut: handleSignOut,\r\n }), [authState, auth, handleSignOut]);\r\n\r\n if (!authState.isLoaded) {\r\n return (\r\n <TernSecureCtx.Provider value={contextValue}>\r\n {loadingComponent || (\r\n <div aria-live=\"polite\" aria-busy=\"true\">\r\n <span className=\"sr-only\">Loading authentication state...</span>\r\n </div>\r\n )}\r\n </TernSecureCtx.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <TernSecureCtx.Provider value={contextValue}>\r\n {children}\r\n </TernSecureCtx.Provider>\r\n )\r\n}"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA+EY;AA7EZ,mBAAiE;AACjE,yBAA+B;AAC/B,kBAAyC;AACzC,2BAAmE;AACnE,wBAA0B;AASnB,SAAS,yBAAyB;AAAA,EACvC;AAAA,EACA,YAAY;AAAA,EACZ;AACF,GAAkC;AAChC,QAAM,WAAO,sBAAQ,MAAM,mCAAgB,CAAC,CAAC;AAC7C,QAAM,aAAS,6BAAU;AACzB,QAAM,CAAC,WAAW,YAAY,QAAI,uBAA0B,OAAO;AAAA,IACjE,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,IACT,OAAO;AAAA,EACT,EAAE;AAEF,QAAM,oBAAgB,0BAAY,OAAO,UAAkB;AACzD,UAAM,KAAK,QAAQ;AACnB,iBAAa;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO,SAAS;AAAA,MAChB,SAAS;AAAA,MACT,OAAO;AAAA,IACT,CAAC;AACD,WAAO,KAAK,SAAS;AAAA,EACvB,GAAG,CAAC,MAAM,QAAQ,SAAS,CAAC;AAE9B,8BAAU,MAAM;AACZ,UAAM,kBAAc,gCAAmB,MAAM,OAAO,SAAsB;AACxE,UAAI,MAAM;AACR,qBAAa;AAAA,UACX,UAAU;AAAA,UACV,QAAQ,KAAK;AAAA,UACb,SAAS;AAAA,UACT,OAAO,KAAK,WAAW;AAAA,UACvB,OAAO;AAAA,QACT,CAAC;AAAA,MACH,OAAO;AACL,qBAAa;AAAA,UACX,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,OAAO;AAAA,UACP,OAAO,IAAI,MAAM,2BAA2B;AAAA,QAC9C,CAAC;AACD,eAAO,KAAK,SAAS;AAAA,MACvB;AAAA,IACF,GAAG,CAAC,UAAU;AACZ,oBAAc,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,+BAA+B,CAAC;AAAA,IAC3F,CAAC;AAED,WAAO,MAAM,YAAY;AAAA,EAC3B,GAAG,CAAC,MAAM,eAAe,QAAQ,SAAS,CAAC;AAE3C,QAAM,mBAAmC,sBAAQ,OAAO;AAAA,IACtD,GAAG;AAAA,IACH,SAAS;AAAA,EACX,IAAI,CAAC,WAAW,MAAM,aAAa,CAAC;AAEpC,MAAI,CAAC,UAAU,UAAU;AACvB,WACE,4CAAC,mCAAc,UAAd,EAAuB,OAAO,cAC5B,8BACC,4CAAC,SAAI,aAAU,UAAS,aAAU,QAChC,sDAAC,UAAK,WAAU,WAAU,6CAA+B,GAC3D,GAEJ;AAAA,EAEJ;AAEA,SACI,4CAAC,mCAAc,UAAd,EAAuB,OAAO,cAC7B,UACF;AAEN;","names":[]}
@@ -1,49 +0,0 @@
1
- "use strict";
2
- "use client";
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
- var TernSecureCtx_exports = {};
21
- __export(TernSecureCtx_exports, {
22
- TernSecureCtx: () => TernSecureCtx,
23
- TernSecureUser: () => TernSecureUser,
24
- useTernSecure: () => useTernSecure
25
- });
26
- module.exports = __toCommonJS(TernSecureCtx_exports);
27
- var import_react = require("react");
28
- var import_client_init = require("../utils/client-init");
29
- const TernSecureUser = () => {
30
- return import_client_init.ternSecureAuth.currentUser;
31
- };
32
- const TernSecureCtx = (0, import_react.createContext)(null);
33
- TernSecureCtx.displayName = "TernSecureCtx";
34
- const useTernSecure = (hookName) => {
35
- const context = (0, import_react.useContext)(TernSecureCtx);
36
- if (!context) {
37
- throw new Error(
38
- `${hookName} must be used within TernSecureProvider`
39
- );
40
- }
41
- return context;
42
- };
43
- // Annotate the CommonJS export names for ESM import in node:
44
- 0 && (module.exports = {
45
- TernSecureCtx,
46
- TernSecureUser,
47
- useTernSecure
48
- });
49
- //# sourceMappingURL=TernSecureCtx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/boundary/TernSecureCtx.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport { createContext, useContext } from 'react'\r\nimport { ternSecureAuth } from '../utils/client-init';\r\nimport { User } from 'firebase/auth';\r\n\r\nexport const TernSecureUser = (): User | null => {\r\n return ternSecureAuth.currentUser;\r\n}\r\n\r\nexport interface TernSecureState {\r\n userId: string | null\r\n isLoaded: boolean\r\n error: Error | null\r\n isValid: boolean\r\n token: any | null\r\n}\r\n\r\nexport interface TernSecureCtxValue extends TernSecureState {\r\n //checkTokenValidity: () => Promise<void>;\r\n signOut: () => Promise<void>;\r\n}\r\n\r\nexport const TernSecureCtx = createContext<TernSecureCtxValue | null>(null)\r\n\r\nTernSecureCtx.displayName = 'TernSecureCtx'\r\n\r\nexport const useTernSecure = (hookName: string) => {\r\n const context = useContext(TernSecureCtx)\r\n \r\n if (!context) {\r\n throw new Error(\r\n `${hookName} must be used within TernSecureProvider`\r\n )\r\n }\r\n\r\n return context\r\n}\r\n\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA0C;AAC1C,yBAA+B;AAGxB,MAAM,iBAAiB,MAAmB;AAC/C,SAAO,kCAAe;AACxB;AAeO,MAAM,oBAAgB,4BAAyC,IAAI;AAE1E,cAAc,cAAc;AAErB,MAAM,gBAAgB,CAAC,aAAqB;AACjD,QAAM,cAAU,yBAAW,aAAa;AAExC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR,GAAG,QAAQ;AAAA,IACb;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -1,51 +0,0 @@
1
- "use strict";
2
- "use client";
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
- var useAuth_exports = {};
21
- __export(useAuth_exports, {
22
- useAuth: () => useAuth
23
- });
24
- module.exports = __toCommonJS(useAuth_exports);
25
- var import_TernSecureCtx = require("../TernSecureCtx");
26
- var import_TernSecureCtx2 = require("../TernSecureCtx");
27
- function useAuth() {
28
- const {
29
- userId,
30
- isLoaded,
31
- error,
32
- isValid,
33
- token,
34
- signOut
35
- } = (0, import_TernSecureCtx.useTernSecure)("useAuth");
36
- const user = (0, import_TernSecureCtx2.TernSecureUser)();
37
- return {
38
- user,
39
- userId,
40
- isLoaded,
41
- error,
42
- isAuthenticated: isValid,
43
- token,
44
- signOut
45
- };
46
- }
47
- // Annotate the CommonJS export names for ESM import in node:
48
- 0 && (module.exports = {
49
- useAuth
50
- });
51
- //# sourceMappingURL=useAuth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/boundary/hooks/useAuth.ts"],"sourcesContent":["\"use client\"\r\n\r\nimport { useTernSecure } from '../TernSecureCtx'\r\nimport { User } from 'firebase/auth'\r\nimport { TernSecureUser } from '../TernSecureCtx'\r\n\r\nexport function useAuth() {\r\n const {\r\n userId,\r\n isLoaded,\r\n error,\r\n isValid,\r\n token,\r\n signOut\r\n } = useTernSecure('useAuth')\r\n\r\n const user: User | null = TernSecureUser()\r\n\r\n return {\r\n user,\r\n userId,\r\n isLoaded,\r\n error,\r\n isAuthenticated: isValid,\r\n token,\r\n signOut\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,2BAA8B;AAE9B,IAAAA,wBAA+B;AAExB,SAAS,UAAU;AACxB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,oCAAc,SAAS;AAE3B,QAAM,WAAoB,sCAAe;AAEzC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,EACF;AACF;","names":["import_TernSecureCtx"]}
@@ -1,44 +0,0 @@
1
- "use strict";
2
- "use client";
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
- var useUser_exports = {};
21
- __export(useUser_exports, {
22
- useUser: () => useUser
23
- });
24
- module.exports = __toCommonJS(useUser_exports);
25
- var import_auth = require("firebase/auth");
26
- var import_react = require("react");
27
- var import_client_init = require("../../utils/client-init");
28
- function useUser() {
29
- const [user, setUser] = (0, import_react.useState)(null);
30
- const [loading, setLoading] = (0, import_react.useState)(true);
31
- (0, import_react.useEffect)(() => {
32
- const unsubscribe = (0, import_auth.onAuthStateChanged)(import_client_init.ternSecureAuth, (authUser) => {
33
- setUser(authUser);
34
- setLoading(false);
35
- });
36
- return () => unsubscribe();
37
- }, []);
38
- return { user, loading };
39
- }
40
- // Annotate the CommonJS export names for ESM import in node:
41
- 0 && (module.exports = {
42
- useUser
43
- });
44
- //# sourceMappingURL=useUser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/boundary/hooks/useUser.ts"],"sourcesContent":["\"use client\";\r\n\r\nimport { onAuthStateChanged } from \"firebase/auth\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nimport { ternSecureAuth} from \"../../utils/client-init\";\r\n\r\ninterface UseUserReturn {\r\n user: any | null;\r\n loading: boolean;\r\n }\r\n\r\nexport function useUser(): UseUserReturn {\r\n const [user, setUser] = useState<any| null>(null);\r\n const [loading, setLoading] = useState(true);\r\n\r\n useEffect(() => {\r\n const unsubscribe = onAuthStateChanged(ternSecureAuth, (authUser) => {\r\n setUser(authUser);\r\n setLoading(false);\r\n });\r\n\r\n return () => unsubscribe();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return {user, loading};\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,kBAAmC;AACnC,mBAAoC;AAEpC,yBAA8B;AAOvB,SAAS,UAAyB;AACvC,QAAM,CAAC,MAAM,OAAO,QAAI,uBAAoB,IAAI;AAChD,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAS,IAAI;AAE3C,8BAAU,MAAM;AACd,UAAM,kBAAc,gCAAmB,mCAAgB,CAAC,aAAa;AACnE,cAAQ,QAAQ;AAChB,iBAAW,KAAK;AAAA,IAClB,CAAC;AAED,WAAO,MAAM,YAAY;AAAA,EAE3B,GAAG,CAAC,CAAC;AAEL,SAAO,EAAC,MAAM,QAAO;AACvB;","names":[]}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var background_exports = {};
20
- __export(background_exports, {
21
- AuthBackground: () => AuthBackground
22
- });
23
- module.exports = __toCommonJS(background_exports);
24
- var import_jsx_runtime = require("react/jsx-runtime");
25
- function AuthBackground() {
26
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
27
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
28
- "div",
29
- {
30
- className: "absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80",
31
- "aria-hidden": "true",
32
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
33
- "div",
34
- {
35
- className: "relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 rotate-[30deg] bg-gradient-to-tr from-[#ff80b5] to-[#9089fc] opacity-30 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]",
36
- style: {
37
- clipPath: "polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)"
38
- }
39
- }
40
- )
41
- }
42
- ),
43
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
44
- "div",
45
- {
46
- className: "absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-30rem)]",
47
- "aria-hidden": "true",
48
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
49
- "div",
50
- {
51
- className: "relative left-[calc(50%+3rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 bg-gradient-to-tr from-[hsl(var(--secondary)_/_0.3)] to-[hsl(var(--primary)_/_0.3)] opacity-30 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]",
52
- style: {
53
- clipPath: "polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)"
54
- }
55
- }
56
- )
57
- }
58
- )
59
- ] });
60
- }
61
- // Annotate the CommonJS export names for ESM import in node:
62
- 0 && (module.exports = {
63
- AuthBackground
64
- });
65
- //# sourceMappingURL=background.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/background.tsx"],"sourcesContent":["export function AuthBackground() {\r\n return (\r\n <>\r\n {/* Primary gradient blob */}\r\n <div\r\n className=\"absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80\"\r\n aria-hidden=\"true\"\r\n >\r\n <div\r\n className=\"relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 rotate-[30deg] bg-gradient-to-tr from-[#ff80b5] to-[#9089fc] opacity-30 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]\"\r\n style={{\r\n clipPath:\r\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\r\n }}\r\n />\r\n </div>\r\n \r\n {/* Secondary gradient blob */}\r\n <div\r\n className=\"absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-30rem)]\"\r\n aria-hidden=\"true\"\r\n >\r\n <div\r\n className=\"relative left-[calc(50%+3rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 bg-gradient-to-tr from-[hsl(var(--secondary)_/_0.3)] to-[hsl(var(--primary)_/_0.3)] opacity-30 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]\"\r\n style={{\r\n clipPath:\r\n 'polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)',\r\n }}\r\n />\r\n </div>\r\n </>\r\n )\r\n }\r\n \r\n "],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEM;AAFC,SAAS,iBAAiB;AAC7B,SACE,4EAEE;AAAA;AAAA,MAAC;AAAA;AAAA,QACG,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IAGF;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAY;AAAA,QAEZ;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO;AAAA,cACL,UACE;AAAA,YACJ;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}