Adds the CPU / memory / swap / disk dashboard cards to IndexPage, backed by a useStatus() composable that polls /panel/api/server/status every 2 s and a Status / CurTotal model ported from the legacy inline classes in index.html. - models/status.js — Status & CurTotal classes (CurTotal exposes reactive .percent and .color computed-style getters; Status maps the API payload + xray state to color/message strings) - composables/useStatus.js — 2s polling with shallowRef so each fetch swaps the whole Status object atomically. WebSocket integration intentionally deferred — the legacy panel falls back to this same 2s polling when its websocket drops, so we ship the proven path first and add WS on top in a later sub-phase. - pages/index/StatusCard.vue — four a-progress dashboard widgets in a 2x2 grid (mobile collapses to a 1x4). CPU widget exposes a history button; the modal it opens is part of 5c-iv. - IndexPage now consumes both, plus useMediaQuery so the layout responds to viewport changes. AD-Vue 4 changes: <a-icon type="area-chart"|"history"> dropped in favor of explicit AreaChartOutlined / HistoryOutlined imports. <a-tooltip slot="title"> → <template #title>. i18n strings still hardcoded English (Phase 7 wires up vue-i18n). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| src | ||
| .gitignore | ||
| index.html | ||
| login.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| vite.config.js | ||
3x-ui frontend
Vue 3 + Ant Design Vue 4 + Vite. Builds into ../web/dist/, which the
Go binary will embed via embed.FS once the migration reaches the page
handlers (Phase 4+).
This directory exists alongside the legacy web/html/ Vue 2 templates
during the migration. Pages will move over one at a time on the
vue3-migration branch.
Dev
cd frontend
npm install
npm run dev
The dev server runs on http://localhost:5173/ and proxies API calls to
the Go panel at http://localhost:2053/ — start the Go panel first
(go run main.go), then start Vite.
Production build
npm run build
Outputs to ../web/dist/. The Go binary picks it up at compile time via
embed.FS.
Where things live
src/main.js— app entrypoint (createApp, install Antd, mount)src/App.vue— root component (currently a smoke-test placeholder)vite.config.js— build + dev-server configindex.html— Vite HTML template
Adding new pages
For each legacy page being migrated, add an entry to
vite.config.js rollupOptions.input. Each entry produces its own
HTML file in web/dist/, which the Go panel route handler will serve.