/* eslint-disable react/display-name */ import { forwardRef, useEffect, useState } from 'react' import { ModelCatalog } from '@janhq/core/lib/types' import { Badge } from '@janhq/uikit' import useGetMostSuitableModelVersion from '@/hooks/useGetMostSuitableModelVersion' import ExploreModelItemHeader from '@/screens/ExploreModels/ExploreModelItemHeader' import ModelVersionList from '@/screens/ExploreModels/ModelVersionList' import { toGigabytes } from '@/utils/converter' import { displayDate } from '@/utils/datetime' type Props = { model: ModelCatalog } const ExploreModelItem = forwardRef(({ model }, ref) => { const [show, setShow] = useState(false) const { availableVersions } = model const { suitableModel, getMostSuitableModelVersion } = useGetMostSuitableModelVersion() useEffect(() => { getMostSuitableModelVersion(availableVersions) // eslint-disable-next-line react-hooks/exhaustive-deps }, [availableVersions]) if (!suitableModel) { return null } const { quantizationName, bits, maxRamRequired, usecase } = suitableModel return (
About

{model.longDescription}

Author

{model.author}

Compatibility
{usecase} {toGigabytes(maxRamRequired)} RAM required
Version
v{model.version} {quantizationName && ( {quantizationName} )} {`${bits} Bits`}
Release Date

{displayDate(model.releaseDate)}

Tags
{model.tags.map((tag, i) => ( {tag} ))}
{model.availableVersions?.length > 0 && (
{show && ( )}
)}
) }) export default ExploreModelItem