c-chart-12.tsx
"use client"
import { CSSProperties } from "react"
import { Badge } from "@/components/reui/badge"
import { Bar, BarChart, XAxis, YAxis } 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 = [
{ month: "Jan", desktop: 342, mobile: 245 },
{ month: "Feb", desktop: 876, mobile: 654 },
{ month: "Mar", desktop: 512, mobile: 389 },
{ month: "Apr", desktop: 629, mobile: 521 },
{ month: "May", desktop: 458, mobile: 367 },
{ month: "Jun", desktop: 781, mobile: 598 },
]
const chartConfig = {
desktop: {
label: "Desktop",
color: "var(--chart-1)",
},
mobile: {
label: "Mobile",
color: "var(--chart-2)",
},
} satisfies ChartConfig
export function ChartVerticalBars() {
return (
<Card className="w-full max-w-md">
<CardHeader>
<CardTitle>
Inventory Levels
<Badge variant="destructive-light" className="ml-2">
<IconPlaceholder
lucide="TrendingDownIcon"
tabler="IconTrendingDown"
hugeicons="TradeDownIcon"
phosphor="TrendDownIcon"
remixicon="RiArrowRightDownLongLine"
aria-hidden="true"
/>
-3.2%
</Badge>
</CardTitle>
<CardDescription>Stock availability across warehouses</CardDescription>
</CardHeader>
<CardContent>
<ChartContainer config={chartConfig}>
<BarChart
accessibilityLayer
data={chartData}
layout="vertical"
margin={{
left: -10,
right: 20,
}}
barCategoryGap="30%"
>
<YAxis
type="category"
dataKey="month"
tickLine={false}
tickMargin={10}
axisLine={false}
/>
<XAxis
type="number"
tickLine={false}
tickMargin={10}
axisLine={false}
hide
/>
<ChartTooltip
cursor={false}
content={
<ChartTooltipContent
indicator="dot"
className="min-w-40 gap-2.5"
labelFormatter={(value) => {
return (
<div className="border-border/50 mb-0.5 flex flex-col gap-0.5 border-b pb-2">
<span className="text-xs font-medium">
{value} 2024
</span>
</div>
)
}}
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">
{Number(value).toLocaleString()}
</span>
</div>
)}
/>
}
/>
<Bar dataKey="desktop" fill="var(--color-desktop)" radius={2} />
<Bar dataKey="mobile" fill="var(--color-mobile)" radius={2} />
</BarChart>
</ChartContainer>
</CardContent>
</Card>
)
}






























