c-chart-16.tsx
"use client"
import { CSSProperties } from "react"
import { Badge } from "@/components/reui/badge"
import { Area, AreaChart, CartesianGrid, XAxis } from "recharts"
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from "@/components/ui/card"
import {
ChartContainer,
ChartTooltip,
ChartTooltipContent,
type ChartConfig,
} from "@/components/ui/chart"
import { IconPlaceholder } from "@/app/(create)/components/icon-placeholder"
const chartData = [
{ week: "W1", signups: 64 },
{ week: "W2", signups: 78 },
{ week: "W3", signups: 52 },
{ week: "W4", signups: 92 },
{ week: "W5", signups: 85 },
{ week: "W6", signups: 110 },
{ week: "W7", signups: 98 },
{ week: "W8", signups: 125 },
]
const chartConfig = {
signups: {
label: "Signups",
color: "var(--chart-3)",
},
} satisfies ChartConfig
export function Pattern() {
return (
<Card className="w-full max-w-md">
<CardHeader>
<CardTitle>
New Signups
<Badge variant="success-light" className="ml-2">
<IconPlaceholder
lucide="TrendingUpIcon"
tabler="IconTrendingUp"
hugeicons="TradeUpIcon"
phosphor="TrendUpIcon"
remixicon="RiArrowRightUpLongLine"
aria-hidden="true"
/>
+144%
</Badge>
</CardTitle>
<CardDescription>Weekly user registration trends</CardDescription>
</CardHeader>
<CardContent>
<ChartContainer config={chartConfig}>
<AreaChart
accessibilityLayer
data={chartData}
margin={{ top: 20, right: 2, bottom: 0, left: 2 }}
>
<defs>
<linearGradient id="chart16-fill" x1="0" y1="0" x2="0" y2="1">
<stop
offset="5%"
stopColor="var(--color-signups)"
stopOpacity={0.35}
/>
<stop
offset="95%"
stopColor="var(--color-signups)"
stopOpacity={0}
/>
</linearGradient>
<filter
id="chart16-dot-glow"
x="-50%"
y="-50%"
width="200%"
height="200%"
>
<feGaussianBlur stdDeviation="3" result="blur" />
<feComposite in="SourceGraphic" in2="blur" operator="over" />
</filter>
<filter
id="chart16-line-glow"
x="-10%"
y="-20%"
width="120%"
height="140%"
>
<feGaussianBlur stdDeviation="8" result="blur" />
<feComposite in="SourceGraphic" in2="blur" operator="over" />
</filter>
</defs>
<CartesianGrid vertical={false} strokeDasharray="3 3" />
<XAxis
dataKey="week"
tickLine={false}
axisLine={false}
tickMargin={8}
/>
<ChartTooltip
cursor={false}
content={
<ChartTooltipContent
indicator="dot"
className="min-w-36 gap-2.5"
formatter={(value, name) => (
<div className="flex w-full items-center justify-between gap-2">
<div className="flex items-center gap-1.5">
<div
className="h-2.5 w-2.5 shrink-0 rounded-xs bg-(--color-bg)"
style={
{
"--color-bg": `var(--color-${name})`,
} as CSSProperties
}
/>
<span className="text-muted-foreground">
{chartConfig[name as keyof typeof chartConfig]
?.label || name}
</span>
</div>
<span className="text-foreground font-semibold tabular-nums">
{Number(value).toLocaleString()}
</span>
</div>
)}
/>
}
/>
<Area
dataKey="signups"
type="natural"
fill="url(#chart16-fill)"
stroke="var(--color-signups)"
strokeWidth={2}
filter="url(#chart16-line-glow)"
dot={{
r: 4,
fill: "var(--color-signups)",
strokeWidth: 2,
stroke: "var(--background)",
filter: "url(#chart16-dot-glow)",
}}
activeDot={{ r: 6, strokeWidth: 3, stroke: "var(--background)" }}
/>
</AreaChart>
</ChartContainer>
</CardContent>
</Card>
)
}



























