@main12/auth-login 0.4.2 → 1.0.1

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 (66) hide show
  1. package/README.md +54 -7
  2. package/dist/components/AuthCard.d.ts +41 -0
  3. package/dist/components/AuthCard.js +28 -0
  4. package/dist/components/AuthCardServer.d.ts +29 -0
  5. package/dist/components/AuthCardServer.js +57 -0
  6. package/dist/components/AuthLayout.d.ts +23 -13
  7. package/dist/components/AuthLayout.js +26 -87
  8. package/dist/components/AuthPages.d.ts +4 -29
  9. package/dist/components/AuthPages.js +23 -105
  10. package/dist/components/AuthPagesServer.d.ts +3 -4
  11. package/dist/components/AuthPagesServer.js +15 -8
  12. package/dist/components/auth-card/AuthCardShell.d.ts +21 -0
  13. package/dist/components/auth-card/AuthCardShell.js +104 -0
  14. package/dist/components/auth-card/FormRenderer.d.ts +32 -0
  15. package/dist/components/auth-card/FormRenderer.js +88 -0
  16. package/dist/components/auth-card/formConfigs.d.ts +25 -0
  17. package/dist/components/auth-card/formConfigs.js +56 -0
  18. package/dist/components/auth-card/index.d.ts +3 -0
  19. package/dist/components/auth-card/index.js +3 -0
  20. package/dist/components/forms/ForgotPasswordForm.d.ts +7 -0
  21. package/dist/components/forms/ForgotPasswordForm.js +56 -0
  22. package/dist/components/forms/LoginForm.d.ts +15 -0
  23. package/dist/components/forms/LoginForm.js +247 -0
  24. package/dist/components/forms/SetPasswordForm.d.ts +7 -0
  25. package/dist/components/forms/SetPasswordForm.js +75 -0
  26. package/dist/components/forms/SignupForm.d.ts +13 -0
  27. package/dist/components/forms/SignupForm.js +152 -0
  28. package/dist/components/forms/VerifyOtpForm.d.ts +9 -0
  29. package/dist/components/forms/VerifyOtpForm.js +107 -0
  30. package/dist/components/forms/index.d.ts +19 -0
  31. package/dist/components/forms/index.js +21 -0
  32. package/dist/components/pages/ForgotPasswordPage.d.ts +2 -1
  33. package/dist/components/pages/ForgotPasswordPageHero.d.ts +3 -2
  34. package/dist/components/pages/ForgotPasswordPageHero.js +70 -64
  35. package/dist/components/pages/ForgotPasswordPageTailwind.d.ts +3 -2
  36. package/dist/components/pages/ForgotPasswordPageTailwind.js +42 -36
  37. package/dist/components/pages/LoginPage.d.ts +2 -1
  38. package/dist/components/pages/LoginPageHero.d.ts +2 -1
  39. package/dist/components/pages/LoginPageHero.js +297 -291
  40. package/dist/components/pages/LoginPageTailwind.d.ts +2 -1
  41. package/dist/components/pages/LoginPageTailwind.js +197 -191
  42. package/dist/components/pages/SetPasswordPage.d.ts +2 -1
  43. package/dist/components/pages/SetPasswordPageHero.d.ts +3 -2
  44. package/dist/components/pages/SetPasswordPageHero.js +98 -92
  45. package/dist/components/pages/SetPasswordPageTailwind.d.ts +3 -2
  46. package/dist/components/pages/SetPasswordPageTailwind.js +63 -57
  47. package/dist/components/pages/SignupPage.d.ts +2 -1
  48. package/dist/components/pages/SignupPageHero.d.ts +3 -2
  49. package/dist/components/pages/SignupPageHero.js +139 -133
  50. package/dist/components/pages/SignupPageTailwind.d.ts +3 -2
  51. package/dist/components/pages/SignupPageTailwind.js +123 -117
  52. package/dist/components/pages/VerifyOtpPage.d.ts +2 -1
  53. package/dist/components/pages/VerifyOtpPageHero.d.ts +2 -1
  54. package/dist/components/pages/VerifyOtpPageHero.js +110 -104
  55. package/dist/components/pages/VerifyOtpPageTailwind.d.ts +2 -1
  56. package/dist/components/pages/VerifyOtpPageTailwind.js +60 -54
  57. package/dist/components/ui/translations.d.ts +9 -0
  58. package/dist/components/ui/translations.js +18 -0
  59. package/dist/config.d.ts +12 -0
  60. package/dist/config.js +11 -0
  61. package/dist/exports/client.d.ts +5 -0
  62. package/dist/exports/client.js +5 -0
  63. package/dist/exports/rsc.d.ts +7 -0
  64. package/dist/exports/rsc.js +8 -0
  65. package/dist/index.js +12 -2
  66. package/package.json +3 -2
