55 class =" fixed left-0 top-0 z-[9999] m-0 h-full w-full border-0 p-0"
66 ></iframe >
77 </div >
8- <div v-else >
8+ <div v-else c >
99 <template v-if =" flow && ! subtleLauncherRedirectUri " >
1010 <label for =" two-factor-code" >
1111 <span class =" label__title" >{{ formatMessage(messages.twoFactorCodeLabel) }}</span >
2828 </button >
2929 </template >
3030 <template v-else >
31- <h1 >{{ formatMessage(messages.signInWithLabel) }}</h1 >
31+ <div class =" flex flex-col gap-6" >
32+ <div class =" text-center text-2xl font-semibold text-contrast" >
33+ {{ formatMessage(messages.signInWithLabel) }}
34+ </div >
3235
33- <section class =" third-party" >
34- <a class =" btn" :href =" getAuthUrl('discord', redirectTarget)" >
35- <DiscordColorIcon />
36- <span >Discord</span >
37- </a >
38- <a class =" btn" :href =" getAuthUrl('github', redirectTarget)" >
39- <GitHubColorIcon />
40- <span >GitHub</span >
41- </a >
42- <a class =" btn" :href =" getAuthUrl('microsoft', redirectTarget)" >
43- <MicrosoftColorIcon />
44- <span >Microsoft</span >
45- </a >
46- <a class =" btn" :href =" getAuthUrl('google', redirectTarget)" >
47- <GoogleColorIcon />
48- <span >Google</span >
49- </a >
50- <a class =" btn" :href =" getAuthUrl('steam', redirectTarget)" >
51- <SteamColorIcon />
52- <span >Steam</span >
53- </a >
54- <a class =" btn" :href =" getAuthUrl('gitlab', redirectTarget)" >
55- <GitLabColorIcon />
56- <span >GitLab</span >
57- </a >
58- </section >
36+ <section class =" flex flex-col gap-2.5" >
37+ <ButtonStyled >
38+ <a class =" !shadow-none" :href =" getAuthUrl('google', redirectTarget)" >
39+ <GoogleColorIcon />
40+ <span class =" ml-1" >{{ formatMessage(messages.continueWithProvider, { provider: 'Google' }) }}</span >
41+ </a >
42+ </ButtonStyled >
43+ <ButtonStyled >
44+ <a class =" !shadow-none" :href =" getAuthUrl('microsoft', redirectTarget)" >
45+ <MicrosoftColorIcon />
46+ <span class =" ml-1" >{{ formatMessage(messages.continueWithProvider, { provider: 'Microsoft' }) }}</span >
47+ </a >
48+ </ButtonStyled >
49+ <ButtonStyled >
50+ <a class =" !shadow-none" :href =" getAuthUrl('discord', redirectTarget)" >
51+ <DiscordColorIcon />
52+ <span class =" ml-1" >{{ formatMessage(messages.continueWithProvider, { provider: 'Discord' }) }}</span >
53+ </a >
54+ </ButtonStyled >
55+ <ButtonStyled >
56+ <a class =" !shadow-none" :href =" getAuthUrl('github', redirectTarget)" >
57+ <GitHubColorIcon />
58+ <span class =" ml-1" >{{ formatMessage(messages.continueWithProvider, { provider: 'GitHub' }) }}</span >
59+ </a >
60+ </ButtonStyled >
61+ <ButtonStyled >
62+ <a class =" !shadow-none" :href =" getAuthUrl('gitlab', redirectTarget)" >
63+ <GitLabColorIcon />
64+ <span class =" ml-1" >{{ formatMessage(messages.continueWithProvider, { provider: 'GitLab' }) }}</span >
65+ </a >
66+ </ButtonStyled >
67+ <ButtonStyled >
68+ <a class =" !shadow-none" :href =" getAuthUrl('steam', redirectTarget)" >
69+ <SteamColorIcon />
70+ <span class =" ml-1" >{{ formatMessage(messages.continueWithProvider, { provider: 'Steam' }) }}</span >
71+ </a >
72+ </ButtonStyled >
73+ </section >
5974
60- < h1 >{{ formatMessage(messages.usePasswordLabel) }}</ h1 >
75+ < div class = " h-px w-full bg-surface-5 " ></ div >
6176
62- <section class =" auth-form" >
63- <label for =" email" hidden >{{ formatMessage(commonMessages.emailUsernameLabel) }}</label >
64- <StyledInput
65- id =" email"
66- v-model =" email"
67- :icon =" MailIcon"
68- type =" text"
69- inputmode =" email"
70- autocomplete =" username"
71- :placeholder =" formatMessage(commonMessages.emailUsernameLabel)"
72- wrapper-class =" w-full"
73- />
77+ <section class =" auth-form" >
78+ <label for =" email" hidden >{{ formatMessage(commonMessages.emailUsernameLabel) }}</label >
79+ <StyledInput
80+ id =" email"
81+ v-model =" email"
82+ :icon =" MailIcon"
83+ type =" text"
84+ inputmode =" email"
85+ autocomplete =" username"
86+ :placeholder =" formatMessage(commonMessages.emailUsernameLabel)"
87+ wrapper-class =" w-full"
88+ />
7489
75- <label for =" password" hidden >{{ formatMessage(commonMessages.passwordLabel) }}</label >
76- <StyledInput
77- id =" password"
78- v-model =" password"
79- :icon =" KeyIcon"
80- type =" password"
81- autocomplete =" current-password"
82- :placeholder =" formatMessage(commonMessages.passwordLabel)"
83- wrapper-class =" w-full"
84- />
90+ <label for =" password" hidden >{{ formatMessage(commonMessages.passwordLabel) }}</label >
91+ <StyledInput
92+ id =" password"
93+ v-model =" password"
94+ :icon =" KeyIcon"
95+ type =" password"
96+ autocomplete =" current-password"
97+ :placeholder =" formatMessage(commonMessages.passwordLabel)"
98+ wrapper-class =" w-full"
99+ />
85100
86- <HCaptcha v-if =" globals?.captcha_enabled" ref =" captcha" v-model =" token" />
101+ <HCaptcha
102+ v-if =" globals?.captcha_enabled && email && password"
103+ ref =" captcha"
104+ v-model =" token"
105+ />
87106
88- <button
89- class =" btn btn-primary continue-btn centered-btn"
90- :disabled =" globals?.captcha_enabled ? !token : false"
91- @click =" beginPasswordSignIn()"
92- >
93- {{ formatMessage(commonMessages.signInButton) }} <RightArrowIcon />
94- </button >
107+ <ButtonStyled color =" brand" >
108+ <button
109+ class =" !w-full"
110+ :disabled =" globals?.captcha_enabled ? !token : false"
111+ @click =" beginPasswordSignIn()"
112+ >
113+ {{ formatMessage(messages.continueWithEmail) }} <RightArrowIcon />
114+ </button >
115+ </ButtonStyled >
95116
96- <div class =" auth-form__additional-options" >
97- <IntlFormatted :message-id =" messages.additionalOptionsLabel" >
98- <template #forgot-password-link =" { children } " >
99- <NuxtLink
100- class =" text-link"
101- :to =" {
102- path: '/auth/reset-password',
103- query: route.query,
104- }"
105- >
106- <component :is =" () => children" />
107- </NuxtLink >
108- </template >
109- <template #create-account-link =" { children } " >
110- <NuxtLink
111- class =" text-link"
112- :to =" {
113- path: '/auth/sign-up',
114- query: route.query,
115- }"
116- >
117- <component :is =" () => children" />
118- </NuxtLink >
119- </template >
120- </IntlFormatted >
121- </div >
122- </section >
117+ <div class =" auth-form__additional-options !text-base" >
118+ <IntlFormatted :message-id =" messages.additionalOptionsLabel" >
119+ <template #forgot-password-link =" { children } " >
120+ <NuxtLink
121+ class =" text-link"
122+ :to =" {
123+ path: '/auth/reset-password',
124+ query: route.query,
125+ }"
126+ >
127+ <component :is =" () => children" />
128+ </NuxtLink >
129+ </template >
130+ <template #create-account-link =" { children } " >
131+ <NuxtLink
132+ class =" inline text-link"
133+ :to =" {
134+ path: '/auth/sign-up',
135+ query: route.query,
136+ }"
137+ >
138+ <component :is =" () => children" />
139+ </NuxtLink >
140+ </template >
141+ </IntlFormatted >
142+ </div >
143+ </section >
144+ </div >
123145 </template >
124146 </div >
125147</template >
@@ -137,6 +159,7 @@ import {
137159 SteamColorIcon ,
138160} from ' @modrinth/assets'
139161import {
162+ ButtonStyled ,
140163 commonMessages ,
141164 defineMessages ,
142165 injectModrinthClient ,
@@ -159,11 +182,11 @@ const messages = defineMessages({
159182 additionalOptionsLabel: {
160183 id: ' auth.sign-in.additional-options' ,
161184 defaultMessage:
162- ' <forgot-password-link>Forgot password? </forgot-password-link> • <create-account-link>Create an account </create-account-link>' ,
185+ " <forgot-password-link>Forgot password</forgot-password-link> • Don't have an account? <create-account-link>Sign up </create-account-link>" ,
163186 },
164187 signInWithLabel: {
165188 id: ' auth.sign-in.sign-in-with' ,
166- defaultMessage: ' Sign in with ' ,
189+ defaultMessage: ' Sign into Modrinth ' ,
167190 },
168191 signInTitle: {
169192 id: ' auth.sign-in.title' ,
@@ -185,6 +208,14 @@ const messages = defineMessages({
185208 id: ' auth.sign-in.use-password' ,
186209 defaultMessage: ' Or use a password' ,
187210 },
211+ continueWithProvider: {
212+ id: ' auth.continue-with-provider' ,
213+ defaultMessage: ' Continue with {provider}' ,
214+ },
215+ continueWithEmail: {
216+ id: ' auth.sign-in.continue-with-email' ,
217+ defaultMessage: ' Continue with Email' ,
218+ },
188219})
189220
190221useHead ({
0 commit comments