feat(web): 从 Notion 风格切换到 Pinterest 设计系统
- 替换 DESIGN.md 为 Pinterest 设计规格(暖色调、红色主题、大圆角) - 更新 CSS 变量:主色 #0075de→#e60023, 圆角 4px→16px, 背景 #f6f5f4→#f6f6f3 - 更新 Ant Design 主题令牌:更大圆角、Pinterest 色板、更大触控目标 - 批量更新 24 个页面/组件文件中的硬编码颜色值 - 暗色模式同步适配 Pinterest 暖色调暗色方案
This commit is contained in:
@@ -4,9 +4,9 @@ import type { ColumnsType } from 'antd/es/table';
|
||||
import { listCompletedTasks, type TaskInfo } from '../../api/workflowTasks';
|
||||
|
||||
const outcomeStyles: Record<string, { bg: string; color: string; text: string }> = {
|
||||
approved: { bg: '#ECFDF5', color: '#1aae39', text: '同意' },
|
||||
rejected: { bg: '#FEF2F2', color: '#e5534b', text: '拒绝' },
|
||||
delegated: { bg: '#f2f9ff', color: '#0075de', text: '已委派' },
|
||||
approved: { bg: '#ECFDF5', color: '#103c25', text: '同意' },
|
||||
rejected: { bg: '#FEF2F2', color: '#9e0a0a', text: '拒绝' },
|
||||
delegated: { bg: '#fef0f0', color: '#e60023', text: '已委派' },
|
||||
};
|
||||
|
||||
export default function CompletedTasks() {
|
||||
@@ -50,7 +50,7 @@ export default function CompletedTasks() {
|
||||
key: 'outcome',
|
||||
width: 100,
|
||||
render: (o: string) => {
|
||||
const info = outcomeStyles[o] || { bg: '#f6f5f4', color: '#615d59', text: o };
|
||||
const info = outcomeStyles[o] || { bg: '#f6f6f3', color: '#62625b', text: o };
|
||||
return (
|
||||
<Tag style={{
|
||||
background: info.bg,
|
||||
@@ -69,7 +69,7 @@ export default function CompletedTasks() {
|
||||
key: 'completed_at',
|
||||
width: 180,
|
||||
render: (v: string) => (
|
||||
<span style={{ color: isDark ? '#615d59' : '#a39e98', fontSize: 13 }}>
|
||||
<span style={{ color: isDark ? '#62625b' : '#91918c', fontSize: 13 }}>
|
||||
{v ? new Date(v).toLocaleString() : '-'}
|
||||
</span>
|
||||
),
|
||||
@@ -80,7 +80,7 @@ export default function CompletedTasks() {
|
||||
<div style={{
|
||||
background: isDark ? '#111827' : '#FFFFFF',
|
||||
borderRadius: 12,
|
||||
border: `1px solid ${isDark ? '#1e1e1d' : '#f6f5f4'}`,
|
||||
border: `1px solid ${isDark ? '#211922' : '#f6f6f3'}`,
|
||||
overflow: 'hidden',
|
||||
}}>
|
||||
<Table
|
||||
|
||||
@@ -13,10 +13,10 @@ import { getProcessDefinition, type NodeDef, type EdgeDef } from '../../api/work
|
||||
import ProcessViewer from './ProcessViewer';
|
||||
|
||||
const statusStyles: Record<string, { bg: string; color: string; text: string }> = {
|
||||
running: { bg: '#f2f9ff', color: '#0075de', text: '运行中' },
|
||||
suspended: { bg: '#FFFBEB', color: '#dd5b00', text: '已挂起' },
|
||||
completed: { bg: '#ECFDF5', color: '#1aae39', text: '已完成' },
|
||||
terminated: { bg: '#FEF2F2', color: '#e5534b', text: '已终止' },
|
||||
running: { bg: '#fef0f0', color: '#e60023', text: '运行中' },
|
||||
suspended: { bg: '#FFFBEB', color: '#b56e1a', text: '已挂起' },
|
||||
completed: { bg: '#ECFDF5', color: '#103c25', text: '已完成' },
|
||||
terminated: { bg: '#FEF2F2', color: '#9e0a0a', text: '已终止' },
|
||||
};
|
||||
|
||||
export default function InstanceMonitor() {
|
||||
@@ -129,7 +129,7 @@ export default function InstanceMonitor() {
|
||||
key: 'status',
|
||||
width: 100,
|
||||
render: (s: string) => {
|
||||
const info = statusStyles[s] || { bg: '#f6f5f4', color: '#615d59', text: s };
|
||||
const info = statusStyles[s] || { bg: '#f6f6f3', color: '#62625b', text: s };
|
||||
return (
|
||||
<Tag style={{
|
||||
background: info.bg,
|
||||
@@ -154,7 +154,7 @@ export default function InstanceMonitor() {
|
||||
key: 'started_at',
|
||||
width: 180,
|
||||
render: (v: string) => (
|
||||
<span style={{ color: isDark ? '#615d59' : '#a39e98', fontSize: 13 }}>
|
||||
<span style={{ color: isDark ? '#62625b' : '#91918c', fontSize: 13 }}>
|
||||
{new Date(v).toLocaleString()}
|
||||
</span>
|
||||
),
|
||||
@@ -214,7 +214,7 @@ export default function InstanceMonitor() {
|
||||
<div style={{
|
||||
background: isDark ? '#111827' : '#FFFFFF',
|
||||
borderRadius: 12,
|
||||
border: `1px solid ${isDark ? '#1e1e1d' : '#f6f5f4'}`,
|
||||
border: `1px solid ${isDark ? '#211922' : '#f6f6f3'}`,
|
||||
overflow: 'hidden',
|
||||
}}>
|
||||
<Table
|
||||
|
||||
@@ -76,9 +76,9 @@ export default function PendingTasks() {
|
||||
key: 'business_key',
|
||||
render: (v: string | undefined) => v ? (
|
||||
<Tag style={{
|
||||
background: isDark ? '#1e1e1d' : '#f6f5f4',
|
||||
background: isDark ? '#211922' : '#f6f6f3',
|
||||
border: 'none',
|
||||
color: isDark ? '#a39e98' : '#615d59',
|
||||
color: isDark ? '#91918c' : '#62625b',
|
||||
fontFamily: 'monospace',
|
||||
fontSize: 12,
|
||||
}}>
|
||||
@@ -93,9 +93,9 @@ export default function PendingTasks() {
|
||||
width: 100,
|
||||
render: (s: string) => (
|
||||
<Tag style={{
|
||||
background: '#f2f9ff',
|
||||
background: '#fef0f0',
|
||||
border: 'none',
|
||||
color: '#0075de',
|
||||
color: '#e60023',
|
||||
fontWeight: 500,
|
||||
}}>
|
||||
{s}
|
||||
@@ -108,7 +108,7 @@ export default function PendingTasks() {
|
||||
key: 'created_at',
|
||||
width: 180,
|
||||
render: (v: string) => (
|
||||
<span style={{ color: isDark ? '#615d59' : '#a39e98', fontSize: 13 }}>
|
||||
<span style={{ color: isDark ? '#62625b' : '#91918c', fontSize: 13 }}>
|
||||
{new Date(v).toLocaleString()}
|
||||
</span>
|
||||
),
|
||||
@@ -145,7 +145,7 @@ export default function PendingTasks() {
|
||||
<div style={{
|
||||
background: isDark ? '#111827' : '#FFFFFF',
|
||||
borderRadius: 12,
|
||||
border: `1px solid ${isDark ? '#1e1e1d' : '#f6f5f4'}`,
|
||||
border: `1px solid ${isDark ? '#211922' : '#f6f6f3'}`,
|
||||
overflow: 'hidden',
|
||||
}}>
|
||||
<Table
|
||||
|
||||
@@ -13,9 +13,9 @@ import {
|
||||
import ProcessDesigner from './ProcessDesigner';
|
||||
|
||||
const statusColors: Record<string, { bg: string; color: string; text: string }> = {
|
||||
draft: { bg: '#f6f5f4', color: '#615d59', text: '草稿' },
|
||||
published: { bg: '#ecfdf5', color: '#1aae39', text: '已发布' },
|
||||
deprecated: { bg: '#fef2f2', color: '#e5534b', text: '已弃用' },
|
||||
draft: { bg: '#f6f6f3', color: '#62625b', text: '草稿' },
|
||||
published: { bg: '#ecfdf5', color: '#103c25', text: '已发布' },
|
||||
deprecated: { bg: '#fef2f2', color: '#9e0a0a', text: '已弃用' },
|
||||
};
|
||||
|
||||
export default function ProcessDefinitions() {
|
||||
@@ -92,9 +92,9 @@ export default function ProcessDefinitions() {
|
||||
key: 'key',
|
||||
render: (v: string) => (
|
||||
<Tag style={{
|
||||
background: isDark ? '#1E293B' : '#f6f5f4',
|
||||
background: isDark ? '#1E293B' : '#f6f6f3',
|
||||
border: 'none',
|
||||
color: isDark ? '#a39e98' : '#615d59',
|
||||
color: isDark ? '#91918c' : '#62625b',
|
||||
fontFamily: 'monospace',
|
||||
fontSize: 12,
|
||||
}}>
|
||||
@@ -110,7 +110,7 @@ export default function ProcessDefinitions() {
|
||||
key: 'status',
|
||||
width: 100,
|
||||
render: (s: string) => {
|
||||
const info = statusColors[s] || { bg: '#f6f5f4', color: '#615d59', text: s };
|
||||
const info = statusColors[s] || { bg: '#f6f6f3', color: '#62625b', text: s };
|
||||
return (
|
||||
<Tag style={{
|
||||
background: info.bg,
|
||||
@@ -152,7 +152,7 @@ export default function ProcessDefinitions() {
|
||||
alignItems: 'center',
|
||||
marginBottom: 16,
|
||||
}}>
|
||||
<span style={{ fontSize: 13, color: isDark ? '#615d59' : '#a39e98' }}>
|
||||
<span style={{ fontSize: 13, color: isDark ? '#62625b' : '#91918c' }}>
|
||||
共 {total} 个流程定义
|
||||
</span>
|
||||
<Button type="primary" icon={<PlusOutlined />} onClick={handleCreate}>
|
||||
@@ -163,7 +163,7 @@ export default function ProcessDefinitions() {
|
||||
<div style={{
|
||||
background: isDark ? '#111827' : '#FFFFFF',
|
||||
borderRadius: 12,
|
||||
border: `1px solid ${isDark ? '#1E293B' : '#f6f5f4'}`,
|
||||
border: `1px solid ${isDark ? '#1E293B' : '#f6f6f3'}`,
|
||||
overflow: 'hidden',
|
||||
}}>
|
||||
<Table
|
||||
|
||||
Reference in New Issue
Block a user