"use client"; import { FormEvent, useEffect, useMemo, useState } from "react"; type AssistantMessage = { id: string; role: "user" | "assistant"; content: string; }; type AssistantDrawerProps = { mode?: "global" | "page"; }; export const ASSISTANT_TOGGLE_EVENT = "acve:assistant-toggle"; export default function AssistantDrawer({ mode = "global" }: AssistantDrawerProps) { const [isOpen, setIsOpen] = useState(mode === "page"); const [messages, setMessages] = useState([ { id: "seed", role: "assistant", content: "Ask about courses, case studies, or practice. Demo responses are mocked for now.", }, ]); const [input, setInput] = useState(""); useEffect(() => { if (mode === "page") { return; } const onToggle = () => setIsOpen((current) => !current); window.addEventListener(ASSISTANT_TOGGLE_EVENT, onToggle); return () => window.removeEventListener(ASSISTANT_TOGGLE_EVENT, onToggle); }, [mode]); const panelClasses = useMemo(() => { if (mode === "page") { return "mx-auto flex h-[70vh] max-w-3xl flex-col rounded-2xl border border-slate-300 bg-white shadow-xl"; } return `fixed right-0 top-0 z-50 h-screen w-full max-w-md border-l border-slate-300 bg-white shadow-2xl transition-transform ${ isOpen ? "translate-x-0" : "translate-x-full" }`; }, [isOpen, mode]); const send = (event: FormEvent) => { event.preventDefault(); const trimmed = input.trim(); if (!trimmed) return; const now = Date.now().toString(); setMessages((current) => [ ...current, { id: `u-${now}`, role: "user", content: trimmed }, { id: `a-${now}`, role: "assistant", content: "(Demo) Assistant not connected yet." }, ]); setInput(""); }; if (mode === "global" && !isOpen) { return ( ); } return ( ); }