import React, { memo, useMemo, useState } from 'react'; import { useI18n } from '../../application/i18n/I18nProvider'; import { buildContainerInspectView, buildImageInspectView, } from '../../domain/systemManager/inspectView'; import { cn } from '../../lib/utils'; function InspectRow({ label, value, mono }: { label: string; value?: string; mono?: boolean }) { if (!value) return null; return (
{label} {value}
); } function InspectList({ label, items }: { label: string; items: string[] }) { if (items.length === 0) return null; return (
{label}
{items.map((item, index) => (
{item}
))}
); } interface DockerInspectViewProps { kind: 'container' | 'image'; data: Record; onClose: () => void; } /** Structured rendering of docker inspect output, with a raw-JSON fallback toggle. */ export const DockerInspectView = memo(function DockerInspectView({ kind, data, onClose, }: DockerInspectViewProps) { const { t } = useI18n(); const [showRaw, setShowRaw] = useState(false); const container = useMemo( () => (kind === 'container' ? buildContainerInspectView(data) : null), [kind, data], ); const image = useMemo( () => (kind === 'image' ? buildImageInspectView(data) : null), [kind, data], ); return (
{kind === 'container' ? t('systemManager.docker.inspect') : t('systemManager.docker.imageInspect')}
{showRaw ? (
          {JSON.stringify(data, null, 2)}
        
) : container ? (
) : image ? (
) : null}
); });