feat(instance-chooser): add dark mode support
Part-of: <https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2701>
This commit is contained in:
parent
0095fc566e
commit
e42646d8a1
Binary file not shown.
After Width: | Height: | Size: 9.6 KiB |
|
@ -77,14 +77,22 @@ const submit = async () => {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<form class="ui form" @submit.prevent="submit()">
|
<form
|
||||||
<div v-if="errors.length > 0" role="alert" class="ui negative message">
|
class="ui form"
|
||||||
|
@submit.prevent="submit()"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-if="errors.length > 0"
|
||||||
|
role="alert"
|
||||||
|
class="ui negative message"
|
||||||
|
>
|
||||||
<h4 class="header">
|
<h4 class="header">
|
||||||
{{ $t('components.auth.LoginForm.header.loginFailure') }}
|
{{ $t('components.auth.LoginForm.header.loginFailure') }}
|
||||||
</h4>
|
</h4>
|
||||||
<ul class="list">
|
<ul class="list">
|
||||||
<li
|
<li
|
||||||
v-if="errors[0] == 'invalid_credentials' && $store.state.instance.settings.moderation.signup_approval_enabled.value">
|
v-if="errors[0] == 'invalid_credentials' && $store.state.instance.settings.moderation.signup_approval_enabled.value"
|
||||||
|
>
|
||||||
{{ $t('components.auth.LoginForm.help.approvalRequired') }}
|
{{ $t('components.auth.LoginForm.help.approvalRequired') }}
|
||||||
</li>
|
</li>
|
||||||
<li v-else-if="errors[0] == 'invalid_credentials'">
|
<li v-else-if="errors[0] == 'invalid_credentials'">
|
||||||
|
@ -106,18 +114,33 @@ const submit = async () => {
|
||||||
</router-link>
|
</router-link>
|
||||||
</template>
|
</template>
|
||||||
</label>
|
</label>
|
||||||
<input id="username-field" ref="username" v-model="credentials.username" required name="username" type="text"
|
<input
|
||||||
autofocus :placeholder="labels.usernamePlaceholder">
|
id="username-field"
|
||||||
|
ref="username"
|
||||||
|
v-model="credentials.username"
|
||||||
|
required
|
||||||
|
name="username"
|
||||||
|
type="text"
|
||||||
|
autofocus
|
||||||
|
:placeholder="labels.usernamePlaceholder"
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label for="password-field">
|
<label for="password-field">
|
||||||
{{ $t('components.auth.LoginForm.label.password') }}
|
{{ $t('components.auth.LoginForm.label.password') }}
|
||||||
<span class="middle pipe symbol" />
|
<span class="middle pipe symbol" />
|
||||||
<router-link tabindex="1" :to="{ name: 'auth.password-reset', query: { email: credentials.username } }">
|
<router-link
|
||||||
|
tabindex="1"
|
||||||
|
:to="{ name: 'auth.password-reset', query: { email: credentials.username } }"
|
||||||
|
>
|
||||||
{{ $t('components.auth.LoginForm.link.resetPassword') }}
|
{{ $t('components.auth.LoginForm.link.resetPassword') }}
|
||||||
</router-link>
|
</router-link>
|
||||||
</label>
|
</label>
|
||||||
<password-input v-model="credentials.password" field-id="password-field" required />
|
<password-input
|
||||||
|
v-model="credentials.password"
|
||||||
|
field-id="password-field"
|
||||||
|
required
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
|
@ -125,7 +148,10 @@ const submit = async () => {
|
||||||
{{ $t('components.auth.LoginForm.message.redirect', { domain: $store.getters['instance/domain'] }) }}
|
{{ $t('components.auth.LoginForm.message.redirect', { domain: $store.getters['instance/domain'] }) }}
|
||||||
</p>
|
</p>
|
||||||
</template>
|
</template>
|
||||||
<button :class="['ui', { 'loading': isLoading }, 'right', 'floated', buttonClasses, 'button']" type="submit">
|
<button
|
||||||
|
:class="['ui', { 'loading': isLoading }, 'right', 'floated', buttonClasses, 'button']"
|
||||||
|
type="submit"
|
||||||
|
>
|
||||||
{{ $t('components.auth.LoginForm.button.login') }}
|
{{ $t('components.auth.LoginForm.button.login') }}
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -57,7 +57,14 @@ const isTauriInstance = computed(() => store.getters['instance/url'].href === TA
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="instance-chooser">
|
<div class="instance-chooser">
|
||||||
<img src="../assets/logo/logo-full-500.png">
|
<img
|
||||||
|
class="light-logo"
|
||||||
|
src="../assets/logo/logo-full-500.png"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
class="dark-logo"
|
||||||
|
src="../assets/logo/logo-full-500-white.png"
|
||||||
|
>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h3 class="header">
|
<h3 class="header">
|
||||||
|
@ -100,7 +107,7 @@ const isTauriInstance = computed(() => store.getters['instance/url'].href === TA
|
||||||
<i class="external icon" />
|
<i class="external icon" />
|
||||||
</a>
|
</a>
|
||||||
</i18n-t>
|
</i18n-t>
|
||||||
{{ t('', {url: store.state.instance.instanceUrl, hostname: store.getters['instance/domain']}) }}
|
{{ t('', { url: store.state.instance.instanceUrl, hostname: store.getters['instance/domain'] }) }}
|
||||||
</p>
|
</p>
|
||||||
<p
|
<p
|
||||||
v-else
|
v-else
|
||||||
|
@ -120,7 +127,7 @@ const isTauriInstance = computed(() => store.getters['instance/url'].href === TA
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
:class="['ui', 'icon', {loading: isLoading}, 'button']"
|
:class="['ui', 'icon', { loading: isLoading }, 'button']"
|
||||||
>
|
>
|
||||||
{{ t('views.ChooseInstance.button.submit') }}
|
{{ t('views.ChooseInstance.button.submit') }}
|
||||||
</button>
|
</button>
|
||||||
|
@ -172,7 +179,7 @@ const isTauriInstance = computed(() => store.getters['instance/url'].href === TA
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
> .card {
|
>.card {
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
max-width: 30rem;
|
max-width: 30rem;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -189,4 +196,16 @@ const isTauriInstance = computed(() => store.getters['instance/url'].href === TA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.theme-dark .instance-chooser>.card {
|
||||||
|
background: var(--sidebar-background);
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-dark .instance-chooser>.light-logo {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-light .instance-chooser>.dark-logo {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue