doct-ui-auth-kit 1.0.4 → 1.0.6

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.
package/README.md CHANGED
@@ -14,6 +14,32 @@ Peer dependencies (install in your app if not already present):
14
14
  npm install react react-dom docthub-core-components react-hook-form zod
15
15
  ```
16
16
 
17
+ ## Global styles
18
+
19
+ Import the kit CSS once in your app (e.g. in `main.tsx` or `_app.tsx`) so Tailwind and base styles apply:
20
+
21
+ ```tsx
22
+ import 'doct-ui-auth-kit/style.css';
23
+ ```
24
+
25
+ If you use `docthub-core-components`, import its styles first, then the auth kit:
26
+
27
+ ```tsx
28
+ import 'docthub-core-components/style.css';
29
+ import 'doct-ui-auth-kit/style.css';
30
+ ```
31
+
32
+ ## Required static assets
33
+
34
+ When using **`MainLoginPage`** or **`AuthLayoutWrapper`** with `layoutType="withSlider"`, the kit references static paths that are served from **your app’s** `public/` folder. The published npm package does not include these files, so you must add them yourself.
35
+
36
+ | Asset | Path in your app | Used for |
37
+ |-------|------------------|----------|
38
+ | Logo | `public/main-logo.svg` | Main login page logo (or pass a custom `logo` prop to `AuthLayoutWrapper`) |
39
+ | Slider images | `public/slider/slide-1.png` … `public/slider/slide-5.png` | Marketing slider on the left panel (or pass custom `sliderImages` to `AuthLayoutWrapper`) |
40
+
41
+ **To get the default assets:** copy from this repo’s `public/main-logo.svg` and `public/slider/*.png` into your app’s `public/` (and `public/slider/`) if you have the kit source. Otherwise use your own logo and slider images. You can also override at runtime by passing the `logo` and `sliderImages` props to `AuthLayoutWrapper` (or equivalent) where the API supports it.
42
+
17
43
  ## Consumer imports
18
44
 
19
45
  Install the package and import components, layouts, and types from the library:
@@ -0,0 +1 @@
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-inter),Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.-top-10{top:-2.5rem}.left-1\/2{left:50%}.top-2\.5{top:.625rem}.top-\[152\.5px\]{top:152.5px}.z-10{z-index:10}.z-20{z-index:20}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.block{display:block}.inline{display:inline}.flex{display:flex}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-5{height:1.25rem}.h-\[100dvh\]{height:100dvh}.h-\[30px\]{height:30px}.h-full{height:100%}.min-h-0{min-height:0px}.min-h-svh{min-height:100svh}.w-10{width:2.5rem}.w-2{width:.5rem}.w-5{width:1.25rem}.w-8{width:2rem}.w-\[140px\]{width:140px}.w-\[328px\]{width:328px}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0px}.min-w-full{min-width:100%}.max-w-\[320px\]{max-width:320px}.max-w-\[360px\]{max-width:360px}.max-w-\[400px\]{max-width:400px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-\[12px\]{gap:12px}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.whitespace-pre-line{white-space:pre-line}.rounded-\[10px\]{border-radius:10px}.rounded-\[3px\]{border-radius:3px}.border{border-width:1px}.border-\[rgba\(0\,0\,0\,0\.12\)\]{border-color:#0000001f}.bg-\[\#002830\]{--tw-bg-opacity: 1;background-color:rgb(0 40 48 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/40{background-color:#fff6}.bg-white\/50{background-color:#ffffff80}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-2{padding:.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-\[22px\]{padding-left:22px;padding-right:22px}.py-12{padding-top:3rem;padding-bottom:3rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[14px\]{padding-top:14px;padding-bottom:14px}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-bold{font-weight:700}.font-semibold{font-weight:600}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.text-\[\#002830\]{--tw-text-opacity: 1;color:rgb(0 40 48 / var(--tw-text-opacity, 1))}.text-\[\#1e595a\]{--tw-text-opacity: 1;color:rgb(30 89 90 / var(--tw-text-opacity, 1))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-black\/80{color:#000c}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.opacity-40{opacity:.4}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.duration-300{animation-duration:.3s}.duration-500{animation-duration:.5s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}:root{font-family:var( --font-inter, "Inter", system-ui, Avenir, Helvetica, Arial, sans-serif );line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh;width:100%}.hover\:bg-white\/60:hover{background-color:#fff9}@media(min-width:640px){.sm\:flex{display:flex}}@media(min-width:768px){.md\:mb-6{margin-bottom:1.5rem}.md\:px-\[20px\]{padding-left:20px;padding-right:20px}.md\:py-12{padding-top:3rem;padding-bottom:3rem}.md\:py-8{padding-top:2rem;padding-bottom:2rem}.md\:pt-\[20px\]{padding-top:20px}}@media(min-width:1024px){.lg\:block{display:block}.lg\:h-\[100dvh\]{height:100dvh}.lg\:w-\[432px\]{width:432px}.lg\:flex-shrink-0{flex-shrink:0}.lg\:flex-grow-0{flex-grow:0}.lg\:flex-row{flex-direction:row}}
@@ -1,5 +1,5 @@
1
1
  import type { UseLoginEntryFormOptions, UseLoginEntryFormReturn } from '@/types';
2
- export type { EmailFormValues, LoginEntryFormValues, LoginEntryMode, LoginEntrySubmitData, PhoneFormValues, UseLoginEntryFormOptions, UseLoginEntryFormReturn, } from '@/types';
2
+ export type { EmailFormValues, LoginEntryFormValues, LoginEntryMode, LoginEntrySubmitData, LoginEntrySuccessParams, PhoneFormValues, UseLoginEntryFormOptions, UseLoginEntryFormReturn, } from '@/types';
3
3
  /**
4
4
  * Form state and validation for the login entry screen (phone or email).
5
5
  * Business logic: when submitApi is provided, hook runs validate → submitApi(data) → onSuccess() (e.g. redirect).
package/dist/index.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * Auth SDK UI Kit – library entry point.
3
- * Consumers can import components, layouts, hooks, core (SSO provider, flow, session), and auth methods.
3
+ * Consumers can import components, layouts (composition + preset), hooks, core (SSO provider, flow, session), and auth methods.
4
+ *
5
+ * Import the kit styles once globally in your app (e.g. in main.tsx):
6
+ * `import 'doct-ui-auth-kit/style.css';`
4
7
  *
5
8
  * @example
6
9
  * ```ts
@@ -11,17 +14,23 @@
11
14
  * useAuthSession,
12
15
  * MainLayout,
13
16
  * AuthLayout,
17
+ * ImageSlider,
18
+ * AuthLayoutWrapper,
14
19
  * LoginEntry,
15
20
  * OtpVerification,
16
21
  * useGoogleAuth,
17
22
  * } from 'doct-ui-auth-kit';
18
23
  * ```
19
24
  */
