import { Button, ButtonGroup } from '@heroui/button' import { Switch } from '@heroui/switch' import { useState } from 'react' import { CgDebug } from 'react-icons/cg' import { FiEdit3 } from 'react-icons/fi' import { MdDeleteForever } from 'react-icons/md' import DisplayCardContainer from './container' type NetworkType = OneBotConfig['network'] export type NetworkDisplayCardFields = Array<{ label: string value: NetworkType[T][0][keyof NetworkType[T][0]] render?: ( value: NetworkType[T][0][keyof NetworkType[T][0]] ) => React.ReactNode }> export interface NetworkDisplayCardProps { data: NetworkType[T][0] showType?: boolean typeLabel: string fields: NetworkDisplayCardFields onEdit: () => void onEnable: () => Promise onDelete: () => Promise onEnableDebug: () => Promise } const NetworkDisplayCard = ({ data, showType, typeLabel, fields, onEdit, onEnable, onDelete, onEnableDebug }: NetworkDisplayCardProps) => { const { name, enable, debug } = data const [editing, setEditing] = useState(false) const handleEnable = () => { setEditing(true) onEnable().finally(() => setEditing(false)) } const handleDelete = () => { setEditing(true) onDelete().finally(() => setEditing(false)) } const handleEnableDebug = () => { setEditing(true) onEnableDebug().finally(() => setEditing(false)) } return ( } enableSwitch={ } tag={showType && typeLabel} title={name} >
{fields.map((field, index) => (
{field.label} {field.render ? ( field.render(field.value) ) : ( {field.value} )}
))}
) } export default NetworkDisplayCard