From e96783230eb883176eb9f4a6bf64349374f3a2ed Mon Sep 17 00:00:00 2001 From: Bart van der Braak Date: Mon, 19 Feb 2024 19:07:32 +0100 Subject: [PATCH 01/18] refactor: separate components for auth --- src/routes/(auth)/auth/(components)/index.ts | 3 + .../auth/(components)/login-form.svelte | 63 +++++ .../auth/(components)/register-form.svelte | 67 +++++ .../(auth)/auth/(components)/sso-form.svelte | 115 +++++++++ src/routes/(auth)/auth/+page.svelte | 241 +----------------- 5 files changed, 255 insertions(+), 234 deletions(-) create mode 100644 src/routes/(auth)/auth/(components)/index.ts create mode 100644 src/routes/(auth)/auth/(components)/login-form.svelte create mode 100644 src/routes/(auth)/auth/(components)/register-form.svelte create mode 100644 src/routes/(auth)/auth/(components)/sso-form.svelte diff --git a/src/routes/(auth)/auth/(components)/index.ts b/src/routes/(auth)/auth/(components)/index.ts new file mode 100644 index 0000000..14e9bda --- /dev/null +++ b/src/routes/(auth)/auth/(components)/index.ts @@ -0,0 +1,3 @@ +export { default as LoginForm } from './login-form.svelte'; +export { default as RegisterForm } from './register-form.svelte'; +export { default as SSOForm } from './sso-form.svelte'; diff --git a/src/routes/(auth)/auth/(components)/login-form.svelte b/src/routes/(auth)/auth/(components)/login-form.svelte new file mode 100644 index 0000000..132e806 --- /dev/null +++ b/src/routes/(auth)/auth/(components)/login-form.svelte @@ -0,0 +1,63 @@ + + +
+

Log into your account

+

+ Enter your credentials below to log into your account +

