diff --git a/package-lock.json b/package-lock.json index f26108b..8e88c48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,9 +14,11 @@ "lucide-svelte": "^0.475.0", "marked": "^16.2.0", "pocketbase": "^0.26.2", + "qrcodejs": "^1.0.0", "svelte-i18n": "^4.0.1", "svelte-katex": "^0.1.2", "svelte-media-queries": "^1.6.2", + "svelte-qrcode": "^1.0.1", "theme-change": "^2.5.0", "zod": "^4.1.11" }, @@ -28,6 +30,7 @@ "@sveltejs/kit": "^2.20.4", "@sveltejs/vite-plugin-svelte": "^3.0.0", "@tailwindcss/typography": "^0.5.15", + "@types/qrcodejs": "^1.0.4", "autoprefixer": "^10.4.20", "daisyui": "^5.0.12", "prettier": "^3.6.2", @@ -82,6 +85,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -1517,6 +1521,7 @@ "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.22.2.tgz", "integrity": "sha512-2MvEpSYabUrsJAoq5qCOBGAlkICjfjunrnLcx3YAk2XV7TvAIhomlKsAgR4H/4uns5rAfYmj7Wet5KRtc8dPIg==", "dev": true, + "peer": true, "dependencies": { "@sveltejs/acorn-typescript": "^1.0.5", "@types/cookie": "^0.6.0", @@ -1549,6 +1554,7 @@ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", "dev": true, + "peer": true, "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", "debug": "^4.3.4", @@ -1768,6 +1774,7 @@ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, + "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -2101,10 +2108,18 @@ "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==", "dev": true }, + "node_modules/@types/qrcodejs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/qrcodejs/-/qrcodejs-1.0.4.tgz", + "integrity": "sha512-beXPZlCp8TtY4zXl3gEx+vYJqrpcYZwKJ1faYd0zDrfZVj3vZGdTrRp2aAIXEkSTRSn549KGlS+8PvF+ZOaUBQ==", + "dev": true, + "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==", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2250,6 +2265,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", @@ -3149,6 +3165,7 @@ "integrity": "sha512-FIyV/64EkKhJmjgC0g2hygpBv5RNWVPyNCqSAD7eTCv6eFWNIi4PN1UvdSJGicN/o35bnevgis4Y0UDC0qi8jQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=14.0.0" } @@ -3766,6 +3783,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -3800,6 +3818,7 @@ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -3821,6 +3840,17 @@ "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" } }, + "node_modules/qrcodejs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/qrcodejs/-/qrcodejs-1.0.0.tgz", + "integrity": "sha512-67rj3mMBhSBepaD57qENnltO+r8rSYlqM7HGThks/BiyDAkc86sLvkKqjkqPS5v13f7tvnt6dbEf3qt7zq+BCg==" + }, + "node_modules/qrious": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/qrious/-/qrious-4.0.2.tgz", + "integrity": "sha512-xWPJIrK1zu5Ypn898fBp8RHkT/9ibquV2Kv24S/JY9VYEhMBMKur1gHVsOiNUh7PHP9uCgejjpZUHUIXXKoU/g==", + "license": "GPL-3.0" + }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", @@ -3928,6 +3958,7 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz", "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==", "devOptional": true, + "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -4033,6 +4064,7 @@ "version": "5.35.2", "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.35.2.tgz", "integrity": "sha512-uW/rRXYrhZ7Dh4UQNZ0t+oVGL1dEM+95GavCO8afAk1IY2cPq9BcZv9C3um5aLIya2y8lIeLPxLII9ASGg9Dzw==", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.3.0", "@jridgewell/sourcemap-codec": "^1.5.0", @@ -4623,6 +4655,15 @@ } } }, + "node_modules/svelte-qrcode": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/svelte-qrcode/-/svelte-qrcode-1.0.1.tgz", + "integrity": "sha512-l1RcxDWkQqtBWUkolYee/IHGVKSgm1I2PdF8yVoIRqzKCc3kXpCXSVsMfrMSavWW2/BXvKu5Orv+JGbrO5onsw==", + "license": "MIT", + "dependencies": { + "qrious": "^4.0.2" + } + }, "node_modules/svg-parser": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", @@ -4632,7 +4673,8 @@ "node_modules/tailwindcss": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.11.tgz", - "integrity": "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==" + "integrity": "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==", + "peer": true }, "node_modules/tapable": { "version": "2.2.2", @@ -4737,6 +4779,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -4835,6 +4878,7 @@ "version": "5.4.19", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", diff --git a/package.json b/package.json index 618ad9a..1ccbe1b 100644 --- a/package.json +++ b/package.json @@ -11,11 +11,14 @@ "machine-translate": "inlang machine translate --project project.inlang" }, "devDependencies": { + "@inlang/cli": "^3.0.0", + "@inlang/paraglide-js": "^2.9.1", "@sveltejs/adapter-auto": "^3.0.0", "@sveltejs/adapter-static": "^3.0.1", "@sveltejs/kit": "^2.20.4", "@sveltejs/vite-plugin-svelte": "^3.0.0", "@tailwindcss/typography": "^0.5.15", + "@types/qrcodejs": "^1.0.4", "autoprefixer": "^10.4.20", "daisyui": "^5.0.12", "prettier": "^3.6.2", @@ -27,9 +30,7 @@ "tailwindcss": "^4.1.3", "typescript": "^5.0.0", "vite": "^5.0.3", - "vite-plugin-svgr": "^4.2.0", - "@inlang/paraglide-js": "^2.9.1", - "@inlang/cli": "^3.0.0" + "vite-plugin-svgr": "^4.2.0" }, "type": "module", "dependencies": { @@ -39,9 +40,11 @@ "lucide-svelte": "^0.475.0", "marked": "^16.2.0", "pocketbase": "^0.26.2", + "qrcodejs": "^1.0.0", "svelte-i18n": "^4.0.1", "svelte-katex": "^0.1.2", "svelte-media-queries": "^1.6.2", + "svelte-qrcode": "^1.0.1", "theme-change": "^2.5.0", "zod": "^4.1.11" } diff --git a/src/routes/cv/comps/HexagonSkills.svelte b/src/routes/cv/comps/HexagonSkills.svelte index dee247c..09d5718 100644 --- a/src/routes/cv/comps/HexagonSkills.svelte +++ b/src/routes/cv/comps/HexagonSkills.svelte @@ -1,4 +1,6 @@