1import{d as n,m as L,j as t}from"./vendor-ui-BB8mXvqP.js";import{F as q}from"./FaqAccordionList-3czkf_hZ.js";import{a as s}from"./vendor-react-CJU79Ct-.js";import{f as J}from"./index-CQnsSYIT.js";import{o as z}from"./index-_5N6FtDc.js";import"./vendor-icons-DhsjgUZX.js";import"./vendor-redux-D1ajBEGU.js";import"./vendor-carousel-B7Xw1xVr.js";import"./vendor-forms-C8g3Xc13.js";import"./vendor-utils-CThTlkiW.js";const K="/assets/images/banner-counters-C2gd4_NK.jpg",U=L`to { transform: rotate(360deg); }`,P=L` 2 0% { background-position: -468px 0; } 3 100% { background-position: 468px 0; } 4`,W=n.div` 5 max-width: 900px; 6 margin: 0 auto; 7 padding: 2rem 1rem; 8`,Q=n.div` 9 display: flex; 10 align-items: center; 11 background-color: #D9D9D9; 12 height: 250px; 13 border-radius: 8px; 14 border: 1px solid #ddd; 15 padding: 1.5rem; 16 margin-bottom: 20px; 17 background-image: url(${K}); 18 background-size: cover; 19 background-position: center; 20 21 @media (max-width: 768px) { 22 flex-direction: column; 23 text-align: center; 24 } 25`,V=n.div` 26 display: flex; 27 flex-direction: column; 28 border: 1px solid #ddd; 29 padding: 1rem; 30 border-radius: 8px; 31 margin-bottom: 2rem; 32 gap: 0.75rem; 33`,X=n.label` 34 font-weight: bold; 35 font-size: 0.95rem; 36`,Y=n.div` 37 display: flex; 38 flex-wrap: wrap; 39 align-items: center; 40 gap: 0.75rem; 41`,R=n.select` 42 padding: 0.6rem 0.75rem; 43 max-width: 290px; 44 width: 100%; 45 border: 1px solid #ccc; 46 border-radius: 6px; 47 background-color: ${({disabled:e})=>e?"#eee":"#fff"}; 48 cursor: ${({disabled:e})=>e?"not-allowed":"pointer"}; 49`,Z=n.label` 50 display: flex; 51 align-items: flex-start; 52 gap: 0.5rem; 53 font-size: 0.8rem; 54`,ee=n.button` 55 padding: 0.6rem 1.2rem; 56 background: #152F4F; 57 color: #fff; 58 border: none; 59 cursor: pointer; 60 border-radius: 6px; 61 font-size: 0.9rem; 62 width: 120px; 63 64 &:hover { 65 opacity: 0.9; 66 } 67`,F=n.p` 68 font-size: 1rem; 69 text-align: center; 70 max-width: 700px; 71 height: 150px; 72 margin: 2rem auto; 73 align-content: center; 74 75 &.error { 76 color: #b91c1c; 77 } 78`,te=n.div` 79 display: flex; 80 flex-wrap: wrap; 81 gap: 2rem; 82 margin-top: 2rem; 83 justify-content: flex-start; 84`,G=n.div` 85 flex: 0 1 calc(50% - 1rem); 86 box-sizing: border-box; 87 border: 1px solid #CCCCCC; 88 border-radius: 8px; 89 padding: 1rem; 90 background-color: #F2F2F2; 91 92 @media (max-width: 1024px) { 93 flex: 0 1 calc(50% - 1rem); 94 } 95 96 @media (max-width: 600px) { 97 flex: 0 1 100%; 98 } 99`,ae=n.h3` 100 font-size: 14px; 101 font-weight: bold; 102 margin-bottom: 0.5rem; 103`,h=n.p` 104 font-size: 12px; 105 margin-bottom: 0.25rem; 106 color: #1D1D1D80; 107 108 .information-strong { 109 font-weight: bold; 110 font-size: 12px; 111 } 112 113 &.free { 114 font-weight: 500; 115 color: #059669; 116 font-size: 16px; 117 } 118`,re=n.div` 119 display: grid; 120 grid-template-columns: 1fr 1fr; 121 gap: 0.75rem 1rem; 122 margin-bottom: 0.5rem; 123 124 @media (max-width: 600px) { 125 grid-template-columns: 1fr; 126 } 127`,T=n.div` 128 min-width: 0; 129`,oe=n.p` 130 grid-column: 1 / -1; 131 margin-top: 0.5rem; 132 font-size: 12px; 133 line-height: 1.4; 134 color: #6B7280; 135 text-transform: uppercase; 136`;n.span` 137 display: inline-block; 138 margin-top: 0.5rem; 139 font-size: 0.9rem; 140 font-weight: bold; 141 color: #0c9c1b; 142`;const se=n.div` 143 display: flex; 144 justify-content: space-between; 145 align-items: center; 146 margin-bottom: 0.5rem; 147`;n.span` 148 display: inline-block; 149 width: 14px; 150 height: 14px; 151 margin-right: 8px; 152 border: 2px solid rgba(255,255,255,.55); 153 border-top-color: #fff; 154 border-radius: 50%; 155 animation: ${U} .6s linear infinite; 156`;const ne=n(G)` 157 .sk { 158 height: 12px; 159 border-radius: 4px; 160 background: linear-gradient(90deg, #e6e6e6 0, #f3f3f3 40px, #e6e6e6 80px); 161 background-size: 600px 100%; 162 animation: ${P} 1.2s linear infinite; 163 margin: 6px 0; 164 } 165 .title { height: 16px; width: 80%; margin-bottom: 12px; } 166 .short { width: 60%; } 167 .tiny { width: 40%; } 168 169 .row { 170 display: grid; 171 grid-template-columns: 1fr 1fr; 172 gap: .75rem 1rem; 173 } 174 175 @media (max-width: 600px) { 176 .row { grid-template-columns: 1fr; } 177 } 178`;function ie({c:e}){return t.jsxs(G,{children:[t.jsxs(se,{children:[t.jsx(ae,{children:e.nome}),t.jsx(J,{size:18,color:"#0B0E1B"})]}),t.jsxs(re,{children:[t.jsxs(T,{children:[t.jsx(h,{children:t.jsx("strong",{children:e.endereco})}),e.cep&&t.jsxs(h,{children:["CEP: ",e.cep]}),e.horario&&t.jsxs(h,{children:[t.jsx("span",{className:"information-strong",children:"HORÃRIO DE ATENDIMENTO: "}),t.jsx("br",{}),e.horario]})]}),t.jsxs(T,{children:[e.prazo_entrega&&t.jsx(h,{children:t.jsx("strong",{children:e.prazo_entrega})}),e.telefone&&t.jsxs(h,{children:["Fone: ",e.telefone]}),e.empresa&&t.jsx(h,{children:e.empresa})]}),e.observacao&&t.jsxs(oe,{children:["* ",e.observacao]})]}),e.tipo_preco_balcao&&t.jsx(h,{className:"free",children:e.tipo_preco_balcao})]})}function ce(e){const r=!e.selectedCity||e.loadingEstados||e.loadingCidades||e.loadingBalcoes;return t.jsxs(V,{children:[t.jsx(X,{children:"Encontre um balcão perto de você"}),t.jsxs(Y,{children:[t.jsxs(R,{value:e.selectedState,onChange:a=>e.onChangeState(a.target.value?Number(a.target.value):""),children:[t.jsx("option",{value:"",children:e.loadingEstados?"Carregando":"Selecione o Estado"}),e.estados.map(a=>t.jsxs("option",{value:a.id,children:[a.sigla," - ",a.nome]},a.id))]}),t.jsxs(R,{value:e.selectedCity,disabled:!e.selectedState||e.loadingCidades,onChange:a=>e.onChangeCity(a.target.value?Number(a.target.value):""),children:[t.jsx("option",{value:"",children:e.selectedState&&e.loadingCidades?"Carregando Cidades":"Selecione a Cidade"}),e.cidades.map(a=>t.jsx("option",{value:a.id,children:a.nome},a.id))]}),t.jsxs(Z,{children:[t.jsx("input",{type:"checkbox",checked:e.freteGratis,onChange:e.onToggleFreteGratis}),"Frete Grátis"]}),t.jsx(ee,{onClick:e.onSearch,disabled:r,children:e.loadingBalcoes?"Buscando":"Buscar"})]})]})}const de=({count:e=6,className:r})=>t.jsx(t.Fragment,{children:Array.from({length:e}).map((a,i)=>t.jsxs(ne,{className:r,"aria-hidden":"true",children:[t.jsx("div",{className:"sk title"}),t.jsxs("div",{className:"row",children:[t.jsxs("div",{children:[t.jsx("div",{className:"sk"}),t.jsx("div",{className:"sk short"}),t.jsx("div",{className:"sk tiny"}),t.jsx("div",{className:"sk tiny"})]}),t.jsxs("div",{children:[t.jsx("div",{className:"sk short"}),t.jsx("div",{className:"sk"}),t.jsx("div",{className:"sk tiny"})]})]}),t.jsx("div",{className:"sk short",style:{marginTop:8}})]},`sk-${i}`))}),$={ESTADOS:"/enderecos/estados",ESTADO:e=>`/enderecos/estados/${e}`,BALCOES:e=>`/endereco/cidade/${e}/balcoes`},le=e=>({id:Number(e?.id??e?.pk??e?.codigo??0),nome:String(e?.nome??e?.name??""),sigla:String(e?.sigla??e?.uf??"")}),me=e=>({id:Number(e?.id??e?.pk??e?.codigo??0),nome:String(e?.nome??e?.name??"")}),ue=e=>{const r=e?.logradouro_balcao??"",a=e?.nr_balcao?`, ${e.nr_balcao}`:"",i=e?.complemento_balcao?`, ${e.complemento_balcao}`:"",u=e?.bairro_balcao?` - ${e.bairro_balcao}`:"",c=e?.desc_cidade&&e?.uf_estado?` - ${e.desc_cidade}/${e.uf_estado}`:"";return`${r}${a}${i}${u}${c}`.trim()},pe=e=>String(e??"").normalize("NFD").replace(/[\u0300-\u036f]/g,"").toUpperCase().includes("GRATIS"),ge=e=>({id:Number(e?.id??e?.pk??e?.pk_balcao??0),nome:String(e?.nome??e?.name??e?.desc_balcao??""),endereco:ue(e),cep:e?.cep_balcao??e?.cep??void 0,telefone:e?.fone_balcao??e?.telefone??void 0,empresa:e?.empresa??void 0,prazo_entrega:e?.prazo_entrega??(e?.prazo_balcao?`Entrega em até ${e.prazo_balcao} dia util`:void 0),horario:e?.horario??e?.info_atendimento??void 0,observacao:e?.observacao??void 0,frete_gratis:pe(e?.tipo_preco_balcao)||!!e?.frete_gratis,tipo_preco_balcao:e?.tipo_preco_balcao??void 0});async function xe(e){const{data:r}=await z.customer.public.get($.ESTADOS,{signal:e});return(Array.isArray(r)?r:r?.data??[]).map(le).sort((u,c)=>u.sigla.localeCompare(c.sigla))}async function fe(e,r){const{data:a}=await z.customer.public.get($.ESTADO(e),{signal:r});return(a?.data?.cidades??a?.cidades??[]).map(me).sort((c,b)=>c.nome.localeCompare(b.nome,"pt-BR"))}async function he(e,r,a){const{data:i}=await z.customer.public.get($.BALCOES(e),{params:{frete_gratis:r?1:0},signal:a});return(Array.isArray(i)?i:i?.data??[]).map(ge)}const y={ESTADOS:"addr:estados",CIDADES:"addr:cidadesByEstado",BALCOES:"addr:balcoesByKey"},D=e=>{try{const r=sessionStorage.getItem(e);return r?JSON.parse(r):null}catch{return null}},O=(e,r)=>{try{sessionStorage.setItem(e,JSON.stringify(r))}catch{}},be=()=>{const[e,r]=s.useState([]),[a,i]=s.useState([]),[u,c]=s.useState([]),[b,E]=s.useState(!1),[A,k]=s.useState(!1),[N,C]=s.useState(!1),[_,p]=s.useState(null),w=s.useRef(null),g=s.useRef(new Map),x=s.useRef(new Map),B=(o,m)=>`${o}:${m?1:0}`,S=s.useRef(null),v=s.useRef(null),d=s.useRef(null);s.useEffect(()=>{const o=D(y.ESTADOS);o?.length&&(w.current=o,r(o));const m=D(y.CIDADES);
178m&&(g.current=new Map(Object.entries(m).map(([j,f])=>[Number(j),f])));const l=D(y.BALCOES);l&&(x.current=new Map(Object.entries(l)))},[]),s.useEffect(()=>{if(!w.current?.length)return(async()=>{E(!0),p(null),S.current?.abort(),S.current=new AbortController;try{const o=await xe(S.current.signal);w.current=o,r(o),O(y.ESTADOS,o)}catch(o){o?.name!=="CanceledError"&&p(o?.response?.data?.mensagem||"Falha ao carregar estados")}finally{E(!1)}})(),()=>S.current?.abort()},[]);const I=s.useCallback(async o=>{if(!o){i([]);return}const m=g.current.get(o);if(m){i(m);return}k(!0),p(null),v.current?.abort(),v.current=new AbortController;try{const l=await fe(o,v.current.signal);g.current.set(o,l),i(l);const j=Object.fromEntries(g.current);O(y.CIDADES,j)}catch(l){l?.name!=="CanceledError"&&(p(l?.response?.data?.mensagem||"Falha ao carregar cidades"),i([]))}finally{k(!1)}},[]),M=s.useCallback(async(o,m)=>{if(!o){c([]);return}const l=B(o,m),j=x.current.get(l);if(j){c(j);return}C(!0),p(null),d.current?.abort(),d.current=new AbortController;try{const f=await he(o,m,d.current.signal);x.current.set(l,f),c(f);const H=Object.fromEntries(x.current);O(y.BALCOES,H)}catch(f){f?.name!=="CanceledError"&&(p(f?.response?.data?.mensagem||"Falha ao carregar balcões"),c([]))}finally{C(!1)}},[]);return{estados:e,cidades:a,balcoes:u,loadingEstados:b,loadingCidades:A,loadingBalcoes:N,error:_,loadCidades:I,loadBalcoes:M}},Ne=()=>{const{estados:e,cidades:r,balcoes:a,loadingEstados:i,loadingCidades:u,loadingBalcoes:c,error:b,loadCidades:E,loadBalcoes:A}=be(),[k,N]=s.useState(""),[C,_]=s.useState(""),[p,w]=s.useState(!1),[g,x]=s.useState(!1),B=d=>{N(d),_(""),d&&E(Number(d))},S=d=>_(d),v=()=>{if(!C){x(!1);return}x(!0),A(Number(C),p)};return t.jsxs(W,{children:[t.jsx(Q,{}),t.jsx(ce,{estados:e,cidades:r,selectedState:k,selectedCity:C,freteGratis:p,loadingEstados:i,loadingCidades:u,loadingBalcoes:c,onChangeState:B,onChangeCity:S,onToggleFreteGratis:()=>w(d=>!d),onSearch:v}),!g&&t.jsx(F,{children:"Comprando na Gráfica Cores, além de qualidade e preço baixo, você tem mais facilidade na hora de selecionar a forma de entrega. Compre hoje mesmo e confira!"}),b&&t.jsx(F,{className:"error",children:b}),g&&t.jsx(te,{children:c?t.jsx(de,{count:6}):a.length===0?t.jsx(F,{children:"Nenhum balcão encontrado."}):a.map(d=>t.jsx(ie,{c:d},d.id))}),t.jsx(q,{})]})};export{Ne 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.