@refinedev/antd 5.37.4 → 5.37.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 (162) hide show
  1. package/CHANGELOG.md +1760 -1778
  2. package/dist/components/autoSaveIndicator/index.d.ts.map +1 -1
  3. package/dist/components/breadcrumb/index.d.ts.map +1 -1
  4. package/dist/components/buttons/create/index.d.ts.map +1 -1
  5. package/dist/components/buttons/delete/index.d.ts.map +1 -1
  6. package/dist/components/buttons/import/index.d.ts.map +1 -1
  7. package/dist/components/buttons/types.d.ts.map +1 -1
  8. package/dist/components/crud/edit/index.d.ts.map +1 -1
  9. package/dist/components/crud/list/index.d.ts.map +1 -1
  10. package/dist/components/crud/show/index.d.ts.map +1 -1
  11. package/dist/components/crud/types.d.ts.map +1 -1
  12. package/dist/components/fields/types.d.ts.map +1 -1
  13. package/dist/components/layout/sider/index.d.ts.map +1 -1
  14. package/dist/components/layout/title/index.d.ts.map +1 -1
  15. package/dist/components/layout/types.d.ts.map +1 -1
  16. package/dist/components/pageHeader/index.d.ts.map +1 -1
  17. package/dist/components/pages/auth/components/forgotPassword/index.d.ts.map +1 -1
  18. package/dist/components/pages/auth/components/login/index.d.ts.map +1 -1
  19. package/dist/components/pages/auth/components/register/index.d.ts.map +1 -1
  20. package/dist/components/pages/auth/components/updatePassword/index.d.ts.map +1 -1
  21. package/dist/components/pages/auth/index.d.ts.map +1 -1
  22. package/dist/components/pages/login/index.d.ts.map +1 -1
  23. package/dist/components/pages/ready/index.d.ts.map +1 -1
  24. package/dist/components/table/components/filterDropdown/index.d.ts.map +1 -1
  25. package/dist/components/themedLayout/header/index.d.ts.map +1 -1
  26. package/dist/components/themedLayout/types.d.ts.map +1 -1
  27. package/dist/components/themedLayoutV2/header/index.d.ts.map +1 -1
  28. package/dist/components/themedLayoutV2/index.d.ts.map +1 -1
  29. package/dist/components/themedLayoutV2/sider/index.d.ts.map +1 -1
  30. package/dist/components/themedLayoutV2/types.d.ts.map +1 -1
  31. package/dist/components/undoableNotification/index.d.ts.map +1 -1
  32. package/dist/contexts/index.d.ts.map +1 -1
  33. package/dist/contexts/themedLayoutContext/IThemedLayoutContext.d.ts.map +1 -1
  34. package/dist/contexts/themedLayoutContext/index.d.ts.map +1 -1
  35. package/dist/definitions/table/index.d.ts.map +1 -1
  36. package/dist/definitions/themes/index.d.ts.map +1 -1
  37. package/dist/esm/index.js +1 -1
  38. package/dist/esm/index.js.map +1 -1
  39. package/dist/hooks/fields/useCheckboxGroup/index.d.ts.map +1 -1
  40. package/dist/hooks/fields/useRadioGroup/index.d.ts.map +1 -1
  41. package/dist/hooks/fields/useSelect/index.d.ts.map +1 -1
  42. package/dist/hooks/form/index.d.ts.map +1 -1
  43. package/dist/hooks/form/useDrawerForm/index.d.ts.map +1 -1
  44. package/dist/hooks/form/useDrawerForm/useDrawerForm.d.ts.map +1 -1
  45. package/dist/hooks/form/useForm.d.ts.map +1 -1
  46. package/dist/hooks/form/useModalForm/index.d.ts.map +1 -1
  47. package/dist/hooks/form/useModalForm/useModalForm.d.ts.map +1 -1
  48. package/dist/hooks/form/useStepsForm/index.d.ts.map +1 -1
  49. package/dist/hooks/form/useStepsForm/useStepsForm.d.ts.map +1 -1
  50. package/dist/hooks/import/index.d.ts.map +1 -1
  51. package/dist/hooks/list/useSimpleList/useSimpleList.d.ts.map +1 -1
  52. package/dist/hooks/modal/useModal/index.d.ts.map +1 -1
  53. package/dist/hooks/table/useEditableTable/useEditableTable.d.ts.map +1 -1
  54. package/dist/hooks/table/useTable/paginationLink.d.ts.map +1 -1
  55. package/dist/hooks/table/useTable/useTable.d.ts.map +1 -1
  56. package/dist/hooks/useFileUploadState/index.d.ts.map +1 -1
  57. package/dist/hooks/useSiderVisible/index.d.ts.map +1 -1
  58. package/dist/iife/index.js +10 -10
  59. package/dist/iife/index.js.map +1 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/interfaces/field.d.ts.map +1 -1
  64. package/dist/interfaces/index.d.ts.map +1 -1
  65. package/dist/interfaces/upload.d.ts.map +1 -1
  66. package/package.json +32 -32
  67. package/refine.config.js +497 -524
  68. package/src/components/autoSaveIndicator/index.tsx +69 -69
  69. package/src/components/breadcrumb/index.tsx +63 -65
  70. package/src/components/buttons/clone/index.tsx +86 -86
  71. package/src/components/buttons/create/index.tsx +85 -86
  72. package/src/components/buttons/delete/index.tsx +114 -119
  73. package/src/components/buttons/edit/index.tsx +86 -86
  74. package/src/components/buttons/export/index.tsx +17 -17
  75. package/src/components/buttons/import/index.tsx +19 -20
  76. package/src/components/buttons/list/index.tsx +105 -105
  77. package/src/components/buttons/refresh/index.tsx +50 -50
  78. package/src/components/buttons/save/index.tsx +17 -17
  79. package/src/components/buttons/show/index.tsx +86 -86
  80. package/src/components/buttons/types.ts +20 -20
  81. package/src/components/crud/create/index.tsx +120 -120
  82. package/src/components/crud/edit/index.tsx +205 -207
  83. package/src/components/crud/list/index.tsx +88 -90
  84. package/src/components/crud/show/index.tsx +175 -185
  85. package/src/components/crud/types.ts +41 -56
  86. package/src/components/fields/boolean/index.tsx +11 -11
  87. package/src/components/fields/date/index.tsx +13 -13
  88. package/src/components/fields/email/index.tsx +5 -5
  89. package/src/components/fields/file/index.tsx +8 -8
  90. package/src/components/fields/image/index.tsx +4 -4
  91. package/src/components/fields/markdown/index.tsx +9 -9
  92. package/src/components/fields/number/index.tsx +17 -17
  93. package/src/components/fields/tag/index.tsx +1 -1
  94. package/src/components/fields/text/index.tsx +1 -1
  95. package/src/components/fields/types.ts +18 -18
  96. package/src/components/fields/url/index.tsx +8 -8
  97. package/src/components/layout/header/index.tsx +25 -25
  98. package/src/components/layout/index.tsx +30 -30
  99. package/src/components/layout/sider/index.tsx +238 -246
  100. package/src/components/layout/sider/styles.ts +5 -5
  101. package/src/components/layout/title/index.tsx +40 -40
  102. package/src/components/layout/types.ts +6 -6
  103. package/src/components/pageHeader/index.tsx +44 -44
  104. package/src/components/pages/auth/components/forgotPassword/index.tsx +177 -180
  105. package/src/components/pages/auth/components/login/index.tsx +258 -271
  106. package/src/components/pages/auth/components/register/index.tsx +247 -263
  107. package/src/components/pages/auth/components/styles.ts +16 -16
  108. package/src/components/pages/auth/components/updatePassword/index.tsx +160 -174
  109. package/src/components/pages/auth/index.tsx +23 -23
  110. package/src/components/pages/error/index.tsx +57 -57
  111. package/src/components/pages/login/index.tsx +120 -146
  112. package/src/components/pages/login/styles.ts +12 -12
  113. package/src/components/pages/ready/index.tsx +72 -80
  114. package/src/components/pages/welcome/index.tsx +1 -1
  115. package/src/components/table/components/filterDropdown/index.tsx +89 -92
  116. package/src/components/themedLayout/header/index.tsx +28 -32
  117. package/src/components/themedLayout/index.tsx +30 -30
  118. package/src/components/themedLayout/sider/index.tsx +279 -279
  119. package/src/components/themedLayout/sider/styles.ts +5 -5
  120. package/src/components/themedLayout/title/index.tsx +66 -66
  121. package/src/components/themedLayout/types.ts +8 -8
  122. package/src/components/themedLayoutV2/header/index.tsx +37 -41
  123. package/src/components/themedLayoutV2/index.tsx +34 -36
  124. package/src/components/themedLayoutV2/sider/index.tsx +309 -313
  125. package/src/components/themedLayoutV2/sider/styles.ts +5 -5
  126. package/src/components/themedLayoutV2/title/index.tsx +66 -66
  127. package/src/components/themedLayoutV2/types.ts +9 -9
  128. package/src/components/undoableNotification/index.tsx +31 -31
  129. package/src/contexts/index.ts +2 -2
  130. package/src/contexts/themedLayoutContext/IThemedLayoutContext.ts +4 -4
  131. package/src/contexts/themedLayoutContext/index.tsx +22 -22
  132. package/src/definitions/table/index.ts +81 -82
  133. package/src/definitions/themes/index.ts +35 -35
  134. package/src/definitions/upload/index.ts +17 -17
  135. package/src/hooks/fields/useCheckboxGroup/index.ts +64 -64
  136. package/src/hooks/fields/useRadioGroup/index.ts +60 -63
  137. package/src/hooks/fields/useSelect/index.ts +30 -30
  138. package/src/hooks/form/index.ts +10 -10
  139. package/src/hooks/form/useDrawerForm/index.ts +4 -4
  140. package/src/hooks/form/useDrawerForm/useDrawerForm.ts +257 -261
  141. package/src/hooks/form/useForm.ts +256 -259
  142. package/src/hooks/form/useModalForm/index.ts +3 -3
  143. package/src/hooks/form/useModalForm/useModalForm.ts +289 -295
  144. package/src/hooks/form/useStepsForm/index.ts +3 -3
  145. package/src/hooks/form/useStepsForm/useStepsForm.ts +96 -96
  146. package/src/hooks/import/index.tsx +104 -106
  147. package/src/hooks/list/useSimpleList/useSimpleList.ts +179 -185
  148. package/src/hooks/modal/useModal/index.tsx +24 -24
  149. package/src/hooks/table/useEditableTable/useEditableTable.ts +85 -85
  150. package/src/hooks/table/useTable/paginationLink.tsx +17 -17
  151. package/src/hooks/table/useTable/useTable.ts +199 -205
  152. package/src/hooks/useFileUploadState/index.ts +20 -20
  153. package/src/hooks/useSiderVisible/index.ts +16 -16
  154. package/src/hooks/useThemedLayoutContext/index.ts +12 -12
  155. package/src/index.tsx +4 -4
  156. package/src/interfaces/field.ts +1 -1
  157. package/src/interfaces/index.ts +7 -8
  158. package/src/interfaces/upload.ts +7 -7
  159. package/src/providers/notificationProvider/index.tsx +78 -78
  160. package/src/types/index.d.ts +2 -2
  161. package/src/types/sunflower.d.ts +68 -68
  162. package/tsconfig.json +26 -26
