@tern-secure/nextjs 3.0.8 → 3.0.9

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 (56) hide show
  1. package/dist/app-router/client/auth.d.ts +1 -0
  2. package/dist/app-router/client/auth.d.ts.map +1 -0
  3. package/dist/app-router/client/client-init.d.ts +1 -0
  4. package/dist/app-router/client/client-init.d.ts.map +1 -0
  5. package/dist/app-router/client/config.d.ts +1 -0
  6. package/dist/app-router/client/config.d.ts.map +1 -0
  7. package/dist/app-router/client/index.d.ts +1 -0
  8. package/dist/app-router/client/index.d.ts.map +1 -0
  9. package/dist/app-router/client/index.js +106 -1
  10. package/dist/app-router/client/index.js.map +7 -0
  11. package/dist/app-router/client/providers/ternSecureClientProvider.d.ts +1 -0
  12. package/dist/app-router/client/providers/ternSecureClientProvider.d.ts.map +1 -0
  13. package/dist/app-router/client/providers/ternSecureContext.d.ts +1 -0
  14. package/dist/app-router/client/providers/ternSecureContext.d.ts.map +1 -0
  15. package/dist/app-router/server/index.d.ts +1 -0
  16. package/dist/app-router/server/index.d.ts.map +1 -0
  17. package/dist/app-router/server/index.js +112 -1
  18. package/dist/app-router/server/index.js.map +7 -0
  19. package/dist/app-router/server/providers/TernSecureServerProvider.d.ts +1 -0
  20. package/dist/app-router/server/providers/TernSecureServerProvider.d.ts.map +1 -0
  21. package/dist/components/index.d.ts +1 -0
  22. package/dist/components/index.d.ts.map +1 -0
  23. package/dist/components/index.js +295 -1
  24. package/dist/components/index.js.map +7 -0
  25. package/dist/components/sign-in.d.ts +1 -0
  26. package/dist/components/sign-in.d.ts.map +1 -0
  27. package/dist/errors/index.d.ts +1 -0
  28. package/dist/errors/index.d.ts.map +1 -0
  29. package/dist/hooks/index.d.ts +1 -0
  30. package/dist/hooks/index.d.ts.map +1 -0
  31. package/dist/hooks/index.js +133 -1
  32. package/dist/hooks/index.js.map +7 -0
  33. package/dist/hooks/useAuth.d.ts +1 -0
  34. package/dist/hooks/useAuth.d.ts.map +1 -0
  35. package/dist/index.cjs.js +506 -2
  36. package/dist/index.cjs.js.map +7 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +464 -1
  40. package/dist/index.js.map +7 -0
  41. package/dist/types/index.d.ts +1 -0
  42. package/dist/types/index.d.ts.map +1 -0
  43. package/dist/types/index.js +1 -0
  44. package/dist/types/index.js.map +7 -0
  45. package/dist/utils/create-styles.d.ts +1 -0
  46. package/dist/utils/create-styles.d.ts.map +1 -0
  47. package/dist/utils/create-styles.js +125 -1
  48. package/dist/utils/create-styles.js.map +7 -0
  49. package/package.json +1 -1
  50. package/dist/chunk-2ENCFXUN.js +0 -1
  51. package/dist/chunk-2NA7K5TN.js +0 -2
  52. package/dist/chunk-64G22XTD.js +0 -1
  53. package/dist/chunk-ASFHFC2I.js +0 -1
  54. package/dist/chunk-DLMCL4UP.js +0 -1
  55. package/dist/chunk-LHW3RBUN.js +0 -1
  56. package/dist/ternSecureClientProvider-IGH5T42M.js +0 -1
