Spaces:
Running
Running
"use client" | |
import { useState, useEffect } from "react" | |
import { Button } from "@/components/ui/button" | |
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogClose } from "@/components/ui/dialog" | |
import { Input } from "@/components/ui/input" | |
import { Label } from "@/components/ui/label" | |
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" | |
import type { RobotConnection } from "@/types/robot" | |
interface EditRobotDialogProps { | |
robot: RobotConnection | null | |
isOpen: boolean | |
onOpenChange: (open: boolean) => void | |
onSave: (updatedRobot: RobotConnection) => void | |
} | |
export function EditRobotDialog({ robot, isOpen, onOpenChange, onSave }: EditRobotDialogProps) { | |
const [name, setName] = useState("") | |
const [type, setType] = useState<"so100_follower" | "so100_leader">("so100_follower") | |
useEffect(() => { | |
if (robot) { | |
setName(robot.name) | |
setType(robot.robotType || "so100_follower") | |
} | |
}, [robot]) | |
const handleSave = () => { | |
if (robot) { | |
onSave({ ...robot, name, robotType: type }) | |
} | |
} | |
if (!robot) return null | |
return ( | |
<Dialog open={isOpen} onOpenChange={onOpenChange}> | |
<DialogContent className="font-sans bg-background/80 backdrop-blur-sm border-primary/20"> | |
<DialogHeader> | |
<DialogTitle>Configure Robot</DialogTitle> | |
</DialogHeader> | |
<div className="grid gap-4 py-4"> | |
<div className="grid grid-cols-4 items-center gap-4"> | |
<Label htmlFor="name" className="text-right"> | |
Name | |
</Label> | |
<Input id="name" value={name} onChange={(e) => setName(e.target.value)} className="col-span-3 font-mono" /> | |
</div> | |
<div className="grid grid-cols-4 items-center gap-4"> | |
<Label className="text-right">Type</Label> | |
<RadioGroup value={type} onValueChange={(value) => setType(value as any)} className="col-span-3"> | |
<div className="flex items-center space-x-2"> | |
<RadioGroupItem value="so100_follower" id="r1" /> | |
<Label htmlFor="r1">SO-100 Follower</Label> | |
</div> | |
<div className="flex items-center space-x-2"> | |
<RadioGroupItem value="so100_leader" id="r2" /> | |
<Label htmlFor="r2">SO-100 Leader</Label> | |
</div> | |
</RadioGroup> | |
</div> | |
</div> | |
<DialogFooter> | |
<DialogClose asChild> | |
<Button type="button" variant="secondary"> | |
Cancel | |
</Button> | |
</DialogClose> | |
<DialogClose asChild> | |
<Button type="submit" onClick={handleSave}> | |
Save Changes | |
</Button> | |
</DialogClose> | |
</DialogFooter> | |
</DialogContent> | |
</Dialog> | |
) | |
} | |