diff --git a/src/components/kanban/Board.tsx b/src/components/kanban/Board.tsx
index e2468a1..c058cb5 100644
--- a/src/components/kanban/Board.tsx
+++ b/src/components/kanban/Board.tsx
@@ -86,7 +86,7 @@ export function KanbanBoard({ tasks, onCreateTask, onEditTask, onUpdateStatus, c
+
{visibleColumns.map((column) => (
-
-
-
-
-
-
- {statusConfig.label} {statusConfig.icon}
-
-
-
-
- {String(tasks.length).padStart(2, '0')}
-
- {onCreateTask && (
-
- )}
-
-
-
+
+
+
+
+ setShowQuickAdd(true)}
+ />
+
@@ -78,15 +59,11 @@ export function KanbanColumn({ id, tasks, onCreateTask, onEditTask, compactView
)}
{tasks.length === 0 && !showQuickAdd ? (
-
-
- {statusConfig.icon}
-
-
NO DATA
-
-
+
) : (
tasks.map((task) => (
@@ -94,7 +71,8 @@ export function KanbanColumn({ id, tasks, onCreateTask, onEditTask, compactView
)}
-
+
+
);
}
diff --git a/src/components/kanban/SwimlanesBase.tsx b/src/components/kanban/SwimlanesBase.tsx
index 0057f9d..176058d 100644
--- a/src/components/kanban/SwimlanesBase.tsx
+++ b/src/components/kanban/SwimlanesBase.tsx
@@ -8,6 +8,7 @@ import { useState } from 'react';
import { useUserPreferences } from '@/contexts/UserPreferencesContext';
import { useDragAndDrop } from '@/hooks/useDragAndDrop';
import { getAllStatuses, getTechStyle } from '@/lib/status-config';
+import { Card, CardHeader, ColumnHeader, DropZone } from '@/components/ui';
import {
DndContext,
DragEndEvent,
@@ -49,7 +50,7 @@ function DroppableColumn({
});
return (
-
+
t.id)} strategy={verticalListSortingStrategy}>
{tasks.map(task => (
@@ -90,7 +91,7 @@ function DroppableColumn({
)}
>
)}
-
+
);
}
@@ -197,11 +198,18 @@ export function SwimlanesBase({
{statusesToShow.map(status => {
const statusConfig = allStatuses.find(s => s.key === status);
const techStyle = statusConfig ? getTechStyle(statusConfig.color) : null;
+ const tasksInStatus = tasks.filter(task => task.status === status);
+
return (
-
- {statusConfig?.icon} {statusConfig?.label}
-
+
);
})}
@@ -214,12 +222,12 @@ export function SwimlanesBase({
const isCollapsed = collapsedSwimlanes.has(swimlane.key);
return (
-
+
{/* Header de la swimlane */}
-
+
-
+
{/* Contenu de la swimlane */}
{!isCollapsed && (
@@ -272,7 +280,7 @@ export function SwimlanesBase({
})}
)}
-
+
);
})}
diff --git a/src/components/ui-showcase/UIShowcaseClient.tsx b/src/components/ui-showcase/UIShowcaseClient.tsx
index f56c5ad..db206f2 100644
--- a/src/components/ui-showcase/UIShowcaseClient.tsx
+++ b/src/components/ui-showcase/UIShowcaseClient.tsx
@@ -8,7 +8,7 @@ import { Alert, AlertTitle, AlertDescription } from '@/components/ui/Alert';
import { Input } from '@/components/ui/Input';
import { StyledCard } from '@/components/ui/StyledCard';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card';
-import { StatCard, ProgressBar, ActionCard, TaskCard, MetricCard, ToggleButton, SearchInput, ControlPanel, ControlSection, ControlGroup, FilterSummary, FilterChip } from '@/components/ui';
+import { StatCard, ProgressBar, ActionCard, TaskCard, MetricCard, ToggleButton, SearchInput, ControlPanel, ControlSection, ControlGroup, FilterSummary, FilterChip, ColumnHeader, EmptyState, DropZone } from '@/components/ui';
import { ThemeSelector } from '@/components/ThemeSelector';
export function UIShowcaseClient() {
@@ -244,6 +244,54 @@ export function UIShowcaseClient() {
+
+ {/* Nouveaux exemples avec props flexibles */}
+