export type HotspotType = "point" | "rectangle"; export type HotspotActionType = "none" | "link" | "modal" | "tooltip" | "callback" | "custom"; export interface HotspotAction { type: HotspotActionType; url?: string; target?: "_self" | "_blank"; modalTitle?: string; modalContent?: string; tooltipText?: string; callbackName?: string; callbackParams?: Record; customName?: string; customPayload?: Record; contentType?: string; entryId?: number | string; } export interface Hotspot { id: string; type: HotspotType; x: number; y: number; width?: number; height?: number; label?: string; action?: HotspotAction; } export interface Image { id: number; documentId: string; url?: string; formats?: { [key: string]: { url?: string; }; }; alternativeText?: string; width: number; height: number; } export interface ImageHotspotValue { image: string; hotspots?: Hotspot[]; } export interface ImageHotspotProps { name: string; value?: ImageHotspotValue | null; onChange: (event: { target: { name: string; value: ImageHotspotValue | null; type?: string; }; }) => void; attribute: { required?: boolean; [key: string]: any; }; intlLabel?: { id: string; defaultMessage: string; }; error?: string; [key: string]: any; } export interface RectangleState { isDrawing: boolean; start: { x: number; y: number; } | null; current: { x: number; y: number; width: number; height: number; } | null; }