@@ -1,35 +1,35 @@
1
1
  import React from "react";
2
2
  import {
3
- LoginPageProps,
4
- LoginFormTypes,
5
- useLink,
6
- useRouterType,
7
- useActiveAuthProvider,
3
+ LoginPageProps,
4
+ LoginFormTypes,
5
+ useLink,
6
+ useRouterType,
7
+ useActiveAuthProvider,
8
8
  } from "@refinedev/core";
9
9
  import {
10
- Row,
11
- Col,
12
- Layout,
13
- Card,
14
- Typography,
15
- Form,
16
- Input,
17
- Button,
18
- Checkbox,
19
- CardProps,
20
- LayoutProps,
21
- Divider,
22
- FormProps,
23
- theme,
10
+ Row,
11
+ Col,
12
+ Layout,
13
+ Card,
14
+ Typography,
15
+ Form,
16
+ Input,
17
+ Button,
18
+ Checkbox,
19
+ CardProps,
20
+ LayoutProps,
21
+ Divider,
22
+ FormProps,
23
+ theme,
24
24
  } from "antd";
25
25
  import { useLogin, useTranslate, useRouterContext } from "@refinedev/core";
26
26
 
27
27
  import {
28
- bodyStyles,
29
- containerStyles,
30
- headStyles,
31
- layoutStyles,
32
- titleStyles,
28
+ bodyStyles,
29
+ containerStyles,
30
+ headStyles,
31
+ layoutStyles,
32
+ titleStyles,
33
33
  } from "../styles";
