import { RenderCallbackContent } from '../types/cell-content'; /** * Options for creating a Svelte cell */ export interface SvelteCellOptions { /** * Svelte component to render (works with both Svelte 4 and 5) * - Svelte 4: Class-based component (SvelteComponent) * - Svelte 5: Function-based component (Component) */ component: any; /** * Props to pass to the component */ props?: Record; /** * Event listeners to attach to the component * Uses Svelte's event dispatching system ($on for v4, events option for v5) * @example * { * click: (e) => console.log('clicked', e), * change: (value) => console.log('changed', value) * } */ on?: Record void>; /** * Optional context to pass to the component * Accepts either a Map or a plain object (converted to Map internally) */ context?: Map | Record; } /** * Create a datatable cell that renders a Svelte component * * This helper manages the Svelte component lifecycle, mounting and unmounting * the component when the cell is added/removed from the table. * * Supports both Svelte 4 (class-based) and Svelte 5 (function-based) components * with automatic version detection. * * @param options - Svelte cell options * @returns Render callback content for the datatable * * @example * ```typescript * import { createSvelteCell } from 'dap-design-system/helpers/svelte' * import StatusBadge from './StatusBadge.svelte' * * const columns = [ * { * id: 'status', * header: 'Status', * cell: (row) => createSvelteCell({ * component: StatusBadge, * props: { * status: row.status, * variant: 'success' * }, * on: { * click: () => console.log('Badge clicked') * } * }) * } * ] * ``` */ export declare function createSvelteCell(options: SvelteCellOptions): RenderCallbackContent; export declare function createSvelteCell(component: any, props?: Record): RenderCallbackContent; /** * Type helper for creating type-safe cell renderers * * @example * ```typescript * import type { SvelteCellRenderer } from 'dap-design-system/helpers/svelte' * * interface User { * id: number * status: string * } * * const statusCell: SvelteCellRenderer = (row) => createSvelteCell({ * component: StatusBadge, * props: { status: row.status } * }) * ``` */ export type SvelteCellRenderer = (row: TData) => RenderCallbackContent;