/* 아리 — 회의 도우미 드로어 (일정 페이지)
사전 브리핑(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 (
);
}
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 };
})();