(`/api/v1/client-invites/${tabloId}`, {
+ email,
+ });
return data;
},
onSuccess: (_data, { tabloId }) => {
diff --git a/apps/main/src/hooks/tasks.ts b/apps/main/src/hooks/tasks.ts
index 9d2dcd4..faaf47c 100644
--- a/apps/main/src/hooks/tasks.ts
+++ b/apps/main/src/hooks/tasks.ts
@@ -8,8 +8,8 @@ import type {
KanbanTaskUpdate,
TaskStatus,
} from "@xtablo/shared-types";
-import { supabase } from "../lib/supabase";
import { useMaybeUpgradeBlock } from "../contexts/UpgradeBlockContext";
+import { supabase } from "../lib/supabase";
type CreateEtapeInput = {
tabloId: string;
diff --git a/apps/main/src/main.css b/apps/main/src/main.css
index 01682a9..e3aecfc 100644
--- a/apps/main/src/main.css
+++ b/apps/main/src/main.css
@@ -1242,8 +1242,12 @@
}
@keyframes slide {
- 0% { transform: translateX(-100vw); }
- 100% { transform: translateX(100vw); }
+ 0% {
+ transform: translateX(-100vw);
+ }
+ 100% {
+ transform: translateX(100vw);
+ }
}
.animate-slide {
diff --git a/apps/main/src/pages/chat.tsx b/apps/main/src/pages/chat.tsx
index d586ecc..e80adc0 100644
--- a/apps/main/src/pages/chat.tsx
+++ b/apps/main/src/pages/chat.tsx
@@ -1,10 +1,10 @@
+import { ChatMessages, useChat, useChatUnread } from "@xtablo/tablo-views";
import { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import { useNavigate, useParams } from "react-router-dom";
import { ChatChannelPreview } from "../components/ChatChannelPreview";
import { ChatHeader } from "../components/ChatHeader";
-import { ChatMessages, useChat, useChatUnread } from "@xtablo/tablo-views";
-import { useTablosList, useTabloMembers } from "../hooks/tablos";
+import { useTabloMembers, useTablosList } from "../hooks/tablos";
import { useUser } from "../providers/UserStoreProvider";
export function ChatPage() {
diff --git a/apps/main/src/pages/settings.tsx b/apps/main/src/pages/settings.tsx
index a21501e..04d517b 100644
--- a/apps/main/src/pages/settings.tsx
+++ b/apps/main/src/pages/settings.tsx
@@ -32,9 +32,9 @@ import {
useInviteOrganizationUser,
useOrganization,
useRemoveOrganizationMember,
+ useRemoveOrgLogo,
useUpdateOrganization,
useUploadOrgLogo,
- useRemoveOrgLogo,
} from "../hooks/organization";
import { useRemoveAvatar, useUpdateProfile, useUploadAvatar } from "../hooks/profile";
import { useCookieConsent } from "../hooks/useCookieConsent";
@@ -529,7 +529,9 @@ export default function SettingsPage() {
{/* ── Tab content ─────────────────────────────────────────────────── */}
-
+
{activeSection === "overview" &&
(() => {
const overviewBlocks: Record = {
@@ -826,9 +850,13 @@ export const TabloDetailsPage = () => {
onCreateTask={(task) => createTask(task)}
onUpdateTask={(task) => updateTask(task)}
onUpdateTaskPositions={(updates) => updateTaskPositions(updates)}
- onUpdateTablo={(data) => updateTabloAsync({ ...data, name: data.name ?? undefined }).then(() => {})}
+ onUpdateTablo={(data) =>
+ updateTabloAsync({ ...data, name: data.name ?? undefined }).then(() => undefined)
+ }
onInviteUser={inviteUser}
- onCancelInvite={(params) => cancelInvite({ ...params, inviteId: Number(params.inviteId) })}
+ onCancelInvite={(params) =>
+ cancelInvite({ ...params, inviteId: Number(params.inviteId) })
+ }
/>
)}
{activeSection === "files" && (
@@ -849,15 +877,19 @@ export const TabloDetailsPage = () => {
isCancellingInvite={isCancellingInvite}
isCreatingFolder={isCreatingFolder}
isUpdatingFolder={isUpdatingFolder}
- onCreateFile={(params) => uploadFile(params).then(() => {})}
- onDeleteFile={(params) => deleteFile(params).then(() => {})}
- onDownloadFile={(params) => downloadFile(params).then(() => {})}
- onCreateFolder={(params) => createFolder(params).then(() => {})}
- onUpdateFolder={(params) => updateFolder(params).then(() => {})}
- onDeleteFolder={(params) => deleteFolder(params).then(() => {})}
- onUpdateTablo={(data) => updateTabloAsync({ ...data, name: data.name ?? undefined }).then(() => {})}
+ onCreateFile={(params) => uploadFile(params).then(() => undefined)}
+ onDeleteFile={(params) => deleteFile(params).then(() => undefined)}
+ onDownloadFile={(params) => downloadFile(params).then(() => undefined)}
+ onCreateFolder={(params) => createFolder(params).then(() => undefined)}
+ onUpdateFolder={(params) => updateFolder(params).then(() => undefined)}
+ onDeleteFolder={(params) => deleteFolder(params).then(() => undefined)}
+ onUpdateTablo={(data) =>
+ updateTabloAsync({ ...data, name: data.name ?? undefined }).then(() => undefined)
+ }
onInviteUser={inviteUser}
- onCancelInvite={(params) => cancelInvite({ ...params, inviteId: Number(params.inviteId) })}
+ onCancelInvite={(params) =>
+ cancelInvite({ ...params, inviteId: Number(params.inviteId) })
+ }
/>
)}
{activeSection === "discussion" && (
@@ -882,10 +914,14 @@ export const TabloDetailsPage = () => {
pendingInvites={pendingInvites?.map((inv) => ({ ...inv, id: String(inv.id) }))}
isInvitingUser={isInvitingUser}
isCancellingInvite={isCancellingInvite}
- onCreateEvent={() => {}}
- onUpdateTablo={(data) => updateTabloAsync({ ...data, name: data.name ?? undefined }).then(() => {})}
+ onCreateEvent={() => undefined}
+ onUpdateTablo={(data) =>
+ updateTabloAsync({ ...data, name: data.name ?? undefined }).then(() => undefined)
+ }
onInviteUser={inviteUser}
- onCancelInvite={(params) => cancelInvite({ ...params, inviteId: Number(params.inviteId) })}
+ onCancelInvite={(params) =>
+ cancelInvite({ ...params, inviteId: Number(params.inviteId) })
+ }
/>
)}
@@ -895,8 +931,13 @@ export const TabloDetailsPage = () => {
tabloTasks={tabloTasks}
tabloId={tabloId ?? ""}
isAdmin={isAdmin}
- onCreateTask={(task) => createTask({ ...task, status: task.status as "todo" | "in_progress" | "in_review" | "done" })}
- onCreateEtape={(params) => createEtape(params).then(() => {})}
+ onCreateTask={(task) =>
+ createTask({
+ ...task,
+ status: task.status as "todo" | "in_progress" | "in_review" | "done",
+ })
+ }
+ onCreateEtape={(params) => createEtape(params).then(() => undefined)}
isCreatingEtape={isCreatingEtape}
/>
)}
@@ -1164,4 +1205,3 @@ export const TabloDetailsPage = () => {
);
};
-
diff --git a/apps/main/src/pages/tablo.tsx b/apps/main/src/pages/tablo.tsx
index 622e533..f23fceb 100644
--- a/apps/main/src/pages/tablo.tsx
+++ b/apps/main/src/pages/tablo.tsx
@@ -3,6 +3,8 @@ import { DeleteTabloModal } from "@ui/components/DeleteTabloModal";
import { LoadingSpinner } from "@ui/components/LoadingSpinner";
import { toast } from "@xtablo/shared";
import { TabloInsert, UserTablo } from "@xtablo/shared/types/tablos.types";
+import { TaskModal } from "@xtablo/tablo-views";
+import { Badge } from "@xtablo/ui/components/badge";
import { Button } from "@xtablo/ui/components/button";
import {
Empty,
@@ -40,11 +42,9 @@ import { useNavigate, useSearchParams } from "react-router-dom";
import { DashboardActionCards } from "src/components/DashboardActionCards";
import { DashboardTaskList } from "src/components/DashboardTaskList";
import { InviteOrganizationModal } from "src/components/InviteOrganizationModal";
-import { TaskModal } from "@xtablo/tablo-views";
import { ProjectCardList } from "src/components/ProjectCardList";
-import { Badge } from "@xtablo/ui/components/badge";
-import { useCanCreateTablo, useCreateTablo, useDeleteTablo, useTablosList } from "../hooks/tablos";
import { useOrganization } from "../hooks/organization";
+import { useCanCreateTablo, useCreateTablo, useDeleteTablo, useTablosList } from "../hooks/tablos";
import { useIsReadOnlyUser, useUser } from "../providers/UserStoreProvider";
function getTabloIcon(color: string | null | undefined) {
diff --git a/apps/main/src/pages/tasks.tsx b/apps/main/src/pages/tasks.tsx
index a2763d2..40c6568 100644
--- a/apps/main/src/pages/tasks.tsx
+++ b/apps/main/src/pages/tasks.tsx
@@ -1,5 +1,6 @@
import { LoadingSpinner } from "@ui/components/LoadingSpinner";
import type { KanbanColumn, KanbanTask } from "@xtablo/shared-types";
+import { GanttChart, TaskModal } from "@xtablo/tablo-views";
import { Button } from "@xtablo/ui/components/button";
import {
DropdownMenu,
@@ -40,7 +41,6 @@ import { useMemo, useState } from "react";
import { useTranslation } from "react-i18next";
import { useNavigate, useSearchParams } from "react-router-dom";
import { twMerge } from "tailwind-merge";
-import { GanttChart, TaskModal } from "@xtablo/tablo-views";
import { useTablosList } from "../hooks/tablos";
import { useAllTasks, useUpdateTask } from "../hooks/tasks";
import { useUser } from "../providers/UserStoreProvider";