| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 'use client'
- import type { FC } from 'react'
- import classNames from '@/utils/classnames'
- import useTheme from '@/hooks/use-theme'
- import { basePath } from '@/utils/var'
- import { useGlobalPublicStore } from '@/context/global-public-context'
- export type LogoStyle = 'default' | 'monochromeWhite'
-
- export const logoPathMap: Record<LogoStyle, string> = {
- default: '/logo/logo.svg',
- monochromeWhite: '/logo/logo-monochrome-white.svg',
- }
-
- export type LogoSize = 'large' | 'medium' | 'small'
-
- export const logoSizeMap: Record<LogoSize, string> = {
- large: 'w-16 h-7',
- medium: 'w-12 h-[22px]',
- small: 'w-9 h-4',
- }
-
- type DifyLogoProps = {
- style?: LogoStyle
- size?: LogoSize
- className?: string
- }
-
- const DifyLogo: FC<DifyLogoProps> = ({
- style = 'default',
- size = 'medium',
- className,
- }) => {
- const { theme } = useTheme()
- const themedStyle = (theme === 'dark' && style === 'default') ? 'monochromeWhite' : style
- const { systemFeatures } = useGlobalPublicStore()
- const hasBrandingLogo = Boolean(systemFeatures.branding.enabled && systemFeatures.branding.workspace_logo)
-
- let src = `${basePath}${logoPathMap[themedStyle]}`
- if (hasBrandingLogo)
- src = systemFeatures.branding.workspace_logo
-
- return (
- <img
- src={src}
- className={classNames('block object-contain', logoSizeMap[size], hasBrandingLogo && 'w-auto', className)}
- alt={hasBrandingLogo ? 'Logo' : 'Dify logo'}
- />
- )
- }
-
- export default DifyLogo
|