dify/web/app/components/plugins/readme-panel/entrance.tsx
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

72 lines
2.1 KiB
TypeScript

import type { PluginDetail } from '../types'
import type { ReadmePanelPresentation } from './store'
import { cn } from '@langgenius/dify-ui/cn'
import { useId } from 'react'
import { useTranslation } from 'react-i18next'
import { BUILTIN_TOOLS_ARRAY } from './constants'
import { useReadmePanelStore } from './store'
export const ReadmeEntrance = ({
pluginDetail,
presentation = 'drawer',
className,
showShortTip = false,
}: {
pluginDetail: PluginDetail
presentation?: ReadmePanelPresentation
className?: string
showShortTip?: boolean
}) => {
const { t } = useTranslation()
const triggerId = useId()
const openReadmePanel = useReadmePanelStore((s) => s.openReadmePanel)
const handleReadmeClick = () => {
if (pluginDetail) {
openReadmePanel({
detail: pluginDetail,
presentation,
triggerId,
})
}
}
if (
!pluginDetail ||
!pluginDetail?.plugin_unique_identifier ||
BUILTIN_TOOLS_ARRAY.includes(pluginDetail.id)
)
return null
return (
<div
className={cn(
'flex flex-col items-start justify-center gap-2 pt-0 pb-4',
presentation === 'drawer' && 'px-4',
className,
)}
>
{!showShortTip && (
<div className="relative h-1 w-8 shrink-0">
<div className="h-px w-full bg-divider-regular"></div>
</div>
)}
<button
id={triggerId}
type="button"
onClick={handleReadmeClick}
className="flex w-full items-center justify-start gap-1 rounded-sm text-text-tertiary transition-opacity hover:text-text-accent-light-mode-only focus-visible:ring-1 focus-visible:ring-components-input-border-hover focus-visible:outline-hidden"
>
<div className="relative flex size-3 items-center justify-center overflow-hidden">
<span aria-hidden="true" className="i-ri-book-read-line size-3" />
</div>
<span className="text-xs/4 font-normal">
{!showShortTip
? t(($) => $['readmeInfo.needHelpCheckReadme'], { ns: 'plugin' })
: t(($) => $['readmeInfo.title'], { ns: 'plugin' })}
</span>
</button>
</div>
)
}