import React, { useState } from 'react'
import {
Card,
CardContent,
Typography,
Grid,
Box,
Chip,
Tooltip,
Link,
ClickAwayListener,
} from '@material-ui/core'
import { useTranslate } from 'react-admin'
import { DateField } from '../common'
// Helper component for permission chips with clickable persistent tooltips
const PermissionChip = ({ label, permission, classes }) => {
const [open, setOpen] = useState(false)
const translate = useTranslate()
if (!permission) return null
const hasHosts = permission.requiredHosts?.length > 0
const hasTooltip = permission.reason || hasHosts
const handleClick = () => {
if (hasTooltip) {
setOpen((prev) => !prev)
}
}
const handleClose = () => {
setOpen(false)
}
const tooltipContent = (
{permission.reason && (
{permission.reason}
)}
{hasHosts && (
{translate('resources.plugin.messages.requiredHosts')}:{' '}
{permission.requiredHosts.map((host, i) => (
{i > 0 && ', '}
{host}
))}
)}
)
const chip = (
)
if (!hasTooltip) {
return chip
}
return (
{chip}
)
}
// Info row component for responsive grid
const InfoRow = ({ label, children, classes, isSmall }) => (
<>
{label}
{children}
>
)
// Plugin information card
export const InfoCard = ({ record, manifest, classes, translate, isSmall }) => (
{translate('resources.plugin.sections.info')}
{record.id}
{translate('resources.plugin.messages.idHelp')}
{manifest?.name && (
{manifest.name}
)}
{manifest?.version && (
{manifest.version}
)}
{manifest?.description && (
{manifest.description}
)}
{manifest?.author && (
{manifest.author}
)}
{manifest?.website && (
{manifest.website}
)}
{manifest?.permissions &&
Object.keys(manifest.permissions).length > 0 && (
{Object.entries(manifest.permissions).map(([key, value]) => (
))}
{translate('resources.plugin.messages.clickPermissions')}
)}
{record.path}
)