From f7b976a1eecc7f5648786bb5fee5e0a9081ca2cf Mon Sep 17 00:00:00 2001 From: d3rpp Date: Tue, 13 Aug 2024 10:20:31 +1200 Subject: [PATCH] Migrated to Svelte 5 --- .vscode/settings.json | 4 ++- bun.lockb | Bin 160004 -> 164204 bytes package.json | 18 +++++----- src/lib/components/headers/app-header.svelte | 24 +++++++++++++ src/lib/components/headers/index.ts | 4 +++ .../components/headers/landing-header.svelte | 23 +++++++++++++ src/lib/components/main.svelte | 7 ++++ src/lib/components/theme-toggle.svelte | 12 ++++--- src/lib/components/ui/button/button.svelte | 30 ++++++++++------ src/lib/components/ui/button/index.ts | 2 ++ .../dropdown-menu-checkbox-item.svelte | 16 +++++---- .../dropdown-menu-content.svelte | 20 ++++++----- .../dropdown-menu/dropdown-menu-item.svelte | 18 +++++----- .../dropdown-menu/dropdown-menu-label.svelte | 17 +++++----- .../dropdown-menu-radio-group.svelte | 13 ++++--- .../dropdown-menu-radio-item.svelte | 16 +++++---- .../dropdown-menu-separator.svelte | 7 ++-- .../dropdown-menu-shortcut.svelte | 14 ++++---- .../dropdown-menu-sub-content.svelte | 21 ++++++------ .../dropdown-menu-sub-trigger.svelte | 18 +++++----- src/lib/components/ui/dropdown-menu/index.ts | 26 ++++++++++++++ src/lib/icons/index.ts | 2 +- src/lib/icons/lock.svelte | 6 ++++ src/lib/logos/index.ts | 1 + src/routes/(app)/app/+layout.svelte | 32 ++++++------------ src/routes/(app)/app/+page.svelte | 17 ++++++---- .../{auth => (auth)}/login/+page.svelte | 0 src/routes/(landing)/+layout.svelte | 15 ++++++++ src/routes/{ => (landing)}/+page.svelte | 0 src/routes/+layout.svelte | 10 +++++- svelte.config.js | 2 +- 31 files changed, 263 insertions(+), 132 deletions(-) create mode 100644 src/lib/components/headers/app-header.svelte create mode 100644 src/lib/components/headers/index.ts create mode 100644 src/lib/components/headers/landing-header.svelte create mode 100644 src/lib/logos/index.ts rename src/routes/{auth => (auth)}/login/+page.svelte (100%) create mode 100644 src/routes/(landing)/+layout.svelte rename src/routes/{ => (landing)}/+page.svelte (100%) diff --git a/.vscode/settings.json b/.vscode/settings.json index bc31e15..7b55faa 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,7 @@ { "files.associations": { "*.css": "tailwindcss" - } + }, + "typescript.enablePromptUseWorkspaceTsdk": true, + "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/bun.lockb b/bun.lockb index 02e6815b902e82177b1d2e415443e2bb8803ea33..42940144674d69b5059c24c2a5b2a05fee22bd0f 100755 GIT binary patch delta 29873 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 delta 27402 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 Od{-nl5QmH8CI1Wf^mU;C diff --git a/package.json b/package.json index 228392e..f768ec1 100644 --- a/package.json +++ b/package.json @@ -15,12 +15,12 @@ "drizzle:migrate": "bun ./src/contrib/migrate.ts" }, "devDependencies": { - "@sveltejs/kit": "^2.5.21", - "@sveltejs/vite-plugin-svelte": "^3.1.1", + "@sveltejs/kit": "^2.5.22", + "@sveltejs/vite-plugin-svelte": "^4.0.0-next.6", "@types/eslint": "^9.6.0", "autoprefixer": "^10.4.20", "bun-types": "^1.1.22", - "drizzle-kit": "^0.23.2", + "drizzle-kit": "^0.24.0", "eslint": "^9.9.0", "eslint-plugin-svelte": "^2.43.0", "globals": "^15.9.0", @@ -28,12 +28,12 @@ "prettier": "^3.3.3", "prettier-plugin-svelte": "^3.2.6", "prettier-plugin-tailwindcss": "^0.6.6", - "svelte": "^4.2.18", + "svelte": "^5.0.0-next.218", "svelte-adapter-bun": "^0.5.2", "svelte-check": "^3.8.5", "tailwindcss": "^3.4.9", - "typescript": "^5.5.4", - "typescript-eslint": "^8.0.1", + "typescript": "^5.6.0-dev.20240812", + "typescript-eslint": "^8.1.0", "vite": "^5.4.0" }, "type": "module", @@ -45,11 +45,11 @@ "dependencies": { "bits-ui": "^0.21.13", "clsx": "^2.1.1", - "drizzle-orm": "^0.32.2", - "lucide-svelte": "^0.424.0", + "drizzle-orm": "^0.33.0", + "lucide-svelte": "^0.427.0", "mode-watcher": "^0.4.1", "svelte-radix": "^1.1.0", - "tailwind-merge": "^2.5.0", + "tailwind-merge": "^2.5.2", "tailwind-variants": "^0.2.1" } } diff --git a/src/lib/components/headers/app-header.svelte b/src/lib/components/headers/app-header.svelte new file mode 100644 index 0000000..f78d4a9 --- /dev/null +++ b/src/lib/components/headers/app-header.svelte @@ -0,0 +1,24 @@ + + +
+
+
+ + + {APPLICATION_NAME} +
+ + +
+
diff --git a/src/lib/components/headers/index.ts b/src/lib/components/headers/index.ts new file mode 100644 index 0000000..30d808c --- /dev/null +++ b/src/lib/components/headers/index.ts @@ -0,0 +1,4 @@ +import Icons from "../../icons"; + +export const APPLICATION_NAME = "Jail Bird"; +export const APPLICATION_ICON = Icons.Lock; diff --git a/src/lib/components/headers/landing-header.svelte b/src/lib/components/headers/landing-header.svelte new file mode 100644 index 0000000..b31c542 --- /dev/null +++ b/src/lib/components/headers/landing-header.svelte @@ -0,0 +1,23 @@ + + +
+
+
+ + + {APPLICATION_NAME} +
+ + +
+
diff --git a/src/lib/components/main.svelte b/src/lib/components/main.svelte index b63e4ed..88a1249 100644 --- a/src/lib/components/main.svelte +++ b/src/lib/components/main.svelte @@ -1,3 +1,10 @@ + +
diff --git a/src/lib/components/theme-toggle.svelte b/src/lib/components/theme-toggle.svelte index 9dbd12b..232e082 100644 --- a/src/lib/components/theme-toggle.svelte +++ b/src/lib/components/theme-toggle.svelte @@ -8,6 +8,13 @@ import * as DropdownMenu from "$lib/components/ui/dropdown-menu/index.js"; + + - setMode("light")} - class="data-[highlighted]:bg-destructive" - > + setMode("light")}> Light setMode("dark")}> diff --git a/src/lib/components/ui/button/button.svelte b/src/lib/components/ui/button/button.svelte index 86827f3..a9143b3 100644 --- a/src/lib/components/ui/button/button.svelte +++ b/src/lib/components/ui/button/button.svelte @@ -1,25 +1,33 @@ + + - + {@render children()} diff --git a/src/lib/components/ui/button/index.ts b/src/lib/components/ui/button/index.ts index 3a708f7..bf6d3f6 100644 --- a/src/lib/components/ui/button/index.ts +++ b/src/lib/components/ui/button/index.ts @@ -1,5 +1,6 @@ import type { Button as ButtonPrimitive } from "bits-ui"; import { type VariantProps, tv } from "tailwind-variants"; +import type { Snippet } from "svelte"; import Root from "./button.svelte"; const buttonVariants = tv({ @@ -34,6 +35,7 @@ type Size = VariantProps["size"]; type Props = ButtonPrimitive.Props & { variant?: Variant; size?: Size; + children: Snippet; }; type Events = ButtonPrimitive.Events; diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte index b28ba7b..03ee620 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte @@ -3,12 +3,14 @@ import Check from "lucide-svelte/icons/check"; import { cn } from "$lib/utils.js"; - type $$Props = DropdownMenuPrimitive.CheckboxItemProps; - type $$Events = DropdownMenuPrimitive.CheckboxItemEvents; + import type { CheckBoxItemProps } from "."; - let className: $$Props["class"] = undefined; - export let checked: $$Props["checked"] = undefined; - export { className as class }; + let { + class: className = undefined, + checked = $bindable(undefined), + children, + ...rest + }: CheckBoxItemProps = $props(); - + {@render children()} diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte index b10173c..581d50c 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte @@ -2,14 +2,16 @@ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui"; import { cn, flyAndScale } from "$lib/utils.js"; - type $$Props = DropdownMenuPrimitive.ContentProps; - type $$Events = DropdownMenuPrimitive.ContentEvents; + import type { ContentProps } from "."; - 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 }; + const { + class: className = undefined, + sideOffset = 4, + transition = flyAndScale, + transitionConfig = undefined, + children, + ...rest + }: ContentProps = $props(); - + {@render children()} diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte index 03aa634..7aad276 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte @@ -2,14 +2,14 @@ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui"; import { cn } from "$lib/utils.js"; - type $$Props = DropdownMenuPrimitive.ItemProps & { - inset?: boolean; - }; - type $$Events = DropdownMenuPrimitive.ItemEvents; + import type { ItemProps } from "."; - let className: $$Props["class"] = undefined; - export let inset: $$Props["inset"] = undefined; - export { className as class }; + const { + class: className = undefined, + inset = false, + children, + ...rest + }: ItemProps = $props(); - + {@render children()} diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte index 43f1527..68bfc0d 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte @@ -2,18 +2,19 @@ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui"; import { cn } from "$lib/utils.js"; - type $$Props = DropdownMenuPrimitive.LabelProps & { - inset?: boolean; - }; + import type { LabelProps } from "."; - let className: $$Props["class"] = undefined; - export let inset: $$Props["inset"] = undefined; - export { className as class }; + const { + class: className = undefined, + inset = false, + children, + ...rest + }: LabelProps = $props(); - + {@render children()} diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte index 1c74ae1..af915e0 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte @@ -1,11 +1,14 @@ - - + + {@render children()} diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte index d8e807b..b05b7bd 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte @@ -3,12 +3,14 @@ import Circle from "lucide-svelte/icons/circle"; import { cn } from "$lib/utils.js"; - type $$Props = DropdownMenuPrimitive.RadioItemProps; - type $$Events = DropdownMenuPrimitive.RadioItemEvents; + import type { RadioItemProps } from "."; - let className: $$Props["class"] = undefined; - export let value: $$Props["value"]; - export { className as class }; + let { + class: className = undefined, + value = $bindable(), + children, + ...rest + }: RadioItemProps = $props(); - + {@render children()} diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte index e14d078..2ebe304 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte @@ -2,13 +2,12 @@ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui"; import { cn } from "$lib/utils.js"; - type $$Props = DropdownMenuPrimitive.SeparatorProps; + import type { SeparatorProps } from "."; - let className: $$Props["class"] = undefined; - export { className as class }; + const { class: className, ...rest }: SeparatorProps = $props(); diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte index 10f225b..dd118ca 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte @@ -1,16 +1,18 @@ - + {@render children()} diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte index 830ef2f..222d84c 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte @@ -2,16 +2,15 @@ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui"; import { cn, flyAndScale } from "$lib/utils.js"; - type $$Props = DropdownMenuPrimitive.SubContentProps; - type $$Events = DropdownMenuPrimitive.SubContentEvents; + import type { SubContentProps } from "."; - let className: $$Props["class"] = undefined; - export let transition: $$Props["transition"] = flyAndScale; - export let transitionConfig: $$Props["transitionConfig"] = { - x: -10, - y: 0, - }; - export { className as class }; + const { + class: className = undefined, + transition = flyAndScale, + transitionConfig = { x: -10, y: 0 }, + children, + ...rest + }: SubContentProps = $props(); - + {@render children()} diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte index 62392e9..f390449 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte @@ -3,14 +3,14 @@ import ChevronRight from "lucide-svelte/icons/chevron-right"; import { cn } from "$lib/utils.js"; - type $$Props = DropdownMenuPrimitive.SubTriggerProps & { - inset?: boolean; - }; - type $$Events = DropdownMenuPrimitive.SubTriggerEvents; + import type { SubTriggerProps } from "."; - let className: $$Props["class"] = undefined; - export let inset: $$Props["inset"] = undefined; - export { className as class }; + const { + class: className = undefined, + inset = false, + children, + ...rest + }: SubTriggerProps = $props(); - + {@render children()} diff --git a/src/lib/components/ui/dropdown-menu/index.ts b/src/lib/components/ui/dropdown-menu/index.ts index c1749e9..657646b 100644 --- a/src/lib/components/ui/dropdown-menu/index.ts +++ b/src/lib/components/ui/dropdown-menu/index.ts @@ -1,4 +1,7 @@ import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui"; +import type { HTMLAttributes } from "svelte/elements"; +import type { Snippet } from "svelte"; + import Item from "./dropdown-menu-item.svelte"; import Label from "./dropdown-menu-label.svelte"; import Content from "./dropdown-menu-content.svelte"; @@ -15,6 +18,29 @@ const Root = DropdownMenuPrimitive.Root; const Trigger = DropdownMenuPrimitive.Trigger; const Group = DropdownMenuPrimitive.Group; +type ChildrenProp = { children: Snippet }; + +export type CheckBoxItemProps = DropdownMenuPrimitive.CheckboxItemProps & + ChildrenProp; +export type ContentProps = DropdownMenuPrimitive.ContentProps & ChildrenProp; +export type ItemProps = DropdownMenuPrimitive.ItemProps & { + inset?: boolean; +} & ChildrenProp; +export type LabelProps = DropdownMenuPrimitive.LabelProps & { + inset?: boolean; +} & ChildrenProp; +export type RadioGroupProps = DropdownMenuPrimitive.RadioGroupProps & + ChildrenProp; +export type RadioItemProps = DropdownMenuPrimitive.RadioItemProps & + ChildrenProp; +export type SeparatorProps = DropdownMenuPrimitive.SeparatorProps; // no children +export type ShortcutProps = HTMLAttributes & ChildrenProp; +export type SubContentProps = DropdownMenuPrimitive.SubContentProps & + ChildrenProp; +export type SubTriggerProps = DropdownMenuPrimitive.SubTriggerProps & { + inset?: boolean; +} & ChildrenProp; + export { Sub, Root, diff --git a/src/lib/icons/index.ts b/src/lib/icons/index.ts index 9096b63..24ce130 100644 --- a/src/lib/icons/index.ts +++ b/src/lib/icons/index.ts @@ -1,5 +1,5 @@ import Lock from "./lock.svelte"; export default { - lock: Lock, + Lock, }; diff --git a/src/lib/icons/lock.svelte b/src/lib/icons/lock.svelte index 3a9ca6a..6dce3c5 100644 --- a/src/lib/icons/lock.svelte +++ b/src/lib/icons/lock.svelte @@ -1,3 +1,9 @@ + + - import ThemeToggle from "@/theme-toggle.svelte"; + import AppHeader from "@/headers/app-header.svelte"; - import Icons from "$lib/icons"; - + import type { Snippet } from "svelte"; + + interface Props { + children: Snippet; + } -
-
-
- - Jail Bird -
+ const { children }: Props = $props(); + - -
- +
- + {@render children()}
- - diff --git a/src/routes/(app)/app/+page.svelte b/src/routes/(app)/app/+page.svelte index ed08677..0fe05bc 100644 --- a/src/routes/(app)/app/+page.svelte +++ b/src/routes/(app)/app/+page.svelte @@ -1,17 +1,20 @@ -

Welcome to SvelteKit

+
+

Welcome to SvelteKit

-

- Visit kit.svelte.dev - to read the documentation -

+

+ Visit kit.svelte.dev + to read the documentation +

- - + + +
diff --git a/src/routes/auth/login/+page.svelte b/src/routes/(auth)/login/+page.svelte similarity index 100% rename from src/routes/auth/login/+page.svelte rename to src/routes/(auth)/login/+page.svelte diff --git a/src/routes/(landing)/+layout.svelte b/src/routes/(landing)/+layout.svelte new file mode 100644 index 0000000..212fcac --- /dev/null +++ b/src/routes/(landing)/+layout.svelte @@ -0,0 +1,15 @@ + + + + +{@render children()} diff --git a/src/routes/+page.svelte b/src/routes/(landing)/+page.svelte similarity index 100% rename from src/routes/+page.svelte rename to src/routes/(landing)/+page.svelte diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index a5dedff..aa2f795 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,9 +1,17 @@ - +{@render children()} diff --git a/svelte.config.js b/svelte.config.js index 07ad643..f29ae3b 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -12,7 +12,7 @@ const config = { // If your environment is not supported, or you settled on a specific environment, switch out the adapter. // See https://kit.svelte.dev/docs/adapters for more information about adapters. adapter: adapter(), - // aliases, used primarily for properly setting up ther shadcn components + // aliases, used primarily for properly setting up the shadcn components alias: { "@": "./src/lib/components/*", },