import type { LegendProps, LegendPayload } from "recharts"; import type { ChartDataPoint } from "./chart-types"; /** * Get computed color value from CSS variable * Handles both RGB and HSL formats */ export declare function getCSSVariableColor(variable: string): string; /** * Get default chart color by index * @param index - Color index (0-based) * @returns Computed color value */ export declare function getDefaultChartColor(index: number): string; /** * Create a color getter function that uses CSS variables * @param customColors - Optional custom colors array * @returns Function that returns color for given index */ export declare function createColorGetter(customColors?: string[]): (index: number) => string; /** * Format large numbers using Intl.NumberFormat with locale-aware abbreviations * @param value - Number to format * @param locale - Locale for formatting (defaults to user's locale) * @param options - Additional formatting options * @returns Formatted string */ export declare function formatLargeNumber(value: number | string, locale?: string, options?: Intl.NumberFormatOptions): string; /** * Intelligently truncate text using Intl.Segmenter for proper word/grapheme boundaries * @param text - Text to truncate * @param maxLength - Maximum character length * @param locale - Locale for segmentation (defaults to user's locale) * @param preferWordBoundary - Whether to prefer breaking at word boundaries * @returns Truncated text with ellipsis if needed */ export declare function truncateText(text: string, maxLength: number, locale?: string, preferWordBoundary?: boolean): string; /** * Calculate optimal label display settings using Intl API for better formatting * @param labels - Array of label strings * @param availableWidth - Available width for labels * @param locale - Locale for formatting and text analysis * @returns Object with angle, fontSize, truncateLength, showTooltip, and formatting settings */ export declare function calculateLabelSettings(labels: string[], availableWidth?: number, locale?: string): { angle: number; fontSize: number; truncateLength: number; showTooltip: boolean; formatLabels: boolean; locale: string; }; /** * Custom tick component for X-axis with Intl-powered intelligent label handling */ export declare function CustomXAxisTick({ x, y, payload, angle, fontSize, truncateLength, showTooltip, formatLabels, locale, }: { x: number; y: number; payload: { value: string | number; }; angle?: number; fontSize?: number; truncateLength?: number; showTooltip?: boolean; formatLabels?: boolean; locale?: string; }): import("react/jsx-runtime").JSX.Element; /** * Custom tick component for Y-axis with Intl-powered intelligent label handling */ export declare function CustomYAxisTick({ x, y, payload, fontSize, truncateLength, formatLabels, locale, }: { x: number; y: number; payload: { value: string | number; }; fontSize?: number; truncateLength?: number; formatLabels?: boolean; locale?: string; }): import("react/jsx-runtime").JSX.Element; /** * Custom legend content renderer for consistent styling */ export declare const renderCustomLegend: (props: { payload?: ReadonlyArray; }) => import("react/jsx-runtime").JSX.Element | null; /** * Default legend props for consistent styling */ export declare const defaultLegendProps: Partial; /** * Default chart margins for consistent spacing across all charts */ export declare const defaultChartMargin: { top: number; right: number; left: number; bottom: number; }; /** * Get chart margin based on whether legend is shown * @param showLegend - Whether the legend is displayed * @returns Chart margin object with top: 0 if legend is shown */ export declare function getChartMargin(showLegend?: boolean): { top: number; right: number; left: number; bottom: number; }; /** * Extract min and max values from chart data * @param data - Chart data array * @param configKeys - Keys to extract values from (e.g., ['sales', 'revenue']) * @returns Object with min and max values */ export declare function extractDataRange(data: ChartDataPoint[], configKeys: string[]): { min: number; max: number; } | null; /** * Calculate Y-axis width based on formatted label content * @param minValue - Minimum value in the data * @param maxValue - Maximum value in the data * @param fontSize - Font size for Y-axis labels (default: 10) * @returns Calculated width in pixels */ export declare function calculateYAxisWidth(minValue?: number, maxValue?: number, fontSize?: number): number; /** * Default Y-axis width to constrain space usage * This is a fallback when we can't calculate dynamically */ export declare const defaultYAxisWidth = 60; /** * Default Y-axis tick formatter for compact number display */ export declare const defaultYAxisTickFormatter: (value: number | string) => string; /** * Default CartesianGrid props for consistent styling across all charts */ export declare const defaultGridProps: { stroke: string; strokeWidth: number; strokeOpacity: number; strokeDasharray: string; strokeLinecap: "round"; strokeLinejoin: "bevel"; vertical: boolean; }; /** * Tooltip entry for the shared ChartTooltip component */ export interface ChartTooltipEntry { color?: string; name: string; value: string | number; } /** * Props for the shared ChartTooltip component */ export interface ChartTooltipProps { /** Optional header/label shown at the top of the tooltip */ label?: string; /** Array of entries to display (each with color dot, name, and value) */ entries: ChartTooltipEntry[]; } /** * Shared tooltip component for consistent styling across all charts * Use this for all chart tooltips to ensure visual consistency */ export declare function ChartTooltip({ label, entries }: ChartTooltipProps): import("react/jsx-runtime").JSX.Element | null; //# sourceMappingURL=chart-utils.d.ts.map