aura-glass
Version:
A comprehensive glassmorphism design system for React applications with 142+ production-ready components
186 lines • 5 kB
TypeScript
import { CSSProperties } from 'react';
export type ChartTheme = 'light' | 'dark' | 'glass';
export type ChartVariant = 'default' | 'minimal' | 'detailed';
export type ChartType = 'line' | 'area' | 'bar' | 'pie' | 'scatter' | 'heatmap' | 'radar';
export interface ChartDataPoint {
x: number | string | Date;
y: number | string;
label?: string;
color?: string;
size?: number;
metadata?: Record<string, any>;
formattedValue?: string | number;
}
export interface ChartSeries {
id: string;
name: string;
data: ChartDataPoint[];
type?: ChartType;
color?: string;
style?: CSSProperties;
visible?: boolean;
zIndex?: number;
}
export type DataPoint = ChartDataPoint;
export interface TooltipData {
datasetIndex: number;
dataIndex: number;
x: number;
y: number;
value: {
dataset?: string;
label?: string;
value?: number | string;
color?: string;
extra?: Record<string, any>;
};
}
export interface ChartDataset {
id?: string;
label?: string;
data: (number | ChartDataPoint)[];
backgroundColor?: string | string[];
borderColor?: string | string[];
borderWidth?: number;
fill?: boolean | number | string;
tension?: number;
pointRadius?: number;
pointHoverRadius?: number;
style?: CSSProperties;
hidden?: boolean;
}
export interface ChartAxis {
id: string;
label?: string;
type: 'linear' | 'log' | 'category' | 'time';
domain?: [number | string, number | string];
ticks?: number;
format?: (value: any) => string;
style?: CSSProperties;
grid?: boolean;
show?: boolean;
}
export interface ChartGrid {
show?: boolean;
style?: CSSProperties;
horizontal?: boolean;
vertical?: boolean;
}
export interface ChartLegend {
show?: boolean;
position?: 'top' | 'bottom' | 'left' | 'right';
align?: 'start' | 'center' | 'end';
style?: CSSProperties;
itemStyle?: CSSProperties;
interactive?: boolean;
}
export interface ChartTooltip {
show?: boolean;
format?: 'number' | 'currency' | 'percentage' | 'string';
style?: CSSProperties;
followCursor?: boolean;
shared?: boolean;
position?: 'top' | 'bottom' | 'left' | 'right' | 'auto';
offset?: number;
}
export interface ChartAnimation {
enabled?: boolean;
duration?: number;
easing?: string;
delay?: number;
stagger?: number;
}
export interface ChartInteraction {
hover?: boolean;
click?: boolean;
zoom?: boolean;
pan?: boolean;
brush?: boolean;
onHover?: (data: ChartDataPoint, series: ChartSeries) => void;
onClick?: (data: ChartDataPoint, series: ChartSeries) => void;
onZoom?: (domain: [number, number]) => void;
onPan?: (domain: [number, number]) => void;
}
export interface ChartResponsive {
enabled?: boolean;
breakpoints?: {
[key: string]: Partial<ChartConfig>;
};
}
export interface ChartConfig {
theme: ChartTheme;
variant: ChartVariant;
type: ChartType;
width?: number | string;
height?: number | string;
margin?: {
top: number;
right: number;
bottom: number;
left: number;
};
background?: string;
series: ChartSeries[];
xAxis?: ChartAxis;
yAxis?: ChartAxis;
grid?: ChartGrid;
legend?: ChartLegend;
tooltip?: ChartTooltip;
animation?: ChartAnimation;
interaction?: ChartInteraction;
responsive?: ChartResponsive;
style?: CSSProperties;
}
export interface ChartState {
hoveredPoint?: ChartDataPoint;
hoveredSeries?: ChartSeries;
selectedPoints?: ChartDataPoint[];
selectedSeries?: ChartSeries[];
zoomDomain?: [number, number];
panOffset?: number;
isLoading?: boolean;
error?: string;
}
export interface ChartQualityTier {
tier: 'low' | 'medium' | 'high' | 'ultra';
maxDataPoints: number;
animationEnabled: boolean;
interactionEnabled: boolean;
quality: 'fast' | 'balanced' | 'quality';
}
export interface ChartPhysicsConfig {
enabled?: boolean;
stiffness?: number;
damping?: number;
mass?: number;
velocity?: number;
friction?: number;
}
export interface ChartPerformanceMetrics {
renderTime: number;
dataProcessingTime: number;
animationTime: number;
memoryUsage: number;
fps: number;
}
export type ChartEventType = 'hover' | 'click' | 'zoom' | 'pan' | 'brush' | 'resize' | 'dataUpdate' | 'themeChange';
export interface ChartEvent {
type: ChartEventType;
data?: any;
series?: ChartSeries;
point?: ChartDataPoint;
timestamp: number;
source: 'user' | 'system' | 'animation';
}
export interface ChartPlugin {
id: string;
name: string;
version: string;
enabled: boolean;
config?: Record<string, any>;
init?: (chart: any) => void;
destroy?: () => void;
onEvent?: (event: ChartEvent) => void;
render?: (context: any) => void;
}
//# sourceMappingURL=ChartTypes.d.ts.map