From 81cb2915393e8f5b8eabac68ba23c592bee92445 Mon Sep 17 00:00:00 2001 From: Akomry Date: Wed, 2 Apr 2025 15:54:26 +0200 Subject: [PATCH] feat: it's gettin somewhere --- .idea/portfolio.iml | 3 + frontend/package-lock.json | 227 +++++++++++++++++++++++++- frontend/package.json | 4 + frontend/src/App.vue | 35 ++-- frontend/src/components/HeaderNav.vue | 20 +++ frontend/src/components/Projects.vue | 57 +++++-- frontend/src/components/StarrySky.vue | 209 +++++++++++++++++++++++- frontend/src/router/index.ts | 6 - frontend/src/views/AboutView.vue | 2 + frontend/src/views/DashboardView.vue | 3 - frontend/src/views/HomeView.vue | 38 ++++- frontend/vite.config.ts | 10 +- 12 files changed, 559 insertions(+), 55 deletions(-) create mode 100644 frontend/src/components/HeaderNav.vue delete mode 100644 frontend/src/views/DashboardView.vue diff --git a/.idea/portfolio.iml b/.idea/portfolio.iml index 72b05ee..d4402b7 100644 --- a/.idea/portfolio.iml +++ b/.idea/portfolio.iml @@ -1,5 +1,8 @@ + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 10fd941..875e9f8 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,12 +9,16 @@ "version": "0.0.0", "dependencies": { "@floating-ui/vue": "^1.1.6", + "@iconify/vue": "^4.3.0", + "@unhead/vue": "^2.0.3", "axios": "^1.8.4", "iconify-icon": "^2.3.0", "vue": "^3.5.13", "vue-router": "^4.5.0" }, "devDependencies": { + "@iconify/json": "^2.2.323", + "@tomjs/vite-plugin-iconify": "^1.2.1", "@tsconfig/node22": "^22.0.0", "@types/node": "^22.13.9", "@vitejs/plugin-vue": "^5.2.1", @@ -985,12 +989,45 @@ } } }, + "node_modules/@iconify/json": { + "version": "2.2.323", + "resolved": "https://registry.npmjs.org/@iconify/json/-/json-2.2.323.tgz", + "integrity": "sha512-PtRN4hK9OkT2nlEa76A5QT54E6/SOukceKQkOZv9mk44UOlaS/9fhJFNUEA+FBAXEPcnnCQb2nVui+IAn7xTSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/types": "*", + "pathe": "^1.1.2" + } + }, + "node_modules/@iconify/json/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@iconify/types": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", "license": "MIT" }, + "node_modules/@iconify/vue": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@iconify/vue/-/vue-4.3.0.tgz", + "integrity": "sha512-Xq0h6zMrHBbrW8jXJ9fISi+x8oDQllg5hTDkDuxnWiskJ63rpJu9CvJshj8VniHVTbsxCg9fVoPAaNp3RQI5OQ==", + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + }, + "peerDependencies": { + "vue": ">=3" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", @@ -1683,6 +1720,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@tomjs/vite-plugin-iconify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@tomjs/vite-plugin-iconify/-/vite-plugin-iconify-1.2.1.tgz", + "integrity": "sha512-Si5W4d+Hbo+yYpm2iLABTwwxm9K7Kl6y45F3DwqP99zWVJa5bPAWqiWJyUf5uZ5F+rzqxewXtapFVhir8yBlxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "fs-extra": "^11.2.0", + "lodash.clonedeep": "^4.5.0", + "node-html-parser": "^6.1.12", + "picocolors": "^1.0.0" + }, + "bin": { + "ti": "dist/cli.mjs" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@iconify/json": "*", + "vite": ">=2" + } + }, "node_modules/@tsconfig/node22": { "version": "22.0.1", "resolved": "https://registry.npmjs.org/@tsconfig/node22/-/node22-22.0.1.tgz", @@ -1707,6 +1768,22 @@ "undici-types": "~6.20.0" } }, + "node_modules/@unhead/vue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.0.3.tgz", + "integrity": "sha512-6Yci+MTunYuJLYwujBA68hEr5PabBl87yEhImrG4AUogaYWqIwtMHukn0bQvcjaBksXartLJtGUhxhmKgBdyPw==", + "license": "MIT", + "dependencies": { + "hookable": "^5.5.3", + "unhead": "2.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + }, + "peerDependencies": { + "vue": ">=3.5.13" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz", @@ -2134,6 +2211,13 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -2206,6 +2290,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -2336,6 +2430,36 @@ "node": ">= 8" } }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -2433,6 +2557,65 @@ "node": ">=0.10" } }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -2889,7 +3072,6 @@ "version": "5.5.3", "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "dev": true, "license": "MIT" }, "node_modules/human-signals": { @@ -3161,6 +3343,13 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true, + "license": "MIT" + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -3360,6 +3549,17 @@ "license": "MIT", "optional": true }, + "node_modules/node-html-parser": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz", + "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-select": "^5.1.0", + "he": "1.2.0" + } + }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", @@ -3444,6 +3644,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/open": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", @@ -3955,6 +4168,18 @@ "dev": true, "license": "MIT" }, + "node_modules/unhead": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unhead/-/unhead-2.0.3.tgz", + "integrity": "sha512-l2O1DSzEid8Fp+I+FMMhFnl1IewyAvBhbdYipaq9Jh2AMndv//yWZ2amjzDLpYpUmDr9E8WTcdoAXkm9wH60Aw==", + "license": "MIT", + "dependencies": { + "hookable": "^5.5.3" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, "node_modules/unicorn-magic": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 333195c..628b4b4 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -12,12 +12,16 @@ }, "dependencies": { "@floating-ui/vue": "^1.1.6", + "@iconify/vue": "^4.3.0", + "@unhead/vue": "^2.0.3", "axios": "^1.8.4", "iconify-icon": "^2.3.0", "vue": "^3.5.13", "vue-router": "^4.5.0" }, "devDependencies": { + "@iconify/json": "^2.2.323", + "@tomjs/vite-plugin-iconify": "^1.2.1", "@tsconfig/node22": "^22.0.0", "@types/node": "^22.13.9", "@vitejs/plugin-vue": "^5.2.1", diff --git a/frontend/src/App.vue b/frontend/src/App.vue index a02aebc..a822909 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,24 +1,20 @@ \ No newline at end of file diff --git a/frontend/src/components/Projects.vue b/frontend/src/components/Projects.vue index 2cae06e..d501347 100644 --- a/frontend/src/components/Projects.vue +++ b/frontend/src/components/Projects.vue @@ -2,29 +2,62 @@ diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 6a10b60..a5dc109 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -1,13 +1,19 @@ import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' +import vue, { Options } from '@vitejs/plugin-vue' import vueDevTools from 'vite-plugin-vue-devtools' +import iconify from '@tomjs/vite-plugin-iconify' + // https://vite.dev/config/ export default defineConfig({ plugins: [ vue(), - vueDevTools(), + iconify({ + resources: ['https://unpkg.com/@iconify/json/json'], + rotate: 3000, + local: ['ant-design', 'ep', 'mingcute'], + }), ], resolve: { alias: {