UNPKG

@nivo/calendar

Version:
170 lines 5.34 kB
import { Box, BoxAlign, Dimensions, ValueFormat } from '@nivo/core'; import { Theme } from '@nivo/theming'; import { PartialTheme } from '@nivo/theming'; import { LegendProps } from '@nivo/legends'; export type BBox = Record<'x' | 'y' | 'height' | 'width', number>; type Legend = Record<'x' | 'y' | 'rotation', number>; export type Month = { path: string; bbox: BBox; date: Date; year: number; month: number; }; export type MonthLegend = Omit<Month, 'path'> & Legend; export type Year = { year: number; bbox: BBox; }; export type YearLegend = Year & Legend; export type DateOrString = string | Date; export type CalendarDatum = { day: string; value: number; }; export type CalendarData = { from: DateOrString; to: DateOrString; data: CalendarDatum[]; }; export type CalendarDayData = { date: Date; day: string; value?: number; color: string; size: number; x: number; y: number; }; export type CalendarLegendProps = LegendProps & { itemCount: number; }; export interface ColorScale { (value: number | { valueOf(): number; }): string; ticks(count?: number): number[]; } export type CalendarYearLegendsProps = { legend: (year: number) => string | number; theme: Theme; years: YearLegend[]; }; export type CalendarMonthLegendsProps = { legend: (year: number, month: number, date: Date) => string | number; months: MonthLegend[]; theme: Theme; }; export type CalendarTooltipProps = { value: string; day: string; color: string; }; export type CalendarMonthPathProps = { borderColor: string; borderWidth: number; path: string; }; export type Datum = { data: { date: Date; day: string; size: number; x: number; y: number; }; date: Date; day: string; value: number; color: string; size: number; x: number; y: number; }; export type CalendarDayProps = { data: Omit<Datum, 'data' | 'value'> | Datum; x: number; y: number; size: number; color: string; borderWidth: number; borderColor: string; isInteractive: boolean; tooltip: React.FC<CalendarTooltipProps>; formatValue: (value: number) => string; } & Partial<InteractivityProps<Omit<Datum, 'data' | 'value'> | Datum, SVGRectElement>>; type InteractivityProps<DatumProp, ElementType> = Partial<Record<'onClick' | 'onMouseEnter' | 'onMouseLeave' | 'onMouseMove', (datum: DatumProp, event: React.MouseEvent<ElementType>) => void>>; export type CommonCalendarProps = { minValue: 'auto' | number; maxValue: 'auto' | number; direction: 'horizontal' | 'vertical'; colors: string[]; colorScale: ColorScale; margin: Box; align: BoxAlign; yearLegend: (year: number) => string | number; yearSpacing: number; yearLegendOffset: number; yearLegendPosition: 'before' | 'after'; monthSpacing: number; monthBorderWidth: number; monthBorderColor: string; monthLegend: (year: number, month: number, date: Date) => string | number; monthLegendOffset: number; monthLegendPosition: 'before' | 'after'; daySpacing: number; dayBorderWidth: number; dayBorderColor: string; emptyColor: string; valueFormat: ValueFormat<number>; legendFormat: ValueFormat<number>; theme: PartialTheme; isInteractive: boolean; tooltip: React.FC<CalendarTooltipProps>; legends: CalendarLegendProps[]; renderWrapper: boolean; }; export type CalendarSvgProps = Dimensions & CalendarData & Partial<CommonCalendarProps & InteractivityProps<Omit<Datum, 'data' | 'value'> | Datum, SVGRectElement> & { role: string; }>; export type CalendarCanvasProps = Dimensions & CalendarData & Partial<CommonCalendarProps & InteractivityProps<Omit<Datum, 'data' | 'value'> | Datum, HTMLCanvasElement> & { pixelRatio: number; }>; export type TimeRangeDayData = (Omit<CalendarDatum, 'value'> | CalendarDatum) & { coordinates: { x: number; y: number; }; date: Date; firstWeek: number; month: number; year: number; color: string; width: number; height: number; }; export type TimeRangeTooltipProps = Omit<TimeRangeDayData, 'date' | 'value'> & { value: string; }; export type Weekday = 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'; export type TimeRangeSvgProps = Dimensions & { data: CalendarDatum[]; } & Partial<Omit<CalendarData, 'data'>> & Partial<Omit<CommonCalendarProps, 'yearLegend' | 'yearSpacing' | 'yearLegendOffset' | 'yearLegendPosition' | 'monthSpacing' | 'monthBorderWidth' | 'monthBorderColor'> & InteractivityProps<TimeRangeDayData, SVGRectElement> & { dayRadius: number; square: boolean; role: string; weekdayLegendOffset: number; weekdayTicks: Array<0 | 1 | 2 | 3 | 4 | 5 | 6>; firstWeekday: Weekday; weekdays: string[]; }>; export type TimeRangeDayProps = Record<'x' | 'y' | 'borderWidth' | 'rx' | 'ry' | 'height' | 'width', number> & { data: TimeRangeDayData; color: string; borderColor: string; isInteractive: boolean; tooltip: React.FC<TimeRangeTooltipProps>; formatValue: (value: number) => string; } & Partial<InteractivityProps<TimeRangeDayData, SVGRectElement>>; export {}; //# sourceMappingURL=types.d.ts.map