@@ -14,6 +14,7 @@ import { CollaborativeCursors } from "../CollaborativeCursors";
14
14
import { useCanvas } from "../../model/useCanvas" ;
15
15
import { MemoizedGroupNode , NoteNode , NoteNodeType } from "@/entities/node" ;
16
16
import { cn } from "@/shared/lib" ;
17
+ import { useConnectionStatus } from "@/shared/model/useConnectionStatus" ;
17
18
18
19
interface CanvasProps {
19
20
className ?: string ;
@@ -36,6 +37,7 @@ export function Canvas({ className }: CanvasProps) {
36
37
onNodeDragStop,
37
38
onConnect,
38
39
} = useCanvas ( ) ;
40
+ const status = useConnectionStatus ( ) ;
39
41
40
42
const proOptions = { hideAttribution : true } ;
41
43
@@ -75,8 +77,25 @@ export function Canvas({ className }: CanvasProps) {
75
77
selectNodesOnDrag = { false }
76
78
>
77
79
< 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 >
80
99
</ div >
81
100
< MiniMap />
82
101
< Background variant = { BackgroundVariant . Dots } gap = { 12 } size = { 1 } />
0 commit comments