"use client" import { useState } from "react" import { cn } from "@lib/utils" import { dmSansClassName } from "@/lib/fonts" import type { ParsedPluginDocument, PluginDocumentMessage, PluginDocumentSection, } from "@/lib/plugin-document" function roleLabel(role: PluginDocumentMessage["role"]): string { switch (role) { case "user": return "User" case "assistant": return "Assistant" case "tool": return "Tool" case "system": return "System" default: return "Message" } } function sectionClasses(tone: PluginDocumentSection["tone"]): string { switch (tone) { case "accent": return "border-[#2261CA33] bg-[#0C1829]" case "muted": return "border-[#252A31] bg-[#11151A]" default: return "border-[#1E232B] bg-[#0F1318]" } } function PluginHeader({ parsed }: { parsed: ParsedPluginDocument }) { return (
{parsed.pluginLabel} {parsed.formatLabel} {parsed.identifierLabel && parsed.identifierValue && ( {parsed.identifierLabel}: {parsed.identifierValue} )}

{parsed.title}

{parsed.summary}

) } function ConversationView({ parsed }: { parsed: ParsedPluginDocument }) { return (
{parsed.messages.map((message) => (

{roleLabel(message.role)}

{message.text}

))}
) } function SectionsView({ parsed }: { parsed: ParsedPluginDocument }) { return (
{parsed.sections.map((section, index) => (

{section.label}

{section.value}

))}
) } function RawView({ parsed }: { parsed: ParsedPluginDocument }) { return (
				{parsed.rawContent}
			
) } export function PluginContent({ parsed }: { parsed: ParsedPluginDocument }) { const [mode, setMode] = useState<"structured" | "raw">("structured") const hasMessages = parsed.messages.length > 0 const hideHeader = parsed.kind === "claude-code-doc" return (
{!hideHeader && }
{mode === "raw" ? ( ) : hasMessages ? ( ) : ( )}
) }