mirror of
https://github.com/langgenius/dify.git
synced 2026-07-25 05:28:35 +08:00
72 lines
2.1 KiB
TypeScript
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>
|
|
)
|
|
}
|