diff --git a/frontend/components.json b/frontend/components.json index 673e83d..ef0f03f 100644 --- a/frontend/components.json +++ b/frontend/components.json @@ -11,4 +11,4 @@ "utils": "$lib/utils/style" }, "typescript": true -} \ No newline at end of file +} diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 9475480..6a41679 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -32,7 +32,7 @@ export default [ }, { rules: { - "@typescript-eslint/no-explicit-any": "off" + '@typescript-eslint/no-explicit-any': 'off' } } ]; diff --git a/frontend/package.json b/frontend/package.json index 69a1b21..e9293f4 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,58 +1,58 @@ { - "name": "pocket-id-frontend", - "version": "0.24.1", - "private": true, - "scripts": { - "dev": "vite dev --port 3000", - "build": "vite build", - "preview": "vite preview --port 3000", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "prettier --check . && eslint .", - "format": "prettier --write ." - }, - "devDependencies": { - "@playwright/test": "^1.48.1", - "@sveltejs/adapter-auto": "^3.3.0", - "@sveltejs/adapter-node": "^5.2.8", - "@sveltejs/kit": "^2.7.2", - "@sveltejs/vite-plugin-svelte": "^4.0.0", - "@types/eslint": "^9.6.1", - "@types/jsonwebtoken": "^9.0.7", - "@types/node": "^22.7.9", - "autoprefixer": "^10.4.20", - "cbor-js": "^0.1.0", - "eslint": "^9.13.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte": "^2.46.0", - "globals": "^15.11.0", - "postcss": "^8.4.47", - "prettier": "^3.3.3", - "prettier-plugin-svelte": "^3.2.7", - "prettier-plugin-tailwindcss": "^0.6.8", - "svelte": "^5.0.5", - "svelte-check": "^4.0.5", - "tailwindcss": "^3.4.14", - "tslib": "^2.8.0", - "typescript": "^5.6.3", - "typescript-eslint": "^8.11.0", - "vite": "^5.4.10" - }, - "type": "module", - "dependencies": { - "@simplewebauthn/browser": "^10.0.0", - "axios": "^1.7.7", - "bits-ui": "^0.21.16", - "clsx": "^2.1.1", - "crypto": "^1.0.1", - "formsnap": "^1.0.1", - "jsonwebtoken": "^9.0.2", - "lucide-svelte": "^0.453.0", - "mode-watcher": "^0.4.1", - "svelte-sonner": "^0.3.28", - "sveltekit-superforms": "^2.20.0", - "tailwind-merge": "^2.5.4", - "tailwind-variants": "^0.2.1", - "zod": "^3.23.8" - } + "name": "pocket-id-frontend", + "version": "0.24.1", + "private": true, + "scripts": { + "dev": "vite dev --port 3000", + "build": "vite build", + "preview": "vite preview --port 3000", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check . && eslint .", + "format": "prettier --write ." + }, + "devDependencies": { + "@playwright/test": "^1.48.1", + "@sveltejs/adapter-auto": "^3.3.0", + "@sveltejs/adapter-node": "^5.2.8", + "@sveltejs/kit": "^2.7.2", + "@sveltejs/vite-plugin-svelte": "^4.0.0", + "@types/eslint": "^9.6.1", + "@types/jsonwebtoken": "^9.0.7", + "@types/node": "^22.7.9", + "autoprefixer": "^10.4.20", + "cbor-js": "^0.1.0", + "eslint": "^9.13.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-svelte": "^2.46.0", + "globals": "^15.11.0", + "postcss": "^8.4.47", + "prettier": "^3.3.3", + "prettier-plugin-svelte": "^3.2.7", + "prettier-plugin-tailwindcss": "^0.6.8", + "svelte": "^5.0.5", + "svelte-check": "^4.0.5", + "tailwindcss": "^3.4.14", + "tslib": "^2.8.0", + "typescript": "^5.6.3", + "typescript-eslint": "^8.11.0", + "vite": "^5.4.10" + }, + "type": "module", + "dependencies": { + "@simplewebauthn/browser": "^10.0.0", + "axios": "^1.7.7", + "bits-ui": "^0.21.16", + "clsx": "^2.1.1", + "crypto": "^1.0.1", + "formsnap": "^1.0.1", + "jsonwebtoken": "^9.0.2", + "lucide-svelte": "^0.453.0", + "mode-watcher": "^0.4.1", + "svelte-sonner": "^0.3.28", + "sveltekit-superforms": "^2.20.0", + "tailwind-merge": "^2.5.4", + "tailwind-variants": "^0.2.1", + "zod": "^3.23.8" + } } diff --git a/frontend/src/app.css b/frontend/src/app.css index f782a68..15c8eb1 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -97,4 +97,4 @@ font-weight: 700; src: url('/fonts/PlayfairDisplay-Bold.woff') format('woff'); } -} \ No newline at end of file +} diff --git a/frontend/src/lib/components/advanced-table.svelte b/frontend/src/lib/components/advanced-table.svelte index d8a0a6e..3ae3591 100644 --- a/frontend/src/lib/components/advanced-table.svelte +++ b/frontend/src/lib/components/advanced-table.svelte @@ -115,8 +115,8 @@ {#if items.data.length === 0 && searchValue === ''}
- -

No items found

+ +

No items found

{:else} diff --git a/frontend/src/lib/components/auto-complete-input.svelte b/frontend/src/lib/components/auto-complete-input.svelte index b1650c1..7ab82b3 100644 --- a/frontend/src/lib/components/auto-complete-input.svelte +++ b/frontend/src/lib/components/auto-complete-input.svelte @@ -103,7 +103,7 @@ onkeydown={(e) => { if (e.key === 'Enter') handleSuggestionClick(suggestion); }} - class="hover:bg-accent hover:text-accent-foreground relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 {selectedIndex === + class="relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none hover:bg-accent hover:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 {selectedIndex === index ? 'bg-accent text-accent-foreground' : ''}" diff --git a/frontend/src/lib/components/checkbox-with-label.svelte b/frontend/src/lib/components/checkbox-with-label.svelte index 3f2ffff..143ee3b 100644 --- a/frontend/src/lib/components/checkbox-with-label.svelte +++ b/frontend/src/lib/components/checkbox-with-label.svelte @@ -31,7 +31,7 @@ {label} {#if description} -

+

{description}

{/if} diff --git a/frontend/src/lib/components/error.svelte b/frontend/src/lib/components/error.svelte index c4581b0..21bc4fa 100644 --- a/frontend/src/lib/components/error.svelte +++ b/frontend/src/lib/components/error.svelte @@ -6,7 +6,7 @@
- +

Something went wrong

{message}

{#if showButton} diff --git a/frontend/src/lib/components/form-input.svelte b/frontend/src/lib/components/form-input.svelte index 69413cc..5a096bc 100644 --- a/frontend/src/lib/components/form-input.svelte +++ b/frontend/src/lib/components/form-input.svelte @@ -34,13 +34,20 @@ {/if} {#if description} -

{description}

+

{description}

{/if}
{#if children} {@render children()} {:else if input} - onInput?.(e)} /> + onInput?.(e)} + /> {/if} {#if input?.error}

{input.error}

diff --git a/frontend/src/lib/components/header/header-avatar.svelte b/frontend/src/lib/components/header/header-avatar.svelte index 456d07a..d3e47c5 100644 --- a/frontend/src/lib/components/header/header-avatar.svelte +++ b/frontend/src/lib/components/header/header-avatar.svelte @@ -39,7 +39,7 @@ {$userStore?.firstName} {$userStore?.lastName}

-

{$userStore?.email}

+

{$userStore?.email}

diff --git a/frontend/src/lib/components/login-wrapper.svelte b/frontend/src/lib/components/login-wrapper.svelte index 5b6707e..bf09cd3 100644 --- a/frontend/src/lib/components/login-wrapper.svelte +++ b/frontend/src/lib/components/login-wrapper.svelte @@ -28,7 +28,13 @@
{#if showEmailOneTimeAccessButton}
-
@@ -57,7 +63,13 @@ {@render children()} {#if showEmailOneTimeAccessButton}
-
diff --git a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte index 3fdf67a..7c7733d 100644 --- a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +++ b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte @@ -1,12 +1,12 @@ diff --git a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte index c346110..385744b 100644 --- a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +++ b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte @@ -1,17 +1,17 @@ - import { AlertDialog as AlertDialogPrimitive } from "bits-ui"; - import * as AlertDialog from "./index.js"; - import { cn, flyAndScale } from "$lib/utils/style.js"; + import { AlertDialog as AlertDialogPrimitive } from 'bits-ui'; + import * as AlertDialog from './index.js'; + import { cn, flyAndScale } from '$lib/utils/style.js'; type $$Props = AlertDialogPrimitive.ContentProps; - export let transition: $$Props["transition"] = flyAndScale; - export let transitionConfig: $$Props["transitionConfig"] = undefined; + export let transition: $$Props['transition'] = flyAndScale; + export let transitionConfig: $$Props['transitionConfig'] = undefined; - let className: $$Props["class"] = undefined; + let className: $$Props['class'] = undefined; export { className as class }; @@ -18,7 +18,7 @@ {transition} {transitionConfig} class={cn( - "bg-background fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg sm:rounded-lg md:w-full", + 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg sm:rounded-lg md:w-full', className )} {...$$restProps} diff --git a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte index 86d0706..5c84e28 100644 --- a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +++ b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte @@ -1,15 +1,15 @@ diff --git a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte index f118240..0977f84 100644 --- a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +++ b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte @@ -1,15 +1,15 @@
diff --git a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte index 19ed2c7..d4ae2af 100644 --- a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +++ b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte @@ -1,13 +1,13 @@ -
+
diff --git a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte index c785fe7..95d53b1 100644 --- a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +++ b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte @@ -1,14 +1,14 @@ @@ -16,6 +16,6 @@ diff --git a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte index e227219..347119a 100644 --- a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte +++ b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte @@ -1,5 +1,5 @@ diff --git a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte index 017e6e6..146c426 100644 --- a/frontend/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +++ b/frontend/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte @@ -1,14 +1,14 @@ - + diff --git a/frontend/src/lib/components/ui/alert-dialog/index.ts b/frontend/src/lib/components/ui/alert-dialog/index.ts index be56dd7..fe3ff29 100644 --- a/frontend/src/lib/components/ui/alert-dialog/index.ts +++ b/frontend/src/lib/components/ui/alert-dialog/index.ts @@ -1,14 +1,14 @@ -import { AlertDialog as AlertDialogPrimitive } from "bits-ui"; +import { AlertDialog as AlertDialogPrimitive } from 'bits-ui'; -import Title from "./alert-dialog-title.svelte"; -import Action from "./alert-dialog-action.svelte"; -import Cancel from "./alert-dialog-cancel.svelte"; -import Portal from "./alert-dialog-portal.svelte"; -import Footer from "./alert-dialog-footer.svelte"; -import Header from "./alert-dialog-header.svelte"; -import Overlay from "./alert-dialog-overlay.svelte"; -import Content from "./alert-dialog-content.svelte"; -import Description from "./alert-dialog-description.svelte"; +import Title from './alert-dialog-title.svelte'; +import Action from './alert-dialog-action.svelte'; +import Cancel from './alert-dialog-cancel.svelte'; +import Portal from './alert-dialog-portal.svelte'; +import Footer from './alert-dialog-footer.svelte'; +import Header from './alert-dialog-header.svelte'; +import Overlay from './alert-dialog-overlay.svelte'; +import Content from './alert-dialog-content.svelte'; +import Description from './alert-dialog-description.svelte'; const Root = AlertDialogPrimitive.Root; const Trigger = AlertDialogPrimitive.Trigger; @@ -36,5 +36,5 @@ export { Trigger as AlertDialogTrigger, Overlay as AlertDialogOverlay, Content as AlertDialogContent, - Description as AlertDialogDescription, + Description as AlertDialogDescription }; diff --git a/frontend/src/lib/components/ui/alert/alert-description.svelte b/frontend/src/lib/components/ui/alert/alert-description.svelte index aa07ca4..ab02da5 100644 --- a/frontend/src/lib/components/ui/alert/alert-description.svelte +++ b/frontend/src/lib/components/ui/alert/alert-description.svelte @@ -1,13 +1,13 @@ -
+
diff --git a/frontend/src/lib/components/ui/alert/alert-title.svelte b/frontend/src/lib/components/ui/alert/alert-title.svelte index ae0b733..8836396 100644 --- a/frontend/src/lib/components/ui/alert/alert-title.svelte +++ b/frontend/src/lib/components/ui/alert/alert-title.svelte @@ -1,20 +1,20 @@ diff --git a/frontend/src/lib/components/ui/alert/alert.svelte b/frontend/src/lib/components/ui/alert/alert.svelte index dc281ba..93877a3 100644 --- a/frontend/src/lib/components/ui/alert/alert.svelte +++ b/frontend/src/lib/components/ui/alert/alert.svelte @@ -1,14 +1,14 @@ diff --git a/frontend/src/lib/components/ui/avatar/avatar-fallback.svelte b/frontend/src/lib/components/ui/avatar/avatar-fallback.svelte index 0bb42b1..4b67c1b 100644 --- a/frontend/src/lib/components/ui/avatar/avatar-fallback.svelte +++ b/frontend/src/lib/components/ui/avatar/avatar-fallback.svelte @@ -1,15 +1,15 @@ diff --git a/frontend/src/lib/components/ui/avatar/avatar-image.svelte b/frontend/src/lib/components/ui/avatar/avatar-image.svelte index 0c92f19..d769f81 100644 --- a/frontend/src/lib/components/ui/avatar/avatar-image.svelte +++ b/frontend/src/lib/components/ui/avatar/avatar-image.svelte @@ -1,18 +1,18 @@ diff --git a/frontend/src/lib/components/ui/avatar/avatar.svelte b/frontend/src/lib/components/ui/avatar/avatar.svelte index 1714758..9a12d65 100644 --- a/frontend/src/lib/components/ui/avatar/avatar.svelte +++ b/frontend/src/lib/components/ui/avatar/avatar.svelte @@ -1,17 +1,17 @@ diff --git a/frontend/src/lib/components/ui/avatar/index.ts b/frontend/src/lib/components/ui/avatar/index.ts index d06457b..9585f8a 100644 --- a/frontend/src/lib/components/ui/avatar/index.ts +++ b/frontend/src/lib/components/ui/avatar/index.ts @@ -1,6 +1,6 @@ -import Root from "./avatar.svelte"; -import Image from "./avatar-image.svelte"; -import Fallback from "./avatar-fallback.svelte"; +import Root from './avatar.svelte'; +import Image from './avatar-image.svelte'; +import Fallback from './avatar-fallback.svelte'; export { Root, @@ -9,5 +9,5 @@ export { // Root as Avatar, Image as AvatarImage, - Fallback as AvatarFallback, + Fallback as AvatarFallback }; diff --git a/frontend/src/lib/components/ui/badge/badge.svelte b/frontend/src/lib/components/ui/badge/badge.svelte index 70c5a05..92df3ec 100644 --- a/frontend/src/lib/components/ui/badge/badge.svelte +++ b/frontend/src/lib/components/ui/badge/badge.svelte @@ -1,15 +1,15 @@ ["variant"]; +export type Variant = VariantProps['variant']; diff --git a/frontend/src/lib/components/ui/button/index.ts b/frontend/src/lib/components/ui/button/index.ts index 84bf7df..e632002 100644 --- a/frontend/src/lib/components/ui/button/index.ts +++ b/frontend/src/lib/components/ui/button/index.ts @@ -1,34 +1,33 @@ -import { type VariantProps, tv } from "tailwind-variants"; -import type { Button as ButtonPrimitive } from "bits-ui"; -import Root from "./button.svelte"; +import { type VariantProps, tv } from 'tailwind-variants'; +import type { Button as ButtonPrimitive } from 'bits-ui'; +import Root from './button.svelte'; const buttonVariants = tv({ - base: "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + base: 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50', variants: { variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", - destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90", - outline: - "border border-input bg-background hover:bg-accent hover:text-accent-foreground", - secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", + default: 'bg-primary text-primary-foreground hover:bg-primary/90', + destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90', + outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground', + secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80', + ghost: 'hover:bg-accent hover:text-accent-foreground', + link: 'text-primary underline-offset-4 hover:underline' }, size: { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10", - }, + default: 'h-10 px-4 py-2', + sm: 'h-9 rounded-md px-3', + lg: 'h-11 rounded-md px-8', + icon: 'h-10 w-10' + } }, 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; @@ -46,5 +45,5 @@ export { Root as Button, type Props as ButtonProps, type Events as ButtonEvents, - buttonVariants, + buttonVariants }; diff --git a/frontend/src/lib/components/ui/card/card-content.svelte b/frontend/src/lib/components/ui/card/card-content.svelte index ff615be..f10eff4 100644 --- a/frontend/src/lib/components/ui/card/card-content.svelte +++ b/frontend/src/lib/components/ui/card/card-content.svelte @@ -1,13 +1,13 @@ -
+
diff --git a/frontend/src/lib/components/ui/card/card-description.svelte b/frontend/src/lib/components/ui/card/card-description.svelte index d56070d..a791a8e 100644 --- a/frontend/src/lib/components/ui/card/card-description.svelte +++ b/frontend/src/lib/components/ui/card/card-description.svelte @@ -1,13 +1,13 @@ -

+

diff --git a/frontend/src/lib/components/ui/card/card-footer.svelte b/frontend/src/lib/components/ui/card/card-footer.svelte index f0b3af1..303374b 100644 --- a/frontend/src/lib/components/ui/card/card-footer.svelte +++ b/frontend/src/lib/components/ui/card/card-footer.svelte @@ -1,13 +1,13 @@ -
+
diff --git a/frontend/src/lib/components/ui/card/card-header.svelte b/frontend/src/lib/components/ui/card/card-header.svelte index 8740b36..e7bd0af 100644 --- a/frontend/src/lib/components/ui/card/card-header.svelte +++ b/frontend/src/lib/components/ui/card/card-header.svelte @@ -1,13 +1,13 @@ -
+
diff --git a/frontend/src/lib/components/ui/card/card-title.svelte b/frontend/src/lib/components/ui/card/card-title.svelte index fbc3c76..70d51cc 100644 --- a/frontend/src/lib/components/ui/card/card-title.svelte +++ b/frontend/src/lib/components/ui/card/card-title.svelte @@ -1,20 +1,20 @@ diff --git a/frontend/src/lib/components/ui/card/card.svelte b/frontend/src/lib/components/ui/card/card.svelte index 5cfd46c..305dd08 100644 --- a/frontend/src/lib/components/ui/card/card.svelte +++ b/frontend/src/lib/components/ui/card/card.svelte @@ -1,15 +1,15 @@
diff --git a/frontend/src/lib/components/ui/card/index.ts b/frontend/src/lib/components/ui/card/index.ts index bcc031d..86c5408 100644 --- a/frontend/src/lib/components/ui/card/index.ts +++ b/frontend/src/lib/components/ui/card/index.ts @@ -1,9 +1,9 @@ -import Root from "./card.svelte"; -import Content from "./card-content.svelte"; -import Description from "./card-description.svelte"; -import Footer from "./card-footer.svelte"; -import Header from "./card-header.svelte"; -import Title from "./card-title.svelte"; +import Root from './card.svelte'; +import Content from './card-content.svelte'; +import Description from './card-description.svelte'; +import Footer from './card-footer.svelte'; +import Header from './card-header.svelte'; +import Title from './card-title.svelte'; export { Root, @@ -18,7 +18,7 @@ export { Description as CardDescription, Footer as CardFooter, Header as CardHeader, - Title as CardTitle, + Title as CardTitle }; -export type HeadingLevel = "h1" | "h2" | "h3" | "h4" | "h5" | "h6"; +export type HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'; diff --git a/frontend/src/lib/components/ui/checkbox/checkbox.svelte b/frontend/src/lib/components/ui/checkbox/checkbox.svelte index ce76896..55fa76d 100644 --- a/frontend/src/lib/components/ui/checkbox/checkbox.svelte +++ b/frontend/src/lib/components/ui/checkbox/checkbox.svelte @@ -1,20 +1,20 @@ diff --git a/frontend/src/lib/components/ui/checkbox/index.ts b/frontend/src/lib/components/ui/checkbox/index.ts index 6d92d94..5c27671 100644 --- a/frontend/src/lib/components/ui/checkbox/index.ts +++ b/frontend/src/lib/components/ui/checkbox/index.ts @@ -1,6 +1,6 @@ -import Root from "./checkbox.svelte"; +import Root from './checkbox.svelte'; export { Root, // - Root as Checkbox, + Root as Checkbox }; diff --git a/frontend/src/lib/components/ui/dialog/dialog-content.svelte b/frontend/src/lib/components/ui/dialog/dialog-content.svelte index 31d8f17..d7023dc 100644 --- a/frontend/src/lib/components/ui/dialog/dialog-content.svelte +++ b/frontend/src/lib/components/ui/dialog/dialog-content.svelte @@ -1,15 +1,15 @@ @@ -20,14 +20,14 @@ {transition} {transitionConfig} class={cn( - "bg-background fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg sm:rounded-lg md:w-full", + 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg sm:rounded-lg md:w-full', className )} {...$$restProps} > Close diff --git a/frontend/src/lib/components/ui/dialog/dialog-description.svelte b/frontend/src/lib/components/ui/dialog/dialog-description.svelte index df097db..9102ec1 100644 --- a/frontend/src/lib/components/ui/dialog/dialog-description.svelte +++ b/frontend/src/lib/components/ui/dialog/dialog-description.svelte @@ -1,15 +1,15 @@ diff --git a/frontend/src/lib/components/ui/dialog/dialog-footer.svelte b/frontend/src/lib/components/ui/dialog/dialog-footer.svelte index f118240..0977f84 100644 --- a/frontend/src/lib/components/ui/dialog/dialog-footer.svelte +++ b/frontend/src/lib/components/ui/dialog/dialog-footer.svelte @@ -1,15 +1,15 @@
diff --git a/frontend/src/lib/components/ui/dialog/dialog-header.svelte b/frontend/src/lib/components/ui/dialog/dialog-header.svelte index f327269..afe1c7d 100644 --- a/frontend/src/lib/components/ui/dialog/dialog-header.svelte +++ b/frontend/src/lib/components/ui/dialog/dialog-header.svelte @@ -1,13 +1,13 @@ -
+
diff --git a/frontend/src/lib/components/ui/dialog/dialog-overlay.svelte b/frontend/src/lib/components/ui/dialog/dialog-overlay.svelte index 32a0a40..a327f58 100644 --- a/frontend/src/lib/components/ui/dialog/dialog-overlay.svelte +++ b/frontend/src/lib/components/ui/dialog/dialog-overlay.svelte @@ -1,14 +1,14 @@ @@ -16,6 +16,6 @@ diff --git a/frontend/src/lib/components/ui/dialog/dialog-portal.svelte b/frontend/src/lib/components/ui/dialog/dialog-portal.svelte index eb5d0a5..00774dd 100644 --- a/frontend/src/lib/components/ui/dialog/dialog-portal.svelte +++ b/frontend/src/lib/components/ui/dialog/dialog-portal.svelte @@ -1,5 +1,5 @@ diff --git a/frontend/src/lib/components/ui/dialog/dialog-title.svelte b/frontend/src/lib/components/ui/dialog/dialog-title.svelte index e944496..6aedda8 100644 --- a/frontend/src/lib/components/ui/dialog/dialog-title.svelte +++ b/frontend/src/lib/components/ui/dialog/dialog-title.svelte @@ -1,15 +1,15 @@ diff --git a/frontend/src/lib/components/ui/dialog/index.ts b/frontend/src/lib/components/ui/dialog/index.ts index b17ba5e..6cbc5a7 100644 --- a/frontend/src/lib/components/ui/dialog/index.ts +++ b/frontend/src/lib/components/ui/dialog/index.ts @@ -1,12 +1,12 @@ -import { Dialog as DialogPrimitive } from "bits-ui"; +import { Dialog as DialogPrimitive } from 'bits-ui'; -import Title from "./dialog-title.svelte"; -import Portal from "./dialog-portal.svelte"; -import Footer from "./dialog-footer.svelte"; -import Header from "./dialog-header.svelte"; -import Overlay from "./dialog-overlay.svelte"; -import Content from "./dialog-content.svelte"; -import Description from "./dialog-description.svelte"; +import Title from './dialog-title.svelte'; +import Portal from './dialog-portal.svelte'; +import Footer from './dialog-footer.svelte'; +import Header from './dialog-header.svelte'; +import Overlay from './dialog-overlay.svelte'; +import Content from './dialog-content.svelte'; +import Description from './dialog-description.svelte'; const Root = DialogPrimitive.Root; const Trigger = DialogPrimitive.Trigger; @@ -33,5 +33,5 @@ export { Overlay as DialogOverlay, Content as DialogContent, Description as DialogDescription, - Close as DialogClose, + Close as DialogClose }; diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte index c825f09..25babcf 100644 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +++ b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte @@ -1,20 +1,20 @@ - import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui"; - import { cn, flyAndScale } from "$lib/utils/style.js"; + import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui'; + import { cn, flyAndScale } from '$lib/utils/style.js'; type $$Props = DropdownMenuPrimitive.ContentProps; type $$Events = DropdownMenuPrimitive.ContentEvents; - let className: $$Props["class"] = undefined; - export let sideOffset: $$Props["sideOffset"] = 4; - export let transition: $$Props["transition"] = flyAndScale; - export let transitionConfig: $$Props["transitionConfig"] = undefined; + let className: $$Props['class'] = undefined; + export let sideOffset: $$Props['sideOffset'] = 4; + export let transition: $$Props['transition'] = flyAndScale; + export let transitionConfig: $$Props['transitionConfig'] = undefined; export { className as class }; @@ -17,7 +17,7 @@ {transitionConfig} {sideOffset} class={cn( - "z-50 min-w-[8rem] rounded-md border bg-popover p-1 text-popover-foreground shadow-md focus:outline-none", + 'z-50 min-w-[8rem] rounded-md border bg-popover p-1 text-popover-foreground shadow-md focus:outline-none', className )} {...$$restProps} diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte index c97e0bb..913fbc9 100644 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte +++ b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte @@ -1,21 +1,21 @@ - import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui"; - import { cn } from "$lib/utils/style.js"; + import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui'; + import { cn } from '$lib/utils/style.js'; type $$Props = DropdownMenuPrimitive.LabelProps & { inset?: boolean; }; - let className: $$Props["class"] = undefined; - export let inset: $$Props["inset"] = undefined; + let className: $$Props['class'] = undefined; + export let inset: $$Props['inset'] = undefined; export { className as class }; diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte index 1c74ae1..dd67d44 100644 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +++ b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte @@ -1,9 +1,9 @@ diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte index f7ffd4e..73ad7bb 100644 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +++ b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte @@ -1,19 +1,19 @@ - import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui"; - import { cn } from "$lib/utils/style.js"; + import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui'; + import { cn } from '$lib/utils/style.js'; type $$Props = DropdownMenuPrimitive.SeparatorProps; - let className: $$Props["class"] = undefined; + let className: $$Props['class'] = undefined; export { className as class }; diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte index b1b59f8..724d337 100644 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +++ b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte @@ -1,13 +1,13 @@ - + diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte index fa08da1..8ee77fe 100644 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +++ b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte @@ -1,15 +1,15 @@ @@ -18,7 +18,7 @@ {transition} {transitionConfig} class={cn( - "z-50 min-w-[8rem] rounded-md border bg-popover p-1 text-popover-foreground shadow-lg focus:outline-none", + 'z-50 min-w-[8rem] rounded-md border bg-popover p-1 text-popover-foreground shadow-lg focus:outline-none', className )} {...$$restProps} diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte index ba10d23..24168de 100644 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +++ b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte @@ -1,22 +1,22 @@ - import * as Button from "$lib/components/ui/button/index.js"; + import * as Button from '$lib/components/ui/button/index.js'; type $$Props = Button.Props; type $$Events = Button.Events; diff --git a/frontend/src/lib/components/ui/form/form-description.svelte b/frontend/src/lib/components/ui/form/form-description.svelte index d5680c6..a62fbae 100644 --- a/frontend/src/lib/components/ui/form/form-description.svelte +++ b/frontend/src/lib/components/ui/form/form-description.svelte @@ -1,7 +1,7 @@ diff --git a/frontend/src/lib/components/ui/form/form-element-field.svelte b/frontend/src/lib/components/ui/form/form-element-field.svelte index 5be930d..a3b584c 100644 --- a/frontend/src/lib/components/ui/form/form-element-field.svelte +++ b/frontend/src/lib/components/ui/form/form-element-field.svelte @@ -1,25 +1,25 @@ -
+
diff --git a/frontend/src/lib/components/ui/form/form-field-errors.svelte b/frontend/src/lib/components/ui/form/form-field-errors.svelte index dde1851..e36d032 100644 --- a/frontend/src/lib/components/ui/form/form-field-errors.svelte +++ b/frontend/src/lib/components/ui/form/form-field-errors.svelte @@ -1,18 +1,18 @@ - import type { FormPath, SuperForm } from "sveltekit-superforms"; + import type { FormPath, SuperForm } from 'sveltekit-superforms'; type T = Record; type U = FormPath; -
+
diff --git a/frontend/src/lib/components/ui/form/form-fieldset.svelte b/frontend/src/lib/components/ui/form/form-fieldset.svelte index ea58c81..874226b 100644 --- a/frontend/src/lib/components/ui/form/form-fieldset.svelte +++ b/frontend/src/lib/components/ui/form/form-fieldset.svelte @@ -1,19 +1,19 @@ @@ -24,7 +24,7 @@ let:errors let:tainted let:value - class={cn("space-y-2", className)} + class={cn('space-y-2', className)} > diff --git a/frontend/src/lib/components/ui/form/form-label.svelte b/frontend/src/lib/components/ui/form/form-label.svelte index 619cfb5..0f409b4 100644 --- a/frontend/src/lib/components/ui/form/form-label.svelte +++ b/frontend/src/lib/components/ui/form/form-label.svelte @@ -1,17 +1,17 @@ -
{:else if success} -

+

An email has been sent to the provided email, if it exists in the system.

{:else}
-

+

Enter your email to receive an email with a one time access link.

diff --git a/frontend/src/routes/settings/+layout.svelte b/frontend/src/routes/settings/+layout.svelte index 86fe42d..13f8d64 100644 --- a/frontend/src/routes/settings/+layout.svelte +++ b/frontend/src/routes/settings/+layout.svelte @@ -33,7 +33,7 @@
-
+
@@ -44,9 +44,9 @@
-
{/each} diff --git a/frontend/src/routes/settings/admin/oidc-clients/oidc-client-form.svelte b/frontend/src/routes/settings/admin/oidc-clients/oidc-client-form.svelte index c70fd33..be1ac72 100644 --- a/frontend/src/routes/settings/admin/oidc-clients/oidc-client-form.svelte +++ b/frontend/src/routes/settings/admin/oidc-clients/oidc-client-form.svelte @@ -96,7 +96,7 @@ id="pkce" label="PKCE" description="Public Key Code Exchange is a security feature to prevent CSRF and authorization code interception attacks." - disabled={$inputs.isPublic.value} + disabled={$inputs.isPublic.value} bind:checked={$inputs.pkceEnabled.value} />
@@ -104,7 +104,7 @@
{#if logoDataURL} -
+
clients = await oidcService.listClients(o)} + onRefresh={async (o) => (clients = await oidcService.listClients(o))} columns={[ { label: 'Logo' }, { label: 'Name', sortColumn: 'name' }, diff --git a/frontend/src/routes/settings/admin/user-groups/[id]/+page.svelte b/frontend/src/routes/settings/admin/user-groups/[id]/+page.svelte index e36bec9..5af1f99 100644 --- a/frontend/src/routes/settings/admin/user-groups/[id]/+page.svelte +++ b/frontend/src/routes/settings/admin/user-groups/[id]/+page.svelte @@ -60,7 +60,7 @@
- Back {#if !!userGroup.ldapId} @@ -92,9 +92,8 @@ /> {/await}
- updateUserGroupUsers(userGroup.userIds)} + >Save
diff --git a/frontend/src/routes/settings/admin/user-groups/user-selection.svelte b/frontend/src/routes/settings/admin/user-groups/user-selection.svelte index fb9fdae..c7adaf5 100644 --- a/frontend/src/routes/settings/admin/user-groups/user-selection.svelte +++ b/frontend/src/routes/settings/admin/user-groups/user-selection.svelte @@ -9,9 +9,7 @@ users: initialUsers, selectionDisabled = false, selectedUserIds = $bindable() - }: { users: Paginated; - selectionDisabled?: boolean; - selectedUserIds: string[] } = $props(); + }: { users: Paginated; selectionDisabled?: boolean; selectedUserIds: string[] } = $props(); const userService = new UserService(); diff --git a/frontend/src/routes/settings/admin/users/[id]/+page.svelte b/frontend/src/routes/settings/admin/users/[id]/+page.svelte index 731f924..395cdf7 100644 --- a/frontend/src/routes/settings/admin/users/[id]/+page.svelte +++ b/frontend/src/routes/settings/admin/users/[id]/+page.svelte @@ -45,7 +45,7 @@
- Back {#if !!user.ldapId} diff --git a/frontend/src/routes/settings/admin/users/one-time-link-modal.svelte b/frontend/src/routes/settings/admin/users/one-time-link-modal.svelte index 184fc83..2a633be 100644 --- a/frontend/src/routes/settings/admin/users/one-time-link-modal.svelte +++ b/frontend/src/routes/settings/admin/users/one-time-link-modal.svelte @@ -75,10 +75,7 @@
- {:else} diff --git a/frontend/src/routes/settings/audit-log/+page.svelte b/frontend/src/routes/settings/audit-log/+page.svelte index 8781089..791d1ee 100644 --- a/frontend/src/routes/settings/audit-log/+page.svelte +++ b/frontend/src/routes/settings/audit-log/+page.svelte @@ -12,7 +12,9 @@ Audit Log - See your account activities from the last 3 months. + See your account activities from the last 3 months. diff --git a/frontend/tailwind.config.ts b/frontend/tailwind.config.ts index 9363523..f7cd364 100644 --- a/frontend/tailwind.config.ts +++ b/frontend/tailwind.config.ts @@ -1,65 +1,65 @@ -import { fontFamily } from "tailwindcss/defaultTheme"; -import type { Config } from "tailwindcss"; +import { fontFamily } from 'tailwindcss/defaultTheme'; +import type { Config } from 'tailwindcss'; const config: Config = { - darkMode: ["class"], - content: ["./src/**/*.{html,js,svelte,ts}"], - safelist: ["dark"], + darkMode: ['class'], + content: ['./src/**/*.{html,js,svelte,ts}'], + safelist: ['dark'], theme: { container: { center: true, - padding: "2rem", + padding: '2rem', screens: { - "2xl": "1400px" + '2xl': '1400px' } }, extend: { colors: { - border: "hsl(var(--border) / )", - input: "hsl(var(--input) / )", - ring: "hsl(var(--ring) / )", - background: "hsl(var(--background) / )", - foreground: "hsl(var(--foreground) / )", + border: 'hsl(var(--border) / )', + input: 'hsl(var(--input) / )', + ring: 'hsl(var(--ring) / )', + background: 'hsl(var(--background) / )', + foreground: 'hsl(var(--foreground) / )', primary: { - DEFAULT: "hsl(var(--primary) / )", - foreground: "hsl(var(--primary-foreground) / )" + DEFAULT: 'hsl(var(--primary) / )', + foreground: 'hsl(var(--primary-foreground) / )' }, secondary: { - DEFAULT: "hsl(var(--secondary) / )", - foreground: "hsl(var(--secondary-foreground) / )" + DEFAULT: 'hsl(var(--secondary) / )', + foreground: 'hsl(var(--secondary-foreground) / )' }, destructive: { - DEFAULT: "hsl(var(--destructive) / )", - foreground: "hsl(var(--destructive-foreground) / )" + DEFAULT: 'hsl(var(--destructive) / )', + foreground: 'hsl(var(--destructive-foreground) / )' }, muted: { - DEFAULT: "hsl(var(--muted) / )", - foreground: "hsl(var(--muted-foreground) / )" + DEFAULT: 'hsl(var(--muted) / )', + foreground: 'hsl(var(--muted-foreground) / )' }, accent: { - DEFAULT: "hsl(var(--accent) / )", - foreground: "hsl(var(--accent-foreground) / )" + DEFAULT: 'hsl(var(--accent) / )', + foreground: 'hsl(var(--accent-foreground) / )' }, popover: { - DEFAULT: "hsl(var(--popover) / )", - foreground: "hsl(var(--popover-foreground) / )" + DEFAULT: 'hsl(var(--popover) / )', + foreground: 'hsl(var(--popover-foreground) / )' }, card: { - DEFAULT: "hsl(var(--card) / )", - foreground: "hsl(var(--card-foreground) / )" + DEFAULT: 'hsl(var(--card) / )', + foreground: 'hsl(var(--card-foreground) / )' } }, borderRadius: { - lg: "var(--radius)", - md: "calc(var(--radius) - 2px)", - sm: "calc(var(--radius) - 4px)" + lg: 'var(--radius)', + md: 'calc(var(--radius) - 2px)', + sm: 'calc(var(--radius) - 4px)' }, fontFamily: { sans: [...fontFamily.sans], - playfair: ["Playfair Display", ...fontFamily.serif] + playfair: ['Playfair Display', ...fontFamily.serif] } } - }, + } }; export default config; diff --git a/frontend/tests/auth.setup.ts b/frontend/tests/auth.setup.ts index db393b3..1f29890 100644 --- a/frontend/tests/auth.setup.ts +++ b/frontend/tests/auth.setup.ts @@ -5,7 +5,7 @@ import { cleanupBackend } from './utils/cleanup.util'; const authFile = 'tests/.auth/user.json'; setup('authenticate', async ({ page }) => { - await cleanupBackend(); + await cleanupBackend(); await page.goto('/login'); await (await passkeyUtil.init(page)).addPasskey(); @@ -13,6 +13,5 @@ setup('authenticate', async ({ page }) => { await page.getByRole('button', { name: 'Authenticate' }).click(); await page.waitForURL('/settings/account'); - await page.context().storageState({ path: authFile }); }); diff --git a/frontend/tests/oidc-client-settings.spec.ts b/frontend/tests/oidc-client-settings.spec.ts index 2e35c21..09d636a 100644 --- a/frontend/tests/oidc-client-settings.spec.ts +++ b/frontend/tests/oidc-client-settings.spec.ts @@ -19,7 +19,7 @@ test('Create OIDC client', async ({ page }) => { await page.getByRole('button', { name: 'Save' }).click(); const clientId = await page.getByTestId('client-id').textContent(); - + await expect(page.getByRole('status')).toHaveText('OIDC client created successfully'); expect(clientId?.length).toBe(36); expect((await page.getByTestId('client-secret').textContent())?.length).toBe(32); diff --git a/frontend/tests/one-time-access-token.spec.ts b/frontend/tests/one-time-access-token.spec.ts index 668b234..6b0b78d 100644 --- a/frontend/tests/one-time-access-token.spec.ts +++ b/frontend/tests/one-time-access-token.spec.ts @@ -17,5 +17,7 @@ test('Sign in with expired one time access token fails', async ({ page }) => { await page.goto(`/login/${token.token}`); await page.getByRole('button', { name: 'Continue' }).click(); - await expect(page.getByRole('paragraph')).toHaveText('Token is invalid or expired. Please try again.'); + await expect(page.getByRole('paragraph')).toHaveText( + 'Token is invalid or expired. Please try again.' + ); });