import { type ComponentType } from "react"; import { type StyleProp, type ViewStyle } from "../../style/index.js"; import { type DragDropProviderProps, type DropZoneProps, type DraggableProps, type DragHandleProps } from "../drag-drop/drag-drop.shared.js"; import { type CardProps } from "../../molecules/card/card.shared.js"; import { type BadgeProps } from "../../atoms/badge/badge.shared.js"; import { type RowMenuProps } from "../row-menu/row-menu.shared.js"; import { type RowMenuItem } from "../row-menu/row-menu.styles.js"; import { type BoardColumn, type BoardItem, type BoardMove } from "./board.types.js"; import { type BoardSkin } from "./board.styles.js"; export type { BoardColumn, BoardItem, BoardMove }; export interface BoardProps { /** The columns (lanes), left to right. */ columns: BoardColumn[]; /** * CONTROLLED list; order within a column is array order filtered by `columnId`. The kit * never mutates it: apply each `onMove` yourself (`applyBoardMove` is the standard * reducer). Omit it (optionally passing `defaultItems`) for uncontrolled use. */ items?: BoardItem[]; /** Initial list for UNCONTROLLED use; Board then applies each move internally. */ defaultItems?: BoardItem[]; /** Fired with the would-be next list after a drop, in both modes. */ onItemsChange?: (items: BoardItem[]) => void; /** Fired on every completed drop with the computed move (source, target, index, neighbors). */ onMove?: (move: BoardMove) => void; /** Makes each card body pressable and reports the pressed item. */ onPressItem?: (item: BoardItem) => void; /** Fired when a row of a card's kebab menu (`item.menu`) is selected. */ onSelectItemMenu?: (item: BoardItem, menuItem: RowMenuItem, menuIndex: number) => void; /** Column width in px (default 300). */ columnWidth?: number; compact?: boolean; /** Message shown in an empty column (default "No items"). */ emptyLabel?: string; /** E2E hook forwarded to the root element. */ testID?: string; /** Outer layout composition only (width/flex), never a restyle hook. */ style?: StyleProp; } export interface BoardParts { DragDropProvider: ComponentType; DropZone: ComponentType; Draggable: ComponentType>; DragHandle: ComponentType; Card: ComponentType; Badge: ComponentType; RowMenu: ComponentType; } /** Build a Board component from a platform skin and its platform-styled parts. */ export declare function createBoard(skin: BoardSkin, parts?: BoardParts): (props: BoardProps) => import("react").JSX.Element; //# sourceMappingURL=board.shared.d.ts.map