'use client' import type { ReactNode } from 'react' import type { PermissionSettingKey } from './permission-quick-panel' import type { Permissions, PermissionType, PluginCategoryEnum } from '@/app/components/plugins/types' import { Button } from '@langgenius/dify-ui/button' import { cn } from '@langgenius/dify-ui/cn' import { Popover, PopoverContent, PopoverTrigger } from '@langgenius/dify-ui/popover' import { Tooltip, TooltipContent, TooltipTrigger } from '@langgenius/dify-ui/tooltip' import { useRef } from 'react' import { useTranslation } from 'react-i18next' import DebugInfo from '@/app/components/plugins/plugin-page/debug-info' import InstallPluginDropdown from '@/app/components/plugins/plugin-page/install-plugin-dropdown' import PluginTasks from '@/app/components/plugins/plugin-page/plugin-tasks' import { PermissionQuickPanel } from './permission-quick-panel' import { integrationSidebarInactiveNavItemClassName, integrationSidebarNavItemClassName, } from './sidebar-nav-item-styles' type PermissionTooltipWrapperProps = { children: ReactNode className?: string content: string placement: 'top' | 'bottom' show: boolean } const permissionTooltipClassName = 'w-[112px] text-left' function PermissionTooltipWrapper({ children, className, content, placement, show, }: PermissionTooltipWrapperProps) { const trigger = ( {children} ) if (!show) return trigger return ( {content} ) } export function IntegrationSidebarActions({ canManagement, installContextCategory, onSwitchToMarketplace, }: { canManagement: boolean installContextCategory?: PluginCategoryEnum onSwitchToMarketplace: () => void }) { const { t } = useTranslation() return ( ) } function IntegrationSidebarInstallActions({ canManagement, installContextCategory, installLabel, permissionTooltip, onSwitchToMarketplace, }: { canManagement: boolean installContextCategory?: PluginCategoryEnum installLabel: string permissionTooltip: string onSwitchToMarketplace: () => void }) { const actionRowRef = useRef(null) return (
actionRowRef.current} dropdownPlacement="bottom-start" />
) } const sidebarUtilityActionClassName = cn( integrationSidebarNavItemClassName, integrationSidebarInactiveNavItemClassName, 'justify-start border-none bg-transparent shadow-none', ) export function IntegrationSidebarUtilityActions({ canDebugger, permission, showPermissionQuickPanel, onPermissionChange, }: { canDebugger: boolean permission?: Permissions showPermissionQuickPanel: boolean onPermissionChange: (key: PermissionSettingKey, value: PermissionType) => void }) { const { t } = useTranslation() const debugLabel = t('debugInfo.title', { ns: 'plugin' }) const permissionsLabel = t('privilege.permissions', { ns: 'plugin' }) return (
{canDebugger && ( {debugLabel} )} /> )} {showPermissionQuickPanel && permission && ( {permissionsLabel} )} /> )}
) }