34
34
  import { ThemedTitleV2 } from "@components";
35
35
 
@@ -40,267 +40,254 @@ type LoginProps = LoginPageProps<LayoutProps, CardProps, FormProps>;
40
40
  * @see {@link https://refine.dev/docs/ui-frameworks/antd/components/antd-auth-page/#login} for more details.
41
41
  */
42
42
  export const LoginPage: React.FC<LoginProps> = ({
43
- providers,
44
- registerLink,
45
- forgotPasswordLink,
46
- rememberMe,
47
- contentProps,
48
- wrapperProps,
49
- renderContent,
50
- formProps,
51
- title,
52
- hideForm,
43
+ providers,
44
+ registerLink,
45
+ forgotPasswordLink,
46
+ rememberMe,
47
+ contentProps,
48
+ wrapperProps,
49
+ renderContent,
50
+ formProps,
51
+ title,
52
+ hideForm,
53
53
  }) => {
54
- const { token } = theme.useToken();
55
- const [form] = Form.useForm<LoginFormTypes>();
56
- const translate = useTranslate();
57
- const routerType = useRouterType();
58
- const Link = useLink();
59
- const { Link: LegacyLink } = useRouterContext();
54
+ const { token } = theme.useToken();
55
+ const [form] = Form.useForm<LoginFormTypes>();
56
+ const translate = useTranslate();
57
+ const routerType = useRouterType();
58
+ const Link = useLink();
59
+ const { Link: LegacyLink } = useRouterContext();
60
60
 
61
- const ActiveLink = routerType === "legacy" ? LegacyLink : Link;
61
+ const ActiveLink = routerType === "legacy" ? LegacyLink : Link;
62
62
 
63
- const authProvider = useActiveAuthProvider();
64
- const { mutate: login, isLoading } = useLogin<LoginFormTypes>({
65
- v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),
66
- });
63
+ const authProvider = useActiveAuthProvider();
64
+ const { mutate: login, isLoading } = useLogin<LoginFormTypes>({
65
+ v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),
66
+ });
67
67
 
