mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-07 05:34:17 +00:00
The subscription info page was the last page still rendered by Go templates. Move it to the Vite multi-page setup so the whole panel loads through one toolchain. Frontend: SubPage.vue mounts at /sub/<id>?html=1 and reads window.__SUB_PAGE_DATA__ for the parsed view-model (traffic / quota / expiry + rendered share links). Fix descriptions borders against the light-theme card by painting the row divider on each cell's bottom edge — AD-Vue's <tr> border doesn't render reliably under border-collapse:collapse. Backend: serveSubPage reads dist/subpage.html, injects window.__X_UI_BASE_PATH__ + window.__SUB_PAGE_DATA__ before </head>, and rewrites Vite's absolute /assets/ URLs when the panel runs under a URL prefix. Drop the legacy template-FuncMap wiring and switch the sub server's static mount from web/assets to web/dist/assets. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
18 lines
707 B
JavaScript
18 lines
707 B
JavaScript
import { createApp } from 'vue';
|
|
import Antd, { message } from 'ant-design-vue';
|
|
import 'ant-design-vue/dist/reset.css';
|
|
|
|
// The sub page is served by the subscription HTTP server (sub/sub.go)
|
|
// at /<linksPath>/<subId>?html=1. Go injects window.__SUB_PAGE_DATA__
|
|
// with the parsed traffic/quota/expiry view-model and the rendered
|
|
// share links — the SPA reads those at mount.
|
|
import '@/composables/useTheme.js';
|
|
import { i18n } from '@/i18n/index.js';
|
|
import SubPage from '@/pages/sub/SubPage.vue';
|
|
|
|
const messageContainer = document.getElementById('message');
|
|
if (messageContainer) {
|
|
message.config({ getContainer: () => messageContainer });
|
|
}
|
|
|
|
createApp(SubPage).use(Antd).use(i18n).mount('#app');
|