This commit is contained in:
ryan
2026-07-13 15:44:03 +08:00
parent 0548a8a5d4
commit 26be762c3a
102 changed files with 909 additions and 490 deletions
@@ -1,10 +1,16 @@
'use client';
import {TrendChart} from '@/components/data/trend-chart';
import {Card, CardContent, CardDescription, CardHeader, CardTitle,} from '@/components/ui/card';
import type {CapacityTrendPoint} from '@/lib/services/openflare';
import { TrendChart } from '@/components/data/trend-chart';
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from '@/components/ui/card';
import type { CapacityTrendPoint } from '@/lib/services/openflare';
import {formatPercent, formatTrendHour} from './dashboard-utils';
import { formatPercent, formatTrendHour } from './dashboard-utils';
export function CapacityTrendChart({
points,
@@ -1,8 +1,17 @@
'use client';
import {RankChart} from '@/components/data/rank-chart';
import {Card, CardContent, CardDescription, CardHeader, CardTitle,} from '@/components/ui/card';
import type {DistributionItem, TrafficDistributions,} from '@/lib/services/openflare';
import { RankChart } from '@/components/data/rank-chart';
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from '@/components/ui/card';
import type {
DistributionItem,
TrafficDistributions,
} from '@/lib/services/openflare';
function toRankItems(items: DistributionItem[]) {
return items.map((item) => ({
@@ -1,12 +1,18 @@
'use client';
import {Globe2} from 'lucide-react';
import { Globe2 } from 'lucide-react';
import {Card, CardContent, CardDescription, CardHeader, CardTitle,} from '@/components/ui/card';
import {Progress} from '@/components/ui/progress';
import type {DistributionItem} from '@/lib/services/openflare';
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from '@/components/ui/card';
import { Progress } from '@/components/ui/progress';
import type { DistributionItem } from '@/lib/services/openflare';
import {formatCompactNumber} from './dashboard-utils';
import { formatCompactNumber } from './dashboard-utils';
export function GeoDistributionList({ items }: { items: DistributionItem[] }) {
const sortedItems = [...items]