Upgrade Svelte 5.0.0 → 5.53.7 + fix Cursor class syntax
All checks were successful
Deploy / Deploy to Production (push) Successful in 18s

- Mise à jour de Svelte vers 5.53.7 pour supporter la syntaxe tableau/objet sur l'attribut class
- Cursor.svelte : class={[...]} avec états onTarget et onClick
- blueprints : catchphrase → catchPhrase
- buttons.css : suppression cursor: pointer
- Portfolio.svelte : scale hover nav item

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
isUnknown 2026-03-09 13:20:28 +01:00
parent c41eec0385
commit d8a0fde34c
7 changed files with 100 additions and 57 deletions

103
package-lock.json generated
View file

@ -12,26 +12,13 @@
"@sveltejs/vite-plugin-svelte": "6.0.0", "@sveltejs/vite-plugin-svelte": "6.0.0",
"gsap": "^3.14.2", "gsap": "^3.14.2",
"navaid": "^1.2.0", "navaid": "^1.2.0",
"svelte": "5.0.0", "svelte": "^5.0.0",
"vite": "7.0.4" "vite": "7.0.4"
}, },
"devDependencies": { "devDependencies": {
"fs-extra": "^11.3.3" "fs-extra": "^11.3.3"
} }
}, },
"node_modules/@ampproject/remapping": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
"license": "Apache-2.0",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@esbuild/aix-ppc64": { "node_modules/@esbuild/aix-ppc64": {
"version": "0.25.12", "version": "0.25.12",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
@ -458,6 +445,16 @@
"@jridgewell/trace-mapping": "^0.3.24" "@jridgewell/trace-mapping": "^0.3.24"
} }
}, },
"node_modules/@jridgewell/remapping": {
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
"integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
"license": "MIT",
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.24"
}
},
"node_modules/@jridgewell/resolve-uri": { "node_modules/@jridgewell/resolve-uri": {
"version": "3.1.2", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
@ -808,6 +805,15 @@
"win32" "win32"
] ]
}, },
"node_modules/@sveltejs/acorn-typescript": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.9.tgz",
"integrity": "sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==",
"license": "MIT",
"peerDependencies": {
"acorn": "^8.9.0"
}
},
"node_modules/@sveltejs/vite-plugin-svelte": { "node_modules/@sveltejs/vite-plugin-svelte": {
"version": "6.0.0", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.0.0.tgz", "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.0.0.tgz",
@ -852,10 +858,16 @@
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
"license": "MIT"
},
"node_modules/acorn": { "node_modules/acorn": {
"version": "8.15.0", "version": "8.16.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"license": "MIT", "license": "MIT",
"bin": { "bin": {
"acorn": "bin/acorn" "acorn": "bin/acorn"
@ -864,19 +876,10 @@
"node": ">=0.4.0" "node": ">=0.4.0"
} }
}, },
"node_modules/acorn-typescript": {
"version": "1.4.13",
"resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz",
"integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==",
"license": "MIT",
"peerDependencies": {
"acorn": ">=8.9.0"
}
},
"node_modules/aria-query": { "node_modules/aria-query": {
"version": "5.3.2", "version": "5.3.1",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz",
"integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==",
"license": "Apache-2.0", "license": "Apache-2.0",
"engines": { "engines": {
"node": ">= 0.4" "node": ">= 0.4"
@ -891,6 +894,15 @@
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/clsx": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
"integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
"license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/debug": { "node_modules/debug": {
"version": "4.4.3", "version": "4.4.3",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
@ -917,6 +929,12 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/devalue": {
"version": "5.6.3",
"resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz",
"integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==",
"license": "MIT"
},
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.25.12", "version": "0.25.12",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
@ -965,9 +983,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/esrap": { "node_modules/esrap": {
"version": "1.4.9", "version": "2.2.3",
"resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.9.tgz", "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.3.tgz",
"integrity": "sha512-3OMlcd0a03UGuZpPeUC1HxR3nA23l+HEyCiZw3b3FumJIN9KphoGzDJKMXI1S72jVS1dsenDyQC0kJlO1U9E1g==", "integrity": "sha512-8fOS+GIGCQZl/ZIlhl59htOlms6U8NvX6ZYgYHpRU/b6tVSh3uHkOHZikl3D4cMbYM0JlpBe+p/BkZEi8J9XIQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15" "@jridgewell/sourcemap-codec": "^1.4.15"
@ -1233,21 +1251,24 @@
} }
}, },
"node_modules/svelte": { "node_modules/svelte": {
"version": "5.0.0", "version": "5.53.7",
"resolved": "https://registry.npmjs.org/svelte/-/svelte-5.0.0.tgz", "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.53.7.tgz",
"integrity": "sha512-jv2IvTtakG58DqZMo6fY3T6HFmGV4iDQH2lSUyfmCEYaoa+aCNcF+9rERbdDvT4XDF0nQBg6TEoJn0dirED8VQ==", "integrity": "sha512-uxck1KI7JWtlfP3H6HOWi/94soAl23jsGJkBzN2BAWcQng0+lTrRNhxActFqORgnO9BHVd1hKJhG+ljRuIUWfQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@ampproject/remapping": "^2.3.0", "@jridgewell/remapping": "^2.3.4",
"@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/sourcemap-codec": "^1.5.0",
"@sveltejs/acorn-typescript": "^1.0.5",
"@types/estree": "^1.0.5", "@types/estree": "^1.0.5",
"@types/trusted-types": "^2.0.7",
"acorn": "^8.12.1", "acorn": "^8.12.1",
"acorn-typescript": "^1.4.13", "aria-query": "5.3.1",
"aria-query": "^5.3.1",
"axobject-query": "^4.1.0", "axobject-query": "^4.1.0",
"esm-env": "^1.0.0", "clsx": "^2.1.1",
"esrap": "^1.2.2", "devalue": "^5.6.3",
"is-reference": "^3.0.2", "esm-env": "^1.2.1",
"esrap": "^2.2.2",
"is-reference": "^3.0.3",
"locate-character": "^3.0.0", "locate-character": "^3.0.0",
"magic-string": "^0.30.11", "magic-string": "^0.30.11",
"zimmerframe": "^1.1.2" "zimmerframe": "^1.1.2"

View file

@ -20,7 +20,7 @@
"@sveltejs/vite-plugin-svelte": "6.0.0", "@sveltejs/vite-plugin-svelte": "6.0.0",
"gsap": "^3.14.2", "gsap": "^3.14.2",
"navaid": "^1.2.0", "navaid": "^1.2.0",
"svelte": "5.0.0", "svelte": "^5.0.0",
"vite": "7.0.4" "vite": "7.0.4"
}, },
"devDependencies": { "devDependencies": {

View file

@ -40,5 +40,5 @@ tabs:
cover: true cover: true
back: #0E1E43 back: #0E1E43
template: project template: project
info: "{{ page.catchphrase }}" info: "{{ page.catchPhrase }}"
create: project create: project

View file

@ -21,7 +21,7 @@ columns:
info: info:
type: fields type: fields
fields: fields:
catchphrase: catchPhrase:
label: Phrase d'accroche label: Phrase d'accroche
type: writer type: writer
nodes: false nodes: false

View file

@ -4,6 +4,7 @@
let cursorX = $state(0) let cursorX = $state(0)
let cursorY = $state(0) let cursorY = $state(0)
let onTarget = $state(false) let onTarget = $state(false)
let onClick = $state(false)
let rafId let rafId
onMount(() => { onMount(() => {
@ -19,22 +20,32 @@
const handleMouseOut = () => { const handleMouseOut = () => {
onTarget = false onTarget = false
} }
const handleMouseDown = () => {
onClick = true
}
const handleMouseUp = () => {
onClick = false
}
window.addEventListener('mousemove', handleMouseMove) window.addEventListener('mousemove', handleMouseMove)
window.addEventListener('mouseover', handleMouseOver) window.addEventListener('mouseover', handleMouseOver)
window.addEventListener('mouseout', handleMouseOut) window.addEventListener('mouseout', handleMouseOut)
window.addEventListener('mousedown', handleMouseDown)
window.addEventListener('mouseup', handleMouseUp)
return () => { return () => {
window.removeEventListener('mousemove', handleMouseMove) window.removeEventListener('mousemove', handleMouseMove)
window.removeEventListener('mouseover', handleMouseOver) window.removeEventListener('mouseover', handleMouseOver)
window.removeEventListener('mouseout', handleMouseOut) window.removeEventListener('mousedown', handleMouseDown)
window.removeEventListener('mouseup', handleMouseUp)
} }
}) })
</script> </script>
<div <div
class="cursor-wrapper" class={["cursor-wrapper", onTarget && "upon-target", onClick && "is-clicking"]}
class:upon-target={onTarget}
style="transform: translate({cursorX}px, {cursorY}px)" style="transform: translate({cursorX}px, {cursorY}px)"
> >
<div class="cursor-dot"></div> <div class="cursor-dot"></div>
@ -59,23 +70,35 @@
left: 0; left: 0;
border-radius: 50%; border-radius: 50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
transition: all 0.2s ease-in-out;
} }
.cursor-dot { .cursor-dot {
width: 8px; width: 12px;
height: 8px; height: 12px;
background: #04fea0; background: #fff;
} }
.cursor-outline { .cursor-outline {
width: 40px; width: 45px;
height: 40px; height: 45px;
border: 2px solid #04fea0; border: 3px solid #04fea0;
transition: transform 0.2s ease;
} }
.upon-target .cursor-outline { .upon-target .cursor-outline {
transform: translate(-50%, -50%) scale(0.5); width: 25px;
height: 25px;
border-width: 2px;
}
.is-clicking .cursor-dot {
width: 33px;
height: 33px;
}
.upon-target.is-clicking .cursor-dot {
width: 21px;
height: 21px;
} }
@media (max-width: 768px) { @media (max-width: 768px) {

View file

@ -10,7 +10,6 @@
padding: 12px 16px; padding: 12px 16px;
transition: 0.5s ease-out; transition: 0.5s ease-out;
border: none; border: none;
cursor: pointer;
font-family: "Danzza Bold"; font-family: "Danzza Bold";
font-size: var(--font-size-button); font-size: var(--font-size-button);

View file

@ -261,7 +261,7 @@
} }
.portfolio-nav-item:hover button { .portfolio-nav-item:hover button {
transform: scale(1); transform: scale(1.25);
} }
.portfolio-nav-item.active button { .portfolio-nav-item.active button {