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}
);
});