@rqdhw3n/react-auth-flow 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/dist/index.d.ts CHANGED
@@ -1,14 +1,23 @@
1
1
  import { Context } from 'react';
2
2
  import { default as default_2 } from 'react';
3
3
 
4
+ export declare interface AuthActionResponse {
5
+ success?: boolean;
6
+ message?: string;
7
+ user?: AuthUser;
8
+ [key: string]: unknown;
9
+ }
10
+
4
11
  export declare type AuthClient = ReturnType<typeof createAuthClient>;
5
12
 
6
13
  export declare interface AuthClientConfig {
7
14
  baseURL?: string;
15
+ baseUrl?: string;
8
16
  endpoints?: AuthEndpoints;
9
17
  headers?: Record<string, string>;
10
18
  credentials?: RequestCredentials;
11
- adapter?: RequestAdapter;
19
+ requestAdapter?: AuthRequestAdapter;
20
+ adapter?: LegacyRequestAdapter;
12
21
  }
13
22
 
14
23
  /**
@@ -28,12 +37,20 @@ export declare interface AuthContextValue {
28
37
  login: (payload: LoginPayload) => Promise<AuthUser>;
29
38
  register: (payload: RegisterPayload) => Promise<AuthUser>;
30
39
  logout: () => Promise<void>;
31
- forgotPassword: (payload: ForgotPasswordPayload) => Promise<void>;
32
- resetPassword: (payload: ResetPasswordPayload) => Promise<void>;
33
- verifyEmail: (payload: VerifyEmailPayload) => Promise<void>;
34
- refreshSession: () => Promise<void>;
35
- restoreSession: () => Promise<void>;
40
+ forgotPassword: (payload: ForgotPasswordPayload) => Promise<AuthActionResponse>;
41
+ resetPassword: (payload: ResetPasswordPayload) => Promise<AuthActionResponse>;
42
+ verifyEmail: (payload: VerifyEmailPayload) => Promise<AuthActionResponse>;
43
+ verifyTwoFactor: (payload: TwoFactorPayload) => Promise<AuthActionResponse>;
44
+ refreshSession: () => Promise<AuthUser | null>;
45
+ restoreSession: () => Promise<AuthUser | null>;
46
+ clearError: () => void;
47
+ setError: (error?: AuthError | string | null) => void;
36
48
  setUser: (user: AuthUser | null) => void;
49
+ hasRole: (role: string) => boolean;
50
+ hasAnyRole: (roles: string[]) => boolean;
51
+ hasPermission: (permission: string) => boolean;
52
+ hasAnyPermission: (permissions: string[]) => boolean;
53
+ hasAllPermissions: (permissions: string[]) => boolean;
37
54
  }
38
55
 
39
56
  /**
@@ -48,6 +65,7 @@ export declare interface AuthEndpoints {
48
65
  forgotPassword?: string;
49
66
  resetPassword?: string;
50
67
  verifyEmail?: string;
68
+ twoFactorVerify?: string;
51
69
  }
52
70
 
53
71
  export declare interface AuthError {
@@ -58,7 +76,7 @@ export declare interface AuthError {
58
76
  }
59
77
 
60
78
  /**
61
- * Auth Form Class Names - Tailwind-friendly styling
79
+ * Auth Form Class Names
62
80
  */
