diff --git a/apps/main/src/components/ActionCard.tsx b/apps/main/src/components/ActionCard.tsx index 7c6ffd8..e0fe152 100644 --- a/apps/main/src/components/ActionCard.tsx +++ b/apps/main/src/components/ActionCard.tsx @@ -32,7 +32,7 @@ export function ActionCard({ ? "bg-[rgb(128,78,236)] text-white border-transparent shadow-lg" : isPrimary ? "bg-primary text-white hover:shadow-lg" - : "bg-white border border-[#EAECF0] hover:shadow-md", + : "bg-white dark:bg-gray-800 border border-[#EAECF0] dark:border-gray-700 hover:shadow-md", className, )} > @@ -40,7 +40,7 @@ export function ActionCard({
{label} @@ -65,7 +65,7 @@ export function ActionCard({

{description} diff --git a/apps/main/src/components/DashboardActionCards.tsx b/apps/main/src/components/DashboardActionCards.tsx index 55b5406..4a5c4fd 100644 --- a/apps/main/src/components/DashboardActionCards.tsx +++ b/apps/main/src/components/DashboardActionCards.tsx @@ -1,5 +1,6 @@ import { FolderPlus, MessageCircle, PlusCircle, UserPlus } from "lucide-react"; import { useState } from "react"; +import { useTranslation } from "react-i18next"; import { ActionCard } from "./ActionCard"; export interface DashboardActionCardsProps { @@ -17,6 +18,7 @@ export function DashboardActionCards({ onInviteTeam, onSendMessage, }: DashboardActionCardsProps) { + const { t } = useTranslation("pages"); const [selected, setSelected] = useState(null); const handleClick = (id: CardId, callback?: () => void) => { @@ -28,32 +30,32 @@ export function DashboardActionCards({

} - label="Create Project" - description="Set goals and scope" + label={t("dashboard.actionCards.createProject.label")} + description={t("dashboard.actionCards.createProject.description")} isSelected={selected === "createProject"} onClick={() => handleClick("createProject", onCreateProject)} /> } - label="Create Task" - description="Break work into actions" + label={t("dashboard.actionCards.createTask.label")} + description={t("dashboard.actionCards.createTask.description")} isSelected={selected === "createTask"} onClick={() => handleClick("createTask", onCreateTask)} /> } - label="Invite Team" - description="Add collaborators instantly" + label={t("dashboard.actionCards.inviteTeam.label")} + description={t("dashboard.actionCards.inviteTeam.description")} isSelected={selected === "inviteTeam"} onClick={() => handleClick("inviteTeam", onInviteTeam)} /> } - label="Send Message" - description="Communicate updates fast" + label={t("dashboard.actionCards.sendMessage.label")} + description={t("dashboard.actionCards.sendMessage.description")} isSelected={selected === "sendMessage"} onClick={() => handleClick("sendMessage", onSendMessage)} /> diff --git a/apps/main/src/components/DashboardTaskList.tsx b/apps/main/src/components/DashboardTaskList.tsx index d3211c7..c3f71c1 100644 --- a/apps/main/src/components/DashboardTaskList.tsx +++ b/apps/main/src/components/DashboardTaskList.tsx @@ -18,19 +18,23 @@ const STATUS_BADGE: Record< { className: string; labelKey: string } > = { todo: { - className: "bg-blue-50 text-blue-600", + className: + "bg-blue-50 text-blue-600 dark:bg-blue-950/30 dark:text-blue-400", labelKey: "dashboard.taskList.status.todo", }, in_progress: { - className: "bg-yellow-50 text-yellow-600", + className: + "bg-yellow-50 text-yellow-600 dark:bg-yellow-950/30 dark:text-yellow-400", labelKey: "dashboard.taskList.status.inProgress", }, in_review: { - className: "bg-purple-50 text-purple-600", + className: + "bg-purple-50 text-purple-600 dark:bg-purple-950/30 dark:text-purple-400", labelKey: "dashboard.taskList.status.inReview", }, done: { - className: "bg-green-50 text-green-600", + className: + "bg-green-50 text-green-600 dark:bg-green-950/30 dark:text-green-400", labelKey: "dashboard.taskList.status.done", }, }; @@ -59,67 +63,71 @@ function TaskRow({ return (
{ if (task.tablos) { navigate(`/tablos/${task.tablos.id}?section=tasks`); } }} > - {/* Checkbox + Title */} -
- -

- {task.title} -

-
+ {/* Checkbox */} + + + {/* Title */} +

+ {task.title} +

{/* Tablo */} - {task.tablos && ( -
-
- - {task.tablos.name.charAt(0).toUpperCase()} +
+ {task.tablos && ( + <> +
+ + {task.tablos.name.charAt(0).toUpperCase()} + +
+ + {task.tablos.name} -
- - {task.tablos.name} - -
- )} + + )} +
{/* Date */} - + {formattedDate} {/* Status badge */} @@ -153,13 +161,13 @@ export function DashboardTaskList() { return ( <> -
-
-

+
+
+

{t("dashboard.taskList.title")}

-

+

{tablo.name}

{/* Date */} -
+
{formattedDate}
@@ -139,10 +143,14 @@ export function ProjectCard({ {/* Progress */}
- {t("tablo.card.progress")}: - {progress}% + + {t("tablo.card.progress")}: + + + {progress}% +
-
+
-

+

{t("tablo.projectList.title")}

{onSeeAllClick && (
{tabloTasks.length === 0 ? ( -
Aucune tâche
+
+ Aucune tâche +
) : ( tabloTasks.slice(0, 5).map((task) => (
{ ) : (
)} -

+

{task.title}

@@ -268,24 +354,40 @@ export const TabloDetailsPage = () => { {/* Files */}
-

Fichiers

-
{fileNames.length === 0 ? ( -

Aucun fichier

+

+ Aucun fichier +

) : ( fileNames.slice(0, 5).map((fileName) => ( -
+
-

{fileName}

+

+ {fileName} +

-
@@ -296,22 +398,57 @@ export const TabloDetailsPage = () => { {/* Info */}
-

Informations

+

+ Informations +

-
Tâches
{tabloTasks.length}
-
Fichiers
{fileNames.length}
-
Statut
{statusLabel}
-
Rôle
{isAdmin ? "Admin" : "Invité"}
+
+
Tâches
+
+ {tabloTasks.length} +
+
+
+
Fichiers
+
+ {fileNames.length} +
+
+
+
Statut
+
+ {statusLabel} +
+
+
+
Rôle
+
+ {isAdmin ? "Admin" : "Invité"} +
+
)} - {activeSection === "tasks" && } - {activeSection === "files" && } - {activeSection === "discussion" && } - {activeSection === "events" && } + {activeSection === "tasks" && ( + + )} + {activeSection === "files" && ( + + )} + {activeSection === "discussion" && ( + + )} + {activeSection === "events" && ( + + )}
); diff --git a/apps/main/src/pages/tablo.tsx b/apps/main/src/pages/tablo.tsx index 9063dcf..a81098a 100644 --- a/apps/main/src/pages/tablo.tsx +++ b/apps/main/src/pages/tablo.tsx @@ -118,7 +118,7 @@ export const TabloPage = () => { { title: t("common:error"), description: - "Vous êtes en mode lecture seule. Vous ne pouvez pas créer de tablo.", + "Vous êtes en mode lecture seule. Vous ne pouvez pas créer de projet.", type: "error", }, { timeout: 5000 }, @@ -327,7 +327,7 @@ export const TabloPage = () => {
@@ -336,7 +336,7 @@ export const TabloPage = () => {

- Erreur lors du chargement des tablos + Erreur lors du chargement des projets

{error instanceof Error @@ -507,13 +507,13 @@ export const TabloPage = () => { }} >

-

+

{formattedDate}

-

+

{getGreeting()},{" "} - + {user.first_name ?? user.name} !