package-item.tsx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. 'use client'
  2. import type { FC } from 'react'
  3. import React from 'react'
  4. import type { Plugin } from '../../../types'
  5. import type { PackageDependency } from '../../../types'
  6. import { pluginManifestToCardPluginProps } from '../../utils'
  7. import LoadedItem from './loaded-item'
  8. import LoadingError from '../../base/loading-error'
  9. import type { VersionProps } from '@/app/components/plugins/types'
  10. type Props = {
  11. checked: boolean
  12. onCheckedChange: (plugin: Plugin) => void
  13. payload: PackageDependency
  14. isFromMarketPlace?: boolean
  15. versionInfo: VersionProps
  16. }
  17. const PackageItem: FC<Props> = ({
  18. payload,
  19. checked,
  20. onCheckedChange,
  21. isFromMarketPlace,
  22. versionInfo,
  23. }) => {
  24. if (!payload.value?.manifest)
  25. return <LoadingError />
  26. const plugin = pluginManifestToCardPluginProps(payload.value.manifest)
  27. return (
  28. <LoadedItem
  29. payload={plugin}
  30. checked={checked}
  31. onCheckedChange={onCheckedChange}
  32. isFromMarketPlace={isFromMarketPlace}
  33. versionInfo={versionInfo}
  34. />
  35. )
  36. }
  37. export default React.memo(PackageItem)