20
- export * from './adapters';
21
- export { Auth } from './auth';
22
- export * from './auth-methods';
23
- export * from './components/layout';
24
- export * from './core';
25
- export * from './hooks';
26
- export * from './pages';
27
- export * from './types';
25
+ import './index.css';
26
+ export { createHttpAuthAdapter } from '@/adapters';
27
+ export { Auth } from '@/auth';
28
+ export type { UseAppleSignInOptions, UseGoogleAuthOptions, UseGoogleAuthReturn, } from '@/auth-methods';
29
+ export { useAppleSignIn, useGoogleAuth } from '@/auth-methods';
30
+ export type { AuthLayoutPresetProps, AuthLayoutType, AuthLayoutWrapperProps, } from '@/components/layout';
31
+ export { AuthLayout, AuthLayoutPreset, AuthLayoutWrapper, ImageSlider, MainLayout, } from '@/components/layout';
32
+ export * from '@/core';
33
+ export * from '@/hooks';
34
+ export type { LoginEntryPageProps, LoginEntryProps, MainLoginPageProps, MainLoginPageProvidersConfig, OtpVerificationPageProps, OtpVerificationProps, RepeatLoginPageProps, RepeatLoginProps, SignupPageFullProps, SignupPageProps, } from '@/pages';
35
+ export { LoginEntry, LoginEntryPage, MainLogin, MainLoginPage, OtpVerification, OtpVerificationPage, RepeatLogin, RepeatLoginPage, Signup, SignupPage, } from '@/pages';
36
+ export * from '@/types';
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
+ "use client";
1
2
  import { jsx as G, Fragment as Kt } from "react/jsx-runtime";
