The milestone 2 parity page becomes the spec's dashboard: app bar with wordmark, disclaimer badge and About popover, theme toggle (persisted, defaults to prefers-color-scheme, applied pre-mount to avoid a flash), hero with the preset narrative and live toned percentages, scenario toolbar, panel cards with skeleton loading and dim-while-refreshing, legend, and footer. ComparisonTable evolves into the collapsed ResultsTable (test moved along, plus a formatPct rounding case). NetworkView renders the real topology with the spec's shape encodings. The layout is seeded d3-force (mulberry32 random source, seeded initial positions, 300 synchronous ticks, cached per graph hash); anisotropic forceX/forceY pulls settle the cloud into the wide card shape so the fit stays uniform-scale and the spacing organic. Justin asked for a taller network area (380x230) and a reading caption under the legend; the caption is study copy, so StudyPreset gains a readingCaption field. Slices still to come keep their controls visibly parked: Export and the panel kebab render disabled until slices 11 and 7.
52 lines
1.4 KiB
JSON
52 lines
1.4 KiB
JSON
{
|
|
"name": "web",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "run-p type-check \"build-only {@}\" --",
|
|
"preview": "vite preview",
|
|
"test:unit": "vitest",
|
|
"build-only": "vite build",
|
|
"type-check": "vue-tsc --build",
|
|
"lint": "run-s lint:*",
|
|
"lint:oxlint": "oxlint . --fix",
|
|
"lint:eslint": "eslint . --fix --cache",
|
|
"format": "prettier --write --experimental-cli src/"
|
|
},
|
|
"dependencies": {
|
|
"@fontsource-variable/inter": "^5.2.8",
|
|
"d3-force": "^3.0.0",
|
|
"d3-quadtree": "^3.0.1",
|
|
"vue": "^3.5.32"
|
|
},
|
|
"devDependencies": {
|
|
"@tsconfig/node24": "^24.0.4",
|
|
"@types/d3-force": "^3.0.10",
|
|
"@types/jsdom": "^28.0.1",
|
|
"@types/node": "^24.12.2",
|
|
"@vitejs/plugin-vue": "^6.0.6",
|
|
"@vitest/eslint-plugin": "^1.6.16",
|
|
"@vue/eslint-config-typescript": "^14.7.0",
|
|
"@vue/test-utils": "^2.4.6",
|
|
"@vue/tsconfig": "^0.9.1",
|
|
"eslint": "^10.2.1",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-oxlint": "~1.60.0",
|
|
"eslint-plugin-vue": "~10.8.0",
|
|
"jiti": "^2.6.1",
|
|
"jsdom": "^29.0.2",
|
|
"npm-run-all2": "^8.0.4",
|
|
"oxlint": "~1.60.0",
|
|
"prettier": "3.8.3",
|
|
"typescript": "~6.0.0",
|
|
"vite": "^8.0.8",
|
|
"vite-plugin-vue-devtools": "^8.1.1",
|
|
"vitest": "^4.1.4",
|
|
"vue-tsc": "^3.2.6"
|
|
},
|
|
"engines": {
|
|
"node": "^20.19.0 || >=22.12.0"
|
|
}
|
|
}
|