Skip to content

Commit 3d6374e

Browse files
committed
feat: migrave from skeleton v3 to v4
1 parent 5e25528 commit 3d6374e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+3246
-2981
lines changed

eslint.config.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,18 @@ export default ts.config(
3333
svelteConfig
3434
}
3535
}
36+
},
37+
{
38+
rules: {
39+
"svelte/no-navigation-without-resolve": [
40+
"error",
41+
{
42+
ignoreGoto: true,
43+
ignoreLinks: true,
44+
ignorePushState: false,
45+
ignoreReplaceState: false
46+
}
47+
]
48+
}
3649
}
3750
)

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"devDependencies": {
1818
"@eslint/compat": "^1.4.0",
1919
"@eslint/js": "^9.38.0",
20-
"@skeletonlabs/skeleton": "^3.2.2",
20+
"@skeletonlabs/skeleton": "^4.2.4",
2121
"@sveltejs/kit": "^2.47.3",
2222
"@sveltejs/vite-plugin-svelte": "^6.2.1",
2323
"@tailwindcss/forms": "^0.5.10",
@@ -44,9 +44,10 @@
4444
"zod": "^3.25.76"
4545
},
4646
"dependencies": {
47+
"@lucide/svelte": "^0.553.0",
4748
"@mdit/plugin-img-lazyload": "^0.16.0",
4849
"@shikijs/markdown-it": "^3.14.0",
49-
"@skeletonlabs/skeleton-svelte": "^1.5.3",
50+
"@skeletonlabs/skeleton-svelte": "^4.2.4",
5051
"@stripe/connect-js": "^3.3.31",
5152
"@supabase/ssr": "^0.7.0",
5253
"@supabase/supabase-js": "^2.76.1",
@@ -63,7 +64,6 @@
6364
"sharp": "^0.33.5",
6465
"shiki": "^3.14.0",
6566
"stripe": "^18.5.0",
66-
"svelte-lucide": "^2.0.2",
6767
"svelte-persisted-store": "^0.12.0",
6868
"sveltekit-superforms": "^2.27.1"
6969
}

pnpm-lock.yaml

Lines changed: 371 additions & 281 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app.css

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@
33
@plugin '@tailwindcss/typography';
44

55
@import "@skeletonlabs/skeleton";
6-
@import "@skeletonlabs/skeleton/optional/presets";
76
@import "@skeletonlabs/skeleton/themes/cerberus";
87
@import "@skeletonlabs/skeleton/themes/concord";
98
@import "@skeletonlabs/skeleton/themes/fennec";
109
@import "../wasp";
1110

1211
@custom-variant dark (&:where(.dark, .dark *));
1312

14-
@source '../node_modules/@skeletonlabs/skeleton-svelte/dist';
13+
@import "@skeletonlabs/skeleton-svelte";
1514

1615
@layer utilities {
1716
/* Hide scrollbar for Chrome, Safari and Opera */

src/hooks.server.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const supabase: Handle = async ({ event, resolve }) => {
3232
})
3333

