PageSourceSearch

https://overwan.com/assets/AdminFaqs-D5c94aSb.js

js overwan.com collected 2026-10-08 10:40:48 UTC 12,489 bytes, 1 lines download raw bytes

1import{r as i,j as s}from"./react-vendor-BTQ2CC_i.js";import{u as oe}from"./useConfirm-1emFoXWp.js";import{l as ce,B as u,s as h,u as l}from"./index-6nKlOOAn.js";import{I as m}from"./input-BsZNoCRD.js";import{L as c}from"./label-Zqk89_mh.js";import{T as q}from"./textarea-ByjQXRoD.js";import{C as R}from"./card-OrUbVgmn.js";import{B as S}from"./badge-BEJFaJxh.js";import{S as de}from"./switch-BsUCT5K0.js";import{T as ue,a as pe,b as me,c as f}from"./tabs-CejXUNTD.js";import{D as he,f as ge,a as xe,b as je,c as _e,e as we}from"./dialog-D5Yw8i-E.js";import{S as ve,a as Ne,b as qe,c as fe,d as z}from"./select-DYcaEubC.js";import{ac as L,a9 as be,aq as Ce,e as ye,C as Se,ay as ke,aD as Ae,aP as Pe,ab as Te,X as De}from"./icons-ChNyLqzK.js";import"./alert-dialog-9wTq2FEW.js";import"./ui-vendor-BvkQ8K72.js";import"./supabase-DmwCYaEW.js";import"./query-C_DoptXT.js";import"./motion-jxCd4ad2.js";import"./carousel-D4nW_QRy.js";function Ye(){const{confirm:M,dialog:$}=oe(),B=ce(),[d,x]=i.useState([]),[b,j]=i.useState({}),[G,k]=i.useState(!0),[g,A]=i.useState("all"),[C,V]=i.useState(""),[H,_]=i.useState(new Set),[P,T]=i.useState(null),[X,v]=i.useState(!1),[D,E]=i.useState(""),[O,F]=i.useState(""),I=async()=>{k(!0);const{data:e,error:a}=await h.from("faqs").select("*").order("page").order("sort_order");a&&l.error(a.message);const n=e??[];x(n);const r={};n.forEach(t=>{r[t.id]={...t}}),j(r),k(!1)};i.useEffect(()=>{I()},[]);const y=i.useMemo(()=>Array.from(new Set(d.map(e=>e.page))).sort(),[d]),N=i.useMemo(()=>{const e=C.trim().toLowerCase();return d.filter(a=>g!=="all"&&a.page!==g?!1:e?a.page.toLowerCase().includes(e)||a.question_pt.toLowerCase().includes(e)||(a.question_en??"").toLowerCase().includes(e)||(a.question_fr??"").toLowerCase().includes(e)||(a.question_es??"").toLowerCase().includes(e)||a.answer_pt.toLowerCase().includes(e)||(a.answer_en??"").toLowerCase().includes(e)||(a.answer_fr??"").toLowerCase().includes(e)||(a.answer_es??"").toLowerCase().includes(e):!0)},[d,g,C]),J=i.useMemo(()=>{const e={};return N.forEach(a=>{var n;(e[n=a.page]||(e[n]=[])).push(a)}),Object.values(e).forEach(a=>a.sort((n,r)=>n.sort_order-r.sort_order)),e},[N]),Q=e=>{const a=b[e.id];return a?a.page!==e.page||a.sort_order!==e.sort_order||a.published!==e.published||a.question_pt!==e.question_pt||(a.question_en??"")!==(e.question_en??"")||(a.question_fr??"")!==(e.question_fr??"")||(a.question_es??"")!==(e.question_es??"")||a.answer_pt!==e.answer_pt||(a.answer_en??"")!==(e.answer_en??"")||(a.answer_fr??"")!==(e.answer_fr??"")||(a.answer_es??"")!==(e.answer_es??""):!0},w=i.useMemo(()=>d.filter(Q),[d,b]),o=(e,a)=>x(n=>n.map(r=>r.id===e?{...r,...a}:r)),K=e=>{_(a=>{const n=new Set(a);return n.has(e)?n.delete(e):n.add(e),n})},U=()=>_(new Set(N.map(e=>e.id))),W=()=>
1_(new Set),Y=async e=>{T(e.id);const{error:a}=await h.from("faqs").update({page:e.page,sort_order:e.sort_order,published:e.published,question_pt:e.question_pt,question_en:e.question_en||null,question_fr:e.question_fr||null,question_es:e.question_es||null,answer_pt:e.answer_pt,answer_en:e.answer_en||null,answer_fr:e.answer_fr||null,answer_es:e.answer_es||null}).eq("id",e.id);if(T(null),a)return l.error(a.message);j(n=>({...n,[e.id]:{...e}})),l.success("Guardado")},Z=async()=>{if(w.length===0)return;const e=l.loading(`A guardar ${w.length}…`);let a=0,n=0;for(const r of w){const{error:t}=await h.from("faqs").update({page:r.page,sort_order:r.sort_order,published:r.published,question_pt:r.question_pt,question_en:r.question_en||null,question_fr:r.question_fr||null,question_es:r.question_es||null,answer_pt:r.answer_pt,answer_en:r.answer_en||null,answer_fr:r.answer_fr||null,answer_es:r.answer_es||null}).eq("id",r.id);t?n++:a++}l.dismiss(e),n?l.error(`Guardadas ${a}, falharam ${n}`):l.success(`${a} guardadas`),await I()},ee=e=>{const a=b[e.id];a&&o(e.id,a)},se=async e=>{if(!await M({title:"Apagar FAQ?",description:"Esta ação é irreversível.",destructive:!0,confirmText:"Apagar"}))return;const{error:a}=await h.from("faqs").delete().eq("id",e.id);if(a)return l.error(a.message);x(d.filter(n=>n.id!==e.id)),l.success("Apagada")},ae=async e=>{const{data:a,error:n}=await h.from("faqs").insert({page:e.page,sort_order:e.sort_order+1,published:!1,question_pt:e.question_pt+" (cópia)",question_en:e.question_en,question_fr:e.question_fr,question_es:e.question_es,answer_pt:e.answer_pt,answer_en:e.answer_en,answer_fr:e.answer_fr,answer_es:e.answer_es}).select("*").single();if(n)return l.error(n.message);const r=a;x(t=>[...t,r]),j(t=>({...t,[r.id]:{...r}})),_(t=>new Set(t).add(r.id)),l.success("Duplicada")},re=async e=>{const a=!e.published;o(e.id,{published:a});const{error:n}=await h.from("faqs").update({published:a}).eq("id",e.id);if(n)return o(e.id,{published:!a}),l.error(n.message);j(r=>({...r,[e.id]:{...r[e.id],published:a}}))},ne=()=>{E(g!=="all"?g:y[0]??"home"),F(""),v(!0)},te=async()=>{const e=D.trim();if(!e)return l.error("Indique a página");const a=d.filter(p=>p.page===e).reduce((p,le)=>Math.max(p,le.sort_order),0)+10,{data:n,error:r}=await h.from("faqs").insert({page:e,question_pt:O.trim()||"Nova pergunta",answer_pt:"",sort_order:a,published:!1}).select("*").single();if(r)return l.error(r.message);const t=n;x(p=>[...p,t]),j(p=>({...p,[t.id]:{...t}})),_(p=>new Set(p).add(t.id)),A(e),v(!1),l.success("FAQ criada")},ie=e=>{const a=H.has(e.id),n=Q(e);return s.jsxs(R,{className:`overflow-hidden transition-colors ${n?"ring-2 ring-primary/40":""}`,children:[s.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 hover:bg-muted/40",children:[s.jsxs("button",{onClick:()=>K(e.id),className:"flex items-center gap-2 flex-1 min-w-0 text-left","aria-expanded":a,children:[a?s.jsx(ye,{className:"h-4 w-4 text-muted-foreground shrink-0"}):s.jsx(Se,{className:"h-4 w-4 text-muted-foreground shrink-0"}),s.jsx(S,{variant:"outline",className:"shrink-0 text-xs",children:e.page}),s.jsxs("span",{className:"text-xs text-muted-foreground shrink-0 w-10 tabular-nums",children:["#",e.sort_order]}),s.jsx("span",{className:"truncate font-medium",children:e.question_pt||s.jsx("span",{className:"text-muted-foreground italic",children:"(sem pergunta)"})}),n&&s.jsx(S,{className:"ml-2 shrink-0",children:"alterada"})]}),s.jsx(u,{size:"icon",variant:"ghost",title:e.published?"Despublicar":"Publicar",onClick:()=>re(e),children:e.published?s.jsx(ke,{className:"h-4 w-4 text-primary"}):s.jsx(Ae,{className:"h-4 w-4 text-muted-foreground"})}),s.jsx(u,{size:"icon",variant:"ghost",title:"Duplicar",onClick:()=>ae(e),children:s.jsx(Pe,{className:"h-4 w-4"})}),s.jsx(u,{size:"icon",variant:"ghost",title:"Apagar",onClick:()=>se(e),children:s.jsx(Te,{className:"h-4 w-4"})})]}),a&&s.jsxs("div",{className:"border-t bg-muted/20 p-4 space-y-4",children:[s.jsxs("div",{className:"grid md:grid-cols-[1fr_120px_auto] gap-3 items-end",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Página"}),s.jsx(m,{value:e.page,onChange:r=>o(e.id,{page:r.target.value}),list:"faq-pages"})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Ordem"}),s.jsx(m,{type:"number",value:e.sort_order,onChange:r=>o(e.id,{sort_order:Number(r.target.value)})})]}),s.jsxs("label",{className:"flex items-center gap-2 h-10",children:[s.jsx(de,{checked:e.published,onCheckedChange:r=>o(e.id,{published:r})}),s.jsx("span",{className:"text-sm",children:"Publicada"})]})]}),s.jsxs(ue,{defaultValue:"pt",children:[s.jsx(pe,{children:B.map(r=>{const t=r.code==="pt"||r.code==="en"||r.code==="fr"||r.code==="es";return s.jsxs(me,{value:r.code,disabled:!t,children:[r.flag??""," ",r.n
1ative_name??r.name,!t&&" (em breve)"]},r.code)})}),s.jsxs(f,{value:"pt",className:"space-y-3 mt-3",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Pergunta (PT)"}),s.jsx(m,{value:e.question_pt,onChange:r=>o(e.id,{question_pt:r.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Resposta (PT)"}),s.jsx(q,{rows:5,value:e.answer_pt,onChange:r=>o(e.id,{answer_pt:r.target.value})})]})]}),s.jsxs(f,{value:"en",className:"space-y-3 mt-3",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Question (EN)"}),s.jsx(m,{value:e.question_en??"",onChange:r=>o(e.id,{question_en:r.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Answer (EN)"}),s.jsx(q,{rows:5,value:e.answer_en??"",onChange:r=>o(e.id,{answer_en:r.target.value})})]})]}),s.jsxs(f,{value:"fr",className:"space-y-3 mt-3",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Question (FR)"}),s.jsx(m,{value:e.question_fr??"",onChange:r=>o(e.id,{question_fr:r.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Réponse (FR)"}),s.jsx(q,{rows:5,value:e.answer_fr??"",onChange:r=>o(e.id,{answer_fr:r.target.value})})]})]}),s.jsxs(f,{value:"es",className:"space-y-3 mt-3",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Pregunta (ES)"}),s.jsx(m,{value:e.question_es??"",onChange:r=>o(e.id,{question_es:r.target.value})})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Respuesta (ES)"}),s.jsx(q,{rows:5,value:e.answer_es??"",onChange:r=>o(e.id,{answer_es:r.target.value})})]})]})]}),s.jsxs("div",{className:"flex items-center justify-end gap-2 pt-2 border-t",children:[n&&s.jsxs(u,{size:"sm",variant:"ghost",onClick:()=>ee(e),className:"gap-1",children:[s.jsx(De,{className:"h-4 w-4"})," Reverter"]}),s.jsxs(u,{size:"sm",onClick:()=>Y(e),disabled:!n||P===e.id,className:"gap-1",children:[s.jsx(L,{className:"h-4 w-4"})," ",P===e.id?"A guardar…":"Guardar"]})]})]})]},e.id)};return s.jsxs("div",{children:[s.jsx("datalist",{id:"faq-pages",children:y.map(e=>s.jsx("option",{value:e},e))}),s.jsxs("div",{className:"flex items-center justify-between mb-6 gap-4 flex-wrap",children:[s.jsxs("div",{children:[s.jsx("h1",{className:"text-3xl font-semibold mb-1",children:"FAQs"}),s.jsxs("p",{className:"text-muted-foreground",children:["Perguntas frequentes por página — ",d.length," no total."]})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[w.length>0&&s.jsxs(u,{variant:"secondary",onClick:Z,className:"gap-2",children:[s.jsx(L,{className:"h-4 w-4"})," Guardar tudo (",w.length,")"]}),s.jsxs(he,{open:X,onOpenChange:v,children:[s.jsx(ge,{asChild:!0,children:s.jsxs(u,{className:"gap-2",onClick:ne,children:[s.jsx(be,{className:"h-4 w-4"})," Nova FAQ"]})}),s.jsxs(xe,{children:[s.jsx(je,{children:s.jsx(_e,{children:"Nova FAQ"})}),s.jsxs("div",{className:"space-y-3",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Página"}),s.jsx(m,{value:D,onChange:e=>E(e.target.value),list:"faq-pages",placeholder:"home, nearshoring, service:..."})]}),s.jsxs("div",{className:"space-y-1",children:[s.jsx(c,{children:"Pergunta (PT)"}),s.jsx(m,{value:O,onChange:e=>F(e.target.value),placeholder:"Ex.: Como funciona o suporte?"})]})]}),s.jsxs(we,{children:[s.jsx(u,{variant:"ghost",onClick:()=>v(!1),children:"Cancelar"}),s.jsx(u,{onClick:te,children:"Criar"})]})]})]})]})]}),s.jsxs(R,{className:"p-3 mb-4 flex flex-wrap gap-3 items-center",children:[s.jsxs("div",{className:"relative flex-1 min-w-[220px]",children:[s.jsx(Ce,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),s.jsx(m,{className:"pl-9",placeholder:"Procurar por pergunta, resposta ou página…",value:C,onChange:e=>V(e.target.value)})]}),s.jsxs(ve,{value:g,onValueChange:A,children:[s.jsx(Ne,{className:"w-[260px]",children:s.jsx(qe,{})}),s.jsxs(fe,{className:"max-h-[400px]",children:[s.jsxs(z,{value:"all",children:["Todas as páginas (",d.length,")"]}),y.map(e=>s.jsxs(z,{value:e,children:[e," (",d.filter(a=>a.page===e).length,")"]},e))]})]}),s.jsxs("div",{className:"flex gap-1",children:[s.jsx(u,{size:"sm",variant:"outline",onClick:U,children:"Expandir"}),s.jsx(u,{size:"sm",variant:"outline",onClick:W,children:"Recolher"})]})]}),G?s.jsx("div",{className:"text-muted-foreground",children:"A carregar…"}):N.length===0?s.jsx("div",{className:"text-muted-foreground",children:"Sem resultados."}):s.jsx("div",{className:"space-y-6",children:Object.entries(J).map(([e,a])=>s.jsxs("div",{children:[s.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[s.jsx("h2",{className:"text-sm font-semibold uppercase tracking-wide text-muted-foreground",children:e}),s.jsx(S,{variant:"secondary",children:a.length})]}),s.jsx("div",{className:"space-y-2",children:a.map(ie)})]},e))}),$]})}export{Ye as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.