@fayz-ai/plugin-support 0.2.13 → 0.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/fix-prompt.ts","../src/views/HelpdeskConsole.tsx"],"names":[],"mappings":"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","file":"HelpdeskConsole-7W5IAQIU.js","sourcesContent":["import type { SupportKind, SupportStatus, SupportMessage, SupportEvent, SupportAttachment } from '../types'\nimport { KIND_LABEL, STATUS_LABEL, eventLine } from './vocabulary'\n\n/** The fields the prompt needs — satisfied by both the requester's\n * SupportRequestDetail and the operator's ConsoleDetail. */\nexport interface FixPromptInput {\n number: number\n kind: SupportKind\n status: SupportStatus\n subject: string | null\n description: string\n route: string | null\n screenSnapshot: Record<string, unknown>\n messages: SupportMessage[]\n events: SupportEvent[]\n attachments: SupportAttachment[]\n /** The store (tenant) the ticket is from, and the user who reported it — so a\n * coding agent can resolve the exact account and reproduce against it. */\n tenantId?: string\n createdBy?: string\n}\n\n/**\n * The prompt an operator copies into Claude to go fix a reported issue.\n *\n * It carries everything Claude needs to find the cause without a second\n * round-trip: which app and screen, the user's own words, the trail of routes\n * and buttons that led to it, and the conversation so far. English scaffolding\n * (it is read by a coding agent) around the user's pt-BR text (left verbatim —\n * the exact words are the bug report).\n */\nexport function buildFixPrompt(detail: FixPromptInput, appName?: string): string {\n const lines: string[] = []\n const app = appName?.trim() || 'the Fayz app'\n lines.push(`Fix an issue reported by a user of ${app}.`)\n lines.push('')\n lines.push(`Ticket #${String(detail.number).padStart(4, '0')} · ${KIND_LABEL[detail.kind]} · status: ${STATUS_LABEL[detail.status]}`)\n if (detail.route) lines.push(`Screen / route: ${detail.route}`)\n // Ids so a coding agent can resolve the exact account and reproduce/test\n // against it (the store's tenant, and the user who reported it).\n if (detail.tenantId) lines.push(`Tenant (store) id: ${detail.tenantId}`)\n if (detail.createdBy) lines.push(`Reported by user id: ${detail.createdBy}`)\n lines.push('')\n lines.push('PROBLEM (in the user\\'s own words):')\n // Skip the subject when it just repeats the description (the assistant often\n // derives one from the other).\n const subject = detail.subject?.trim()\n const description = detail.description.trim()\n if (subject && !description.toLowerCase().startsWith(subject.toLowerCase())) lines.push(subject)\n lines.push(description)\n\n const activity = (detail.screenSnapshot?.activity ?? null) as Array<{ kind?: string; label?: string; path?: string }> | null\n if (Array.isArray(activity) && activity.length) {\n lines.push('')\n lines.push('WHAT THE USER DID BEFORE REPORTING (most recent last):')\n for (const e of activity) {\n if (!e?.label) continue\n lines.push(e.kind === 'action' ? `- clicked \"${e.label}\"` : `- opened ${e.label}${e.path ? ` (${e.path})` : ''}`)\n }\n }\n\n if (detail.attachments.length) {\n lines.push('')\n lines.push(`ATTACHMENTS: ${detail.attachments.map((a) => a.name).join(', ')} (screenshots of the problem).`)\n }\n\n if (detail.messages.length) {\n lines.push('')\n lines.push('CONVERSATION WITH THE TEAM:')\n for (const m of detail.messages) {\n lines.push(`- ${m.authorKind === 'team' ? 'Team' : 'User'}: ${m.body}`)\n }\n }\n\n if (detail.events.length) {\n lines.push('')\n lines.push('HISTORY:')\n for (const ev of detail.events) lines.push(`- ${eventLine(ev.type, ev.note)}`)\n }\n\n lines.push('')\n lines.push(\n 'Investigate the code path behind this screen in the Fayz SDK (and the app that renders it), ' +\n 'find the root cause, and propose a concrete fix. If you need to reproduce it, follow the trail above.',\n )\n return lines.join('\\n')\n}\n","import React from 'react'\nimport {\n Button, Badge, Input, Textarea, Skeleton, Thumbnail, ModalTask, toast,\n Select, SelectTrigger, SelectValue, SelectContent, SelectItem, ICON_MAP, SubpageHeader,\n} from '@fayz-ai/ui'\nimport {\n consoleListRequests, consoleDetail, consoleSetStatus, consoleSetPriority,\n consoleReply, isOperator,\n type ConsoleRequest, type ConsoleDetail,\n} from '../data/console'\nimport { signedUrl } from '../data/api'\nimport {\n KIND_LABEL, STATUS_LABEL, STATUS_TONE, PRIORITY_LABEL, PRIORITY_TONE, PRIORITY_ORDER, eventLine,\n} from '../lib/vocabulary'\nimport { buildFixPrompt } from '../lib/fix-prompt'\nimport type { SupportStatus, SupportPriority, SupportAttachment } from '../types'\n\nconst STATUS_OPTIONS: SupportStatus[] = ['received', 'in_service', 'waiting_you', 'in_development', 'resolved_check', 'closed', 'cancelled']\nconst OPEN_STATUSES: SupportStatus[] = ['received', 'in_service', 'waiting_you', 'in_development', 'resolved_check']\n\n/** Hash navigation, without reaching into the shell's private routing. */\nfunction go(path: string) { if (typeof window !== 'undefined') window.location.hash = path }\n\nfunction ticketNo(n: number): string { return `#${String(n).padStart(4, '0')}` }\n\n/** The ticket id when the route is #/support/console/<id>, else null. */\nfunction useConsoleRoute(): string | null {\n const read = () => {\n if (typeof window === 'undefined') return null\n const m = window.location.hash.replace(/^#/, '').match(/^\\/support\\/console\\/([^/?]+)/)\n return m ? decodeURIComponent(m[1]!) : null\n }\n const [id, setId] = React.useState<string | null>(read)\n React.useEffect(() => {\n const on = () => setId(read())\n window.addEventListener('hashchange', on)\n return () => window.removeEventListener('hashchange', on)\n }, [])\n return id\n}\n\n/**\n * The GoControl helpdesk console (Zendesk/Intercom-style). An operator reads and\n * acts on the support requests of EVERY tenant through the support_console_* RPCs.\n * The triage list lives at #/support/console; clicking a card opens the ticket as\n * its own nested page (#/support/console/<id>) with a \"← Voltar\" header.\n */\nexport function HelpdeskConsole() {\n const [operator, setOperator] = React.useState<boolean | null>(null)\n React.useEffect(() => { void isOperator().then(setOperator) }, [])\n const ticketId = useConsoleRoute()\n\n if (operator === false) {\n return (\n <div className=\"rounded-xl border bg-card p-10 text-center\">\n <p className=\"text-sm font-medium\">Acesso restrito</p>\n <p className=\"mt-1 text-sm text-muted-foreground\">A Central de Chamados é para operadores do suporte.</p>\n </div>\n )\n }\n if (operator === null) return <div className=\"space-y-3\"><Skeleton className=\"h-20 w-full\" /><Skeleton className=\"h-20 w-full\" /></div>\n return ticketId ? <ConsoleTicketPage id={ticketId} /> : <ConsoleListView />\n}\n\nfunction ConsoleListView() {\n const [requests, setRequests] = React.useState<ConsoleRequest[]>([])\n const [loading, setLoading] = React.useState(true)\n const [onlyOpen, setOnlyOpen] = React.useState(true)\n const [search, setSearch] = React.useState('')\n\n React.useEffect(() => {\n let alive = true\n setLoading(true)\n consoleListRequests(onlyOpen ? OPEN_STATUSES : undefined, search)\n .then((r) => { if (alive) setRequests(r) })\n .catch(() => { if (alive) setRequests([]) })\n .finally(() => { if (alive) setLoading(false) })\n return () => { alive = false }\n }, [onlyOpen, search])\n\n const grouped = PRIORITY_ORDER\n .map((p) => ({ priority: p, items: requests.filter((r) => r.priority === p) }))\n .filter((g) => g.items.length > 0)\n\n return (\n <div className=\"mx-auto flex max-w-3xl flex-col gap-3\">\n <Input value={search} onChange={(e) => setSearch(e.target.value)} placeholder=\"Buscar chamado ou loja…\" />\n <div className=\"flex items-center gap-2 text-xs\">\n <button onClick={() => setOnlyOpen(true)} className={`rounded-full px-3 py-1 ${onlyOpen ? 'bg-foreground text-background' : 'bg-muted text-muted-foreground'}`}>Em aberto</button>\n <button onClick={() => setOnlyOpen(false)} className={`rounded-full px-3 py-1 ${!onlyOpen ? 'bg-foreground text-background' : 'bg-muted text-muted-foreground'}`}>Todos</button>\n <span className=\"ml-auto text-muted-foreground\">{requests.length} chamado(s)</span>\n </div>\n\n <div className=\"flex flex-col gap-4\">\n {loading ? (\n [0, 1, 2].map((i) => <Skeleton key={i} className=\"h-16 w-full\" />)\n ) : requests.length === 0 ? (\n <div className=\"rounded-xl border bg-card p-8 text-center text-sm text-muted-foreground\">Nenhum chamado por aqui.</div>\n ) : (\n grouped.map((g) => (\n <div key={g.priority} className=\"flex flex-col gap-1.5\">\n <div className=\"flex items-center gap-2 px-1\">\n <Badge variant={PRIORITY_TONE[g.priority]}>{PRIORITY_LABEL[g.priority]}</Badge>\n <span className=\"text-[11px] text-muted-foreground\">{g.items.length}</span>\n </div>\n {g.items.map((r) => (\n <TicketRow key={r.id} req={r} onClick={() => go(`/support/console/${r.id}`)} />\n ))}\n </div>\n ))\n )}\n </div>\n </div>\n )\n}\n\n/** The ticket as its own nested page: \"← Voltar\" + full detail and actions. */\nfunction ConsoleTicketPage({ id }: { id: string }) {\n const [detail, setDetail] = React.useState<ConsoleDetail | null>(null)\n const [loading, setLoading] = React.useState(true)\n\n React.useEffect(() => {\n let alive = true\n setLoading(true)\n consoleDetail(id).then((d) => { if (alive) setDetail(d) }).finally(() => { if (alive) setLoading(false) })\n return () => { alive = false }\n }, [id])\n\n const ready = detail && detail.id === id\n\n return (\n <div className=\"flex flex-col gap-4\">\n <SubpageHeader\n parentLabel=\"Central de Chamados\"\n onBack={() => go('/support/console')}\n title={ready ? `Ticket ${ticketNo(detail.number)}` : 'Ticket'}\n subtitle={ready ? (detail.tenantName ?? undefined) : undefined}\n titleTrailing={ready ? <Badge variant={STATUS_TONE[detail.status]}>{STATUS_LABEL[detail.status]}</Badge> : undefined}\n />\n {loading && !ready ? (\n <div className=\"space-y-3\"><Skeleton className=\"h-28 w-full\" /><Skeleton className=\"h-40 w-full\" /></div>\n ) : ready ? (\n <OperatorDetail detail={detail} onApplied={(d) => d && setDetail(d)} />\n ) : (\n <div className=\"rounded-xl border bg-card p-10 text-center\">\n <p className=\"text-sm font-medium\">Chamado não encontrado</p>\n <div className=\"mt-4\"><Button variant=\"outline\" onClick={() => go('/support/console')}>Voltar</Button></div>\n </div>\n )}\n </div>\n )\n}\n\nfunction TicketRow({ req, onClick }: { req: ConsoleRequest; onClick: () => void }) {\n return (\n <button\n onClick={onClick}\n className=\"flex w-full flex-col gap-1 rounded-lg border bg-card p-3 text-left transition-colors hover:border-primary/40 hover:bg-accent\"\n >\n <div className=\"flex items-center justify-between gap-2 text-[11px] text-muted-foreground\">\n <span className=\"truncate font-medium text-foreground\">{req.tenantName ?? 'Loja'}</span>\n <span>{ticketNo(req.number)}</span>\n </div>\n <div className=\"truncate text-sm\">{req.subject || KIND_LABEL[req.kind]}</div>\n <div className=\"flex items-center gap-1.5\">\n <Badge variant={STATUS_TONE[req.status]}>{STATUS_LABEL[req.status]}</Badge>\n {req.createdByName && <span className=\"truncate text-[11px] text-muted-foreground\">por {req.createdByName}</span>}\n {req.messageCount > 0 && <span className=\"ml-auto text-[11px] text-muted-foreground\">{req.messageCount} msg</span>}\n </div>\n </button>\n )\n}\n\nfunction OperatorDetail({ detail, onApplied }: { detail: ConsoleDetail; onApplied: (d: ConsoleDetail | null) => void }) {\n const [busy, setBusy] = React.useState(false)\n const [reply, setReply] = React.useState('')\n\n React.useEffect(() => { setReply('') }, [detail.id])\n\n async function run(fn: () => Promise<ConsoleDetail | null>, okMsg: string) {\n setBusy(true)\n try { onApplied(await fn()); toast.success(okMsg) }\n catch (e) { toast.error((e as Error)?.message ?? 'Não consegui aplicar.') }\n finally { setBusy(false) }\n }\n\n const activity = (detail.screenSnapshot?.activity ?? null) as Array<{ kind?: string; label?: string; path?: string }> | null\n\n return (\n // Two columns, like the CRM deal card: the ticket and its controls on the\n // left, the conversation and the activity feed on the right.\n <div className=\"grid gap-5 lg:grid-cols-2 lg:items-start\">\n {/* ── LEFT: the ticket + operator controls ───────────────────────── */}\n <div className=\"flex flex-col gap-4\">\n <section className=\"rounded-xl border bg-card p-5\">\n <h1 className=\"text-lg font-semibold leading-snug\">{detail.subject || KIND_LABEL[detail.kind]}</h1>\n <p className=\"mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-muted-foreground\">\n <span>{KIND_LABEL[detail.kind]}</span>\n <Badge variant={PRIORITY_TONE[detail.priority]}>{PRIORITY_LABEL[detail.priority]}</Badge>\n <span>· aberto por <span className=\"font-medium text-foreground\">{detail.createdByName ?? '—'}</span></span>\n </p>\n <p className=\"mt-3 whitespace-pre-wrap text-sm leading-relaxed\">{detail.description}</p>\n {detail.route && <p className=\"mt-2 text-xs text-muted-foreground\">Tela: <span className=\"font-mono\">{detail.route}</span></p>}\n {detail.attachments.length > 0 && (\n <div className=\"mt-3 flex flex-wrap gap-2\">\n {detail.attachments.map((a) => <AttachmentCard key={a.id} att={a} />)}\n </div>\n )}\n {Array.isArray(activity) && activity.length > 0 && (\n <div className=\"mt-3 border-t pt-3 text-xs\">\n <div className=\"mb-1 text-muted-foreground\">Trilha até o relato</div>\n <ol className=\"space-y-0.5\">\n {activity.map((e, i) => (\n <li key={i}>{e.kind === 'action' ? <>clicou <span className=\"font-medium\">\"{e.label}\"</span></> : <><span className=\"font-medium\">{e.label}</span> {e.path && <span className=\"font-mono text-[10px] text-muted-foreground\">{e.path}</span>}</>}</li>\n ))}\n </ol>\n </div>\n )}\n </section>\n\n <div className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"mb-2 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">Andamento</h2>\n <label className=\"mb-1 block text-xs text-muted-foreground\">Status</label>\n <Select value={detail.status} onValueChange={(v) => run(() => consoleSetStatus(detail.id, v as SupportStatus), 'Status atualizado')} disabled={busy}>\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent>\n {STATUS_OPTIONS.map((s) => <SelectItem key={s} value={s}>{STATUS_LABEL[s]}</SelectItem>)}\n </SelectContent>\n </Select>\n <label className=\"mb-1 mt-3 block text-xs text-muted-foreground\">Prioridade</label>\n <Select value={detail.priority} onValueChange={(v) => run(() => consoleSetPriority(detail.id, v as SupportPriority), 'Prioridade atualizada')} disabled={busy}>\n <SelectTrigger><SelectValue /></SelectTrigger>\n <SelectContent>\n {PRIORITY_ORDER.map((p) => <SelectItem key={p} value={p}>{PRIORITY_LABEL[p]}</SelectItem>)}\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"mb-2 text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">Cliente</h2>\n {/* The client is the store that opened the chamado — already connected\n by the ticket's tenant_id, shown automatically, not linked by hand. */}\n <p className=\"text-sm font-medium\">{detail.tenantName ?? 'Loja'}</p>\n <p className=\"text-xs text-muted-foreground\">Loja que abriu o chamado — vinculada automaticamente.</p>\n <FixWithClaudeConsole detail={detail} />\n </div>\n </div>\n\n {/* ── RIGHT: conversation + activity feed ─────────────────────────── */}\n <div className=\"flex flex-col gap-4\">\n <div className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">Conversa com o cliente</h2>\n {detail.messages.length === 0 ? (\n <p className=\"mt-2 text-sm text-muted-foreground\">Sem mensagens ainda.</p>\n ) : (\n <div className=\"mt-3 space-y-2\">\n {detail.messages.map((m) => (\n <div key={m.id} className={m.authorKind === 'team' ? 'flex justify-end' : 'flex justify-start'}>\n <div className={`max-w-[85%] rounded-lg px-3 py-2 text-sm ${m.authorKind === 'team' ? 'bg-primary/10' : 'bg-muted'}`}>\n <div className=\"whitespace-pre-wrap\">{m.body}</div>\n <div className=\"mt-1 text-right text-[10px] text-muted-foreground\">{fmtWhen(m.createdAt)}</div>\n </div>\n </div>\n ))}\n </div>\n )}\n <div className=\"mt-3 flex items-end gap-2\">\n <Textarea rows={2} value={reply} onChange={(e) => setReply(e.target.value)} placeholder=\"Responder ao cliente…\" className=\"flex-1\" />\n <Button disabled={busy || !reply.trim()} onClick={() => run(async () => { const d = await consoleReply(detail.id, reply); setReply(''); return d }, 'Resposta enviada')}>Responder</Button>\n </div>\n </div>\n\n <div className=\"rounded-xl border bg-card p-4\">\n <h2 className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">Atividades</h2>\n {detail.events.length === 0 ? (\n <p className=\"mt-2 text-sm text-muted-foreground\">Sem atividades.</p>\n ) : (\n <ol className=\"mt-3 space-y-2.5\">\n {detail.events.map((e) => (\n <li key={e.id} className=\"flex gap-2 text-xs\">\n <span className=\"mt-1 h-1.5 w-1.5 shrink-0 rounded-full bg-muted-foreground/40\" />\n <div className=\"min-w-0\">\n <div>{eventLine(e.type, e.note)}</div>\n <div className=\"text-muted-foreground\">{fmtWhen(e.createdAt)}</div>\n </div>\n </li>\n ))}\n </ol>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nfunction fmtWhen(iso: string): string {\n try {\n return new Date(iso).toLocaleString('pt-BR', { day: '2-digit', month: '2-digit', hour: '2-digit', minute: '2-digit' })\n } catch { return iso }\n}\n\nfunction FixWithClaudeConsole({ detail }: { detail: ConsoleDetail }) {\n const [open, setOpen] = React.useState(false)\n const prompt = React.useMemo(() => (open ? buildFixPrompt(detail, detail.tenantName ?? undefined) : ''), [open, detail])\n async function copy() {\n try { await navigator.clipboard.writeText(prompt); toast.success('Prompt copiado') }\n catch { toast.error('Não consegui copiar.') }\n }\n const Spark = (ICON_MAP as Record<string, React.ComponentType<{ className?: string }>>).Sparkles\n return (\n <>\n <Button className=\"mt-3 w-full justify-center gap-2\" onClick={() => setOpen(true)}>\n {Spark && <Spark className=\"h-4 w-4\" />} Corrigir com Claude\n </Button>\n <ModalTask open={open} title=\"Corrigir com Claude\" width=\"min(42rem, 94vw)\" onClose={() => setOpen(false)}>\n <div className=\"flex flex-col gap-3 p-4\">\n <p className=\"text-sm text-muted-foreground\">Copie e cole no Claude para investigar e corrigir.</p>\n <Textarea value={prompt} readOnly rows={14} className=\"font-mono text-xs\" onFocus={(e) => e.currentTarget.select()} />\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"outline\" onClick={() => setOpen(false)}>Fechar</Button>\n <Button onClick={copy}>Copiar prompt</Button>\n </div>\n </div>\n </ModalTask>\n </>\n )\n}\n\nfunction AttachmentCard({ att }: { att: SupportAttachment }) {\n const [url, setUrl] = React.useState<string | null>(null)\n React.useEffect(() => {\n let alive = true\n if ((att.contentType ?? '').startsWith('image/')) void signedUrl(att.storagePath).then((u) => { if (alive) setUrl(u) })\n return () => { alive = false }\n }, [att.storagePath, att.contentType])\n return (\n <a href={url ?? undefined} target=\"_blank\" rel=\"noreferrer\" className=\"flex items-center gap-2 rounded-lg border bg-card p-2 hover:bg-muted\">\n {url ? <Thumbnail src={url} alt={att.name} className=\"h-12 w-12 rounded object-cover\" /> : <div className=\"flex h-12 w-12 items-center justify-center rounded bg-muted text-[10px] text-muted-foreground\">anexo</div>}\n <span className=\"max-w-[10rem] truncate text-xs\">{att.name}</span>\n </a>\n )\n}\n\nexport default HelpdeskConsole\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/views/SupportMenu.tsx","../src/views/ScreenCaptureEditor.tsx","../src/views/SupportRequestForm.tsx","../src/views/SupportRequestDetail.tsx","../src/views/SupportRequestsPanel.tsx","../src/views/TicketDetailPage.tsx","../src/views/SupportCenter.tsx"],"names":["Icon","jsx","jsxs","React","Button","Textarea","Thumbnail","Skeleton","Badge","SubpageHeader","AttachmentCard","Row","fmtDate","ICON_MAP","snapshot","Fragment","fmtSize","go","q","Input"],"mappings":"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","file":"SupportCenter-Z2HEPJGD.js","sourcesContent":["import React from 'react'\nimport { ICON_MAP } from '@fayz-ai/ui'\nimport type { SupportKind } from '../types'\nimport { DOORS } from '../lib/vocabulary'\n\nexport interface SupportMenuProps {\n onPickKind: (kind: SupportKind) => void\n /** \"Tirar dúvidas\" — opens the Dico chat. Hidden when not wired (e.g. on the page). */\n onAskDico?: () => void\n /** Footer entry. Hidden when already on the list. */\n onOpenList?: () => void\n unread?: number\n}\n\nfunction Row({ icon, title, hint, onClick }: { icon: string; title: string; hint: string; onClick: () => void }) {\n const Icon = (ICON_MAP as Record<string, React.ComponentType<{ className?: string }>>)[icon] ?? ICON_MAP.HelpCircle\n return (\n <button\n onClick={onClick}\n className=\"flex w-full items-center gap-3 rounded-xl border bg-card p-3 text-left transition-colors hover:bg-accent\"\n >\n <span className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-warning-soft text-warning-soft-foreground\">\n {Icon && <Icon className=\"h-5 w-5\" />}\n </span>\n <span className=\"min-w-0 flex-1\">\n <span className=\"block text-sm font-semibold\">{title}</span>\n <span className=\"block truncate text-xs text-muted-foreground\">{hint}</span>\n </span>\n <span className=\"text-muted-foreground\">›</span>\n </button>\n )\n}\n\nexport function SupportMenu({ onPickKind, onAskDico, onOpenList, unread = 0 }: SupportMenuProps) {\n return (\n <div className=\"space-y-3\">\n <div>\n <h2 className=\"text-xl font-semibold\">Em que podemos ajudar?</h2>\n <p className=\"text-sm text-muted-foreground\">Escolha o tipo de ajuda.</p>\n </div>\n <div className=\"space-y-2\">\n {onAskDico && (\n <Row icon=\"HelpCircle\" title=\"Tirar dúvidas\" hint=\"Pergunte sobre qualquer parte do sistema\" onClick={onAskDico} />\n )}\n {DOORS.map((d) => (\n <Row key={d.kind} icon={d.icon} title={d.title} hint={d.hint} onClick={() => onPickKind(d.kind)} />\n ))}\n </div>\n {onOpenList && (\n <button onClick={onOpenList} className=\"flex items-center gap-2 pt-1 text-sm text-muted-foreground hover:text-foreground\">\n <span>Minhas solicitações</span>\n {unread > 0 && <span className=\"rounded-full bg-warning px-1.5 text-[10px] font-semibold text-warning-foreground\">{unread}</span>}\n </button>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { Takeover, Button } from '@fayz-ai/ui'\n\n// Capture a frame of the screen (native getDisplayMedia — no new dependency) and\n// let the person blur names/phones/values before it is attached. V1 photographs\n// the app without the panel; here the browser's own picker chooses the surface,\n// which is one extra click and zero bundle cost. Blur is a pixelation pass baked\n// into the exported PNG, so the sensitive pixels never leave the device.\n\ninterface Rect { x: number; y: number; w: number; h: number }\n\nexport interface ScreenCaptureEditorProps {\n open: boolean\n onClose: () => void\n onUse: (file: File, previewUrl: string) => void\n /** When set, skip acquisition and edit this file directly (the \"Arquivo\"/paste path). */\n initialFile?: File | null\n /** Start capture immediately in this mode when the editor opens. */\n autoStart?: 'tab' | 'window' | null\n}\n\nconst PIXEL = 12 // blur block size\n\nexport function ScreenCaptureEditor({ open, onClose, onUse, initialFile, autoStart }: ScreenCaptureEditorProps) {\n const canvasRef = React.useRef<HTMLCanvasElement | null>(null)\n const baseRef = React.useRef<HTMLCanvasElement | null>(null) // the clean capture\n const [hasImage, setHasImage] = React.useState(false)\n const [rects, setRects] = React.useState<Rect[]>([])\n const [drag, setDrag] = React.useState<Rect | null>(null)\n const [error, setError] = React.useState<string | null>(null)\n const [busy, setBusy] = React.useState(false)\n\n const reset = React.useCallback(() => {\n setHasImage(false); setRects([]); setDrag(null); setError(null); baseRef.current = null\n }, [])\n\n // Load the initial file (Arquivo / paste) when provided.\n React.useEffect(() => {\n if (!open) { reset(); return }\n if (initialFile) void loadFromBlob(initialFile)\n else if (autoStart) void capture(autoStart === 'tab')\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, initialFile, autoStart])\n\n async function loadFromBlob(blob: Blob) {\n try {\n const bitmap = await createImageBitmap(blob)\n const base = document.createElement('canvas')\n base.width = bitmap.width; base.height = bitmap.height\n base.getContext('2d')!.drawImage(bitmap, 0, 0)\n baseRef.current = base\n setRects([]); setHasImage(true); setError(null)\n requestAnimationFrame(redraw)\n } catch {\n setError('Não consegui abrir esta imagem.')\n }\n }\n\n async function capture(preferCurrentTab: boolean) {\n setError(null); setBusy(true)\n try {\n const md = navigator.mediaDevices as MediaDevices & {\n getDisplayMedia?: (c?: unknown) => Promise<MediaStream>\n }\n if (!md?.getDisplayMedia) { setError('Seu navegador não permite capturar a tela aqui. Use \"Arquivo\".'); return }\n const stream = await md.getDisplayMedia(\n preferCurrentTab ? { video: { displaySurface: 'browser' }, preferCurrentTab: true } as any : { video: true },\n )\n const track = stream.getVideoTracks()[0]\n const video = document.createElement('video')\n video.srcObject = stream\n await video.play()\n await new Promise((r) => setTimeout(r, 180)) // let the first frame paint\n const base = document.createElement('canvas')\n base.width = video.videoWidth; base.height = video.videoHeight\n base.getContext('2d')!.drawImage(video, 0, 0)\n track.stop()\n baseRef.current = base\n setRects([]); setHasImage(true)\n requestAnimationFrame(redraw)\n } catch (e) {\n // User cancelled the picker, or permission denied — not an error worth shouting.\n if ((e as Error)?.name !== 'NotAllowedError') setError('Não consegui capturar a tela.')\n } finally {\n setBusy(false)\n }\n }\n\n function redraw() {\n const base = baseRef.current, canvas = canvasRef.current\n if (!base || !canvas) return\n canvas.width = base.width; canvas.height = base.height\n const ctx = canvas.getContext('2d')!\n ctx.drawImage(base, 0, 0)\n for (const r of rects) pixelate(ctx, r)\n if (drag) { ctx.strokeStyle = '#111'; ctx.lineWidth = 2; ctx.setLineDash([6, 4]); ctx.strokeRect(drag.x, drag.y, drag.w, drag.h); ctx.setLineDash([]) }\n }\n\n React.useEffect(() => { redraw() }) // redraw on every rects/drag change\n\n function pixelate(ctx: CanvasRenderingContext2D, r: Rect) {\n const { x, y, w, h } = normalize(r)\n if (w < 2 || h < 2) return\n const sw = Math.max(1, Math.floor(w / PIXEL)), sh = Math.max(1, Math.floor(h / PIXEL))\n const tmp = document.createElement('canvas'); tmp.width = sw; tmp.height = sh\n const tctx = tmp.getContext('2d')!\n tctx.drawImage(ctx.canvas, x, y, w, h, 0, 0, sw, sh)\n ctx.imageSmoothingEnabled = false\n ctx.drawImage(tmp, 0, 0, sw, sh, x, y, w, h)\n ctx.imageSmoothingEnabled = true\n }\n\n function normalize(r: Rect): Rect {\n return { x: Math.min(r.x, r.x + r.w), y: Math.min(r.y, r.y + r.h), w: Math.abs(r.w), h: Math.abs(r.h) }\n }\n\n function toCanvasXY(e: React.PointerEvent): { x: number; y: number } {\n const canvas = canvasRef.current!\n const rect = canvas.getBoundingClientRect()\n return { x: (e.clientX - rect.left) * (canvas.width / rect.width), y: (e.clientY - rect.top) * (canvas.height / rect.height) }\n }\n\n async function finish() {\n const canvas = canvasRef.current\n if (!canvas) return\n const blob: Blob | null = await new Promise((res) => canvas.toBlob(res, 'image/png'))\n if (!blob) { setError('Não consegui gerar a imagem.'); return }\n const file = new File([blob], `captura-${Date.now()}.png`, { type: 'image/png' })\n onUse(file, URL.createObjectURL(blob))\n onClose()\n }\n\n return (\n <Takeover open={open} onClose={onClose} label=\"Capturar a tela\" closeLabel=\"Descartar captura\">\n <div className=\"mx-auto flex h-full w-full max-w-5xl flex-col gap-4 p-4\">\n {!hasImage ? (\n <div className=\"flex flex-1 flex-col items-center justify-center gap-4 text-center\">\n <p className=\"max-w-md text-sm text-muted-foreground\">\n Fotografe a tela do sistema para anexar à solicitação. No próximo passo você borra\n nomes, telefones ou valores que não precisam ir para o suporte.\n </p>\n <div className=\"flex flex-wrap items-center justify-center gap-2\">\n <Button onClick={() => capture(true)} disabled={busy}>Capturar esta tela</Button>\n <Button variant=\"outline\" onClick={() => capture(false)} disabled={busy}>Outra janela</Button>\n </div>\n {error && <p className=\"text-sm text-destructive\">{error}</p>}\n </div>\n ) : (\n <>\n <div>\n <h2 className=\"text-base font-semibold\">Esconder informações antes de enviar</h2>\n <p className=\"text-sm text-muted-foreground\">\n Arraste sobre nomes, telefones ou valores que não precisam ir para o suporte. Eles saem borrados na imagem.\n </p>\n </div>\n <div className=\"flex-1 overflow-auto rounded-lg border bg-muted/30 p-2\">\n <canvas\n ref={canvasRef}\n className=\"mx-auto block max-w-full cursor-crosshair touch-none\"\n onPointerDown={(e) => { (e.target as Element).setPointerCapture(e.pointerId); const p = toCanvasXY(e); setDrag({ x: p.x, y: p.y, w: 0, h: 0 }) }}\n onPointerMove={(e) => { if (!drag) return; const p = toCanvasXY(e); setDrag({ ...drag, w: p.x - drag.x, h: p.y - drag.y }) }}\n onPointerUp={() => { if (drag) { setRects((rs) => [...rs, normalize(drag)]); setDrag(null) } }}\n />\n </div>\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <div className=\"flex gap-2\">\n <Button variant=\"ghost\" onClick={() => setRects((rs) => rs.slice(0, -1))} disabled={!rects.length}>Desfazer</Button>\n <Button variant=\"ghost\" onClick={() => setRects([])} disabled={!rects.length}>Limpar</Button>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" onClick={onClose}>Descartar captura</Button>\n <Button onClick={finish}>Usar esta imagem</Button>\n </div>\n </div>\n {error && <p className=\"text-sm text-destructive\">{error}</p>}\n </>\n )}\n </div>\n </Takeover>\n )\n}\n","import React from 'react'\nimport { SubpageHeader, Button, Input, Textarea, Thumbnail } from '@fayz-ai/ui'\nimport type { SupportKind, PendingAttachment } from '../types'\nimport { MAX_ATTACHMENTS } from '../types'\nimport { FORM_COPY } from '../lib/vocabulary'\nimport { useSupportStore } from '../store'\nimport { ScreenCaptureEditor } from './ScreenCaptureEditor'\n\nexport interface SupportRequestFormProps {\n kind: SupportKind\n onDone: (result: { id: string; number: number }) => void\n onBack: () => void\n}\n\nconst MIN_DESCRIPTION = 5\n\nexport function SupportRequestForm({ kind, onDone, onBack }: SupportRequestFormProps) {\n const copy = FORM_COPY[kind]\n const create = useSupportStore((s) => s.create)\n const [description, setDescription] = React.useState('')\n const [subject, setSubject] = React.useState('')\n const [pending, setPending] = React.useState<PendingAttachment[]>([])\n const [submitting, setSubmitting] = React.useState(false)\n const [error, setError] = React.useState<string | null>(null)\n const [capture, setCapture] = React.useState<{ mode: 'tab' | 'window' | null; file: File | null } | null>(null)\n const fileRef = React.useRef<HTMLInputElement | null>(null)\n\n const canSubmit = description.trim().length >= MIN_DESCRIPTION && !submitting\n const full = pending.length >= MAX_ATTACHMENTS\n\n React.useEffect(() => () => pending.forEach((p) => p.previewUrl && URL.revokeObjectURL(p.previewUrl)), [pending])\n\n function addFile(file: File, previewUrl?: string) {\n setPending((ps) => ps.length >= MAX_ATTACHMENTS ? ps : [...ps, {\n id: crypto.randomUUID(), file, name: file.name, contentType: file.type || 'application/octet-stream',\n sizeBytes: file.size, previewUrl: previewUrl ?? (file.type.startsWith('image/') ? URL.createObjectURL(file) : undefined),\n }])\n }\n\n function onPaste(e: React.ClipboardEvent) {\n const img = Array.from(e.clipboardData.files).find((f) => f.type.startsWith('image/'))\n if (img) { e.preventDefault(); setCapture({ mode: null, file: img }) }\n }\n\n async function submit() {\n setSubmitting(true); setError(null)\n try {\n const result = await create(\n {\n kind,\n description,\n subject: subject.trim() || null,\n route: typeof location !== 'undefined' ? location.hash || location.pathname : null,\n screenSnapshot: snapshot(),\n },\n pending,\n )\n onDone(result)\n } catch (e) {\n setError((e as Error)?.message ?? 'Não consegui enviar a solicitação.')\n } finally {\n setSubmitting(false)\n }\n }\n\n return (\n <div className=\"flex flex-col gap-4\">\n <SubpageHeader title={copy.title} subtitle={copy.intro} onBack={onBack} parentLabel=\"Suporte\" />\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-sm font-medium\">Descrição</label>\n <Textarea\n rows={5}\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n onPaste={onPaste}\n placeholder=\"O que você estava fazendo, o que esperava que acontecesse e o que apareceu?\"\n />\n <p className=\"text-xs text-muted-foreground\">Pode falar em vez de escrever, ou colar um print aqui. Mínimo de {MIN_DESCRIPTION} caracteres.</p>\n </div>\n\n <div className=\"flex flex-col gap-1.5\">\n <label className=\"text-sm font-medium\">Assunto <span className=\"text-muted-foreground\">(opcional)</span></label>\n <Input value={subject} onChange={(e) => setSubject(e.target.value)} placeholder={copy.subjectPlaceholder} maxLength={200} />\n </div>\n\n <div className=\"flex flex-col gap-2\">\n <label className=\"text-sm font-medium\">Anexos</label>\n <div className=\"flex flex-wrap gap-2\">\n <Button variant=\"outline\" size=\"sm\" disabled={full} onClick={() => setCapture({ mode: 'tab', file: null })}>Capturar esta tela</Button>\n <Button variant=\"outline\" size=\"sm\" disabled={full} onClick={() => setCapture({ mode: 'window', file: null })}>Outra janela</Button>\n <Button variant=\"outline\" size=\"sm\" disabled={full} onClick={() => fileRef.current?.click()}>Arquivo</Button>\n <input\n ref={fileRef} type=\"file\" className=\"hidden\"\n accept=\"image/*,application/pdf,text/plain,text/csv,audio/*,video/mp4,video/webm\"\n onChange={(e) => { const f = e.target.files?.[0]; if (f) addFile(f); e.target.value = '' }}\n />\n </div>\n {full && <p className=\"text-xs text-muted-foreground\">No máximo {MAX_ATTACHMENTS} anexos por solicitação.</p>}\n {pending.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {pending.map((p) => (\n <div key={p.id} className=\"relative flex items-center gap-2 rounded-lg border bg-card p-2 pr-7\">\n {p.previewUrl\n ? <Thumbnail src={p.previewUrl} alt={p.name} className=\"h-10 w-10 rounded object-cover\" />\n : <div className=\"flex h-10 w-10 items-center justify-center rounded bg-muted text-xs text-muted-foreground\">arq</div>}\n <span className=\"max-w-[12rem] truncate text-xs\">{p.name}</span>\n <button\n aria-label=\"Remover anexo\"\n className=\"absolute right-1 top-1 rounded p-0.5 text-muted-foreground hover:bg-muted\"\n onClick={() => setPending((ps) => ps.filter((x) => x.id !== p.id))}\n >×</button>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {error && <p className=\"text-sm text-destructive\">{error}</p>}\n\n <div className=\"flex items-center justify-between gap-2 pt-2\">\n <Button variant=\"ghost\" onClick={onBack}>Voltar</Button>\n <Button onClick={submit} disabled={!canSubmit}>{submitting ? 'Enviando…' : 'Enviar solicitação'}</Button>\n </div>\n\n <ScreenCaptureEditor\n open={!!capture}\n autoStart={capture?.mode ?? null}\n initialFile={capture?.file ?? null}\n onClose={() => setCapture(null)}\n onUse={(file, previewUrl) => addFile(file, previewUrl)}\n />\n </div>\n )\n}\n\nfunction snapshot(): Record<string, unknown> {\n if (typeof window === 'undefined') return {}\n return {\n url: location.href,\n hash: location.hash,\n title: document.title,\n viewport: { w: window.innerWidth, h: window.innerHeight },\n at: new Date().toISOString(),\n }\n}\n","import React from 'react'\nimport { Badge, Button, Textarea, Skeleton, Thumbnail, Separator } from '@fayz-ai/ui'\nimport { useSupportStore } from '../store'\nimport { KIND_LABEL, STATUS_LABEL, STATUS_TONE, eventLine, canMessage, canCancel, canValidate } from '../lib/vocabulary'\nimport { signedUrl } from '../data/api'\nimport type { SupportAttachment } from '../types'\n\nexport interface SupportRequestDetailProps {\n onBack?: () => void\n}\n\nexport function SupportRequestDetail({ onBack }: SupportRequestDetailProps) {\n const detail = useSupportStore((s) => s.detail)\n const loading = useSupportStore((s) => s.loadingDetail)\n const sendMessage = useSupportStore((s) => s.sendMessage)\n const cancel = useSupportStore((s) => s.cancel)\n const validate = useSupportStore((s) => s.validate)\n\n const [message, setMessage] = React.useState('')\n const [sending, setSending] = React.useState(false)\n const [confirmingCancel, setConfirmingCancel] = React.useState(false)\n const [reopenReason, setReopenReason] = React.useState('')\n const [reopening, setReopening] = React.useState(false)\n\n React.useEffect(() => { setMessage(''); setConfirmingCancel(false); setReopenReason(''); setReopening(false) }, [detail?.id])\n\n if (loading && !detail) {\n return <div className=\"space-y-3 p-4\"><Skeleton className=\"h-6 w-48\" /><Skeleton className=\"h-24 w-full\" /><Skeleton className=\"h-16 w-full\" /></div>\n }\n if (!detail) {\n return <div className=\"flex h-full items-center justify-center p-8 text-center text-sm text-muted-foreground\">Escolha uma solicitação para ver a conversa com a equipe.</div>\n }\n\n async function send() {\n if (!message.trim()) return\n setSending(true)\n try { await sendMessage(message); setMessage('') } finally { setSending(false) }\n }\n\n return (\n <div className=\"flex h-full flex-col\">\n <div className=\"flex items-start justify-between gap-3 border-b p-4\">\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground\">\n {onBack && <button className=\"rounded px-1 hover:bg-muted lg:hidden\" onClick={onBack} aria-label=\"Voltar à lista\">←</button>}\n <span>#{detail.number} · {KIND_LABEL[detail.kind]} · aberta em {fmtDate(detail.createdAt)}</span>\n </div>\n <h2 className=\"mt-1 truncate text-base font-semibold\">{detail.subject || KIND_LABEL[detail.kind]}</h2>\n </div>\n <Badge variant={STATUS_TONE[detail.status]}>{STATUS_LABEL[detail.status]}</Badge>\n </div>\n\n <div className=\"flex-1 space-y-4 overflow-y-auto p-4\">\n <div className=\"rounded-lg border bg-card p-3 text-sm whitespace-pre-wrap\">{detail.description}</div>\n\n {detail.attachments.length > 0 && (\n <div className=\"flex flex-wrap gap-2\">\n {detail.attachments.map((a) => <AttachmentCard key={a.id} att={a} />)}\n </div>\n )}\n\n {detail.messages.length > 0 && (\n <div className=\"space-y-2\">\n {detail.messages.map((m) => (\n <div key={m.id} className={m.authorKind === 'team' ? 'flex justify-start' : 'flex justify-end'}>\n <div className={`max-w-[85%] rounded-lg px-3 py-2 text-sm ${m.authorKind === 'team' ? 'bg-muted' : 'bg-primary/10'}`}>\n <div className=\"whitespace-pre-wrap\">{m.body}</div>\n <div className=\"mt-1 text-right text-[10px] text-muted-foreground\">{fmtDate(m.createdAt)}</div>\n </div>\n </div>\n ))}\n </div>\n )}\n\n <Separator />\n <ol className=\"space-y-1 text-xs text-muted-foreground\">\n {detail.events.map((e) => (\n <li key={e.id}>• {eventLine(e.type, e.note)} <span className=\"opacity-60\">· {fmtDate(e.createdAt)}</span></li>\n ))}\n </ol>\n </div>\n\n <div className=\"border-t p-3\">\n {canValidate(detail.status) ? (\n reopening ? (\n <div className=\"space-y-2\">\n <Textarea rows={2} value={reopenReason} onChange={(e) => setReopenReason(e.target.value)} placeholder=\"Conte o que ainda não ficou certo.\" />\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setReopening(false)}>Voltar</Button>\n <Button size=\"sm\" disabled={!reopenReason.trim()} onClick={() => void validate(false, reopenReason)}>Enviar</Button>\n </div>\n </div>\n ) : (\n <div className=\"flex items-center justify-end gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => setReopening(true)}>Ainda não resolveu</Button>\n <Button size=\"sm\" onClick={() => void validate(true)}>Ficou bom</Button>\n </div>\n )\n ) : canMessage(detail.status) ? (\n <div className=\"space-y-2\">\n <div className=\"flex items-end gap-2\">\n <Textarea rows={2} value={message} onChange={(e) => setMessage(e.target.value)} placeholder=\"Escreva para a equipe…\" className=\"flex-1\" />\n <Button size=\"sm\" disabled={!message.trim() || sending} onClick={send}>Enviar</Button>\n </div>\n {canCancel(detail.status) && (\n confirmingCancel ? (\n <div className=\"flex items-center justify-end gap-2 text-sm\">\n <span className=\"text-muted-foreground\">Cancelar esta solicitação?</span>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setConfirmingCancel(false)}>Não</Button>\n <Button variant=\"destructive\" size=\"sm\" onClick={() => { setConfirmingCancel(false); void cancel() }}>Cancelar solicitação</Button>\n </div>\n ) : (\n <div className=\"flex justify-end\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setConfirmingCancel(true)}>Cancelar solicitação</Button>\n </div>\n )\n )}\n </div>\n ) : (\n <p className=\"text-center text-xs text-muted-foreground\">Esta solicitação está {STATUS_LABEL[detail.status].toLowerCase()}.</p>\n )}\n </div>\n </div>\n )\n}\n\nfunction AttachmentCard({ att }: { att: SupportAttachment }) {\n const [url, setUrl] = React.useState<string | null>(null)\n React.useEffect(() => {\n let alive = true\n if ((att.contentType ?? '').startsWith('image/')) void signedUrl(att.storagePath).then((u) => { if (alive) setUrl(u) })\n return () => { alive = false }\n }, [att.storagePath, att.contentType])\n return (\n <div className=\"flex items-center gap-2 rounded-lg border bg-card p-2\">\n {url\n ? <Thumbnail src={url} alt={att.name} className=\"h-12 w-12 rounded object-cover\" />\n : <div className=\"flex h-12 w-12 items-center justify-center rounded bg-muted text-[10px] text-muted-foreground\">anexo</div>}\n <div className=\"text-xs\">\n <div className=\"max-w-[10rem] truncate\">{att.name}</div>\n {att.sizeBytes != null && <div className=\"text-muted-foreground\">{fmtSize(att.sizeBytes)}</div>}\n </div>\n </div>\n )\n}\n\nfunction fmtDate(iso: string): string {\n try {\n const d = new Date(iso)\n const today = new Date()\n const sameDay = d.toDateString() === today.toDateString()\n return sameDay\n ? d.toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' })\n : d.toLocaleDateString('pt-BR', { day: '2-digit', month: '2-digit' }) + ', ' + d.toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' })\n } catch { return iso }\n}\n\nfunction fmtSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024)} KB`\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`\n}\n","import React from 'react'\nimport { Button, Badge, SegmentedControl, Skeleton } from '@fayz-ai/ui'\nimport { useHasPermission } from '@fayz-ai/admin'\nimport { useSupportStore } from '../store'\nimport type { SupportKind, SupportRequest, SupportFilter } from '../types'\nimport { KIND_LABEL, STATUS_LABEL, STATUS_TONE, FILTER_LABEL } from '../lib/vocabulary'\nimport { SupportMenu } from './SupportMenu'\nimport { SupportRequestForm } from './SupportRequestForm'\nimport { SupportRequestDetail } from './SupportRequestDetail'\n\ntype View =\n | { t: 'list' }\n | { t: 'menu' }\n | { t: 'form'; kind: SupportKind }\n | { t: 'created'; number: number }\n | { t: 'detail'; id: string }\n\nconst FILTERS: SupportFilter[] = ['waiting', 'in_progress', 'closed', 'all']\n\nexport interface SupportRequestsPanelProps {\n onAskDico?: () => void\n /** Start straight on the new-request menu (e.g. the \"Nova solicitação\" CTA). */\n startNew?: boolean\n /** Open a ticket as a full page instead of the in-panel detail (host closes\n * the modal and navigates). Falls back to the in-panel detail when absent. */\n onOpenTicket?: (id: string) => void\n}\n\n// Single-column flow: list ↔ detail ↔ menu ↔ form ↔ confirmation. Fits a modal\n// or a column, and opens in place (no navigation away from the help center).\nexport function SupportRequestsPanel({ onAskDico, startNew, onOpenTicket }: SupportRequestsPanelProps) {\n const { requests, loadingList, scope, filter, selectedId } = useSupportStore()\n const setScope = useSupportStore((s) => s.setScope)\n const setFilter = useSupportStore((s) => s.setFilter)\n const loadList = useSupportStore((s) => s.loadList)\n const select = useSupportStore((s) => s.select)\n const refreshUnread = useSupportStore((s) => s.refreshUnread)\n\n const canSeeAll = useHasPermission('support.all', 'read')\n const [view, setView] = React.useState<View>(startNew ? { t: 'menu' } : { t: 'list' })\n\n React.useEffect(() => { void loadList(); void refreshUnread() }, [loadList, refreshUnread])\n\n const openDetail = (id: string) => {\n if (onOpenTicket) { onOpenTicket(id); return }\n void select(id); setView({ t: 'detail', id })\n }\n const backToList = () => { void select(null); setView({ t: 'list' }) }\n\n if (view.t === 'menu') {\n return (\n <Section onBack={backToList}>\n <SupportMenu onPickKind={(kind) => setView({ t: 'form', kind })} onAskDico={onAskDico} />\n </Section>\n )\n }\n if (view.t === 'form') {\n return (\n <SupportRequestForm\n kind={view.kind}\n onBack={() => setView({ t: 'menu' })}\n onDone={(res) => { setView({ t: 'created', number: res.number }); void refreshUnread() }}\n />\n )\n }\n if (view.t === 'created') {\n return (\n <div className=\"flex flex-col items-center justify-center gap-3 p-8 text-center\">\n <div className=\"flex h-12 w-12 items-center justify-center rounded-full bg-success-soft text-success-soft-foreground text-xl\">✓</div>\n <h3 className=\"text-lg font-semibold\">Recebemos sua solicitação</h3>\n <p className=\"text-sm text-muted-foreground\">\n Número <strong>#{view.number}</strong>. Você acompanha o andamento e conversa com a equipe aqui,\n e avisamos quando houver resposta.\n </p>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" onClick={backToList}>Ver minhas solicitações</Button>\n <Button onClick={() => setView({ t: 'menu' })}>Abrir outra</Button>\n </div>\n </div>\n )\n }\n if (view.t === 'detail') {\n return (\n <div className=\"h-full min-h-[22rem]\">\n <SupportRequestDetail onBack={backToList} />\n </div>\n )\n }\n\n // list\n const filterOptions = FILTERS.map((f) => ({ value: f, label: FILTER_LABEL[f] }))\n return (\n <div className=\"flex h-full flex-col gap-3\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <SegmentedControl options={filterOptions} value={filter} onChange={(v) => setFilter(v as SupportFilter)} />\n <Button onClick={() => setView({ t: 'menu' })}>Nova solicitação</Button>\n </div>\n {canSeeAll && (\n <SegmentedControl\n options={[{ value: 'mine', label: 'Minhas' }, { value: 'all', label: 'Toda a empresa' }]}\n value={scope}\n onChange={(v) => setScope(v as 'mine' | 'all')}\n />\n )}\n <div className=\"min-h-[18rem] flex-1 overflow-y-auto rounded-xl border bg-card\">\n {loadingList ? (\n <div className=\"space-y-2 p-3\">{[0, 1, 2].map((i) => <Skeleton key={i} className=\"h-16 w-full\" />)}</div>\n ) : requests.length === 0 ? (\n <div className=\"p-8 text-center text-sm text-muted-foreground\">Nenhuma solicitação por aqui ainda.</div>\n ) : (\n <ul className=\"divide-y\">\n {requests.map((r) => (\n <li key={r.id}>\n <RequestCard req={r} active={selectedId === r.id} onClick={() => openDetail(r.id)} />\n </li>\n ))}\n </ul>\n )}\n </div>\n </div>\n )\n}\n\nfunction Section({ children, onBack }: { children: React.ReactNode; onBack: () => void }) {\n return (\n <div className=\"flex flex-col gap-3\">\n <button onClick={onBack} className=\"self-start text-sm text-muted-foreground hover:text-foreground\">← Voltar</button>\n {children}\n </div>\n )\n}\n\nfunction RequestCard({ req, active, onClick }: { req: SupportRequest; active: boolean; onClick: () => void }) {\n return (\n <button onClick={onClick} className={`block w-full p-3 text-left transition-colors hover:bg-accent ${active ? 'bg-accent' : ''}`}>\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span>#{req.number} · {KIND_LABEL[req.kind]}</span>\n <span>{shortTime(req.createdAt)}</span>\n </div>\n <div className=\"mt-0.5 truncate text-sm font-medium\">{req.subject || KIND_LABEL[req.kind]}</div>\n <div className=\"mt-1\"><Badge variant={STATUS_TONE[req.status]}>{STATUS_LABEL[req.status]}</Badge></div>\n </button>\n )\n}\n\nfunction shortTime(iso: string): string {\n try {\n const d = new Date(iso)\n const sameDay = d.toDateString() === new Date().toDateString()\n return sameDay\n ? d.toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' })\n : d.toLocaleDateString('pt-BR', { day: '2-digit', month: '2-digit' })\n } catch { return '' }\n}\n","import React from 'react'\nimport { SubpageHeader, Badge, Button, Textarea, Skeleton, Thumbnail, ICON_MAP } from '@fayz-ai/ui'\nimport { useAuth } from '@fayz-ai/admin'\nimport { useSupportStore } from '../store'\nimport { signedUrl } from '../data/api'\nimport {\n KIND_LABEL, STATUS_LABEL, STATUS_TONE, eventLine,\n canMessage, canCancel, canValidate,\n} from '../lib/vocabulary'\nimport type { SupportAttachment } from '../types'\n\n/** Hash navigation without reaching into the shell's private routing. */\nfunction go(path: string) { if (typeof window !== 'undefined') window.location.hash = path }\n\n/** \"Ticket #0001\" — padded like the V1 ticket numbers. */\nfunction ticketNo(n: number): string {\n return `#${String(n).padStart(4, '0')}`\n}\n\n/**\n * Full-page ticket, opened at #/support/ticket/<id>. A small CRM feedback page:\n * the conversation on the left, the ticket's facts on the right, with the slow\n * detail (history, ids, the screens the user passed through) tucked under an\n * \"Informações avançadas\" toggle so the page reads at a glance.\n */\nexport function TicketDetailPage({ id }: { id: string }) {\n const detail = useSupportStore((s) => s.detail)\n const loading = useSupportStore((s) => s.loadingDetail)\n const selectedId = useSupportStore((s) => s.selectedId)\n const select = useSupportStore((s) => s.select)\n const sendMessage = useSupportStore((s) => s.sendMessage)\n const cancel = useSupportStore((s) => s.cancel)\n const validate = useSupportStore((s) => s.validate)\n const user = useAuth().user\n\n const [message, setMessage] = React.useState('')\n const [sending, setSending] = React.useState(false)\n const [confirmingCancel, setConfirmingCancel] = React.useState(false)\n const [reopening, setReopening] = React.useState(false)\n const [reopenReason, setReopenReason] = React.useState('')\n const [advanced, setAdvanced] = React.useState(false)\n\n React.useEffect(() => { void select(id) }, [id, select])\n React.useEffect(() => {\n setMessage(''); setConfirmingCancel(false); setReopening(false); setReopenReason('')\n }, [detail?.id])\n\n const ready = detail && detail.id === id\n // \"Attempted\" = the store finished loading THIS id. Until then we show the\n // skeleton, so an inaccessible/missing ticket never flashes \"não encontrada\"\n // before the fetch even runs.\n const attempted = selectedId === id && !loading\n\n async function send() {\n if (!message.trim()) return\n setSending(true)\n try { await sendMessage(message); setMessage('') } finally { setSending(false) }\n }\n\n return (\n <div className=\"flex flex-col gap-4\">\n {/* The app's standard subpage header — hoisted into the shell bar exactly\n like every other detail page (CRM lead, financial payable). No inline\n / custom back style: the back link follows the same cross-module rule\n the whole app uses, so it reads \"← Suporte\" from the center and \"← the\n screen you came from\" when the chat opens it elsewhere. */}\n <SubpageHeader\n title={ready ? `Ticket ${ticketNo(detail.number)}` : 'Ticket'}\n parentLabel=\"Suporte\"\n onBack={() => go('/support')}\n titleTrailing={ready ? <Badge variant={STATUS_TONE[detail.status]}>{STATUS_LABEL[detail.status]}</Badge> : undefined}\n />\n\n {!ready && !attempted ? (\n <TicketSkeleton />\n ) : !ready ? (\n <div className=\"rounded-xl border bg-card p-10 text-center\">\n <p className=\"text-sm font-medium\">Solicitação não encontrada</p>\n <p className=\"mt-1 text-sm text-muted-foreground\">Ela pode ter sido removida, ou pertencer a outra conta.</p>\n <div className=\"mt-4\"><Button variant=\"outline\" onClick={() => go('/support')}>Voltar para o Suporte</Button></div>\n </div>\n ) : (\n <div className=\"grid gap-5 lg:grid-cols-2 lg:items-start\">\n {/* ── LEFT: the ticket's facts ────────────────────────────────── */}\n <div className=\"flex flex-col gap-4\">\n <section className=\"rounded-xl border bg-card p-5\">\n <h1 className=\"text-lg font-semibold leading-snug\">{detail.subject || KIND_LABEL[detail.kind]}</h1>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n {KIND_LABEL[detail.kind]} · aberta em {fmtDateTime(detail.createdAt)}\n </p>\n\n <div className=\"mt-4\">\n <h2 className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">Descrição</h2>\n <p className=\"mt-1.5 whitespace-pre-wrap text-sm leading-relaxed\">{detail.description}</p>\n </div>\n\n {detail.attachments.length > 0 && (\n <div className=\"mt-4\">\n <h2 className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">Anexos</h2>\n <div className=\"mt-2 flex flex-wrap gap-2\">\n {detail.attachments.map((a) => <AttachmentCard key={a.id} att={a} />)}\n </div>\n </div>\n )}\n </section>\n\n <div className=\"rounded-xl border bg-card p-5\">\n <h2 className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">Informações</h2>\n <dl className=\"mt-3 divide-y divide-border/60 text-sm\">\n <Row label=\"Número\">{ticketNo(detail.number)}</Row>\n <Row label=\"Status\"><Badge variant={STATUS_TONE[detail.status]}>{STATUS_LABEL[detail.status]}</Badge></Row>\n <Row label=\"Tipo\">{KIND_LABEL[detail.kind]}</Row>\n <Row label=\"Solicitante\">{detail.createdBy === user?.id ? (user?.fullName || user?.email || 'Você') : '—'}</Row>\n <Row label=\"Responsável\">Equipe de Suporte</Row>\n <Row label=\"Aberta em\">{fmtDateTime(detail.createdAt)}</Row>\n <Row label=\"Atualizada\">{fmtDateTime(detail.updatedAt)}</Row>\n </dl>\n\n <button\n onClick={() => setAdvanced((v) => !v)}\n className=\"mt-3 flex w-full items-center justify-between rounded-md border-t pt-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground\"\n aria-expanded={advanced}\n >\n <span>Informações avançadas</span>\n <Chevron className={`h-3.5 w-3.5 transition-transform ${advanced ? 'rotate-180' : ''}`} />\n </button>\n {advanced && (\n <div className=\"mt-2 text-xs\">\n <dl className=\"divide-y divide-border/60\">\n {detail.route && <Row label=\"Tela\">{detail.route}</Row>}\n <Row label=\"ID\"><span className=\"font-mono text-[10px] break-all\">{detail.id}</span></Row>\n </dl>\n <ActivityTrail snapshot={detail.screenSnapshot} />\n </div>\n )}\n </div>\n </div>\n\n {/* ── RIGHT: conversation + activities (like the operator console) ─ */}\n <div className=\"flex flex-col gap-4\">\n <section className=\"rounded-xl border bg-card p-5\">\n <h2 className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">Conversa com a equipe</h2>\n {detail.messages.length === 0 ? (\n <p className=\"mt-2 text-sm text-muted-foreground\">Ainda não há mensagens. Escreva abaixo para falar com a equipe.</p>\n ) : (\n <div className=\"mt-3 space-y-2\">\n {detail.messages.map((m) => (\n <div key={m.id} className={m.authorKind === 'team' ? 'flex justify-start' : 'flex justify-end'}>\n <div className={`max-w-[85%] rounded-lg px-3 py-2 text-sm ${m.authorKind === 'team' ? 'bg-muted' : 'bg-primary/10'}`}>\n <div className=\"whitespace-pre-wrap\">{m.body}</div>\n <div className=\"mt-1 text-right text-[10px] text-muted-foreground\">{fmtDate(m.createdAt)}</div>\n </div>\n </div>\n ))}\n </div>\n )}\n\n <div className=\"mt-3\">\n {canValidate(detail.status) ? (\n reopening ? (\n <div className=\"space-y-2\">\n <Textarea rows={2} value={reopenReason} onChange={(e) => setReopenReason(e.target.value)} placeholder=\"Conte o que ainda não ficou certo.\" />\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setReopening(false)}>Voltar</Button>\n <Button size=\"sm\" disabled={!reopenReason.trim()} onClick={() => void validate(false, reopenReason)}>Enviar</Button>\n </div>\n </div>\n ) : (\n <div className=\"flex items-center justify-end gap-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => setReopening(true)}>Ainda não resolveu</Button>\n <Button size=\"sm\" onClick={() => void validate(true)}>Ficou bom</Button>\n </div>\n )\n ) : canMessage(detail.status) ? (\n <div className=\"space-y-2\">\n <div className=\"flex items-end gap-2\">\n <Textarea rows={2} value={message} onChange={(e) => setMessage(e.target.value)} placeholder=\"Escreva para a equipe…\" className=\"flex-1\" />\n <Button size=\"sm\" disabled={!message.trim() || sending} onClick={send}>Enviar</Button>\n </div>\n {canCancel(detail.status) && (\n confirmingCancel ? (\n <div className=\"flex items-center justify-end gap-2 text-sm\">\n <span className=\"text-muted-foreground\">Cancelar esta solicitação?</span>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setConfirmingCancel(false)}>Não</Button>\n <Button variant=\"destructive\" size=\"sm\" onClick={() => { setConfirmingCancel(false); void cancel() }}>Cancelar solicitação</Button>\n </div>\n ) : (\n <div className=\"flex justify-end\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setConfirmingCancel(true)}>Cancelar solicitação</Button>\n </div>\n )\n )}\n </div>\n ) : (\n <p className=\"text-center text-xs text-muted-foreground\">Esta solicitação está {STATUS_LABEL[detail.status].toLowerCase()}.</p>\n )}\n </div>\n </section>\n\n <div className=\"rounded-xl border bg-card p-5\">\n <h2 className=\"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground\">Atividades</h2>\n {detail.events.length === 0 ? (\n <p className=\"mt-2 text-sm text-muted-foreground\">Sem atividades.</p>\n ) : (\n <ol className=\"mt-3 space-y-2.5\">\n {detail.events.map((e) => (\n <li key={e.id} className=\"flex gap-2 text-xs\">\n <span className=\"mt-1 h-1.5 w-1.5 shrink-0 rounded-full bg-muted-foreground/40\" />\n <div className=\"min-w-0\">\n <div>{eventLine(e.type, e.note)}</div>\n <div className=\"text-muted-foreground\">{fmtDate(e.createdAt)}</div>\n </div>\n </li>\n ))}\n </ol>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}\n\n/** The page's own 2-column skeleton — mirrors the real layout (facts left,\n * conversation right) so the shell doesn't jump when the ticket arrives. */\nfunction TicketSkeleton() {\n return (\n <div className=\"grid gap-5 lg:grid-cols-2 lg:items-start\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"rounded-xl border bg-card p-5\">\n <Skeleton className=\"h-5 w-2/3\" />\n <Skeleton className=\"mt-2 h-3 w-1/3\" />\n <Skeleton className=\"mt-4 h-16 w-full\" />\n </div>\n <div className=\"rounded-xl border bg-card p-5 space-y-2.5\">\n {[0, 1, 2, 3].map((i) => <Skeleton key={i} className=\"h-4 w-full\" />)}\n </div>\n </div>\n <div className=\"flex flex-col gap-4\">\n <div className=\"rounded-xl border bg-card p-5\">\n <Skeleton className=\"h-28 w-full\" />\n <Skeleton className=\"mt-3 h-10 w-full\" />\n </div>\n <div className=\"rounded-xl border bg-card p-5 space-y-2.5\">\n {[0, 1, 2].map((i) => <Skeleton key={i} className=\"h-4 w-5/6\" />)}\n </div>\n </div>\n </div>\n )\n}\n\nfunction Row({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div className=\"flex items-start justify-between gap-3 py-2 first:pt-0 last:pb-0\">\n <dt className=\"shrink-0 text-muted-foreground\">{label}</dt>\n <dd className=\"min-w-0 text-right font-medium\">{children}</dd>\n </div>\n )\n}\n\nfunction Chevron({ className }: { className?: string }) {\n const C = (ICON_MAP as Record<string, React.ComponentType<{ className?: string }>>).ChevronDown\n return C ? <C className={className} /> : <span className={className}>▾</span>\n}\n\n/** The trail the user left before filing: pages visited and buttons pressed,\n * in order. Reads the rich `activity` when present, else the older\n * `recentScreens` (page labels only) so old tickets still show something. */\nfunction ActivityTrail({ snapshot }: { snapshot: Record<string, unknown> }) {\n const activity = snapshot?.activity\n if (Array.isArray(activity) && activity.length) {\n const items = activity.filter((e): e is { kind: string; label: string; path?: string } =>\n !!e && typeof e === 'object' && typeof (e as { label?: unknown }).label === 'string')\n if (!items.length) return null\n return (\n <div className=\"mt-3 border-t pt-3\">\n <div className=\"mb-1.5 text-muted-foreground\">Trilha até o relato</div>\n <ol className=\"space-y-1\">\n {items.map((e, i) => (\n <li key={i} className=\"flex items-start gap-1.5\">\n <span className=\"mt-[3px] text-muted-foreground/50\">{e.kind === 'action' ? '›' : '•'}</span>\n <span className=\"min-w-0\">\n {e.kind === 'action' ? (\n <>clicou <span className=\"font-medium\">\"{e.label}\"</span></>\n ) : (\n <>\n <span className=\"font-medium\">{e.label}</span>\n {e.path && <span className=\"ml-1 font-mono text-[10px] text-muted-foreground\">{e.path}</span>}\n </>\n )}\n </span>\n </li>\n ))}\n </ol>\n </div>\n )\n }\n const recent = snapshot?.recentScreens\n if (!Array.isArray(recent) || recent.length === 0) return null\n const labels = recent\n .map((r) => (r && typeof r === 'object' ? (r as { label?: string }).label : undefined))\n .filter((l): l is string => !!l)\n if (!labels.length) return null\n return (\n <div className=\"mt-3 border-t pt-3\">\n <div className=\"mb-1 text-muted-foreground\">Telas recentes</div>\n <div>{labels.join(' → ')}</div>\n </div>\n )\n}\n\nfunction AttachmentCard({ att }: { att: SupportAttachment }) {\n const [url, setUrl] = React.useState<string | null>(null)\n React.useEffect(() => {\n let alive = true\n if ((att.contentType ?? '').startsWith('image/')) void signedUrl(att.storagePath).then((u) => { if (alive) setUrl(u) })\n return () => { alive = false }\n }, [att.storagePath, att.contentType])\n return (\n <a\n href={url ?? undefined}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"flex items-center gap-2 rounded-lg border bg-card p-2 transition-colors hover:bg-muted\"\n >\n {url\n ? <Thumbnail src={url} alt={att.name} className=\"h-12 w-12 rounded object-cover\" />\n : <div className=\"flex h-12 w-12 items-center justify-center rounded bg-muted text-[10px] text-muted-foreground\">anexo</div>}\n <div className=\"text-xs\">\n <div className=\"max-w-[10rem] truncate\">{att.name}</div>\n {att.sizeBytes != null && <div className=\"text-muted-foreground\">{fmtSize(att.sizeBytes)}</div>}\n </div>\n </a>\n )\n}\n\nfunction fmtDate(iso: string): string {\n try {\n const d = new Date(iso)\n const sameDay = d.toDateString() === new Date().toDateString()\n return sameDay\n ? d.toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' })\n : d.toLocaleDateString('pt-BR', { day: '2-digit', month: '2-digit' }) + ', ' + d.toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' })\n } catch { return iso }\n}\n\nfunction fmtDateTime(iso: string): string {\n try {\n return new Date(iso).toLocaleString('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' })\n } catch { return iso }\n}\n\nfunction fmtSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024)} KB`\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`\n}\n\nexport default TicketDetailPage\n","import React from 'react'\nimport { Button, Input, Badge, ModalTask, ICON_MAP } from '@fayz-ai/ui'\nimport { useChatStore, useTenantOptional } from '@fayz-ai/admin'\n\n/** Hash-router navigation without reaching into the shell's private routing. */\nfunction go(path: string) { if (typeof window !== 'undefined') window.location.hash = path }\nimport { useConnectivity } from '@fayz-ai/core'\nimport { useSupportStore } from '../store'\nimport { KIND_LABEL, STATUS_LABEL, STATUS_TONE } from '../lib/vocabulary'\nimport { type FaqItem, type WhatsNewItem, type StatusComponent, toEmbedUrl } from '../lib/content'\nimport { SupportRequestsPanel } from './SupportRequestsPanel'\nimport { TicketDetailPage } from './TicketDetailPage'\n\nexport interface SupportCenterContent {\n faq: FaqItem[]\n whatsNew: WhatsNewItem[]\n statusComponents: StatusComponent[]\n}\n\n/** The ticket id when the route is #/support/ticket/<id>, else null. Re-renders\n * on hash change so the one `/support/*` route serves both the center and a\n * full-page ticket with nested navigation. */\nfunction useTicketRoute(): string | null {\n const read = () => {\n if (typeof window === 'undefined') return null\n const m = window.location.hash.replace(/^#/, '').match(/^\\/support\\/ticket\\/([^/?]+)/)\n return m ? decodeURIComponent(m[1]!) : null\n }\n const [id, setId] = React.useState<string | null>(read)\n React.useEffect(() => {\n const on = () => setId(read())\n window.addEventListener('hashchange', on)\n return () => window.removeEventListener('hashchange', on)\n }, [])\n return id\n}\n\n/** Router seam: the same /support route renders either the help center or a\n * full-page ticket. Kept thin so hook order never changes between the two. */\nexport function SupportCenter({ content }: { content: SupportCenterContent }) {\n const ticketId = useTicketRoute()\n return ticketId ? <TicketDetailPage id={ticketId} /> : <SupportCenterHome content={content} />\n}\n\nfunction Icon({ name, className }: { name: string; className?: string }) {\n const C = (ICON_MAP as Record<string, React.ComponentType<{ className?: string }>>)[name]\n return C ? <C className={className} /> : null\n}\n\n// AI-first help center: ask Dico or search first; status, plan, what's new and\n// your requests sit as quiet cards beside the knowledge base. Clean and minimal.\nfunction SupportCenterHome({ content }: { content: SupportCenterContent }) {\n const [query, setQuery] = React.useState('')\n const [requestsOpen, setRequestsOpen] = React.useState(false)\n const [startNew, setStartNew] = React.useState(false)\n\n const setChatOpen = useChatStore((s) => s.setOpen)\n const queuePrompt = useChatStore((s) => s.queuePrompt)\n\n function askDico() {\n setChatOpen(true)\n const q = query.trim()\n if (q) queuePrompt(q)\n }\n\n const q = query.trim().toLowerCase()\n const faq = q\n ? content.faq.filter((f) =>\n [f.question, f.answer, f.category].filter(Boolean).some((s) => s!.toLowerCase().includes(q)))\n : content.faq\n\n function openRequests(forNew: boolean) { setStartNew(forNew); setRequestsOpen(true) }\n\n return (\n <div className=\"flex flex-col gap-5\">\n {/* Hero — ask first */}\n <div className=\"rounded-2xl border bg-card p-6\">\n <div className=\"flex items-center gap-2 text-sm font-medium text-muted-foreground\">\n <Icon name=\"Sparkles\" className=\"h-4 w-4\" /> Dico · central de ajuda\n </div>\n <h1 className=\"mt-1 text-2xl font-semibold tracking-tight\">Como podemos ajudar?</h1>\n <p className=\"mt-1 text-sm text-muted-foreground\">Pergunte ao Dico ou busque na central de ajuda.</p>\n <div className=\"mt-4 flex gap-2\">\n <div className=\"relative flex-1\">\n <span className=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground\">\n <Icon name=\"Search\" className=\"h-4 w-4\" />\n </span>\n <Input\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={(e) => { if (e.key === 'Enter') askDico() }}\n placeholder=\"Pergunte ou busque… ex.: como recebo pagamentos?\"\n className=\"pl-9\"\n />\n </div>\n <Button onClick={askDico}><Icon name=\"Sparkles\" className=\"mr-1.5 h-4 w-4\" /> Perguntar ao Dico</Button>\n </div>\n </div>\n\n <div className=\"grid gap-5 lg:grid-cols-[1fr_20rem] lg:items-start\">\n {/* Knowledge base */}\n <div className=\"flex flex-col gap-3\">\n <h2 className=\"text-sm font-semibold text-muted-foreground\">Perguntas frequentes e vídeos</h2>\n {faq.length === 0 ? (\n <div className=\"rounded-xl border bg-card p-6 text-center text-sm text-muted-foreground\">\n Nada encontrado para \"{query}\".\n <div className=\"mt-3\"><Button variant=\"outline\" onClick={askDico}>Perguntar ao Dico</Button></div>\n </div>\n ) : (\n <div className=\"divide-y rounded-xl border bg-card\">\n {faq.map((item) => <FaqRow key={item.id} item={item} />)}\n </div>\n )}\n </div>\n\n {/* Side cards */}\n <div className=\"flex flex-col gap-4\">\n <StatusCard components={content.statusComponents} />\n <PlanCard />\n <WhatsNewCard items={content.whatsNew} />\n <RequestsCard onOpen={() => openRequests(false)} onNew={() => openRequests(true)} />\n </div>\n </div>\n\n <ModalTask open={requestsOpen} title=\"Minhas solicitações\" width=\"min(44rem, 94vw)\" onClose={() => setRequestsOpen(false)}>\n <div className=\"p-4\">\n <SupportRequestsPanel\n startNew={startNew}\n onAskDico={() => { setRequestsOpen(false); setChatOpen(true) }}\n onOpenTicket={(id) => { setRequestsOpen(false); go(`/support/ticket/${id}`) }}\n />\n </div>\n </ModalTask>\n </div>\n )\n}\n\nfunction FaqRow({ item }: { item: FaqItem }) {\n const [open, setOpen] = React.useState(false)\n const [playing, setPlaying] = React.useState(false)\n return (\n <div className=\"p-4\">\n <button onClick={() => setOpen((v) => !v)} className=\"flex w-full items-center gap-3 text-left\">\n {item.videoUrl\n ? <Icon name=\"PlayCircle\" className=\"h-5 w-5 shrink-0 text-muted-foreground\" />\n : <Icon name=\"HelpCircle\" className=\"h-5 w-5 shrink-0 text-muted-foreground\" />}\n <span className=\"flex-1 text-sm font-medium\">{item.question}</span>\n <Icon name=\"ChevronDown\" className={`h-4 w-4 shrink-0 text-muted-foreground transition-transform ${open ? 'rotate-180' : ''}`} />\n </button>\n {open && (\n <div className=\"mt-2 pl-8 text-sm text-muted-foreground\">\n <p className=\"whitespace-pre-wrap\">{item.answer}</p>\n {item.videoUrl && (\n playing ? (\n <div className=\"mt-3 aspect-video w-full max-w-md overflow-hidden rounded-lg border\">\n {/\\.(mp4|webm)(\\?|$)/.test(item.videoUrl)\n ? <video src={item.videoUrl} controls autoPlay className=\"h-full w-full\" />\n : <iframe src={toEmbedUrl(item.videoUrl)} className=\"h-full w-full\" allow=\"autoplay; fullscreen\" allowFullScreen title={item.question} />}\n </div>\n ) : (\n <button onClick={() => setPlaying(true)} className=\"mt-3 inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline\">\n <Icon name=\"PlayCircle\" className=\"h-4 w-4\" /> Assistir ao vídeo\n </button>\n )\n )}\n </div>\n )}\n </div>\n )\n}\n\nfunction Card({ title, icon, action, children }: { title: string; icon: string; action?: React.ReactNode; children: React.ReactNode }) {\n return (\n <div className=\"rounded-xl border bg-card p-4\">\n <div className=\"mb-2 flex items-center justify-between\">\n <div className=\"flex items-center gap-2 text-sm font-semibold\"><Icon name={icon} className=\"h-4 w-4 text-muted-foreground\" /> {title}</div>\n {action}\n </div>\n {children}\n </div>\n )\n}\n\nfunction StatusCard({ components }: { components: StatusComponent[] }) {\n const conn = useConnectivity()\n const ok = conn.online\n return (\n <Card title=\"Status\" icon=\"Activity\">\n <div className=\"flex items-center gap-2\">\n <span className={`h-2.5 w-2.5 rounded-full ${ok ? 'bg-success' : 'bg-warning'}`} />\n <span className=\"text-sm\">{ok ? 'Todos os sistemas operacionais' : 'Sem conexão com o servidor'}</span>\n </div>\n <ul className=\"mt-3 space-y-1.5\">\n {components.map((c) => (\n <li key={c.id} className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span>{c.label}</span>\n <span className={`inline-flex items-center gap-1 ${ok ? 'text-success' : 'text-warning'}`}>\n <span className={`h-1.5 w-1.5 rounded-full ${ok ? 'bg-success' : 'bg-warning'}`} />\n {ok ? 'Operacional' : 'Instável'}\n </span>\n </li>\n ))}\n </ul>\n </Card>\n )\n}\n\nfunction PlanCard() {\n const org = useTenantOptional()?.org as { plan?: string; name?: string } | undefined\n const plan = org?.plan\n const label = plan ? plan.charAt(0).toUpperCase() + plan.slice(1) : null\n const paid = !!plan && !/free|trial|gratis|grátis/i.test(plan)\n return (\n <Card title=\"Seu plano\" icon=\"CreditCard\" action={<Button variant=\"ghost\" size=\"sm\" onClick={() => go('/settings')}>Gerenciar</Button>}>\n {label ? (\n <div className=\"flex items-center gap-2\">\n <Badge variant={paid ? 'success' : 'secondary'}>{label}</Badge>\n {org?.name && <span className=\"truncate text-xs text-muted-foreground\">{org.name}</span>}\n </div>\n ) : (\n <p className=\"text-xs text-muted-foreground\">Plano não identificado.</p>\n )}\n </Card>\n )\n}\n\nfunction WhatsNewCard({ items }: { items: WhatsNewItem[] }) {\n if (!items.length) return null\n return (\n <Card title=\"Novidades\" icon=\"Rocket\">\n <ul className=\"space-y-2.5\">\n {items.slice(0, 4).map((n) => (\n <li key={n.id}>\n <div className=\"flex items-baseline justify-between gap-2\">\n <span className=\"text-sm font-medium\">{n.title}</span>\n <span className=\"shrink-0 text-[10px] text-muted-foreground\">{fmtDate(n.date)}</span>\n </div>\n {n.note && <p className=\"text-xs text-muted-foreground\">{n.note}</p>}\n </li>\n ))}\n </ul>\n </Card>\n )\n}\n\nfunction RequestsCard({ onOpen, onNew }: { onOpen: () => void; onNew: () => void }) {\n const requests = useSupportStore((s) => s.requests)\n const unread = useSupportStore((s) => s.unread)\n const loadList = useSupportStore((s) => s.loadList)\n const refreshUnread = useSupportStore((s) => s.refreshUnread)\n React.useEffect(() => { void loadList(); void refreshUnread() }, [loadList, refreshUnread])\n const recent = requests.slice(0, 3)\n return (\n <Card\n title=\"Minhas solicitações\"\n icon=\"Inbox\"\n action={unread > 0 ? <span className=\"rounded-full bg-warning px-1.5 text-[10px] font-semibold text-warning-foreground\">{unread}</span> : undefined}\n >\n {recent.length === 0 ? (\n <p className=\"text-xs text-muted-foreground\">Você ainda não abriu nenhuma solicitação.</p>\n ) : (\n <ul className=\"mb-3 space-y-1.5\">\n {recent.map((r) => (\n <li key={r.id}>\n <button onClick={() => go(`/support/ticket/${r.id}`)} className=\"flex w-full items-center justify-between gap-2 text-left hover:text-foreground\">\n <span className=\"min-w-0 truncate text-xs\">#{r.number} {r.subject || KIND_LABEL[r.kind]}</span>\n <Badge variant={STATUS_TONE[r.status]}>{STATUS_LABEL[r.status]}</Badge>\n </button>\n </li>\n ))}\n </ul>\n )}\n <div className=\"flex gap-2\">\n <Button size=\"sm\" className=\"flex-1\" onClick={onNew}>Nova solicitação</Button>\n {recent.length > 0 && <Button size=\"sm\" variant=\"outline\" onClick={onOpen}>Ver todas</Button>}\n </div>\n </Card>\n )\n}\n\nfunction fmtDate(iso: string): string {\n try { return new Date(iso).toLocaleDateString('pt-BR', { day: '2-digit', month: 'short' }) } catch { return iso }\n}\n\nexport default SupportCenter\n"]}