build: scaffold SvelteKit alongside the Next.js app

Add svelte.config.js (adapter-static, BASE_PATH-driven base), vite.config.js
(Tailwind v4 Vite plugin ahead of sveltekit), the src/ shell, and static/
holding a copy of champions.json plus .nojekyll.

Declares "type": "module" so Vite can load the .js config files; Next.js was
only unaffected because all its configs use .mjs. jsconfig keeps the @/* alias
so pnpm next:build stays runnable for side-by-side comparison during the port.

Next.js scripts move to next:* and both toolchains build from this commit.
This commit is contained in:
tiennm99 committed 2026-07-25 11:00:14 +07:00
1 parent d0c75e84b1
commit e2ae34a8ab
13 files changed
+4260 -7

No files matched your search

+3
View File
@@ -22,6 +22,9 @@ chrome-dev-tools
/.next/
/out/
# sveltekit
/.svelte-kit/
# production
/build
+6
View File
@@ -1,6 +1,12 @@
{
"extends": "./.svelte-kit/tsconfig.json",
"compilerOptions": {
"allowJs": true,
"checkJs": false,
"module": "esnext",
"moduleResolution": "bundler",
"paths": {
"$app/types": ["./.svelte-kit/types/index.d.ts"],
"@/*": ["./*"]
}
}
+13 -4
View File
@@ -2,14 +2,17 @@
"name": "loldle",
"version": "0.1.0",
"private": true,
"type": "module",
"packageManager": "[email protected]",
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"lint": "eslint",
"test": "vitest run",
"test:watch": "vitest"
"test:watch": "vitest",
"next:dev": "next dev",
"next:build": "next build"
},
"dependencies": {
"next": "16.2.10",
@@ -17,10 +20,16 @@
"react-dom": "19.2.7"
},
"devDependencies": {
"@sveltejs/adapter-static": "^3.0.10",
"@sveltejs/kit": "^2.70.1",
"@sveltejs/vite-plugin-svelte": "^7.2.0",
"@tailwindcss/postcss": "^4.3.3",
"@tailwindcss/vite": "^4.3.3",
"eslint": "^9",
"eslint-config-next": "16.2.10",
"svelte": "^5.56.7",
"tailwindcss": "^4.3.3",
"vite": "^8.1.5",
"vitest": "^4.1.10"
}
}
+257 -3
View File
@@ -23,18 +23,36 @@ importers:
specifier: 19.2.7
version: 19.2.7([email protected])
devDependencies:
'@sveltejs/adapter-static':
specifier: ^3.0.10
version: 3.0.10(@sveltejs/[email protected](@sveltejs/[email protected]([email protected](@typescript-eslint/[email protected]))([email protected]([email protected])))([email protected](@typescript-eslint/[email protected]))([email protected])([email protected]([email protected])))
'@sveltejs/kit':
specifier: ^2.70.1
version: 2.70.1(@sveltejs/[email protected]([email protected](@typescript-eslint/[email protected]))([email protected]([email protected])))([email protected](@typescript-eslint/[email protected]))([email protected])([email protected]([email protected]))
'@sveltejs/vite-plugin-svelte':
specifier: ^7.2.0
version: 7.2.0([email protected](@typescript-eslint/[email protected]))([email protected]([email protected]))
'@tailwindcss/postcss':
specifier: ^4.3.3
version: 4.3.3
'@tailwindcss/vite':
specifier: ^4.3.3
version: 4.3.3([email protected]([email protected]))
eslint:
specifier: ^9
version: 9.39.5([email protected])
eslint-config-next:
specifier: 16.2.10
version: 16.2.10(@typescript-eslint/[email protected]([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])
svelte:
specifier: ^5.56.7
version: 5.56.7(@typescript-eslint/[email protected])
tailwindcss:
specifier: ^4.3.3
version: 4.3.3
vite:
specifier: ^8.1.5
version: 8.1.5([email protected])
vitest:
specifier: ^4.1.10
version: 4.1.10([email protected]([email protected]))
@@ -463,6 +481,9 @@ packages:
'@oxc-project/[email protected]':
resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==}
'@polka/[email protected]':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
'@rolldown/[email protected]':
resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -567,6 +588,39 @@ packages:
'@standard-schema/[email protected]':
resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
'@sveltejs/[email protected]':
resolution: {integrity: sha512-LFuZUkjJ9iF7JZye/aG5XM0SFcQ5VyL0oVX4WJ9dc0Va3R3s0OauX1BESVCb+YN/ol8TAfqGDDAQsTG627Y5kw==}
peerDependencies:
acorn: ^8.9.0
'@sveltejs/[email protected]':
resolution: {integrity: sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==}
peerDependencies:
'@sveltejs/kit': ^2.0.0
'@sveltejs/[email protected]':
resolution: {integrity: sha512-nY9SPHGOZro3doud9vZXDBwl9tCZIouuJztjgSHs6PAIrv9M/z5O7eOhPV5xU7CgVHA976Jwu3BA1hIFvXztkA==}
engines: {node: '>=18.13'}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.0.0
'@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0
svelte: ^4.0.0 || ^5.0.0-next.0
typescript: ^5.3.3 || ^6.0.0
vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0
peerDependenciesMeta:
'@opentelemetry/api':
optional: true
typescript:
optional: true
'@sveltejs/[email protected]':
resolution: {integrity: sha512-1SpkuMSRLfugrVX+IrKfE1RUegzo8AQzKQ6qQPfVzbcWi5IhuTPaKb5ZrLpucleFznkc4/RTeSPoRnGWFxX+EQ==}
engines: {node: ^20.19 || ^22.12 || >=24}
peerDependencies:
svelte: ^5.46.4
vite: ^8.0.0-beta.7 || ^8.0.0
'@swc/[email protected]':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
@@ -662,6 +716,11 @@ packages:
'@tailwindcss/[email protected]':
resolution: {integrity: sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg==}
'@tailwindcss/[email protected]':
resolution: {integrity: sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==}
peerDependencies:
vite: ^5.2.0 || ^6 || ^7 || ^8
'@tybys/[email protected]':
resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==}
@@ -671,6 +730,9 @@ packages:
'@types/[email protected]':
resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
'@types/[email protected]':
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
'@types/[email protected]':
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
@@ -683,6 +745,9 @@ packages:
'@types/[email protected]':
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
'@types/[email protected]':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
'@typescript-eslint/[email protected]':
resolution: {integrity: sha512-PegsU+XfyJJNjd4+u/k6f9yTyp0lEXXiPopUNobZcIAUJFGICFLN+sP0Rb3JehVmiij1Ph0dFGYqODoRo/2+6A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -911,6 +976,10 @@ packages:
[email protected]:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
[email protected]:
resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==}
engines: {node: '>= 0.4'}
[email protected]:
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
engines: {node: '>= 0.4'}
@@ -1028,6 +1097,10 @@ packages:
[email protected]:
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
[email protected]:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
[email protected]:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
@@ -1041,6 +1114,10 @@ packages:
[email protected]:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
[email protected]:
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
engines: {node: '>= 0.6'}
[email protected]:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
@@ -1080,6 +1157,10 @@ packages:
[email protected]:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
[email protected]:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
[email protected]:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
@@ -1092,6 +1173,9 @@ packages:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
[email protected]:
resolution: {integrity: sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==}
[email protected]:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
@@ -1253,6 +1337,9 @@ packages:
jiti:
optional: true
[email protected]:
resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
[email protected]:
resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1261,6 +1348,14 @@ packages:
resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
engines: {node: '>=0.10'}
[email protected]:
resolution: {integrity: sha512-GQ/7RN8uOtEfNpzZzBMTzW9JBcX42oaSVtPzdF+6cEL8pqIL094iUpr9jzYGn4O4P/1S60dJ6izyT8F4LYARng==}
peerDependencies:
'@typescript-eslint/types': ^8.2.0
peerDependenciesMeta:
'@typescript-eslint/types':
optional: true
[email protected]:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
@@ -1513,6 +1608,9 @@ packages:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
[email protected]:
resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
[email protected]:
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
engines: {node: '>= 0.4'}
@@ -1600,6 +1698,10 @@ packages:
[email protected]:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
[email protected]:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
[email protected]:
resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
@@ -1685,6 +1787,9 @@ packages:
resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
engines: {node: '>= 12.0.0'}
[email protected]:
resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
[email protected]:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
@@ -1724,6 +1829,10 @@ packages:
[email protected]:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
[email protected]:
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
engines: {node: '>=10'}
[email protected]:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -1944,6 +2053,9 @@ packages:
engines: {node: '>=10'}
hasBin: true
[email protected]:
resolution: {integrity: sha512-5/r/lTwbJ3zQ+qwdUFZYeRNqda7P5HD8zQKqlSjdGt1/S0cjLAphHusj4Y58ahDtWn/g32xrIS58/ikOvwl0Lw==}
[email protected]:
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
engines: {node: '>= 0.4'}
@@ -1987,6 +2099,10 @@ packages:
[email protected]:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
[email protected]:
resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
engines: {node: '>=18'}
[email protected]:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
@@ -2056,6 +2172,10 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
[email protected]:
resolution: {integrity: sha512-5qERUZX80oQj6XrDMUmD2Uhd/cIpCPDWWKBK3ZHmyRUC9apPyamWM8xMo31mbWsIQxwG2hVoSnOJ/EcnhVkkzQ==}
engines: {node: '>=18'}
[email protected]:
resolution: {integrity: sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==}
@@ -2086,6 +2206,10 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
[email protected]:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
engines: {node: '>=6'}
[email protected]:
resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==}
engines: {node: '>=18.12'}
@@ -2189,6 +2313,14 @@ packages:
yaml:
optional: true
[email protected]:
resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==}
peerDependencies:
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
peerDependenciesMeta:
vite:
optional: true
[email protected]:
resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
@@ -2267,6 +2399,9 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
[email protected]:
resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==}
[email protected]:
resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
engines: {node: '>=18.0.0'}
@@ -2663,6 +2798,8 @@ snapshots:
'@oxc-project/[email protected]': {}
'@polka/[email protected]': {}
'@rolldown/[email protected]':
optional: true
@@ -2718,6 +2855,43 @@ snapshots:
'@standard-schema/[email protected]': {}
'@sveltejs/[email protected]([email protected])':
dependencies:
acorn: 8.16.0
'@sveltejs/[email protected](@sveltejs/[email protected](@sveltejs/[email protected]([email protected](@typescript-eslint/[email protected]))([email protected]([email protected])))([email protected](@typescript-eslint/[email protected]))([email protected])([email protected]([email protected])))':
dependencies:
'@sveltejs/kit': 2.70.1(@sveltejs/[email protected]([email protected](@typescript-eslint/[email protected]))([email protected]([email protected])))([email protected](@typescript-eslint/[email protected]))([email protected])([email protected]([email protected]))
'@sveltejs/[email protected](@sveltejs/[email protected]([email protected](@typescript-eslint/[email protected]))([email protected]([email protected])))([email protected](@typescript-eslint/[email protected]))([email protected])([email protected]([email protected]))':
dependencies:
'@standard-schema/spec': 1.1.0
'@sveltejs/acorn-typescript': 1.0.11([email protected])
'@sveltejs/vite-plugin-svelte': 7.2.0([email protected](@typescript-eslint/[email protected]))([email protected]([email protected]))
'@types/cookie': 0.6.0
acorn: 8.16.0
cookie: 0.6.0
devalue: 5.8.2
esm-env: 1.2.2
kleur: 4.1.5
magic-string: 0.30.21
mrmime: 2.0.1
set-cookie-parser: 3.1.2
sirv: 3.0.2
svelte: 5.56.7(@typescript-eslint/[email protected])
vite: 8.1.5([email protected])
optionalDependencies:
typescript: 6.0.3
'@sveltejs/[email protected]([email protected](@typescript-eslint/[email protected]))([email protected]([email protected]))':
dependencies:
deepmerge: 4.3.1
magic-string: 0.30.21
obug: 2.1.4
svelte: 5.56.7(@typescript-eslint/[email protected])
vite: 8.1.5([email protected])
vitefu: 1.1.3([email protected]([email protected]))
'@swc/[email protected]':
dependencies:
tslib: 2.8.1
@@ -2791,6 +2965,13 @@ snapshots:
postcss: 8.5.19
tailwindcss: 4.3.3
'@tailwindcss/[email protected]([email protected]([email protected]))':
dependencies:
'@tailwindcss/node': 4.3.3
'@tailwindcss/oxide': 4.3.3
tailwindcss: 4.3.3
vite: 8.1.5([email protected])
'@tybys/[email protected]':
dependencies:
tslib: 2.8.1
@@ -2806,6 +2987,8 @@ snapshots:
'@types/deep-eql': 4.0.2
assertion-error: 2.0.1
'@types/[email protected]': {}
'@types/[email protected]': {}
'@types/[email protected]': {}
@@ -2814,6 +2997,8 @@ snapshots:
'@types/[email protected]': {}
'@types/[email protected]': {}
'@typescript-eslint/[email protected](@typescript-eslint/[email protected]([email protected]([email protected]))([email protected]))([email protected]([email protected]))([email protected])':
dependencies:
'@eslint-community/regexpp': 4.12.2
@@ -2883,7 +3068,7 @@ snapshots:
debug: 4.4.3
minimatch: 10.2.5
semver: 7.8.1
tinyglobby: 0.2.16
tinyglobby: 0.2.17
ts-api-utils: 2.5.0([email protected])
typescript: 6.0.3
transitivePeerDependencies:
@@ -3035,6 +3220,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]: {}
[email protected]:
@@ -3175,6 +3362,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]:
dependencies:
color-name: 1.1.4
@@ -3185,6 +3374,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]:
dependencies:
path-key: 3.1.1
@@ -3221,6 +3412,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]:
dependencies:
es-define-property: 1.0.1
@@ -3235,6 +3428,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]:
dependencies:
esutils: 2.0.3
@@ -3548,6 +3743,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
[email protected]: {}
[email protected]:
dependencies:
acorn: 8.16.0
@@ -3558,6 +3755,12 @@ snapshots:
dependencies:
estraverse: 5.3.0
[email protected](@typescript-eslint/[email protected]):
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
optionalDependencies:
'@typescript-eslint/types': 8.59.4
[email protected]:
dependencies:
estraverse: 5.3.0
@@ -3594,6 +3797,10 @@ snapshots:
optionalDependencies:
picomatch: 4.0.4
[email protected]([email protected]):
optionalDependencies:
picomatch: 4.0.5
[email protected]:
dependencies:
flat-cache: 4.0.1
@@ -3805,6 +4012,10 @@ snapshots:
[email protected]: {}
[email protected]:
dependencies:
'@types/estree': 1.0.9
[email protected]:
dependencies:
call-bound: 1.0.4
@@ -3890,6 +4101,8 @@ snapshots:
dependencies:
json-buffer: 3.0.1
[email protected]: {}
[email protected]: {}
[email protected]:
@@ -3950,6 +4163,8 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.32.0
lightningcss-win32-x64-msvc: 1.32.0
[email protected]: {}
[email protected]:
dependencies:
p-locate: 5.0.0
@@ -3987,6 +4202,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]: {}
[email protected]: {}
@@ -4229,6 +4446,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]:
dependencies:
define-data-property: 1.1.4
@@ -4319,6 +4538,12 @@ snapshots:
[email protected]: {}
[email protected]:
dependencies:
'@polka/url': 1.0.0-next.29
mrmime: 2.0.1
totalist: 3.0.1
[email protected]: {}
[email protected]: {}
@@ -4399,6 +4624,27 @@ snapshots:
[email protected]: {}
[email protected](@typescript-eslint/[email protected]):
dependencies:
'@jridgewell/remapping': 2.3.5
'@jridgewell/sourcemap-codec': 1.5.5
'@sveltejs/acorn-typescript': 1.0.11([email protected])
'@types/estree': 1.0.9
'@types/trusted-types': 2.0.7
acorn: 8.16.0
aria-query: 5.3.1
axobject-query: 4.1.0
clsx: 2.1.1
devalue: 5.8.2
esm-env: 1.2.2
esrap: 2.3.0(@typescript-eslint/[email protected])
is-reference: 3.0.3
locate-character: 3.0.0
magic-string: 0.30.21
zimmerframe: 1.1.4
transitivePeerDependencies:
- '@typescript-eslint/types'
[email protected]: {}
[email protected]: {}
@@ -4414,8 +4660,8 @@ snapshots:
[email protected]:
dependencies:
fdir: 6.5.0([email protected].4)
picomatch: 4.0.4
fdir: 6.5.0([email protected].5)
picomatch: 4.0.5
[email protected]: {}
@@ -4423,6 +4669,8 @@ snapshots:
dependencies:
is-number: 7.0.0
[email protected]: {}
[email protected]([email protected]):
dependencies:
typescript: 6.0.3
@@ -4541,6 +4789,10 @@ snapshots:
fsevents: 2.3.3
jiti: 2.7.0
[email protected]([email protected]([email protected])):
optionalDependencies:
vite: 8.1.5([email protected])
[email protected]([email protected]([email protected])):
dependencies:
'@vitest/expect': 4.1.10
@@ -4622,6 +4874,8 @@ snapshots:
[email protected]: {}
[email protected]: {}
[email protected]([email protected]):
dependencies:
zod: 4.4.3
+122
View File
@@ -0,0 +1,122 @@
@import "tailwindcss";
:root {
--color-bg: #1a1a2e;
--color-surface: #16213e;
--color-surface-hover: #1a2745;
--color-text: #e0e0e0;
--color-text-muted: #8a8a9a;
--color-correct: #4ecb71;
--color-partial: #f4b35e;
--color-wrong: #d85b5b;
--color-header: #2a2a4a;
--color-input-bg: #0f3460;
--color-input-border: #533483;
--color-accent: #533483;
--cell-size: 90px;
}
body {
background: var(--color-bg);
color: var(--color-text);
font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
min-height: 100vh;
}
/* Guess grid layout */
.guess-row {
display: grid;
grid-template-columns: 130px repeat(7, var(--cell-size));
gap: 4px;
margin-bottom: 4px;
min-width: fit-content;
}
.guess-cell {
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 8px 4px;
border-radius: 4px;
font-size: 0.8rem;
font-weight: 500;
min-height: 56px;
word-break: break-word;
animation: cellReveal 0.3s ease forwards;
opacity: 0;
}
.header-row {
margin-bottom: 8px;
}
.header-cell {
background: var(--color-header);
color: var(--color-text-muted);
font-weight: 600;
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.5px;
opacity: 1;
animation: none;
}
.champion-cell {
display: flex;
align-items: center;
gap: 8px;
justify-content: flex-start;
padding-left: 8px;
background: var(--color-surface);
}
.cell-correct {
background: var(--color-correct);
color: #1a1a2e;
}
.cell-partial {
background: var(--color-partial);
color: #1a1a2e;
}
.cell-wrong {
background: var(--color-wrong);
color: #fff;
}
@keyframes cellReveal {
from {
opacity: 0;
transform: scale(0.8);
}
to {
opacity: 1;
transform: scale(1);
}
}
/* Responsive */
@media (max-width: 768px) {
:root {
--cell-size: 72px;
}
.guess-row {
grid-template-columns: 100px repeat(7, var(--cell-size));
}
.guess-cell {
font-size: 0.7rem;
min-height: 48px;
padding: 6px 2px;
}
}
@media (max-width: 480px) {
:root {
--cell-size: 60px;
}
.guess-row {
grid-template-columns: 80px repeat(7, var(--cell-size));
}
}
+11
View File
@@ -0,0 +1,11 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>
+1
View File
@@ -0,0 +1 @@
export const prerender = true;
+12
View File
@@ -0,0 +1,12 @@
<script>
import "../app.css";
let { children } = $props();
</script>
<svelte:head>
<title>LoLdle</title>
<meta name="description" content="Guess the League of Legends champion" />
</svelte:head>
{@render children()}
+9
View File
@@ -0,0 +1,9 @@
<!-- Placeholder: header only, so the build is verifiable before components exist.
Phase 4 mounts the real game board here. -->
<main class="flex flex-col items-center min-h-screen">
<header class="text-center pt-6 pb-2 w-full max-w-[900px]">
<h1 class="text-3xl font-bold tracking-wider">
Lo<span class="text-[var(--color-accent)]">L</span>dle
</h1>
</header>
</main>
View File
Whitespace-only changes.
File diff suppressed because it is too large. Load diff
+15
View File
@@ -0,0 +1,15 @@
import adapter from "@sveltejs/adapter-static";
/** @type {import('@sveltejs/kit').Config} */
const config = {
kit: {
// No options: output goes to build/. No fallback either — every route is
// prerendered, so a fallback page would mask a real prerender failure.
adapter: adapter(),
paths: {
base: process.env.BASE_PATH || "",
},
},
};
export default config;
+8
View File
@@ -0,0 +1,8 @@
import { sveltekit } from "@sveltejs/kit/vite";
import tailwindcss from "@tailwindcss/vite";
import { defineConfig } from "vite";
export default defineConfig({
// tailwindcss() must precede sveltekit(), per the Tailwind v4 SvelteKit guide.
plugins: [tailwindcss(), sveltekit()],
});