PageSourceSearch

https://somosomov.org/assets/Observatorio-DZvxTKVm.js

js somosomov.org collected 2026-10-04 05:17:11 UTC 6,854 bytes, 2 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BrazilMap-BUyk_Yxy.js","assets/index-DtinW7og.js","assets/index-BEVZcmJi.css","assets/string-SUJU7WsC.js"])))=>i.map(i=>d[i]);
2import{h as R,K as E,r as n,f,j as e,H as M,E as k,B as y,y as A,m as _,O as c,k as b,a1 as O,a2 as B,a3 as D,a4 as I,a5 as L,a8 as F,t as G,C as T,l as V,a7 as z,a9 as N,bi as q,an as J,b3 as H}from"./index-DtinW7og.js";import"./radio-group-D-7qpNyU.js";import{B as $}from"./bar-chart-2-CQEPQpML.js";const K=R("PenLine",[["path",{d:"M12 20h9",key:"t2du7b"}],["path",{d:"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z",key:"ymcmye"}]]),U=[{name:"Acre",uf:"AC"},{name:"Alagoas",uf:"AL"},{name:"Amapá",uf:"AP"},{name:"Amazonas",uf:"AM"},{name:"Bahia",uf:"BA"},{name:"Ceará",uf:"CE"},{name:"Distrito Federal",uf:"DF"},{name:"Espírito Santo",uf:"ES"},{name:"Goiás",uf:"GO"},{name:"Maranhão",uf:"MA"},{name:"Mato Grosso",uf:"MT"},{name:"Mato Grosso do Sul",uf:"MS"},{name:"Minas Gerais",uf:"MG"},{name:"Pará",uf:"PA"},{name:"Paraíba",uf:"PB"},{name:"Paraná",uf:"PR"},{name:"Pernambuco",uf:"PE"},{name:"Piauí",uf:"PI"},{name:"Rio de Janeiro",uf:"RJ"},{name:"Rio Grande do Norte",uf:"RN"},{name:"Rio Grande do Sul",uf:"RS"},{name:"Rondônia",uf:"RO"},{name:"Roraima",uf:"RR"},{name:"Santa Catarina",uf:"SC"},{name:"São Paulo",uf:"SP"},{name:"Sergipe",uf:"SE"},{name:"Tocantins",uf:"TO"}];N.lazy(()=>H(()=>import("./BrazilMap-BUyk_Yxy.js"),__vite__mapDeps([0,1,2,3])));const h=({icon:o,value:u,label:r})=>{const i=N.useRef(null),d=q(i,{once:!0});return e.jsxs(_.div,{ref:i,initial:{opacity:0,y:30},animate:d?{opacity:1,y:0}:{},className:"bg-card border border-border p-8 rounded-3xl shadow-brand text-center",children:[e.jsx("div",{className:"bg-primary/10 w-16 h-16 rounded-2xl mx-auto flex items-center justify-center mb-6",children:e.jsx(o,{className:"w-8 h-8 text-primary"})}),e.jsx("p",{className:"text-5xl font-black text-foreground",children:d&&e.jsx(J,{end:u})}),e.jsx("p",{className:"text-muted-foreground font-bold mt-2 uppercase tracking-wider text-sm",children:r})]})},Y=()=>{const{toast:o}=E(),[u,r]=n.useState(!1),[i,d]=n.useState({total_submissions:0,resolved_submissions:0,distinct_cities:0,distinct_states:0}),[p,g]=n.useState(!1),[Z,S]=n.useState([]),[s,j]=n.useState({council_name:"",council_city:"",council_state:"",council_status:"",mandate_status:"",meeting_status:"",youth_participation:"",problem_description:"",submitter_contact:"",wants_updates:"Sim"}),v=n.useCallback(async()=>{const[a,t]=await Promise.all([f.from("obnc_stats").select("*").limit(1).single(),f.from("obnc_submissions").select("council_name,council_city,council_state,latitude,longitude,status").not("latitude","is",null)]);a.data&&d(a.data),t.data&&S(t.data)},[]);n.useEffect(()=>{v()},[v]);const m=a=>j(t=>({...t,[a.target.id]:a.target.value})),C=(a,t)=>j(x=>({...x,[a]:t})),w=async(a,t)=>{try{const l=await(await fetch(`https://nominatim.openstreetmap.org/search?city=${a}&state=${t}&country=Brazil&format=json&limit=1`)).json();return l.length?{latitude:parseFloat(l[0].lat),longitude:parseFloat(l[0].lon)}:{latitude:null,longitude:null}}catch{return{latitude:null,longitude:null}}},P=async a=>{a.preventDefault(),r(!0);const{latitude:t,longitude:x}=await w(s.council_city,s.council_state);if(!t){o({variant:"destructive",title:"Localização não encontrada"}),r(!1);return}const{error:l}=await f.from("obnc_submissions").insert([{...s,wants_updates:s.wants_updates==="Sim",latitude:t,longitude:x}]);l?o({variant:"destructive",title:"Erro"}):(o({title:"Enviado!"}),g(!1)),r(!1)};return e.jsxs("div",{className:"bg-background min-h-screen",children:[e.jsx(M,{children:e.jsx("title",{children:"Observatório OBNC - MOV"})}),e.jsxs("section",{className:"relative py-32 text-center overflow-hidden bg-primary text-white",children:[e.jsx("div",{className:"absolute inset-0 bg-black/20 mix-blend-overlay"}),e.jsxs("div",{className:"container mx-auto px-6 relative z-10",children:[e.jsx(k,{className:"w-16 h-16 mx-auto mb-6 opacity-80"}),e.jsx("h1",{className:"text-5xl md:text-7xl font-black tracking-tighter mb-6",children:"Observatório OBNC"}),e.jsx("p",{className:"max-w-2xl mx-auto text-xl font-medium text-white/90 mb-10",children:"Se existe Conselho, ele precisa funcionar. Se a Juventude não está, ela precisa entrar."}),e.jsxs(y,{onClick:()=>g(!p),size:"lg",className:"bg-white text-primary hover:bg-gray-100 font-bold rounded-full h-14 px-8 shadow-xl",children:[e.jsx(K,{className:"mr-2 h-5 w-5"})," ",p?"Ocultar Formulário":"Registrar Denúncia"]})]})]}),e.jsx(A,{children:p&&e.jsx(_.section,{initial:{height:0,opacity:0}
2,animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},className:"overflow-hidden bg-muted",children:e.jsx("div",{className:"container mx-auto px-6 py-16",children:e.jsxs("div",{className:"max-w-4xl mx-auto bg-card p-10 rounded-3xl shadow-brand border border-border",children:[e.jsx("h2",{className:"text-3xl font-black mb-8 text-foreground",children:"Formulário de Registro"}),e.jsxs("form",{onSubmit:P,className:"space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{children:"Conselho"}),e.jsx(b,{id:"council_name",value:s.council_name,onChange:m,required:!0})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{children:"Município"}),e.jsx(b,{id:"council_city",value:s.council_city,onChange:m,required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{children:"Estado"}),e.jsxs(O,{onValueChange:a=>C("council_state",a),value:s.council_state,children:[e.jsx(B,{children:e.jsx(D,{placeholder:"Estado"})}),e.jsx(I,{children:U.map(a=>e.jsx(L,{value:a.uf,children:a.name},a.uf))})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{children:"Problema"}),e.jsx(F,{id:"problem_description",value:s.problem_description,onChange:m,required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{children:"Seu Contato"}),e.jsx(b,{id:"submitter_contact",value:s.submitter_contact,onChange:m,required:!0})]}),e.jsx(y,{type:"submit",disabled:u,className:"w-full bg-primary hover:bg-primary/90 text-white h-12 rounded-full font-bold",children:u?e.jsx(G,{className:"animate-spin"}):"Enviar Registro"})]})]})})})}),e.jsx("section",{className:"py-24",children:e.jsxs("div",{className:"container mx-auto px-6",children:[e.jsx("h2",{className:"text-4xl font-black text-center mb-16 text-foreground",children:"Nosso Impacto"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-8",children:[e.jsx(h,{icon:$,value:i.total_submissions,label:"Registros Totais"}),e.jsx(h,{icon:T,value:i.resolved_submissions,label:"Soluções Articuladas"}),e.jsx(h,{icon:V,value:i.distinct_cities,label:"Municípios"}),e.jsx(h,{icon:z,value:i.distinct_states,label:"Estados"})]})]})})]})};export{Y 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.