'use client'; import { useEffect } from 'react'; import PluginForm from '@/app/home/plugins/components/plugin-installed/plugin-form/PluginForm'; import PluginReadme from '@/app/home/plugins/components/plugin-installed/plugin-readme/PluginReadme'; import { useSidebarData } from '@/app/home/components/home-sidebar/SidebarDataContext'; import { useTranslation } from 'react-i18next'; import { Badge } from '@/components/ui/badge'; import { Bug } from 'lucide-react'; /** * Plugin detail page content. * The `id` prop is the composite key "author/name". */ export default function PluginDetailContent({ id }: { id: string }) { const { t } = useTranslation(); const { plugins, setDetailEntityName, refreshPlugins } = useSidebarData(); // Parse "author/name" composite key const slashIndex = id.indexOf('/'); const pluginAuthor = slashIndex >= 0 ? id.substring(0, slashIndex) : ''; const pluginName = slashIndex >= 0 ? id.substring(slashIndex + 1) : id; const plugin = plugins.find((p) => p.id === id); // Set breadcrumb entity name useEffect(() => { setDetailEntityName(plugin?.name ?? `${pluginAuthor}/${pluginName}`); return () => setDetailEntityName(null); }, [plugin, pluginAuthor, pluginName, setDetailEntityName]); function handleFormSubmit(timeout?: number) { if (timeout) { setTimeout(() => { refreshPlugins(); }, timeout); } else { refreshPlugins(); } } return (

{pluginAuthor}/{pluginName}

{plugin?.debug ? ( {t('plugins.debugging')} ) : plugin?.installSource === 'github' ? ( {t('plugins.fromGithub')} ) : plugin?.installSource === 'local' ? ( {t('plugins.fromLocal')} ) : plugin?.installSource === 'marketplace' ? ( {t('plugins.fromMarketplace')} ) : null}
{/* Left side - Config */}
{/* Divider */}
{/* Right side - Readme */}
); }