From 9d270da61b1bcc75086e282bd7351f8103c98f59 Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Thu, 16 Oct 2025 21:25:12 +0200 Subject: [PATCH 1/5] Glow effect --- ui/src/pages/login.tsx | 8 +++++--- ui/src/pages/signup.tsx | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ui/src/pages/login.tsx b/ui/src/pages/login.tsx index 3e14e2c..b9a5756 100644 --- a/ui/src/pages/login.tsx +++ b/ui/src/pages/login.tsx @@ -92,8 +92,7 @@ export function LoginPage() {
e.stopPropagation()} > -
+ {/* Glow effect behind the card */} +
+ +
e.stopPropagation()} > -
+ {/* Glow effect behind the card */} +
+ +
Date: Thu, 16 Oct 2025 21:36:27 +0200 Subject: [PATCH 2/5] Improve login/signup ui --- ui/index.html | 1 - ui/src/pages/login.tsx | 12 +++++++++++- ui/src/pages/signup.tsx | 12 +++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/ui/index.html b/ui/index.html index b4ea48d..e0981a4 100644 --- a/ui/index.html +++ b/ui/index.html @@ -4,7 +4,6 @@ - XTablo diff --git a/ui/src/pages/login.tsx b/ui/src/pages/login.tsx index b9a5756..ef90555 100644 --- a/ui/src/pages/login.tsx +++ b/ui/src/pages/login.tsx @@ -28,6 +28,7 @@ export function LoginPage() { // 3D Parallax effect const cardRef = useRef(null); const [transform, setTransform] = useState(""); + const [isHovered, setIsHovered] = useState(false); const handleMouseMove = (e: React.MouseEvent) => { if (!cardRef.current) return; @@ -46,10 +47,12 @@ export function LoginPage() { setTransform( `perspective(1000px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale3d(1.01, 1.01, 1.01)` ); + setIsHovered(true); }; const handleMouseLeave = () => { setTransform(""); + setIsHovered(false); }; // Theme @@ -103,7 +106,14 @@ export function LoginPage() { {/* Glow effect behind the card */}
-
+
(null); const [transform, setTransform] = useState(""); + const [isHovered, setIsHovered] = useState(false); const handleMouseMove = (e: React.MouseEvent) => { if (!cardRef.current) return; @@ -50,10 +51,12 @@ export function SignUpPage() { setTransform( `perspective(1000px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale3d(1.01, 1.01, 1.01)` ); + setIsHovered(true); }; const handleMouseLeave = () => { setTransform(""); + setIsHovered(false); }; // Theme @@ -149,7 +152,14 @@ export function SignUpPage() { {/* Glow effect behind the card */}
-
+
Date: Thu, 16 Oct 2025 21:38:23 +0200 Subject: [PATCH 3/5] Improve ui of the event type card --- ui/src/components/EventTypeCard.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/src/components/EventTypeCard.tsx b/ui/src/components/EventTypeCard.tsx index f6c0ba6..373a42e 100644 --- a/ui/src/components/EventTypeCard.tsx +++ b/ui/src/components/EventTypeCard.tsx @@ -36,7 +36,10 @@ export function EventTypeCard({ return publicUrl; }; return ( - + {eventType.name} From 82be584c3fe77360c0f74ae21b2d8b0da879663d Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Thu, 16 Oct 2025 21:41:58 +0200 Subject: [PATCH 4/5] Ship ship ship --- ui/src/components/WebcalModal.tsx | 3 +-- ui/src/pages/tablo.tsx | 8 +++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ui/src/components/WebcalModal.tsx b/ui/src/components/WebcalModal.tsx index 3c02dac..1cef2d3 100644 --- a/ui/src/components/WebcalModal.tsx +++ b/ui/src/components/WebcalModal.tsx @@ -15,12 +15,11 @@ import { import { useTablosList } from "@ui/hooks/tablos"; import { useGenerateWebcalToken } from "@ui/hooks/webcal"; import { toast } from "@ui/lib/toast"; -import { CopyIcon } from "@ui/ui-library/icons"; import { useState } from "react"; import { Button } from "./ui/button"; import { Input } from "./ui/input"; import { Label } from "./ui/label"; - +import { CopyIcon } from "lucide-react"; interface WebcalModalProps { open: boolean; onOpenChange: (open: boolean) => void; diff --git a/ui/src/pages/tablo.tsx b/ui/src/pages/tablo.tsx index b42fac2..f974401 100644 --- a/ui/src/pages/tablo.tsx +++ b/ui/src/pages/tablo.tsx @@ -373,8 +373,10 @@ export const TabloPage = () => { {/* Trash Icon - Only show for admins */} {isAdmin && ( - + )} {/* Read-only indicator for non-admins */} From c6dfe6b6ae7b40664b228b6dc7c097d6a21eeb1a Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Thu, 16 Oct 2025 21:57:27 +0200 Subject: [PATCH 5/5] Improve tablo invites --- api/src/tablo.ts | 8 +++-- ui/src/pages/join.tsx | 74 +++++++++++++++++++++++-------------------- 2 files changed, 46 insertions(+), 36 deletions(-) diff --git a/api/src/tablo.ts b/api/src/tablo.ts index 351c5dc..496aa14 100644 --- a/api/src/tablo.ts +++ b/api/src/tablo.ts @@ -451,8 +451,12 @@ tabloRouter.post("/join", async (c) => { await supabase.from("tablo_invites").delete().eq("id", invite_id); - const channel = streamServerClient.channel("messaging", tablo_id); - await channel.addMembers([joiner.id]); + try { + const channel = streamServerClient.channel("messaging", tablo_id); + await channel.addMembers([joiner.id]); + } catch (error) { + console.error("error adding member to channel", error); + } return c.json({ message: "Tablo joined successfully" }); }); diff --git a/ui/src/pages/join.tsx b/ui/src/pages/join.tsx index 3439062..02970bf 100644 --- a/ui/src/pages/join.tsx +++ b/ui/src/pages/join.tsx @@ -1,6 +1,9 @@ +import { Button } from "@ui/components/ui/button"; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@ui/components/ui/card"; import { useJoinTablo } from "@ui/hooks/invite"; import { toast } from "@ui/lib/toast"; import { useUser } from "@ui/providers/UserStoreProvider"; +import { CheckCircle2Icon, XCircleIcon } from "lucide-react"; import { useNavigate, useParams, useSearchParams } from "react-router-dom"; export const JoinPage = () => { @@ -12,39 +15,35 @@ export const JoinPage = () => { const [searchParams] = useSearchParams(); const token = searchParams.get("token"); - if (!tablo_name || !token) { - toast.add( - { - title: "Invitation invalide", - description: "Veuillez vérifier le lien d'invitation", - type: "error", - }, - { - timeout: 2000, - } - ); - navigate("/"); - } - return ( -
+
-

+

Rejoindre le tablo "{tablo_name}"

-
-
-

{tablo_name}

-

Vous avez été invité(e) à rejoindre ce tablo

-
+ + + {tablo_name} + Vous avez été invité(e) à rejoindre ce tablo + -
- + - -
-
+ + +
);