+
+
+
{ + isLoading = true; + return async ({ update }) => { + isLoading = false; + update(); + }; + }} + > +
+
+ + +
+
+ + +
+ +
+ {#if form?.notVerified} + + You must verify your email before you can log in. + + {/if} +
+
diff --git a/src/routes/(auth)/auth/(components)/register-form.svelte b/src/routes/(auth)/auth/(components)/register-form.svelte new file mode 100644 index 0000000..b71ba1d --- /dev/null +++ b/src/routes/(auth)/auth/(components)/register-form.svelte @@ -0,0 +1,67 @@ + + +
+

Create your account

+

+ Enter your details below to create a new account +

+
+
+
{ + isLoading = true; + return async ({ update }) => { + isLoading = false; + update(); + }; + }} + > +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
diff --git a/src/routes/(auth)/auth/(components)/sso-form.svelte b/src/routes/(auth)/auth/(components)/sso-form.svelte new file mode 100644 index 0000000..05f5ea7 --- /dev/null +++ b/src/routes/(auth)/auth/(components)/sso-form.svelte @@ -0,0 +1,115 @@ + + +
{ + isLoading = true; + return async ({ update }) => { + isLoading = false; + update(); + }; + }} +> +
+
+ +
+
+ Or continue with +
+
+
+ +
+ +
+ {#if providers.length > 1} +
+ +
+ + + + + + Login Providers + {#each providers as provider} + {#if provider.name !== currentProvider.name} + (currentProvider = provider)} + > + {#if provider.icon === undefined} + {provider.name} + {:else} + + {/if} + {provider.displayName} + + {/if} + {/each} + + +
+
+ {/if} +
+
diff --git a/src/routes/(auth)/auth/+page.svelte b/src/routes/(auth)/auth/+page.svelte index 55c6c01..dd92484 100644 --- a/src/routes/(auth)/auth/+page.svelte +++ b/src/routes/(auth)/auth/+page.svelte @@ -1,48 +1,19 @@ diff --git a/src/lib/components/ui/button/index.ts b/src/lib/components/ui/button/index.ts index e300752..86b7231 100644 --- a/src/lib/components/ui/button/index.ts +++ b/src/lib/components/ui/button/index.ts @@ -1,34 +1,35 @@ -import type { Button as ButtonPrimitive } from 'bits-ui'; -import { tv, type VariantProps } from 'tailwind-variants'; -import Root from './button.svelte'; +import type { Button as ButtonPrimitive } from "bits-ui"; +import { tv, type VariantProps } from "tailwind-variants"; +import Root from "./button.svelte"; const buttonVariants = tv({ - base: 'inline-flex items-center justify-center rounded-md text-sm font-medium whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50', + base: "inline-flex items-center justify-center rounded-md text-sm font-medium whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", variants: { variant: { - default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90', - destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90', + default: "bg-primary text-primary-foreground shadow hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", outline: - 'border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground', - secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80', - ghost: 'hover:bg-accent hover:text-accent-foreground', - link: 'text-primary underline-offset-4 hover:underline' + "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", + secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", }, size: { - default: 'h-9 px-4 py-2', - sm: 'h-8 rounded-md px-3 text-xs', - lg: 'h-10 rounded-md px-8', - icon: 'h-9 w-9' - } + default: "h-9 px-4 py-2", + sm: "h-8 rounded-md px-3 text-xs", + lg: "h-10 rounded-md px-8", + icon: "h-9 w-9", + }, }, defaultVariants: { - variant: 'default', - size: 'default' - } + variant: "default", + size: "default", + }, }); -type Variant = VariantProps['variant']; -type Size = VariantProps['size']; +type Variant = VariantProps["variant"]; +type Size = VariantProps["size"]; type Props = ButtonPrimitive.Props & { variant?: Variant; @@ -45,5 +46,5 @@ export { Root as Button, type Props as ButtonProps, type Events as ButtonEvents, - buttonVariants + buttonVariants, }; diff --git a/src/lib/components/ui/form/form-button.svelte b/src/lib/components/ui/form/form-button.svelte index a6638e4..881e139 100644 --- a/src/lib/components/ui/form/form-button.svelte +++ b/src/lib/components/ui/form/form-button.svelte @@ -1,9 +1,9 @@ - + diff --git a/src/lib/components/ui/form/form-checkbox.svelte b/src/lib/components/ui/form/form-checkbox.svelte deleted file mode 100644 index d667441..0000000 --- a/src/lib/components/ui/form/form-checkbox.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - - { - onCheckedChange?.(v); - setValue(v); - }} - {...$$restProps} - on:click - on:keydown -/> - diff --git a/src/lib/components/ui/form/form-description.svelte b/src/lib/components/ui/form/form-description.svelte index 0ba02ca..0cc7564 100644 --- a/src/lib/components/ui/form/form-description.svelte +++ b/src/lib/components/ui/form/form-description.svelte @@ -1,16 +1,16 @@ - + diff --git a/src/lib/components/ui/form/form-element-field.svelte b/src/lib/components/ui/form/form-element-field.svelte new file mode 100644 index 0000000..12bab55 --- /dev/null +++ b/src/lib/components/ui/form/form-element-field.svelte @@ -0,0 +1,26 @@ + + + + + +
+ +
+
diff --git a/src/lib/components/ui/form/form-field-errors.svelte b/src/lib/components/ui/form/form-field-errors.svelte new file mode 100644 index 0000000..8c9bc12 --- /dev/null +++ b/src/lib/components/ui/form/form-field-errors.svelte @@ -0,0 +1,26 @@ + + + + + {#each errors as error} +
{error}
+ {/each} +
+
diff --git a/src/lib/components/ui/form/form-field.svelte b/src/lib/components/ui/form/form-field.svelte new file mode 100644 index 0000000..745f87c --- /dev/null +++ b/src/lib/components/ui/form/form-field.svelte @@ -0,0 +1,26 @@ + + + + + +
+ +
+
diff --git a/src/lib/components/ui/form/form-fieldset.svelte b/src/lib/components/ui/form/form-fieldset.svelte new file mode 100644 index 0000000..6d35255 --- /dev/null +++ b/src/lib/components/ui/form/form-fieldset.svelte @@ -0,0 +1,31 @@ + + + + + + + diff --git a/src/lib/components/ui/form/form-input.svelte b/src/lib/components/ui/form/form-input.svelte deleted file mode 100644 index 5575015..0000000 --- a/src/lib/components/ui/form/form-input.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - - diff --git a/src/lib/components/ui/form/form-item.svelte b/src/lib/components/ui/form/form-item.svelte deleted file mode 100644 index 11b9079..0000000 --- a/src/lib/components/ui/form/form-item.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - -
- -
diff --git a/src/lib/components/ui/form/form-label.svelte b/src/lib/components/ui/form/form-label.svelte index 8608970..0fd76c6 100644 --- a/src/lib/components/ui/form/form-label.svelte +++ b/src/lib/components/ui/form/form-label.svelte @@ -1,17 +1,17 @@ -