import { create } from "zustand"; import { temporal } from "zundo"; import { ulid } from "ulid"; import type { Board, Card, Label, ChecklistItem, Attachment, ColumnWidth, } from "@/types/board"; import { saveBoard, loadBoard } from "@/lib/storage"; import { useAppStore } from "@/stores/app-store"; interface BoardState { board: Board | null; saving: boolean; lastSaved: number | null; } interface BoardActions { openBoard: (boardId: string) => Promise; closeBoard: () => void; addColumn: (title: string) => void; updateColumnTitle: (columnId: string, title: string) => void; deleteColumn: (columnId: string) => void; moveColumn: (fromIndex: number, toIndex: number) => void; setColumnWidth: (columnId: string, width: ColumnWidth) => void; setColumnColor: (columnId: string, color: string | null) => void; setColumnWipLimit: (columnId: string, limit: number | null) => void; toggleColumnCollapse: (columnId: string) => void; addCard: (columnId: string, title: string) => string; updateCard: (cardId: string, updates: Partial) => void; deleteCard: (cardId: string) => void; duplicateCard: (cardId: string) => string | null; moveCard: ( cardId: string, fromColumnId: string, toColumnId: string, toIndex: number ) => void; addLabel: (name: string, color: string) => void; updateLabel: (labelId: string, updates: Partial