import { type ReactNode } from 'react'; import type { BoardChange, BoardColumnDef } from './types'; export interface BoardProps { columns: BoardColumnDef[]; onChange: (change: BoardChange) => void; onLoadMore?: (columnId: string) => void; onAddTicket?: (columnId: string) => void; onArchiveColumn?: (columnId: string) => void; getTicketHref?: (ticketId: string) => string; renderAssignSlot?: (ticket: BoardColumnDef['tickets'][number]) => ReactNode; onApprove?: (ticketId: string, requestId?: string) => void | Promise; onReject?: (ticketId: string, requestId?: string) => void | Promise; collapseStorageKey?: string; loadMoreRootMargin?: string; className?: string; } /** * Picks which board exists for this input mode, and that is all it does. * * - **Drag board** — pointer devices from the `md` breakpoint up: the full * drag-and-drop implementation below. * - **Touch board** (`touch-board.tsx`) — everything else: a swipeable * scroll-snap pager of full-height lanes, registering no DnD at all. The * HTML5 drag events Pragmatic builds on never fire under touch, so on those * devices a drag board is dead affordances stapled to 400px lanes. * * The rule is `DRAG_AND_DROP_MEDIA_QUERY` (pointer AND hover AND width — see * `use-drag-and-drop-enabled.ts` for why neither alone survives an iPad or a * touchscreen laptop), read live: attaching a mouse or crossing the breakpoint * swaps the subtree without a reload. * * While the answer is unknown (SSR and the hydration render) neither subtree * exists — mounting one is a guess that runs the loser's effects and, for the * drag board, registers DnD on a device that may be a phone. The empty shell * keeps the container's footprint; `useMediaQuery` resolves in a pre-paint * layout effect, so on the client the shell is never actually painted. */ export declare function Board(props: BoardProps): import("react").JSX.Element; //# sourceMappingURL=board.d.ts.map