From d8a0fde34cf03d9e7e70b8ca6f73c5ecf7753d8f Mon Sep 17 00:00:00 2001 From: isUnknown Date: Mon, 9 Mar 2026 13:20:28 +0100 Subject: [PATCH] =?UTF-8?q?Upgrade=20Svelte=205.0.0=20=E2=86=92=205.53.7?= =?UTF-8?q?=20+=20fix=20Cursor=20class=20syntax?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- package-lock.json | 103 +++++++++++++++++----------- package.json | 2 +- site/blueprints/pages/portfolio.yml | 2 +- site/blueprints/pages/project.yml | 2 +- src/components/layout/Cursor.svelte | 45 +++++++++--- src/styles/buttons.css | 1 - src/views/Portfolio.svelte | 2 +- 7 files changed, 100 insertions(+), 57 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8c71d45..dfb3898 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,26 +12,13 @@ "@sveltejs/vite-plugin-svelte": "6.0.0", "gsap": "^3.14.2", "navaid": "^1.2.0", - "svelte": "5.0.0", + "svelte": "^5.0.0", "vite": "7.0.4" }, "devDependencies": { "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": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", @@ -458,6 +445,16 @@ "@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": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -808,6 +805,15 @@ "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": { "version": "6.0.0", "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==", "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": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -864,19 +876,10 @@ "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": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz", + "integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==", "license": "Apache-2.0", "engines": { "node": ">= 0.4" @@ -891,6 +894,15 @@ "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": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -917,6 +929,12 @@ "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": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", @@ -965,9 +983,9 @@ "license": "MIT" }, "node_modules/esrap": { - "version": "1.4.9", - "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.9.tgz", - "integrity": "sha512-3OMlcd0a03UGuZpPeUC1HxR3nA23l+HEyCiZw3b3FumJIN9KphoGzDJKMXI1S72jVS1dsenDyQC0kJlO1U9E1g==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.3.tgz", + "integrity": "sha512-8fOS+GIGCQZl/ZIlhl59htOlms6U8NvX6ZYgYHpRU/b6tVSh3uHkOHZikl3D4cMbYM0JlpBe+p/BkZEi8J9XIQ==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -1233,21 +1251,24 @@ } }, "node_modules/svelte": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.0.0.tgz", - "integrity": "sha512-jv2IvTtakG58DqZMo6fY3T6HFmGV4iDQH2lSUyfmCEYaoa+aCNcF+9rERbdDvT4XDF0nQBg6TEoJn0dirED8VQ==", + "version": "5.53.7", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.53.7.tgz", + "integrity": "sha512-uxck1KI7JWtlfP3H6HOWi/94soAl23jsGJkBzN2BAWcQng0+lTrRNhxActFqORgnO9BHVd1hKJhG+ljRuIUWfQ==", "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.3.0", + "@jridgewell/remapping": "^2.3.4", "@jridgewell/sourcemap-codec": "^1.5.0", + "@sveltejs/acorn-typescript": "^1.0.5", "@types/estree": "^1.0.5", + "@types/trusted-types": "^2.0.7", "acorn": "^8.12.1", - "acorn-typescript": "^1.4.13", - "aria-query": "^5.3.1", + "aria-query": "5.3.1", "axobject-query": "^4.1.0", - "esm-env": "^1.0.0", - "esrap": "^1.2.2", - "is-reference": "^3.0.2", + "clsx": "^2.1.1", + "devalue": "^5.6.3", + "esm-env": "^1.2.1", + "esrap": "^2.2.2", + "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", "zimmerframe": "^1.1.2" diff --git a/package.json b/package.json index 5b11c8f..75793d2 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@sveltejs/vite-plugin-svelte": "6.0.0", "gsap": "^3.14.2", "navaid": "^1.2.0", - "svelte": "5.0.0", + "svelte": "^5.0.0", "vite": "7.0.4" }, "devDependencies": { diff --git a/site/blueprints/pages/portfolio.yml b/site/blueprints/pages/portfolio.yml index 6716f2e..81a6d8a 100644 --- a/site/blueprints/pages/portfolio.yml +++ b/site/blueprints/pages/portfolio.yml @@ -40,5 +40,5 @@ tabs: cover: true back: #0E1E43 template: project - info: "{{ page.catchphrase }}" + info: "{{ page.catchPhrase }}" create: project diff --git a/site/blueprints/pages/project.yml b/site/blueprints/pages/project.yml index b359c2a..c6810e2 100644 --- a/site/blueprints/pages/project.yml +++ b/site/blueprints/pages/project.yml @@ -21,7 +21,7 @@ columns: info: type: fields fields: - catchphrase: + catchPhrase: label: Phrase d'accroche type: writer nodes: false diff --git a/src/components/layout/Cursor.svelte b/src/components/layout/Cursor.svelte index 2cc8956..ac57847 100644 --- a/src/components/layout/Cursor.svelte +++ b/src/components/layout/Cursor.svelte @@ -4,6 +4,7 @@ let cursorX = $state(0) let cursorY = $state(0) let onTarget = $state(false) + let onClick = $state(false) let rafId onMount(() => { @@ -19,22 +20,32 @@ const handleMouseOut = () => { onTarget = false } + + const handleMouseDown = () => { + onClick = true + } + + const handleMouseUp = () => { + onClick = false + } window.addEventListener('mousemove', handleMouseMove) window.addEventListener('mouseover', handleMouseOver) window.addEventListener('mouseout', handleMouseOut) + window.addEventListener('mousedown', handleMouseDown) + window.addEventListener('mouseup', handleMouseUp) return () => { window.removeEventListener('mousemove', handleMouseMove) window.removeEventListener('mouseover', handleMouseOver) - window.removeEventListener('mouseout', handleMouseOut) + window.removeEventListener('mousedown', handleMouseDown) + window.removeEventListener('mouseup', handleMouseUp) } })
@@ -59,23 +70,35 @@ left: 0; border-radius: 50%; transform: translate(-50%, -50%); + transition: all 0.2s ease-in-out; } .cursor-dot { - width: 8px; - height: 8px; - background: #04fea0; + width: 12px; + height: 12px; + background: #fff; } .cursor-outline { - width: 40px; - height: 40px; - border: 2px solid #04fea0; - transition: transform 0.2s ease; + width: 45px; + height: 45px; + border: 3px solid #04fea0; } .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) { diff --git a/src/styles/buttons.css b/src/styles/buttons.css index 65ed4e7..08b99cf 100644 --- a/src/styles/buttons.css +++ b/src/styles/buttons.css @@ -10,7 +10,6 @@ padding: 12px 16px; transition: 0.5s ease-out; border: none; - cursor: pointer; font-family: "Danzza Bold"; font-size: var(--font-size-button); diff --git a/src/views/Portfolio.svelte b/src/views/Portfolio.svelte index 8fd974a..a272562 100644 --- a/src/views/Portfolio.svelte +++ b/src/views/Portfolio.svelte @@ -261,7 +261,7 @@ } .portfolio-nav-item:hover button { - transform: scale(1); + transform: scale(1.25); } .portfolio-nav-item.active button {