diff --git a/src/components/features/playground/workspace/editor/components/header.tsx b/src/components/features/playground/workspace/editor/components/header.tsx index 8c3a6b5..820ccf6 100644 --- a/src/components/features/playground/workspace/editor/components/header.tsx +++ b/src/components/features/playground/workspace/editor/components/header.tsx @@ -4,6 +4,7 @@ import { RedoButton } from "./redo-button"; import { UndoButton } from "./undo-button"; import { ResetButton } from "./reset-button"; import { FormatButton } from "./format-button"; +import { LspStatusButton } from "./lsp-status-button"; import { LanguageSelector } from "./language-selector"; interface WorkspaceEditorHeaderProps { @@ -20,8 +21,9 @@ export function WorkspaceEditorHeader({ className={cn("h-8 flex flex-none items-center px-2 border-b", className)} >
-
+
+
diff --git a/src/components/features/playground/workspace/editor/components/lsp-status-button.tsx b/src/components/features/playground/workspace/editor/components/lsp-status-button.tsx new file mode 100644 index 0000000..7ed6d23 --- /dev/null +++ b/src/components/features/playground/workspace/editor/components/lsp-status-button.tsx @@ -0,0 +1,45 @@ +"use client"; + +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; +import { Button } from "@/components/ui/button"; +import { useProblem } from "@/hooks/use-problem"; +import type { MonacoLanguageClient } from "monaco-languageclient"; + +const getLspStatusColor = (client: MonacoLanguageClient | null) => { + if (!client) return "bg-amber-500"; + return client.isRunning() ? "bg-emerald-500" : "bg-red-500"; +}; + +export function LspStatusButton() { + const { monacoLanguageClient } = useProblem(); + + return ( + + + + + + + Language Server + + + + ); +}