Compare commits

..

2 commits

Author SHA1 Message Date
Théo
c27b6bda9c fix: other semantic and possible issue on sign-up 2023-09-24 22:11:01 +02:00
Théo
24a626bbeb fix: semantic & target blank 2023-09-24 21:57:30 +02:00
4 changed files with 109 additions and 95 deletions

View file

@ -80,32 +80,30 @@
}} }}
href={item.slug} href={item.slug}
class={cn( class={cn(
'flex justify-center rounded-md px-3 py-3 text-sm transition-colors duration-150 lg:justify-start', 'flex items-center justify-center gap-2 rounded-md px-3 py-3 text-sm transition-colors duration-150 lg:justify-start',
{ {
'bg-primary-700': isActive(item.slug), 'bg-primary-700': isActive(item.slug),
'group hover:bg-primary-700': !isActive(item.slug) 'group hover:bg-primary-700': !isActive(item.slug)
} }
)} )}
> >
<div class="flex items-center gap-2"> <svelte:component
<svelte:component this={item.icon}
this={item.icon} class={cn({
class={cn({ 'stroke-highlight-secondary transition-colors duration-150 group-hover:stroke-primary-0':
'stroke-highlight-secondary transition-colors duration-150 group-hover:stroke-primary-0': !isActive(item.slug)
!isActive(item.slug) })}
})} />
/> <span
<span class={cn('hidden lg:block', {
class={cn('hidden lg:block', { 'block sm:hidden': isOpen,
'block sm:hidden': isOpen, hidden: !isOpen,
hidden: !isOpen, 'text-highlight-secondary transition-colors duration-150 group-hover:text-primary':
'text-highlight-secondary transition-colors duration-150 group-hover:text-primary': !isActive(item.slug)
!isActive(item.slug) })}
})} >
> {item.name}
{item.name} </span>
</span>
</div>
</a> </a>
</li> </li>
{/each} {/each}
@ -118,22 +116,17 @@
<ul class="flex flex-col gap-4"> <ul class="flex flex-col gap-4">
<li> <li>
<span <span
class="group pointer-events-none flex justify-center rounded-md px-3 py-3 text-sm opacity-50 transition-colors duration-150 lg:justify-start" class="group pointer-events-none flex items-center justify-center gap-2 rounded-md px-3 py-3 text-sm opacity-50 transition-colors duration-150 lg:justify-start"
> >
<div class="flex items-center gap-2"> <Help class="stroke-highlight-secondary transition-colors duration-150" />
<Help class="stroke-highlight-secondary transition-colors duration-150" /> <span
<span class={cn('hidden text-highlight-secondary transition-colors duration-150 lg:block', {
class={cn( 'block sm:hidden': isOpen,
'hidden text-highlight-secondary transition-colors duration-150 lg:block', hidden: !isOpen
{ })}
'block sm:hidden': isOpen, >
hidden: !isOpen Aide
} </span>
)}
>
Aide
</span>
</div>
</span> </span>
</li> </li>
<li> <li>
@ -142,24 +135,22 @@
isOpen = false; isOpen = false;
}} }}
href="mailto:cyberbottle@peerat.dev" href="mailto:cyberbottle@peerat.dev"
class="group flex justify-center rounded-md px-3 py-3 text-sm transition-colors duration-150 hover:bg-primary-700 lg:justify-start" class="group flex items-center justify-center gap-2 rounded-md px-3 py-3 text-sm transition-colors duration-150 hover:bg-primary-700 lg:justify-start"
> >
<div class="flex items-center gap-2"> <Mail
<Mail class="stroke-highlight-secondary transition-colors duration-150 group-hover:stroke-primary-0"
class="stroke-highlight-secondary transition-colors duration-150 group-hover:stroke-primary-0" />
/> <span
<span class={cn(
class={cn( 'hidden text-highlight-secondary transition-colors duration-150 group-hover:text-primary lg:block',
'hidden text-highlight-secondary transition-colors duration-150 group-hover:text-primary lg:block', {
{ 'block sm:hidden': isOpen,
'block sm:hidden': isOpen, hidden: !isOpen
hidden: !isOpen }
} )}
)} >
> Mail
Mail </span>
</span>
</div>
</a> </a>
</li> </li>
<li> <li>
@ -168,24 +159,24 @@
isOpen = false; isOpen = false;
}} }}
href="//discord.gg/72vuHcwUkE" href="//discord.gg/72vuHcwUkE"
class="group flex justify-center rounded-md px-3 py-3 text-sm transition-colors duration-150 hover:bg-primary-700 lg:justify-start" target="_blank"
rel="noopener"
class="group flex items-center justify-center gap-2 rounded-md px-3 py-3 text-sm transition-colors duration-150 hover:bg-primary-700 lg:justify-start"
> >
<div class="flex items-center gap-2"> <Discord
<Discord class="fill-highlight-secondary transition-colors duration-150 group-hover:fill-primary-0"
class="fill-highlight-secondary transition-colors duration-150 group-hover:fill-primary-0" />
/> <span
<span class={cn(
class={cn( 'hidden text-highlight-secondary transition-colors duration-150 group-hover:text-primary lg:block',
'hidden text-highlight-secondary transition-colors duration-150 group-hover:text-primary lg:block', {
{ 'block sm:hidden': isOpen,
'block sm:hidden': isOpen, hidden: !isOpen
hidden: !isOpen }
} )}
)} >
> Discord
Discord </span>
</span>
</div>
</a> </a>
</li> </li>
<li> <li>
@ -194,24 +185,24 @@
isOpen = false; isOpen = false;
}} }}
href="//git.peerat.dev" href="//git.peerat.dev"
class="group flex justify-center rounded-md px-3 py-3 text-sm transition-colors duration-150 hover:bg-primary-700 lg:justify-start" target="_blank"
rel="noopener"
class="group flex items-center justify-center gap-2 rounded-md px-3 py-3 text-sm transition-colors duration-150 hover:bg-primary-700 lg:justify-start"
> >
<div class="flex items-center gap-2"> <Git
<Git class="stroke-highlight-secondary transition-colors duration-150 group-hover:stroke-primary-0"
class="stroke-highlight-secondary transition-colors duration-150 group-hover:stroke-primary-0" />
/> <span
<span class={cn(
class={cn( 'hidden text-highlight-secondary transition-colors duration-150 group-hover:text-primary lg:block',
'hidden text-highlight-secondary transition-colors duration-150 group-hover:text-primary lg:block', {
{ 'block sm:hidden': isOpen,
'block sm:hidden': isOpen, hidden: !isOpen
hidden: !isOpen }
} )}
)} >
> Git
Git </span>
</span>
</div>
</a> </a>
</li> </li>
</ul> </ul>

