Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
new-api
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
cfa73996
authored
Aug 18, 2025
by
t0ng7u
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🤔
style(ui): remove `large` size in auth components
parent
24fbd0bf
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
2 additions
and
32 deletions
+2
-32
web/src/components/auth/LoginForm.js
+1
-12
web/src/components/auth/PasswordResetConfirm.js
+0
-3
web/src/components/auth/PasswordResetForm.js
+0
-2
web/src/components/auth/RegisterForm.js
+1
-15
No files found.
web/src/components/auth/LoginForm.js
View file @
cfa73996
...
@@ -325,7 +325,6 @@ const LoginForm = () => {
...
@@ -325,7 +325,6 @@ const LoginForm = () => {
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
type
=
"tertiary"
type
=
"tertiary"
icon
=
{
<
Icon
svg
=
{
<
WeChatIcon
/>
}
style
=
{{
color
:
'#07C160'
}}
/>
}
icon
=
{
<
Icon
svg
=
{
<
WeChatIcon
/>
}
style
=
{{
color
:
'#07C160'
}}
/>
}
size
=
"large"
onClick
=
{
onWeChatLoginClicked
}
onClick
=
{
onWeChatLoginClicked
}
loading
=
{
wechatLoading
}
loading
=
{
wechatLoading
}
>
>
...
@@ -339,7 +338,6 @@ const LoginForm = () => {
...
@@ -339,7 +338,6 @@ const LoginForm = () => {
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
type
=
"tertiary"
type
=
"tertiary"
icon
=
{
<
IconGithubLogo
size
=
"large"
/>
}
icon
=
{
<
IconGithubLogo
size
=
"large"
/>
}
size
=
"large"
onClick
=
{
handleGitHubClick
}
onClick
=
{
handleGitHubClick
}
loading
=
{
githubLoading
}
loading
=
{
githubLoading
}
>
>
...
@@ -353,7 +351,6 @@ const LoginForm = () => {
...
@@ -353,7 +351,6 @@ const LoginForm = () => {
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
type
=
"tertiary"
type
=
"tertiary"
icon
=
{
<
OIDCIcon
style
=
{{
color
:
'#1877F2'
}}
/>
}
icon
=
{
<
OIDCIcon
style
=
{{
color
:
'#1877F2'
}}
/>
}
size
=
"large"
onClick
=
{
handleOIDCClick
}
onClick
=
{
handleOIDCClick
}
loading
=
{
oidcLoading
}
loading
=
{
oidcLoading
}
>
>
...
@@ -367,7 +364,6 @@ const LoginForm = () => {
...
@@ -367,7 +364,6 @@ const LoginForm = () => {
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
type
=
"tertiary"
type
=
"tertiary"
icon
=
{
<
LinuxDoIcon
style
=
{{
color
:
'#E95420'
,
width
:
'20px'
,
height
:
'20px'
}}
/>
}
icon
=
{
<
LinuxDoIcon
style
=
{{
color
:
'#E95420'
,
width
:
'20px'
,
height
:
'20px'
}}
/>
}
size
=
"large"
onClick
=
{
handleLinuxDOClick
}
onClick
=
{
handleLinuxDOClick
}
loading
=
{
linuxdoLoading
}
loading
=
{
linuxdoLoading
}
>
>
...
@@ -393,7 +389,6 @@ const LoginForm = () => {
...
@@ -393,7 +389,6 @@ const LoginForm = () => {
type
=
"primary"
type
=
"primary"
className
=
"w-full h-12 flex items-center justify-center bg-black text-white !rounded-full hover:bg-gray-800 transition-colors"
className
=
"w-full h-12 flex items-center justify-center bg-black text-white !rounded-full hover:bg-gray-800 transition-colors"
icon
=
{
<
IconMail
size
=
"large"
/>
}
icon
=
{
<
IconMail
size
=
"large"
/>
}
size
=
"large"
onClick
=
{
handleEmailLoginClick
}
onClick
=
{
handleEmailLoginClick
}
loading
=
{
emailLoginLoading
}
loading
=
{
emailLoginLoading
}
>
>
...
@@ -441,7 +436,6 @@ const LoginForm = () => {
...
@@ -441,7 +436,6 @@ const LoginForm = () => {
label
=
{
t
(
'用户名或邮箱'
)}
label
=
{
t
(
'用户名或邮箱'
)}
placeholder
=
{
t
(
'请输入您的用户名或邮箱地址'
)}
placeholder
=
{
t
(
'请输入您的用户名或邮箱地址'
)}
name
=
"username"
name
=
"username"
size
=
"large"
onChange
=
{(
value
)
=>
handleChange
(
'username'
,
value
)}
onChange
=
{(
value
)
=>
handleChange
(
'username'
,
value
)}
prefix
=
{
<
IconMail
/>
}
prefix
=
{
<
IconMail
/>
}
/
>
/
>
...
@@ -452,7 +446,6 @@ const LoginForm = () => {
...
@@ -452,7 +446,6 @@ const LoginForm = () => {
placeholder
=
{
t
(
'请输入您的密码'
)}
placeholder
=
{
t
(
'请输入您的密码'
)}
name
=
"password"
name
=
"password"
mode
=
"password"
mode
=
"password"
size
=
"large"
onChange
=
{(
value
)
=>
handleChange
(
'password'
,
value
)}
onChange
=
{(
value
)
=>
handleChange
(
'password'
,
value
)}
prefix
=
{
<
IconLock
/>
}
prefix
=
{
<
IconLock
/>
}
/
>
/
>
...
@@ -463,7 +456,6 @@ const LoginForm = () => {
...
@@ -463,7 +456,6 @@ const LoginForm = () => {
className
=
"w-full !rounded-full"
className
=
"w-full !rounded-full"
type
=
"primary"
type
=
"primary"
htmlType
=
"submit"
htmlType
=
"submit"
size
=
"large"
onClick
=
{
handleSubmit
}
onClick
=
{
handleSubmit
}
loading
=
{
loginLoading
}
loading
=
{
loginLoading
}
>
>
...
@@ -474,7 +466,6 @@ const LoginForm = () => {
...
@@ -474,7 +466,6 @@ const LoginForm = () => {
theme
=
"borderless"
theme
=
"borderless"
type
=
'tertiary'
type
=
'tertiary'
className
=
"w-full !rounded-full"
className
=
"w-full !rounded-full"
size
=
"large"
onClick
=
{
handleResetPasswordClick
}
onClick
=
{
handleResetPasswordClick
}
loading
=
{
resetPasswordLoading
}
loading
=
{
resetPasswordLoading
}
>
>
...
@@ -494,7 +485,6 @@ const LoginForm = () => {
...
@@ -494,7 +485,6 @@ const LoginForm = () => {
theme
=
"outline"
theme
=
"outline"
type
=
"tertiary"
type
=
"tertiary"
className
=
"w-full !rounded-full"
className
=
"w-full !rounded-full"
size
=
"large"
onClick
=
{
handleOtherLoginOptionsClick
}
onClick
=
{
handleOtherLoginOptionsClick
}
loading
=
{
otherLoginOptionsLoading
}
loading
=
{
otherLoginOptionsLoading
}
>
>
...
@@ -534,7 +524,6 @@ const LoginForm = () => {
...
@@ -534,7 +524,6 @@ const LoginForm = () => {
onOk
=
{
onSubmitWeChatVerificationCode
}
onOk
=
{
onSubmitWeChatVerificationCode
}
onCancel
=
{()
=>
setShowWeChatLoginModal
(
false
)}
onCancel
=
{()
=>
setShowWeChatLoginModal
(
false
)}
okText
=
{
t
(
'登录'
)}
okText
=
{
t
(
'登录'
)}
size
=
"small"
centered
=
{
true
}
centered
=
{
true
}
okButtonProps
=
{{
okButtonProps
=
{{
loading
:
wechatCodeSubmitLoading
,
loading
:
wechatCodeSubmitLoading
,
...
@@ -548,7 +537,7 @@ const LoginForm = () => {
...
@@ -548,7 +537,7 @@ const LoginForm = () => {
<
p
>
{
t
(
'微信扫码关注公众号,输入「验证码」获取验证码(三分钟内有效)'
)}
<
/p
>
<
p
>
{
t
(
'微信扫码关注公众号,输入「验证码」获取验证码(三分钟内有效)'
)}
<
/p
>
<
/div
>
<
/div
>
<
Form
size
=
"large"
>
<
Form
>
<
Form
.
Input
<
Form
.
Input
field
=
"wechat_verification_code"
field
=
"wechat_verification_code"
placeholder
=
{
t
(
'验证码'
)}
placeholder
=
{
t
(
'验证码'
)}
...
...
web/src/components/auth/PasswordResetConfirm.js
View file @
cfa73996
...
@@ -131,7 +131,6 @@ const PasswordResetConfirm = () => {
...
@@ -131,7 +131,6 @@ const PasswordResetConfirm = () => {
field
=
"email"
field
=
"email"
label
=
{
t
(
'邮箱'
)}
label
=
{
t
(
'邮箱'
)}
name
=
"email"
name
=
"email"
size
=
"large"
disabled
=
{
true
}
disabled
=
{
true
}
prefix
=
{
<
IconMail
/>
}
prefix
=
{
<
IconMail
/>
}
placeholder
=
{
email
?
''
:
t
(
'等待获取邮箱信息...'
)}
placeholder
=
{
email
?
''
:
t
(
'等待获取邮箱信息...'
)}
...
@@ -142,7 +141,6 @@ const PasswordResetConfirm = () => {
...
@@ -142,7 +141,6 @@ const PasswordResetConfirm = () => {
field
=
"newPassword"
field
=
"newPassword"
label
=
{
t
(
'新密码'
)}
label
=
{
t
(
'新密码'
)}
name
=
"newPassword"
name
=
"newPassword"
size
=
"large"
disabled
=
{
true
}
disabled
=
{
true
}
prefix
=
{
<
IconLock
/>
}
prefix
=
{
<
IconLock
/>
}
suffix
=
{
suffix
=
{
...
@@ -167,7 +165,6 @@ const PasswordResetConfirm = () => {
...
@@ -167,7 +165,6 @@ const PasswordResetConfirm = () => {
className
=
"w-full !rounded-full"
className
=
"w-full !rounded-full"
type
=
"primary"
type
=
"primary"
htmlType
=
"submit"
htmlType
=
"submit"
size
=
"large"
onClick
=
{
handleSubmit
}
onClick
=
{
handleSubmit
}
loading
=
{
loading
}
loading
=
{
loading
}
disabled
=
{
disableButton
||
newPassword
||
!
isValidResetLink
}
disabled
=
{
disableButton
||
newPassword
||
!
isValidResetLink
}
...
...
web/src/components/auth/PasswordResetForm.js
View file @
cfa73996
...
@@ -120,7 +120,6 @@ const PasswordResetForm = () => {
...
@@ -120,7 +120,6 @@ const PasswordResetForm = () => {
label
=
{
t
(
'邮箱'
)}
label
=
{
t
(
'邮箱'
)}
placeholder
=
{
t
(
'请输入您的邮箱地址'
)}
placeholder
=
{
t
(
'请输入您的邮箱地址'
)}
name
=
"email"
name
=
"email"
size
=
"large"
value
=
{
email
}
value
=
{
email
}
onChange
=
{
handleChange
}
onChange
=
{
handleChange
}
prefix
=
{
<
IconMail
/>
}
prefix
=
{
<
IconMail
/>
}
...
@@ -132,7 +131,6 @@ const PasswordResetForm = () => {
...
@@ -132,7 +131,6 @@ const PasswordResetForm = () => {
className
=
"w-full !rounded-full"
className
=
"w-full !rounded-full"
type
=
"primary"
type
=
"primary"
htmlType
=
"submit"
htmlType
=
"submit"
size
=
"large"
onClick
=
{
handleSubmit
}
onClick
=
{
handleSubmit
}
loading
=
{
loading
}
loading
=
{
loading
}
disabled
=
{
disableButton
}
disabled
=
{
disableButton
}
...
...
web/src/components/auth/RegisterForm.js
View file @
cfa73996
...
@@ -322,7 +322,6 @@ const RegisterForm = () => {
...
@@ -322,7 +322,6 @@ const RegisterForm = () => {
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
type
=
"tertiary"
type
=
"tertiary"
icon
=
{
<
Icon
svg
=
{
<
WeChatIcon
/>
}
style
=
{{
color
:
'#07C160'
}}
/>
}
icon
=
{
<
Icon
svg
=
{
<
WeChatIcon
/>
}
style
=
{{
color
:
'#07C160'
}}
/>
}
size
=
"large"
onClick
=
{
onWeChatLoginClicked
}
onClick
=
{
onWeChatLoginClicked
}
loading
=
{
wechatLoading
}
loading
=
{
wechatLoading
}
>
>
...
@@ -336,7 +335,6 @@ const RegisterForm = () => {
...
@@ -336,7 +335,6 @@ const RegisterForm = () => {
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
type
=
"tertiary"
type
=
"tertiary"
icon
=
{
<
IconGithubLogo
size
=
"large"
/>
}
icon
=
{
<
IconGithubLogo
size
=
"large"
/>
}
size
=
"large"
onClick
=
{
handleGitHubClick
}
onClick
=
{
handleGitHubClick
}
loading
=
{
githubLoading
}
loading
=
{
githubLoading
}
>
>
...
@@ -350,7 +348,6 @@ const RegisterForm = () => {
...
@@ -350,7 +348,6 @@ const RegisterForm = () => {
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
type
=
"tertiary"
type
=
"tertiary"
icon
=
{
<
OIDCIcon
style
=
{{
color
:
'#1877F2'
}}
/>
}
icon
=
{
<
OIDCIcon
style
=
{{
color
:
'#1877F2'
}}
/>
}
size
=
"large"
onClick
=
{
handleOIDCClick
}
onClick
=
{
handleOIDCClick
}
loading
=
{
oidcLoading
}
loading
=
{
oidcLoading
}
>
>
...
@@ -364,7 +361,6 @@ const RegisterForm = () => {
...
@@ -364,7 +361,6 @@ const RegisterForm = () => {
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
className
=
"w-full h-12 flex items-center justify-center !rounded-full border border-gray-200 hover:bg-gray-50 transition-colors"
type
=
"tertiary"
type
=
"tertiary"
icon
=
{
<
LinuxDoIcon
style
=
{{
color
:
'#E95420'
,
width
:
'20px'
,
height
:
'20px'
}}
/>
}
icon
=
{
<
LinuxDoIcon
style
=
{{
color
:
'#E95420'
,
width
:
'20px'
,
height
:
'20px'
}}
/>
}
size
=
"large"
onClick
=
{
handleLinuxDOClick
}
onClick
=
{
handleLinuxDOClick
}
loading
=
{
linuxdoLoading
}
loading
=
{
linuxdoLoading
}
>
>
...
@@ -390,7 +386,6 @@ const RegisterForm = () => {
...
@@ -390,7 +386,6 @@ const RegisterForm = () => {
type
=
"primary"
type
=
"primary"
className
=
"w-full h-12 flex items-center justify-center bg-black text-white !rounded-full hover:bg-gray-800 transition-colors"
className
=
"w-full h-12 flex items-center justify-center bg-black text-white !rounded-full hover:bg-gray-800 transition-colors"
icon
=
{
<
IconMail
size
=
"large"
/>
}
icon
=
{
<
IconMail
size
=
"large"
/>
}
size
=
"large"
onClick
=
{
handleEmailRegisterClick
}
onClick
=
{
handleEmailRegisterClick
}
loading
=
{
emailRegisterLoading
}
loading
=
{
emailRegisterLoading
}
>
>
...
@@ -428,7 +423,6 @@ const RegisterForm = () => {
...
@@ -428,7 +423,6 @@ const RegisterForm = () => {
label
=
{
t
(
'用户名'
)}
label
=
{
t
(
'用户名'
)}
placeholder
=
{
t
(
'请输入用户名'
)}
placeholder
=
{
t
(
'请输入用户名'
)}
name
=
"username"
name
=
"username"
size
=
"large"
onChange
=
{(
value
)
=>
handleChange
(
'username'
,
value
)}
onChange
=
{(
value
)
=>
handleChange
(
'username'
,
value
)}
prefix
=
{
<
IconUser
/>
}
prefix
=
{
<
IconUser
/>
}
/
>
/
>
...
@@ -439,7 +433,6 @@ const RegisterForm = () => {
...
@@ -439,7 +433,6 @@ const RegisterForm = () => {
placeholder
=
{
t
(
'输入密码,最短 8 位,最长 20 位'
)}
placeholder
=
{
t
(
'输入密码,最短 8 位,最长 20 位'
)}
name
=
"password"
name
=
"password"
mode
=
"password"
mode
=
"password"
size
=
"large"
onChange
=
{(
value
)
=>
handleChange
(
'password'
,
value
)}
onChange
=
{(
value
)
=>
handleChange
(
'password'
,
value
)}
prefix
=
{
<
IconLock
/>
}
prefix
=
{
<
IconLock
/>
}
/
>
/
>
...
@@ -450,7 +443,6 @@ const RegisterForm = () => {
...
@@ -450,7 +443,6 @@ const RegisterForm = () => {
placeholder
=
{
t
(
'确认密码'
)}
placeholder
=
{
t
(
'确认密码'
)}
name
=
"password2"
name
=
"password2"
mode
=
"password"
mode
=
"password"
size
=
"large"
onChange
=
{(
value
)
=>
handleChange
(
'password2'
,
value
)}
onChange
=
{(
value
)
=>
handleChange
(
'password2'
,
value
)}
prefix
=
{
<
IconLock
/>
}
prefix
=
{
<
IconLock
/>
}
/
>
/
>
...
@@ -463,7 +455,6 @@ const RegisterForm = () => {
...
@@ -463,7 +455,6 @@ const RegisterForm = () => {
placeholder
=
{
t
(
'输入邮箱地址'
)}
placeholder
=
{
t
(
'输入邮箱地址'
)}
name
=
"email"
name
=
"email"
type
=
"email"
type
=
"email"
size
=
"large"
onChange
=
{(
value
)
=>
handleChange
(
'email'
,
value
)}
onChange
=
{(
value
)
=>
handleChange
(
'email'
,
value
)}
prefix
=
{
<
IconMail
/>
}
prefix
=
{
<
IconMail
/>
}
suffix
=
{
suffix
=
{
...
@@ -471,7 +462,6 @@ const RegisterForm = () => {
...
@@ -471,7 +462,6 @@ const RegisterForm = () => {
onClick
=
{
sendVerificationCode
}
onClick
=
{
sendVerificationCode
}
loading
=
{
verificationCodeLoading
}
loading
=
{
verificationCodeLoading
}
disabled
=
{
disableButton
||
verificationCodeLoading
}
disabled
=
{
disableButton
||
verificationCodeLoading
}
size
=
"small"
>
>
{
disableButton
?
`
${
t
(
'重新发送'
)}
(
${
countdown
}
)`
:
t
(
'获取验证码'
)}
{
disableButton
?
`
${
t
(
'重新发送'
)}
(
${
countdown
}
)`
:
t
(
'获取验证码'
)}
<
/Button
>
<
/Button
>
...
@@ -482,7 +472,6 @@ const RegisterForm = () => {
...
@@ -482,7 +472,6 @@ const RegisterForm = () => {
label
=
{
t
(
'验证码'
)}
label
=
{
t
(
'验证码'
)}
placeholder
=
{
t
(
'输入验证码'
)}
placeholder
=
{
t
(
'输入验证码'
)}
name
=
"verification_code"
name
=
"verification_code"
size
=
"large"
onChange
=
{(
value
)
=>
handleChange
(
'verification_code'
,
value
)}
onChange
=
{(
value
)
=>
handleChange
(
'verification_code'
,
value
)}
prefix
=
{
<
IconKey
/>
}
prefix
=
{
<
IconKey
/>
}
/
>
/
>
...
@@ -495,7 +484,6 @@ const RegisterForm = () => {
...
@@ -495,7 +484,6 @@ const RegisterForm = () => {
className
=
"w-full !rounded-full"
className
=
"w-full !rounded-full"
type
=
"primary"
type
=
"primary"
htmlType
=
"submit"
htmlType
=
"submit"
size
=
"large"
onClick
=
{
handleSubmit
}
onClick
=
{
handleSubmit
}
loading
=
{
registerLoading
}
loading
=
{
registerLoading
}
>
>
...
@@ -515,7 +503,6 @@ const RegisterForm = () => {
...
@@ -515,7 +503,6 @@ const RegisterForm = () => {
theme
=
"outline"
theme
=
"outline"
type
=
"tertiary"
type
=
"tertiary"
className
=
"w-full !rounded-full"
className
=
"w-full !rounded-full"
size
=
"large"
onClick
=
{
handleOtherRegisterOptionsClick
}
onClick
=
{
handleOtherRegisterOptionsClick
}
loading
=
{
otherRegisterOptionsLoading
}
loading
=
{
otherRegisterOptionsLoading
}
>
>
...
@@ -544,7 +531,6 @@ const RegisterForm = () => {
...
@@ -544,7 +531,6 @@ const RegisterForm = () => {
onOk
=
{
onSubmitWeChatVerificationCode
}
onOk
=
{
onSubmitWeChatVerificationCode
}
onCancel
=
{()
=>
setShowWeChatLoginModal
(
false
)}
onCancel
=
{()
=>
setShowWeChatLoginModal
(
false
)}
okText
=
{
t
(
'登录'
)}
okText
=
{
t
(
'登录'
)}
size
=
"small"
centered
=
{
true
}
centered
=
{
true
}
okButtonProps
=
{{
okButtonProps
=
{{
loading
:
wechatCodeSubmitLoading
,
loading
:
wechatCodeSubmitLoading
,
...
@@ -558,7 +544,7 @@ const RegisterForm = () => {
...
@@ -558,7 +544,7 @@ const RegisterForm = () => {
<
p
>
{
t
(
'微信扫码关注公众号,输入「验证码」获取验证码(三分钟内有效)'
)}
<
/p
>
<
p
>
{
t
(
'微信扫码关注公众号,输入「验证码」获取验证码(三分钟内有效)'
)}
<
/p
>
<
/div
>
<
/div
>
<
Form
size
=
"large"
>
<
Form
>
<
Form
.
Input
<
Form
.
Input
field
=
"wechat_verification_code"
field
=
"wechat_verification_code"
placeholder
=
{
t
(
'验证码'
)}
placeholder
=
{
t
(
'验证码'
)}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment