diff --git a/components/forms/CreateTaskForm.tsx b/components/forms/CreateTaskForm.tsx
index 5b4ad77..086a856 100644
--- a/components/forms/CreateTaskForm.tsx
+++ b/components/forms/CreateTaskForm.tsx
@@ -7,7 +7,7 @@ import { Input } from '@/components/ui/Input';
import { TagInput } from '@/components/ui/TagInput';
import { TaskPriority, TaskStatus } from '@/lib/types';
import { CreateTaskData } from '@/clients/tasks-client';
-import { getAllStatuses } from '@/lib/status-config';
+import { getAllStatuses, getAllPriorities } from '@/lib/status-config';
interface CreateTaskFormProps {
isOpen: boolean;
@@ -120,10 +120,11 @@ export function CreateTaskForm({ isOpen, onClose, onSubmit, loading = false }: C
disabled={loading}
className="w-full px-3 py-2 bg-slate-800/50 border border-slate-700/50 rounded-lg text-slate-100 font-mono text-sm focus:outline-none focus:ring-2 focus:ring-cyan-500/50 focus:border-cyan-500/50 hover:border-slate-600/50 transition-all duration-200 backdrop-blur-sm"
>
-
-
-
-
+ {getAllPriorities().map(priorityConfig => (
+
+ ))}
diff --git a/components/forms/EditTaskForm.tsx b/components/forms/EditTaskForm.tsx
index 8ed25bf..769f239 100644
--- a/components/forms/EditTaskForm.tsx
+++ b/components/forms/EditTaskForm.tsx
@@ -7,7 +7,7 @@ import { Input } from '@/components/ui/Input';
import { TagInput } from '@/components/ui/TagInput';
import { Task, TaskPriority, TaskStatus } from '@/lib/types';
import { UpdateTaskData } from '@/clients/tasks-client';
-import { getAllStatuses } from '@/lib/status-config';
+import { getAllStatuses, getAllPriorities } from '@/lib/status-config';
interface EditTaskFormProps {
isOpen: boolean;
@@ -132,10 +132,11 @@ export function EditTaskForm({ isOpen, onClose, onSubmit, task, loading = false
disabled={loading}
className="w-full px-3 py-2 bg-slate-800/50 border border-slate-700/50 rounded-lg text-slate-100 font-mono text-sm focus:outline-none focus:ring-2 focus:ring-cyan-500/50 focus:border-cyan-500/50 hover:border-slate-600/50 transition-all duration-200 backdrop-blur-sm"
>
-
-
-
-
+ {getAllPriorities().map(priorityConfig => (
+
+ ))}
diff --git a/components/kanban/KanbanFilters.tsx b/components/kanban/KanbanFilters.tsx
index bb6ef1d..44d548a 100644
--- a/components/kanban/KanbanFilters.tsx
+++ b/components/kanban/KanbanFilters.tsx
@@ -5,6 +5,7 @@ import { TaskPriority } from '@/lib/types';
import { Button } from '@/components/ui/Button';
import { Input } from '@/components/ui/Input';
import { useTasksContext } from '@/contexts/TasksContext';
+import { getAllPriorities, getPriorityColorHex } from '@/lib/status-config';
export interface KanbanFilters {
search?: string;
@@ -67,26 +68,17 @@ export function KanbanFilters({ filters, onFiltersChange }: KanbanFiltersProps)
});
};
- const handlePinnedTagChange = (tagName: string | undefined) => {
- onFiltersChange({
- ...filters,
- pinnedTag: tagName
- });
- };
-
const handleClearFilters = () => {
onFiltersChange({});
};
- const hasActiveFilters = filters.search || filters.tags?.length || filters.priorities?.length;
const activeFiltersCount = (filters.tags?.length || 0) + (filters.priorities?.length || 0) + (filters.search ? 1 : 0);
- const priorityOptions: { value: TaskPriority; label: string; color: string }[] = [
- { value: 'urgent', label: 'Urgent', color: 'bg-red-500' },
- { value: 'high', label: 'Haute', color: 'bg-orange-500' },
- { value: 'medium', label: 'Moyenne', color: 'bg-yellow-500' },
- { value: 'low', label: 'Basse', color: 'bg-blue-500' }
- ];
+ const priorityOptions = getAllPriorities().map(priorityConfig => ({
+ value: priorityConfig.key,
+ label: priorityConfig.label,
+ color: priorityConfig.color
+ }));
return (
@@ -198,7 +190,10 @@ export function KanbanFilters({ filters, onFiltersChange }: KanbanFiltersProps)
: 'border-slate-600 bg-slate-800/50 text-slate-400 hover:border-slate-500'
}`}
>
-
+
{priority.label}
))}
diff --git a/components/kanban/QuickAddTask.tsx b/components/kanban/QuickAddTask.tsx
index 2d91b85..a9e221c 100644
--- a/components/kanban/QuickAddTask.tsx
+++ b/components/kanban/QuickAddTask.tsx
@@ -5,6 +5,7 @@ import { Card } from '@/components/ui/Card';
import { TagInput } from '@/components/ui/TagInput';
import { TaskStatus, TaskPriority } from '@/lib/types';
import { CreateTaskData } from '@/clients/tasks-client';
+import { getAllPriorities, getPriorityConfig } from '@/lib/status-config';
interface QuickAddTaskProps {
status: TaskStatus;
@@ -136,10 +137,11 @@ export function QuickAddTask({ status, onSubmit, onCancel }: QuickAddTaskProps)
disabled={isSubmitting}
className="bg-transparent border-none outline-none text-xs font-mono text-slate-400"
>
-
-
-
-
+ {getAllPriorities().map(priorityConfig => (
+
+ ))}
diff --git a/components/kanban/TaskCard.tsx b/components/kanban/TaskCard.tsx
index 5c20f20..4f48340 100644
--- a/components/kanban/TaskCard.tsx
+++ b/components/kanban/TaskCard.tsx
@@ -7,6 +7,7 @@ import { Badge } from '@/components/ui/Badge';
import { TagDisplay } from '@/components/ui/TagDisplay';
import { useTasksContext } from '@/contexts/TasksContext';
import { useDraggable } from '@dnd-kit/core';
+import { getPriorityConfig } from '@/lib/status-config';
interface TaskCardProps {
task: Task;
@@ -159,11 +160,7 @@ export function TaskCard({ task, onDelete, onEdit, onUpdateTitle, compactView =
)}
{/* Indicateur de priorité compact */}
-
+
@@ -237,11 +234,7 @@ export function TaskCard({ task, onDelete, onEdit, onUpdateTitle, compactView =
)}
{/* Indicateur de priorité tech */}
-
+
diff --git a/lib/status-config.ts b/lib/status-config.ts
index 7d4713f..ef6f0e9 100644
--- a/lib/status-config.ts
+++ b/lib/status-config.ts
@@ -1,4 +1,4 @@
-import { TaskStatus } from './types';
+import { TaskStatus, TaskPriority } from './types';
export interface StatusConfig {
key: TaskStatus;
@@ -114,3 +114,74 @@ export const getBadgeVariant = (color: StatusConfig['color']): 'success' | 'prim
default: return 'default';
}
};
+
+// Configuration des priorités
+export interface PriorityConfig {
+ key: TaskPriority;
+ label: string;
+ icon: string;
+ color: 'blue' | 'yellow' | 'purple' | 'red';
+ order: number;
+}
+
+export const PRIORITY_CONFIG: Record = {
+ low: {
+ key: 'low',
+ label: 'Faible',
+ icon: '🔵',
+ color: 'blue',
+ order: 1
+ },
+ medium: {
+ key: 'medium',
+ label: 'Moyenne',
+ icon: '🟡',
+ color: 'yellow',
+ order: 2
+ },
+ high: {
+ key: 'high',
+ label: 'Élevée',
+ icon: '🟣',
+ color: 'purple',
+ order: 3
+ },
+ urgent: {
+ key: 'urgent',
+ label: 'Urgente',
+ icon: '🔴',
+ color: 'red',
+ order: 4
+ }
+} as const;
+
+// Utilitaires pour les priorités
+export const getPriorityConfig = (priority: TaskPriority): PriorityConfig => {
+ return PRIORITY_CONFIG[priority];
+};
+
+export const getAllPriorities = (): PriorityConfig[] => {
+ return Object.values(PRIORITY_CONFIG).sort((a, b) => a.order - b.order);
+};
+
+export const getPriorityLabel = (priority: TaskPriority): string => {
+ return PRIORITY_CONFIG[priority].label;
+};
+
+export const getPriorityIcon = (priority: TaskPriority): string => {
+ return PRIORITY_CONFIG[priority].icon;
+};
+
+export const getPriorityColor = (priority: TaskPriority): PriorityConfig['color'] => {
+ return PRIORITY_CONFIG[priority].color;
+};
+
+export const getPriorityColorHex = (color: PriorityConfig['color']): string => {
+ const colorMap = {
+ blue: '#60a5fa',
+ yellow: '#fbbf24',
+ purple: '#a78bfa',
+ red: '#f87171'
+ };
+ return colorMap[color];
+};
diff --git a/lib/types.ts b/lib/types.ts
index 49e3912..a877cfa 100644
--- a/lib/types.ts
+++ b/lib/types.ts
@@ -1,5 +1,5 @@
// Types de base pour les tâches
-// Note: TaskStatus est maintenant géré par la configuration centralisée dans lib/status-config.ts
+// Note: TaskStatus et TaskPriority sont maintenant gérés par la configuration centralisée dans lib/status-config.ts
export type TaskStatus = 'todo' | 'in_progress' | 'done' | 'cancelled' | 'freeze';
export type TaskPriority = 'low' | 'medium' | 'high' | 'urgent';
export type TaskSource = 'reminders' | 'jira' | 'manual';