/* 아리 — 회의 도우미 드로어 (일정 페이지) 사전 브리핑(upcoming) · 실시간 기록(live) · 회의 노트 + 액션 추출(done) · 1:1 어시스턴트 window.CalMeet = { MeetDrawer } */ (function () { const { useState, useEffect } = React; const MP = { spark: "M12 3l1.9 5.2L19 10l-5.1 1.8L12 17l-1.9-5.2L5 10l5.1-1.8z|M19 4v3|M5 17v3", x: "M18 6 6 18M6 6l12 12", tick: "M20 6 9 17l-5-5", check: "M9 11l3 3L22 4|M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11", clock: "M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20z|M12 7v5l3 2", mic: "M12 2a3 3 0 0 0-3 3v6a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3z|M19 10v1a7 7 0 0 1-14 0v-1|M12 18v4M8 22h8", file: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z|M14 2v6h6M9 13h6M9 17h4", users: "M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2|M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z|M23 21v-2a4 4 0 0 0-3-3.87|M16 3.13a4 4 0 0 1 0 7.75", list: "M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01", msg: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", target: "M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20z|M12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8z|M12 12h.01", flag: "M4 22V4M4 4s1.5-1 5-1 5 2 8 2 4-1 4-1v10s-1.5 1-4 1-5-2-8-2-5 1-5 1", heart: "M19 14c1.5-1.5 3-3.4 3-5.5A4.5 4.5 0 0 0 12 5.5 4.5 4.5 0 0 0 2 8.5c0 2.1 1.5 4 3 5.5l7 7z", plus: "M12 5v14M5 12h14", zap: "M13 2 3 14h9l-1 8 10-12h-9z", }; function MI({ d, w }) { return ( {MP[d].split("|").map((s, i) => )} ); } function Sec({ icon, title, hint, children }) { return (
{title}{hint && {hint}}
{children}
); } /* 액션 아이템 한 줄 — '작업으로' 보내기 */ function ActionRow({ a, onAdd }) { return (
{a.text} {a.who} · {a.when} {a.added ? 작업에 있음 : }
); } function MeetDrawer({ ev, meet, calName, tone, onClose }) { const [actions, setActions] = useState(meet.actions || []); useEffect(() => setActions(meet.actions || []), [ev.id]); useEffect(() => { const h = (e) => { if (e.key === "Escape") onClose(); }; window.addEventListener("keydown", h); return () => window.removeEventListener("keydown", h); }, [onClose]); const addOne = (i) => setActions((as) => as.map((a, j) => (j === i ? { ...a, added: true } : a))); const addAll = () => setActions((as) => as.map((a) => ({ ...a, added: true }))); const remaining = actions.filter((a) => !a.added).length; const phaseBadge = meet.phase === "done" ? 회의 노트 정리됨 : meet.phase === "live" ? 기록 중 : {meet.startsIn}; return ( <>
); } window.CalMeet = { MeetDrawer }; })();