"use client"; import { Card, CardContent, CardHeader } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { ActuatorSlider } from "./ActuatorSlider"; import type { ConnectedDeviceInfo } from "@/lib/buttplug/types"; import { Battery, BatteryFull, BatteryLow, BatteryMedium, BatteryWarning, Unlink } from "lucide-react"; interface DeviceCardProps { device: ConnectedDeviceInfo; batteryLevel: number | null; actuatorValues: Record; transmittingFeatureIndex: number | null; onActuatorChange: (featureIndex: number, value: number) => void; onStop: () => void; onDisconnect: () => void; } function BatteryIndicator({ level }: { level: number }) { const Icon = level < 0.15 ? BatteryWarning : level < 0.4 ? BatteryLow : level < 0.8 ? BatteryMedium : BatteryFull; return ( {Math.round(level * 100)}% ); } export function DeviceCard({ device, batteryLevel, actuatorValues, transmittingFeatureIndex, onActuatorChange, onStop, onDisconnect, }: DeviceCardProps) { return ( {device.displayName ?? device.name}
{device.hasBattery && (batteryLevel !== null ? ( ) : ( ))}
{device.actuators.length === 0 ? (

No controllable actuators reported.

) : ( device.actuators.map((actuator) => ( onActuatorChange(actuator.featureIndex, value)} /> )) )}
); }