From 6d2cbce90d3dae4fc982d3a9174e3905d6142353 Mon Sep 17 00:00:00 2001 From: Juan Felipe Zapata Moreno Date: Fri, 19 Sep 2025 16:24:58 -0600 Subject: [PATCH 1/8] =?UTF-8?q?ADD:=20Creaci=C3=B3n=20del=20frontend=20RH?= =?UTF-8?q?=20manager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Holos/Dropdown.vue | 2 +- src/components/Holos/Layout/RhApp.vue | 57 ++++++ src/components/Holos/Searcher.vue | 2 +- src/components/Holos/Skeleton/Header.vue | 20 +-- src/components/Holos/Skeleton/RhSidebar.vue | 54 ++++++ .../Holos/Skeleton/Sidebar/Link.vue | 31 +++- src/layouts/RhLayout.vue | 61 +++++++ src/pages/Academic/Index.vue | 152 ++++++++++++++++ src/pages/Additional/Index.vue | 151 ++++++++++++++++ src/pages/Dashboard/Index.vue | 116 +++++++++++- src/pages/Employees/Index.vue | 166 ++++++++++++++++++ src/pages/Payroll/Index.vue | 145 +++++++++++++++ src/pages/Security/Index.vue | 166 ++++++++++++++++++ src/router/Index.js | 93 +++++++--- 14 files changed, 1165 insertions(+), 51 deletions(-) create mode 100644 src/components/Holos/Layout/RhApp.vue create mode 100644 src/components/Holos/Skeleton/RhSidebar.vue create mode 100644 src/layouts/RhLayout.vue create mode 100644 src/pages/Academic/Index.vue create mode 100644 src/pages/Additional/Index.vue create mode 100644 src/pages/Employees/Index.vue create mode 100644 src/pages/Payroll/Index.vue create mode 100644 src/pages/Security/Index.vue diff --git a/src/components/Holos/Dropdown.vue b/src/components/Holos/Dropdown.vue index a794f48..83eba7f 100644 --- a/src/components/Holos/Dropdown.vue +++ b/src/components/Holos/Dropdown.vue @@ -9,7 +9,7 @@ const props = defineProps({ contentClasses: { default: () => [ 'pt-1', - 'bg-primary text-primary-t dark:bg-primary-d dark:text-primary-dt' + '!bg-white dark:!bg-primary-d !text-gray-800 dark:!text-primary-dt' ], type: Array }, diff --git a/src/components/Holos/Layout/RhApp.vue b/src/components/Holos/Layout/RhApp.vue new file mode 100644 index 0000000..c3f6332 --- /dev/null +++ b/src/components/Holos/Layout/RhApp.vue @@ -0,0 +1,57 @@ + + + \ No newline at end of file diff --git a/src/components/Holos/Searcher.vue b/src/components/Holos/Searcher.vue index 3224708..1bdb48d 100644 --- a/src/components/Holos/Searcher.vue +++ b/src/components/Holos/Searcher.vue @@ -86,7 +86,7 @@ const clear = () => { diff --git a/src/components/Holos/Skeleton/Header.vue b/src/components/Holos/Skeleton/Header.vue index 5dc2abe..c23d72f 100644 --- a/src/components/Holos/Skeleton/Header.vue +++ b/src/components/Holos/Skeleton/Header.vue @@ -32,7 +32,7 @@ const loader = useLoader() class="fixed px-2 w-[calc(100vw)] bg-transparent transition-all duration-300 z-50" :class="{'md:w-[calc(100vw-16rem)]':leftSidebar.isOpened,'md:w-[calc(100vw)]':!leftSidebar.isClosed}" > -
+
{{ $page.user.name }}
- - {{$t('profile')}} - -
-
- - {{$t('auth.logout')}} - -
+ + {{$t('profile')}} + +
+
+ + {{$t('auth.logout')}} + +
diff --git a/src/components/Holos/Skeleton/RhSidebar.vue b/src/components/Holos/Skeleton/RhSidebar.vue new file mode 100644 index 0000000..b0e0715 --- /dev/null +++ b/src/components/Holos/Skeleton/RhSidebar.vue @@ -0,0 +1,54 @@ + + + \ No newline at end of file diff --git a/src/components/Holos/Skeleton/Sidebar/Link.vue b/src/components/Holos/Skeleton/Sidebar/Link.vue index d2c206a..1d5e97e 100644 --- a/src/components/Holos/Skeleton/Sidebar/Link.vue +++ b/src/components/Holos/Skeleton/Sidebar/Link.vue @@ -13,15 +13,26 @@ const vroute = useRoute(); const props = defineProps({ icon: String, name: String, - to: String + to: String, + active: { + type: Boolean, + default: false + } }); const classes = computed(() => { - let status = props.to === vroute.name - ? 'bg-secondary/30 dark:bg-secondary-d/30 border-secondary dark:border-secondary-d' - : 'border-transparent'; + let isActive = props.active || props.to === vroute.name; + + if (isActive) { + return 'flex items-center px-4 py-3 mx-2 my-1 text-white !bg-blue-600 rounded-lg transition-all duration-200 !border-transparent'; + } else { + return 'flex items-center px-4 py-3 mx-2 my-1 text-gray-600 hover:bg-gray-100 rounded-lg transition-all duration-200'; + } +}); - return `flex items-center h-11 focus:outline-hidden hover:bg-secondary/30 dark:hover:bg-secondary-d/30 border-l-4 hover:border-secondary dark:hover:border-secondary-d pr-6 ${status} transition` +const iconClasses = computed(() => { + let isActive = props.active || props.to === vroute.name; + return isActive ? 'text-white' : 'text-gray-500'; }); const closeSidebar = () => { @@ -39,19 +50,21 @@ const closeSidebar = () => { > + class="text-sm font-medium" + > + {{ name }} + diff --git a/src/layouts/RhLayout.vue b/src/layouts/RhLayout.vue new file mode 100644 index 0000000..d9805de --- /dev/null +++ b/src/layouts/RhLayout.vue @@ -0,0 +1,61 @@ + + \ No newline at end of file diff --git a/src/pages/Academic/Index.vue b/src/pages/Academic/Index.vue new file mode 100644 index 0000000..9cf0bff --- /dev/null +++ b/src/pages/Academic/Index.vue @@ -0,0 +1,152 @@ + + + \ No newline at end of file diff --git a/src/pages/Additional/Index.vue b/src/pages/Additional/Index.vue new file mode 100644 index 0000000..6e576ad --- /dev/null +++ b/src/pages/Additional/Index.vue @@ -0,0 +1,151 @@ + + + \ No newline at end of file diff --git a/src/pages/Dashboard/Index.vue b/src/pages/Dashboard/Index.vue index 1b0dd60..6dfd144 100644 --- a/src/pages/Dashboard/Index.vue +++ b/src/pages/Dashboard/Index.vue @@ -1,9 +1,119 @@ \ No newline at end of file diff --git a/src/pages/Employees/Index.vue b/src/pages/Employees/Index.vue new file mode 100644 index 0000000..afa5afe --- /dev/null +++ b/src/pages/Employees/Index.vue @@ -0,0 +1,166 @@ + + + \ No newline at end of file diff --git a/src/pages/Payroll/Index.vue b/src/pages/Payroll/Index.vue new file mode 100644 index 0000000..03acdad --- /dev/null +++ b/src/pages/Payroll/Index.vue @@ -0,0 +1,145 @@ + + + \ No newline at end of file diff --git a/src/pages/Security/Index.vue b/src/pages/Security/Index.vue new file mode 100644 index 0000000..f0ea0e7 --- /dev/null +++ b/src/pages/Security/Index.vue @@ -0,0 +1,166 @@ + + + \ No newline at end of file diff --git a/src/router/Index.js b/src/router/Index.js index 448bef5..28d3ba2 100644 --- a/src/router/Index.js +++ b/src/router/Index.js @@ -16,7 +16,7 @@ const router = createRouter({ routes: [ { path: '/', - component: () => import('@Layouts/AppLayout.vue'), + component: () => import('@Layouts/RhLayout.vue'), name: 'root', meta: { title: 'Inicio', @@ -27,40 +27,79 @@ const router = createRouter({ { path: '', name: 'index', - redirect: '/dashboard', - meta: { - title: 'Inicio', - icon: 'home', - }, + redirect: '/dashboard' }, { path: 'dashboard', name: 'dashboard.index', component: () => import('@Pages/Dashboard/Index.vue'), + meta: { + title: 'Dashboard', + icon: 'grid_view', + } }, { - path: 'profile', - children: [ - { - path: '', - name: 'profile.show', - component: () => import('@Pages/Profile/Show.vue'), - meta: { - title: 'Perfil', - icon: 'person', - }, - }, - { - path: 'notifications', - children: [ + path: 'employees', + name: 'employees.index', + component: () => import('@Pages/Employees/Index.vue'), + meta: { + title: 'Empleados', + icon: 'people', + } + }, + { + path: 'academic', + name: 'academic.index', + component: () => import('@Pages/Academic/Index.vue'), + meta: { + title: 'Historial Académico', + icon: 'school', + } + }, + { + path: 'security', + name: 'security.index', + component: () => import('@Pages/Security/Index.vue'), + meta: { + title: 'Seguridad y Salud', + icon: 'security', + } + }, + { + path: 'payroll', + name: 'payroll.index', + component: () => import('@Pages/Payroll/Index.vue'), + meta: { + title: 'Nómina', + icon: 'payments', + } + }, + { + path: 'additional', + name: 'additional.index', + component: () => import('@Pages/Additional/Index.vue'), + meta: { + title: 'Información Adicional', + icon: 'info', + } + }, { - path: '', - name: 'profile.notifications.index', - component: () => import('@Pages/Profile/Notifications/Index.vue') - } - ] - }, - ] + path: 'profile', + name: 'profile.show', + component: () => import('@Pages/Profile/Show.vue'), + meta: { + title: 'Perfil', + icon: 'person', + } + }, + { + path: 'profile/notifications', + name: 'profile.notifications.index', + component: () => import('@Pages/Profile/Notifications/Index.vue'), + meta: { + title: 'Notificaciones', + icon: 'notifications', + } }, ], }, -- 2.45.2 From 78a80ab3d537c71c1517ffa66a038d62560817c1 Mon Sep 17 00:00:00 2001 From: "jose.lopez" Date: Sat, 20 Sep 2025 14:11:38 -0600 Subject: [PATCH 2/8] Layouts separados por roles --- package-lock.json | 179 ++++++++ package.json | 4 + .../Holos/Skeleton/Sidebar/Left.vue | 34 +- src/index.js | 5 + src/layouts/AdminLayout.vue | 135 ++++++ src/layouts/AppLayout.vue | 25 +- src/layouts/CoordinatorLayout.vue | 45 ++ src/layouts/RhLayout.vue | 61 --- src/pages/Courses/Assignamment.vue | 281 ++++++++++++ src/pages/Courses/Calendar.vue | 411 ++++++++++++++++++ src/pages/Courses/Index.vue | 187 ++++++++ src/pages/Courses/Request.vue | 232 ++++++++++ src/pages/Dashboard/Admin.vue | 274 ++++++++++++ src/pages/Dashboard/Coordinator.vue | 341 +++++++++++++++ src/pages/Dashboard/Employee.vue | 247 +++++++++++ src/pages/Events/Assignamment.vue | 183 ++++++++ src/pages/Events/Index.vue | 284 ++++++++++++ src/pages/Events/Justification.vue | 360 +++++++++++++++ src/pages/Events/Reports.vue | 204 +++++++++ src/router/Index.js | 245 ++++++++--- 20 files changed, 3585 insertions(+), 152 deletions(-) create mode 100644 src/layouts/AdminLayout.vue create mode 100644 src/layouts/CoordinatorLayout.vue delete mode 100644 src/layouts/RhLayout.vue create mode 100644 src/pages/Courses/Assignamment.vue create mode 100644 src/pages/Courses/Calendar.vue create mode 100644 src/pages/Courses/Index.vue create mode 100644 src/pages/Courses/Request.vue create mode 100644 src/pages/Dashboard/Admin.vue create mode 100644 src/pages/Dashboard/Coordinator.vue create mode 100644 src/pages/Dashboard/Employee.vue create mode 100644 src/pages/Events/Assignamment.vue create mode 100644 src/pages/Events/Index.vue create mode 100644 src/pages/Events/Justification.vue create mode 100644 src/pages/Events/Reports.vue diff --git a/package-lock.json b/package-lock.json index 1315e92..b3c381c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,9 +8,11 @@ "name": "notsoweb.frontend", "version": "0.9.12", "dependencies": { + "@popperjs/core": "^2.11.8", "@tailwindcss/postcss": "^4.0.9", "@tailwindcss/vite": "^4.0.9", "@vitejs/plugin-vue": "^5.2.1", + "apexcharts": "^5.3.5", "axios": "^1.8.1", "laravel-echo": "^2.0.2", "luxon": "^3.5.0", @@ -19,11 +21,13 @@ "tailwindcss": "^4.0", "toastr": "^2.1.4", "uuid": "^11.1.0", + "v-calendar": "^3.1.2", "vite": "^6.2.0", "vue": "^3.5.13", "vue-i18n": "^11.1.1", "vue-multiselect": "^3.2.0", "vue-router": "^4.5.0", + "vue3-apexcharts": "^1.8.0", "ziggy-js": "^2.5.2" }, "devDependencies": { @@ -89,6 +93,15 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/types": { "version": "7.28.1", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz", @@ -658,6 +671,16 @@ "node": ">= 8" } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@rollup/pluginutils": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", @@ -952,6 +975,62 @@ "license": "MIT", "peer": true }, + "node_modules/@svgdotjs/svg.draggable.js": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.draggable.js/-/svg.draggable.js-3.0.6.tgz", + "integrity": "sha512-7iJFm9lL3C40HQcqzEfezK2l+dW2CpoVY3b77KQGqc8GXWa6LhhmX5Ckv7alQfUXBuZbjpICZ+Dvq1czlGx7gA==", + "license": "MIT", + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4" + } + }, + "node_modules/@svgdotjs/svg.filter.js": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.filter.js/-/svg.filter.js-3.0.9.tgz", + "integrity": "sha512-/69XMRCDoam2HgC4ldHIaDgeQf1ViHIsa0Ld4uWgiXtZ+E24DWHe/9Ib6kbNiZ7WRIdlVokUDR1Fg0kjIpkfbw==", + "license": "MIT", + "dependencies": { + "@svgdotjs/svg.js": "^3.2.4" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@svgdotjs/svg.js": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.js/-/svg.js-3.2.5.tgz", + "integrity": "sha512-/VNHWYhNu+BS7ktbYoVGrCmsXDh+chFMaONMwGNdIBcFHrWqk2jY8fNyr3DLdtQUIalvkPfM554ZSFa3dm3nxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Fuzzyma" + } + }, + "node_modules/@svgdotjs/svg.resize.js": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.resize.js/-/svg.resize.js-2.0.5.tgz", + "integrity": "sha512-4heRW4B1QrJeENfi7326lUPYBCevj78FJs8kfeDxn5st0IYPIRXoTtOSYvTzFWgaWWXd3YCDE6ao4fmv91RthA==", + "license": "MIT", + "engines": { + "node": ">= 14.18" + }, + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4", + "@svgdotjs/svg.select.js": "^4.0.1" + } + }, + "node_modules/@svgdotjs/svg.select.js": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.select.js/-/svg.select.js-4.0.3.tgz", + "integrity": "sha512-qkMgso1sd2hXKd1FZ1weO7ANq12sNmQJeGDjs46QwDVsxSRcHmvWKL2NDF7Yimpwf3sl5esOLkPqtV2bQ3v/Jg==", + "license": "MIT", + "engines": { + "node": ">= 14.18" + }, + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4" + } + }, "node_modules/@tailwindcss/node": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.11.tgz", @@ -1233,12 +1312,24 @@ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "license": "MIT" }, + "node_modules/@types/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", + "license": "MIT" + }, "node_modules/@types/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", "license": "MIT" }, + "node_modules/@types/resize-observer-browser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.11.tgz", + "integrity": "sha512-cNw5iH8JkMkb3QkCoe7DaZiawbDQEUX8t7iuQaRTyLOyQCR2h+ibBD4GJt7p5yhUHrlOeL7ZtbxNHeipqNsBzQ==", + "license": "MIT" + }, "node_modules/@vitejs/plugin-vue": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", @@ -1397,6 +1488,12 @@ "integrity": "sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==", "license": "MIT" }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==", + "license": "MIT" + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -1426,6 +1523,20 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/apexcharts": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-5.3.5.tgz", + "integrity": "sha512-I04DY/WBZbJgJD2uixeV5EzyiL+J5LgKQXEu8rctqAwyRmKv44aDVeofJoLdTJe3ao4r2KEQfCgtVzXn6pqirg==", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@svgdotjs/svg.draggable.js": "^3.0.4", + "@svgdotjs/svg.filter.js": "^3.0.8", + "@svgdotjs/svg.js": "^3.2.4", + "@svgdotjs/svg.resize.js": "^2.0.2", + "@svgdotjs/svg.select.js": "^4.0.1", + "@yr/monotone-cubic-spline": "^1.0.3" + } + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -1783,6 +1894,31 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/date-fns-tz": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-2.0.1.tgz", + "integrity": "sha512-fJCG3Pwx8HUoLhkepdsP7Z5RsucUi+ZBOxyM5d0ZZ6c4SdYustq0VMmOu6Wf7bli+yS/Jwp91TOCqn9jMcVrUA==", + "license": "MIT", + "peerDependencies": { + "date-fns": "2.x" + } + }, "node_modules/debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", @@ -2761,6 +2897,12 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -3491,6 +3633,24 @@ "uuid": "dist/esm/bin/uuid" } }, + "node_modules/v-calendar": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/v-calendar/-/v-calendar-3.1.2.tgz", + "integrity": "sha512-QDWrnp4PWCpzUblctgo4T558PrHgHzDtQnTeUNzKxfNf29FkCeFpwGd9bKjAqktaa2aJLcyRl45T5ln1ku34kg==", + "license": "MIT", + "dependencies": { + "@types/lodash": "^4.14.165", + "@types/resize-observer-browser": "^0.1.7", + "date-fns": "^2.16.1", + "date-fns-tz": "^2.0.0", + "lodash": "^4.17.20", + "vue-screen-utils": "^1.0.0-beta.13" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "vue": "^3.2.0" + } + }, "node_modules/vite": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", @@ -3667,6 +3827,25 @@ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", "license": "MIT" }, + "node_modules/vue-screen-utils": { + "version": "1.0.0-beta.13", + "resolved": "https://registry.npmjs.org/vue-screen-utils/-/vue-screen-utils-1.0.0-beta.13.tgz", + "integrity": "sha512-EJ/8TANKhFj+LefDuOvZykwMr3rrLFPLNb++lNBqPOpVigT2ActRg6icH9RFQVm4nHwlHIHSGm5OY/Clar9yIg==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue3-apexcharts": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/vue3-apexcharts/-/vue3-apexcharts-1.8.0.tgz", + "integrity": "sha512-5tSD4mXTBbIJ9ir+58qHE6oNtIe0RNgqIRYMKpcsIaxkKtwUww4JhvPkpUFlmiW4OJbbdklgjleXq1lfcM4gdA==", + "license": "MIT", + "peerDependencies": { + "apexcharts": ">=4.0.0", + "vue": ">=3.0.0" + } + }, "node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", diff --git a/package.json b/package.json index 0c368ee..9767c4b 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,11 @@ "preview": "vite preview" }, "dependencies": { + "@popperjs/core": "^2.11.8", "@tailwindcss/postcss": "^4.0.9", "@tailwindcss/vite": "^4.0.9", "@vitejs/plugin-vue": "^5.2.1", + "apexcharts": "^5.3.5", "axios": "^1.8.1", "laravel-echo": "^2.0.2", "luxon": "^3.5.0", @@ -21,11 +23,13 @@ "tailwindcss": "^4.0", "toastr": "^2.1.4", "uuid": "^11.1.0", + "v-calendar": "^3.1.2", "vite": "^6.2.0", "vue": "^3.5.13", "vue-i18n": "^11.1.1", "vue-multiselect": "^3.2.0", "vue-router": "^4.5.0", + "vue3-apexcharts": "^1.8.0", "ziggy-js": "^2.5.2" }, "devDependencies": { diff --git a/src/components/Holos/Skeleton/Sidebar/Left.vue b/src/components/Holos/Skeleton/Sidebar/Left.vue index 3ed0363..33a06a6 100644 --- a/src/components/Holos/Skeleton/Sidebar/Left.vue +++ b/src/components/Holos/Skeleton/Sidebar/Left.vue @@ -1,8 +1,7 @@