import { BoxProps, ElementProps, Factory, MantineRadius, StylesApiProps } from '@mantine/core'; import { ScheduleEventData, ScheduleMode } from '../../types'; export type ScheduleEventStylesNames = 'event' | 'eventInner' | 'eventResizeHandle'; export type ScheduleEventVariant = 'filled' | 'light'; export type ScheduleEventCssVariables = { event: '--event-bg' | '--event-color' | '--event-radius' | '--event-hover'; }; export type RenderEventBody = (event: ScheduleEventData) => React.ReactNode; export type RenderEvent = (event: ScheduleEventData, props: React.ComponentPropsWithoutRef<'button'> & { children: React.ReactNode; }) => React.ReactElement; export interface ScheduleEventProps extends BoxProps, StylesApiProps, ElementProps<'button'> { __staticSelector?: string; /** Event to display */ event: ScheduleEventData; /** Key of `theme.radius` or any valid CSS value to set border-radius @default 'sm' */ radius?: MantineRadius; /** If set, event has `white-space: nowrap` @default false */ nowrap?: boolean; /** If set, event shrinks its font-size with limited height @default false */ autoSize?: boolean; /** Event size @default 'sm' */ size?: 'sm' | 'md' | (string & {}); /** Function to customize event body, `event` object is passed as first argument */ renderEventBody?: RenderEventBody; /** Function to fully customize event rendering, receives all props that would be passed to the root element including children */ renderEvent?: RenderEvent; /** Event hanging position */ hanging?: 'start' | 'end' | 'both' | 'none'; /** If true, event can be dragged @default false */ draggable?: boolean; /** Called when event drag starts */ onEventDragStart?: (event: ScheduleEventData) => void; /** Called when event drag ends */ onEventDragEnd?: () => void; /** If true, event is currently being dragged @default false */ isDragging?: boolean; /** Interaction mode: 'default' allows all interactions, 'static' disables event interactions @default default */ mode?: ScheduleMode; /** If true, event can be resized by dragging its edges @default false */ withResize?: boolean; /** Called when resize starts on an edge */ onResizeStart?: (edge: 'top' | 'bottom', e: React.PointerEvent) => void; /** If true, event is currently being resized @default false */ isResizing?: boolean; } export type ScheduleEventFactory = Factory<{ props: ScheduleEventProps; ref: HTMLButtonElement; stylesNames: ScheduleEventStylesNames; vars: ScheduleEventCssVariables; variant: ScheduleEventVariant; }>; export declare const ScheduleEvent: import("@mantine/core").MantineComponent<{ props: ScheduleEventProps; ref: HTMLButtonElement; stylesNames: ScheduleEventStylesNames; vars: ScheduleEventCssVariables; variant: ScheduleEventVariant; }>;