# stash-web Stash 的前端控制台:React 19 + Vite + TypeScript。组件与样式全部来自 [`@stash/ui`](../stash-ui)(`file:` 依赖,需要先在同级目录构建出它的 `dist`)。 ```bash npm install npm run dev # http://127.0.0.1:5173,/api 代理到后端 8080 npm run build # 产物到 dist,随后会被 cargo build 内嵌进二进制 npm run lint # oxlint ``` ## 目录 | 路径 | 内容 | | --- | --- | | `src/AppNext.tsx` | 前台外壳:路由、卡片、侧栏、搜索、主题应用 | | `src/components/admin/` | 后台(`AdminNext.tsx`:左侧导航 + 分组 / 数据 / 首页 / 资料 / 系统面板) | | `src/components/api/` | `/interface` 接口一览页 | | `src/components/header/`、`sidebar/` | 页头(品牌、滚动信息、操作图标)与侧栏卡片 | | `src/components/content/` | 卡片、网格、详情视图 | | `src/data/view.ts`、`src/useViewRoute.ts` | 地址 ↔ 视图的路由规则(与服务端 `SPA_PREFIXES` / `SPA_PAGES` 对应) | | `src/theme.ts` | 明暗主题:本机偏好(localStorage)优先于站点默认 | ## 约定 - 页面里不写死颜色 / 字号 / 间距,一律用 `@stash/ui` 的 `--su-*` 令牌; - 站内跳转走 `navigate()`,不要用 `` 触发整页刷新;需要「新标签打开」时保留 `href` 并放行修饰键点击; - 组件库里没有的东西优先补进 `stash-ui`,而不是在这里再手写一遍(后台已经是 100% 由库组件组装)。