3434
event.locals.safeGetSession = async () => {
35-
let start = performance.now()
35+
const start = performance.now()
3636

3737
const { supabaseServer } = event.locals
3838

@@ -113,7 +113,7 @@ const authGuard: Handle = async ({ event, resolve }) => {
113113
.schema("profiles")
114114
.from("free_access")
115115
.select("id, product, date_start, date_end")
116-
.eq("id", user.id)
116+
.eq("user_id", user.id)
117117

118118
if (err) return []
119119
return data

src/lib/components/NewScriptCard.svelte

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { page } from "$app/state"
33
import type { ScriptMetaData, ScriptPublic } from "$lib/types/collection"
44
import { cropString, encodeSEO, scriptCategories, scriptStatus, scriptTypes } from "$lib/utils"
5-
import { Tooltip } from "@skeletonlabs/skeleton-svelte"
5+
import { Portal, Tooltip } from "@skeletonlabs/skeleton-svelte"
66
77
let {
88
script,
@@ -45,34 +45,59 @@
4545
<footer class="m-2 flex justify-between">
4646
<div class="flex">
4747
<Tooltip
48-
open={status}
4948
positioning={{ placement: "top" }}
50-
contentBase="card preset-filled p-4"
5149
openDelay={200}
50+
open={status}
51+
onOpenChange={(e) => (status = e.open)}
5252
>
53-
{#snippet trigger()}{scriptStatus[metadata.status].icon}{/snippet}
54-
{#snippet content()}{scriptStatus[metadata.status].name}{/snippet}
53+
<Tooltip.Trigger class="cursor-default">
54+
{scriptStatus[metadata.status].icon}
55+
</Tooltip.Trigger>
56+
<Portal>
57+
<Tooltip.Positioner>
58+
<Tooltip.Content class="card preset-filled p-4">
59+
{scriptStatus[metadata.status].name}
60+
</Tooltip.Content>
61+
</Tooltip.Positioner>
62+
</Portal>
5563
</Tooltip>
64+
5665
<Tooltip
57-
open={type}
5866
positioning={{ placement: "top" }}
59-
contentBase="card preset-filled p-4"
6067
openDelay={200}
68+
open={type}
69+
onOpenChange={(e) => (type = e.open)}
6170
>
62-
{#snippet trigger()}{scriptTypes[metadata.type].icon}{/snippet}
63-
{#snippet content()}{scriptTypes[metadata.type].name}{/snippet}
71+
<Tooltip.Trigger class="cursor-default">
72+
{scriptTypes[metadata.type].icon}
73+
</Tooltip.Trigger>
74+
<Portal>
75+
<Tooltip.Positioner>
76+
<Tooltip.Content class="card preset-filled p-4">
77+
{scriptTypes[metadata.type].name}
78+
</Tooltip.Content>
79+
</Tooltip.Positioner>
80+
</Portal>
6481
</Tooltip>
6582
</div>
6683
<div class="flex">
6784
{#each metadata.categories as category, i (category)}
6885
<Tooltip
69-
open={categoriesTooltip[i]}
7086
positioning={{ placement: "top" }}
71-
contentBase="card preset-filled p-4"
7287
openDelay={200}
88+
open={categoriesTooltip[i]}
89+
onOpenChange={(e) => (categoriesTooltip[i] = e.open)}
7390
>
74-
{#snippet trigger()}{scriptCategories[category].icon}{/snippet}
75-
{#snippet content()}{scriptCategories[category].name}{/snippet}
91+
<Tooltip.Trigger class="cursor-default">
92+
{scriptCategories[category].icon}
93+
</Tooltip.Trigger>
94+
<Portal>
95+
<Tooltip.Positioner>
96+
<Tooltip.Content class="card preset-filled p-4">
97+
{scriptCategories[category].name}
98+
</Tooltip.Content>
99+
</Tooltip.Positioner>
100+
</Portal>
76101
</Tooltip>
77102
{/each}
78103
</div>
Lines changed: 31 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
11
<script lang="ts">
22
import { page } from "$app/state"
33
import { Pagination } from "@skeletonlabs/skeleton-svelte"
4-
import ArrowLeft from "svelte-lucide/ArrowLeft.svelte"
5-
import ArrowRight from "svelte-lucide/ArrowRight.svelte"
6-
import Ellipsis from "svelte-lucide/Ellipsis.svelte"
7-
import ChevronLeft from "svelte-lucide/ChevronLeft.svelte"
8-
import ChevronRight from "svelte-lucide/ChevronRight.svelte"
4+
import ArrowLeft from "@lucide/svelte/icons/arrow-left"
5+
import ArrowRight from "@lucide/svelte/icons/arrow-right"
6+
import ChevronLeft from "@lucide/svelte/icons/chevron-left"
7+
import ChevronRight from "@lucide/svelte/icons/chevron-right"
98
import { replaceQuery } from "$lib/client/utils"
109
1110
let {
12-
data,
1311
currentPage,
1412
count,
1513
pageSize = $bindable(),
1614
amounts = $bindable([Math.round(pageSize / 2), pageSize, pageSize * 2])
1715
}: {
18-
data: unknown[]
1916
currentPage: number
2017
count: number
2118
pageSize: number
@@ -38,24 +35,41 @@
3835
</select>
3936

4037
<Pagination
41-
{data}
4238
{count}
43-
page={currentPage}
4439
{pageSize}
45-
siblingCount={1}
40+
page={currentPage}
4641
onPageChange={(e) => {
4742
currentPage = e.page
4843
replaceQuery(page.url, { page: e.page.toString() }, false)
4944
}}
5045
onPageSizeChange={(e) => (pageSize = e.pageSize)}
51-
classes="w-fit mx-auto md:mx-0"
52-
buttonClasses="text-xs md:text-base px-2 md:px-3"
46+
class="mx-auto w-fit md:mx-0"
5347
>
54-
{#snippet labelEllipsis()}<Ellipsis class="size-4" />{/snippet}
55-
{#snippet labelNext()}<ArrowRight class="size-4" />{/snippet}
56-
{#snippet labelPrevious()}<ArrowLeft class="size-4" />{/snippet}
57-
{#snippet labelFirst()}<ChevronLeft class="size-4" />{/snippet}
58-
{#snippet labelLast()}<ChevronRight class="size-4" />{/snippet}
48+
<Pagination.FirstTrigger>
49+
<ChevronLeft class="size-4" />
50+
</Pagination.FirstTrigger>
51+
<Pagination.PrevTrigger>
52+
<ArrowLeft class="size-4" />
53+
</Pagination.PrevTrigger>
54+
<Pagination.Context>
55+
{#snippet children(pagination)}
56+
{#each pagination().pages as page, index (page)}
57+
{#if page.type === "page"}
58+
<Pagination.Item {...page}>
59+
{page.value}
60+
</Pagination.Item>
61+
{:else}
62+
<Pagination.Ellipsis {index}>&#8230;</Pagination.Ellipsis>
63+
{/if}
64+
{/each}
65+
{/snippet}
66+
</Pagination.Context>
67+
<Pagination.NextTrigger>
68+
<ArrowRight class="size-4" />
69+
</Pagination.NextTrigger>
70+
<Pagination.LastTrigger>
71+
<ChevronRight class="size-4" />
72+
</Pagination.LastTrigger>
5973
</Pagination>
6074
</footer>
6175
{/if}

src/lib/components/ScriptCard.svelte

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { PUBLIC_SUPABASE_URL } from "$env/static/public"
44
import type { Script } from "$lib/types/collection"
55
import { cropString, encodeSEO, scriptCategories, scriptStatus, scriptTypes } from "$lib/utils"
6-
import { Tooltip } from "@skeletonlabs/skeleton-svelte"
6+
import { Portal, Tooltip } from "@skeletonlabs/skeleton-svelte"
77
88
let { script, customCover, link }: { script: Script; customCover?: string; link?: string } = $props()
99
@@ -54,40 +54,59 @@
5454
<footer class="m-2 flex cursor-default justify-between">
5555
<div class="flex">
5656
<Tooltip
57-
open={status}
58-
onOpenChange={(e) => (status = e.open)}
5957
positioning={{ placement: "top" }}
60-
triggerBase="cursor-default"
61-
contentBase="card preset-filled p-4"
6258
openDelay={200}
59+
open={status}
60+
onOpenChange={(e) => (status = e.open)}
6361
>
64-
{#snippet trigger()}{scriptStatus[script.metadata.status].icon}{/snippet}
65-
{#snippet content()}{scriptStatus[script.metadata.status].name}{/snippet}
62+
<Tooltip.Trigger class="cursor-default">
63+
{scriptStatus[script.metadata.status].icon}
64+
</Tooltip.Trigger>
65+
<Portal>
66+
<Tooltip.Positioner>
67+
<Tooltip.Content class="card preset-filled p-4">
68+
{scriptStatus[script.metadata.status].name}
69+
</Tooltip.Content>
70+
</Tooltip.Positioner>
71+
</Portal>
6672
</Tooltip>
73+
6774
<Tooltip
68-
open={type}
69-
onOpenChange={(e) => (type = e.open)}
7075
positioning={{ placement: "top" }}
71-
triggerBase="cursor-default"
72-
contentBase="card preset-filled p-4"
7376
openDelay={200}
77+
open={type}
78+
onOpenChange={(e) => (type = e.open)}
7479
>
75-
{#snippet trigger()}{scriptTypes[script.metadata.type].icon}{/snippet}
76-
{#snippet content()}{scriptTypes[script.metadata.type].name}{/snippet}
80+
<Tooltip.Trigger class="cursor-default">
81+
{scriptTypes[script.metadata.type].icon}
82+
</Tooltip.Trigger>
83+
<Portal>
84+
<Tooltip.Positioner>
85+
<Tooltip.Content class="card preset-filled p-4">
86+
{scriptTypes[script.metadata.type].name}
87+
</Tooltip.Content>
88+
</Tooltip.Positioner>
89+
</Portal>
7790
</Tooltip>
7891
</div>
7992
<div class="flex">
8093
{#each script.metadata.categories as category, i (i)}
8194
<Tooltip
82-
open={categoriesTooltip[i]}
83-
onOpenChange={(e) => (categoriesTooltip[i] = e.open)}
8495
positioning={{ placement: "top" }}
85-
triggerBase="cursor-default"
86-
contentBase="card preset-filled p-4"
8796
openDelay={200}
97+
open={categoriesTooltip[i]}
98+
onOpenChange={(e) => (categoriesTooltip[i] = e.open)}
8899
>
89-
{#snippet trigger()}{scriptCategories[category].icon}{/snippet}
90-
{#snippet content()}{scriptCategories[category].name}{/snippet}
100+
<Tooltip.Trigger class="cursor-default">
101+
{scriptCategories[category].icon}
102+
</Tooltip.Trigger>
103+
<Portal>
104+
<Tooltip.Positioner>
105+
<Tooltip.Content class="card preset-filled p-4">
106+
{scriptCategories[category].name}
107+
</Tooltip.Content>
108+
</Tooltip.Positioner>
109+
</Portal>
91110
</Tooltip>
92111
{/each}
93112
</div>

src/lib/server/stripe.server.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import { FIXER_API_KEY, STRIPE_KEY } from "$env/static/private"
1+
import { STRIPE_KEY } from "$env/static/private"
22
import type { BundleSchema, NewScriptSchema, PriceSchema } from "$lib/client/schemas"
33
import type { Interval, Price, Scripter } from "$lib/types/collection"
44
import type { Database } from "$lib/types/supabase"
55
import type { SupabaseClient } from "@supabase/supabase-js"
66
import Stripe from "stripe"
77

8-
//@ts-ignore
98
export const stripe = new Stripe(STRIPE_KEY, { apiVersion: "2025-08-27.basil", typescript: true })
109

1110
export async function createCustomer(id: string, email: string, discord: string, username: string) {
@@ -353,5 +352,3 @@ export async function createScriptProduct(script: NewScriptSchema, name: string,
353352

354353
await Promise.all(stripePromises)
355354
}
356-
357-
export async function convertCurrency(from: string, to: string, amount: number) {}

0 commit comments

Comments
 (0)