@fayz-ai/auth 0.44.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/README.md +4 -0
  2. package/dist/chunk-2MO4QTQA.js +78 -0
  3. package/dist/chunk-2MO4QTQA.js.map +1 -0
  4. package/dist/chunk-2S7KVJQO.js +18 -0
  5. package/dist/chunk-2S7KVJQO.js.map +1 -0
  6. package/dist/chunk-4HVM2UJS.js +30 -0
  7. package/dist/chunk-4HVM2UJS.js.map +1 -0
  8. package/dist/chunk-55RFOMW5.js +15 -0
  9. package/dist/chunk-55RFOMW5.js.map +1 -0
  10. package/dist/chunk-7JYNJQJJ.js +138 -0
  11. package/dist/chunk-7JYNJQJJ.js.map +1 -0
  12. package/dist/chunk-BGCCXJJA.js +174 -0
  13. package/dist/chunk-BGCCXJJA.js.map +1 -0
  14. package/dist/chunk-CV4LQYNX.js +109 -0
  15. package/dist/chunk-CV4LQYNX.js.map +1 -0
  16. package/dist/chunk-ERIPMYL2.js +137 -0
  17. package/dist/chunk-ERIPMYL2.js.map +1 -0
  18. package/dist/chunk-HKILBDG2.js +158 -0
  19. package/dist/chunk-HKILBDG2.js.map +1 -0
  20. package/dist/chunk-KLQDHFVS.js +11 -0
  21. package/dist/chunk-KLQDHFVS.js.map +1 -0
  22. package/dist/chunk-OI74ER2Z.js +31 -0
  23. package/dist/chunk-OI74ER2Z.js.map +1 -0
  24. package/dist/chunk-Q6DFI35B.js +187 -0
  25. package/dist/chunk-Q6DFI35B.js.map +1 -0
  26. package/dist/chunk-QJRTW7Q3.js +90 -0
  27. package/dist/chunk-QJRTW7Q3.js.map +1 -0
  28. package/dist/chunk-REU4D5UF.js +44 -0
  29. package/dist/chunk-REU4D5UF.js.map +1 -0
  30. package/dist/chunk-SMFXGZN7.js +18 -0
  31. package/dist/chunk-SMFXGZN7.js.map +1 -0
  32. package/dist/chunk-W35GQEGU.js +80 -0
  33. package/dist/chunk-W35GQEGU.js.map +1 -0
  34. package/dist/chunk-W7565FXD.js +64 -0
  35. package/dist/chunk-W7565FXD.js.map +1 -0
  36. package/dist/chunk-WZVZMNLB.js +48 -0
  37. package/dist/chunk-WZVZMNLB.js.map +1 -0
  38. package/dist/components/AmbassadorBubbles.d.ts +9 -0
  39. package/dist/components/AmbassadorBubbles.d.ts.map +1 -0
  40. package/dist/components/AmbassadorBubbles.js +3 -0
  41. package/dist/components/AmbassadorBubbles.js.map +1 -0
  42. package/dist/components/TrialPromise.d.ts +12 -0
  43. package/dist/components/TrialPromise.d.ts.map +1 -0
  44. package/dist/components/TrialPromise.js +3 -0
  45. package/dist/components/TrialPromise.js.map +1 -0
  46. package/dist/components/form-classes.d.ts +3 -0
  47. package/dist/components/form-classes.d.ts.map +1 -0
  48. package/dist/components/form-classes.js +3 -0
  49. package/dist/components/form-classes.js.map +1 -0
  50. package/dist/context.js +5 -0
  51. package/dist/context.js.map +1 -0
  52. package/dist/data/mock.d.ts.map +1 -0
  53. package/dist/data/mock.js +3 -0
  54. package/dist/data/mock.js.map +1 -0
  55. package/dist/data/supabase.d.ts.map +1 -0
  56. package/dist/data/supabase.js +4 -0
  57. package/dist/data/supabase.js.map +1 -0
  58. package/dist/domain/auth-config.d.ts +71 -0
  59. package/dist/domain/auth-config.d.ts.map +1 -0
  60. package/dist/domain/auth-config.js +3 -0
  61. package/dist/domain/auth-config.js.map +1 -0
  62. package/dist/domain/auth-link.d.ts +26 -0
  63. package/dist/domain/auth-link.d.ts.map +1 -0
  64. package/dist/domain/auth-link.js +3 -0
  65. package/dist/domain/auth-link.js.map +1 -0
  66. package/dist/domain/password.d.ts +5 -0
  67. package/dist/domain/password.d.ts.map +1 -0
  68. package/dist/domain/password.js +3 -0
  69. package/dist/domain/password.js.map +1 -0
  70. package/dist/index.d.ts +8 -6
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +6 -573
  73. package/dist/index.js.map +1 -1
  74. package/dist/lib/runtime.d.ts +6 -0
  75. package/dist/lib/runtime.d.ts.map +1 -0
  76. package/dist/lib/runtime.js +51 -0
  77. package/dist/lib/runtime.js.map +1 -0
  78. package/dist/lib/url-intent.d.ts +1 -25
  79. package/dist/lib/url-intent.d.ts.map +1 -1
  80. package/dist/lib/url-intent.js +3 -0
  81. package/dist/lib/url-intent.js.map +1 -0
  82. package/dist/store.js +3 -0
  83. package/dist/store.js.map +1 -0
  84. package/dist/views/AuthCallbackPage.d.ts +7 -0
  85. package/dist/views/AuthCallbackPage.d.ts.map +1 -0
  86. package/dist/views/AuthCallbackPage.js +33 -0
  87. package/dist/views/AuthCallbackPage.js.map +1 -0
  88. package/dist/views/AuthGate.d.ts +9 -0
  89. package/dist/views/AuthGate.d.ts.map +1 -0
  90. package/dist/views/AuthGate.js +28 -0
  91. package/dist/views/AuthGate.js.map +1 -0
  92. package/dist/views/ForgotPasswordForm.d.ts +18 -0
  93. package/dist/views/ForgotPasswordForm.d.ts.map +1 -0
  94. package/dist/views/ForgotPasswordForm.js +7 -0
  95. package/dist/views/ForgotPasswordForm.js.map +1 -0
  96. package/dist/views/LoginForm.d.ts +16 -0
  97. package/dist/views/LoginForm.d.ts.map +1 -0
  98. package/dist/views/LoginForm.js +8 -0
  99. package/dist/views/LoginForm.js.map +1 -0
  100. package/dist/views/LoginPage.d.ts +34 -0
  101. package/dist/views/LoginPage.d.ts.map +1 -0
  102. package/dist/views/LoginPage.js +16 -0
  103. package/dist/views/LoginPage.js.map +1 -0
  104. package/dist/views/OAuthButtons.d.ts +18 -0
  105. package/dist/views/OAuthButtons.d.ts.map +1 -0
  106. package/dist/views/OAuthButtons.js +7 -0
  107. package/dist/views/OAuthButtons.js.map +1 -0
  108. package/dist/views/ResetPasswordForm.d.ts +6 -0
  109. package/dist/views/ResetPasswordForm.d.ts.map +1 -0
  110. package/dist/views/ResetPasswordForm.js +53 -0
  111. package/dist/views/ResetPasswordForm.js.map +1 -0
  112. package/dist/views/ResetPasswordPage.d.ts +7 -0
  113. package/dist/views/ResetPasswordPage.d.ts.map +1 -0
  114. package/dist/views/ResetPasswordPage.js +16 -0
  115. package/dist/views/ResetPasswordPage.js.map +1 -0
  116. package/dist/views/SetPasswordPage.d.ts +15 -0
  117. package/dist/views/SetPasswordPage.d.ts.map +1 -0
  118. package/dist/views/SetPasswordPage.js +9 -0
  119. package/dist/views/SetPasswordPage.js.map +1 -0
  120. package/dist/views/SignupForm.d.ts +24 -0
  121. package/dist/views/SignupForm.d.ts.map +1 -0
  122. package/dist/views/SignupForm.js +9 -0
  123. package/dist/views/SignupForm.js.map +1 -0
  124. package/dist/views/VerifyEmailNotice.d.ts +15 -0
  125. package/dist/views/VerifyEmailNotice.d.ts.map +1 -0
  126. package/dist/views/VerifyEmailNotice.js +6 -0
  127. package/dist/views/VerifyEmailNotice.js.map +1 -0
  128. package/dist/views/usePasswordSetupGate.d.ts +20 -0
  129. package/dist/views/usePasswordSetupGate.d.ts.map +1 -0
  130. package/dist/views/usePasswordSetupGate.js +27 -0
  131. package/dist/views/usePasswordSetupGate.js.map +1 -0
  132. package/package.json +14 -3
  133. package/dist/adapters/mock.d.ts.map +0 -1
  134. package/dist/adapters/supabase.d.ts.map +0 -1
  135. /package/dist/{adapters → data}/mock.d.ts +0 -0
  136. /package/dist/{adapters → data}/supabase.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/views/OAuthButtons.tsx"],"names":[],"mappings":";;;;AAMA,SAAS,cAAc,QAAA,EAA0B;AAC/C,EAAA,OAAO,QAAA,CAAS,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,QAAA,CAAS,MAAM,CAAC,CAAA;AAC5D;AAIA,SAAS,UAAA,CAAW,EAAE,SAAA,EAAU,EAA2B;AACzD,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAsB,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EAAO,KAAA,EAAM,4BAAA,EAA6B,aAAA,EAAW,IAAA,EACvG,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,kHAAA,EAAmH,IAAA,EAAK,SAAA,EAAU,CAAA;AAAA,oBAC1I,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,uIAAA,EAAwI,MAAK,SAAA,EAAU,CAAA;AAAA,oBAC/J,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,+HAAA,EAAgI,MAAK,SAAA,EAAU,CAAA;AAAA,oBACvJ,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,qIAAA,EAAsI,MAAK,SAAA,EAAU;AAAA,GAAA,EAC/J,CAAA;AAEJ;AAEA,IAAM,cAAA,GAAsF;AAAA,EAC1F,MAAA,EAAQ;AACV,CAAA;AAgBO,SAAS,YAAA,CAAa,EAAE,SAAA,GAAY,CAAC,QAAQ,CAAA,EAAG,QAAA,EAAU,UAAA,EAAY,eAAA,EAAgB,EAAsB;AACjH,EAAA,MAAM,EAAE,eAAA,EAAgB,GAAI,OAAA,EAAQ;AACpC,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,aACZ,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,QAAA,KAAa;AAC3B,IAAA,MAAM,IAAA,GAAO,UAAA,EAAY,QAAA,CAAS,QAAQ,CAAA,IAAK,KAAA;AAC/C,IAAA,MAAM,IAAA,GAAO,eAAe,QAAQ,CAAA;AACpC,IAAA,uBACE,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAW,CAAA,EAAG,WAAA,CAAY,SAAS,CAAC,CAAA,MAAA,CAAA;AAAA,QACpC,UAAU,QAAA,IAAY,IAAA;AAAA,QACtB,KAAA,EAAO,OAAO,4BAAA,GAAyB,MAAA;AAAA,QACvC,SAAS,MAAM;AACb,UAAA,IAAI,IAAA,EAAM;AACV,UAAA,MAAM,eAAA,GAAkB,eAAA,CAAgB,QAAQ,CAAA,GAAI,gBAAgB,QAAQ,CAAA,CAAA;AAAA,QAC9E,CAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,IAAA,oBAAQ,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAmB,CAAA;AAAA,UAAG,gBAAA;AAAA,UAChC,cAAc,QAAQ;AAAA;AAAA,OAAA;AAAA,MAXhC;AAAA,KAYP;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ","file":"chunk-WZVZMNLB.js","sourcesContent":["import * as React from 'react'\nimport { useAuth } from '../context'\nimport type { AuthProvider } from '@fayz-ai/core'\nimport type { OAuthProviderKey } from '../domain/auth-config'\nimport { buttonClass } from '../components/form-classes'\n\nfunction providerLabel(provider: string): string {\n return provider.charAt(0).toUpperCase() + provider.slice(1)\n}\n\n/** Google's own mark. A grey glyph next to \"Continuar com Google\" reads as a\n * placeholder, and their brand rules ask for this one. */\nfunction GoogleMark({ className }: { className?: string }) {\n return (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden>\n <path d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 01-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z\" fill=\"#4285F4\" />\n <path d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\" fill=\"#34A853\" />\n <path d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\" fill=\"#FBBC05\" />\n <path d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\" fill=\"#EA4335\" />\n </svg>\n )\n}\n\nconst PROVIDER_MARKS: Partial<Record<OAuthProviderKey, React.FC<{ className?: string }>>> = {\n google: GoogleMark,\n}\n\nexport interface OAuthButtonsProps {\n providers?: OAuthProviderKey[]\n disabled?: boolean\n /**\n * Providers that are on screen but cannot sign anybody in yet.\n *\n * Shown rather than hidden because the app declares them and the merchant asks\n * for them — but a button that opens a broken consent screen is worse than one\n * that says it is not ready. Enabling later is removing the id from this list.\n */\n comingSoon?: OAuthProviderKey[]\n onProviderClick?: (provider: AuthProvider) => void | Promise<void>\n}\n\nexport function OAuthButtons({ providers = ['google'], disabled, comingSoon, onProviderClick }: OAuthButtonsProps) {\n const { signInWithOAuth } = useAuth()\n return (\n <div className=\"space-y-2\">\n {providers.map((provider) => {\n const soon = comingSoon?.includes(provider) ?? false\n const Mark = PROVIDER_MARKS[provider]\n return (\n <button\n key={provider}\n type=\"button\"\n className={`${buttonClass('outline')} gap-2`}\n disabled={disabled || soon}\n title={soon ? 'Ainda não disponível' : undefined}\n onClick={() => {\n if (soon) return\n void (onProviderClick ? onProviderClick(provider) : signInWithOAuth(provider))\n }}\n >\n {Mark && <Mark className=\"h-4 w-4 shrink-0\" />}\n Continuar com {providerLabel(provider)}\n </button>\n )\n })}\n </div>\n )\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ import type { LoginAmbassador } from '../domain/auth-config';
3
+ export interface AmbassadorBubblesProps {
4
+ ambassadors?: LoginAmbassador[];
5
+ /** Optional social-proof caption shown beside the avatars, e.g. "+2 mil profissionais". */
6
+ label?: string;
7
+ }
8
+ export declare function AmbassadorBubbles({ ambassadors, label }: AmbassadorBubblesProps): React.JSX.Element | null;
9
+ //# sourceMappingURL=AmbassadorBubbles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmbassadorBubbles.d.ts","sourceRoot":"","sources":["../../src/components/AmbassadorBubbles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAwB5D,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAA;IAC/B,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,iBAAiB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,sBAAsB,4BA6B/E"}
@@ -0,0 +1,3 @@
1
+ export { AmbassadorBubbles } from '../chunk-REU4D5UF.js';
2
+ //# sourceMappingURL=AmbassadorBubbles.js.map
3
+ //# sourceMappingURL=AmbassadorBubbles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"AmbassadorBubbles.js"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The promise, where the form asks for the work.
3
+ *
4
+ * A sign-up screen with no reason on it is a form; the reason is the trial, and
5
+ * "sem cartão de crédito" is the half that removes the hesitation. One line, on
6
+ * the sign-up view only — over the sign-in form it would be selling something
7
+ * to somebody who already bought.
8
+ */
9
+ export declare function TrialPromise({ days }: {
10
+ days: number;
11
+ }): import("react").JSX.Element;
12
+ //# sourceMappingURL=TrialPromise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrialPromise.d.ts","sourceRoot":"","sources":["../../src/components/TrialPromise.tsx"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,+BAYtD"}
@@ -0,0 +1,3 @@
1
+ export { TrialPromise } from '../chunk-SMFXGZN7.js';
2
+ //# sourceMappingURL=TrialPromise.js.map
3
+ //# sourceMappingURL=TrialPromise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"TrialPromise.js"}
@@ -0,0 +1,3 @@
1
+ export declare function fieldClass(): string;
2
+ export declare function buttonClass(variant?: 'primary' | 'outline' | 'ghost'): "inline-flex h-10 w-full items-center justify-center rounded-input border border-input bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-muted disabled:pointer-events-none disabled:opacity-50" | "text-sm font-medium text-primary hover:underline" | "inline-flex h-10 w-full items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90 disabled:pointer-events-none disabled:opacity-50";
3
+ //# sourceMappingURL=form-classes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-classes.d.ts","sourceRoot":"","sources":["../../src/components/form-classes.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,WAEzB;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,SAAS,GAAG,SAAS,GAAG,OAAmB,yeAM/E"}
@@ -0,0 +1,3 @@
1
+ export { buttonClass, fieldClass } from '../chunk-55RFOMW5.js';
2
+ //# sourceMappingURL=form-classes.js.map
3
+ //# sourceMappingURL=form-classes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"form-classes.js"}
@@ -0,0 +1,5 @@
1
+ export { AuthProvider, useAuth } from './chunk-Q6DFI35B.js';
2
+ import './chunk-OI74ER2Z.js';
3
+ import './chunk-2MO4QTQA.js';
4
+ //# sourceMappingURL=context.js.map
5
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"context.js"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/data/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,eAAe,CAAA;AAEvE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAoDD,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,QAA4B,GAAG,WAAW,CAkFzF"}
@@ -0,0 +1,3 @@
1
+ export { createMockAuthAdapter } from '../chunk-CV4LQYNX.js';
2
+ //# sourceMappingURL=mock.js.map
3
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"mock.js"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/data/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACzE,OAAO,KAAK,EAAE,WAAW,EAAuC,MAAM,eAAe,CAAA;AAIrF;;;mEAGmE;AACnE,eAAO,MAAM,sBAAsB,2BAA2B,CAAA;AAE9D,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAyCD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,GAAG,WAAW,CAgMjF"}
@@ -0,0 +1,4 @@
1
+ export { MUST_SET_PASSWORD_FLAG, createSupabaseAuthAdapter } from '../chunk-BGCCXJJA.js';
2
+ import '../chunk-2MO4QTQA.js';
3
+ //# sourceMappingURL=supabase.js.map
4
+ //# sourceMappingURL=supabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"supabase.js"}
@@ -0,0 +1,71 @@
1
+ import type React from 'react';
2
+ import type { AuthAdapter, AuthProvider } from '@fayz-ai/core';
3
+ import type { SupabaseClient } from '@supabase/supabase-js';
4
+ export type AuthProviderKey = 'supabase' | 'mock' | (string & {});
5
+ export type AuthLayout = 'split' | 'centered';
6
+ export type AuthFormView = 'login' | 'signup' | 'recovery';
7
+ export type OAuthProviderKey = Exclude<AuthProvider, 'email'>;
8
+ /** A product ambassador rendered as a floating circular photo bubble on the
9
+ * split-login decorative panel. `image` may be a local path or a data URI. */
10
+ export interface LoginAmbassador {
11
+ name: string;
12
+ role?: string;
13
+ image: string;
14
+ }
15
+ export interface AuthRoutesConfig {
16
+ login?: string;
17
+ callback?: string;
18
+ resetPassword?: string;
19
+ afterSignIn?: string;
20
+ }
21
+ export interface AuthOAuthConfig {
22
+ enabled?: boolean;
23
+ providers?: OAuthProviderKey[];
24
+ /**
25
+ * Providers rendered on the login page but not able to sign anybody in yet:
26
+ * disabled, marked "em breve", no consent screen. Defaults to `['google']`
27
+ * while the grant is not wired — an app that has it working passes `[]`.
28
+ */
29
+ comingSoon?: OAuthProviderKey[];
30
+ }
31
+ export interface AuthSupabaseConfig {
32
+ url?: string;
33
+ anonKey?: string;
34
+ client?: SupabaseClient;
35
+ callbackUrl?: string;
36
+ resetPasswordUrl?: string;
37
+ }
38
+ export interface AuthPluginOptions {
39
+ provider?: AuthProviderKey | AuthAdapter;
40
+ adapter?: AuthProviderKey | AuthAdapter;
41
+ supabase?: AuthSupabaseConfig;
42
+ requireAuth?: boolean;
43
+ layout?: AuthLayout;
44
+ logo?: React.ReactNode;
45
+ tagline?: string;
46
+ description?: string;
47
+ loginAmbassadors?: LoginAmbassador[];
48
+ loginAmbassadorsLabel?: string;
49
+ oauth?: AuthOAuthConfig;
50
+ routes?: AuthRoutesConfig;
51
+ }
52
+ export interface ResolvedAuthPlugin {
53
+ kind: 'auth';
54
+ adapter: AuthAdapter;
55
+ requireAuth: boolean;
56
+ layout: AuthLayout;
57
+ logo?: React.ReactNode;
58
+ tagline?: string;
59
+ description?: string;
60
+ loginAmbassadors?: LoginAmbassador[];
61
+ loginAmbassadorsLabel?: string;
62
+ oauth: Required<AuthOAuthConfig>;
63
+ routes: Required<AuthRoutesConfig>;
64
+ }
65
+ /** The adapter the options ask for: one passed in, a named provider, or Supabase when a URL is set. */
66
+ export declare function chooseAuthProvider(options: AuthPluginOptions): AuthAdapter | AuthProviderKey;
67
+ export declare function resolveAuthRoutes(routes?: AuthRoutesConfig): Required<AuthRoutesConfig>;
68
+ export declare function resolveOAuth(oauth?: AuthOAuthConfig): Required<AuthOAuthConfig>;
69
+ /** `#/signup` is a marketable URL: a campaign link lands on the sign-up form. */
70
+ export declare function isSignupHash(hash: string): boolean;
71
+ //# sourceMappingURL=auth-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-config.d.ts","sourceRoot":"","sources":["../../src/domain/auth-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { chooseAuthProvider, isSignupHash, resolveAuthRoutes, resolveOAuth } from '../chunk-4HVM2UJS.js';
2
+ //# sourceMappingURL=auth-config.js.map
3
+ //# sourceMappingURL=auth-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"auth-config.js"}
@@ -0,0 +1,26 @@
1
+ export type AuthUrlIntent =
2
+ /** A password-recovery link — the user must choose a new password now. */
3
+ {
4
+ kind: 'recovery';
5
+ }
6
+ /** A one-time link that was already used or has expired. */
7
+ | {
8
+ kind: 'expired';
9
+ message?: string;
10
+ };
11
+ export type PasswordSetupReason = 'recovery' | 'invite';
12
+ export interface PasswordSetupInput {
13
+ intent: AuthUrlIntent | null;
14
+ /** Session still resolving — the link's tokens are exchanged asynchronously. */
15
+ isLoading: boolean;
16
+ isAuthenticated: boolean;
17
+ /** AuthUser.mustSetPassword — an invitee who never chose one. */
18
+ mustSetPassword?: boolean;
19
+ }
20
+ export interface PasswordSetupDecision {
21
+ reason: PasswordSetupReason | null;
22
+ expired: boolean;
23
+ checking: boolean;
24
+ }
25
+ export declare function decidePasswordSetup(input: PasswordSetupInput): PasswordSetupDecision;
26
+ //# sourceMappingURL=auth-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-link.d.ts","sourceRoot":"","sources":["../../src/domain/auth-link.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa;AACvB,0EAA0E;AACxE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE;AACtB,4DAA4D;GAC1D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEzC,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,QAAQ,CAAA;AAEvD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,OAAO,CAAA;IACxB,iEAAiE;IACjE,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAA;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAID,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,qBAAqB,CAgBpF"}
@@ -0,0 +1,3 @@
1
+ export { decidePasswordSetup } from '../chunk-2S7KVJQO.js';
2
+ //# sourceMappingURL=auth-link.js.map
3
+ //# sourceMappingURL=auth-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"auth-link.js"}
@@ -0,0 +1,5 @@
1
+ export declare const MIN_PASSWORD_LENGTH = 8;
2
+ export type NewPasswordProblem = 'too-short' | 'mismatch';
3
+ /** Why a chosen password cannot be saved, or null when it can. No confirmation means none was asked. */
4
+ export declare function newPasswordProblem(password: string, confirmation?: string): NewPasswordProblem | null;
5
+ //# sourceMappingURL=password.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../src/domain/password.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,UAAU,CAAA;AAEzD,wGAAwG;AACxG,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAIrG"}
@@ -0,0 +1,3 @@
1
+ export { MIN_PASSWORD_LENGTH, newPasswordProblem } from '../chunk-KLQDHFVS.js';
2
+ //# sourceMappingURL=password.js.map
3
+ //# sourceMappingURL=password.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"password.js"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,11 @@
1
- export { createSupabaseAuthAdapter, MUST_SET_PASSWORD_FLAG } from './adapters/supabase';
2
- export type { SupabaseAuthConfig } from './adapters/supabase';
3
- export { readAuthUrlIntent, clearAuthUrlTokens, withAuthIntent, decidePasswordSetup, AUTH_INTENT_PARAM, readAppHandoff, buildAppHandoffUrl, APP_HANDOFF_PARAM, APP_HANDOFF_REFRESH_PARAM, APP_HANDOFF_TENANT_PARAM, } from './lib/url-intent';
4
- export type { AppHandoff, AuthUrlIntent, PasswordSetupDecision, PasswordSetupInput, PasswordSetupReason, } from './lib/url-intent';
5
- export { createMockAuthAdapter } from './adapters/mock';
6
- export type { MockUser } from './adapters/mock';
1
+ export { createSupabaseAuthAdapter, MUST_SET_PASSWORD_FLAG } from './data/supabase';
2
+ export type { SupabaseAuthConfig } from './data/supabase';
3
+ export { readAuthUrlIntent, clearAuthUrlTokens, withAuthIntent, AUTH_INTENT_PARAM, readAppHandoff, buildAppHandoffUrl, APP_HANDOFF_PARAM, APP_HANDOFF_REFRESH_PARAM, APP_HANDOFF_TENANT_PARAM, } from './lib/url-intent';
4
+ export type { AppHandoff } from './lib/url-intent';
5
+ export { decidePasswordSetup } from './domain/auth-link';
6
+ export type { AuthUrlIntent, PasswordSetupDecision, PasswordSetupInput, PasswordSetupReason, } from './domain/auth-link';
7
+ export { createMockAuthAdapter } from './data/mock';
8
+ export type { MockUser } from './data/mock';
7
9
  export { useAuthStore } from './store';
8
10
  export type { AuthState, AuthStore } from './store';
9
11
  export { AuthProvider, useAuth } from './context';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACvF,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAG7D,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG/C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACnF,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEzD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA"}