mirror of
http://112.124.100.131/huang.ze/ebiz-dify-ai.git
synced 2025-12-11 03:46:52 +08:00
feat: partner badge in marketplace (#14258)
This commit is contained in:
37
web/app/components/plugins/base/badges/icon-with-tooltip.tsx
Normal file
37
web/app/components/plugins/base/badges/icon-with-tooltip.tsx
Normal 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)
|
||||
29
web/app/components/plugins/base/badges/partner.tsx
Normal file
29
web/app/components/plugins/base/badges/partner.tsx
Normal 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
|
||||
29
web/app/components/plugins/base/badges/verified.tsx
Normal file
29
web/app/components/plugins/base/badges/verified.tsx
Normal 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
|
||||
Reference in New Issue
Block a user