@@ -1 +1,125 @@
1
- "use client";import{a,b,c}from"../chunk-2NA7K5TN.js";export{a as defaultClassNames,b as styleConfig,c as styles};
1
+ "use client";
2
+
3
+ // src/utils/create-styles.ts
4
+ var PREFIX = "tern";
5
+ var styleInjection = {
6
+ isInjected: false,
7
+ styleElement: null
8
+ };
9
+ var defaultClassNames = {
10
+ container: `${PREFIX}-container`,
11
+ header: `${PREFIX}-header`,
12
+ title: `${PREFIX}-title`,
13
+ formWrapper: `${PREFIX}-formWrapper`,
14
+ formContainer: `${PREFIX}-formContainer`,
15
+ form: `${PREFIX}-form`,
16
+ label: `${PREFIX}-label`,
17
+ input: `${PREFIX}-input`,
18
+ button: `${PREFIX}-button`,
19
+ error: `${PREFIX}-error`
20
+ };
21
+ function createStyleSheet(styles2) {
22
+ if (typeof window === "undefined") return defaultClassNames;
23
+ if (styleInjection.isInjected) {
24
+ return defaultClassNames;
25
+ }
26
+ let styleElement = document.querySelector("[data-tern-secure]");
27
+ if (!styleElement) {
28
+ styleElement = document.createElement("style");
29
+ styleElement.setAttribute("data-tern-secure", "");
30
+ document.head.appendChild(styleElement);
31
+ styleInjection.styleElement = styleElement;
32
+ }
33
+ const cssRules = Object.entries(styles2).map(([key, rules]) => {
34
+ const className = defaultClassNames[key];
35
+ const cssProperties = Object.entries(rules).map(([prop, value]) => {
36
+ const cssProperty = prop.replace(/([A-Z])/g, "-$1").toLowerCase();
37
+ return `${cssProperty}: ${value};`;
38
+ }).join(" ");
39
+ return `.${className} { ${cssProperties} }`;
40
+ }).join("\n");
41
+ styleElement.textContent = cssRules;
42
+ styleInjection.isInjected = true;
43
+ return defaultClassNames;
44
+ }
45
+ var styleConfig = {
46
+ container: {
47
+ display: "flex",
48
+ minHeight: "100%",
49
+ flex: "1",
50
+ flexDirection: "column",
51
+ justifyContent: "center",
52
+ padding: "3rem 1.5rem"
53
+ },
54
+ header: {
55
+ margin: "0 auto",
56
+ width: "100%",
57
+ maxWidth: "28rem"
58
+ },
59
+ title: {
60
+ marginTop: "1.5rem",
61
+ textAlign: "center",
62
+ fontSize: "1.875rem",
63
+ fontWeight: "700",
64
+ lineHeight: "2.25rem",
65
+ letterSpacing: "-0.025em",
66
+ color: "var(--tern-text-primary, #111827)"
67
+ },
68
+ formWrapper: {
69
+ marginTop: "2.5rem",
70
+ margin: "0 auto",
71
+ width: "100%",
72
+ maxWidth: "30rem"
73
+ },
74
+ formContainer: {
75
+ padding: "3rem 1.5rem",
76
+ boxShadow: "0 1px 3px 0 rgb(0 0 0 / 0.1)",
77
+ borderRadius: "0.5rem",
78
+ backgroundColor: "var(--tern-background, white)"
79
+ },
80
+ form: {
81
+ display: "flex",
82
+ flexDirection: "column",
83
+ gap: "1rem"
84
+ },
85
+ label: {
86
+ display: "block",
87
+ fontSize: "0.875rem",
88
+ fontWeight: "500",
89
+ color: "var(--tern-text-secondary, #374151)"
90
+ },
91
+ input: {
92
+ marginTop: "0.25rem",
93
+ display: "block",
94
+ width: "100%",
95
+ padding: "0.5rem 0.75rem",
96
+ borderRadius: "0.375rem",
97
+ border: "1px solid var(--tern-border, #D1D5DB)",
98
+ backgroundColor: "var(--tern-input-background, white)",
99
+ color: "var(--tern-text-primary, #111827)"
100
+ },
101
+ button: {
102
+ display: "flex",
103
+ width: "100%",
104
+ justifyContent: "center",
105
+ padding: "0.5rem 1rem",
106
+ fontSize: "0.875rem",
107
+ fontWeight: "500",
108
+ color: "white",
109
+ backgroundColor: "var(--tern-primary, #2563EB)",
110
+ border: "none",
111
+ borderRadius: "0.375rem",
112
+ cursor: "pointer"
113
+ },
114
+ error: {
115
+ color: "var(--tern-error, #DC2626)",
116
+ fontSize: "0.875rem"
117
+ }
118
+ };
119
+ var styles = createStyleSheet(styleConfig);
120
+ export {
121
+ defaultClassNames,
122
+ styleConfig,
123
+ styles
124
+ };
125
+ //# sourceMappingURL=create-styles.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/create-styles.ts"],
4
+ "sourcesContent": ["'use client'\r\n\r\nconst PREFIX = 'tern'\r\n\r\n// Singleton to track style injection\r\nconst styleInjection = {\r\n isInjected: false,\r\n styleElement: null as HTMLStyleElement | null\r\n}\r\n\r\nexport const defaultClassNames = {\r\n container: `${PREFIX}-container`,\r\n header: `${PREFIX}-header`,\r\n title: `${PREFIX}-title`,\r\n formWrapper: `${PREFIX}-formWrapper`,\r\n formContainer: `${PREFIX}-formContainer`,\r\n form: `${PREFIX}-form`,\r\n label: `${PREFIX}-label`,\r\n input: `${PREFIX}-input`,\r\n button: `${PREFIX}-button`,\r\n error: `${PREFIX}-error`\r\n} as const\r\n\r\n// Create styles once and cache them\r\nfunction createStyleSheet(styles: Record<string, React.CSSProperties>) {\r\n if (typeof window === 'undefined') return defaultClassNames\r\n\r\n // Return early if styles are already injected\r\n if (styleInjection.isInjected) {\r\n return defaultClassNames\r\n }\r\n\r\n // Find existing style element or create new one\r\n let styleElement = document.querySelector<HTMLStyleElement>('[data-tern-secure]')\r\n \r\n if (!styleElement) {\r\n styleElement = document.createElement('style')\r\n styleElement.setAttribute('data-tern-secure', '')\r\n document.head.appendChild(styleElement)\r\n styleInjection.styleElement = styleElement\r\n }\r\n\r\n // Create CSS rules\r\n const cssRules = Object.entries(styles).map(([key, rules]) => {\r\n const className = defaultClassNames[key as keyof typeof defaultClassNames]\r\n const cssProperties = Object.entries(rules).map(([prop, value]) => {\r\n const cssProperty = prop.replace(/([A-Z])/g, '-$1').toLowerCase()\r\n return `${cssProperty}: ${value};`\r\n }).join(' ')\r\n\r\n return `.${className} { ${cssProperties} }`\r\n }).join('\\n')\r\n\r\n // Insert styles only once\r\n styleElement.textContent = cssRules\r\n styleInjection.isInjected = true\r\n\r\n return defaultClassNames\r\n}\r\n\r\n// Style configuration\r\nexport const styleConfig = {\r\n container: {\r\n display: 'flex',\r\n minHeight: '100%',\r\n flex: '1',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n padding: '3rem 1.5rem'\r\n },\r\n header: {\r\n margin: '0 auto',\r\n width: '100%',\r\n maxWidth: '28rem'\r\n },\r\n title: {\r\n marginTop: '1.5rem',\r\n textAlign: 'center',\r\n fontSize: '1.875rem',\r\n fontWeight: '700',\r\n lineHeight: '2.25rem',\r\n letterSpacing: '-0.025em',\r\n color: 'var(--tern-text-primary, #111827)'\r\n },\r\n formWrapper: {\r\n marginTop: '2.5rem',\r\n margin: '0 auto',\r\n width: '100%',\r\n maxWidth: '30rem'\r\n },\r\n formContainer: {\r\n padding: '3rem 1.5rem',\r\n boxShadow: '0 1px 3px 0 rgb(0 0 0 / 0.1)',\r\n borderRadius: '0.5rem',\r\n backgroundColor: 'var(--tern-background, white)'\r\n },\r\n form: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '1rem'\r\n },\r\n label: {\r\n display: 'block',\r\n fontSize: '0.875rem',\r\n fontWeight: '500',\r\n color: 'var(--tern-text-secondary, #374151)'\r\n },\r\n input: {\r\n marginTop: '0.25rem',\r\n display: 'block',\r\n width: '100%',\r\n padding: '0.5rem 0.75rem',\r\n borderRadius: '0.375rem',\r\n border: '1px solid var(--tern-border, #D1D5DB)',\r\n backgroundColor: 'var(--tern-input-background, white)',\r\n color: 'var(--tern-text-primary, #111827)'\r\n },\r\n button: {\r\n display: 'flex',\r\n width: '100%',\r\n justifyContent: 'center',\r\n padding: '0.5rem 1rem',\r\n fontSize: '0.875rem',\r\n fontWeight: '500',\r\n color: 'white',\r\n backgroundColor: 'var(--tern-primary, #2563EB)',\r\n border: 'none',\r\n borderRadius: '0.375rem',\r\n cursor: 'pointer'\r\n },\r\n error: {\r\n color: 'var(--tern-error, #DC2626)',\r\n fontSize: '0.875rem'\r\n }\r\n} as const\r\n\r\n// Export pre-created styles\r\nexport const styles = createStyleSheet(styleConfig)\r\n\r\n"],
5
+ "mappings": "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",
6
+ "names": ["styles"]
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tern-secure/nextjs",
3
- "version": "3.0.8",
3
+ "version": "3.0.9",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -1 +0,0 @@
1
- import{a as s}from"./chunk-LHW3RBUN.js";import{b as a}from"./chunk-ASFHFC2I.js";import{useEffect as o}from"react";function l(){let[i,r]=a("useAuth");return o(()=>{try{let t=s();r(e=>({...e,firebase:{initialized:!0,error:null}}));let u=t.onAuthStateChanged(e=>{r(n=>({...n,auth:{user:e,loading:!1,error:null,isSignedIn:!!e}}))},e=>{r(n=>({...n,auth:{user:null,loading:!1,error:e,isSignedIn:!1}}))});return()=>u()}catch(t){r(u=>({...u,firebase:{initialized:!1,error:t},auth:{user:null,loading:!1,error:t,isSignedIn:!1}}))}},[]),i.auth}export{l as a};
@@ -1,2 +0,0 @@
1
- var e="tern",n={isInjected:!1,styleElement:null},t={container:`${e}-container`,header:`${e}-header`,title:`${e}-title`,formWrapper:`${e}-formWrapper`,formContainer:`${e}-formContainer`,form:`${e}-form`,label:`${e}-label`,input:`${e}-input`,button:`${e}-button`,error:`${e}-error`};function p(o){if(typeof window>"u"||n.isInjected)return t;let r=document.querySelector("[data-tern-secure]");r||(r=document.createElement("style"),r.setAttribute("data-tern-secure",""),document.head.appendChild(r),n.styleElement=r);let i=Object.entries(o).map(([a,l])=>{let s=t[a],c=Object.entries(l).map(([m,d])=>`${m.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${d};`).join(" ");return`.${s} { ${c} }`}).join(`
2
- `);return r.textContent=i,n.isInjected=!0,t}var u={container:{display:"flex",minHeight:"100%",flex:"1",flexDirection:"column",justifyContent:"center",padding:"3rem 1.5rem"},header:{margin:"0 auto",width:"100%",maxWidth:"28rem"},title:{marginTop:"1.5rem",textAlign:"center",fontSize:"1.875rem",fontWeight:"700",lineHeight:"2.25rem",letterSpacing:"-0.025em",color:"var(--tern-text-primary, #111827)"},formWrapper:{marginTop:"2.5rem",margin:"0 auto",width:"100%",maxWidth:"30rem"},formContainer:{padding:"3rem 1.5rem",boxShadow:"0 1px 3px 0 rgb(0 0 0 / 0.1)",borderRadius:"0.5rem",backgroundColor:"var(--tern-background, white)"},form:{display:"flex",flexDirection:"column",gap:"1rem"},label:{display:"block",fontSize:"0.875rem",fontWeight:"500",color:"var(--tern-text-secondary, #374151)"},input:{marginTop:"0.25rem",display:"block",width:"100%",padding:"0.5rem 0.75rem",borderRadius:"0.375rem",border:"1px solid var(--tern-border, #D1D5DB)",backgroundColor:"var(--tern-input-background, white)",color:"var(--tern-text-primary, #111827)"},button:{display:"flex",width:"100%",justifyContent:"center",padding:"0.5rem 1rem",fontSize:"0.875rem",fontWeight:"500",color:"white",backgroundColor:"var(--tern-primary, #2563EB)",border:"none",borderRadius:"0.375rem",cursor:"pointer"},error:{color:"var(--tern-error, #DC2626)",fontSize:"0.875rem"}},y=p(u);export{t as a,u as b,y as c};
@@ -1 +0,0 @@
1
- import{d as f}from"./chunk-LHW3RBUN.js";import{c as r}from"./chunk-2NA7K5TN.js";import{useState as s}from"react";import{jsx as a,jsxs as l}from"react/jsx-runtime";function C({onSuccess:u,onError:v,redirectUrl:d,className:$="",style:b,customStyles:e={}}){let[m,h]=s(""),[p,N]=s(""),[n,g]=s(!1),[t,c]=s(""),E=async i=>{i.preventDefault(),g(!0),c("");try{await f({email:m,password:p}),u?.(),d&&(window.location.href=d)}catch(o){let w=o instanceof Error?o.message:"Failed to sign in";c(w),v?.(o instanceof Error?o:new Error("Failed to sign in"))}finally{g(!1)}};return l("div",{className:`${r.container} ${e.container||""}`,style:b,children:[a("div",{className:`${r.header} ${e.header||""}`,children:a("h2",{className:`${r.title} ${e.title||""}`,children:"Sign in to your account"})}),a("div",{className:`${r.formWrapper} ${e.formWrapper||""}`,children:a("div",{className:`${r.formContainer} ${e.formContainer||""}`,children:l("form",{onSubmit:E,className:`${r.form} ${e.form||""} ${$}`,role:"form","aria-label":"Sign in form",children:[t&&a("div",{className:`${r.error} ${e.errorText||""}`,role:"alert","aria-live":"polite",children:t}),l("div",{children:[a("label",{htmlFor:"email",className:`${r.label} ${e.label||""}`,children:"Email"}),a("input",{id:"email",type:"email",value:m,onChange:i=>h(i.target.value),placeholder:"Enter your email",required:!0,className:`${r.input} ${e.input||""}`,disabled:n,"aria-required":"true","aria-invalid":!!t})]}),l("div",{children:[a("label",{htmlFor:"password",className:`${r.label} ${e.label||""}`,children:"Password"}),a("input",{id:"password",type:"password",value:p,onChange:i=>N(i.target.value),placeholder:"Enter your password",required:!0,className:`${r.input} ${e.input||""}`,disabled:n,"aria-required":"true","aria-invalid":!!t})]}),a("button",{type:"submit",disabled:n,className:`${r.button} ${e.button||""}`,"data-testid":"sign-in-submit",children:n?"Signing in...":"Sign in"})]})})})]})}export{C as a};
@@ -1 +0,0 @@
1
- import{useState as u}from"react";import{createContext as i,useContext as o}from"react";var a=()=>i([{firebase:{initialized:!1,error:null},auth:{user:null,loading:!0,error:null,isSignedIn:!1}},()=>{}]),r=a(),s=e=>{let t=o(r);if(!t)throw new Error(`${e} must be used within TernSecureProvider`);return t},n={firebase:{initialized:!1,error:null},auth:{user:null,loading:!0,error:null,isSignedIn:!1}};import{jsx as c}from"react/jsx-runtime";function m({children:e}){let t=u(n);return c(r.Provider,{value:t,children:e})}export{r as a,s as b,m as c};
@@ -1 +0,0 @@
1
- import r from"react";import u from"next/dynamic";import{jsx as i}from"react/jsx-runtime";var o=u(()=>import("./ternSecureClientProvider-IGH5T42M.js").then(n=>n.TernSecureClientProvider),{loading:()=>null});function c({children:n}){return r.Children.toArray(n).some(e=>r.isValidElement(e)&&e.type==="html")?r.Children.map(n,e=>r.isValidElement(e)&&e.type==="html"?r.cloneElement(e,{},r.Children.map(e.props.children,t=>{if(r.isValidElement(t)&&t.type==="body"){let p=t.props;return r.cloneElement(t,{},i(o,{children:p.children}))}return t})):e):i(o,{children:n})}export{c as a};
@@ -1 +0,0 @@
1
- import{getApps as a,initializeApp as c}from"firebase/app";import{getAuth as E,setPersistence as g,browserSessionPersistence as S}from"firebase/auth";import{getFirestore as I}from"firebase/firestore";import{getStorage as m}from"firebase/storage";var n=(()=>{let e=i(s());return a().length?a()[0]:c(e)})(),p=E(n);g(p,S);var _=I(n),f=m(n),o=()=>p,u=()=>_,C=()=>f;import{signInWithEmailAndPassword as T}from"firebase/auth";async function A({email:e,password:r}){let t=o();return T(t,e,r)}var s=()=>({apiKey:process.env.NEXT_PUBLIC_FIREBASE_API_KEY,authDomain:process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,projectId:process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,storageBucket:process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET,messagingSenderId:process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,appId:process.env.NEXT_PUBLIC_FIREBASE_APP_ID,measurementId:process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID}),i=e=>(Object.entries(e).forEach(([r,t])=>{if(!t)throw new Error(`Missing environment variable: NEXT_PUBLIC_FIREBASE_${r.toUpperCase()}`)}),e);export{o as a,u as b,C as c,A as d,s as e,i as f};
@@ -1 +0,0 @@
1
- "use client";import{c as a}from"./chunk-ASFHFC2I.js";export{a as TernSecureClientProvider};