feat(ui): 专业风UI改造 主色#275354 + Brand系统标题统一
Deploy to Server / deploy (push) Canceled after 14m40s

- 全量替换游戏感Neo-Brutalist为政务专业风:圆角2-16px、薄灰边、柔阴影
- Tailwind主题:primary 10阶调色板 + Noto Sans SC主字体 + fade-in-up动画
- 全局CSS:浅灰F6F8F9背景 + 主色焦点环和滚动条 + card/chip工具类
- 品牌组件Brand.tsx:云图形截断防云盘旧字泄露 + 新标题组合
- 6基础组件 + 8页面:Layout深绿侧栏 Login卡片 Export去五色卡 Activities/Hours/Users 用户端Index/Dashboard
- 数据链路回归:u/2张三2h明细正确显示
- tsc无错误  vite build成功
This commit is contained in:
Trae Assistant
2026-10-04 23:05:39 +08:00
parent b4b0f8b76d
commit 1a51a854a3
21 changed files with 333 additions and 290 deletions
+39 -47
View File
@@ -1,31 +1,44 @@
import type { Config } from 'tailwindcss';
const PRIMARY = '#275354';
const config: Config = {
content: ['./index.html', './src/**/*.{ts,tsx}'],
theme: {
borderRadius: {
DEFAULT: '0px',
none: '0px',
sm: '0px',
md: '0px',
lg: '0px',
xl: '0px',
'2xl': '0px',
sm: '2px',
DEFAULT: '4px',
md: '6px',
lg: '8px',
xl: '12px',
'2xl': '16px',
full: '9999px',
},
boxShadow: {
DEFAULT: '4px 4px 0 0 #0f172a',
sm: '2px 2px 0 0 #0f172a',
lg: '6px 6px 0 0 #0f172a',
xl: '8px 8px 0 0 #0f172a',
none: '0 0 0 0 #000',
amber: '4px 4px 0 0 #b45309',
sm: '0 1px 2px 0 rgba(15, 23, 42, 0.06), 0 1px 1px -1px rgba(15, 23, 42, 0.06)',
DEFAULT: '0 1px 3px 0 rgba(15, 23, 42, 0.08), 0 1px 2px -1px rgba(15, 23, 42, 0.05)',
md: '0 4px 6px -2px rgba(15, 23, 42, 0.08), 0 2px 4px -3px rgba(15, 23, 42, 0.05)',
lg: '0 10px 15px -3px rgba(15, 23, 42, 0.1), 0 4px 6px -4px rgba(15, 23, 42, 0.05)',
xl: '0 20px 25px -5px rgba(15, 23, 42, 0.12), 0 8px 10px -6px rgba(15, 23, 42, 0.06)',
none: 'none',
},
colors: {
black: '#0f172a',
ink: '#020617',
ink: '#0F172A',
white: '#FFFFFF',
paper: '#fafaf6',
paper: '#F6F8F9',
primary: {
50: '#EFF6F6',
100: '#D8E8E8',
200: '#B1D1D1',
300: '#82B1B2',
400: '#558A8B',
500: PRIMARY,
600: '#1E4041',
700: '#173334',
800: '#102626',
900: '#0B1B1B',
},
gray: {
50: '#F8FAFC',
100: '#F1F5F9',
@@ -38,25 +51,6 @@ const config: Config = {
800: '#1E293B',
900: '#0F172A',
},
blue: {
50: '#EFF6FF',
100: '#DBEAFE',
200: '#BFDBFE',
400: '#60A5FA',
500: '#2563EB',
600: '#1D4ED8',
700: '#1E40AF',
800: '#1E3A8A',
},
amber: {
50: '#FFFBEB',
100: '#FEF3C7',
300: '#FCD34D',
400: '#FBBF24',
500: '#F59E0B',
600: '#D97706',
700: '#B45309',
},
red: {
400: '#F87171',
500: '#EF4444',
@@ -67,6 +61,13 @@ const config: Config = {
400: '#4ADE80',
500: '#22C55E',
600: '#16A34A',
700: '#15803D',
},
amber: {
400: '#FBBF24',
500: '#F59E0B',
600: '#D97706',
700: '#B45309',
},
},
fontFamily: {
@@ -74,26 +75,17 @@ const config: Config = {
'"Noto Sans SC"', '"PingFang SC"', '"Microsoft YaHei"',
'ui-sans-serif', 'system-ui', 'sans-serif',
],
display: [
'"Instrument Serif"', '"Noto Serif SC"', '"Source Han Serif"',
'"Songti SC"', 'SimSun', 'serif',
],
mono: ['JetBrains Mono', 'ui-monospace', 'SFMono-Regular', 'monospace'],
mono: ['"JetBrains Mono"', 'ui-monospace', 'SFMono-Regular', 'monospace'],
},
extend: {
keyframes: {
'stagger-in': {
'0%': { opacity: '0', transform: 'translateY(8px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
'slide-down': {
'0%': { opacity: '0', transform: 'translateY(-16px)' },
'fade-in-up': {
'0%': { opacity: '0', transform: 'translateY(6px)' },
'100%': { opacity: '1', transform: 'translateY(0)' },
},
},
animation: {
'stagger-in': 'stagger-in 0.3s ease-out both',
'slide-down': 'slide-down 0.25s ease-out both',
'fade-in-up': 'fade-in-up 0.25s ease-out both',
},
},
},