68
- const PageTitle =
69
- title === false ? null : (
70
- <div
71
- style={{
72
- display: "flex",
73
- justifyContent: "center",
74
- marginBottom: "32px",
75
- fontSize: "20px",
76
- }}
77
- >
78
- {title ?? <ThemedTitleV2 collapsed={false} />}
79
- </div>
80
- );
81
-
82
- const CardTitle = (
83
- <Typography.Title
84
- level={3}
85
- style={{
86
- color: token.colorPrimaryTextHover,
87
- ...titleStyles,
88
- }}
89
- >
90
- {translate("pages.login.title", "Sign in to your account")}
91
- </Typography.Title>
68
+ const PageTitle =
69
+ title === false ? null : (
70
+ <div
71
+ style={{
72
+ display: "flex",
73
+ justifyContent: "center",
74
+ marginBottom: "32px",
75
+ fontSize: "20px",
76
+ }}
77
+ >
78
+ {title ?? <ThemedTitleV2 collapsed={false} />}
79
+ </div>
92
80
  );
93
81
 
94
- const renderProviders = () => {
95
- if (providers && providers.length > 0) {
82
+ const CardTitle = (
83
+ <Typography.Title
84
+ level={3}
85
+ style={{
86
+ color: token.colorPrimaryTextHover,
87
+ ...titleStyles,
88
+ }}
89
+ >
90
+ {translate("pages.login.title", "Sign in to your account")}
91
+ </Typography.Title>
92
+ );
93
+
94
+ const renderProviders = () => {
95
+ if (providers && providers.length > 0) {
96
+ return (
97
+ <>
98
+ {providers.map((provider) => {
96
99
  return (
97
- <>
98
- {providers.map((provider) => {
99
- return (
100
- <Button
101
- key={provider.name}
102
- type="default"
103
- block
104
- icon={provider.icon}
105
- style={{
106
- display: "flex",
107
- justifyContent: "center",
108
- alignItems: "center",
109
- width: "100%",
110
- marginBottom: "8px",
111
- }}
112
- onClick={() =>
113
- login({
114
- providerName: provider.name,
115
- })
116
- }
117
- >
118
- {provider.label}
119
- </Button>
120
- );
121
- })}
122
- {!hideForm && (
123
- <Divider>
124
- <Typography.Text
125
- style={{
126
- color: token.colorTextLabel,
127
- }}
128
- >
129
- {translate("pages.login.divider", "or")}
130
- </Typography.Text>
131
- </Divider>
132
- )}
133
- </>
100
+ <Button
101
+ key={provider.name}
102
+ type="default"
103
+ block
104
+ icon={provider.icon}
105
+ style={{
106
+ display: "flex",
107
+ justifyContent: "center",
108
+ alignItems: "center",
109
+ width: "100%",
110
+ marginBottom: "8px",
111
+ }}
112
+ onClick={() =>
113
+ login({
114
+ providerName: provider.name,
115
+ })
116
+ }
117
+ >
118
+ {provider.label}
119
+ </Button>
134
120
  );
135
- }
136
- return null;
137
- };
121
+ })}
122
+ {!hideForm && (
123
+ <Divider>
124
+ <Typography.Text
125
+ style={{
126
+ color: token.colorTextLabel,
127
+ }}
128
+ >
129
+ {translate("pages.login.divider", "or")}
130
+ </Typography.Text>
131
+ </Divider>
132
+ )}
133
+ </>
134
+ );
135
+ }
136
+ return null;
137
+ };
138
138
 
139
- const CardContent = (
140
- <Card
141
- title={CardTitle}
142
- headStyle={headStyles}
143
- bodyStyle={bodyStyles}
139
+ const CardContent = (
140
+ <Card
141
+ title={CardTitle}
142
+ headStyle={headStyles}
143
+ bodyStyle={bodyStyles}
144
+ style={{
145
+ ...containerStyles,
146
+ backgroundColor: token.colorBgElevated,
147
+ }}
148
+ {...(contentProps ?? {})}
149
+ >
150
+ {renderProviders()}
151
+ {!hideForm && (
152
+ <Form<LoginFormTypes>
153
+ layout="vertical"
154
+ form={form}
155
+ onFinish={(values) => login(values)}
156
+ requiredMark={false}
157
+ initialValues={{
158
+ remember: false,
159
+ }}
160
+ {...formProps}
161
+ >
162
+ <Form.Item
163
+ name="email"
164
+ label={translate("pages.login.fields.email", "Email")}
165
+ rules={[
166
+ { required: true },
167
+ {
168
+ type: "email",
169
+ message: translate(
170
+ "pages.login.errors.validEmail",
171
+ "Invalid email address",
172
+ ),
173
+ },
174
+ ]}
175
+ >
176
+ <Input
177
+ size="large"
178
+ placeholder={translate("pages.login.fields.email", "Email")}
179
+ />
180
+ </Form.Item>
181
+ <Form.Item
182
+ name="password"
183
+ label={translate("pages.login.fields.password", "Password")}
184
+ rules={[{ required: true }]}
185
+ >
186
+ <Input
187
+ type="password"
188
+ autoComplete="current-password"
189
+ placeholder="●●●●●●●●"
190
+ size="large"
191
+ />
192
+ </Form.Item>
193
+ <div
144
194
  style={{
145
- ...containerStyles,
146
- backgroundColor: token.colorBgElevated,
195
+ display: "flex",
196
+ justifyContent: "space-between",
197
+ marginBottom: "24px",
147
198
  }}
148
- {...(contentProps ?? {})}
149
- >
150
- {renderProviders()}
151
- {!hideForm && (
152
- <Form<LoginFormTypes>
153
- layout="vertical"
154
- form={form}
155
- onFinish={(values) => login(values)}
156
- requiredMark={false}
157
- initialValues={{
158
- remember: false,
159
- }}
160
- {...formProps}
199
+ >
200
+ {rememberMe ?? (
201
+ <Form.Item name="remember" valuePropName="checked" noStyle>
202
+ <Checkbox
203
+ style={{
204
+ fontSize: "12px",
205
+ }}
161
206
  >
162
- <Form.Item
163
- name="email"
164
- label={translate("pages.login.fields.email", "Email")}
165
- rules={[
166
- { required: true },
167
- {
168
- type: "email",
169
- message: translate(
170
- "pages.login.errors.validEmail",
171
- "Invalid email address",
172
- ),
173
- },
174
- ]}
175
- >
176
- <Input
177
- size="large"
178
- placeholder={translate(
179
- "pages.login.fields.email",
180
- "Email",
181
- )}
182
- />
183
- </Form.Item>
184
- <Form.Item
185
- name="password"
186
- label={translate(
187
- "pages.login.fields.password",
188
- "Password",
189
- )}
190
- rules={[{ required: true }]}
191
- >
192
- <Input
193
- type="password"
194
- autoComplete="current-password"
195
- placeholder="●●●●●●●●"
196
- size="large"
197
- />
198
- </Form.Item>
199
- <div
200
- style={{
201
- display: "flex",
202
- justifyContent: "space-between",
203
- marginBottom: "24px",
204
- }}
205
- >
206
- {rememberMe ?? (
207
- <Form.Item
208
- name="remember"
209
- valuePropName="checked"
210
- noStyle
211
- >
212
- <Checkbox
213
- style={{
214
- fontSize: "12px",
215
- }}
216
- >
217
- {translate(
218
- "pages.login.buttons.rememberMe",
219
- "Remember me",
220
- )}
221
- </Checkbox>
222
- </Form.Item>
223
- )}
224
- {forgotPasswordLink ?? (
225
- <ActiveLink
226
- style={{
227
- color: token.colorPrimaryTextHover,
228
- fontSize: "12px",
229
- marginLeft: "auto",
230
- }}
231
- to="/forgot-password"
232
- >
233
- {translate(
234
- "pages.login.buttons.forgotPassword",
235
- "Forgot password?",
236
- )}
237
- </ActiveLink>
238
- )}
239
- </div>
240
- {!hideForm && (
241
- <Form.Item>
242
- <Button
243
- type="primary"
244
- size="large"
245
- htmlType="submit"
246
- loading={isLoading}
247
- block
248
- >
249
- {translate("pages.login.signin", "Sign in")}
250
- </Button>
251
- </Form.Item>
252
- )}
253
- </Form>
207
+ {translate("pages.login.buttons.rememberMe", "Remember me")}
208
+ </Checkbox>
209
+ </Form.Item>
254
210
  )}
255
-
256
- {registerLink ?? (
257
- <div
258
- style={{
259
- marginTop: hideForm ? 16 : 8,
260
- }}
261
- >
262
- <Typography.Text style={{ fontSize: 12 }}>
263
- {translate(
264
- "pages.login.buttons.noAccount",
265
- "Don’t have an account?",
266
- )}{" "}
267
- <ActiveLink
268
- to="/register"
269
- style={{
270
- fontWeight: "bold",
271
- color: token.colorPrimaryTextHover,
272
- }}
273
- >
274
- {translate("pages.login.signup", "Sign up")}
275
- </ActiveLink>
276
- </Typography.Text>
277
- </div>
278
- )}
279
- </Card>
280
- );
281
-
282
- return (
283
- <Layout style={layoutStyles} {...(wrapperProps ?? {})}>
284
- <Row
285
- justify="center"
286
- align={hideForm ? "top" : "middle"}
211
+ {forgotPasswordLink ?? (
212
+ <ActiveLink
287
213
  style={{
288
- padding: "16px 0",
289
- minHeight: "100dvh",
290
- paddingTop: hideForm ? "15dvh" : "16px",
214
+ color: token.colorPrimaryTextHover,
215
+ fontSize: "12px",
216
+ marginLeft: "auto",
291
217
  }}
218
+ to="/forgot-password"
219
+ >
220
+ {translate(
221
+ "pages.login.buttons.forgotPassword",
222
+ "Forgot password?",
223
+ )}
224
+ </ActiveLink>
225
+ )}
226
+ </div>
227
+ {!hideForm && (
228
+ <Form.Item>
229
+ <Button
230
+ type="primary"
231
+ size="large"
232
+ htmlType="submit"
233
+ loading={isLoading}
234
+ block
235
+ >
236
+ {translate("pages.login.signin", "Sign in")}
237
+ </Button>
238
+ </Form.Item>
239
+ )}
240
+ </Form>
241
+ )}
242
+
243
+ {registerLink ?? (
244
+ <div
245
+ style={{
246
+ marginTop: hideForm ? 16 : 8,
247
+ }}
248
+ >
249
+ <Typography.Text style={{ fontSize: 12 }}>
250
+ {translate(
251
+ "pages.login.buttons.noAccount",
252
+ "Don’t have an account?",
253
+ )}{" "}
254
+ <ActiveLink
255
+ to="/register"
256
+ style={{
257
+ fontWeight: "bold",
258
+ color: token.colorPrimaryTextHover,
259
+ }}
292
260
  >
293
- <Col xs={22}>
294
- {renderContent ? (
295
- renderContent(CardContent, PageTitle)
296
- ) : (
297
- <>
298
- {PageTitle}
299
- {CardContent}
300
- </>
301
- )}
302
- </Col>
303
- </Row>
304
- </Layout>
305
- );
261
+ {translate("pages.login.signup", "Sign up")}
262
+ </ActiveLink>
263
+ </Typography.Text>
264
+ </div>
265
+ )}
266
+ </Card>
267
+ );
268
+
269
+ return (
270
+ <Layout style={layoutStyles} {...(wrapperProps ?? {})}>
271
+ <Row
272
+ justify="center"
273
+ align={hideForm ? "top" : "middle"}
274
+ style={{
275
+ padding: "16px 0",
276
+ minHeight: "100dvh",
277
+ paddingTop: hideForm ? "15dvh" : "16px",
278
+ }}
279
+ >
280
+ <Col xs={22}>
281
+ {renderContent ? (
282
+ renderContent(CardContent, PageTitle)
283
+ ) : (
284
+ <>
285
+ {PageTitle}
286
+ {CardContent}
287
+ </>
288
+ )}
289
+ </Col>
290
+ </Row>
291
+ </Layout>
292
+ );
306
293
  };