@tern-secure/nextjs 3.1.20 → 3.1.21

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 (112) hide show
  1. package/dist/app-router/client/auth.d.ts +7 -0
  2. package/dist/app-router/client/auth.d.ts.map +1 -0
  3. package/dist/app-router/client/auth.js +7 -0
  4. package/dist/app-router/client/auth.js.map +1 -0
  5. package/dist/app-router/client/client-init.d.ts +4 -9
  6. package/dist/app-router/client/client-init.d.ts.map +1 -0
  7. package/dist/app-router/client/client-init.js +17 -3
  8. package/dist/app-router/client/client-init.js.map +1 -1
  9. package/dist/app-router/client/config.d.ts +4 -2
  10. package/dist/app-router/client/config.d.ts.map +1 -0
  11. package/dist/app-router/client/config.js +17 -2
  12. package/dist/app-router/client/config.js.map +1 -1
  13. package/dist/app-router/client/index.d.ts +7 -24
  14. package/dist/app-router/client/index.d.ts.map +1 -0
  15. package/dist/app-router/client/index.js +5 -5
  16. package/dist/app-router/client/index.js.map +1 -1
  17. package/dist/app-router/client/providers/ternSecureClientProvider.d.ts +5 -0
  18. package/dist/app-router/client/providers/ternSecureClientProvider.d.ts.map +1 -0
  19. package/dist/app-router/client/providers/ternSecureClientProvider.js +9 -0
  20. package/dist/app-router/client/providers/ternSecureClientProvider.js.map +1 -0
  21. package/dist/app-router/client/providers/ternSecureContext.d.ts +7 -0
  22. package/dist/app-router/client/providers/ternSecureContext.d.ts.map +1 -0
  23. package/dist/app-router/client/providers/ternSecureContext.js +24 -0
  24. package/dist/app-router/client/providers/ternSecureContext.js.map +1 -0
  25. package/dist/app-router/server/index.d.ts +2 -9
  26. package/dist/app-router/server/index.d.ts.map +1 -0
  27. package/dist/app-router/server/index.js +1 -2
  28. package/dist/app-router/server/index.js.map +1 -1
  29. package/dist/app-router/server/providers/TernSecureServerProvider.d.ts +7 -0
  30. package/dist/app-router/server/providers/TernSecureServerProvider.d.ts.map +1 -0
  31. package/dist/app-router/server/providers/TernSecureServerProvider.js +31 -0
  32. package/dist/app-router/server/providers/TernSecureServerProvider.js.map +1 -0
  33. package/dist/components/index.d.ts +2 -25
  34. package/dist/components/index.d.ts.map +1 -0
  35. package/dist/components/index.js +1 -6
  36. package/dist/components/index.js.map +1 -1
  37. package/dist/components/{index.d.cts → sign-in.d.ts} +3 -6
  38. package/dist/components/sign-in.d.ts.map +1 -0
  39. package/dist/components/sign-in.js +32 -0
  40. package/dist/components/sign-in.js.map +1 -0
  41. package/dist/errors/index.d.ts +9 -0
  42. package/dist/errors/index.d.ts.map +1 -0
  43. package/dist/errors/index.js +12 -0
  44. package/dist/errors/index.js.map +1 -0
  45. package/dist/hooks/index.d.ts +2 -0
  46. package/dist/hooks/index.d.ts.map +1 -0
  47. package/dist/hooks/index.js +2 -0
  48. package/dist/hooks/index.js.map +1 -0
  49. package/dist/hooks/useAuth.d.ts +2 -0
  50. package/dist/hooks/useAuth.d.ts.map +1 -0
  51. package/dist/hooks/useAuth.js +58 -0
  52. package/dist/hooks/useAuth.js.map +1 -0
  53. package/dist/index.d.ts +5 -16
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +4 -69
  56. package/dist/index.js.map +1 -1
  57. package/dist/types/index.d.ts +41 -0
  58. package/dist/types/index.d.ts.map +1 -0
  59. package/dist/types/index.js +2 -0
  60. package/dist/types/index.js.map +1 -0
  61. package/dist/utils/create-styles.d.ts +99 -0
  62. package/dist/utils/create-styles.d.ts.map +1 -0
  63. package/dist/utils/create-styles.js +127 -0
  64. package/dist/utils/create-styles.js.map +1 -0
  65. package/package.json +2 -2
  66. package/dist/app-router/client/client-init.cjs +0 -21
  67. package/dist/app-router/client/client-init.cjs.map +0 -1
  68. package/dist/app-router/client/client-init.d.cts +0 -9
  69. package/dist/app-router/client/config.cjs +0 -16
  70. package/dist/app-router/client/config.cjs.map +0 -1
  71. package/dist/app-router/client/config.d.cts +0 -2
  72. package/dist/app-router/client/index.cjs +0 -47
  73. package/dist/app-router/client/index.cjs.map +0 -1
  74. package/dist/app-router/client/index.d.cts +0 -24
  75. package/dist/app-router/server/index.cjs +0 -12
  76. package/dist/app-router/server/index.cjs.map +0 -1
  77. package/dist/app-router/server/index.d.cts +0 -9
  78. package/dist/chunk-2RTGO3FB.js +0 -36
  79. package/dist/chunk-2RTGO3FB.js.map +0 -1
  80. package/dist/chunk-567EYYS7.js +0 -227
  81. package/dist/chunk-567EYYS7.js.map +0 -1
  82. package/dist/chunk-6XOKZ6YG.cjs +0 -17
  83. package/dist/chunk-6XOKZ6YG.cjs.map +0 -1
  84. package/dist/chunk-7TODKHXS.cjs +0 -229
  85. package/dist/chunk-7TODKHXS.cjs.map +0 -1
  86. package/dist/chunk-ANTUVB2P.cjs +0 -26
  87. package/dist/chunk-ANTUVB2P.cjs.map +0 -1
  88. package/dist/chunk-PLJ3DA5F.js +0 -45
  89. package/dist/chunk-PLJ3DA5F.js.map +0 -1
  90. package/dist/chunk-R3PDNT2L.js +0 -22
  91. package/dist/chunk-R3PDNT2L.js.map +0 -1
  92. package/dist/chunk-V2REFIUV.js +0 -24
  93. package/dist/chunk-V2REFIUV.js.map +0 -1
  94. package/dist/chunk-VNNJ5ANT.cjs +0 -27
  95. package/dist/chunk-VNNJ5ANT.cjs.map +0 -1
  96. package/dist/chunk-WR6O4YMW.cjs +0 -44
  97. package/dist/chunk-WR6O4YMW.cjs.map +0 -1
  98. package/dist/chunk-YMR72FHE.cjs +0 -52
  99. package/dist/chunk-YMR72FHE.cjs.map +0 -1
  100. package/dist/chunk-YSFNR6DO.js +0 -15
  101. package/dist/chunk-YSFNR6DO.js.map +0 -1
  102. package/dist/components/index.cjs +0 -16
  103. package/dist/components/index.cjs.map +0 -1
  104. package/dist/config-CYswigMN.d.cts +0 -30
  105. package/dist/config-CYswigMN.d.ts +0 -30
  106. package/dist/index.cjs +0 -114
  107. package/dist/index.cjs.map +0 -1
  108. package/dist/index.d.cts +0 -16
  109. package/dist/ternSecureClientProvider-DXLMGG2U.cjs +0 -12
  110. package/dist/ternSecureClientProvider-DXLMGG2U.cjs.map +0 -1
  111. package/dist/ternSecureClientProvider-OJMAWZZ2.js +0 -3
  112. package/dist/ternSecureClientProvider-OJMAWZZ2.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,70 +1,5 @@
