import React, { useMemo } from 'react' import { useTranslation } from 'react-i18next' import { useContext } from 'use-context-selector' import { useBoolean } from 'ahooks' import { RiBugLine, RiCloseLine, RiHardDrive3Line, RiVerifiedBadgeLine, } from '@remixicon/react' import type { PluginDetail } from '../types' import { PluginSource } from '../types' import Description from '../card/base/description' import Icon from '../card/base/card-icon' import Title from '../card/base/title' import OrgInfo from '../card/base/org-info' import OperationDropdown from './operation-dropdown' import PluginInfo from '@/app/components/plugins/plugin-page/plugin-info' import ActionButton from '@/app/components/base/action-button' import Button from '@/app/components/base/button' import Badge from '@/app/components/base/badge' import Confirm from '@/app/components/base/confirm' import Tooltip from '@/app/components/base/tooltip' import { BoxSparkleFill } from '@/app/components/base/icons/src/vender/plugin' import { Github } from '@/app/components/base/icons/src/public/common' import I18n from '@/context/i18n' import cn from '@/utils/classnames' const i18nPrefix = 'plugin.action' type Props = { detail: PluginDetail onHide: () => void onDelete: () => void } const DetailHeader = ({ detail, onHide, onDelete, }: Props) => { const { t } = useTranslation() const { locale } = useContext(I18n) const hasNewVersion = useMemo(() => { if (!detail) return false return false // return pluginDetail.latest_version !== pluginDetail.version }, [detail]) const handleUpdate = () => {} const [isShowPluginInfo, { setTrue: showPluginInfo, setFalse: hidePluginInfo, }] = useBoolean(false) const [isShowDeleteConfirm, { setTrue: showDeleteConfirm, setFalse: hideDeleteConfirm, }] = useBoolean(false) const usedInApps = 3 return (