diff --git a/package-lock.json b/package-lock.json index 3854bcf..551e235 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,6 +32,7 @@ "vite-plugin-checker": "^0.11.0", "vite-plugin-nodecg": "^2.1.0", "vue": "^3.5.22", + "vue-router": "^4.5.0", "vue-tsc": "^3.1.2" } }, @@ -84,7 +85,6 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -3309,7 +3309,6 @@ "integrity": "sha512-LuIQOcb6UmnF7C1PCFmEU1u2hmiHL43fgFQX67sN3H4Z+0Yk0Neo++mFsBjhOAuLzvlQeqAAkeDOZrJs9rzumQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^5.0.0", @@ -3390,7 +3389,6 @@ "integrity": "sha512-Bo45YKIjnmFtv6I1TuC8AaHBbqXtIo+Om5fE4QiU1Tj8QR/qt+8O3BAtOimG5IFmwaWiPmB3Mv3jtYzBA4Us2A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -3526,7 +3524,6 @@ "integrity": "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.46.2", "@typescript-eslint/types": "8.46.2", @@ -3870,7 +3867,6 @@ "integrity": "sha512-+MaE752hU0wfPFJEUAIxqw18+20euHHdxVtMvbFcOEpjEyfqXH/5DCoTHiVJ0J29EhTJdoTkjEv5YBKU9dnoTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rolldown/pluginutils": "1.0.0-beta.29" }, @@ -3965,6 +3961,13 @@ "@vue/shared": "3.5.22" } }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@vue/eslint-config-typescript": { "version": "14.6.0", "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-14.6.0.tgz", @@ -4146,7 +4149,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4459,7 +4461,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" @@ -4607,7 +4608,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.19", "caniuse-lite": "^1.0.30001751", @@ -5870,7 +5870,6 @@ "integrity": "sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -5931,7 +5930,6 @@ "integrity": "sha512-SbR9ZBUFKgvWAbq3RrdCtWaW0IKm6wwUiApxf3BVTNfqUIo4IQQmreMg2iHFJJ6C/0wss3LXURBJ1OwS/MhFcQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "natural-compare": "^1.4.0", @@ -8315,7 +8313,6 @@ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -9310,7 +9307,6 @@ "integrity": "sha512-5ItDSsNjqBVRrC7SqcdvT1F5mghVyJ/KmaWNwnaT5mM91a7gWpT/d7wTCIFxxDbWLZdkHKI+cpdudEqnfcSw9A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 10.18.1", "npm": ">= 6.13.4", @@ -9703,7 +9699,6 @@ "integrity": "sha512-+VUy01yfDqNmIVMd/LLKl2TTtY0ovZN0rTonh+FhKr65mFwIYgU9WzgIZKS7U9/SPCQvWTsTGx9jyt+qRm/XFw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@bufbuild/protobuf": "^2.5.0", "buffer-builder": "^0.2.0", @@ -10925,7 +10920,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -11329,7 +11323,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11577,7 +11570,6 @@ "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -11766,7 +11758,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -11787,7 +11778,6 @@ "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.22", "@vue/compiler-sfc": "3.5.22", @@ -11841,13 +11831,28 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/vue-router": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.6.4.tgz", + "integrity": "sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, "node_modules/vue-tsc": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.1.2.tgz", "integrity": "sha512-3fd4DY0rFczs5f+VB3OhcLU83V6+3Puj2yLBe0Ak65k7ERk+STVNKaOAi0EBo6Lc15UiJB6LzU6Mxy4+h/pKew==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@volar/typescript": "2.4.23", "@vue/language-core": "3.1.2" diff --git a/package.json b/package.json index d47c16d..8c28d06 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "vite-plugin-checker": "^0.11.0", "vite-plugin-nodecg": "^2.1.0", "vue": "^3.5.22", + "vue-router": "^4.5.0", "vue-tsc": "^3.1.2" }, "pnpm": { diff --git a/src/dashboard/example/main.ts b/src/dashboard/example/main.ts index 310205a..e31e9c7 100644 --- a/src/dashboard/example/main.ts +++ b/src/dashboard/example/main.ts @@ -5,10 +5,12 @@ import { Dark, Quasar } from 'quasar'; import 'quasar/src/css/index.sass'; import { createApp } from 'vue'; import App from './main.vue'; +import router from './router'; const app = createApp(App); const head = createHead(); app.use(Quasar); app.use(head); +app.use(router); app.mount('#app'); Dark.set(true); diff --git a/src/dashboard/example/main.vue b/src/dashboard/example/main.vue index eb31c70..b75a2a9 100644 --- a/src/dashboard/example/main.vue +++ b/src/dashboard/example/main.vue @@ -1,32 +1,60 @@ - - {{ text }} - - + + + {{ activeLabel }} + + + + - - - - - {{ exampleReplicant?.data?.exampleProperty }} - + + Control Panel + + + + + + + + {{ item.label }} + + + + + + + + + diff --git a/src/dashboard/example/router.ts b/src/dashboard/example/router.ts new file mode 100644 index 0000000..dd90558 --- /dev/null +++ b/src/dashboard/example/router.ts @@ -0,0 +1,19 @@ +import { createRouter, createWebHashHistory } from 'vue-router'; +import AboutView from './views/About.vue'; +import DashboardView from './views/Dashboard.vue'; +import GraphicsView from './views/Graphics.vue'; +import PlayersView from './views/Players.vue'; +import SettingsView from './views/Settings.vue'; + +const router = createRouter({ + history: createWebHashHistory(), + routes: [ + { path: '/', name: 'dashboard', component: DashboardView }, + { path: '/players', name: 'players', component: PlayersView }, + { path: '/graphics', name: 'graphics', component: GraphicsView }, + { path: '/settings', name: 'settings', component: SettingsView }, + { path: '/about', name: 'about', component: AboutView }, + ], +}); + +export default router; diff --git a/src/dashboard/example/views/About.vue b/src/dashboard/example/views/About.vue new file mode 100644 index 0000000..b43ee92 --- /dev/null +++ b/src/dashboard/example/views/About.vue @@ -0,0 +1,14 @@ + + + + + About + + Información del bundle y enlaces relevantes. + + + diff --git a/src/dashboard/example/views/Dashboard.vue b/src/dashboard/example/views/Dashboard.vue new file mode 100644 index 0000000..d428b34 --- /dev/null +++ b/src/dashboard/example/views/Dashboard.vue @@ -0,0 +1,14 @@ + + + + + Dashboard + + Panel principal del dashboard. + + + diff --git a/src/dashboard/example/views/Graphics.vue b/src/dashboard/example/views/Graphics.vue new file mode 100644 index 0000000..22cf9ab --- /dev/null +++ b/src/dashboard/example/views/Graphics.vue @@ -0,0 +1,14 @@ + + + + + Graphics + + Controles y estado de gráficos del bundle. + + + diff --git a/src/dashboard/example/views/Players.vue b/src/dashboard/example/views/Players.vue new file mode 100644 index 0000000..0601006 --- /dev/null +++ b/src/dashboard/example/views/Players.vue @@ -0,0 +1,14 @@ + + + + + Players + + Gestión de jugadores y datos relacionados. + + + diff --git a/src/dashboard/example/views/Settings.vue b/src/dashboard/example/views/Settings.vue new file mode 100644 index 0000000..84b05fd --- /dev/null +++ b/src/dashboard/example/views/Settings.vue @@ -0,0 +1,14 @@ + + + + + Settings + + Configuración del dashboard y del bundle. + + + diff --git a/src/dashboard/template.html b/src/dashboard/template.html index 7b73729..2a8e6c7 100644 --- a/src/dashboard/template.html +++ b/src/dashboard/template.html @@ -5,7 +5,7 @@