2
- import { c as le, A as Zr, a as Xr, u as Jr, R as zr, S as Qr, O as ei, L as Yt, M as ti, b as ni, d as ri } from "./signup-BpiNvZy4.js";
3
- import { D as a1, I as o1, e as d1, f as u1, g as l1, h as s1, i as c1, j as f1, k as $1, l as p1, m as y1, n as h1 } from "./signup-BpiNvZy4.js";
3
+ import { f as le, A as Zr, g as Xr, u as Jr, d as zr, e as Qr, c as ei, a as Yt, b as ti, O as ni, S as ri } from "./signup-DeeuWsoF.js";
4
+ import { D as a1, I as o1, L as d1, h as u1, M as l1, i as s1, j as c1, k as f1, R as $1, l as p1, m as y1, n as h1, o as m1, p as g1, q as v1 } from "./signup-DeeuWsoF.js";
4
5
  import N, { createContext as ii, useContext as tr, useRef as nr, useCallback as ae, useMemo as We, useReducer as ai, useEffect as oi } from "react";
5
6
  import { DoctCircularProgress as di } from "docthub-core-components";
6
7
  function Ft(e) {
@@ -7128,15 +7129,20 @@ export {
7128
7129
  a1 as DEFAULT_OTP_TITLES,
7129
7130
  Bl as INITIAL_STEP,
7130
7131
  o1 as ImageSlider,
7132
+ d1 as LoginEntry,
7131
7133
  Yt as LoginEntryPage,
7132
- d1 as MainLayout,
7134
+ u1 as MainLayout,
7135
+ l1 as MainLogin,
7133
7136
  ti as MainLoginPage,
7134
- u1 as OTP_LENGTH,
7137
+ s1 as OTP_LENGTH,
7138
+ ni as OtpVerification,
7135
7139
  ei as OtpVerificationPage,
7136
- l1 as RESEND_COOLDOWN_EMAIL_SECONDS,
7137
- s1 as RESEND_COOLDOWN_PHONE_SECONDS,
7140
+ c1 as RESEND_COOLDOWN_EMAIL_SECONDS,
7141
+ f1 as RESEND_COOLDOWN_PHONE_SECONDS,
7142
+ $1 as RepeatLogin,
7138
7143
  zr as RepeatLoginPage,
7139
7144
  Hl as SSOAuthProvider,
7145
+ ri as Signup,
7140
7146
  Qr as SignupPage,
7141
7147
  Wl as authFlowReducer,
7142
7148
  kl as clearRepeatLoginInfo,
@@ -7147,13 +7153,13 @@ export {
7147
7153
  Gl as localStorageTokenStorage,
7148
7154
  e1 as serverCookieTokenStorage,
7149
7155
  jl as setRepeatLoginInfo,
7150
- c1 as useAppleSignIn,
7156
+ p1 as useAppleSignIn,
7151
7157
  fi as useAuthFlow,
7152
7158
  Ql as useAuthSession,
7153
7159
  Jr as useGoogleAuth,
7154
- f1 as useLoginEntryForm,
7155
- $1 as useMainAuthPageHandlers,
7156
- p1 as useOtpVerification,
7157
- y1 as useRepeatLogin,
7158
- h1 as useSignupForm
7160
+ y1 as useLoginEntryForm,
7161
+ h1 as useMainAuthPageHandlers,
7162
+ m1 as useOtpVerification,
7163
+ g1 as useRepeatLogin,
7164
+ v1 as useSignupForm
7159
7165
  };
@@ -1,5 +1,5 @@
1
- export { type LoginEntryMode, LoginEntryPage, type LoginEntryPageProps, type LoginEntryProps, } from './login-entry';
2
- export { type MainLoginAppleProviderConfig, type MainLoginGoogleProviderConfig, MainLoginPage, type MainLoginPageProps, type MainLoginPageProvidersConfig, } from './main-login';
3
- export { type OtpVerificationMode, OtpVerificationPage, type OtpVerificationPageProps, type OtpVerificationProps, } from './otp-verification';
4
- export { RepeatLoginPage, type RepeatLoginPageProps, type RepeatLoginProps, } from './repeat-login';
5
- export { SignupPage, type SignupPageFullProps, type SignupPageProps, } from './signup';
1
+ export { LoginEntry, type LoginEntryMode, LoginEntryPage, type LoginEntryPageProps, type LoginEntryProps, } from './login-entry';
2
+ export { MainLogin, type MainLoginAppleProviderConfig, type MainLoginGoogleProviderConfig, MainLoginPage, type MainLoginPageProps, type MainLoginPageProvidersConfig, } from './main-login';
3
+ export { OtpVerification, type OtpVerificationMode, OtpVerificationPage, type OtpVerificationPageProps, type OtpVerificationProps, } from './otp-verification';
4
+ export { RepeatLogin, RepeatLoginPage, type RepeatLoginPageProps, type RepeatLoginProps, } from './repeat-login';
5
+ export { Signup, SignupPage, type SignupPageFullProps, type SignupPageProps, } from './signup';
@@ -4,13 +4,13 @@ export type { LoginEntryMode, LoginEntryPageProps, LoginEntryProps, } from '@/ty
4
4
  * Full LoginEntry page with AuthLayoutWrapper, back button, and slider/standalone layout.
5
5
  * Use when rendering the login entry screen as a standalone page.
6
6
  *
7
- * @example Next.js: API call in hook, redirect via callback
7
+ * @example Next.js: API call in hook, redirect with mode + recipient for OTP page
8
8
  * ```tsx
9
9
  * <LoginEntryPage
10
10
  * mode="phone"
11
11
  * onBack={() => router.back()}
12
12
  * submitApi={(data) => api.sendOtp(data)}
13
- * onSuccess={() => router.push('/otp')}
13
+ * onSuccess={(params) => router.push(`/otp?mode=${params.mode}&recipient=${encodeURIComponent(params.recipient)}`)}
14
14
  * />
15
15
  * ```
16
16
  *
@@ -1,45 +1,4 @@
1
1
  import type { SignupPageFullProps, SignupPageProps } from '@/types';
2
2
  export type { SignupEntryMode, SignupPageFullProps, SignupPageProps, } from '@/types';
3
- /**
4
- * Full Signup page with AuthLayoutWrapper, logo, and default welcome copy.
5
- * Use when rendering the signup screen as a standalone page.
6
- *
7
- * @example Next.js: API in hook, redirect from consumer
8
- * ```tsx
9
- * <SignupPage
10
- * userType="INDIAN"
11
- * loginMethod="phone"
12
- * signupCollectField="email"
13
- * submitApi={(data) => api.completeProfile(data)}
14
- * onSuccess={() => router.push('/otp')}
15
- * />
16
- * ```
17
- *
18
- * @example Sync onSubmit (AuthFlow)
19
- * ```tsx
20
- * <SignupPage onSubmit={(data) => actions.submitSignupDetails(data)} ... />
21
- * ```
22
- */
23
3
  export declare function SignupPage(props: Readonly<SignupPageFullProps>): import("react/jsx-runtime").JSX.Element;
24
- /**
25
- * Signup form body without layout wrapper.
26
- * Full name plus phone/email (Indian) or full name + email + phone (Foreign).
27
- * Validation per PRODUCT_PROTOCOLS #1, #25 and edge cases 9, 10, 16, 19; cursor focus on first field (#26).
28
- * Use inside your own layout or AuthFlow.
29
- *
30
- * @example With submitApi + onSuccess (consumer redirect)
31
- * ```tsx
32
- * <Signup
33
- * userType="INDIAN"
34
- * signupCollectField="email"
35
- * submitApi={(data) => api.completeProfile(data)}
36
- * onSuccess={() => router.push('/otp')}
37
- * />
38
- * ```
39
- *
40
- * @example Sync onSubmit (AuthFlow)
41
- * ```tsx
42
- * <Signup onSubmit={(data) => actions.submitSignupDetails(data)} ... />
43
- * ```
44
- */
45
4
  export declare function Signup(props: Readonly<SignupPageProps>): import("react/jsx-runtime").JSX.Element;
package/dist/pages.js CHANGED
@@ -1,8 +1,14 @@
1
- import { L as g, M as i, O as n, R as o, S as s } from "./signup-BpiNvZy4.js";
1
+ "use client";
2
+ import { L as e, a as n, M as g, b as s, O as o, c as t, R as p, d as L, S as r, e as P } from "./signup-DeeuWsoF.js";
2
3
  export {
3
- g as LoginEntryPage,
4
- i as MainLoginPage,
5
- n as OtpVerificationPage,
6
- o as RepeatLoginPage,
7
- s as SignupPage
4
+ e as LoginEntry,
5
+ n as LoginEntryPage,
6
+ g as MainLogin,
7
+ s as MainLoginPage,
8
+ o as OtpVerification,
9
+ t as OtpVerificationPage,
10
+ p as RepeatLogin,
11
+ L as RepeatLoginPage,
12
+ r as Signup,
13
+ P as SignupPage
8
14
  };