"use client"; import { useCallback, useEffect, useState } from "react"; import { IconEye, IconEyeOff } from "@tabler/icons-react"; import { Button } from "@kandev/ui/button"; import { Input } from "@kandev/ui/input"; import { Label } from "@kandev/ui/label"; import { Spinner } from "@kandev/ui/spinner"; import { useToast } from "@/components/toast-provider"; import { setGitHubWorkspaceConnection } from "@/lib/api/domains/github-api"; export function GitHubPATForm({ workspaceId, onSaved, }: { workspaceId: string; onSaved: () => void; }) { const [token, setToken] = useState(""); const [visible, setVisible] = useState(false); const [saving, setSaving] = useState(false); const { toast } = useToast(); useEffect(() => { setToken(""); setVisible(false); setSaving(false); }, [workspaceId]); const submit = useCallback( async (event: React.FormEvent) => { event.preventDefault(); if (!token.trim()) return; setSaving(true); try { await setGitHubWorkspaceConnection(workspaceId, { source: "pat", token: token.trim() }); setToken(""); toast({ description: "Workspace GitHub token connected", variant: "success" }); onSaved(); } catch (error) { toast({ description: error instanceof Error ? error.message : "Connection failed", variant: "error", }); } finally { setSaving(false); } }, [onSaved, toast, token, workspaceId], ); return (
); }