View file

@ -9,6 +9,8 @@
export let data: PageData; export let data: PageData;
let submitting = false;
const { form, errors, enhance } = superForm(data.form, { const { form, errors, enhance } = superForm(data.form, {
onSubmit() { onSubmit() {
submitting = true; submitting = true;
@ -17,8 +19,6 @@
submitting = false; submitting = false;
} }
}); });
let submitting = false;
</script> </script>
<div class="flex h-screen w-full"> <div class="flex h-screen w-full">
@ -27,7 +27,14 @@
<h1 class="mx-auto text-xl font-bold">Connexion</h1> <h1 class="mx-auto text-xl font-bold">Connexion</h1>
<form class="flex flex-col justify-center gap-2" method="POST" use:enhance> <form class="flex flex-col justify-center gap-2" method="POST" use:enhance>
<label for="pseudo"> Nom d'utilisateur </label> <label for="pseudo"> Nom d'utilisateur </label>
<Input name="pseudo" placeholder="Barlow" type="text" required bind:value={$form.pseudo} /> <Input
name="pseudo"
placeholder="Barlow"
type="text"
required
bind:value={$form.pseudo}
aria-invalid={$errors.pseudo ? 'true' : undefined}
/>
{#if $errors.pseudo}<span class="text-sm text-red-500">{$errors.pseudo}</span>{/if} {#if $errors.pseudo}<span class="text-sm text-red-500">{$errors.pseudo}</span>{/if}
<label for="passwd"> Mot de passe </label> <label for="passwd"> Mot de passe </label>
@ -37,6 +44,7 @@
type="password" type="password"
required required
bind:value={$form.passwd} bind:value={$form.passwd}
aria-invalid={$errors.passwd ? 'true' : undefined}
/> />
{#if $errors.passwd}<span class="text-sm text-red-500">{$errors.passwd}</span>{/if} {#if $errors.passwd}<span class="text-sm text-red-500">{$errors.passwd}</span>{/if}

View file

@ -84,9 +84,10 @@ export const actions = {
} }
if (res.status === 400) { if (res.status === 400) {
const { email_valid } = await res.json(); const { email_valid, username_valid } = await res.json();
if (!email_valid) form.errors.email = ['Un compte avec cette adresse email existe déjà']; if (!email_valid) form.errors.email = ['Un compte avec cette adresse email existe déjà'];
if (!username_valid) form.errors.pseudo = ['Ce pseudo est déjà utilisé'];
return fail(400, { form }); return fail(400, { form });
} }

View file

@ -10,6 +10,9 @@
export let data: PageData; export let data: PageData;
let submitting = false;
let confirmation = false;
const { form, errors, enhance } = superForm(data.form, { const { form, errors, enhance } = superForm(data.form, {
onSubmit() { onSubmit() {
submitting = true; submitting = true;
@ -28,9 +31,6 @@
} }
}); });
let submitting = false;
let confirmation = false;
export const snapshot: Snapshot = { export const snapshot: Snapshot = {
capture: () => confirmation, capture: () => confirmation,
restore: (value) => (confirmation = value) restore: (value) => (confirmation = value)
@ -57,6 +57,7 @@
placeholder="philipzcwbarlow@peerat.dev" placeholder="philipzcwbarlow@peerat.dev"
autocomplete="off" autocomplete="off"
required required
aria-invalid={$errors.email ? 'true' : undefined}
/> />
{#if $errors.email}<span class="text-sm text-red-500">{$errors.email}</span>{/if} {#if $errors.email}<span class="text-sm text-red-500">{$errors.email}</span>{/if}
@ -68,6 +69,7 @@
placeholder="Philip" placeholder="Philip"
autocomplete="off" autocomplete="off"
required required
aria-invalid={$errors.firstname ? 'true' : undefined}
/> />
{#if $errors.firstname}<span class="text-sm text-red-500">{$errors.firstname}</span>{/if} {#if $errors.firstname}<span class="text-sm text-red-500">{$errors.firstname}</span>{/if}
@ -79,6 +81,7 @@
placeholder="Barlow" placeholder="Barlow"
autocomplete="off" autocomplete="off"
required required
aria-invalid={$errors.lastname ? 'true' : undefined}
/> />
{#if $errors.lastname}<span class="text-sm text-red-500">{$errors.lastname}</span>{/if} {#if $errors.lastname}<span class="text-sm text-red-500">{$errors.lastname}</span>{/if}
@ -90,6 +93,7 @@
placeholder="Cypher Wolf" placeholder="Cypher Wolf"
autocomplete="off" autocomplete="off"
required required
aria-invalid={$errors.pseudo ? 'true' : undefined}
/> />
{#if $errors.pseudo}<span class="text-sm text-red-500">{$errors.pseudo}</span>{/if} {#if $errors.pseudo}<span class="text-sm text-red-500">{$errors.pseudo}</span>{/if}
@ -101,11 +105,21 @@
}} }}
> >
<label for="passwd"> Mot de passe </label> <label for="passwd"> Mot de passe </label>
<Input name="passwd" placeholder="************" type="password" /> <Input
name="passwd"
placeholder="************"
type="password"
aria-invalid={$errors.passwd ? 'true' : undefined}
/>
{#if $errors.passwd}<span class="text-sm text-red-500">{$errors.passwd}</span>{/if} {#if $errors.passwd}<span class="text-sm text-red-500">{$errors.passwd}</span>{/if}
<label for="code"> Code </label> <label for="code"> Code </label>
<Input name="code" placeholder="1234" type="text" /> <Input
name="code"
placeholder="1234"
type="text"
aria-invalid={$errors.code ? 'true' : undefined}
/>
{#if $errors.code}<span class="text-sm text-red-500">{$errors.code}</span>{/if} {#if $errors.code}<span class="text-sm text-red-500">{$errors.code}</span>{/if}
</div> </div>
{/if} {/if}