Files
stash/stash-web
CNWei 733c1552ce feat(search): 内置 DuckDuckGo,内置引擎不允许删除
- 默认引擎清单加 duckduckgo(https://duckduckgo.com/?q={query}),图标用组件库 0.3.5 的 DuckDuckGo 品牌图标
- 后端:内置六个必须存在,缺了返回 400;老库读取时按 id 补齐缺的内置引擎(插在内置那一组里,不覆盖用户改过的值)
- 后台:内置引擎不渲染「删除」按钮,removeEngine 也做了兜底;自定义引擎照常可删
2026-11-06 12:40:31 +08:00
..

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% 由库组件组装)。