@arolariu/components
Version:
🎨 60+ beautiful, accessible React components built on Radix UI. TypeScript-first, tree-shakeable, SSR-ready. Perfect for modern web apps, design systems & rapid prototyping. Zero config, maximum flexibility! ⚡
1 lines • 18.5 kB
Source Map (JSON)
{"version":3,"file":"components\\ui\\chart.cjs","sources":["webpack://@arolariu/components/webpack/runtime/define_property_getters","webpack://@arolariu/components/webpack/runtime/has_own_property","webpack://@arolariu/components/webpack/runtime/make_namespace_object","webpack://@arolariu/components/./src/components/ui/chart.tsx"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","\r\n\r\nimport * as React from \"react\";\r\nimport * as RechartsPrimitive from \"recharts\";\r\nimport type { LegendPayload } from \"recharts/types/component/DefaultLegendContent\";\r\nimport {\r\n NameType,\r\n Payload,\r\n ValueType,\r\n} from \"recharts/types/component/DefaultTooltipContent\";\r\nimport type { Props as LegendProps } from \"recharts/types/component/Legend\";\r\nimport { TooltipContentProps } from \"recharts/types/component/Tooltip\";\r\n\r\nimport { cn } from \"@/lib/utils\";\r\n\r\n// Format: { THEME_NAME: CSS_SELECTOR }\r\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\r\n\r\nexport type ChartConfig = {\r\n [k in string]: {\r\n label?: React.ReactNode;\r\n icon?: React.ComponentType;\r\n } & (\r\n | { color?: string; theme?: never }\r\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\r\n );\r\n};\r\n\r\ntype ChartContextProps = {\r\n config: ChartConfig;\r\n};\r\n\r\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\r\n\r\nfunction useChart() {\r\n const context = React.useContext(ChartContext);\r\n\r\n if (!context) {\r\n throw new Error(\"useChart must be used within a <ChartContainer />\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nfunction ChartContainer({\r\n id,\r\n className,\r\n children,\r\n config,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n config: ChartConfig;\r\n children: React.ComponentProps<\r\n typeof RechartsPrimitive.ResponsiveContainer\r\n >[\"children\"];\r\n}) {\r\n const uniqueId = React.useId();\r\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\r\n\r\n return (\r\n <ChartContext.Provider value={{ config }}>\r\n <div\r\n data-slot=\"chart\"\r\n data-chart={chartId}\r\n className={cn(\r\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <ChartStyle id={chartId} config={config} />\r\n <RechartsPrimitive.ResponsiveContainer>\r\n {children}\r\n </RechartsPrimitive.ResponsiveContainer>\r\n </div>\r\n </ChartContext.Provider>\r\n );\r\n}\r\n\r\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\r\n const colorConfig = Object.entries(config).filter(\r\n ([, config]) => config.theme || config.color,\r\n );\r\n\r\n if (!colorConfig.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <style\r\n dangerouslySetInnerHTML={{\r\n __html: Object.entries(THEMES)\r\n .map(\r\n ([theme, prefix]) => `\r\n ${prefix} [data-chart=${id}] {\r\n ${colorConfig\r\n .map(([key, itemConfig]) => {\r\n const color =\r\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\r\n itemConfig.color;\r\n return color ? ` --color-${key}: ${color};` : null;\r\n })\r\n .join(\"\\n\")}\r\n }\r\n `,\r\n )\r\n .join(\"\\n\"),\r\n }}\r\n />\r\n );\r\n};\r\n\r\nconst ChartTooltip = RechartsPrimitive.Tooltip;\r\n\r\ntype CustomTooltipProps = TooltipContentProps<ValueType, NameType> & {\r\n className?: string;\r\n hideLabel?: boolean;\r\n hideIndicator?: boolean;\r\n indicator?: \"line\" | \"dot\" | \"dashed\";\r\n nameKey?: string;\r\n labelKey?: string;\r\n labelFormatter?: (\r\n label: TooltipContentProps<number, string>[\"label\"],\r\n payload: TooltipContentProps<number, string>[\"payload\"],\r\n ) => React.ReactNode;\r\n formatter?: (\r\n value: number | string,\r\n name: string,\r\n item: Payload<number | string, string>,\r\n index: number,\r\n payload: ReadonlyArray<Payload<number | string, string>>,\r\n ) => React.ReactNode;\r\n labelClassName?: string;\r\n color?: string;\r\n};\r\n\r\nfunction ChartTooltipContent({\r\n active,\r\n payload,\r\n label,\r\n className,\r\n indicator = \"dot\",\r\n hideLabel = false,\r\n hideIndicator = false,\r\n labelFormatter,\r\n formatter,\r\n labelClassName,\r\n color,\r\n nameKey,\r\n labelKey,\r\n}: CustomTooltipProps) {\r\n const { config } = useChart();\r\n\r\n const tooltipLabel = React.useMemo(() => {\r\n if (hideLabel || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const [item] = payload;\r\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const value =\r\n !labelKey && typeof label === \"string\"\r\n ? config[label as keyof typeof config]?.label || label\r\n : itemConfig?.label;\r\n\r\n if (labelFormatter) {\r\n return (\r\n <div className={cn(\"font-medium\", labelClassName)}>\r\n {labelFormatter(value, payload)}\r\n </div>\r\n );\r\n }\r\n\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\r\n }, [\r\n label,\r\n labelFormatter,\r\n payload,\r\n hideLabel,\r\n labelClassName,\r\n config,\r\n labelKey,\r\n ]);\r\n\r\n if (!active || !payload?.length) {\r\n return null;\r\n }\r\n\r\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\r\n className,\r\n )}\r\n >\r\n {!nestLabel ? tooltipLabel : null}\r\n <div className=\"grid gap-1.5\">\r\n {payload.map((item, index) => {\r\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n const indicatorColor = color || item.payload.fill || item.color;\r\n\r\n return (\r\n <div\r\n key={item.dataKey}\r\n className={cn(\r\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\r\n indicator === \"dot\" && \"items-center\",\r\n )}\r\n >\r\n {formatter && item?.value !== undefined && item.name ? (\r\n formatter(item.value, item.name, item, index, item.payload)\r\n ) : (\r\n <>\r\n {itemConfig?.icon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n !hideIndicator && (\r\n <div\r\n className={cn(\r\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\r\n {\r\n \"h-2.5 w-2.5\": indicator === \"dot\",\r\n \"w-1\": indicator === \"line\",\r\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\r\n indicator === \"dashed\",\r\n \"my-0.5\": nestLabel && indicator === \"dashed\",\r\n },\r\n )}\r\n style={\r\n {\r\n \"--color-bg\": indicatorColor,\r\n \"--color-border\": indicatorColor,\r\n } as React.CSSProperties\r\n }\r\n />\r\n )\r\n )}\r\n <div\r\n className={cn(\r\n \"flex flex-1 justify-between leading-none\",\r\n nestLabel ? \"items-end\" : \"items-center\",\r\n )}\r\n >\r\n <div className=\"grid gap-1.5\">\r\n {nestLabel ? tooltipLabel : null}\r\n <span className=\"text-muted-foreground\">\r\n {itemConfig?.label || item.name}\r\n </span>\r\n </div>\r\n {item.value && (\r\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\r\n {item.value.toLocaleString()}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst ChartLegend = RechartsPrimitive.Legend;\r\n\r\ntype ChartLegendContentProps = {\r\n className?: string;\r\n hideIcon?: boolean;\r\n verticalAlign?: LegendProps[\"verticalAlign\"];\r\n payload?: LegendPayload[];\r\n nameKey?: string;\r\n};\r\n\r\nfunction ChartLegendContent({\r\n className,\r\n hideIcon = false,\r\n payload,\r\n verticalAlign = \"bottom\",\r\n nameKey,\r\n}: ChartLegendContentProps) {\r\n const { config } = useChart();\r\n\r\n if (!payload?.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex items-center justify-center gap-4\",\r\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\r\n className,\r\n )}\r\n >\r\n {payload.map((item) => {\r\n const key = `${nameKey || item.dataKey || \"value\"}`;\r\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\r\n\r\n return (\r\n <div\r\n key={item.value}\r\n className={cn(\r\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\",\r\n )}\r\n >\r\n {itemConfig?.icon && !hideIcon ? (\r\n <itemConfig.icon />\r\n ) : (\r\n <div\r\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\r\n style={{\r\n backgroundColor: item.color,\r\n }}\r\n />\r\n )}\r\n {itemConfig?.label}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\n// Helper to extract item config from a payload.\r\nfunction getPayloadConfigFromPayload(\r\n config: ChartConfig,\r\n payload: unknown,\r\n key: string,\r\n) {\r\n if (typeof payload !== \"object\" || payload === null) {\r\n return undefined;\r\n }\r\n\r\n const payloadPayload =\r\n \"payload\" in payload &&\r\n typeof payload.payload === \"object\" &&\r\n payload.payload !== null\r\n ? payload.payload\r\n : undefined;\r\n\r\n let configLabelKey: string = key;\r\n\r\n if (\r\n key in payload &&\r\n typeof payload[key as keyof typeof payload] === \"string\"\r\n ) {\r\n configLabelKey = payload[key as keyof typeof payload] as string;\r\n } else if (\r\n payloadPayload &&\r\n key in payloadPayload &&\r\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\r\n ) {\r\n configLabelKey = payloadPayload[\r\n key as keyof typeof payloadPayload\r\n ] as string;\r\n }\r\n\r\n return configLabelKey in config\r\n ? config[configLabelKey]\r\n : config[key as keyof typeof config];\r\n}\r\n\r\nexport {\r\n ChartContainer,\r\n ChartTooltip,\r\n ChartTooltipContent,\r\n ChartLegend,\r\n ChartLegendContent,\r\n ChartStyle,\r\n};\r\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","THEMES","ChartContext","React","useChart","context","Error","ChartContainer","id","className","children","config","props","uniqueId","chartId","cn","ChartStyle","RechartsPrimitive","colorConfig","theme","prefix","itemConfig","color","ChartTooltip","ChartTooltipContent","active","payload","label","indicator","hideLabel","hideIndicator","labelFormatter","formatter","labelClassName","nameKey","labelKey","tooltipLabel","item","getPayloadConfigFromPayload","value","nestLabel","index","indicatorColor","undefined","ChartLegend","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey"],"mappings":"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"}