Files
scoreko-dev/package.json
T
Pandipipas ae4eef53de Add routed dashboard layout with sidebar
### Motivation
- Provide a multi-tab dashboard layout so users can navigate between logical sections (Dashboard, Players, Graphics, Settings, About) via a persistent sidebar.
- Integrate `vue-router` to manage in-app navigation inside the Quasar layout for a cleaner, scalable dashboard structure.

### Description
- Added `vue-router` as a dev dependency and created `src/dashboard/example/router.ts` with routes for the five views (`/`, `/players`, `/graphics`, `/settings`, `/about`).
- Replaced the example dashboard UI with a Quasar `QLayout` in `src/dashboard/example/main.vue` that includes a left `QDrawer` sidebar and a `RouterView` outlet, and wired the app to the router in `src/dashboard/example/main.ts`.
- Added simple stub views for each tab under `src/dashboard/example/views/` (`Dashboard.vue`, `Players.vue`, `Graphics.vue`, `Settings.vue`, `About.vue`).
- Adjusted `src/dashboard/template.html` to remove the default NodeCG body margin (`margin: 0`) so the layout can occupy the full panel area.

### Testing
- Ran `npm install` which completed and added the new package with audit warnings about vulnerabilities reported. (succeeded)
- Started the dev server with `npx vite` which reported the inputs and served the bundle at `http://localhost:4173/bundles/scoreko-dev/` and `vue-tsc` reported `Found 0 errors` while watching. (succeeded)
- Attempted a Playwright screenshot run to capture the dashboard UI, but the Chromium process crashed (`TargetClosedError` / SIGSEGV) so no screenshot was produced. (failed)

------
[Codex Task](https://chatgpt.com/codex/tasks/task_e_69876e97329c832a8af7179a9175d88b)
2026-02-07 18:09:06 +01:00

81 lines
2.2 KiB
JSON

{
"name": "nodecg-vue-ts-template",
"version": "3.0.0",
"description": "Template for NodeCG bundles that use Vue.js and TypeScript.",
"homepage": "https://github.com/zoton2/nodecg-vue-ts-template#readme",
"bugs": {
"url": "https://github.com/zoton2/nodecg-vue-ts-template/issues"
},
"repository": {
"type": "git",
"url": "git+https://github.com/zoton2/nodecg-vue-ts-template.git"
},
"license": "MIT",
"author": "zoton2",
"type": "module",
"scripts": {
"autofix": "eslint --fix",
"prebuild": "trash ./extension && trash ./node_modules/.vite && trash ./shared/dist && trash ./dashboard && trash ./graphics",
"build": "vite build && tsc -b tsconfig.extension.json",
"lint": "eslint",
"schema-types": "nodecg schema-types",
"start": "cd ../.. && node index.js",
"watch": "conc -n B,E -c red,blue -k vite \"tsc -b -w --preserveWatchOutput tsconfig.extension.json\""
},
"devDependencies": {
"@eslint/js": "^9.39.0",
"@quasar/extras": "^1.17.0",
"@quasar/vite-plugin": "^1.10.0",
"@tsconfig/node22": "^22.0.2",
"@types/node": "^22.18.13",
"@unhead/vue": "^2.0.19",
"@vitejs/plugin-vue": "^6.0.1",
"@vue/eslint-config-typescript": "^14.6.0",
"@vue/tsconfig": "^0.8.1",
"concurrently": "^9.2.1",
"eslint": "^9.39.0",
"eslint-plugin-vue": "^10.5.1",
"nodecg": "^2.6.1",
"nodecg-vue-composable": "^1.1.0",
"quasar": "^2.18.5",
"sass-embedded": "^1.93.3",
"trash-cli": "^7.0.0",
"typescript": "^5.9.3",
"typescript-eslint": "^8.46.2",
"vite": "^7.1.12",
"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": {
"overrides": {
"vite-plugin-nodecg>vite": "$vite"
}
},
"nodecg": {
"compatibleRange": "^2.3.0",
"dashboardPanels": [
{
"name": "example",
"title": "Example",
"file": "example/main.html",
"width": 3
}
],
"graphics": [
{
"file": "example/main.html",
"width": 1920,
"height": 1080
}
]
},
"overrides": {
"vite-plugin-nodecg": {
"vite": "$vite"
}
}
}