@donotdev/auth 0.0.3 → 0.0.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 (55) hide show
  1. package/dist/AuthStore.js +1 -1
  2. package/dist/FirebaseAccountLinking.js +1 -1
  3. package/dist/FirebaseAuth.d.ts +0 -2
  4. package/dist/FirebaseAuth.d.ts.map +1 -1
  5. package/dist/FirebaseAuth.js +1 -1
  6. package/dist/FirebaseSmartRecovery.js +1 -1
  7. package/dist/authHelpers.js +1 -1
  8. package/dist/components/AccountLinking.js +1 -1
  9. package/dist/components/AuthFallback.js +1 -1
  10. package/dist/components/AuthPartnerButton.d.ts +1 -1
  11. package/dist/components/AuthPartnerButton.d.ts.map +1 -1
  12. package/dist/components/AuthPartnerButton.js +2 -2
  13. package/dist/components/DeleteAccountDialogs.js +1 -1
  14. package/dist/components/EmailLinkForm.js +1 -1
  15. package/dist/components/EmailPasswordForm.d.ts +16 -1
  16. package/dist/components/EmailPasswordForm.d.ts.map +1 -1
  17. package/dist/components/EmailPasswordForm.js +1 -1
  18. package/dist/components/EmailVerification.js +1 -1
  19. package/dist/components/Feature.js +1 -1
  20. package/dist/components/FeatureGuard.d.ts.map +1 -1
  21. package/dist/components/FeatureGuard.js +1 -1
  22. package/dist/components/FeaturePlaceholder.d.ts.map +1 -1
  23. package/dist/components/FeaturePlaceholder.js +1 -1
  24. package/dist/components/GoogleOneTap.js +1 -1
  25. package/dist/components/LoginModal.js +1 -1
  26. package/dist/components/MultipleAuthProviders.d.ts +2 -2
  27. package/dist/components/MultipleAuthProviders.d.ts.map +1 -1
  28. package/dist/components/MultipleAuthProviders.js +1 -1
  29. package/dist/components/NetworkStatusIndicator.js +1 -1
  30. package/dist/components/PasswordStrengthIndicator.d.ts +22 -0
  31. package/dist/components/PasswordStrengthIndicator.d.ts.map +1 -0
  32. package/dist/components/PasswordStrengthIndicator.js +1 -0
  33. package/dist/components/PasswordUpdateDialog.js +1 -1
  34. package/dist/components/RateLimitAlert.js +1 -1
  35. package/dist/components/index.d.ts +1 -0
  36. package/dist/components/index.d.ts.map +1 -1
  37. package/dist/components/index.js +1 -1
  38. package/dist/constants.d.ts +2 -3
  39. package/dist/constants.d.ts.map +1 -1
  40. package/dist/constants.js +1 -1
  41. package/dist/hooks/useAccountLinking.js +1 -1
  42. package/dist/hooks/useAuthMethodToggle.js +1 -1
  43. package/dist/hooks/useAuthPartner.js +1 -1
  44. package/dist/hooks/useDeleteAccount.js +1 -1
  45. package/dist/hooks/useEmailLinkAuth.js +1 -1
  46. package/dist/hooks/useEmailLinkForm.js +1 -1
  47. package/dist/hooks/useFedCM.js +1 -1
  48. package/dist/hooks/useGoogleOneTap.d.ts.map +1 -1
  49. package/dist/hooks/useGoogleOneTap.js +1 -1
  50. package/dist/hooks/useNetworkStatus.js +1 -1
  51. package/dist/index.js +1 -1
  52. package/dist/tsconfig.tsbuildinfo +1 -1
  53. package/dist/useAuth.d.ts.map +1 -1
  54. package/dist/useAuth.js +1 -1
  55. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordStrengthIndicator.d.ts","sourceRoot":"","sources":["../../src/components/PasswordStrengthIndicator.tsx"],"names":[],"mappings":"AAkBA,MAAM,WAAW,8BAA8B;IAC7C,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAwFnE;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,QAAQ,EACR,SAAa,EACb,gBAAuB,EACvB,SAAS,GACV,EAAE,8BAA8B,2CA4EhC"}
