import type { FC } from 'react' import React from 'react' import { RiArrowRightUpLine, RiLoginCircleLine, RiVerifiedBadgeLine } from '@remixicon/react' import { Github } from '../base/icons/src/public/common' import Badge from '../base/badge' import type { Plugin } from './types' import CornerMark from './card/base/corner-mark' import Description from './card/base/description' import Icon from './card/base/icon' import OrgInfo from './card/base/org-info' import Title from './card/base/title' import cn from '@/utils/classnames' import { getLocaleOnServer } from '@/i18n/server' type Props = { className?: string payload: Plugin } const PluginItem: FC = ({ className, payload, }) => { const locale = getLocaleOnServer() const { type, name, org, label } = payload const hasNewVersion = payload.latest_version !== payload.version return (
{/* Header */}
<RiVerifiedBadgeLine className="shrink-0 ml-0.5 w-4 h-4 text-text-accent" /> <Badge className='ml-1' text={payload.version} hasRedCornerMark={hasNewVersion} /> </div> <Description text={payload.brief[locale]} descriptionLineRows={1}></Description> </div> </div> </div> <div className='mt-1.5 mb-1 flex justify-between items-center h-4 px-3'> <div className='flex items-center'> <OrgInfo className="mt-0.5" orgName={org} packageName={name} packageNameClassName='w-auto max-w-[150px]' /> <div className='mx-2 text-text-quaternary system-xs-regular'>ยท</div> <div className='flex text-text-tertiary system-xs-regular space-x-1'> <RiLoginCircleLine className='w-4 h-4' /> <span>2 sets of endpoints enabled</span> </div> </div> <div className='flex items-center'> <div className='mr-1 text-text-tertiary system-2xs-medium-uppercase'>From</div> <div className='flex items-center space-x-0.5 text-text-secondary'> <Github className='ml-1 w-3 h-3' /> <div className='system-2xs-semibold-uppercase'>GitHub</div> <RiArrowRightUpLine className='w-3 h-3' /> </div> </div> </div> </div> ) } export default PluginItem