- index.html 首帧按本机偏好设置 dark/light,避免先浅后深 - 实际 scheme 只写 dark/light(之前 auto 会覆盖成浅色) - 切换时给所有表面加 240ms 颜色/边框/阴影过渡,结束后移除 - 背景图深色下淡出而不是 display:none - 页头操作图标与分组导航等设置加载后再渲染,避免先显示后消失
stash-web
Stash 的前端控制台:React 19 + Vite + TypeScript。组件与样式全部来自
@stash/ui(file: 依赖,需要先在同级目录构建出它的 dist)。
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(),不要用<a href>触发整页刷新;需要「新标签打开」时保留href并放行修饰键点击; - 组件库里没有的东西优先补进
stash-ui,而不是在这里再手写一遍(后台已经是 100% 由库组件组装)。