import { DetailedHTMLProps, HTMLAttributes, ReactNode } from 'react' import VanillaTilt, { TiltOptions } from 'vanilla-tilt' import '@/assets/css/components/tools/repository-card.scss' import Card from '@/components/common/Card' import FlexBox from '@/components/common/FlexBox' interface RepositoryCardProps extends DetailedHTMLProps, HTMLDivElement> { icon: ReactNode toolName: string toolId: string options?: TiltOptions onOpen?: () => void onEdit?: () => void onSource?: () => void onPublish?: () => void onCancelReview?: () => void onDelete?: () => void } const RepositoryCard = ({ style, // eslint-disable-next-line @typescript-eslint/no-unused-vars ref, icon, toolName, toolId, options = { reverse: true, max: 8, glare: true, ['max-glare']: 0.3, scale: 1.03 }, onOpen, onEdit, onSource, onPublish, onCancelReview, onDelete, children, ...props }: RepositoryCardProps) => { const cardRef = useRef(null) useEffect(() => { cardRef.current && VanillaTilt.init(cardRef.current, options) }, [options]) return ( {icon} {toolName && {toolName}} {toolId && {`ID: ${toolId}`}} {onOpen && ( 打开 )} {onEdit && onPublish && ( 编辑 发布 )} {onSource && ( 源码 )} {onCancelReview && ( 取消审核 )} {onDelete && ( 删除 )} {children} ) } export default RepositoryCard