You've already forked obsidian-visualiser
Users pages CSS + PreviewContent for Canvas + Tags CSS
This commit is contained in:
@@ -17,14 +17,17 @@
|
||||
<Head>
|
||||
<Title>Live Editing</Title>
|
||||
</Head>
|
||||
<div class="editor-container">
|
||||
<Suspense>
|
||||
<template #fallback>
|
||||
<div class="loading"></div>
|
||||
</template>
|
||||
<EditableMarkdown class="editor-preview" v-if="input.length > 0" v-model="input"></EditableMarkdown>
|
||||
</Suspense>
|
||||
<textarea class="editor" v-model="input"></textarea>
|
||||
<div class="flex flex-1 flex-col justify-center items-center">
|
||||
<h1 class="block flex-1 text-3xl">En cours de développement</h1>
|
||||
<div class="flex flex-1">
|
||||
<Suspense>
|
||||
<template #fallback>
|
||||
<div class="loading"></div>
|
||||
</template>
|
||||
<EditableMarkdown class="editor-preview" v-if="input.length > 0" v-model="input"></EditableMarkdown>
|
||||
</Suspense>
|
||||
<textarea class="caret-light-50 dark:caret-dark-50 text-light-100 dark:text-dark-100 placeholder:text-light-50 dark:placeholder:text-dark-50 bg-light-20 dark:bg-dark-20 appearance-none w-1/2 outline-none px-3 py-1 focus:shadow-raw transition-[box-shadow] focus:shadow-light-40 dark:focus:shadow-dark-40 border border-light-35 dark:border-dark-35" v-model="input"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<script setup lang="ts">
|
||||
import { hydrate } from 'vue';
|
||||
import { ZodError } from 'zod';
|
||||
import { schema, type Login } from '~/schemas/login';
|
||||
|
||||
@@ -77,21 +76,21 @@ function handleErrors(error: Error | ZodError)
|
||||
<Head>
|
||||
<Title>Se connecter</Title>
|
||||
</Head>
|
||||
<div class="site-body-center-column">
|
||||
<div class="render-container flex align-center justify-center">
|
||||
<form @submit.prevent="submit" class="input-form input-form-wide">
|
||||
<h1>Connexion</h1>
|
||||
<div class="flex flex-1 justify-center items-center">
|
||||
<div class="p-8 w-[48em] border border-light-35 dark:border-dark-35">
|
||||
<form @submit.prevent="submit" class="p-4 bg-light-25 dark:bg-dark-30">
|
||||
<h1 class="text-2xl font-bold tracking-wider pb-4">Connexion</h1>
|
||||
<Input type="text" autocomplete="username" v-model="state.usernameOrEmail"
|
||||
placeholder="" title="Nom d'utilisateur ou adresse mail" :error="usernameError" />
|
||||
placeholder="" title="Nom d'utilisateur ou adresse mail" :error="usernameError" class="w-[24em]" />
|
||||
<Input type="password" autocomplete="current-password" v-model="state.password"
|
||||
placeholder="" title="Mot de passe"
|
||||
:error="passwordError" />
|
||||
<span v-if="generalError" class="input-error">{{ generalError }}</span>
|
||||
<button>
|
||||
:error="passwordError" class="w-[24em]"/>
|
||||
<span v-if="generalError" class="text-light-red dark:text-dark-red">{{ generalError }}</span>
|
||||
<button class="m-auto block px-4 py-1 bg-light-20 dark:bg-dark-20 border border-light-40 dark:border-dark-40 hover:border-light-50 dark:hover:border-dark-50 active:relative active:top-[1px]">
|
||||
<div class="loading" v-if="status === 'pending'"></div>
|
||||
<template v-else>Se connecter</template>
|
||||
</button>
|
||||
<NuxtLink :to="{ path: `/user/register`, force: true }">Pas de compte ?</NuxtLink>
|
||||
<NuxtLink class="mt-4 text-center block text-sm font-semibold tracking-wide hover:italic" :to="{ path: `/user/register`, force: true }">Pas de compte ?</NuxtLink>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -10,13 +10,9 @@ const { user, clear } = useUserSession();
|
||||
<Head>
|
||||
<Title>Votre profil</Title>
|
||||
</Head>
|
||||
<div class="site-body-center-column">
|
||||
<div class="render-container">
|
||||
<div class="not-found-container">
|
||||
<ThemeIcon icon="logo" :width=128 :height=128 />
|
||||
<div class="not-found-title">Bonjour {{ user?.username }} :)</div>
|
||||
<button @click="clear">Se deconnecter</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-1 flex justify-center items-center flex-col">
|
||||
<ThemeIcon icon="logo" :width=128 :height=128 />
|
||||
<div class="not-found-title">Bonjour {{ user?.username }} :)</div>
|
||||
<button class="m-auto block px-4 py-1 bg-light-20 dark:bg-dark-20 border border-light-40 dark:border-dark-40 hover:border-light-50 dark:hover:border-dark-50 active:relative active:top-[1px]" @click="clear">Se deconnecter</button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -85,27 +85,27 @@ function handleErrors(error: Error | ZodError)
|
||||
<Head>
|
||||
<Title>S'inscrire</Title>
|
||||
</Head>
|
||||
<div class="site-body-center-column">
|
||||
<div class="render-container flex align-center justify-center">
|
||||
<form @submit.prevent="submit" class="input-form input-form-wide">
|
||||
<h1>Inscription</h1>
|
||||
<div class="flex flex-1 justify-center items-center">
|
||||
<div class="p-8 w-[48em] border border-light-35 dark:border-dark-35">
|
||||
<form @submit.prevent="submit" class="p-4 bg-light-25 dark:bg-dark-30">
|
||||
<h1 class="text-2xl font-bold tracking-wider pb-4">Inscription</h1>
|
||||
<Input type="text" autocomplete="username" v-model="state.username"
|
||||
placeholder="Entrez un nom d'utiliateur" title="Nom d'utilisateur" :error="usernameError" />
|
||||
placeholder="Entrez un nom d'utilisateur" title="Nom d'utilisateur" :error="usernameError" class="w-[24em]"/>
|
||||
<Input type="text" autocomplete="email" v-model="state.email" placeholder="Entrez une addresse mail"
|
||||
title="Adresse mail" :error="emailError" />
|
||||
title="Adresse mail" :error="emailError" class="w-[24em]"/>
|
||||
<Input type="password" autocomplete="new-password" v-model="state.password"
|
||||
placeholder="Entrez un mot de passe" title="Mot de passe"
|
||||
:error="!(checkedLength && checkedLowerUpper && checkedDigit && checkedSymbol)" />
|
||||
<div class="password-validation-group">
|
||||
<span class="password-validation-title">Votre mot de passe doit respecter les critères suivants
|
||||
:error="!(checkedLength && checkedLowerUpper && checkedDigit && checkedSymbol)" class="w-[24em]"/>
|
||||
<div class="flex flex-col font-light">
|
||||
<span class="">Votre mot de passe doit respecter les critères de sécurité suivants
|
||||
:</span>
|
||||
<span class="password-validation-item" :class="{'validation-error': !checkedLength}">Entre 8 et 128
|
||||
<span class="px-4" :class="{'text-light-red dark:text-dark-red': !checkedLength}">Entre 8 et 128
|
||||
caractères</span>
|
||||
<span class="password-validation-item" :class="{'validation-error': !checkedLowerUpper}">Au moins
|
||||
<span class="px-4" :class="{'text-light-red dark:text-dark-red': !checkedLowerUpper}">Au moins
|
||||
une minuscule et une majuscule</span>
|
||||
<span class="password-validation-item" :class="{'validation-error': !checkedDigit}">Au moins un
|
||||
<span class="px-4" :class="{'text-light-red dark:text-dark-red': !checkedDigit}">Au moins un
|
||||
chiffre</span>
|
||||
<span class="password-validation-item" :class="{'validation-error': !checkedSymbol}">Au moins un
|
||||
<span class="px-4" :class="{'text-light-red dark:text-dark-red': !checkedSymbol}">Au moins un
|
||||
caractère spécial parmis la liste suivante:
|
||||
<pre>! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ ] ^ _ ` { | } ~</pre>
|
||||
</span>
|
||||
@@ -113,10 +113,10 @@ function handleErrors(error: Error | ZodError)
|
||||
<Input type="password" v-model="confirmPassword" placeholder="Confirmer le mot de passe"
|
||||
title="Confirmer le mot de passe"
|
||||
autocomplete="new-password"
|
||||
:error="confirmPassword === '' || confirmPassword === state.password ? '' : 'Les mots de passe saisies ne sont pas identique'" />
|
||||
<span v-if="generalError" class="input-error">{{ generalError }}</span>
|
||||
<button><div v-if="status === 'pending'" class="loading"></div><template v-else>S'inscrire</template></button>
|
||||
<NuxtLink :to="{ path: `/user/login`, force: true }">Se connecter</NuxtLink>
|
||||
:error="confirmPassword === '' || confirmPassword === state.password ? '' : 'Les mots de passe saisies ne sont pas identique'" class="w-[24em]"/>
|
||||
<span v-if="generalError" class="text-light-red dark:text-dark-red">{{ generalError }}</span>
|
||||
<button class="m-auto block px-4 py-1 bg-light-20 dark:bg-dark-20 border border-light-40 dark:border-dark-40 hover:border-light-50 dark:hover:border-dark-50 active:relative active:top-[1px]"><div v-if="status === 'pending'" class="loading"></div><template v-else>S'inscrire</template></button>
|
||||
<NuxtLink class="mt-4 text-center block text-sm font-semibold tracking-wide hover:italic" :to="{ path: `/user/login`, force: true }">Vous avez déjà un compte ? Se connecter</NuxtLink>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
6
pages/users/[id].vue
Normal file
6
pages/users/[id].vue
Normal file
@@ -0,0 +1,6 @@
|
||||
<template>
|
||||
<Head>
|
||||
<Title>Inconnu</Title>
|
||||
</Head>
|
||||
<div>TODO :)</div>
|
||||
</template>
|
||||
Reference in New Issue
Block a user