@@ -0,0 +1 @@
1
+ "use client";import{jsxs as a,jsx as o}from"react/jsx-runtime";import{useMemo as u}from"react";import{Progress as w,Stack as i,Text as l,cn as v}from"@donotdev/components";import{useTranslation as b}from"@donotdev/core";function S(e){if(!e)return"weak";let t=0;return e.length>=8&&(t+=1),e.length>=12&&(t+=1),/[a-z]/.test(e)&&(t+=1),/[A-Z]/.test(e)&&(t+=1),/[0-9]/.test(e)&&(t+=1),/[^a-zA-Z0-9]/.test(e)&&(t+=1),t<=2?"weak":t<=4?"fair":t<=5?"good":"strong"}function k(e,t,n){return[{label:n("passwordRequirement.length",`At least ${t} characters`),met:e.length>=t},{label:n("passwordRequirement.uppercase","One uppercase letter"),met:/[A-Z]/.test(e)},{label:n("passwordRequirement.lowercase","One lowercase letter"),met:/[a-z]/.test(e)},{label:n("passwordRequirement.number","One number"),met:/[0-9]/.test(e)},{label:n("passwordRequirement.special","One special character (!@#$%^&*)"),met:/[^a-zA-Z0-9]/.test(e)}]}const P={weak:25,fair:50,good:75,strong:100},d={weak:"destructive",fair:"warning",good:"accent",strong:"success"};function A({password:e,minLength:t=8,showRequirements:n=!0,className:m}){const{t:r}=b("auth"),c=u(()=>S(e),[e]),h=u(()=>k(e,t,(g,f)=>r(g,f||"")),[e,t,r]),p={weak:r("passwordStrength.weak","Weak"),fair:r("passwordStrength.fair","Fair"),good:r("passwordStrength.good","Good"),strong:r("passwordStrength.strong","Strong")};return a(i,{gap:"tight",className:v("dndev-password-strength",m),children:[a(i,{gap:"tight",children:[a(i,{direction:"row",align:"center",justify:"between",gap:"tight",children:[a(l,{as:"span",level:"caption",variant:"muted",children:[r("passwordStrength.label","Password strength"),":"]}),o(l,{as:"strong",level:"caption",variant:d[c],children:p[c]})]}),o(w,{value:P[c],variant:d[c],className:"dndev-password-strength-bar"})]}),n&&a(i,{gap:"tight",className:"dndev-password-requirements",children:[a(l,{as:"strong",level:"caption",variant:"muted",children:[r("passwordRequirements","Password requirements"),":"]}),o(i,{gap:"tight","data-inset":"true",children:h.map((s,g)=>a(i,{direction:"row",align:"center",gap:"tight",children:[o(l,{as:"span",level:"small",variant:s.met?"success":"muted",children:s.met?"\u2713":"\u25CB"}),o(l,{as:"span",level:"caption",variant:s.met?"success":"muted","data-opacity":s.met?void 0:"70",children:s.label})]},g))})]})]})}export{A as PasswordStrengthIndicator};
@@ -1 +1 @@
1
- "use client";import{jsx as a,jsxs as t,Fragment as T}from"react/jsx-runtime";import"lucide-react";import{useState as o}from"react";import{Button as p,BUTTON_VARIANT as f,Input as m,Label as P,Alert as A,ALERT_VARIANT as E,Dialog as N,Stack as c}from"@donotdev/components";import{useTranslation as I}from"@donotdev/core";function R({updatePassword:y}){const{t:r}=I("profile"),[C,d]=o(!1),[s,w]=o(""),[n,u]=o(""),[l,g]=o(!1),[h,i]=o(null),v=async()=>{if(s!==n){i("Passwords do not match");return}if(s.length<6){i("Password must be at least 6 characters long");return}g(!0),i(null);try{await y(s),d(!1),w(""),u("")}catch(e){i(e.message||"Failed to update password")}finally{g(!1)}};return a(N,{open:C,onOpenChange:d,trigger:a(p,{variant:f.OUTLINE,children:r("profile.security.password.change","Change Password")}),title:r("profile.security.password.dialog.title","Change Password"),description:r("profile.security.password.dialog.description","Enter your new password below"),footer:t(T,{children:[a(p,{variant:f.OUTLINE,onClick:()=>d(!1),disabled:l,children:r("profile.security.password.dialog.cancel","Cancel")}),a(p,{onClick:v,disabled:l||!s||!n,children:l?r("profile.security.password.dialog.updating","Updating..."):r("profile.security.password.dialog.update","Update Password")})]}),children:t(c,{gap:"medium",children:[t(c,{gap:"tight",children:[a(P,{htmlFor:"newPassword",children:r("profile.security.password.dialog.newPassword","New Password")}),a(m,{id:"newPassword",type:"password",value:s,onChange:e=>w(e.target.value),placeholder:"Enter new password"})]}),t(c,{gap:"tight",children:[a(P,{htmlFor:"confirmPassword",children:r("profile.security.password.dialog.confirmPassword","Confirm Password")}),a(m,{id:"confirmPassword",type:"password",value:n,onChange:e=>u(e.target.value),placeholder:"Confirm new password"})]}),h&&a(A,{variant:E.ERROR,description:h})]})})}var U=R;export{U as default};
1
+ "use client";import{jsx as r,jsxs as i,Fragment as U}from"react/jsx-runtime";import"lucide-react";import{useState as o}from"react";import{Button as p,BUTTON_VARIANT as h,Input as m,Label as P,Alert as v,ALERT_VARIANT as A,Dialog as E,Stack as c}from"@donotdev/components";import{useTranslation as N}from"@donotdev/core";function I({updatePassword:y}){const{t:s}=N("profile"),[C,n]=o(!1),[e,w]=o(""),[d,g]=o(""),[l,f]=o(!1),[u,t]=o(null),T=async()=>{if(e!==d){t("Passwords do not match");return}if(e.length<6){t("Password must be at least 6 characters long");return}f(!0),t(null);try{await y(e),n(!1),w(""),g("")}catch(a){t(a.message||"Failed to update password")}finally{f(!1)}};return r(E,{open:C,onOpenChange:n,trigger:r(p,{variant:h.OUTLINE,children:s("profile.security.password.change","Change Password")}),title:s("profile.security.password.dialog.title","Change Password"),description:s("profile.security.password.dialog.description","Enter your new password below"),footer:i(U,{children:[r(p,{variant:h.OUTLINE,onClick:()=>n(!1),disabled:l,children:s("profile.security.password.dialog.cancel","Cancel")}),r(p,{onClick:T,disabled:l||!e||!d,children:l?s("profile.security.password.dialog.updating","Updating..."):s("profile.security.password.dialog.update","Update Password")})]}),children:i(c,{gap:"medium",children:[i(c,{gap:"tight",children:[r(P,{htmlFor:"newPassword",children:s("profile.security.password.dialog.newPassword","New Password")}),r(m,{id:"newPassword",type:"password",value:e,onChange:a=>w(a.target.value),placeholder:"Enter new password"})]}),i(c,{gap:"tight",children:[r(P,{htmlFor:"confirmPassword",children:s("profile.security.password.dialog.confirmPassword","Confirm Password")}),r(m,{id:"confirmPassword",type:"password",value:d,onChange:a=>g(a.target.value),placeholder:"Confirm new password"})]}),u&&r(v,{variant:A.ERROR,description:u})]})})}var j=I;export{j as default};
@@ -1 +1 @@
1
- "use client";import"react";import{useTranslation as t}from"@donotdev/core";const e=({identifier:a,className:n=""})=>{const{t:s}=t("auth");return null};var r=e;export{r as default};
1
+ "use client";import"react";import{useTranslation as t}from"@donotdev/core";const e=({identifier:r,className:i=""})=>{const{t:n}=t("auth");return null};var l=e;export{l as default};
@@ -18,6 +18,7 @@ export { default as LoginModal } from './LoginModal';
18
18
  export { default as MultipleAuthProviders } from './MultipleAuthProviders';
19
19
  export { default as NetworkStatusIndicator } from './NetworkStatusIndicator';
20
20
  export { default as PasswordUpdateDialog } from './PasswordUpdateDialog';
21
+ export { PasswordStrengthIndicator } from './PasswordStrengthIndicator';
21
22
  export { default as RateLimitAlert } from './RateLimitAlert';
22
23
  export * from './DeleteAccountDialogs';
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,cAAc,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- export*from"./AuthFallback";import{default as o}from"./EmailPasswordForm";import{default as a}from"./AuthPartnerButton";import{default as r}from"./EmailVerification";export*from"./Feature";export*from"./FeatureGuard";export*from"./FeaturePlaceholder";import{default as t}from"./GoogleOneTap";import{default as m}from"./LoginModal";import{default as e}from"./MultipleAuthProviders";import{default as f}from"./NetworkStatusIndicator";import{default as s}from"./PasswordUpdateDialog";import{default as i}from"./RateLimitAlert";export*from"./DeleteAccountDialogs";export{a as AuthPartnerButton,o as EmailPasswordForm,r as EmailVerification,t as GoogleOneTap,m as LoginModal,e as MultipleAuthProviders,f as NetworkStatusIndicator,s as PasswordUpdateDialog,i as RateLimitAlert};
1
+ export*from"./AuthFallback";import{default as e}from"./EmailPasswordForm";import{default as f}from"./AuthPartnerButton";import{default as p}from"./EmailVerification";export*from"./Feature";export*from"./FeatureGuard";export*from"./FeaturePlaceholder";import{default as u}from"./GoogleOneTap";import{default as n}from"./LoginModal";import{default as g}from"./MultipleAuthProviders";import{default as c}from"./NetworkStatusIndicator";import{default as A}from"./PasswordUpdateDialog";import{PasswordStrengthIndicator as I}from"./PasswordStrengthIndicator";import{default as M}from"./RateLimitAlert";export*from"./DeleteAccountDialogs";export{f as AuthPartnerButton,e as EmailPasswordForm,p as EmailVerification,u as GoogleOneTap,n as LoginModal,g as MultipleAuthProviders,c as NetworkStatusIndicator,I as PasswordStrengthIndicator,A as PasswordUpdateDialog,M as RateLimitAlert};
@@ -180,7 +180,8 @@ export interface EmailVerificationProps extends BaseComponentProps {
180
180
  * @author AMBROISE PARK Consulting
181
181
  */
182
182
  export interface EmailPasswordFormProps extends BaseComponentProps, AuthCallbackProps {
183
- mode: FormMode;
183
+ /** Form mode - defaults to 'signin' */
184
+ mode?: FormMode;
184
185
  compact?: boolean;
185
186
  }
186
187
  /**
@@ -236,8 +237,6 @@ export interface AuthPartnerButtonProps extends AuthCallbackProps, BaseComponent
236
237
  method?: AuthMethod | null;
237
238
  children?: React.ReactNode;
238
239
  disabled?: boolean;
239
- /** For email partner: whether to show signin or signup form */
240
- emailMode?: FormMode;
241
240
  /**
242
241
  * Display - controls button presentation in preset layouts
243
242
  * - 'compact': Icon-only
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD;;;;;GAKG;AACH;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAC7C,OAAO,CAgBT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,UAAU,CAEpE;AAGD,OAAO,EACL,kBAAkB,IAAI,aAAa,EACnC,KAAK,gBAAgB,IAAI,YAAY,GACtC,MAAM,gBAAgB,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvE;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAC;AAMX;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,yCAAyC;IACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,+CAA+C;IAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAMD;;;;;;GAMG;AACH,MAAM,WAAW,2BAA4B,SAAQ,kBAAkB;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBACf,SAAQ,kBAAkB,EAAE,iBAAiB;IAC7C,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;CAAG;AAElE;;;;;;GAMG;AACH,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBACf,SAAQ,iBAAiB,EAAE,kBAAkB;IAC7C,SAAS,EAAE,aAAa,CAAC;IACzB,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;CAClD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;IACjC,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAClC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,uDAAuD;IACvD,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACjC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC,CAAC;CACJ;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,0BAA2B,SAAQ,kBAAkB;IACpE,iEAAiE;IACjE,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,yCAAyC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -1 +1 @@
1
- import"@donotdev/components";import{isDev as r}from"@donotdev/core";function t(e){return!(r()||e==="modal")}function o(e){return e||(r()?"popup":"redirect")}import{AUTH_PARTNER_STATE as i}from"@donotdev/core";const n={VERIFIED:"verified",PENDING:"pending",ERROR:"error"};export{n as EMAIL_VERIFICATION_STATUS,i as PARTNER_STATE,o as getAuthMethod,t as getDefaultUseRedirect};
1
+ import"@donotdev/components";import{isDev as t}from"@donotdev/core";function n(e){return!(t()||e==="modal")}function u(e){return e||(t()?"popup":"redirect")}import{AUTH_PARTNER_STATE as s}from"@donotdev/core";const f={VERIFIED:"verified",PENDING:"pending",ERROR:"error"};export{f as EMAIL_VERIFICATION_STATUS,s as PARTNER_STATE,u as getAuthMethod,n as getDefaultUseRedirect};
@@ -1 +1 @@
1
- "use client";import{useState as I,useEffect as k,useCallback as s}from"react";import{safeSessionStorage as e,handleError as p,isClient as t}from"@donotdev/core";import{getAuthMethod as L}from"../constants";import{useAuth as a}from"../useAuth";function v(){const r=a("signInWithPartner"),c=a("user"),[i,o]=I(null);k(()=>{if(t()){try{const n=e.getItem("accountLinkingInfo");if(n){const h=JSON.parse(n);o(h)}}catch{}return()=>{if(!t())return;const n=e.getItem("accountLinkingInfo");if(n)try{JSON.parse(n).isRequired||e.removeItem("accountLinkingInfo")}catch{}}}},[c]);const u=s(async()=>{if(!(!i||!i.isRequired))try{const{existingProvider:n}=i;if(n==="password"||n==="emailLink")return;await r(n,L())}catch(n){p(n)}},[i,r]),l=s(()=>{t()&&(e.removeItem("accountLinkingInfo"),o(null))},[]),f=i?.isRequired||!1,g=i?.email||null,m=i?.existingProvider||null,d=i?.newProvider||null;return{accountLinking:i,isRequired:f,email:g,existingProvider:m,newProvider:d,handleSignInWithExistingProvider:u,clearAccountLinking:l}}export{v as useAccountLinking};
1
+ "use client";import{useState as p,useEffect as h,useCallback as u}from"react";import{safeSessionStorage as e,handleError as L,isClient as t}from"@donotdev/core";import{getAuthMethod as I}from"../constants";import{useAuth as a}from"../useAuth";function x(){const r=a("signInWithPartner"),o=a("user"),[i,s]=p(null);h(()=>{if(t()){try{const n=e.getItem("accountLinkingInfo");if(n){const c=JSON.parse(n);s(c)}}catch{}return()=>{if(!t())return;const n=e.getItem("accountLinkingInfo");if(n)try{JSON.parse(n).isRequired||e.removeItem("accountLinkingInfo")}catch{}}}},[o]);const l=u(async()=>{if(!(!i||!i.isRequired))try{const{existingProvider:n}=i;if(n==="password"||n==="emailLink")return;await r(n,I())}catch(n){L(n)}},[i,r]),g=u(()=>{t()&&(e.removeItem("accountLinkingInfo"),s(null))},[]),f=i?.isRequired||!1,d=i?.email||null,m=i?.existingProvider||null,k=i?.newProvider||null;return{accountLinking:i,isRequired:f,email:d,existingProvider:m,newProvider:k,handleSignInWithExistingProvider:l,clearAccountLinking:g}}export{x as useAccountLinking};
@@ -1 +1 @@
1
- "use client";import{useState as l,useCallback as t}from"react";function g({defaultValue:r="popup"}={}){const[o,e]=l(r),u=o==="redirect",d=o==="popup",i=t(()=>{e(p=>p==="redirect"?"popup":"redirect")},[]),s=t(()=>{e("redirect")},[]),a=t(()=>{e("popup")},[]),c=t(p=>{e(p?"redirect":"popup")},[]);return{isRedirectMode:u,isPopupMode:d,authMethod:o,toggleMode:i,setRedirectMode:s,setPopupMode:a,handleToggleChange:c}}export{g as useAuthMethodToggle};
1
+ "use client";import{useState as h,useCallback as t}from"react";function g({defaultValue:c="popup"}={}){const[o,e]=h(c),r=o==="redirect",d=o==="popup",s=t(()=>{e(p=>p==="redirect"?"popup":"redirect")},[]),u=t(()=>{e("redirect")},[]),n=t(()=>{e("popup")},[]),i=t(p=>{e(p?"redirect":"popup")},[]);return{isRedirectMode:r,isPopupMode:d,authMethod:o,toggleMode:s,setRedirectMode:u,setPopupMode:n,handleToggleChange:i}}export{g as useAuthMethodToggle};
@@ -1 +1 @@
1
- "use client";import{useCallback as t}from"react";import"../constants";import{useAuth as o}from"../useAuth";function I(r,g={}){const h=o("getPartnerState"),e=o("setPartnerState"),d=o("signInWithPartner"),i=o("partnerError"),{onSuccess:s,onError:l}=g,u=h(r),p=u==="authenticated",m=u==="loading",n=i?.partnerId===r,E=n&&i?.error?new Error(i.error):null,c=t(()=>{n&&e(r,"idle")},[n,r,e]),S=t(()=>{e(r,"loading")},[r,e]),f=t(()=>{e(r,"idle")},[r,e]),A=t(async P=>{n&&c();try{e(r,"loading");const a=await d(r,P);if(a===null){e(r,"idle");return}a&&s&&s(a)}catch(a){e(r,"error",a),l&&l(a)}},[r,n,c,e,d,s,l]);return{partnerState:u,isAuthenticated:p,isAuthenticating:m,hasError:n,error:E,handleSignIn:A,clearError:c,setLoading:S,setIdle:f}}export{I as useAuthPartner};
1
+ "use client";import{useCallback as e}from"react";import"../constants";import{useAuth as s}from"../useAuth";function x(t,h={}){const f=s("getPartnerState"),r=s("setPartnerState"),g=s("signInWithPartner"),i=s("partnerError"),{onSuccess:c,onError:a}=h,l=f(t),P=l==="authenticated",S=l==="loading",n=i?.partnerId===t,m=n&&i?.error?new Error(i.error):null,u=e(()=>{n&&r(t,"idle")},[n,t,r]),E=e(()=>{r(t,"loading")},[t,r]),A=e(()=>{r(t,"idle")},[t,r]),w=e(async y=>{n&&u();try{r(t,"loading");const o=await g(t,y);if(o===null){r(t,"idle");return}o&&c&&c(o)}catch(o){r(t,"error",o),a&&a(o)}},[t,n,u,r,g,c,a]);return{partnerState:l,isAuthenticated:P,isAuthenticating:S,hasError:n,error:m,handleSignIn:w,clearError:u,setLoading:E,setIdle:A}}export{x as useAuthPartner};
@@ -1 +1 @@
1
- "use client";import{useState as o}from"react";import{useAuth as f}from"../useAuth";function A(){const c=f("deleteAccount"),[r,e]=o(!1),[u,t]=o(!1),[i,n]=o(!1),[m,l]=o(null);return{showConfirmDialog:r,showPasswordDialog:u,isDeleting:i,error:m,startDeleteFlow:()=>{l(null),e(!0)},confirmDelete:async D=>{n(!0),l(null);try{await c(D),e(!1),t(!1)}catch(a){const s=a.message||a.message;s==="REQUIRES_PASSWORD"?(e(!1),t(!0)):s==="REAUTH_CANCELLED"?(e(!1),t(!1)):l(s||"Failed to delete account")}finally{n(!1)}},cancel:()=>{e(!1),t(!1),l(null)}}}export{A as useDeleteAccount};
1
+ "use client";import{useState as l}from"react";import{useAuth as m}from"../useAuth";function E(){const r=m("deleteAccount"),[c,e]=l(!1),[f,s]=l(!1),[i,a]=l(!1),[u,t]=l(null);return{showConfirmDialog:c,showPasswordDialog:f,isDeleting:i,error:u,startDeleteFlow:()=>{t(null),e(!0)},confirmDelete:async D=>{a(!0),t(null);try{await r(D),e(!1),s(!1)}catch(n){const o=n.message||n.message;o==="REQUIRES_PASSWORD"?(e(!1),s(!0)):o==="REAUTH_CANCELLED"?(e(!1),s(!1)):t(o||"Failed to delete account")}finally{a(!1)}},cancel:()=>{e(!1),s(!1),t(null)}}}export{E as useDeleteAccount};
@@ -1 +1 @@
1
- "use client";import{useEffect as g,useState as t,useCallback as E}from"react";import{handleError as k}from"@donotdev/core";import{useAuth as s}from"../useAuth";function l(){const o=s("isSignInWithEmailLink"),a=s("signInWithEmailLink"),[r,n]=t(!1),[m,e]=t(null),c=o();g(()=>{if(typeof window<"u"){const i=localStorage.getItem("emailForSignIn");i&&e(i)}},[]);const u=E(async i=>{if(i){n(!0);try{(await a(i))?.success&&(localStorage.removeItem("emailForSignIn"),e(null))}catch(f){k(f)}finally{n(!1)}}},[a]);return{isEmailLink:c,isProcessing:r,email:m,completeEmailLinkSignIn:u}}var I=l;export{I as default,l as useEmailLinkAuth};
1
+ "use client";import{useEffect as f,useState as l,useCallback as g}from"react";import{handleError as E}from"@donotdev/core";import{useAuth as o}from"../useAuth";function k(){const r=o("isSignInWithEmailLink"),n=o("signInWithEmailLink"),[a,e]=l(!1),[m,t]=l(null),c=r();f(()=>{if(typeof window<"u"){const i=localStorage.getItem("emailForSignIn");i&&t(i)}},[]);const u=g(async i=>{if(i){e(!0);try{(await n(i))?.success&&(localStorage.removeItem("emailForSignIn"),t(null))}catch(s){E(s)}finally{e(!1)}}},[n]);return{isEmailLink:c,isProcessing:a,email:m,completeEmailLinkSignIn:u}}var L=k;export{L as default,k as useEmailLinkAuth};
@@ -1 +1 @@
1
- "use client";import{useState as r,useCallback as l}from"react";import{handleError as A}from"@donotdev/core";import{useAuth as f}from"../useAuth";function S(g={}){const t=f("sendSignInLinkToEmail"),E=f("isAvailable"),{onSuccess:s,onError:o,actionCodeSettings:m}=g,[e,h]=r(""),[u,d]=r(!1),[p,c]=r(!1),[k,n]=r(null),a=e.trim().length>0&&e.includes("@"),y=a&&!u&&E,L=l(()=>{n(null)},[]),b=l(async w=>{if(w.preventDefault(),!a){n("Please enter a valid email address");return}d(!0),n(null);try{typeof window<"u"&&localStorage.setItem("emailForSignIn",e.trim()),await t(e.trim(),m),c(!0),s?.()}catch(i){const I=i instanceof Error?i.message:"Failed to send sign-in link";n(I),o?.(i),A(i)}finally{d(!1)}},[e,a,t,m,s,o]),v=l(()=>{c(!1),n(null)},[]);return{email:e,setEmail:h,isLoading:u,isSent:p,error:k,handleSendLink:b,handleResend:v,clearError:L,isValid:a,canSubmit:y}}var F=S;export{F as default,S as useEmailLinkForm};
1
+ "use client";import{useState as i,useCallback as r}from"react";import{handleError as w}from"@donotdev/core";import{useAuth as f}from"../useAuth";function A(g={}){const o=f("sendSignInLinkToEmail"),S=f("isAvailable"),{onSuccess:a,onError:l,actionCodeSettings:c}=g,[e,E]=i(""),[d,u]=i(!1),[p,m]=i(!1),[h,n]=i(null),t=e.trim().length>0&&e.includes("@"),k=t&&!d&&S,I=r(()=>{n(null)},[]),L=r(async v=>{if(v.preventDefault(),!t){n("Please enter a valid email address");return}u(!0),n(null);try{typeof window<"u"&&localStorage.setItem("emailForSignIn",e.trim()),await o(e.trim(),c),m(!0),a?.()}catch(s){const y=s instanceof Error?s.message:"Failed to send sign-in link";n(y),l?.(s),w(s)}finally{u(!1)}},[e,t,o,c,a,l]),b=r(()=>{m(!1),n(null)},[]);return{email:e,setEmail:E,isLoading:d,isSent:p,error:h,handleSendLink:L,handleResend:b,clearError:I,isValid:t,canSubmit:k}}var T=A;export{T as default,A as useEmailLinkForm};
@@ -1 +1 @@
1
- "use client";import{useState as s,useEffect as w,useMemo as h}from"react";import{handleError as C,isClient as c}from"@donotdev/core";function S({checkGoogleServices:a=!0,onError:i}={}){const[n,u]=s(!1),[l,d]=s(!1),[m,p]=s(null);w(()=>{c()&&(async()=>{try{const e="IdentityCredential"in window;let o=!0;if(a){const r=new Promise(t=>setTimeout(t,2e3));await Promise.race([new Promise(t=>{const g=setInterval(()=>{window.google?.accounts?.id&&(clearInterval(g),t(!0))},100)}),r]),o=!!window.google?.accounts?.id}u(e&&o),d(!0)}catch(e){const o=C(e,{userMessage:"Failed to detect FedCM support",context:{operation:"fedcm_detection"},severity:"warning"});p(o),d(!0),i?.(o)}})()},[a,i]);const f=h(()=>{if(!c())return{name:"Unknown",isSupported:!1,recommendation:"Loading..."};const e=navigator.userAgent;let o="Unknown",r="Please update your browser";if(e.includes("Chrome/")){const t=parseInt(e.match(/Chrome\/(\d+)/)?.[1]||"0");o=`Chrome ${t}`,r=t>=116?"Supported":"Please update to Chrome 116 or later"}else if(e.includes("Edg/")){const t=parseInt(e.match(/Edg\/(\d+)/)?.[1]||"0");o=`Edge ${t}`,r=t>=116?"Supported":"Please update to Edge 116 or later"}else e.includes("Safari/")&&!e.includes("Chrome")?(o="Safari",r="Not supported yet. Please use Chrome or Edge"):e.includes("Firefox/")&&(o="Firefox",r="Not supported yet. Please use Chrome or Edge");return{name:o,isSupported:n,recommendation:r}},[n]);return{isSupported:n,isReady:l,error:m,browserInfo:f}}export{S as useFedCM};
1
+ "use client";import{useState as i,useEffect as C,useMemo as y}from"react";import{handleError as S,isClient as c}from"@donotdev/core";function P({checkGoogleServices:a=!0,onError:d}={}){const[s,l]=i(!1),[p,u]=i(!1),[m,f]=i(null);C(()=>{if(!c())return;(async()=>{try{const t="IdentityCredential"in window;let e=!0;if(a){const w=new Promise(n=>setTimeout(n,2e3));await Promise.race([new Promise(n=>{const h=setInterval(()=>{window.google?.accounts?.id&&(clearInterval(h),n(!0))},100)}),w]),e=!!window.google?.accounts?.id}l(t&&e),u(!0)}catch(t){const e=S(t,{userMessage:"Failed to detect FedCM support",context:{operation:"fedcm_detection"},severity:"warning"});f(e),u(!0),d?.(e)}})()},[a,d]);const g=y(()=>{if(!c())return{name:"Unknown",isSupported:!1,recommendation:"Loading..."};const o=navigator.userAgent;let t="Unknown",e="Please update your browser";if(o.includes("Chrome/")){const r=parseInt(o.match(/Chrome\/(\d+)/)?.[1]||"0");t=`Chrome ${r}`,e=r>=116?"Supported":"Please update to Chrome 116 or later"}else if(o.includes("Edg/")){const r=parseInt(o.match(/Edg\/(\d+)/)?.[1]||"0");t=`Edge ${r}`,e=r>=116?"Supported":"Please update to Edge 116 or later"}else o.includes("Safari/")&&!o.includes("Chrome")?(t="Safari",e="Not supported yet. Please use Chrome or Edge"):o.includes("Firefox/")&&(t="Firefox",e="Not supported yet. Please use Chrome or Edge");return{name:t,isSupported:s,recommendation:e}},[s]);return{isSupported:s,isReady:p,error:m,browserInfo:g}}export{P as useFedCM};
@@ -1 +1 @@
1
- {"version":3,"file":"useGoogleOneTap.d.ts","sourceRoot":"","sources":["../../src/hooks/useGoogleOneTap.ts"],"names":[],"mappings":"AA+IA;;GAEG;AACH,UAAU,sBAAsB;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,uCAAuC;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,uBAAuB;IACvB,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,sCAAsC;IACtC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,UAAU,qBAAqB;IAC7B,0CAA0C;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAElB,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;IAEnB,sCAAsC;IACtC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,iCAAiC;IACjC,IAAI,EAAE,GAAG,CAAC;IAEV,kCAAkC;IAClC,MAAM,EAAE,OAAO,CAAC;IAEhB,qCAAqC;IACrC,cAAc,EAAE,OAAO,CAAC;IAExB,kDAAkD;IAClD,UAAU,EAAE,OAAO,CAAC;IAEpB,8CAA8C;IAC9C,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAErD,gCAAgC;IAChC,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB,oCAAoC;IACpC,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,iCAAiC;IACjC,UAAU,EAAE,OAAO,CAAC;IAEpB,6CAA6C;IAC7C,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF,+DAA+D;IAC/D,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB,6CAA6C;IAC7C,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAiB,EACjB,kBAAyB,EACzB,cAAc,EACd,QAAgB,EAChB,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,QAAQ,EACR,UAAkB,GACnB,GAAE,sBAA2B,GAAG,qBAAqB,CAiWrD"}
1
+ {"version":3,"file":"useGoogleOneTap.d.ts","sourceRoot":"","sources":["../../src/hooks/useGoogleOneTap.ts"],"names":[],"mappings":"AA8IA;;GAEG;AACH,UAAU,sBAAsB;IAC9B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,uCAAuC;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,uBAAuB;IACvB,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEjC,sCAAsC;IACtC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,UAAU,qBAAqB;IAC7B,0CAA0C;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAElB,2CAA2C;IAC3C,SAAS,EAAE,OAAO,CAAC;IAEnB,sCAAsC;IACtC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,iCAAiC;IACjC,IAAI,EAAE,GAAG,CAAC;IAEV,kCAAkC;IAClC,MAAM,EAAE,OAAO,CAAC;IAEhB,qCAAqC;IACrC,cAAc,EAAE,OAAO,CAAC;IAExB,kDAAkD;IAClD,UAAU,EAAE,OAAO,CAAC;IAEpB,8CAA8C;IAC9C,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAErD,gCAAgC;IAChC,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB,oCAAoC;IACpC,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,iCAAiC;IACjC,UAAU,EAAE,OAAO,CAAC;IAEpB,6CAA6C;IAC7C,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF,+DAA+D;IAC/D,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB,6CAA6C;IAC7C,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAiB,EACjB,kBAAyB,EACzB,cAAc,EACd,QAAgB,EAChB,SAAS,EACT,OAAO,EACP,oBAAoB,EACpB,QAAQ,EACR,UAAkB,GACnB,GAAE,sBAA2B,GAAG,qBAAqB,CAmWrD"}
@@ -1 +1 @@
1
- "use client";import{useState as L,useEffect as k,useRef as _,useCallback as B,startTransition as y,useMemo as K}from"react";import{handleError as p,getOAuthClientId as te,getEnabledAuthPartners as re,isClient as ne,useTranslation as ie,useScriptLoader as ae}from"@donotdev/core";import{useIsDark as se}from"@donotdev/components";import{useAuth as Q}from"../useAuth";import{useFedCM as ce}from"./useFedCM";function le({clientId:U,autoSelect:x=!0,cancelOnTapOutside:C=!0,promptParentId:S,disabled:d=!1,onSuccess:R,onError:s,allowedParentOrigins:A,cspNonce:I,clientOnly:F=!1}={}){const{t:r}=ie("dndev"),T=Q("user"),P=Q("signInWithGoogleCredential"),b=se(),c=U||te("google"),D=re().includes("google"),{isSupported:t,isReady:g,error:q,browserInfo:V}=ce({checkGoogleServices:!0,onError:e=>{const a=p(e,{userMessage:r("auth.fedcmNotSupported","Your browser does not support Google One Tap"),context:{operation:"fedcm_detection"},severity:"warning"});s?.(a)}}),{isLoading:X,isLoaded:M,error:z,isReady:N,load:Z,loadTriggered:$}=ae("https://accounts.google.com/gsi/client",{enabled:D&&!!c&&!d&&g&&t,nonce:I,checkExisting:!0,isLoaded:()=>!!window.google?.accounts?.id,onError:e=>{const a=p(e,{userMessage:r("auth.googleScriptLoadError","Failed to load Google Identity Services"),context:{operation:"google_script_load"},severity:"error"});s?.(a)}}),[O,J]=L(!1),[Y,H]=L(null),ee=_(null),i=_(!1),l=_(null),E=_(0),[W,m]=L(!1),w="gsi_hide_until",de=600*1e3,v=K(()=>D&&!!c&&!d&&!T&&t&&(F?O:!0)&&!W,[D,c,d,T,t,F,O,W]),oe=K(()=>!t&&g?new Error(r("auth.fedcmRequired","Google One Tap requires a modern browser (Chrome 116+ or Edge 116+)")):z||q||Y,[z,q,Y,t,g,r]),f=B(async e=>{try{if(!e||typeof e!="string")throw new Error("Invalid credential format");await P(e),y(()=>{R?.(e)})}catch(a){const n=p(a,{userMessage:r("auth.googleOneTapError","Google One Tap authentication failed"),context:{operation:"google_one_tap_signin",credentialLength:e?.length||0},severity:"error"});throw y(()=>{H(n)}),s?.(n),n}},[P,R,s,r]),G=B(()=>{if(!ne()||!N||!c||!window.google?.accounts?.id||!t||i.current)return;const e=Date.now(),a=e-E.current,n=600*1e3;if(!(a<n&&E.current>0))try{i.current=!0,E.current=e;const h={client_id:c,callback:async o=>{try{await f(o.credential)}catch(j){p(j,{userMessage:"Google One Tap credential handling failed",context:{operation:"google_one_tap_callback"},severity:"error"})}},auto_select:x,cancel_on_tap_outside:C,context:"signin",ux_mode:"popup",itp_support:!0,state:b?"dark":"light",use_fedcm_for_prompt:!0,allowed_parent_origins:A,csp_nonce:I,moment_callback:o=>{const j=o.getMomentType();if(o.isDisplayMoment?.()){if(!o.isDisplayed?.()&&o.getNotDisplayedReason){i.current=!1;try{const u=Date.now()+n;localStorage.setItem(w,String(u)),m(!0)}catch{}}}else if(o.isSkippedMoment?.()){i.current=!1;try{const u=Date.now()+n;localStorage.setItem(w,String(u)),m(!0)}catch{}}else if(o.isDismissedMoment?.()){i.current=!1;try{const u=Date.now()+n;localStorage.setItem(w,String(u)),m(!0)}catch{}}}};S&&(h.prompt_parent_id=S),window.google.accounts.id.initialize(h),l.current&&window.clearTimeout(l.current),l.current=window.setTimeout(()=>{window.google?.accounts?.id?.prompt(o=>{o?.credential&&f(o.credential)}),l.current=null},100)}catch(h){const o=p(h,{userMessage:r("auth.googleOneTapInitError","Failed to initialize Google One Tap"),context:{operation:"google_one_tap_initialize",fedcmSupported:t},severity:"error"});y(()=>{H(o)}),s?.(o),i.current=!1}},[N,c,t,x,C,S,b,f,s,A,I,r]);return k(()=>{if(typeof window<"u"){y(()=>{J(!0)});try{const e=Number(localStorage.getItem(w)||0);m(e>Date.now())}catch{}}},[]),k(()=>{M&&!d&&v&&g&&G()},[M,d,v,g,G]),k(()=>()=>{l.current&&window.clearTimeout(l.current),i.current=!1},[]),{isLoaded:M,isLoading:X,error:oe,user:T,isDark:b,fedcmSupported:t,isHydrated:O,containerRef:ee,initialize:G,handleCredential:f,shouldShow:v,browserInfo:V,triggerLoad:Z,loadTriggered:$}}export{le as useGoogleOneTap};
1
+ "use client";import{useState as b,useEffect as k,useRef as _,useCallback as K,startTransition as y,useMemo as j}from"react";import{handleError as p,getOAuthClientId as re,getEnabledAuthPartners as oe,isClient as ne,useTranslation as ie,useScriptLoader as se}from"@donotdev/core";import{useIsDark as ae}from"@donotdev/components";import{useAuth as B}from"../useAuth";import{useFedCM as ce}from"./useFedCM";function he({clientId:J,autoSelect:v=!0,cancelOnTapOutside:x=!0,promptParentId:T,disabled:u=!1,onSuccess:O,onError:a,allowedParentOrigins:N,cspNonce:E,clientOnly:z=!1}={}){const{t:o}=ie("auth"),S=B("user"),A=B("signInWithGoogleCredential"),I=ae(),c=J||re("google"),L=oe().includes("google"),{isSupported:r,isReady:d,error:U,browserInfo:Q}=ce({checkGoogleServices:!0,onError:e=>{const s=p(e,{userMessage:o("auth.fedcmNotSupported","Your browser does not support Google One Tap"),context:{operation:"fedcm_detection"},severity:"warning"});a?.(s)}}),{isLoading:V,isLoaded:M,error:F,isReady:W,load:X,loadTriggered:Z}=se("https://accounts.google.com/gsi/client",{enabled:L&&!!c&&!u&&d&&r,nonce:E,checkExisting:!0,isLoaded:()=>!!window.google?.accounts?.id,onError:e=>{const s=p(e,{userMessage:o("auth.googleScriptLoadError","Failed to load Google Identity Services"),context:{operation:"google_script_load"},severity:"error"});a?.(s)}}),[D,$]=b(!1),[q,H]=b(null),ee=_(null),i=_(!1),l=_(null),C=_(0),[P,f]=b(!1),m="gsi_hide_until",ue=600*1e3,G=j(()=>L&&!!c&&!u&&!S&&r&&(z?D:!0)&&!P,[L,c,u,S,r,z,D,P]),te=j(()=>!r&&d?new Error(o("auth.fedcmRequired","Google One Tap requires a modern browser (Chrome 116+ or Edge 116+)")):F||U||q,[F,U,q,r,d,o]),h=K(async e=>{try{if(!e||typeof e!="string")throw new Error("Invalid credential format");await A(e),y(()=>{O?.(e)})}catch(s){const n=p(s,{userMessage:o("auth.googleOneTapError","Google One Tap authentication failed"),context:{operation:"google_one_tap_signin",credentialLength:e?.length||0},severity:"error"});throw y(()=>{H(n)}),a?.(n),n}},[A,O,a,o]),R=K(()=>{if(!ne()||!W||!c||!window.google?.accounts?.id||!r||i.current)return;const e=Date.now(),s=e-C.current,n=600*1e3;if(!(s<n&&C.current>0))try{i.current=!0,C.current=e;const w={client_id:c,callback:async t=>{try{await h(t.credential)}catch(Y){p(Y,{userMessage:"Google One Tap credential handling failed",context:{operation:"google_one_tap_callback"},severity:"error"})}},auto_select:v,cancel_on_tap_outside:x,context:"signin",ux_mode:"popup",itp_support:!0,state:I?"dark":"light",use_fedcm_for_prompt:!0,allowed_parent_origins:N,csp_nonce:E,moment_callback:t=>{const Y=t.getMomentType();if(t.isDisplayMoment?.()){if(!t.isDisplayed?.()){if(t.getNotDisplayedReason){i.current=!1;try{const g=Date.now()+n;localStorage.setItem(m,String(g)),f(!0)}catch{}}}}else if(t.isSkippedMoment?.()){i.current=!1;try{const g=Date.now()+n;localStorage.setItem(m,String(g)),f(!0)}catch{}}else if(t.isDismissedMoment?.()){i.current=!1;try{const g=Date.now()+n;localStorage.setItem(m,String(g)),f(!0)}catch{}}}};T&&(w.prompt_parent_id=T),window.google.accounts.id.initialize(w),l.current&&window.clearTimeout(l.current),l.current=window.setTimeout(()=>{window.google?.accounts?.id?.prompt(t=>{t?.credential&&h(t.credential)}),l.current=null},100)}catch(w){const t=p(w,{userMessage:o("auth.googleOneTapInitError","Failed to initialize Google One Tap"),context:{operation:"google_one_tap_initialize",fedcmSupported:r},severity:"error"});y(()=>{H(t)}),a?.(t),i.current=!1}},[W,c,r,v,x,T,I,h,a,N,E,o]);return k(()=>{if(typeof window<"u"){y(()=>{$(!0)});try{const e=Number(localStorage.getItem(m)||0);f(e>Date.now())}catch{}}},[]),k(()=>{M&&!u&&G&&d&&R()},[M,u,G,d,R]),k(()=>()=>{l.current&&window.clearTimeout(l.current),i.current=!1},[]),{isLoaded:M,isLoading:V,error:te,user:S,isDark:I,fedcmSupported:r,isHydrated:D,containerRef:ee,initialize:R,handleCredential:h,shouldShow:G,browserInfo:Q,triggerLoad:X,loadTriggered:Z}}export{he as useGoogleOneTap};
@@ -1 +1 @@
1
- "use client";import{useState as r,useEffect as w}from"react";import{isClient as s}from"@donotdev/core";function l(){const[n,o]=r(()=>s()?navigator.onLine:!0),[e,f]=r("unknown");return w(()=>{if(!s())return;const i=()=>o(!0),t=()=>o(!1),c=()=>{if("connection"in navigator){const a=navigator.connection;f(a.effectiveType||"unknown")}};return window.addEventListener("online",i),window.addEventListener("offline",t),c(),()=>{window.removeEventListener("online",i),window.removeEventListener("offline",t)}},[]),{online:n,connectionType:e,isSlowConnection:e==="slow-2g"||e==="2g",isOnline:n,isOffline:!n}}export{l as useNetworkStatus};
1
+ "use client";import{useState as s,useEffect as u}from"react";import{isClient as c}from"@donotdev/core";function O(){const[n,o]=s(()=>c()?navigator.onLine:!0),[e,r]=s("unknown");return u(()=>{if(!c())return;const t=()=>o(!0),i=()=>o(!1),f=()=>{if("connection"in navigator){const l=navigator.connection;r(l.effectiveType||"unknown")}};return window.addEventListener("online",t),window.addEventListener("offline",i),f(),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",i)}},[]),{online:n,connectionType:e,isSlowConnection:e==="slow-2g"||e==="2g",isOnline:n,isOffline:!n}}export{O as useNetworkStatus};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{useAuth as a}from"./useAuth";import{useDeleteAccount as e}from"./hooks/useDeleteAccount";import{getAuthState as t,subscribeToAuth as s}from"./authHelpers";import{AuthPartnerButton as o,ConfirmDeleteDialog as u,FeatureGuard as r,GoogleOneTap as i,LoginModal as l,MultipleAuthProviders as n,ReauthDialog as A}from"./components";export{o as AuthPartnerButton,u as ConfirmDeleteDialog,r as FeatureGuard,i as GoogleOneTap,l as LoginModal,n as MultipleAuthProviders,A as ReauthDialog,t as getAuthState,s as subscribeToAuth,a as useAuth,e as useDeleteAccount};
1
+ import{useAuth as o}from"./useAuth";import{useDeleteAccount as u}from"./hooks/useDeleteAccount";import{getAuthState as l,subscribeToAuth as i}from"./authHelpers";import{AuthPartnerButton as n,ConfirmDeleteDialog as p,FeatureGuard as A,GoogleOneTap as f,LoginModal as g,MultipleAuthProviders as m,ReauthDialog as s}from"./components";export{n as AuthPartnerButton,p as ConfirmDeleteDialog,A as FeatureGuard,f as GoogleOneTap,g as LoginModal,m as MultipleAuthProviders,s as ReauthDialog,l as getAuthState,i as subscribeToAuth,o as useAuth,u as useDeleteAccount};