+
{task.dueDate ? (
⏰
diff --git a/components/ui/FontSizeToggle.tsx b/components/ui/FontSizeToggle.tsx
new file mode 100644
index 0000000..4fda56c
--- /dev/null
+++ b/components/ui/FontSizeToggle.tsx
@@ -0,0 +1,42 @@
+'use client';
+
+import { useUserPreferences } from '@/contexts/UserPreferencesContext';
+
+export function FontSizeToggle() {
+ const { preferences, toggleFontSize } = useUserPreferences();
+
+ // Icône pour la taille de police
+ const getFontSizeIcon = () => {
+ switch (preferences.viewPreferences.fontSize) {
+ case 'small':
+ return 'A';
+ case 'large':
+ return 'A';
+ default:
+ return 'A';
+ }
+ };
+
+ const getFontSizeScale = () => {
+ switch (preferences.viewPreferences.fontSize) {
+ case 'small':
+ return 'text-xs';
+ case 'large':
+ return 'text-lg';
+ default:
+ return 'text-sm';
+ }
+ };
+
+ return (
+
+ );
+}
diff --git a/lib/types.ts b/lib/types.ts
index 47ba8a8..40f5652 100644
--- a/lib/types.ts
+++ b/lib/types.ts
@@ -70,7 +70,8 @@ export interface ViewPreferences {
showFilters: boolean;
objectivesCollapsed: boolean;
theme: 'light' | 'dark';
- [key: string]: boolean | 'tags' | 'priority' | 'light' | 'dark' | undefined;
+ fontSize: 'small' | 'medium' | 'large';
+ [key: string]: boolean | 'tags' | 'priority' | 'light' | 'dark' | 'small' | 'medium' | 'large' | undefined;
}
export interface ColumnVisibility {
diff --git a/services/user-preferences.ts b/services/user-preferences.ts
index dc1f487..5ca796d 100644
--- a/services/user-preferences.ts
+++ b/services/user-preferences.ts
@@ -18,7 +18,8 @@ const DEFAULT_PREFERENCES: UserPreferences = {
showObjectives: true,
showFilters: true,
objectivesCollapsed: false,
- theme: 'dark'
+ theme: 'dark',
+ fontSize: 'medium'
},
columnVisibility: {
hiddenStatuses: []
diff --git a/src/contexts/UserPreferencesContext.tsx b/src/contexts/UserPreferencesContext.tsx
index 28b2d94..4e797aa 100644
--- a/src/contexts/UserPreferencesContext.tsx
+++ b/src/contexts/UserPreferencesContext.tsx
@@ -16,6 +16,7 @@ interface UserPreferencesContextType {
toggleObjectivesCollapse: () => Promise;
toggleTheme: () => Promise;
setTheme: (theme: 'light' | 'dark') => Promise;
+ toggleFontSize: () => Promise;
// Column Visibility
updateColumnVisibility: (updates: Partial) => Promise;
@@ -90,6 +91,14 @@ export function UserPreferencesProvider({ children, initialPreferences }: UserPr
await updateViewPreferences({ theme });
}, [updateViewPreferences]);
+ const toggleFontSize = useCallback(async () => {
+ const fontSizes: ('small' | 'medium' | 'large')[] = ['small', 'medium', 'large'];
+ const currentIndex = fontSizes.indexOf(preferences.viewPreferences.fontSize);
+ const nextIndex = (currentIndex + 1) % fontSizes.length;
+ const newFontSize = fontSizes[nextIndex];
+ await updateViewPreferences({ fontSize: newFontSize });
+ }, [preferences.viewPreferences.fontSize, updateViewPreferences]);
+
// === COLUMN VISIBILITY ===
const updateColumnVisibility = useCallback(async (updates: Partial) => {
@@ -129,6 +138,7 @@ export function UserPreferencesProvider({ children, initialPreferences }: UserPr
toggleObjectivesCollapse,
toggleTheme,
setTheme,
+ toggleFontSize,
updateColumnVisibility,
toggleColumnVisibility,
isColumnVisible