import clsx from 'clsx' import type { ParsedDoc, DocTable, DocCodeBlock } from '@/lib/types' interface DocContentProps { doc: ParsedDoc | null onReferenceClick: (ref: string) => void } export const DocContent = ({ doc, onReferenceClick }: DocContentProps) => { if (!doc) { return (

Select a document from the sidebar

) } return (

{doc.title}

{doc.metadata.namespace && (
Namespace: {doc.metadata.namespace}
)} {doc.metadata.package && (
Package: {doc.metadata.package}
)} {doc.metadata.type && (
Type: {doc.metadata.type}
)} {doc.metadata.inherits && (
Inherits: {doc.metadata.inherits}
)} {doc.metadata.description && (

{doc.metadata.description}

)} {doc.sections.map((section, idx) => (
))} {doc.references.length > 0 && (

See Also

    {doc.references.map((ref, idx) => (
  • ))}
)}
) } interface SectionProps { section: import('@/lib/types').DocSection onReferenceClick: (ref: string) => void } const Section = ({ section, onReferenceClick }: SectionProps) => { const level = Math.min(section.level + 1, 6) const headingClass = clsx( 'font-semibold text-white mb-3', section.level === 1 ? 'text-xl' : 'text-lg' ) const renderHeading = () => { switch (level) { case 2: return

{section.title}

case 3: return

{section.title}

case 4: return

{section.title}

case 5: return
{section.title}
case 6: return
{section.title}
default: return

{section.title}

} } return (
{renderHeading()}
{section.content.map((item, idx) => { if (item.type === 'table') { return } if (item.type === 'code') { return } return })}
) } const TextContent = ({ text, onReferenceClick }: { text: string; onReferenceClick: (ref: string) => void }) => { const renderText = () => { const parts = text.split(/(@see\s+[^\s]+)/g) return parts.map((part, idx) => { const match = part.match(/@see\s+([^\s]+)/) if (match) { return ( ) } return {part} }) } return

{renderText()}

} const TableContent = ({ table }: { table: DocTable }) => { if (!table.headers.length || !table.rows.length) return null return (
{table.headers.map((header, idx) => ( ))} {table.rows.map((row, rowIdx) => ( {row.map((cell, cellIdx) => ( ))} ))}
{header}
{cell}
) } const CodeContent = ({ code }: { code: DocCodeBlock }) => { return (
      
        {code.code}
      
    
) }