DocumentStatsComponent (components/base/document-stats.tsx)¶
Overview¶
Statistics display component that shows document processing and request metrics over different time periods.
Features¶
- Time range selection
- Document processing stats
- Request answering stats
- Responsive grid layout
- Card-based display
- Interactive selection
Dependencies¶
import { useState } from 'react';
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from '@/components/ui/select';
import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card';
import { FileTextIcon, InfoIcon } from 'lucide-react';
Props¶
type TimeRange = 'last_7_days' | 'last_30_days' | 'last_24_hours';
interface StatsData {
documentsProcessed: number;
requestsAnswered: number;
}
interface DocumentStatsProps {
last7Days: StatsData;
last30Days: StatsData;
last24Hours: StatsData;
}
Implementation¶
State Management¶
const [timeRange, setTimeRange] = useState<TimeRange>('last_7_days');
const stats = timeRange === 'last_7_days' ? last7Days : timeRange === 'last_30_days' ? last30Days : last24Hours;
Methods¶
Unique Functionality¶
- Dynamic time range switching
- Responsive stat display
- Card-based metrics
- Icon integration
- Flexible grid layout
HTML Structure¶
<div className="space-y-4">
<Select value={timeRange} onValueChange={(value: TimeRange) => setTimeRange(value)}>
<SelectTrigger className="w-[180px] text-white">
<SelectValue placeholder="Select time range" />
</SelectTrigger>
<SelectContent>
<SelectItem value="last_24_hours">Last 24 Hours</SelectItem>
<SelectItem value="last_7_days">Last 7 Days</SelectItem>
<SelectItem value="last_30_days">Last 30 Days</SelectItem>
</SelectContent>
</Select>
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
<Card className="h-[25vh] flex flex-col">
<CardHeader>
<CardTitle>Documents Processed</CardTitle>
<FileTextIcon />
</CardHeader>
<CardContent>
<div>{stats.documentsProcessed}</div>
</CardContent>
</Card>
{/* Similar card for Requests Answered */}
</div>
</div>
API Integration¶
No direct API integration.
Components Used¶
Notes¶
- Uses Tailwind CSS for styling
- Implements responsive design
- Features interactive time selection
- Displays metrics in card format
- Supports multiple time ranges