- dashboardConstants.ts → .tsx (包含 JSX 不能在 .ts 中) - dashboardTypes.ts: AggregateItem 从 pluginData 导入而非 plugins - PluginDashboardPage.tsx: 移除未使用的 Spin 导入
86 lines
2.2 KiB
TypeScript
86 lines
2.2 KiB
TypeScript
import type React from 'react';
|
|
import {
|
|
TeamOutlined,
|
|
PhoneOutlined,
|
|
TagsOutlined,
|
|
RiseOutlined,
|
|
DashboardOutlined,
|
|
BarChartOutlined,
|
|
PieChartOutlined,
|
|
LineChartOutlined,
|
|
FunnelPlotOutlined,
|
|
} from '@ant-design/icons';
|
|
|
|
// ── 色板配置 ──
|
|
|
|
export const ENTITY_PALETTE: Record<string, { gradient: string; iconBg: string; tagColor: string }> = {
|
|
customer: {
|
|
gradient: 'linear-gradient(135deg, #4F46E5, #6366F1)',
|
|
iconBg: 'rgba(79, 70, 229, 0.12)',
|
|
tagColor: 'purple',
|
|
},
|
|
contact: {
|
|
gradient: 'linear-gradient(135deg, #059669, #10B981)',
|
|
iconBg: 'rgba(5, 150, 105, 0.12)',
|
|
tagColor: 'green',
|
|
},
|
|
communication: {
|
|
gradient: 'linear-gradient(135deg, #D97706, #F59E0B)',
|
|
iconBg: 'rgba(217, 119, 6, 0.12)',
|
|
tagColor: 'orange',
|
|
},
|
|
customer_tag: {
|
|
gradient: 'linear-gradient(135deg, #7C3AED, #A78BFA)',
|
|
iconBg: 'rgba(124, 58, 237, 0.12)',
|
|
tagColor: 'volcano',
|
|
},
|
|
customer_relationship: {
|
|
gradient: 'linear-gradient(135deg, #E11D48, #F43F5E)',
|
|
iconBg: 'rgba(225, 29, 72, 0.12)',
|
|
tagColor: 'red',
|
|
},
|
|
};
|
|
|
|
export const DEFAULT_PALETTE = {
|
|
gradient: 'linear-gradient(135deg, #2563EB, #3B82F6)',
|
|
iconBg: 'rgba(37, 99, 235, 0.12)',
|
|
tagColor: 'blue',
|
|
};
|
|
|
|
export const TAG_COLORS = [
|
|
'blue', 'green', 'orange', 'red', 'purple', 'cyan',
|
|
'magenta', 'gold', 'lime', 'geekblue', 'volcano',
|
|
];
|
|
|
|
// ── 图标映射 ──
|
|
|
|
export const ENTITY_ICONS: Record<string, React.ReactNode> = {
|
|
customer: <TeamOutlined />,
|
|
contact: <TeamOutlined />,
|
|
communication: <PhoneOutlined />,
|
|
customer_tag: <TagsOutlined />,
|
|
customer_relationship: <RiseOutlined />,
|
|
};
|
|
|
|
export const WIDGET_ICON_MAP: Record<string, React.ReactNode> = {
|
|
stat_card: <DashboardOutlined />,
|
|
bar_chart: <BarChartOutlined />,
|
|
pie_chart: <PieChartOutlined />,
|
|
funnel_chart: <FunnelPlotOutlined />,
|
|
line_chart: <LineChartOutlined />,
|
|
};
|
|
|
|
// ── 延迟类名工具 ──
|
|
|
|
const DELAY_CLASSES = [
|
|
'erp-fade-in erp-fade-in-delay-1',
|
|
'erp-fade-in erp-fade-in-delay-2',
|
|
'erp-fade-in erp-fade-in-delay-3',
|
|
'erp-fade-in erp-fade-in-delay-4',
|
|
'erp-fade-in erp-fade-in-delay-4',
|
|
];
|
|
|
|
export function getDelayClass(index: number): string {
|
|
return DELAY_CLASSES[index % DELAY_CLASSES.length];
|
|
}
|