feat(client): 初始化前端壳与鉴权守卫(P1-5)
- 技术栈:React 18 + TypeScript + Vite + Tailwind - API 层:ApiError + 401 自动刷新 + single-flight 重试 - 鉴权:内存 Access Token + Cookie Refresh + 启动 bootstrap - RBAC:权限映射 + RequireAuth/RequirePermission 路由守卫 - 布局:OA 工作台壳层 + 侧边栏 + 5 个占位页面 - 样式:复用 hyb-web 视觉 token(单向同步) - 文档:新增 client README,补充 server 联调说明
这个提交包含在:
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
Style tokens source (single-direction sync):
|
||||
- /home/shunli/Projects/hyb-web
|
||||
- commit: unavailable_local_reference
|
||||
*/
|
||||
|
||||
@import url("https://fonts.googleapis.com/css2?family=Public+Sans:wght@400;500;700;900&display=swap");
|
||||
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
@layer base {
|
||||
body {
|
||||
@apply bg-background-light text-slate-900 font-sans antialiased selection:bg-primary selection:text-white;
|
||||
}
|
||||
|
||||
#root {
|
||||
@apply min-h-screen;
|
||||
}
|
||||
}
|
||||
|
||||
@layer components {
|
||||
.layout-container {
|
||||
@apply mx-auto max-w-7xl px-4 sm:px-6 lg:px-8;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
@apply rounded-lg bg-primary px-4 py-2 font-bold text-white transition-colors hover:bg-primary-600;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
@apply rounded-lg border border-slate-200 bg-white px-4 py-2 font-medium text-slate-700 transition-colors hover:bg-slate-50;
|
||||
}
|
||||
|
||||
.card-std {
|
||||
@apply rounded-xl border border-slate-200 bg-white p-6 text-left shadow-sm transition-all hover:shadow-md;
|
||||
}
|
||||
|
||||
.card-title {
|
||||
@apply mb-2 text-xl font-bold text-slate-900;
|
||||
}
|
||||
|
||||
.card-desc {
|
||||
@apply text-slate-600;
|
||||
}
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户