Changing loading indicator to do some animation on navigate start.

This commit is contained in:
Bradley Shellnut 2025-08-12 13:43:58 -07:00
parent a5e48e4d63
commit 5752c125ee
4 changed files with 241 additions and 181 deletions

View file

@ -1,11 +1,11 @@
{
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
"$schema": "https://biomejs.dev/schemas/2.0.0/schema.json",
"vcs": {
"enabled": false,
"clientKind": "git",
"useIgnoreFile": false
},
"files": { "ignoreUnknown": false, "ignore": [] },
"files": { "ignoreUnknown": false, "includes": ["**"] },
"formatter": {
"enabled": true,
"formatWithErrors": false,
@ -14,22 +14,40 @@
"lineEnding": "lf",
"lineWidth": 150,
"attributePosition": "auto",
"ignore": [
"**/.DS_Store",
"**/node_modules",
"./build",
"./.svelte-kit",
"./package",
"**/.env",
"**/.env.*",
"**/pnpm-lock.yaml",
"**/package-lock.json",
"**/yarn.lock",
"**/paraglide/**"
"includes": [
"**",
"!**/.DS_Store",
"!**/node_modules",
"!build",
"!.svelte-kit",
"!package",
"!**/.env",
"!**/.env.*",
"!**/pnpm-lock.yaml",
"!**/package-lock.json",
"!**/yarn.lock",
"!**/paraglide/**"
]
},
"organizeImports": { "enabled": true },
"linter": { "enabled": true, "rules": { "recommended": true } },
"assist": { "actions": { "source": { "organizeImports": "on" } } },
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"style": {
"noParameterAssign": "error",
"useAsConstAssertion": "error",
"useDefaultParameterLast": "error",
"useEnumInitializers": "error",
"useSelfClosingElements": "error",
"useSingleVarDeclarator": "error",
"noUnusedTemplateLiteral": "error",
"useNumberNamespace": "error",
"noInferrableTypes": "error",
"noUselessElse": "error"
}
}
},
"javascript": {
"formatter": {
"jsxQuoteStyle": "single",
@ -51,7 +69,7 @@
},
"overrides": [
{
"include": ["*.svelte"],
"includes": ["**/*.svelte"],
"linter": {
"rules": {
"style": {

View file

@ -17,11 +17,11 @@
"test:unit": "vitest"
},
"devDependencies": {
"@biomejs/biome": "^1.9.4",
"@biomejs/biome": "^2.1.4",
"@internationalized/date": "^3.8.2",
"@playwright/test": "^1.54.2",
"@sveltejs/enhanced-img": "^0.5.1",
"@sveltejs/kit": "^2.27.3",
"@sveltejs/kit": "^2.28.0",
"@sveltejs/vite-plugin-svelte": "^5.1.1",
"@unpic/svelte": "^1.0.0",
"@zerodevx/svelte-img": "^2.1.2",
@ -34,7 +34,7 @@
"postcss-preset-env": "^10.2.4",
"satori": "^0.12.2",
"satori-html": "^0.3.2",
"svelte": "^5.38.0",
"svelte": "^5.38.1",
"svelte-check": "^4.3.1",
"svelte-meta-tags": "^4.4.0",
"svelte-preprocess": "^6.0.3",
@ -43,7 +43,7 @@
"typescript": "^5.9.2",
"vanilla-lazyload": "^19.1.3",
"vite": "^6.3.5",
"vite-imagetools": "^7.1.0",
"vite-imagetools": "^7.1.1",
"vitest": "^3.2.4"
},
"dependencies": {

View file

@ -13,13 +13,13 @@ importers:
version: 2.6.2
'@sveltejs/adapter-node':
specifier: ^5.2.14
version: 5.2.14(@sveltejs/kit@2.27.3(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0)))
version: 5.2.14(@sveltejs/kit@2.28.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))
'@vercel/og':
specifier: ^0.6.8
version: 0.6.8
bits-ui:
specifier: 2.9.2
version: 2.9.2(@internationalized/date@3.8.2)(svelte@5.38.0)
version: 2.9.2(@internationalized/date@3.8.2)(svelte@5.38.1)
flexsearch:
specifier: ^0.8.205
version: 0.8.205
@ -28,7 +28,7 @@ importers:
version: 5.7.0
lucide-svelte:
specifier: ^0.539.0
version: 0.539.0(svelte@5.38.0)
version: 0.539.0(svelte@5.38.1)
scrape-it:
specifier: ^6.1.11
version: 6.1.11
@ -37,11 +37,11 @@ importers:
version: 0.34.3
svelte-local-storage-store:
specifier: ^0.6.4
version: 0.6.4(svelte@5.38.0)
version: 0.6.4(svelte@5.38.1)
devDependencies:
'@biomejs/biome':
specifier: ^1.9.4
version: 1.9.4
specifier: ^2.1.4
version: 2.1.4
'@internationalized/date':
specifier: ^3.8.2
version: 3.8.2
@ -50,19 +50,19 @@ importers:
version: 1.54.2
'@sveltejs/enhanced-img':
specifier: ^0.5.1
version: 0.5.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0)))(rollup@4.34.8)(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))
version: 0.5.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(rollup@4.34.8)(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))
'@sveltejs/kit':
specifier: ^2.27.3
version: 2.27.3(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))
specifier: ^2.28.0
version: 2.28.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))
'@sveltejs/vite-plugin-svelte':
specifier: ^5.1.1
version: 5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))
version: 5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))
'@unpic/svelte':
specifier: ^1.0.0
version: 1.0.0(svelte@5.38.0)
version: 1.0.0(svelte@5.38.1)
'@zerodevx/svelte-img':
specifier: ^2.1.2
version: 2.1.2(rollup@4.34.8)(svelte@5.38.0)
version: 2.1.2(rollup@4.34.8)(svelte@5.38.1)
autoprefixer:
specifier: ^10.4.21
version: 10.4.21(postcss@8.5.6)
@ -91,17 +91,17 @@ importers:
specifier: ^0.3.2
version: 0.3.2
svelte:
specifier: ^5.38.0
version: 5.38.0
specifier: ^5.38.1
version: 5.38.1
svelte-check:
specifier: ^4.3.1
version: 4.3.1(picomatch@4.0.2)(svelte@5.38.0)(typescript@5.9.2)
version: 4.3.1(picomatch@4.0.2)(svelte@5.38.1)(typescript@5.9.2)
svelte-meta-tags:
specifier: ^4.4.0
version: 4.4.0(svelte@5.38.0)
version: 4.4.0(svelte@5.38.1)
svelte-preprocess:
specifier: ^6.0.3
version: 6.0.3(postcss-load-config@6.0.1(postcss@8.5.6)(yaml@2.7.0))(postcss@8.5.6)(svelte@5.38.0)(typescript@5.9.2)
version: 6.0.3(postcss-load-config@6.0.1(postcss@8.5.6)(yaml@2.7.0))(postcss@8.5.6)(svelte@5.38.1)(typescript@5.9.2)
svelte-sequential-preprocessor:
specifier: ^2.0.2
version: 2.0.2
@ -118,8 +118,8 @@ importers:
specifier: ^6.3.5
version: 6.3.5(yaml@2.7.0)
vite-imagetools:
specifier: ^7.1.0
version: 7.1.0(rollup@4.34.8)
specifier: ^7.1.1
version: 7.1.1(rollup@4.34.8)
vitest:
specifier: ^3.2.4
version: 3.2.4(yaml@2.7.0)
@ -130,55 +130,55 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
'@biomejs/biome@1.9.4':
resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==}
'@biomejs/biome@2.1.4':
resolution: {integrity: sha512-QWlrqyxsU0FCebuMnkvBIkxvPqH89afiJzjMl+z67ybutse590jgeaFdDurE9XYtzpjRGTI1tlUZPGWmbKsElA==}
engines: {node: '>=14.21.3'}
hasBin: true
'@biomejs/cli-darwin-arm64@1.9.4':
resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==}
'@biomejs/cli-darwin-arm64@2.1.4':
resolution: {integrity: sha512-sCrNENE74I9MV090Wq/9Dg7EhPudx3+5OiSoQOkIe3DLPzFARuL1dOwCWhKCpA3I5RHmbrsbNSRfZwCabwd8Qg==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [darwin]
'@biomejs/cli-darwin-x64@1.9.4':
resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==}
'@biomejs/cli-darwin-x64@2.1.4':
resolution: {integrity: sha512-gOEICJbTCy6iruBywBDcG4X5rHMbqCPs3clh3UQ+hRKlgvJTk4NHWQAyHOXvaLe+AxD1/TNX1jbZeffBJzcrOw==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [darwin]
'@biomejs/cli-linux-arm64-musl@1.9.4':
resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==}
'@biomejs/cli-linux-arm64-musl@2.1.4':
resolution: {integrity: sha512-nYr7H0CyAJPaLupFE2cH16KZmRC5Z9PEftiA2vWxk+CsFkPZQ6dBRdcC6RuS+zJlPc/JOd8xw3uCCt9Pv41WvQ==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
'@biomejs/cli-linux-arm64@1.9.4':
resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==}
'@biomejs/cli-linux-arm64@2.1.4':
resolution: {integrity: sha512-juhEkdkKR4nbUi5k/KRp1ocGPNWLgFRD4NrHZSveYrD6i98pyvuzmS9yFYgOZa5JhaVqo0HPnci0+YuzSwT2fw==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
'@biomejs/cli-linux-x64-musl@1.9.4':
resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==}
'@biomejs/cli-linux-x64-musl@2.1.4':
resolution: {integrity: sha512-lvwvb2SQQHctHUKvBKptR6PLFCM7JfRjpCCrDaTmvB7EeZ5/dQJPhTYBf36BE/B4CRWR2ZiBLRYhK7hhXBCZAg==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
'@biomejs/cli-linux-x64@1.9.4':
resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==}
'@biomejs/cli-linux-x64@2.1.4':
resolution: {integrity: sha512-Eoy9ycbhpJVYuR+LskV9s3uyaIkp89+qqgqhGQsWnp/I02Uqg2fXFblHJOpGZR8AxdB9ADy87oFVxn9MpFKUrw==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
'@biomejs/cli-win32-arm64@1.9.4':
resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==}
'@biomejs/cli-win32-arm64@2.1.4':
resolution: {integrity: sha512-3WRYte7orvyi6TRfIZkDN9Jzoogbv+gSvR+b9VOXUg1We1XrjBg6WljADeVEaKTvOcpVdH0a90TwyOQ6ue4fGw==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [win32]
'@biomejs/cli-win32-x64@1.9.4':
resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==}
'@biomejs/cli-win32-x64@2.1.4':
resolution: {integrity: sha512-tBc+W7anBPSFXGAoQW+f/+svkpt8/uXfRwDzN1DvnatkRMt16KIYpEi/iw8u9GahJlFv98kgHcIrSsZHZTR0sw==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [win32]
@ -839,10 +839,16 @@ packages:
'@ioredis/commands@1.3.0':
resolution: {integrity: sha512-M/T6Zewn7sDaBQEqIZ8Rb+i9y8qfGmq+5SDFSf9sA2lUZTmdDLVdOiQaeDp+Q4wElZ9HG1GAX5KhDaidp6LQsQ==}
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
'@jridgewell/gen-mapping@0.3.8':
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
engines: {node: '>=6.0.0'}
'@jridgewell/remapping@2.3.5':
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
@ -857,6 +863,9 @@ packages:
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
'@jridgewell/trace-mapping@0.3.30':
resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==}
'@playwright/test@1.54.2':
resolution: {integrity: sha512-A+znathYxPf+72riFd1r1ovOLqsIIB0jKIoPjyK2kqEIe30/6jF6BC7QNluHuwUmsD2tv1XZVugN8GqfTMOxsA==}
engines: {node: '>=18'}
@ -1201,8 +1210,8 @@ packages:
svelte: ^5.0.0
vite: '>= 5.0.0'
'@sveltejs/kit@2.27.3':
resolution: {integrity: sha512-jiG3NGZ8RRpi+ncjVnX+oR7uWEgzy//3YLGcTU5mHtjGraeGyNDr7GJFHlk7z0vi8bMXpXIUkEXj6p70FJmHvw==}
'@sveltejs/kit@2.28.0':
resolution: {integrity: sha512-qrhygwHV5r6JrvCw4gwNqqxYGDi5YbajocxfKgFXmSFpFo8wQobUvsM0OfakN4h+0LEmXtqHRrC6BcyAkOwyoQ==}
engines: {node: '>=18.13'}
hasBin: true
peerDependencies:
@ -2277,8 +2286,8 @@ packages:
resolution: {integrity: sha512-eeEgGc2DtiUil5ANdtd8vPwt9AgaMdnuUFnPft9F5oMvU/FHu5IHFic+p1dR/UOB7XU2mX2yHW+NcTch4DCh5Q==}
engines: {node: '>=16'}
svelte@5.38.0:
resolution: {integrity: sha512-cWF1Oc2IM/QbktdK89u5lt9MdKxRtQnRKnf2tq6KOhYuhLOd2hbMuTiJ+vWMzAeMDe81AzbCgLd4GVtOJ4fDRg==}
svelte@5.38.1:
resolution: {integrity: sha512-fO6CLDfJYWHgfo6lQwkQU2vhCiHc2MBl6s3vEhK+sSZru17YL4R5s1v14ndRpqKAIkq8nCz6MTk1yZbESZWeyQ==}
engines: {node: '>=18'}
tabbable@6.2.0:
@ -2360,8 +2369,8 @@ packages:
resolution: {integrity: sha512-C4ZYhgj2vAj43/TpZ06XlDNP0p/7LIeYbgUYr+xG44nM++4HGX6YZBKAYpiBNgiCFUTJ6eXkRppWBrfPMevgmg==}
engines: {node: '>=12.0.0'}
vite-imagetools@7.1.0:
resolution: {integrity: sha512-Mqh1uUY2DEMuBOogFz5Rd7cAs70VP6wsdQh2IShrJ+qGk5f7yQa4pN8w0YMLlGIKYW1JfM8oXrznUwVkhG+qxg==}
vite-imagetools@7.1.1:
resolution: {integrity: sha512-6Dz0ZD2u1u59dw0ryid4beaDcCNNiTfLXUg6XLxx9n7Qm4BgAAm8TozYUnIH0aT4FDAADZqHsh9ZtISzAs4eKA==}
engines: {node: '>=18.0.0'}
vite-node@3.2.4:
@ -2476,39 +2485,39 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.8
'@jridgewell/trace-mapping': 0.3.25
'@biomejs/biome@1.9.4':
'@biomejs/biome@2.1.4':
optionalDependencies:
'@biomejs/cli-darwin-arm64': 1.9.4
'@biomejs/cli-darwin-x64': 1.9.4
'@biomejs/cli-linux-arm64': 1.9.4
'@biomejs/cli-linux-arm64-musl': 1.9.4
'@biomejs/cli-linux-x64': 1.9.4
'@biomejs/cli-linux-x64-musl': 1.9.4
'@biomejs/cli-win32-arm64': 1.9.4
'@biomejs/cli-win32-x64': 1.9.4
'@biomejs/cli-darwin-arm64': 2.1.4
'@biomejs/cli-darwin-x64': 2.1.4
'@biomejs/cli-linux-arm64': 2.1.4
'@biomejs/cli-linux-arm64-musl': 2.1.4
'@biomejs/cli-linux-x64': 2.1.4
'@biomejs/cli-linux-x64-musl': 2.1.4
'@biomejs/cli-win32-arm64': 2.1.4
'@biomejs/cli-win32-x64': 2.1.4
'@biomejs/cli-darwin-arm64@1.9.4':
'@biomejs/cli-darwin-arm64@2.1.4':
optional: true
'@biomejs/cli-darwin-x64@1.9.4':
'@biomejs/cli-darwin-x64@2.1.4':
optional: true
'@biomejs/cli-linux-arm64-musl@1.9.4':
'@biomejs/cli-linux-arm64-musl@2.1.4':
optional: true
'@biomejs/cli-linux-arm64@1.9.4':
'@biomejs/cli-linux-arm64@2.1.4':
optional: true
'@biomejs/cli-linux-x64-musl@1.9.4':
'@biomejs/cli-linux-x64-musl@2.1.4':
optional: true
'@biomejs/cli-linux-x64@1.9.4':
'@biomejs/cli-linux-x64@2.1.4':
optional: true
'@biomejs/cli-win32-arm64@1.9.4':
'@biomejs/cli-win32-arm64@2.1.4':
optional: true
'@biomejs/cli-win32-x64@1.9.4':
'@biomejs/cli-win32-x64@2.1.4':
optional: true
'@csstools/cascade-layer-name-parser@2.0.5(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
@ -3035,12 +3044,22 @@ snapshots:
'@ioredis/commands@1.3.0': {}
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
'@jridgewell/trace-mapping': 0.3.30
'@jridgewell/gen-mapping@0.3.8':
dependencies:
'@jridgewell/set-array': 1.2.1
'@jridgewell/sourcemap-codec': 1.5.0
'@jridgewell/trace-mapping': 0.3.25
'@jridgewell/remapping@2.3.5':
dependencies:
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.30
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/set-array@1.2.1': {}
@ -3052,6 +3071,11 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
'@jridgewell/trace-mapping@0.3.30':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
'@playwright/test@1.54.2':
dependencies:
playwright: 1.54.2
@ -3279,32 +3303,32 @@ snapshots:
dependencies:
acorn: 8.15.0
'@sveltejs/adapter-node@5.2.14(@sveltejs/kit@2.27.3(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0)))':
'@sveltejs/adapter-node@5.2.14(@sveltejs/kit@2.28.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))':
dependencies:
'@rollup/plugin-commonjs': 28.0.2(rollup@4.34.8)
'@rollup/plugin-json': 6.1.0(rollup@4.34.8)
'@rollup/plugin-node-resolve': 16.0.0(rollup@4.34.8)
'@sveltejs/kit': 2.27.3(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))
'@sveltejs/kit': 2.28.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))
rollup: 4.34.8
'@sveltejs/enhanced-img@0.5.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0)))(rollup@4.34.8)(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))':
'@sveltejs/enhanced-img@0.5.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(rollup@4.34.8)(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))':
dependencies:
'@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))
'@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))
magic-string: 0.30.17
sharp: 0.34.3
svelte: 5.38.0
svelte-parse-markup: 0.1.5(svelte@5.38.0)
svelte: 5.38.1
svelte-parse-markup: 0.1.5(svelte@5.38.1)
vite: 6.3.5(yaml@2.7.0)
vite-imagetools: 7.1.0(rollup@4.34.8)
vite-imagetools: 7.1.1(rollup@4.34.8)
zimmerframe: 1.1.2
transitivePeerDependencies:
- rollup
'@sveltejs/kit@2.27.3(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))':
'@sveltejs/kit@2.28.0(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))':
dependencies:
'@standard-schema/spec': 1.0.0
'@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0)
'@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))
'@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))
'@types/cookie': 0.6.0
acorn: 8.15.0
cookie: 0.6.0
@ -3316,26 +3340,26 @@ snapshots:
sade: 1.8.1
set-cookie-parser: 2.7.1
sirv: 3.0.1
svelte: 5.38.0
svelte: 5.38.1
vite: 6.3.5(yaml@2.7.0)
'@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))':
'@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))':
dependencies:
'@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))
'@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))
debug: 4.4.1
svelte: 5.38.0
svelte: 5.38.1
vite: 6.3.5(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
'@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))':
'@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))':
dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.0)(vite@6.3.5(yaml@2.7.0))
'@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0)))(svelte@5.38.1)(vite@6.3.5(yaml@2.7.0))
debug: 4.4.1
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.17
svelte: 5.38.0
svelte: 5.38.1
vite: 6.3.5(yaml@2.7.0)
vitefu: 1.1.1(vite@6.3.5(yaml@2.7.0))
transitivePeerDependencies:
@ -3363,11 +3387,11 @@ snapshots:
dependencies:
unpic: 4.1.2
'@unpic/svelte@1.0.0(svelte@5.38.0)':
'@unpic/svelte@1.0.0(svelte@5.38.1)':
dependencies:
'@unpic/core': 1.0.1
style-object-to-css-string: 1.1.3
svelte: 5.38.0
svelte: 5.38.1
'@vercel/og@0.6.8':
dependencies:
@ -3417,9 +3441,9 @@ snapshots:
loupe: 3.2.0
tinyrainbow: 2.0.0
'@zerodevx/svelte-img@2.1.2(rollup@4.34.8)(svelte@5.38.0)':
'@zerodevx/svelte-img@2.1.2(rollup@4.34.8)(svelte@5.38.1)':
dependencies:
svelte: 5.38.0
svelte: 5.38.1
vite-imagetools: 6.2.9(rollup@4.34.8)
transitivePeerDependencies:
- rollup
@ -3467,15 +3491,15 @@ snapshots:
base64-js@0.0.8: {}
bits-ui@2.9.2(@internationalized/date@3.8.2)(svelte@5.38.0):
bits-ui@2.9.2(@internationalized/date@3.8.2)(svelte@5.38.1):
dependencies:
'@floating-ui/core': 1.7.3
'@floating-ui/dom': 1.7.3
'@internationalized/date': 3.8.2
esm-env: 1.2.2
runed: 0.29.2(svelte@5.38.0)
svelte: 5.38.0
svelte-toolbelt: 0.9.3(svelte@5.38.0)
runed: 0.29.2(svelte@5.38.1)
svelte: 5.38.1
svelte-toolbelt: 0.9.3(svelte@5.38.1)
tabbable: 6.2.0
boolbase@1.0.0: {}
@ -3915,9 +3939,9 @@ snapshots:
loupe@3.2.0: {}
lucide-svelte@0.539.0(svelte@5.38.0):
lucide-svelte@0.539.0(svelte@5.38.1):
dependencies:
svelte: 5.38.0
svelte: 5.38.1
magic-string@0.30.17:
dependencies:
@ -4316,10 +4340,10 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.40.2
fsevents: 2.3.3
runed@0.29.2(svelte@5.38.0):
runed@0.29.2(svelte@5.38.1):
dependencies:
esm-env: 1.2.2
svelte: 5.38.0
svelte: 5.38.1
sade@1.8.1:
dependencies:
@ -4461,34 +4485,34 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
svelte-check@4.3.1(picomatch@4.0.2)(svelte@5.38.0)(typescript@5.9.2):
svelte-check@4.3.1(picomatch@4.0.2)(svelte@5.38.1)(typescript@5.9.2):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
chokidar: 4.0.3
fdir: 6.4.4(picomatch@4.0.2)
picocolors: 1.1.1
sade: 1.8.1
svelte: 5.38.0
svelte: 5.38.1
typescript: 5.9.2
transitivePeerDependencies:
- picomatch
svelte-local-storage-store@0.6.4(svelte@5.38.0):
svelte-local-storage-store@0.6.4(svelte@5.38.1):
dependencies:
svelte: 5.38.0
svelte: 5.38.1
svelte-meta-tags@4.4.0(svelte@5.38.0):
svelte-meta-tags@4.4.0(svelte@5.38.1):
dependencies:
schema-dts: 1.1.5
svelte: 5.38.0
svelte: 5.38.1
svelte-parse-markup@0.1.5(svelte@5.38.0):
svelte-parse-markup@0.1.5(svelte@5.38.1):
dependencies:
svelte: 5.38.0
svelte: 5.38.1
svelte-preprocess@6.0.3(postcss-load-config@6.0.1(postcss@8.5.6)(yaml@2.7.0))(postcss@8.5.6)(svelte@5.38.0)(typescript@5.9.2):
svelte-preprocess@6.0.3(postcss-load-config@6.0.1(postcss@8.5.6)(yaml@2.7.0))(postcss@8.5.6)(svelte@5.38.1)(typescript@5.9.2):
dependencies:
svelte: 5.38.0
svelte: 5.38.1
optionalDependencies:
postcss: 8.5.6
postcss-load-config: 6.0.1(postcss@8.5.6)(yaml@2.7.0)
@ -4499,12 +4523,12 @@ snapshots:
svelte: 4.2.20
tslib: 2.7.0
svelte-toolbelt@0.9.3(svelte@5.38.0):
svelte-toolbelt@0.9.3(svelte@5.38.1):
dependencies:
clsx: 2.1.1
runed: 0.29.2(svelte@5.38.0)
runed: 0.29.2(svelte@5.38.1)
style-to-object: 1.0.9
svelte: 5.38.0
svelte: 5.38.1
svelte@4.2.20:
dependencies:
@ -4523,9 +4547,9 @@ snapshots:
magic-string: 0.30.17
periscopic: 3.1.0
svelte@5.38.0:
svelte@5.38.1:
dependencies:
'@ampproject/remapping': 2.3.0
'@jridgewell/remapping': 2.3.5
'@jridgewell/sourcemap-codec': 1.5.0
'@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1)
'@types/estree': 1.0.7
@ -4610,7 +4634,7 @@ snapshots:
transitivePeerDependencies:
- rollup
vite-imagetools@7.1.0(rollup@4.34.8):
vite-imagetools@7.1.1(rollup@4.34.8):
dependencies:
'@rollup/pluginutils': 5.1.4(rollup@4.34.8)
imagetools-core: 7.1.0

