Quelle https://twitter.com/MozzyFX/status/1813154329416568966
"use client"
import { Bar , BarChart , Rectangle , XAxis , YAxis } from "recharts"
import {
Card ,
CardContent ,
CardDescription ,
CardHeader ,
CardTitle ,
} from "@/components/ui/card"
import {
ChartConfig ,
ChartContainer ,
ChartTooltip ,
ChartTooltipContent ,
} from "@/components/ui/chart"
const chartData = [
{
name : "Battlefield V" ,
count : 76986 ,
percentage : 34.9 ,
} ,
{
name : "Battlefield 2042" ,
count : 54713 ,
percentage : 24.8 ,
} ,
{
name : "Battlefield 4" ,
count : 40440 ,
percentage : 18.3 ,
} ,
{
name : "Battlefield 1" ,
count : 35550 ,
percentage : 16.1 ,
} ,
{
name : "Battlefield 3" ,
count : 5612 ,
percentage : 2.5 ,
} ,
]
const chartConfig = {
count : {
label : "Count" ,
color : "hsl(var(--chart-1))" ,
} ,
} satisfies ChartConfig
export function BattleFieldChart ( ) {
return (
< Card className = "w-full max-w-sm" >
< CardHeader className = "pb-2" >
< CardTitle > Per Game < / CardTitle >
< CardDescription > Since May 25, 2011 < / CardDescription >
< / CardHeader >
< CardContent >
< ChartContainer config = { chartConfig } className = "aspect-[16/11]" >
< BarChart
accessibilityLayer
data = { chartData }
layout = "vertical"
barSize = { 32 }
margin = { {
left : 0 ,
right : 0 ,
} }
>
< YAxis dataKey = "name" type = "category" hide / >
< XAxis dataKey = "count" type = "number" hide / >
< Bar
dataKey = "count"
layout = "vertical"
fill = "var(--color-count)"
background = { { radius : 4 , fill : "hsl(var(--muted))" } }
radius = { 4 }
shape = { ( props : any ) => (
< >
{ /* Draw the bar first. */ }
< Rectangle { ... props } / >
{ /* Places the name at the start */ }
< text
x = { props . x + 10 }
y = { props . y + 20 }
fill = "hsl(var(--foreground))"
>
{ props . name }
< / text >
{ /* Places the count at the end */ }
< text
x = { props . background . width - 10 }
y = { props . y + 20 }
textAnchor = "end"
fill = "hsl(var(--foreground))"
>
{ props . count . toLocaleString ( ) } (
{ props . percentage . toFixed ( 1 ) } %)
< / text >
< / >
) }
/ >
< ChartTooltip
cursor = { false }
content = { < ChartTooltipContent indicator = "dot" / > }
/ >
< / BarChart >
< / ChartContainer >
< / CardContent >
< / Card >
)
}