d3ro-voice/apps/web/src/components/dashboard/meetings-trend-chart.tsx
Yun Chan efac690362 refactor(ui): web/admin amber->main 치환 + theme.ts deprecated 별칭 제거 (WS-AMBER)
- apps/web 11건 + apps/admin 10건 accent.amber->main 치환
- packages/ui/src/theme.ts에서 amber/amberDim/amberGlow @deprecated 별칭 제거
  (본체 main/dim/glow 유지). 전 모노레포 amber 잔여 0건 확인.
SKIP: site/src/tokens.ts(별도 토큰 계통, d3roPalette 비의존)
정책: docs/REFACTOR_POLICY.md DP1, 이식 인사이트 P7
2026-07-22 02:37:32 +09:00

83 lines
2.2 KiB
TypeScript

'use client'
// apps/web/src/components/dashboard/meetings-trend-chart.tsx
// recharts 기반 회의/문서 추이 차트 (최근 14일).
import {
ResponsiveContainer,
LineChart,
Line,
XAxis,
YAxis,
Tooltip,
CartesianGrid,
Legend
} from 'recharts'
import { Box } from '@mui/material'
import { d3roPalette } from '@d3ro/ui/theme'
export interface TrendPoint {
date: string
meetings: number
documents: number
}
interface MeetingsTrendChartProps {
points: TrendPoint[]
}
export function MeetingsTrendChart({ points }: MeetingsTrendChartProps): React.ReactElement {
return (
<Box sx={{ width: '100%', height: 260 }}>
<ResponsiveContainer width="100%" height="100%">
<LineChart data={points} margin={{ top: 5, right: 12, left: -12, bottom: 5 }}>
<CartesianGrid strokeDasharray="3 3" stroke={d3roPalette.border.subtle} />
<XAxis
dataKey="date"
stroke={d3roPalette.text.muted}
fontSize={11}
tickLine={false}
/>
<YAxis
stroke={d3roPalette.text.muted}
fontSize={11}
tickLine={false}
allowDecimals={false}
/>
<Tooltip
contentStyle={{
backgroundColor: d3roPalette.bg.elevated,
border: `1px solid ${d3roPalette.border.default}`,
borderRadius: 8,
color: d3roPalette.text.primary,
fontSize: 12
}}
labelStyle={{ color: d3roPalette.text.label }}
/>
<Legend
wrapperStyle={{ fontSize: 11, color: d3roPalette.text.secondary }}
iconType="circle"
/>
<Line
type="monotone"
dataKey="meetings"
name="Meetings"
stroke={d3roPalette.accent.main}
strokeWidth={2}
dot={{ r: 3 }}
activeDot={{ r: 5 }}
/>
<Line
type="monotone"
dataKey="documents"
name="Documents"
stroke={d3roPalette.tag.purple}
strokeWidth={2}
dot={{ r: 3 }}
activeDot={{ r: 5 }}
/>
</LineChart>
</ResponsiveContainer>
</Box>
)
}