1
- export { SignIn } from './chunk-567EYYS7.js';
2
- export { signInWithEmail } from './chunk-YSFNR6DO.js';
3
- import { TernSecureAuth } from './chunk-R3PDNT2L.js';
4
- export { TernSecureAuth, TernSecureFirestore, TernSecureStorage } from './chunk-R3PDNT2L.js';
5
- export { loadFireConfig, validateConfig } from './chunk-V2REFIUV.js';
6
- export { TernSecureProvider } from './chunk-PLJ3DA5F.js';
7
- import { useTernSecure } from './chunk-2RTGO3FB.js';
8
- export { TernSecureClientProvider, TernSecureContext, useTernSecure } from './chunk-2RTGO3FB.js';
9
- import { useEffect } from 'react';
10
-
11
- /* eslint-disable */
12
- function useAuth() {
13
- const [state, setState] = useTernSecure("useAuth");
14
- useEffect(() => {
15
- try {
16
- const auth = TernSecureAuth();
17
- setState((prev) => ({
18
- ...prev,
19
- firebase: {
20
- initialized: true,
21
- error: null
22
- }
23
- }));
24
- const unsubscribe = auth.onAuthStateChanged(
25
- (user) => {
26
- setState((prev) => ({
27
- ...prev,
28
- auth: {
29
- user,
30
- loading: false,
31
- error: null,
32
- isSignedIn: !!user
33
- }
34
- }));
35
- },
36
- (error) => {
37
- setState((prev) => ({
38
- ...prev,
39
- auth: {
40
- user: null,
41
- loading: false,
42
- error,
43
- isSignedIn: false
44
- }
45
- }));
46
- }
47
- );
48
- return () => unsubscribe();
49
- } catch (error) {
50
- setState((prev) => ({
51
- ...prev,
52
- firebase: {
53
- initialized: false,
54
- error
55
- },
56
- auth: {
57
- user: null,
58
- loading: false,
59
- error,
60
- isSignedIn: false
61
- }
62
- }));
63
- }
64
- }, []);
65
- return state.auth;
66
- }
67
-
68
- export { useAuth };
69
- //# sourceMappingURL=index.js.map
1
+ export { TernSecureAuth, TernSecureFirestore, TernSecureStorage, signInWithEmail, loadFireConfig, validateConfig, TernSecureContext, useTernSecure, TernSecureClientProvider } from './app-router/client';
2
+ export { TernSecureProvider } from './app-router/server';
3
+ export { useAuth } from './hooks/useAuth';
4
+ export { SignIn } from './components/sign-in';
70
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/useAuth.ts"],"names":[],"mappings":";;;;;;;;;;;AAMO,SAAS,OAAU,GAAA;AACxB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,cAAc,SAAS,CAAA;AAEjD,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA;AACF,MAAA,MAAM,OAAO,cAAe,EAAA;AAC5B,MAAA,QAAA,CAAS,CAAS,IAAA,MAAA;AAAA,QAChB,GAAG,IAAA;AAAA,QACH,QAAU,EAAA;AAAA,UACR,WAAa,EAAA,IAAA;AAAA,UACb,KAAO,EAAA;AAAA;AACT,OACA,CAAA,CAAA;AAEF,MAAA,MAAM,cAAc,IAAK,CAAA,kBAAA;AAAA,QACvB,CAAC,IAAS,KAAA;AACR,UAAA,QAAA,CAAS,CAAS,IAAA,MAAA;AAAA,YAChB,GAAG,IAAA;AAAA,YACH,IAAM,EAAA;AAAA,cACJ,IAAA;AAAA,cACA,OAAS,EAAA,KAAA;AAAA,cACT,KAAO,EAAA,IAAA;AAAA,cACP,UAAA,EAAY,CAAC,CAAC;AAAA;AAChB,WACA,CAAA,CAAA;AAAA,SACJ;AAAA,QACA,CAAC,KAAU,KAAA;AACT,UAAA,QAAA,CAAS,CAAS,IAAA,MAAA;AAAA,YAChB,GAAG,IAAA;AAAA,YACH,IAAM,EAAA;AAAA,cACJ,IAAM,EAAA,IAAA;AAAA,cACN,OAAS,EAAA,KAAA;AAAA,cACT,KAAA;AAAA,cACA,UAAY,EAAA;AAAA;AACd,WACA,CAAA,CAAA;AAAA;AACJ,OACF;AAEA,MAAA,OAAO,MAAM,WAAY,EAAA;AAAA,aAClB,KAAO,EAAA;AACd,MAAA,QAAA,CAAS,CAAS,IAAA,MAAA;AAAA,QAChB,GAAG,IAAA;AAAA,QACH,QAAU,EAAA;AAAA,UACR,WAAa,EAAA,KAAA;AAAA,UACb;AAAA,SACF;AAAA,QACA,IAAM,EAAA;AAAA,UACJ,IAAM,EAAA,IAAA;AAAA,UACN,OAAS,EAAA,KAAA;AAAA,UACT,KAAA;AAAA,UACA,UAAY,EAAA;AAAA;AACd,OACA,CAAA,CAAA;AAAA;AACJ,GACF,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,KAAM,CAAA,IAAA;AACf","file":"index.js","sourcesContent":["'use client'\r\n\r\nimport { useEffect } from 'react'\r\nimport { TernSecureAuth } from '../app-router/client'\r\nimport { useTernSecure } from '../app-router/client/'\r\n\r\nexport function useAuth() {\r\n const [state, setState] = useTernSecure('useAuth')\r\n\r\n useEffect(() => {\r\n try {\r\n const auth = TernSecureAuth() // This initializes Firebase\r\n setState(prev => ({\r\n ...prev,\r\n firebase: {\r\n initialized: true,\r\n error: null\r\n }\r\n }))\r\n\r\n const unsubscribe = auth.onAuthStateChanged(\r\n (user) => {\r\n setState(prev => ({\r\n ...prev,\r\n auth: {\r\n user,\r\n loading: false,\r\n error: null,\r\n isSignedIn: !!user\r\n }\r\n }))\r\n },\r\n (error) => {\r\n setState(prev => ({\r\n ...prev,\r\n auth: {\r\n user: null,\r\n loading: false,\r\n error,\r\n isSignedIn: false\r\n }\r\n }))\r\n }\r\n )\r\n\r\n return () => unsubscribe()\r\n } catch (error) {\r\n setState(prev => ({\r\n ...prev,\r\n firebase: {\r\n initialized: false,\r\n error: error as Error\r\n },\r\n auth: {\r\n user: null,\r\n loading: false,\r\n error: error as Error,\r\n isSignedIn: false\r\n }\r\n }))\r\n }\r\n }, []) // Only run once on mount\r\n\r\n return state.auth\r\n}"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AACzM,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,41 @@
1
+ import type { ReactNode } from 'react';
2
+ import { User, Auth } from 'firebase/auth';
3
+ export interface TernSecureConfig {
4
+ apiKey: string;
5
+ authDomain: string;
6
+ projectId: string;
7
+ storageBucket: string;
8
+ messagingSenderId: string;
9
+ appId: string;
10
+ measurementId: string;
11
+ }
12
+ export interface TernSecureOptions {
13
+ environment?: 'development' | 'production';
14
+ region?: string;
15
+ }
16
+ export interface FirebaseState {
17
+ initialized: boolean;
18
+ error: Error | null;
19
+ }
20
+ export interface TernSecureState {
21
+ firebase: FirebaseState;
22
+ auth: AuthState;
23
+ }
24
+ export interface AuthState {
25
+ user: User | null;
26
+ loading: boolean;
27
+ error: Error | null;
28
+ isSignedIn: boolean;
29
+ }
30
+ export interface TernSecureContextValue {
31
+ _contextKey: symbol;
32
+ authState: AuthState;
33
+ auth: Auth;
34
+ }
35
+ export interface TernSecureContextType {
36
+ authState: AuthState;
37
+ }
38
+ export interface TernSecureProviderProps {
39
+ children: ReactNode;
40
+ }
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AACD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,SAAS,CAAC;CACjB;AACD,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACvB;AACD,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC;CACd;AACD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,SAAS,CAAC;CACtB;AACD,MAAM,WAAW,uBAAuB;IACpC,QAAQ,EAAE,SAAS,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
1
+ export declare const defaultClassNames: {
2
+ readonly container: "tern-container";
3
+ readonly header: "tern-header";
4
+ readonly title: "tern-title";
5
+ readonly formWrapper: "tern-formWrapper";
6
+ readonly formContainer: "tern-formContainer";
7
+ readonly form: "tern-form";
8
+ readonly label: "tern-label";
9
+ readonly input: "tern-input";
10
+ readonly button: "tern-button";
11
+ readonly error: "tern-error";
12
+ };
13
+ export declare const styleConfig: {
14
+ readonly container: {
15
+ readonly display: "flex";
16
+ readonly minHeight: "100%";
17
+ readonly flex: "1";
18
+ readonly flexDirection: "column";
19
+ readonly justifyContent: "center";
20
+ readonly padding: "3rem 1.5rem";
21
+ };
22
+ readonly header: {
23
+ readonly margin: "0 auto";
24
+ readonly width: "100%";
25
+ readonly maxWidth: "28rem";
26
+ };
27
+ readonly title: {
28
+ readonly marginTop: "1.5rem";
29
+ readonly textAlign: "center";
30
+ readonly fontSize: "1.875rem";
31
+ readonly fontWeight: "700";
32
+ readonly lineHeight: "2.25rem";
33
+ readonly letterSpacing: "-0.025em";
34
+ readonly color: "var(--tern-text-primary, #111827)";
35
+ };
36
+ readonly formWrapper: {
37
+ readonly marginTop: "2.5rem";
38
+ readonly margin: "0 auto";
39
+ readonly width: "100%";
40
+ readonly maxWidth: "30rem";
41
+ };
42
+ readonly formContainer: {
43
+ readonly padding: "3rem 1.5rem";
44
+ readonly boxShadow: "0 1px 3px 0 rgb(0 0 0 / 0.1)";
45
+ readonly borderRadius: "0.5rem";
46
+ readonly backgroundColor: "var(--tern-background, white)";
47
+ };
48
+ readonly form: {
49
+ readonly display: "flex";
50
+ readonly flexDirection: "column";
51
+ readonly gap: "1rem";
52
+ };
53
+ readonly label: {
54
+ readonly display: "block";
55
+ readonly fontSize: "0.875rem";
56
+ readonly fontWeight: "500";
57
+ readonly color: "var(--tern-text-secondary, #374151)";
58
+ };
59
+ readonly input: {
60
+ readonly marginTop: "0.25rem";
61
+ readonly display: "block";
62
+ readonly width: "100%";
63
+ readonly padding: "0.5rem 0.75rem";
64
+ readonly borderRadius: "0.375rem";
65
+ readonly border: "1px solid var(--tern-border, #D1D5DB)";
66
+ readonly backgroundColor: "var(--tern-input-background, white)";
67
+ readonly color: "var(--tern-text-primary, #111827)";
68
+ };
69
+ readonly button: {
70
+ readonly display: "flex";
71
+ readonly width: "100%";
72
+ readonly justifyContent: "center";
73
+ readonly padding: "0.5rem 1rem";
74
+ readonly fontSize: "0.875rem";
75
+ readonly fontWeight: "500";
76
+ readonly color: "white";
77
+ readonly backgroundColor: "var(--tern-primary, #2563EB)";
78
+ readonly border: "none";
79
+ readonly borderRadius: "0.375rem";
80
+ readonly cursor: "pointer";
81
+ };
82
+ readonly error: {
83
+ readonly color: "var(--tern-error, #DC2626)";
84
+ readonly fontSize: "0.875rem";
85
+ };
86
+ };
87
+ export declare const styles: {
88
+ readonly container: "tern-container";
89
+ readonly header: "tern-header";
90
+ readonly title: "tern-title";
91
+ readonly formWrapper: "tern-formWrapper";
92
+ readonly formContainer: "tern-formContainer";
93
+ readonly form: "tern-form";
94
+ readonly label: "tern-label";
95
+ readonly input: "tern-input";
96
+ readonly button: "tern-button";
97
+ readonly error: "tern-error";
98
+ };
99
+ //# sourceMappingURL=create-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-styles.d.ts","sourceRoot":"","sources":["../../src/utils/create-styles.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,iBAAiB;;;;;;;;;;;CAWpB,CAAA;AAwCV,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyEd,CAAA;AAGV,eAAO,MAAM,MAAM;;;;;;;;;;;CAAgC,CAAA"}
@@ -0,0 +1,127 @@
1
+ 'use client';
2
+ const PREFIX = 'tern';
3
+ // Singleton to track style injection
4
+ const styleInjection = {
5
+ isInjected: false,
6
+ styleElement: null
7
+ };
8
+ export const defaultClassNames = {
9
+ container: `${PREFIX}-container`,
10
+ header: `${PREFIX}-header`,
11
+ title: `${PREFIX}-title`,
12
+ formWrapper: `${PREFIX}-formWrapper`,
13
+ formContainer: `${PREFIX}-formContainer`,
14
+ form: `${PREFIX}-form`,
15
+ label: `${PREFIX}-label`,
16
+ input: `${PREFIX}-input`,
17
+ button: `${PREFIX}-button`,
18
+ error: `${PREFIX}-error`
19
+ };
20
+ // Create styles once and cache them
21
+ function createStyleSheet(styles) {
22
+ if (typeof window === 'undefined')
23
+ return defaultClassNames;
24
+ // Return early if styles are already injected
25
+ if (styleInjection.isInjected) {
26
+ return defaultClassNames;
27
+ }
28
+ // Find existing style element or create new one
29
+ let styleElement = document.querySelector('[data-tern-secure]');
30
+ if (!styleElement) {
31
+ styleElement = document.createElement('style');
32
+ styleElement.setAttribute('data-tern-secure', '');
33
+ document.head.appendChild(styleElement);
34
+ styleInjection.styleElement = styleElement;
35
+ }
36
+ // Create CSS rules
37
+ const cssRules = Object.entries(styles).map(([key, rules]) => {
38
+ const className = defaultClassNames[key];
39
+ const cssProperties = Object.entries(rules).map(([prop, value]) => {
40
+ const cssProperty = prop.replace(/([A-Z])/g, '-$1').toLowerCase();
41
+ return `${cssProperty}: ${value};`;
42
+ }).join(' ');
43
+ return `.${className} { ${cssProperties} }`;
44
+ }).join('\n');
45
+ // Insert styles only once
46
+ styleElement.textContent = cssRules;
47
+ styleInjection.isInjected = true;
48
+ return defaultClassNames;
49
+ }
50
+ // Style configuration
51
+ export const styleConfig = {
52
+ container: {
53
+ display: 'flex',
54
+ minHeight: '100%',
55
+ flex: '1',
56
+ flexDirection: 'column',
57
+ justifyContent: 'center',
58
+ padding: '3rem 1.5rem'
59
+ },
60
+ header: {
61
+ margin: '0 auto',
62
+ width: '100%',
63
+ maxWidth: '28rem'
64
+ },
65
+ title: {
66
+ marginTop: '1.5rem',
67
+ textAlign: 'center',
68
+ fontSize: '1.875rem',
69
+ fontWeight: '700',
70
+ lineHeight: '2.25rem',
71
+ letterSpacing: '-0.025em',
72
+ color: 'var(--tern-text-primary, #111827)'
73
+ },
74
+ formWrapper: {
75
+ marginTop: '2.5rem',
76
+ margin: '0 auto',
77
+ width: '100%',
78
+ maxWidth: '30rem'
79
+ },
80
+ formContainer: {
81
+ padding: '3rem 1.5rem',
82
+ boxShadow: '0 1px 3px 0 rgb(0 0 0 / 0.1)',
83
+ borderRadius: '0.5rem',
84
+ backgroundColor: 'var(--tern-background, white)'
85
+ },
86
+ form: {
87
+ display: 'flex',
88
+ flexDirection: 'column',
89
+ gap: '1rem'
90
+ },
91
+ label: {
92
+ display: 'block',
93
+ fontSize: '0.875rem',
94
+ fontWeight: '500',
95
+ color: 'var(--tern-text-secondary, #374151)'
96
+ },
97
+ input: {
98
+ marginTop: '0.25rem',
99
+ display: 'block',
100
+ width: '100%',
101
+ padding: '0.5rem 0.75rem',
102
+ borderRadius: '0.375rem',
103
+ border: '1px solid var(--tern-border, #D1D5DB)',
104
+ backgroundColor: 'var(--tern-input-background, white)',
105
+ color: 'var(--tern-text-primary, #111827)'
106
+ },
107
+ button: {
108
+ display: 'flex',
109
+ width: '100%',
110
+ justifyContent: 'center',
111
+ padding: '0.5rem 1rem',
112
+ fontSize: '0.875rem',
113
+ fontWeight: '500',
114
+ color: 'white',
115
+ backgroundColor: 'var(--tern-primary, #2563EB)',
116
+ border: 'none',
117
+ borderRadius: '0.375rem',
118
+ cursor: 'pointer'
119
+ },
120
+ error: {
121
+ color: 'var(--tern-error, #DC2626)',
122
+ fontSize: '0.875rem'
123
+ }
124
+ };
125
+ // Export pre-created styles
126
+ export const styles = createStyleSheet(styleConfig);
127
+ //# sourceMappingURL=create-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-styles.js","sourceRoot":"","sources":["../../src/utils/create-styles.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/nextjs",
3
- "version": "3.1.20",
3
+ "version": "3.1.21",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -18,7 +18,7 @@
18
18
  "module": "./dist/esm/index.js",
19
19
  "types": "./dist/esm/index.d.ts",
20
20
  "scripts": {
21
- "build": "tsup",
21
+ "build": "tsc",
22
22
  "dev": "tsup --watch",
23
23
  "clean": "rimraf dist",
24
24
  "lint": "eslint \"src/**/*.{ts,tsx}\"",
@@ -1,21 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkANTUVB2P_cjs = require('../../chunk-ANTUVB2P.cjs');
4
- require('../../chunk-VNNJ5ANT.cjs');
5
-
6
-
7
-
8
- Object.defineProperty(exports, "TernSecureAuth", {
9
- enumerable: true,
10
- get: function () { return chunkANTUVB2P_cjs.TernSecureAuth; }
11
- });
12
- Object.defineProperty(exports, "TernSecureFirestore", {
13
- enumerable: true,
14
- get: function () { return chunkANTUVB2P_cjs.TernSecureFirestore; }
15
- });
16
- Object.defineProperty(exports, "TernSecureStorage", {
17
- enumerable: true,
18
- get: function () { return chunkANTUVB2P_cjs.TernSecureStorage; }
19
- });
20
- //# sourceMappingURL=client-init.cjs.map
21
- //# sourceMappingURL=client-init.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"client-init.cjs"}
@@ -1,9 +0,0 @@
1
- import * as _firebase_storage from '@firebase/storage';
2
- import * as _firebase_firestore from '@firebase/firestore';
3
- import * as _firebase_auth from '@firebase/auth';
4
-
5
- declare const TernSecureAuth: () => _firebase_auth.Auth;
6
- declare const TernSecureFirestore: () => _firebase_firestore.Firestore;
7
- declare const TernSecureStorage: () => _firebase_storage.FirebaseStorage;
8
-
9
- export { TernSecureAuth, TernSecureFirestore, TernSecureStorage };
@@ -1,16 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkVNNJ5ANT_cjs = require('../../chunk-VNNJ5ANT.cjs');
4
-
5
-
6
-
7
- Object.defineProperty(exports, "loadFireConfig", {
8
- enumerable: true,
9
- get: function () { return chunkVNNJ5ANT_cjs.loadFireConfig; }
10
- });
11
- Object.defineProperty(exports, "validateConfig", {
12
- enumerable: true,
13
- get: function () { return chunkVNNJ5ANT_cjs.validateConfig; }
14
- });
15
- //# sourceMappingURL=config.cjs.map
16
- //# sourceMappingURL=config.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"config.cjs"}
@@ -1,2 +0,0 @@
1
- export { l as loadFireConfig, v as validateConfig } from '../../config-CYswigMN.cjs';
2
- import 'firebase/auth';
@@ -1,47 +0,0 @@
1
- 'use strict';
2
-
3
- var chunk6XOKZ6YG_cjs = require('../../chunk-6XOKZ6YG.cjs');
4
- var chunkANTUVB2P_cjs = require('../../chunk-ANTUVB2P.cjs');
5
- var chunkVNNJ5ANT_cjs = require('../../chunk-VNNJ5ANT.cjs');
6
- var chunkWR6O4YMW_cjs = require('../../chunk-WR6O4YMW.cjs');
7
-
8
-
9
-
10
- Object.defineProperty(exports, "signInWithEmail", {
11
- enumerable: true,
12
- get: function () { return chunk6XOKZ6YG_cjs.signInWithEmail; }
13
- });
14
- Object.defineProperty(exports, "TernSecureAuth", {
15
- enumerable: true,
16
- get: function () { return chunkANTUVB2P_cjs.TernSecureAuth; }
17
- });
18
- Object.defineProperty(exports, "TernSecureFirestore", {
19
- enumerable: true,
20
- get: function () { return chunkANTUVB2P_cjs.TernSecureFirestore; }
21
- });
22
- Object.defineProperty(exports, "TernSecureStorage", {
23
- enumerable: true,
24
- get: function () { return chunkANTUVB2P_cjs.TernSecureStorage; }
25
- });
26
- Object.defineProperty(exports, "loadFireConfig", {
27
- enumerable: true,
28
- get: function () { return chunkVNNJ5ANT_cjs.loadFireConfig; }
29
- });
30
- Object.defineProperty(exports, "validateConfig", {
31
- enumerable: true,
32
- get: function () { return chunkVNNJ5ANT_cjs.validateConfig; }
33
- });
34
- Object.defineProperty(exports, "TernSecureClientProvider", {
35
- enumerable: true,
36
- get: function () { return chunkWR6O4YMW_cjs.TernSecureClientProvider; }
37
- });
38
- Object.defineProperty(exports, "TernSecureContext", {
39
- enumerable: true,
40
- get: function () { return chunkWR6O4YMW_cjs.TernSecureContext; }
41
- });
42
- Object.defineProperty(exports, "useTernSecure", {
43
- enumerable: true,
44
- get: function () { return chunkWR6O4YMW_cjs.useTernSecure; }
45
- });
46
- //# sourceMappingURL=index.cjs.map
47
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -1,24 +0,0 @@
1
- export { TernSecureAuth, TernSecureFirestore, TernSecureStorage } from './client-init.cjs';
2
- import { UserCredential } from 'firebase/auth';
3
- import { T as TernSecureState } from '../../config-CYswigMN.cjs';
4
- export { l as loadFireConfig, v as validateConfig } from '../../config-CYswigMN.cjs';
5
- import React__default from 'react';
6
- import * as react_jsx_runtime from 'react/jsx-runtime';
7
- import '@firebase/storage';
8
- import '@firebase/firestore';
9
- import '@firebase/auth';
10
-
11
- interface SignInCredentials {
12
- email: string;
13
- password: string;
14
- }
15
- declare function signInWithEmail({ email, password }: SignInCredentials): Promise<UserCredential>;
16
-
17
- declare const TernSecureContext: React__default.Context<[TernSecureState, React__default.Dispatch<React__default.SetStateAction<TernSecureState>>]>;
18
- declare const useTernSecure: (hookname?: string) => [TernSecureState, React__default.Dispatch<React__default.SetStateAction<TernSecureState>>];
19
-
20
- declare function TernSecureClientProvider({ children }: {
21
- children: React__default.ReactNode;
22
- }): react_jsx_runtime.JSX.Element;
23
-
24
- export { type SignInCredentials, TernSecureClientProvider, TernSecureContext, signInWithEmail, useTernSecure };
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkYMR72FHE_cjs = require('../../chunk-YMR72FHE.cjs');
4
-
5
-
6
-
7
- Object.defineProperty(exports, "TernSecureProvider", {
8
- enumerable: true,
9
- get: function () { return chunkYMR72FHE_cjs.TernSecureProvider; }
10
- });
11
- //# sourceMappingURL=index.cjs.map
12
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -1,9 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import React__default, { ReactNode } from 'react';
3
-
4
- interface TernSecureProviderProps {
5
- children: ReactNode;
6
- }
7
- declare function TernSecureProvider({ children }: TernSecureProviderProps): react_jsx_runtime.JSX.Element | (string | number | React__default.ReactElement<any, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode>)[] | null | undefined;
8
-
9
- export { TernSecureProvider };
@@ -1,36 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { jsx } from 'react/jsx-runtime';
3
-
4
- /* eslint-disable */
5
-
6
- var initialState = {
7
- firebase: {
8
- initialized: false,
9
- error: null
10
- },
11
- auth: {
12
- user: null,
13
- loading: true,
14
- error: null,
15
- isSignedIn: false
16
- }
17
- };
18
- var TernSecureContext = React.createContext([initialState, () => {
19
- }]);
20
- var useTernSecure = (hookname) => {
21
- const context = React.useContext(TernSecureContext);
22
- if (!context) {
23
- throw new Error(
24
- `${hookname} must be used within TernSecureProvider`
25
- );
26
- }
27
- return context;
28
- };
29
- function TernSecureClientProvider({ children }) {
30
- const stateAndUpdater = useState(initialState);
31
- return /* @__PURE__ */ jsx(TernSecureContext.Provider, { value: stateAndUpdater, children });
32
- }
33
-
34
- export { TernSecureClientProvider, TernSecureContext, useTernSecure };
35
- //# sourceMappingURL=chunk-2RTGO3FB.js.map
36
- //# sourceMappingURL=chunk-2RTGO3FB.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/app-router/client/providers/ternSecureContext.tsx","../src/app-router/client/providers/ternSecureClientProvider.tsx"],"names":[],"mappings":";;;;;AAKA,IAAM,YAAgC,GAAA;AAAA,EACpC,QAAU,EAAA;AAAA,IACR,WAAa,EAAA,KAAA;AAAA,IACb,KAAO,EAAA;AAAA,GACT;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,IAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,IACT,KAAO,EAAA,IAAA;AAAA,IACP,UAAY,EAAA;AAAA;AAEhB,CAAA;AAEA,IAAM,iBAAoB,GAAA,KAAA,CAAM,aAAwF,CAAA,CAAC,cAAc,MAAM;AAAC,CAAC,CAAC;AAE1I,IAAA,aAAA,GAAgB,CAAC,QAAsB,KAAA;AAC3C,EAAM,MAAA,OAAA,GAAU,KAAM,CAAA,UAAA,CAAW,iBAAiB,CAAA;AAClD,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,GAAG,QAAQ,CAAA,uCAAA;AAAA,KAAyC;AAAA;AAExD,EAAO,OAAA,OAAA;AACT;ACtBO,SAAS,wBAAA,CAAyB,EAAE,QAAA,EAA2C,EAAA;AACpF,EAAM,MAAA,eAAA,GAAkB,SAAS,YAAY,CAAA;AAE7C,EAAA,2BACG,iBAAkB,CAAA,QAAA,EAAlB,EAA2B,KAAA,EAAO,iBAChC,QACH,EAAA,CAAA;AAEJ","file":"chunk-2RTGO3FB.js","sourcesContent":["'use client'\r\n\r\nimport React from 'react'\r\nimport { TernSecureState } from '../../../types'\r\n\r\nconst initialState: TernSecureState = {\r\n firebase: {\r\n initialized: false,\r\n error: null\r\n },\r\n auth: {\r\n user: null,\r\n loading: true,\r\n error: null,\r\n isSignedIn: false\r\n }\r\n}\r\n\r\nconst TernSecureContext = React.createContext<[TernSecureState, React.Dispatch<React.SetStateAction<TernSecureState>>]>([initialState, () => {}])\r\n\r\nconst useTernSecure = (hookname?: string) => {\r\n const context = React.useContext(TernSecureContext)\r\n if (!context) {\r\n throw new Error(\r\n `${hookname} must be used within TernSecureProvider`)\r\n }\r\n return context\r\n}\r\n\r\nexport {\r\n TernSecureContext,\r\n useTernSecure,\r\n initialState\r\n}","'use client'\r\n\r\nimport React, { useState } from 'react'\r\nimport { TernSecureContext, initialState } from './ternSecureContext'\r\n\r\nexport function TernSecureClientProvider({ children }: { children: React.ReactNode }) {\r\n const stateAndUpdater = useState(initialState)\r\n\r\n return (\r\n <TernSecureContext.Provider value={stateAndUpdater}>\r\n {children}\r\n </TernSecureContext.Provider>\r\n )\r\n}"]}