diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1499fd0..6e4ca1b 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -14,7 +14,9 @@ "primeicons": "^7.0.0", "primelocale": "^2.0.3", "primevue": "^4.2.5", - "vue": "^3.5.13" + "qalendar": "^3.9.0", + "vue": "^3.5.13", + "vue-router": "^4.5.0" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", @@ -512,6 +514,61 @@ "node": ">=18" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz", + "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz", + "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.7.2.tgz", + "integrity": "sha512-7Z/ur0gvCMW8G93dXIQOkQqHo2M5HLhYrRVC0//fakJXxcF1VmMPsxnG6Ee8qEylA8b8Q3peQXWMNZ62lYF28g==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz", + "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.8.tgz", + "integrity": "sha512-yyHHAj4G8pQIDfaIsMvQpwKMboIZtcHTUvPqXjOHyldh1O1vZfH4W03VDPv5RvI9P6DLTzJQlmVgj9wCf7c2Fw==", + "license": "MIT", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "vue": ">= 3.0.0 < 4" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2114,6 +2171,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/perfect-scrollbar": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.6.tgz", + "integrity": "sha512-rixgxw3SxyJbCaSpo1n35A/fwI1r2rdwMKOTCg/AcG+xOEyZcE8UHVjpZMFCVImzsFoCZeJTT+M/rdEIQYO2nw==", + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -2356,6 +2419,22 @@ "node": ">=12.11.0" } }, + "node_modules/qalendar": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/qalendar/-/qalendar-3.9.0.tgz", + "integrity": "sha512-RYjE+a5q+hv3kPh/0GRurFK2J70S6mbR8Bz2+UcmYWW1btboP913k4RbqQy5KnxmLmWYwdBm5ct8cpHjVDfj4g==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.3.0", + "@fortawesome/free-regular-svg-icons": "^6.3.0", + "@fortawesome/free-solid-svg-icons": "^6.3.0", + "@fortawesome/vue-fontawesome": "^3.0.3", + "perfect-scrollbar": "^1.5.5" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -2939,6 +3018,21 @@ } } }, + "node_modules/vue-router": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz", + "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, "node_modules/vue-tsc": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.2.8.tgz", diff --git a/frontend/package.json b/frontend/package.json index e49cacd..3a031b3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -15,7 +15,9 @@ "primeicons": "^7.0.0", "primelocale": "^2.0.3", "primevue": "^4.2.5", - "vue": "^3.5.13" + "qalendar": "^3.9.0", + "vue": "^3.5.13", + "vue-router": "^4.5.0" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", @@ -27,5 +29,11 @@ "typescript": "~5.6.2", "vite": "^6.0.5", "vue-tsc": "^2.2.0" + }, + "pnpm": { + "onlyBuiltDependencies": [ + "esbuild", + "vue-demi" + ] } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 556f8a7..6231604 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -26,9 +26,15 @@ importers: primevue: specifier: ^4.2.5 version: 4.3.1(vue@3.5.13(typescript@5.6.3)) + qalendar: + specifier: ^3.9.0 + version: 3.9.0(vue@3.5.13(typescript@5.6.3)) vue: specifier: ^3.5.13 version: 3.5.13(typescript@5.6.3) + vue-router: + specifier: ^4.5.0 + version: 4.5.0(vue@3.5.13(typescript@5.6.3)) devDependencies: '@vitejs/plugin-vue': specifier: ^5.2.1 @@ -231,6 +237,28 @@ packages: cpu: [x64] os: [win32] + '@fortawesome/fontawesome-common-types@6.7.2': + resolution: {integrity: sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==} + engines: {node: '>=6'} + + '@fortawesome/fontawesome-svg-core@6.7.2': + resolution: {integrity: sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==} + engines: {node: '>=6'} + + '@fortawesome/free-regular-svg-icons@6.7.2': + resolution: {integrity: sha512-7Z/ur0gvCMW8G93dXIQOkQqHo2M5HLhYrRVC0//fakJXxcF1VmMPsxnG6Ee8qEylA8b8Q3peQXWMNZ62lYF28g==} + engines: {node: '>=6'} + + '@fortawesome/free-solid-svg-icons@6.7.2': + resolution: {integrity: sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==} + engines: {node: '>=6'} + + '@fortawesome/vue-fontawesome@3.0.8': + resolution: {integrity: sha512-yyHHAj4G8pQIDfaIsMvQpwKMboIZtcHTUvPqXjOHyldh1O1vZfH4W03VDPv5RvI9P6DLTzJQlmVgj9wCf7c2Fw==} + peerDependencies: + '@fortawesome/fontawesome-svg-core': ~1 || ~6 + vue: '>= 3.0.0 < 4' + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -466,12 +494,9 @@ packages: vue: optional: true -<<<<<<< HEAD '@wailsio/runtime@3.0.0-alpha.66': resolution: {integrity: sha512-ENLu8rn1griL1gFHJqkq1i+BVxrrA0JPJHYneUJYuf/s54kjuQViW0RKDEe/WTDo56ABpfykrd/T8OYpPUyXUw==} -======= ->>>>>>> 4ec5fd2 (fix: creating, updating) alien-signals@1.0.4: resolution: {integrity: sha512-DJqqQD3XcsaQcQ1s+iE2jDUZmmQpXwHiR6fCAim/w87luaW+vmLY8fMlrdkmRwzaFXhkxf3rqPCR59tKVv1MDw==} @@ -758,6 +783,9 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + perfect-scrollbar@1.5.6: + resolution: {integrity: sha512-rixgxw3SxyJbCaSpo1n35A/fwI1r2rdwMKOTCg/AcG+xOEyZcE8UHVjpZMFCVImzsFoCZeJTT+M/rdEIQYO2nw==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -826,17 +854,18 @@ packages: primeicons@7.0.0: resolution: {integrity: sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==} -<<<<<<< HEAD primelocale@2.0.3: resolution: {integrity: sha512-/sMoTdLxDFJs2Bdns+F4lm33ph6m4j18Rho8y9dsz5DqgWliqXsfYu1We4tkHtviRWq8AzEj31TDLDA3NEYC0Q==} engines: {node: '>=18.0.0', npm: '>=8.6.0'} -======= ->>>>>>> 4ec5fd2 (fix: creating, updating) primevue@4.3.1: resolution: {integrity: sha512-NSUpcWf2WpXgqOvjgXu5zQM3E5UEXoA2iXLi6xV+h1SBZ1TmgNfrjme96KRzfUY2RBsI0rTSUuPv0I+fXvtcmA==} engines: {node: '>=12.11.0'} + qalendar@3.9.0: + resolution: {integrity: sha512-RYjE+a5q+hv3kPh/0GRurFK2J70S6mbR8Bz2+UcmYWW1btboP913k4RbqQy5KnxmLmWYwdBm5ct8cpHjVDfj4g==} + engines: {node: '>=16.0.0'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -992,6 +1021,11 @@ packages: '@vue/composition-api': optional: true + vue-router@4.5.0: + resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==} + peerDependencies: + vue: ^3.2.0 + vue-tsc@2.2.8: resolution: {integrity: sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==} hasBin: true @@ -1116,6 +1150,25 @@ snapshots: '@esbuild/win32-x64@0.25.0': optional: true + '@fortawesome/fontawesome-common-types@6.7.2': {} + + '@fortawesome/fontawesome-svg-core@6.7.2': + dependencies: + '@fortawesome/fontawesome-common-types': 6.7.2 + + '@fortawesome/free-regular-svg-icons@6.7.2': + dependencies: + '@fortawesome/fontawesome-common-types': 6.7.2 + + '@fortawesome/free-solid-svg-icons@6.7.2': + dependencies: + '@fortawesome/fontawesome-common-types': 6.7.2 + + '@fortawesome/vue-fontawesome@3.0.8(@fortawesome/fontawesome-svg-core@6.7.2)(vue@3.5.13(typescript@5.6.3))': + dependencies: + '@fortawesome/fontawesome-svg-core': 6.7.2 + vue: 3.5.13(typescript@5.6.3) + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -1344,11 +1397,8 @@ snapshots: typescript: 5.6.3 vue: 3.5.13(typescript@5.6.3) -<<<<<<< HEAD '@wailsio/runtime@3.0.0-alpha.66': {} -======= ->>>>>>> 4ec5fd2 (fix: creating, updating) alien-signals@1.0.4: {} ansi-regex@5.0.1: {} @@ -1618,6 +1668,8 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 + perfect-scrollbar@1.5.6: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -1675,11 +1727,8 @@ snapshots: primeicons@7.0.0: {} -<<<<<<< HEAD primelocale@2.0.3: {} -======= ->>>>>>> 4ec5fd2 (fix: creating, updating) primevue@4.3.1(vue@3.5.13(typescript@5.6.3)): dependencies: '@primeuix/styled': 0.5.0 @@ -1690,6 +1739,16 @@ snapshots: transitivePeerDependencies: - vue + qalendar@3.9.0(vue@3.5.13(typescript@5.6.3)): + dependencies: + '@fortawesome/fontawesome-svg-core': 6.7.2 + '@fortawesome/free-regular-svg-icons': 6.7.2 + '@fortawesome/free-solid-svg-icons': 6.7.2 + '@fortawesome/vue-fontawesome': 3.0.8(@fortawesome/fontawesome-svg-core@6.7.2)(vue@3.5.13(typescript@5.6.3)) + perfect-scrollbar: 1.5.6 + transitivePeerDependencies: + - vue + queue-microtask@1.2.3: {} read-cache@1.0.0: @@ -1846,6 +1905,11 @@ snapshots: dependencies: vue: 3.5.13(typescript@5.6.3) + vue-router@4.5.0(vue@3.5.13(typescript@5.6.3)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.13(typescript@5.6.3) + vue-tsc@2.2.8(typescript@5.6.3): dependencies: '@volar/typescript': 2.4.12 diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 6cf7961..ac0e30f 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,11 +1,11 @@ diff --git a/frontend/src/components/calendar/Calendar.vue b/frontend/src/components/calendar/Calendar.vue new file mode 100644 index 0000000..3f763ea --- /dev/null +++ b/frontend/src/components/calendar/Calendar.vue @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/calendar/qalendar.d.ts b/frontend/src/components/calendar/qalendar.d.ts new file mode 100644 index 0000000..6642906 --- /dev/null +++ b/frontend/src/components/calendar/qalendar.d.ts @@ -0,0 +1,4 @@ +declare module 'qalendar' { + import { DefineComponent } from 'vue'; + export const Qalendar: DefineComponent<{}, {}, any>; + } \ No newline at end of file diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 47e4827..0e7f47f 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -6,8 +6,9 @@ import Aura from '@primevue/themes/aura' import 'primeicons/primeicons.css' import { ru } from 'primelocale/js/ru.js' import { createPinia } from 'pinia' +import { router } from './router/router' -createApp(App).use(createPinia()).use(Config, { +createApp(App).use(router).use(createPinia()).use(Config, { theme: { preset: Aura, }, diff --git a/frontend/src/pages/Index.vue b/frontend/src/pages/Index.vue new file mode 100644 index 0000000..aa2332d --- /dev/null +++ b/frontend/src/pages/Index.vue @@ -0,0 +1,8 @@ + + + \ No newline at end of file diff --git a/frontend/src/router/router.ts b/frontend/src/router/router.ts new file mode 100644 index 0000000..3fc1501 --- /dev/null +++ b/frontend/src/router/router.ts @@ -0,0 +1,13 @@ +import { createRouter, createWebHistory, type RouteRecordRaw } from "vue-router"; +import Index from "../pages/Index.vue"; + +export const routes: RouteRecordRaw[] = [{ + path: "/", + component: Index, + name: 'Главная', +}] + +export const router = createRouter({ + history: createWebHistory(), + routes, +}); \ No newline at end of file diff --git a/wails_windows_amd64.syso b/wails_windows_amd64.syso deleted file mode 100644 index fca2145..0000000 Binary files a/wails_windows_amd64.syso and /dev/null differ