@@ -5,8 +5,9 @@ import { Button, Input, Label, TextField, Separator, Spinner } from '@heroui/rea
5
5
  import { Icon } from '@iconify/react';
6
6
  import { motion } from 'framer-motion';
7
7
  import { AuthLayout } from '../AuthLayout.js';
8
+ import { AuthCard } from '../AuthCard.js';
8
9
  import { getUiTranslations } from '../ui/translations.js';
9
- export default function SignupPageHero({ onSignup, showGoogleOAuth = true, loginUrl = '/login', logo, poweredBy, cardClassName, backgroundClass, locale, messages }) {
10
+ export default function SignupPageHero({ onSignup, showGoogleOAuth = true, loginUrl = '/login', logo, poweredBy, cardClassName, removeBorder, removeShadow, mobileVariant, backgroundClass, locale, messages }) {
10
11
  const [name, setName] = React.useState('');
11
12
  const [email, setEmail] = React.useState('');
12
13
  const [isLoading, setIsLoading] = React.useState(false);
@@ -28,142 +29,147 @@ export default function SignupPageHero({ onSignup, showGoogleOAuth = true, login
28
29
  setIsLoading(false);
29
30
  }
30
31
  };
31
- return /*#__PURE__*/ _jsxs(AuthLayout, {
32
- logo: logo,
33
- title: t.title,
34
- subtitle: t.subtitle,
35
- poweredBy: poweredBy,
36
- cardClassName: cardClassName,
32
+ return /*#__PURE__*/ _jsx(AuthLayout, {
37
33
  backgroundClass: backgroundClass,
38
- footer: /*#__PURE__*/ _jsxs("p", {
39
- className: "text-center text-gray-600 text-sm",
40
- children: [
41
- t.haveAccount,
42
- " ",
43
- /*#__PURE__*/ _jsx("a", {
44
- href: loginUrl,
45
- className: "text-gray-900 font-medium hover:underline",
46
- children: t.loginLink
47
- })
48
- ]
49
- }),
50
- children: [
51
- showGoogleOAuth && /*#__PURE__*/ _jsxs(_Fragment, {
34
+ children: /*#__PURE__*/ _jsxs(AuthCard, {
35
+ logo: logo,
36
+ title: t.title,
37
+ subtitle: t.subtitle,
38
+ poweredBy: poweredBy,
39
+ cardClassName: cardClassName,
40
+ removeBorder: removeBorder,
41
+ removeShadow: removeShadow,
42
+ mobileVariant: mobileVariant,
43
+ footer: /*#__PURE__*/ _jsxs("p", {
44
+ className: "text-center text-gray-600 text-sm",
52
45
  children: [
53
- /*#__PURE__*/ _jsxs(Button, {
54
- fullWidth: true,
55
- variant: "secondary",
56
- size: "lg",
57
- className: "mb-4 h-12 rounded-full [--button-fg:var(--foreground)]",
58
- children: [
59
- /*#__PURE__*/ _jsx(Icon, {
60
- icon: "flat-color-icons:google",
61
- width: 20
62
- }),
63
- t.continueWithGoogle
64
- ]
65
- }),
66
- /*#__PURE__*/ _jsxs("div", {
67
- className: "flex items-center gap-4 my-4",
68
- children: [
69
- /*#__PURE__*/ _jsx(Separator, {
70
- className: "flex-1"
71
- }),
72
- /*#__PURE__*/ _jsx("span", {
73
- className: "text-gray-500 text-sm",
74
- children: t.or
75
- }),
76
- /*#__PURE__*/ _jsx(Separator, {
77
- className: "flex-1"
78
- })
79
- ]
46
+ t.haveAccount,
47
+ " ",
48
+ /*#__PURE__*/ _jsx("a", {
49
+ href: loginUrl,
50
+ className: "text-gray-900 font-medium hover:underline",
51
+ children: t.loginLink
80
52
  })
81
53
  ]
82
54
  }),
83
- /*#__PURE__*/ _jsxs("form", {
84
- onSubmit: handleSubmit,
85
- className: "space-y-4",
86
- children: [
87
- error && /*#__PURE__*/ _jsx(motion.div, {
88
- className: "bg-red-50 text-red-600 border border-red-200 rounded-lg p-3 text-sm",
89
- initial: {
90
- opacity: 0
91
- },
92
- animate: {
93
- opacity: 1
94
- },
95
- children: error
96
- }),
97
- /*#__PURE__*/ _jsxs(TextField, {
98
- type: "text",
99
- value: name,
100
- onChange: setName,
101
- isRequired: true,
102
- fullWidth: true,
103
- children: [
104
- /*#__PURE__*/ _jsx(Label, {
105
- className: "text-gray-600",
106
- children: t.fullNameLabel
107
- }),
108
- /*#__PURE__*/ _jsx(Input, {
109
- variant: "secondary"
110
- })
111
- ]
112
- }),
113
- /*#__PURE__*/ _jsxs(TextField, {
114
- type: "email",
115
- value: email,
116
- onChange: setEmail,
117
- isRequired: true,
118
- fullWidth: true,
119
- children: [
120
- /*#__PURE__*/ _jsx(Label, {
121
- className: "text-gray-600",
122
- children: t.emailLabel
123
- }),
124
- /*#__PURE__*/ _jsx(Input, {
125
- variant: "secondary"
126
- })
127
- ]
128
- }),
129
- /*#__PURE__*/ _jsxs("p", {
130
- className: "text-xs text-gray-600 text-center",
131
- children: [
132
- t.termsNotice,
133
- " ",
134
- /*#__PURE__*/ _jsx("a", {
135
- href: "/terms",
136
- className: "text-gray-900 hover:underline",
137
- children: t.termsLink
138
- }),
139
- " ",
140
- t.andSeparator,
141
- " ",
142
- /*#__PURE__*/ _jsx("a", {
143
- href: "/privacy",
144
- className: "text-gray-900 hover:underline",
145
- children: t.privacyLink
146
- })
147
- ]
148
- }),
149
- /*#__PURE__*/ _jsx(Button, {
150
- type: "submit",
151
- fullWidth: true,
152
- size: "lg",
153
- isPending: isLoading,
154
- className: "h-12 font-semibold",
155
- children: ({ isPending })=>/*#__PURE__*/ _jsxs(_Fragment, {
156
- children: [
157
- isPending && /*#__PURE__*/ _jsx(Spinner, {
158
- color: "current",
159
- size: "sm"
160
- }),
161
- t.createAccount
162
- ]
163
- })
164
- })
165
- ]
166
- })
167
- ]
55
+ children: [
56
+ showGoogleOAuth && /*#__PURE__*/ _jsxs(_Fragment, {
57
+ children: [
58
+ /*#__PURE__*/ _jsxs(Button, {
59
+ fullWidth: true,
60
+ variant: "secondary",
61
+ size: "lg",
62
+ className: "mb-4 h-12 rounded-full [--button-fg:var(--foreground)]",
63
+ children: [
64
+ /*#__PURE__*/ _jsx(Icon, {
65
+ icon: "flat-color-icons:google",
66
+ width: 20
67
+ }),
68
+ t.continueWithGoogle
69
+ ]
70
+ }),
71
+ /*#__PURE__*/ _jsxs("div", {
72
+ className: "flex items-center gap-4 my-4",
73
+ children: [
74
+ /*#__PURE__*/ _jsx(Separator, {
75
+ className: "flex-1"
76
+ }),
77
+ /*#__PURE__*/ _jsx("span", {
78
+ className: "text-gray-500 text-sm",
79
+ children: t.or
80
+ }),
81
+ /*#__PURE__*/ _jsx(Separator, {
82
+ className: "flex-1"
83
+ })
84
+ ]
85
+ })
86
+ ]
87
+ }),
88
+ /*#__PURE__*/ _jsxs("form", {
89
+ onSubmit: handleSubmit,
90
+ className: "space-y-4",
91
+ children: [
92
+ error && /*#__PURE__*/ _jsx(motion.div, {
93
+ className: "bg-red-50 text-red-600 border border-red-200 rounded-lg p-3 text-sm",
94
+ initial: {
95
+ opacity: 0
96
+ },
97
+ animate: {
98
+ opacity: 1
99
+ },
100
+ children: error
101
+ }),
102
+ /*#__PURE__*/ _jsxs(TextField, {
103
+ type: "text",
104
+ value: name,
105
+ onChange: setName,
106
+ isRequired: true,
107
+ fullWidth: true,
108
+ children: [
109
+ /*#__PURE__*/ _jsx(Label, {
110
+ className: "text-gray-600",
111
+ children: t.fullNameLabel
112
+ }),
113
+ /*#__PURE__*/ _jsx(Input, {
114
+ variant: "secondary"
115
+ })
116
+ ]
117
+ }),
118
+ /*#__PURE__*/ _jsxs(TextField, {
119
+ type: "email",
120
+ value: email,
121
+ onChange: setEmail,
122
+ isRequired: true,
123
+ fullWidth: true,
124
+ children: [
125
+ /*#__PURE__*/ _jsx(Label, {
126
+ className: "text-gray-600",
127
+ children: t.emailLabel
128
+ }),
129
+ /*#__PURE__*/ _jsx(Input, {
130
+ variant: "secondary"
131
+ })
132
+ ]
133
+ }),
134
+ /*#__PURE__*/ _jsxs("p", {
135
+ className: "text-xs text-gray-600 text-center",
136
+ children: [
137
+ t.termsNotice,
138
+ " ",
139
+ /*#__PURE__*/ _jsx("a", {
140
+ href: "/terms",
141
+ className: "text-gray-900 hover:underline",
142
+ children: t.termsLink
143
+ }),
144
+ " ",
145
+ t.andSeparator,
146
+ " ",
147
+ /*#__PURE__*/ _jsx("a", {
148
+ href: "/privacy",
149
+ className: "text-gray-900 hover:underline",
150
+ children: t.privacyLink
151
+ })
152
+ ]
153
+ }),
154
+ /*#__PURE__*/ _jsx(Button, {
155
+ type: "submit",
156
+ fullWidth: true,
157
+ size: "lg",
158
+ isPending: isLoading,
159
+ className: "h-12 font-semibold",
160
+ children: ({ isPending })=>/*#__PURE__*/ _jsxs(_Fragment, {
161
+ children: [
162
+ isPending && /*#__PURE__*/ _jsx(Spinner, {
163
+ color: "current",
164
+ size: "sm"
165
+ }),
166
+ t.createAccount
167
+ ]
168
+ })
169
+ })
170
+ ]
171
+ })
172
+ ]
173
+ })
168
174
  });
169
175
  }
@@ -1,5 +1,6 @@
1
1
  import type { AuthLayoutConfig } from '../AuthLayout';
2
- export interface SignupPageProps extends AuthLayoutConfig {
2
+ import type { AuthCardConfig } from '../AuthCard';
3
+ export interface SignupPageProps extends AuthLayoutConfig, AuthCardConfig {
3
4
  onSignup: (data: {
4
5
  name: string;
5
6
  email: string;
@@ -7,4 +8,4 @@ export interface SignupPageProps extends AuthLayoutConfig {
7
8
  showGoogleOAuth?: boolean;
8
9
  loginUrl?: string;
9
10
  }
10
- export default function SignupPage({ onSignup, showGoogleOAuth, loginUrl, logo, poweredBy, cardClassName, backgroundClass, locale, messages, }: SignupPageProps): import("react/jsx-runtime").JSX.Element;
11
+ export default function SignupPage({ onSignup, showGoogleOAuth, loginUrl, logo, poweredBy, cardClassName, removeBorder, removeShadow, mobileVariant, backgroundClass, locale, messages, }: SignupPageProps): import("react/jsx-runtime").JSX.Element;
@@ -3,8 +3,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  import React from 'react';
4
4
  import { Button, Input, Divider } from '../ui/index.js';
5
5
  import { AuthLayout } from '../AuthLayout.js';
6
+ import { AuthCard } from '../AuthCard.js';
6
7
  import { getUiTranslations } from '../ui/translations.js';
7
- export default function SignupPage({ onSignup, showGoogleOAuth = true, loginUrl = '/login', logo, poweredBy, cardClassName, backgroundClass, locale, messages }) {
8
+ export default function SignupPage({ onSignup, showGoogleOAuth = true, loginUrl = '/login', logo, poweredBy, cardClassName, removeBorder, removeShadow, mobileVariant, backgroundClass, locale, messages }) {
8
9
  const [name, setName] = React.useState('');
9
10
  const [email, setEmail] = React.useState('');
10
11
  const [isLoading, setIsLoading] = React.useState(false);
@@ -26,126 +27,131 @@ export default function SignupPage({ onSignup, showGoogleOAuth = true, loginUrl
26
27
  setIsLoading(false);
27
28
  }
28
29
  };
29
- return /*#__PURE__*/ _jsxs(AuthLayout, {
30
- logo: logo,
31
- title: t.title,
32
- subtitle: t.subtitle,
33
- poweredBy: poweredBy,
34
- cardClassName: cardClassName,
30
+ return /*#__PURE__*/ _jsx(AuthLayout, {
35
31
  backgroundClass: backgroundClass,
36
- footer: /*#__PURE__*/ _jsxs("p", {
37
- className: "text-center text-gray-600 text-sm",
38
- children: [
39
- t.haveAccount,
40
- ' ',
41
- /*#__PURE__*/ _jsx("a", {
42
- href: loginUrl,
43
- className: "text-gray-900 font-medium hover:underline",
44
- children: t.loginLink
45
- })
46
- ]
47
- }),
48
- children: [
49
- showGoogleOAuth && /*#__PURE__*/ _jsxs(_Fragment, {
32
+ children: /*#__PURE__*/ _jsxs(AuthCard, {
33
+ logo: logo,
34
+ title: t.title,
35
+ subtitle: t.subtitle,
36
+ poweredBy: poweredBy,
37
+ cardClassName: cardClassName,
38
+ removeBorder: removeBorder,
39
+ removeShadow: removeShadow,
40
+ mobileVariant: mobileVariant,
41
+ footer: /*#__PURE__*/ _jsxs("p", {
42
+ className: "text-center text-gray-600 text-sm",
50
43
  children: [
51
- /*#__PURE__*/ _jsxs(Button, {
52
- fullWidth: true,
53
- variant: "bordered",
54
- size: "lg",
55
- className: "mb-4",
56
- children: [
57
- /*#__PURE__*/ _jsxs("svg", {
58
- width: "20",
59
- height: "20",
60
- viewBox: "0 0 48 48",
61
- children: [
62
- /*#__PURE__*/ _jsx("path", {
63
- fill: "#EA4335",
64
- d: "M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"
65
- }),
66
- /*#__PURE__*/ _jsx("path", {
67
- fill: "#4285F4",
68
- d: "M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"
69
- }),
70
- /*#__PURE__*/ _jsx("path", {
71
- fill: "#FBBC05",
72
- d: "M10.53 28.59a14.5 14.5 0 0 1 0-9.18l-7.98-6.19a24.01 24.01 0 0 0 0 21.56l7.98-6.19z"
73
- }),
74
- /*#__PURE__*/ _jsx("path", {
75
- fill: "#34A853",
76
- d: "M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"
77
- })
78
- ]
79
- }),
80
- t.continueWithGoogle
81
- ]
82
- }),
83
- /*#__PURE__*/ _jsxs("div", {
84
- className: "flex items-center gap-4 my-4",
85
- children: [
86
- /*#__PURE__*/ _jsx(Divider, {
87
- className: "flex-1"
88
- }),
89
- /*#__PURE__*/ _jsx("span", {
90
- className: "text-gray-500 text-sm",
91
- children: t.or
92
- }),
93
- /*#__PURE__*/ _jsx(Divider, {
94
- className: "flex-1"
95
- })
96
- ]
44
+ t.haveAccount,
45
+ ' ',
46
+ /*#__PURE__*/ _jsx("a", {
47
+ href: loginUrl,
48
+ className: "text-gray-900 font-medium hover:underline",
49
+ children: t.loginLink
97
50
  })
98
51
  ]
99
52
  }),
100
- /*#__PURE__*/ _jsxs("form", {
101
- onSubmit: handleSubmit,
102
- className: "space-y-4",
103
- children: [
104
- error && /*#__PURE__*/ _jsx("div", {
105
- className: "bg-red-50 text-red-600 border border-red-200 rounded-lg p-3 text-sm animate-[fadeIn_0.2s_ease-out]",
106
- children: error
107
- }),
108
- /*#__PURE__*/ _jsx(Input, {
109
- label: t.fullNameLabel,
110
- value: name,
111
- onValueChange: setName,
112
- isRequired: true
113
- }),
114
- /*#__PURE__*/ _jsx(Input, {
115
- type: "email",
116
- label: t.emailLabel,
117
- value: email,
118
- onValueChange: setEmail,
119
- isRequired: true
120
- }),
121
- /*#__PURE__*/ _jsxs("p", {
122
- className: "text-xs text-gray-600 text-center",
123
- children: [
124
- t.termsNotice,
125
- ' ',
126
- /*#__PURE__*/ _jsx("a", {
127
- href: "/terms",
128
- className: "text-gray-900 hover:underline",
129
- children: t.termsLink
130
- }),
131
- " ",
132
- t.andSeparator,
133
- ' ',
134
- /*#__PURE__*/ _jsx("a", {
135
- href: "/privacy",
136
- className: "text-gray-900 hover:underline",
137
- children: t.privacyLink
138
- })
139
- ]
140
- }),
141
- /*#__PURE__*/ _jsx(Button, {
142
- type: "submit",
143
- variant: "primary",
144
- isLoading: isLoading,
145
- children: t.createAccount
146
- })
147
- ]
148
- })
149
- ]
53
+ children: [
54
+ showGoogleOAuth && /*#__PURE__*/ _jsxs(_Fragment, {
55
+ children: [
56
+ /*#__PURE__*/ _jsxs(Button, {
57
+ fullWidth: true,
58
+ variant: "bordered",
59
+ size: "lg",
60
+ className: "mb-4",
61
+ children: [
62
+ /*#__PURE__*/ _jsxs("svg", {
63
+ width: "20",
64
+ height: "20",
65
+ viewBox: "0 0 48 48",
66
+ children: [
67
+ /*#__PURE__*/ _jsx("path", {
68
+ fill: "#EA4335",
69
+ d: "M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"
70
+ }),
71
+ /*#__PURE__*/ _jsx("path", {
72
+ fill: "#4285F4",
73
+ d: "M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"
74
+ }),
75
+ /*#__PURE__*/ _jsx("path", {
76
+ fill: "#FBBC05",
77
+ d: "M10.53 28.59a14.5 14.5 0 0 1 0-9.18l-7.98-6.19a24.01 24.01 0 0 0 0 21.56l7.98-6.19z"
78
+ }),
79
+ /*#__PURE__*/ _jsx("path", {
80
+ fill: "#34A853",
81
+ d: "M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"
82
+ })
83
+ ]
84
+ }),
85
+ t.continueWithGoogle
86
+ ]
87
+ }),
88
+ /*#__PURE__*/ _jsxs("div", {
89
+ className: "flex items-center gap-4 my-4",
90
+ children: [
91
+ /*#__PURE__*/ _jsx(Divider, {
92
+ className: "flex-1"
93
+ }),
94
+ /*#__PURE__*/ _jsx("span", {
95
+ className: "text-gray-500 text-sm",
96
+ children: t.or
97
+ }),
98
+ /*#__PURE__*/ _jsx(Divider, {
99
+ className: "flex-1"
100
+ })
101
+ ]
102
+ })
103
+ ]
104
+ }),
105
+ /*#__PURE__*/ _jsxs("form", {
106
+ onSubmit: handleSubmit,
107
+ className: "space-y-4",
108
+ children: [
109
+ error && /*#__PURE__*/ _jsx("div", {
110
+ className: "bg-red-50 text-red-600 border border-red-200 rounded-lg p-3 text-sm animate-[fadeIn_0.2s_ease-out]",
111
+ children: error
112
+ }),
113
+ /*#__PURE__*/ _jsx(Input, {
114
+ label: t.fullNameLabel,
115
+ value: name,
116
+ onValueChange: setName,
117
+ isRequired: true
118
+ }),
119
+ /*#__PURE__*/ _jsx(Input, {
120
+ type: "email",
121
+ label: t.emailLabel,
122
+ value: email,
123
+ onValueChange: setEmail,
124
+ isRequired: true
125
+ }),
126
+ /*#__PURE__*/ _jsxs("p", {
127
+ className: "text-xs text-gray-600 text-center",
128
+ children: [
129
+ t.termsNotice,
130
+ ' ',
131
+ /*#__PURE__*/ _jsx("a", {
132
+ href: "/terms",
133
+ className: "text-gray-900 hover:underline",
134
+ children: t.termsLink
135
+ }),
136
+ " ",
137
+ t.andSeparator,
138
+ ' ',
139
+ /*#__PURE__*/ _jsx("a", {
140
+ href: "/privacy",
141
+ className: "text-gray-900 hover:underline",
142
+ children: t.privacyLink
143
+ })
144
+ ]
145
+ }),
146
+ /*#__PURE__*/ _jsx(Button, {
147
+ type: "submit",
148
+ variant: "primary",
149
+ isLoading: isLoading,
150
+ children: t.createAccount
151
+ })
152
+ ]
153
+ })
154
+ ]
155
+ })
150
156
  });
151
157
  }
@@ -1,5 +1,6 @@
1
1
  import type { AuthLayoutConfig } from '../AuthLayout';
2
- export interface VerifyOtpPageProps extends AuthLayoutConfig {
2
+ import type { AuthCardConfig } from '../AuthCard';
3
+ export interface VerifyOtpPageProps extends AuthLayoutConfig, AuthCardConfig {
3
4
  loginUrl?: string;
4
5
  }
5
6
  export default function VerifyOtpPage(props: VerifyOtpPageProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,6 @@
1
1
  import type { AuthLayoutConfig } from '../AuthLayout';
2
- export interface VerifyOtpPageHeroProps extends AuthLayoutConfig {
2
+ import type { AuthCardConfig } from '../AuthCard';
3
+ export interface VerifyOtpPageHeroProps extends AuthLayoutConfig, AuthCardConfig {
3
4
  loginUrl?: string;
4
5
  }
5
6
  export default function VerifyOtpPageHero(props: VerifyOtpPageHeroProps): import("react/jsx-runtime").JSX.Element;