@@ -14,6 +14,7 @@ import { CollaborativeCursors } from "../CollaborativeCursors";
1414import { useCanvas } from "../../model/useCanvas" ;
1515import { MemoizedGroupNode , NoteNode , NoteNodeType } from "@/entities/node" ;
1616import { cn } from "@/shared/lib" ;
17+ import { useConnectionStatus } from "@/shared/model/useConnectionStatus" ;
1718
1819interface CanvasProps {
1920 className ?: string ;
@@ -36,6 +37,7 @@ export function Canvas({ className }: CanvasProps) {
3637 onNodeDragStop,
3738 onConnect,
3839 } = useCanvas ( ) ;
40+ const status = useConnectionStatus ( ) ;
3941
4042 const proOptions = { hideAttribution : true } ;
4143
@@ -75,8 +77,25 @@ export function Canvas({ className }: CanvasProps) {
7577 selectNodesOnDrag = { false }
7678 >
7779 < Controls />
78- < div className = "fixed bottom-5 left-16 z-30 h-4 w-4 text-neutral-50 hover:cursor-pointer" >
79- { /* <button onClick={sortNodes}>Sort</button> */ }
80+ < div
81+ className = { cn (
82+ status === "connected" && "text-green-500" ,
83+ status === "connecting" && "text-amber-500" ,
84+ status === "disconnected" && "text-red-500" ,
85+ "fixed bottom-5 left-16 z-30 text-xs hover:cursor-pointer" ,
86+ ) }
87+ >
88+ < div className = "flex items-center gap-1" >
89+ < div
90+ className = { cn (
91+ status === "connected" && "bg-green-500" ,
92+ status === "connecting" && "bg-amber-500" ,
93+ status === "disconnected" && "bg-red-500" ,
94+ "h-2 w-2 rounded-full" ,
95+ ) }
96+ > </ div >
97+ < div > { status } </ div >
98+ </ div >
8099 </ div >
81100 < MiniMap />
82101 < Background variant = { BackgroundVariant . Dots } gap = { 12 } size = { 1 } />
0 commit comments