@@ -93,14 +93,15 @@ function KanbanColumn({
9393 column : KanbanColumn
9494 cards : KanbanCard [ ]
9595} ) {
96+ const safeCards = cards || [ ] ;
9697 const { setNodeRef } = useSortable ( {
9798 id : column . id ,
9899 data : {
99100 type : "column" ,
100101 } ,
101102 } )
102103
103- const isLimitExceeded = column . limit && cards . length >= column . limit
104+ const isLimitExceeded = column . limit && safeCards . length >= column . limit
104105
105106 return (
106107 < div
@@ -115,7 +116,7 @@ function KanbanColumn({
115116 < h3 className = "font-semibold text-sm" > { column . title } </ h3 >
116117 < div className = "flex items-center gap-2" >
117118 < span className = "text-xs text-muted-foreground" >
118- { cards . length }
119+ { safeCards . length }
119120 { column . limit && ` / ${ column . limit } ` }
120121 </ span >
121122 { isLimitExceeded && (
@@ -128,11 +129,11 @@ function KanbanColumn({
128129 </ div >
129130 < ScrollArea className = "flex-1 p-4" >
130131 < SortableContext
131- items = { cards . map ( ( c ) => c . id ) }
132+ items = { safeCards . map ( ( c ) => c . id ) }
132133 strategy = { verticalListSortingStrategy }
133134 >
134135 < div className = "space-y-2" >
135- { cards . map ( ( card ) => (
136+ { safeCards . map ( ( card ) => (
136137 < SortableCard key = { card . id } card = { card } />
137138 ) ) }
138139 </ div >
@@ -144,11 +145,20 @@ function KanbanColumn({
144145
145146export default function KanbanBoard ( { columns, onCardMove, className } : KanbanBoardProps ) {
146147 const [ activeCard , setActiveCard ] = React . useState < KanbanCard | null > ( null )
147- const [ boardColumns , setBoardColumns ] = React . useState < KanbanColumn [ ] > ( columns )
148+
149+ // Ensure we always have valid columns with cards array
150+ const safeColumns = React . useMemo ( ( ) => {
151+ return ( columns || [ ] ) . map ( col => ( {
152+ ...col ,
153+ cards : col . cards || [ ]
154+ } ) ) ;
155+ } , [ columns ] ) ;
156+
157+ const [ boardColumns , setBoardColumns ] = React . useState < KanbanColumn [ ] > ( safeColumns )
148158
149159 React . useEffect ( ( ) => {
150- setBoardColumns ( columns )
151- } , [ columns ] )
160+ setBoardColumns ( safeColumns )
161+ } , [ safeColumns ] )
152162
153163 const sensors = useSensors (
154164 useSensor ( PointerSensor , {
0 commit comments