63
81
  export declare interface AuthFormClassNames {
64
82
  className?: string;
@@ -73,10 +91,18 @@ export declare interface AuthFormClassNames {
73
91
  subtitleClassName?: string;
74
92
  }
75
93
 
76
- /**
77
- * AuthProvider component
78
- * Provides authentication state and methods to the entire application
79
- */
94
+ export declare const AuthLayout: default_2.FC<AuthLayoutProps>;
95
+
96
+ export declare interface AuthLayoutProps {
97
+ children: React.ReactNode;
98
+ title?: string;
99
+ subtitle?: string;
100
+ className?: string;
101
+ cardClassName?: string;
102
+ brand?: React.ReactNode;
103
+ footer?: React.ReactNode;
104
+ }
105
+
80
106
  export declare const AuthProvider: default_2.FC<AuthProviderProps>;
81
107
 
82
108
  /**
@@ -85,20 +111,46 @@ export declare const AuthProvider: default_2.FC<AuthProviderProps>;
85
111
  export declare interface AuthProviderProps {
86
112
  children: React.ReactNode;
87
113
  baseURL?: string;
114
+ baseUrl?: string;
88
115
  endpoints?: AuthEndpoints;
116
+ headers?: Record<string, string>;
117
+ credentials?: RequestCredentials;
89
118
  onAuthError?: (error: AuthError) => void;
90
119
  autoRefresh?: boolean;
120
+ autoRestore?: boolean;
91
121
  refreshInterval?: number;
122
+ requestAdapter?: AuthRequestAdapter;
123
+ theme?: AuthTheme;
124
+ mock?: boolean;
125
+ mockStorageKey?: string;
126
+ mockUser?: AuthUser;
127
+ }
128
+
129
+ export declare type AuthRequestAdapter = (params: AuthRequestParams) => Promise<unknown>;
130
+
131
+ export declare type AuthRequestMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
132
+
133
+ export declare interface AuthRequestParams {
134
+ endpoint: string;
135
+ method: AuthRequestMethod;
136
+ data?: unknown;
137
+ headers?: Record<string, string>;
92
138
  }
93
139
 
94
140
  /**
95
141
  * API Response Format
96
142
  */
97
- export declare interface AuthResponse<T = AuthUser> {
143
+ export declare interface AuthResponse<T extends AuthUser = AuthUser> extends AuthActionResponse {
98
144
  user?: T;
99
145
  token?: string;
100
146
  refreshToken?: string;
101
- message?: string;
147
+ }
148
+
149
+ export declare interface AuthTheme {
150
+ primaryColor?: string;
151
+ primaryHoverColor?: string;
152
+ radius?: string;
153
+ fontFamily?: string;
102
154
  }
103
155
 
104
156
  /**
@@ -123,60 +175,22 @@ export declare function cn(...classes: Array<string | undefined | false | null>)
123
175
  * Creates an authenticated API client
124
176
  */
125
177
  export declare function createAuthClient(config?: AuthClientConfig): {
126
- /**
127
- * Login with email and password
128
- */
129
178
  login(email: string, password: string, rememberMe?: boolean): Promise<AuthResponse<AuthUser>>;
130
- /**
131
- * Register a new account
132
- */
133
179
  register(payload: Record<string, unknown>): Promise<AuthResponse<AuthUser>>;
134
- /**
135
- * Logout the user
136
- */
137
180
  logout(): Promise<void>;
138
- /**
139
- * Get current user
140
- */
141
181
  me(): Promise<AuthResponse<AuthUser>>;
142
- /**
143
- * Refresh the authentication session
144
- */
145
182
  refresh(): Promise<AuthResponse<AuthUser>>;
146
- /**
147
- * Request a password reset
148
- */
149
- forgotPassword(email: string): Promise<void>;
150
- /**
151
- * Reset password with token
152
- */
153
- resetPassword(token: string, password: string, confirmPassword?: string): Promise<void>;
154
- /**
155
- * Verify email with token
156
- */
157
- verifyEmail(token: string, email?: string): Promise<void>;
158
- /**
159
- * Set custom headers for subsequent requests
160
- */
183
+ forgotPassword(email: string): Promise<AuthResponse<AuthUser>>;
184
+ resetPassword(token: string, password: string, confirmPassword?: string): Promise<AuthResponse<AuthUser>>;
185
+ verifyEmail(token: string, email?: string): Promise<AuthResponse<AuthUser>>;
186
+ verifyTwoFactor(code: string): Promise<AuthResponse<AuthUser>>;
161
187
  setHeaders(newHeaders: Record<string, string>): void;
162
- /**
163
- * Get current endpoints configuration
164
- */
165
- getEndpoints(): {
166
- login?: string;
167
- register?: string;
168
- logout?: string;
169
- me?: string;
170
- refresh?: string;
171
- forgotPassword?: string;
172
- resetPassword?: string;
173
- verifyEmail?: string;
174
- };
188
+ getEndpoints(): Required<AuthEndpoints>;
175
189
  };
176
190
 
177
191
  /**
178
192
  * ForgotPasswordForm Component
179
- * A ready-to-use forgot password form with customizable Tailwind styling
193
+ * A ready-to-use forgot password form with packaged default styling
180
194
  */
181
195
  export declare const ForgotPasswordForm: default_2.FC<ForgotPasswordFormProps>;
182
196
 
@@ -206,9 +220,22 @@ export declare interface FormComponentProps extends AuthFormClassNames {
206
220
  onError?: (error: AuthError) => void;
207
221
  }
208
222
 
223
+ export declare const GuestRoute: default_2.FC<GuestRouteProps>;
224
+
225
+ export declare interface GuestRouteProps {
226
+ children: React.ReactNode;
227
+ redirectTo?: string;
228
+ fallback?: React.ReactNode;
229
+ }
230
+
231
+ /**
232
+ * Legacy adapter signature kept for backward compatibility.
233
+ */
234
+ export declare type LegacyRequestAdapter = (url: string, options: RequestInit) => Promise<Response>;
235
+
209
236
  /**
210
237
  * LoginForm Component
211
- * A ready-to-use login form with customizable Tailwind styling
238
+ * A ready-to-use login form with packaged default styling
212
239
  */
213
240
  export declare const LoginForm: default_2.FC<LoginFormProps>;
214
241
 
@@ -231,15 +258,22 @@ export declare interface LoginPayload {
231
258
  */
232
259
  export declare function normalizeError(error: unknown): AuthError;
233
260
 
234
- /**
235
- * ProtectedRoute Component
236
- * Protects routes based on authentication status and optional role/permission checks
237
- * Compatible with React Router v6
238
- */
261
+ export declare const OtpInput: default_2.FC<OtpInputProps>;
262
+
263
+ export declare interface OtpInputProps {
264
+ length?: number;
265
+ value?: string;
266
+ onChange?: (value: string) => void;
267
+ onComplete?: (value: string) => void;
268
+ disabled?: boolean;
269
+ className?: string;
270
+ inputClassName?: string;
271
+ }
272
+
239
273
  export declare const ProtectedRoute: default_2.FC<ProtectedRouteProps>;
240
274
 
241
275
  /**
242
- * Protected Route Props
276
+ * Route Props
243
277
  */
244
278
  export declare interface ProtectedRouteProps {
245
279
  children: React.ReactNode;
@@ -247,11 +281,13 @@ export declare interface ProtectedRouteProps {
247
281
  fallback?: React.ReactNode;
248
282
  roles?: string[];
249
283
  permissions?: string[];
284
+ unauthorizedTo?: string;
285
+ requireAllPermissions?: boolean;
250
286
  }
251
287
 
252
288
  /**
253
289
  * RegisterForm Component
254
- * A ready-to-use registration form with customizable Tailwind styling
290
+ * A ready-to-use registration form with packaged default styling
255
291
  */
256
292
  export declare const RegisterForm: default_2.FC<RegisterFormProps>;
257
293
 
@@ -268,14 +304,11 @@ export declare interface RegisterPayload {
268
304
  [key: string]: unknown;
269
305
  }
270
306
 
271
- /**
272
- * Custom Headers and Request Adapter
273
- */
274
- export declare type RequestAdapter = (url: string, options: RequestInit) => Promise<Response>;
307
+ export declare type RequestAdapter = LegacyRequestAdapter;
275
308
 
276
309
  /**
277
310
  * ResetPasswordForm Component
278
- * A ready-to-use password reset form with customizable Tailwind styling
311
+ * A ready-to-use password reset form with packaged default styling
279
312
  */
280
313
  export declare const ResetPasswordForm: default_2.FC<ResetPasswordFormProps>;
281
314
 
@@ -291,6 +324,34 @@ export declare interface ResetPasswordPayload {
291
324
  confirmPassword?: string;
292
325
  }
293
326
 
327
+ export declare const SocialLoginButton: default_2.FC<SocialLoginButtonProps>;
328
+
329
+ export declare interface SocialLoginButtonProps {
330
+ provider: "google" | "github" | "facebook" | "custom";
331
+ label?: string;
332
+ icon?: React.ReactNode;
333
+ onClick?: () => void;
334
+ className?: string;
335
+ disabled?: boolean;
336
+ }
337
+
338
+ export declare const TwoFactorForm: default_2.FC<TwoFactorFormProps>;
339
+
340
+ export declare interface TwoFactorFormProps {
341
+ onSuccess?: (response: AuthActionResponse) => void;
342
+ onError?: (error: AuthError) => void;
343
+ className?: string;
344
+ submitButtonText?: string;
345
+ loadingText?: string;
346
+ title?: string;
347
+ subtitle?: string;
348
+ length?: number;
349
+ }
350
+
351
+ export declare interface TwoFactorPayload {
352
+ code: string;
353
+ }
354
+
294
355
  /**
295
356
  * Hook to access auth context
296
357
  * Must be used within an AuthProvider
@@ -299,7 +360,7 @@ export declare function useAuth(): AuthContextValue;
299
360
 
300
361
  /**
301
362
  * VerifyEmailForm Component
302
- * A ready-to-use email verification form with customizable Tailwind styling
363
+ * A ready-to-use email verification form with packaged default styling
303
364
  */
304
365
  export declare const VerifyEmailForm: default_2.FC<VerifyEmailFormProps>;
305
366