const { useState, useEffect } = React;
const { Badge, StatPill } = window.SpecComponents;
const SplitView = ({ functionalities }) => {
const [selected, setSelected] = useState(functionalities[0]?.id ?? null);
useEffect(() => {
if (!selected && functionalities.length) {
setSelected(functionalities[0].id);
}
}, [functionalities, selected]);
const selectedFunc = functionalities.find(f => f.id === selected);
if (!selectedFunc) {
return (
No functionality data available.
);
}
return (
Functionalities
{functionalities.map(func => {
const req = func.requirements.filter(r => r.level === "required").length;
const rec = func.requirements.filter(r => r.level === "recommended").length;
const isActive = selected === func.id;
const total = req + rec || 1;
return (
);
})}
{selectedFunc.icon}
{selectedFunc.name}
{selectedFunc.description}
r.level === "required").length}
rec={selectedFunc.requirements.filter(r => r.level === "recommended").length}
/>
{["required", "recommended"].map(level => {
const group = selectedFunc.requirements.filter(r => r.level === level);
if (!group.length) return null;
return (
{level === "required" ? "● Required" : "◆ Recommended"}
{group.map(req => (
{req.id}
{req.title}
{req.detail}
))}
);
})}
);
};
window.SpecComponents = window.SpecComponents || {};
window.SpecComponents.SplitView = SplitView;