View file

@ -1,5 +1,5 @@
<script lang="ts">
import { onNavigate } from "$app/navigation";
import { onNavigate, beforeNavigate } from "$app/navigation";
let visible = $state(false);
let progress = $state(0);
@ -9,22 +9,40 @@
);
const increment = 1;
let interval: number | null = null;
onNavigate((navigation) => {
const typical_load_time = average_load || 200; //ms
const frequency = typical_load_time / 100;
let start = performance.now();
// Start the progress bar
beforeNavigate(() => {
// Start the progress bar immediately when navigation begins
visible = true;
progress = 0;
const interval = setInterval(() => {
// Increment the progress bar
// Clear any existing interval
if (interval) {
clearInterval(interval);
}
const typical_load_time = average_load || 200; // ms
const frequency = typical_load_time / 100;
interval = setInterval(() => {
// Increment the progress bar but cap at 20% during beforeNavigate
if (progress < 20) {
progress += increment;
}
}, frequency);
});
onNavigate((navigation) => {
console.log("Navigating to", navigation?.to);
let start = performance.now();
// Resolve the promise when the page is done loading
navigation?.complete.then(() => {
progress = 100; // Fill out the progress bar
if (interval) {
clearInterval(interval);
interval = null;
}
// after 100 ms hide the progress bar
setTimeout(() => {
visible = false;