feat: partner badge in marketplace (#14258)

This commit is contained in:
Wu Tianwei
2025-02-25 12:09:37 +08:00
committed by GitHub
parent 28add22f20
commit 42b13bd312
31 changed files with 2288 additions and 31 deletions

View File

@@ -0,0 +1,37 @@
import React, { type FC } from 'react'
import cn from '@/utils/classnames'
import Tooltip from '@/app/components/base/tooltip'
import { Theme } from '@/types/app'
type IconWithTooltipProps = {
className?: string
popupContent?: string
theme: Theme
BadgeIconLight: React.ElementType
BadgeIconDark: React.ElementType
}
const IconWithTooltip: FC<IconWithTooltipProps> = ({
className,
theme,
popupContent,
BadgeIconLight,
BadgeIconDark,
}) => {
const isDark = theme === Theme.dark
const iconClassName = cn('w-5 h-5', className)
const Icon = isDark ? BadgeIconDark : BadgeIconLight
return (
<Tooltip
popupClassName='p-1.5 border-[0.5px] border-[0.5px] border-components-panel-border bg-components-tooltip-bg text-text-secondary system-xs-medium'
popupContent={popupContent}
>
<div className='flex items-center justify-center shrink-0'>
<Icon className={iconClassName} />
</div>
</Tooltip>
)
}
export default React.memo(IconWithTooltip)

View File

@@ -0,0 +1,29 @@
import type { FC } from 'react'
import { useTranslation } from 'react-i18next'
import IconWithTooltip from './icon-with-tooltip'
import PartnerDark from '@/app/components/base/icons/src/public/plugins/PartnerDark'
import PartnerLight from '@/app/components/base/icons/src/public/plugins/PartnerLight'
import useTheme from '@/hooks/use-theme'
type PartnerProps = {
className?: string
}
const Partner: FC<PartnerProps> = ({
className,
}) => {
const { t } = useTranslation()
const { theme } = useTheme()
return (
<IconWithTooltip
className={className}
theme={theme}
BadgeIconLight={PartnerLight}
BadgeIconDark={PartnerDark}
popupContent={t('plugin.marketplace.partnerTip')}
/>
)
}
export default Partner

View File

@@ -0,0 +1,29 @@
import type { FC } from 'react'
import { useTranslation } from 'react-i18next'
import IconWithTooltip from './icon-with-tooltip'
import VerifiedDark from '@/app/components/base/icons/src/public/plugins/VerifiedDark'
import VerifiedLight from '@/app/components/base/icons/src/public/plugins/VerifiedLight'
import useTheme from '@/hooks/use-theme'
type VerifiedProps = {
className?: string
}
const Verified: FC<VerifiedProps> = ({
className,
}) => {
const { t } = useTranslation()
const { theme } = useTheme()
return (
<IconWithTooltip
className={className}
theme={theme}
BadgeIconLight={VerifiedLight}
BadgeIconDark={VerifiedDark}
popupContent={t('plugin.marketplace.verifiedTip')}
/>
)
}
export default Verified