/* global React, ReactDOM, ChIcon, NavIcon, CHANNELS, TICKETS, QueueScreen, CaseScreen, EscalationScreen, KbScreen, McpScreen, LifecycleScreen, PendingScreen, ResolvedScreen, FlowScreen */
const { useState, useEffect } = React;
const Sidebar = ({ route, setRoute, filterChannel, setFilterChannel }) => {
const counts = {};
CHANNELS.forEach(ch => { counts[ch.id] = TICKETS.filter(t => t.channel === ch.id).length; });
const goQueueWithFilter = (chId) => {
setFilterChannel(chId);
setRoute("queue");
};
return (
);
};
const TopBar = ({ setRoute }) => (
);
const App = () => {
const [route, setRoute] = useState("queue");
const [filterChannel, setFilterChannel] = useState(null);
const [activeTicket, setActiveTicket] = useState("CNL-2841");
useEffect(() => {
const hash = window.location.hash.replace("#", "");
if (["queue","case","escalation","kb","mcp","lifecycle","pending","resolved","flow"].includes(hash)) setRoute(hash);
}, []);
useEffect(() => {
window.location.hash = route;
}, [route]);
const openTicket = (t) => {
setActiveTicket(t.id);
if (t.state === "escalated" || t.phase === "escalado") {
setRoute("escalation");
} else {
setRoute("case");
}
};
return (
{route === "queue" && (
)}
{route === "lifecycle" && (
)}
{route === "case" && (
setRoute("queue")}
goToEscalation={() => setRoute("escalation")}
/>
)}
{route === "escalation" && (
setRoute("queue")}
goToCase={() => setRoute("case")}
/>
)}
{route === "kb" && }
{route === "mcp" && }
{route === "pending" && (
setRoute("escalation")}
setRoute={setRoute}
/>
)}
{route === "resolved" && (
)}
{route === "flow" && (
)}
);
};
ReactDOM.createRoot(document.getElementById("root")).render();