recharts-tooltip
evilcharts/recharts-tooltipFreeComponent
EvilCharts publishes no description for this item.
Install it
npx shadcn@latest add https://evilcharts.com/r/recharts-tooltip.jsonSource
1import { getPayloadConfigFromPayload, getColorsCount, useChart } from "@/registry/ui/recharts-chart";2import type { NameType, ValueType } from "recharts/types/component/DefaultTooltipContent";3import * as RechartsPrimitive from "recharts";4import { cn } from "@/lib/utils";5import * as React from "react";67type TooltipRoundness = "sm" | "md" | "lg" | "xl";8type TooltipVariant = "default" | "frosted-glass";910const roundnessMap: Record<TooltipRoundness, string> = {11 sm: "rounded-sm",12 md: "rounded-md",13 lg: "rounded-lg",14 xl: "rounded-xl",15};1617const variantMap: Record<TooltipVariant, string> = {18 default: "bg-background",19 "frosted-glass": "bg-background/70 backdrop-blur-sm",20};2122function ChartTooltipContent({23 active,24 payload,25 className,26 indicator = "dot",27 hideLabel = false,28 hideIndicator = false,29 label,30 labelFormatter,31 labelClassName,32 formatter,33 nameKey,34 labelKey,35 selected,36 roundness = "lg",37 variant = "default",38}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &39 React.ComponentProps<"div"> & {40 hideLabel?: boolean;41 hideIndicator?: boolean;42 indicator?: "line" | "dot" | "dashed";43 nameKey?: string;44 labelKey?: string;45 selected?: string | null;46 roundness?: TooltipRoundness;47 variant?: TooltipVariant;48 } & Omit<49 RechartsPrimitive.DefaultTooltipContentProps<ValueType, NameType>,50 "accessibilityLayer"51 >) {52 const { config } = useChart();5354 const tooltipLabel = React.useMemo(() => {55 if (hideLabel || !payload?.length) {56 return null;57 }5859 const [item] = payload;60 const key = `${labelKey ?? item?.dataKey ?? item?.name ?? "value"}`;61 const itemConfig = getPayloadConfigFromPayload(config, item, key);62 const value =63 !labelKey && typeof label === "string" ? (config[label]?.label ?? label) : itemConfig?.label;6465 if (labelFormatter) {66 return (67 <div className={cn("font-medium", labelClassName)}>{labelFormatter(value, payload)}</div>68 );69 }7071 if (!value) {72 return null;73 }7475 return <div className={cn("font-medium", labelClassName)}>{value}</div>;76 }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);7778 if (!active || !payload?.length) {79 // Empty tooltip - to prevent position getting 0.0 so it doesnt animate tooltip every time from 0.0 origin80 return <span className="p-4" />;81 }8283 const nestLabel = payload.length === 1 && indicator !== "dot";8485 return (86 <div87// … truncated
What it pulls in
npm packages
Files it writes
More from EvilCharts
All 271 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| echarts-area-chartecharts-area-chart | EvilCharts | Components | Free | 2 deps | |
| echarts-bar-chartecharts-bar-chart | EvilCharts | Components | Free | 2 deps | |
| echarts-brushecharts-brush | EvilCharts | Components | Free | 1 dep | |
| echarts-chartecharts-chart | EvilCharts | Components | Free | 1 dep | |
| echarts-composed-chartecharts-composed-chart | EvilCharts | Components | Free | 2 deps | |
| echarts-dotecharts-dot | EvilCharts | Components | Free | 1 dep | |
| echarts-legendecharts-legend | EvilCharts | Components | Free | no deps | |
| echarts-line-chartecharts-line-chart | EvilCharts | Components | Free | 2 deps |
