1import{r as a,b as Ce,j as e,w as A,B as k,C as M,K as le,N as ie,bJ as oe,c as Q,J as j,s as ee,e as Re,M as xe}from"./index-PtGACUVf.js";import{C as ge}from"./checkbox-Be-GC6mS.js";import{L as R}from"./label-BGYTmHnu.js";import{S as fe,a as je,b as ve,c as ye,d as Y}from"./select-BwSQ4ldD.js";import{P as Ie}from"./progress-OepA4vif.js";import{T as Ae,a as Ee,b as Ne,c as Se}from"./tabs-DRyusGut.js";import{L as be}from"./leaflet-src-ClmRrQCs.js";/* empty css */import{S as ke}from"./scroll-area-DNolq6ne.js";import{S as ze}from"./switch-CWE3Of9x.js";import{B as Be}from"./building-2-DaWZqhwr.js";import{R as qe}from"./refresh-cw-Dc0N6ZOE.js";import{D as Le}from"./download-40xh9tfd.js";import{S as Te}from"./square-check-big-DIVz-rQn.js";import{S as Pe}from"./square-BqgxbYTi.js";import{C as $e}from"./circle-stop-C-Nv8dRR.js";import{L as Me}from"./layers-DYa2Fyt7.js";import"./index-BdQq_4o_.js";import"./chevron-up-BZ1Up2zp.js";const we=[{term:"accountant",enabled:!0},{term:"attractions",enabled:!0},{term:"attorney",enabled:!0},{term:"auto repair",enabled:!0},{term:"bakery",enabled:!0},{term:"bank",enabled:!0},{term:"barbershop",enabled:!0},{term:"bars",enabled:!0},{term:"bed and breakfast",enabled:!0},{term:"bike rental",enabled:!0},{term:"boat dealer",enabled:!0},{term:"boat rental",enabled:!0},{term:"boutique",enabled:!0},{term:"bowling alley",enabled:!0},{term:"breakfast restaurant",enabled:!0},{term:"brewery",enabled:!0},{term:"campground",enabled:!0},{term:"car dealer",enabled:!0},{term:"car rental",enabled:!0},{term:"chiropractor",enabled:!0},{term:"cleaning service",enabled:!0},{term:"coffee shops",enabled:!0},{term:"dentist",enabled:!0},{term:"doctors",enabled:!0},{term:"electrician",enabled:!0},{term:"emergency room",enabled:!0},{term:"financial advisor",enabled:!0},{term:"fishing charter",enabled:!0},{term:"florist",enabled:!0},{term:"gift shop",enabled:!0},{term:"golf cart rental",enabled:!0},{term:"golf course",enabled:!0},{term:"grocery stores",enabled:!0},{term:"gym",enabled:!0},{term:"hair salon",enabled:!0},{term:"handyman",enabled:!0},{term:"hospital",enabled:!0},{term:"hotels",enabled:!0},{term:"house cleaning service",enabled:!0},{term:"HVAC",enabled:!0},{term:"ice cream shop",enabled:!0},{term:"insurance agent",enabled:!0},{term:"italian restaurant",enabled:!0},{term:"jet ski rental",enabled:!0},{term:"kayak rental",enabled:!0},{term:"landscaping",enabled:!0},{term:"liquor store",enabled:!0},{term:"live music venue",enabled:!0},{term:"marina",enabled:!0},{term:"massage therapist",enabled:!0},{term:"mexican restaurant",enabled:!0},{term:"mini golf",enabled:!0},{term:"movie theater",enabled:!0},{term:"moving service",enabled:!0},{term:"museum",enabled:!0},{term:"nail salon",enabled:!0},{term:"paddleboard rental",enabled:!0},{term:"pest control",enabled:!0},{term:"pet grooming",enabled:!0},{term:"pharmacy",enabled:!0},{term:"photographer",enabled:!0},{term:"pizza restaurant",enabled:!0},{term:"plumber",enabled:!0},{term:"pool service",enabled:!0},{term:"property management company",enabled:!0},{term:"real estate agent",enabled:!0},{term:"resort",enabled:!0},{term:"restaurants",enabled:!0},{term:"roofing contractor",enabled:!0},{term:"seafood restaurant",enabled:!0},{term:"shopping",enabled:!0},{term:"spa",enabled:!0},{term:"steakhouse",enabled:!0},{term:"storage unit",enabled:!0},{term:"sushi restaurant",enabled:!0},{term:"things to do",enabled:!0},{term:"urgent care",enabled:!0},{term:"vacation home rental agency",enabled:!0},{term:"veterinarian",enabled:!0},{term:"wedding venue",enabled:!0},{term:"winery",enabled:!0},{term:"yoga studio",enabled:!0}];function Qe(){const[b,O]=a.useState(new Set),[y,de]=a.useState(!1),[u,te]=a.useState(!1),[E,L]=a.useState(!1),m=a.useRef(!1),[ce,T]=a.useState(0),[ue,re]=a.useState(""),[me,D]=a.useState(""),[se,P]=a.useState(0),[pe,o]=a.useState(0),[V,ae]=a.useState([]),_=a.useRef(null),{data:U,isLoading:G,refetch:ne,isFetching:H}=Ce({queryKey:["admin-cities-with-counts"],queryFn:async()=>{const{data:t,error:i}=await ee.from("cities").select("id, name, state, domain, latitude, longitude").eq("is_active",!0).order("domain");if(i)throw i;const s=[];for(const p of t||[]){const{count:h,error:l}=await ee.from("businesses").select("*",{count:"exact",head:!0}).eq("city_id",p.id);
1l&&console.error(`Error counting businesses for ${p.domain}:`,l),s.push({...p,businessCount:h||0})}return s}}),w=(U==null?void 0:U.filter(t=>y?t.businessCount<50:t.businessCount===0))||[],N=w.filter(t=>t.latitude&&t.longitude),g=w.filter(t=>!t.latitude||!t.longitude),c=(t,i="info")=>{ae(s=>[...s,{timestamp:new Date,message:t,type:i}]),setTimeout(()=>{var s;(s=_.current)==null||s.scrollIntoView({behavior:"smooth"})},100)},Z=t=>new Promise(i=>setTimeout(i,t)),K=t=>{O(i=>{const s=new Set(i);return s.has(t)?s.delete(t):s.add(t),s})},$=()=>{O(new Set(N.map(t=>t.id)))},W=()=>{O(new Set)},x=()=>{m.current=!0,L(!0),c("Stop requested, finishing current search...","info")},C=async()=>{const t=N.filter(l=>b.has(l.id));if(t.length===0){j.error("Please select at least one city");return}const i=we.filter(l=>l.enabled);if(i.length===0){j.error("No search terms enabled");return}m.current=!1,L(!1),te(!0),o(0),ae([]),T(0),P(0),c(`Starting bulk import for ${t.length} cities with ${i.length} search terms each`,"info");let s=0;const p=t.length*i.length;let h=0;try{for(let l=0;l<t.length;l++){if(m.current){c("Import stopped by user","info");break}const v=t[l];T(l+1),re(v.domain),c(`âââ Starting import for ${v.domain} (${l+1}/${t.length}) âââ`,"info");let J=0;for(let z=0;z<i.length&&!m.current;z++){const{term:B}=i[z];D(B);try{const{data:S,error:I}=await ee.functions.invoke("import-businesses",{body:{cityId:v.id,searchTerm:B,latitude:v.latitude,longitude:v.longitude,cityName:v.name,stateName:v.state}});if(I)throw I;const q=(S==null?void 0:S.imported)||0;J+=q,s+=q,o(s),q>0&&c(` ${B}: +${q} businesses`,"success")}catch(S){const I=(S==null?void 0:S.message)||"Unknown error";if(c(` ${B}: Error - ${I}`,"error"),I.includes("503")||I.includes("not configured")){c("SerpAPI error - stopping import","error"),m.current=!0;break}}h++,P(Math.round(h/p*100)),z<i.length-1&&!m.current&&await Z(2e3)}c(`Completed ${v.domain}: +${J} total businesses`,J>0?"success":"info"),await ne(),l<t.length-1&&!m.current&&(c("Waiting 5 seconds before next city...","info"),await Z(5e3))}P(100),c("ââââââââââââââââââââââââ","info"),c(`BULK IMPORT COMPLETE: ${s} total businesses imported`,"success"),j.success(`Bulk import complete: ${s} businesses imported`),ne()}catch(l){console.error("Bulk import error:",l),c(`Fatal error: ${l}`,"error"),j.error("Bulk import failed. Check logs for details.")}finally{te(!1),L(!1),m.current=!1}};return G?e.jsx("div",{className:"p-4 text-muted-foreground",children:"Loading cities..."}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex flex-wrap gap-4 items-center",children:[e.jsxs(A,{variant:"secondary",className:"text-base px-3 py-1",children:[e.jsx(Be,{className:"h-4 w-4 mr-2"}),w.length," cities ",y?"with < 50":"with 0"," businesses"]}),e.jsxs(k,{variant:"outline",size:"sm",onClick:()=>ne(),disabled:u||H,className:"flex items-center gap-2",children:[e.jsx(qe,{className:`h-4 w-4 ${H?"animate-spin":""}`}),"Refresh List"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ze,{id:"show-under-50",checked:y,onCheckedChange:de,disabled:u}),e.jsx(R,{htmlFor:"show-under-50",className:"text-sm",children:"Show cities with < 50 businesses"})]})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsxs(M,{children:[e.jsxs(le,{children:[e.jsxs(ie,{className:"text-lg flex items-center gap-2",children:[e.jsx(Le,{className:"h-5 w-5"}),"Select Cities to Import"]}),e.jsxs(oe,{children:[b.size," of ",N.length," cities selected"]})]}),e.jsxs(Q,{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(k,{variant:"outline",size:"sm",onClick:$,disabled:u||b.size===N.length,className:"flex items-center gap-1",children:[e.jsx(Te,{className:"h-4 w-4"}),"Select All"]}),e.jsxs(k,{variant:"outline",size:"sm",onClick:W,disabled:u||b.size===0,className:"flex items-center gap-1",children:[e.jsx(Pe,{className:"h-4 w-4"}),"Deselect All"]})]}),e.jsx(ke,{className:"h-[400px] border rounded-lg p-3 bg-muted/30",children:e.jsxs("div",{className:"space-y-2",children:[N.map(t=>e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(ge,{id:`city-${t.id}`,checked:b.has(t.id),onCheckedChange:()=>K(t.id),disabled:u}),e.jsxs("label",{htmlFor:`city-${t.id}`,className:"text-sm font-normal cursor-pointer flex-1 flex justify-between",children:[e.jsx("span",{children:t.domain}),e.jsxs(A,{variant:"outline",className:"ml-2",children:[t.businessCount," businesses"]})]})]},t.id)),N.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground text-center py-8",children:"All cities have businesses! ð"})]})}),g.length>0&&e.jsxs("p",{className:"text-xs text-destructive",children:["â ï¸ ",g.length," cities skipped (no coordinates)"]})]})]}),e.jsxs(M,{children:[e.jsxs(le,{children:[e.jsx(ie,{className:"text-lg",children:"Import Progress"}),e.jsx(oe,{children:u?`Importing ${ue} - ${me}`:"Ready to start bulk import"})]}),e.jsxs(Q,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[u&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex justify-between text-sm",children:[e.jsxs("span",{children:["City ",ce," of ",b.size]}),e.jsxs("span",{children:[se,"%"]})]}),e.jsx(Ie,{value:se,className:"h-3"})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:e.jsxs(A,{variant:"default",children:["Total Imported: ",pe]})})]}),e.jsx(ke,{className:"h-[300px] border rounded-lg bg-background/50",children:e.jsxs("div",{className:"p-3 font-mono text-xs space-y-1",children:[V.length===0&&e.jsx("p",{className:"text-muted-foreground",children:"Logs will appear here..."}),V.map((t,i)=>e.jsxs("div",{className:`${t.type==="error"?"text-destructive":t.type==="success"?"text-green-600 dark:text-green-400":"text-muted-foreground"}`,children:[e.jsx("span",{className:"opacity-50",children:t.timestamp.toLocaleTimeString()})," ",t.message]},i)),e.jsx("div",{ref:_})]})})]})]})]}),e.jsx(M,{children:e.jsx(Q,{className:"pt-6",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(k,{onClick:C,disabled:u||b.size===0,size:"lg",children:u?"Importing...":`Start Bulk Import (${b.size} cities)`}),u&&e.jsxs(k,{onClick:x,variant:"destructive",disabled:E,className:"flex items-center gap-2",children:[e.jsx($e,{className:"h-4 w-4"}),E?"Stopping...":"Stop Import"]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["Est. cost: $",(b.size*we.filter(t=>t.enabled).length*.01).toFixed(2)]})]})})})]})}const Oe=[{term:"accountant",enabled:!0},{term:"attractions",enabled:!0},{term:"attorney",enabled:!0},{term:"auto repair",enabled:!0},{term:"bakery",enabled:!0},{term:"bank",enabled:!0},{term:"barbershop",enabled:!0},{term:"bars",enabled:!0},{term:"bed and breakfast",enabled:!0},{term:"bike rental",enabled:!0},{term:"boat dealer",enabled:!0},{term:"boat rental",enabled:!0},{term:"boutique",enabled:!0},{term:"bowling alley",enabled:!0},{term:"breakfast restaurant",enabled:!0},{term:"brewery",enabled:!0}
1,{term:"campground",enabled:!0},{term:"car dealer",enabled:!0},{term:"car rental",enabled:!0},{term:"chiropractor",enabled:!0},{term:"cleaning service",enabled:!0},{term:"coffee shops",enabled:!0},{term:"dentist",enabled:!0},{term:"doctors",enabled:!0},{term:"electrician",enabled:!0},{term:"emergency room",enabled:!0},{term:"financial advisor",enabled:!0},{term:"fishing charter",enabled:!0},{term:"florist",enabled:!0},{term:"gift shop",enabled:!0},{term:"golf cart rental",enabled:!0},{term:"golf course",enabled:!0},{term:"grocery stores",enabled:!0},{term:"gym",enabled:!0},{term:"hair salon",enabled:!0},{term:"handyman",enabled:!0},{term:"hospital",enabled:!0},{term:"hotels",enabled:!0},{term:"house cleaning service",enabled:!0},{term:"HVAC",enabled:!0},{term:"ice cream shop",enabled:!0},{term:"insurance agent",enabled:!0},{term:"italian restaurant",enabled:!0},{term:"jet ski rental",enabled:!0},{term:"kayak rental",enabled:!0},{term:"landscaping",enabled:!0},{term:"liquor store",enabled:!0},{term:"live music venue",enabled:!0},{term:"marina",enabled:!0},{term:"massage therapist",enabled:!0},{term:"mexican restaurant",enabled:!0},{term:"mini golf",enabled:!0},{term:"movie theater",enabled:!0},{term:"moving service",enabled:!0},{term:"museum",enabled:!0},{term:"nail salon",enabled:!0},{term:"paddleboard rental",enabled:!0},{term:"pest control",enabled:!0},{term:"pet grooming",enabled:!0},{term:"pharmacy",enabled:!0},{term:"photographer",enabled:!0},{term:"pizza restaurant",enabled:!0},{term:"plumber",enabled:!0},{term:"pool service",enabled:!0},{term:"property management company",enabled:!0},{term:"real estate agent",enabled:!0},{term:"resort",enabled:!0},{term:"restaurants",enabled:!0},{term:"roofing contractor",enabled:!0},{term:"seafood restaurant",enabled:!0},{term:"shopping",enabled:!0},{term:"spa",enabled:!0},{term:"steakhouse",enabled:!0},{term:"storage unit",enabled:!0},{term:"sushi restaurant",enabled:!0},{term:"things to do",enabled:!0},{term:"urgent care",enabled:!0},{term:"vacation home rental agency",enabled:!0},{term:"veterinarian",enabled:!0},{term:"wedding venue",enabled:!0},{term:"winery",enabled:!0},{term:"yoga studio",enabled:!0}];function it(){const[b]=Re(),O=b.get("city"),[y,de]=a.useState(O||""),[u,te]=a.useState(""),[E,L]=a.useState(Oe),[m,ce]=a.useState(""),[T,ue]=a.useState(""),[re,me]=a.useState("12"),[D,se]=a.useState(!1),[P,pe]=a.useState(""),[o,V]=a.useState(!1),[ae,_]=a.useState(""),[U,G]=a.useState(0),[ne,H]=a.useState(0),[w,N]=a.useState({searchesPerformed:0,totalFound:0,totalPassedQuality:0,totalImported:0,totalSkipped:0}),[g,c]=a.useState(null),[Z,K]=a.useState(!1),$=a.useRef(!1),W=a.useRef(null),x=a.useRef(null),C=a.useRef(null),{data:t,isLoading:i}=Ce({queryKey:["admin-cities-for-import"],queryFn:async()=>{const{data:r,error:n}=await ee.from("cities").select("id, name, state, domain, latitude, longitude").eq("is_active",!0).order("domain");if(n)throw n;return r}}),s=t==null?void 0:t.find(r=>r.id===y),p=E.filter(r=>r.enabled),h=p.length,l=E.length;a.useEffect(()=>{if(!(!W.current||x.current))return x.current=be.map(W.current).setView([39.8283,-98.5795],4),be.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:"© OpenStreetMap contributors"}).addTo(x.current),()=>{x.current&&(x.current.remove(),x.current=null)}},[]),a.useEffect(()=>{if(x.current)if(s!=null&&s.latitude&&(s!=null&&s.longitude)){const r=s.latitude,n=s.longitude;x.current.setView([r,n],12),C.current?C.current.setLatLng([r,n]):C.current=be.marker([r,n]).addTo(x.current)}else C.current&&(C.current.remove(),C.current=null)},[s]);const v=r=>new Promise(n=>setTimeout(n,r)),J=async(r,n,d,X,f)=>{const{data:F,error:he}=await ee.functions.invoke("import-businesses",{body:{cityId:y,searchTerm:r,latitude:n,longitude:d,cityName:X,stateName:f,searchLocation:u.trim()||null,geoLatitude:m.trim()?parseFloat(m):null,geoLongitude:T.trim()?parseFloat(T):null,geoZoom:m.trim()&&T.trim()?parseInt(re):null,addressFilter:D&&P.trim()?P.trim():null}});if(he)throw console.error("Import error:",he),he;return{searchTerm:r,found:F.found||0,passedQuality:F.passedQuality||0,imported:F.imported||0,skipped:F.skipped||0}},z=()=>{$.current=!0,K(!0)},B=r=>{L(n=>{const d=[...n];return d[r]={...d[r],enabled:!d[r].enabled},d})},S=()=>{L(r=>r.map(n=>({...n,enabled:!0})))},I=()=>{L(r=>r.map(n=>({...n,enabled:!1})))},q=async()=>
1{if(!y||!s){j.error("Please select a city");return}if(!s.latitude||!s.longitude){j.error("Selected city doesn't have coordinates configured");return}if(p.length===0){j.error("Please select at least one search term");return}$.current=!1,K(!1),V(!0),c(null),G(0),H(0),N({searchesPerformed:0,totalFound:0,totalPassedQuality:0,totalImported:0,totalSkipped:0});const r={searchesPerformed:0,totalFound:0,totalPassedQuality:0,totalImported:0,totalSkipped:0};let n=!1;try{for(let d=0;d<p.length;d++){if($.current){n=!0;break}const{term:X}=p[d];H(d+1),_(`Searching: ${X} (${d+1}/${p.length})...`),G(Math.round(d/p.length*100));try{const f=await J(X,s.latitude,s.longitude,s.name,s.state);r.searchesPerformed++,r.totalFound+=f.found,r.totalPassedQuality+=f.passedQuality,r.totalImported+=f.imported,r.totalSkipped+=f.skipped,N({...r})}catch(f){console.error(`Error importing ${X}:`,f);const F=(f==null?void 0:f.message)||"";if(F.includes("503")||F.includes("not configured")){j.error("SerpAPI error. Please check the API key configuration.");break}}d<p.length-1&&!$.current&&await v(1500)}G(100),c(r),_(""),n?j.info(`Import stopped. Imported: ${r.totalImported} new businesses`):j.success(`Import complete: ${r.totalImported} new businesses imported`)}catch(d){console.error("Import error:",d),j.error("Import failed. Check console for details.")}finally{V(!1),K(!1),$.current=!1}},Fe=(h*.01).toFixed(2);return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-display font-bold",children:"Business Importer"}),e.jsx("p",{className:"text-muted-foreground",children:"Import 4.0+ rated businesses from Google Maps"})]}),e.jsxs(Ae,{defaultValue:"single",className:"w-full",children:[e.jsxs(Ee,{className:"grid w-full max-w-md grid-cols-2",children:[e.jsxs(Ne,{value:"single",className:"flex items-center gap-2",children:[e.jsx(xe,{className:"h-4 w-4"}),"Single City"]}),e.jsxs(Ne,{value:"bulk",className:"flex items-center gap-2",children:[e.jsx(Me,{className:"h-4 w-4"}),"Bulk Import"]})]}),e.jsxs(Se,{value:"single",className:"mt-6",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[e.jsxs(M,{children:[e.jsxs(le,{children:[e.jsxs(ie,{className:"text-lg flex items-center gap-2",children:[e.jsx(Le,{className:"h-5 w-5"}),"City-Wide Import"]}),e.jsx(oe,{children:"Select a city and search terms to import"})]}),e.jsxs(Q,{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(R,{children:"City"}),e.jsxs(fe,{value:y,onValueChange:de,disabled:o,children:[e.jsx(je,{children:e.jsx(ve,{placeholder:"Select a site..."})}),e.jsx(ye,{children:t==null?void 0:t.map(r=>e.jsx(Y,{value:r.id,children:r.domain},r.id))})]}),s&&!s.latitude&&e.jsx("p",{className:"text-xs text-destructive",children:"â ï¸ City has no coordinates"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(R,{htmlFor:"searchLocation",children:"Search Location (Optional)"}),e.jsx("input",{id:"searchLocation",type:"text",value:u,onChange:r=>te(r.target.value),placeholder:"e.g., Santa Rosa Beach, FL (leave blank to use default)",disabled:o,className:"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm r
1ing-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Overrides the city/state in search queries for regional domains like visit30a.ai"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(R,{children:"Geo-targeting (Optional)"}),e.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:"Override the default coordinates with precise lat/long center point"}),e.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[e.jsxs("div",{children:[e.jsx("input",{id:"geoLatitude",type:"number",step:"any",value:m,onChange:r=>ce(r.target.value),placeholder:"e.g., 30.3214",disabled:o,className:"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Latitude"})]}),e.jsxs("div",{children:[e.jsx("input",{id:"geoLongitude",type:"number",step:"any",value:T,onChange:r=>ue(r.target.value),placeholder:"e.g., -86.1439",disabled:o,className:"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm r
1ing-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Longitude"})]}),e.jsxs("div",{children:[e.jsxs(fe,{value:re,onValueChange:me,disabled:o,children:[e.jsx(je,{children:e.jsx(ve,{placeholder:"Zoom"})}),e.jsxs(ye,{children:[e.jsx(Y,{value:"12",children:"12 (wide ~10mi)"}),e.jsx(Y,{value:"13",children:"13 (~5mi)"}),e.jsx(Y,{value:"14",children:"14 (~2mi)"}),e.jsx(Y,{value:"15",children:"15 (tight ~1mi)"})]})]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Zoom"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(ge,{id:"addressFilter",checked:D,onCheckedChange:r=>se(r===!0),disabled:o}),e.jsx(R,{htmlFor:"addressFilter",className:"cursor-pointer",children:"Only import if address contains:"})]}),D&&e.jsx("input",{id:"addressFilterText",type:"text",value:P,onChange:r=>pe(r.target.value),placeholder:"e.g., 30A",disabled:o,className:"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm r
1ing-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(R,{children:"Search Terms"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[h," of ",l," selected"]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(k,{type:"button",variant:"outline",size:"sm",onClick:S,disabled:o||h===l,className:"flex items-center gap-1",children:[e.jsx(Te,{className:"h-4 w-4"}),"Select All"]}),e.jsxs(k,{type:"button",variant:"outline",size:"sm",onClick:I,disabled:o||h===0,className:"flex items-center gap-1",children:[e.jsx(Pe,{className:"h-4 w-4"}),"Deselect All"]})]}),e.jsx("div",{className:"max-h-80 overflow-y-auto border rounded-lg p-3 space-y-2 bg-muted/30",children:E.map((r,n)=>e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(ge,{id:`term-${n}`,checked:r.enabled,onCheckedChange:()=>B(n),disabled:o}),e.jsx(R,{htmlFor:`term-${n}`,className:"text-sm font-normal cursor-pointer flex-1",children:r.term})]},r.term))})]}),e.jsxs("div",{className:"text-sm text-muted-foreground",children:["Estimated cost: $",Fe," (",h," searches)"]})]})]}),e.jsxs(M,{children:[e.jsxs(le,{children:[e.jsxs(ie,{className:"text-lg flex items-center gap-2",children:[e.jsx(xe,{className:"h-5 w-5"}),"Search Area"]}),e.jsx(oe,{children:s?`${s.name}${s.state?`, ${s.state}`:""}`:"Select a city to view the search area"})]}),e.jsx(Q,{children:e.jsx("div",{ref:W,className:"h-[400px] rounded-lg border",style:{background:"hsl(var(--muted))"}})})]})]}),e.jsx(M,{className:"mt-6",children:e.jsxs(Q,{className:"pt-6 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(k,{onClick:q,disabled:o||!y||h===0,size:"lg",children:o?"Importing...":`Import Businesses (${h} searches)`}),o&&e.jsxs(k,{onClick:z,variant:"destructive",disabled:Z,className:"flex items-center gap-2",children:[e.jsx($e,{className:"h-4 w-4"}),Z?"Stopping...":"Stop"]})]}),o&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(Ie,{value:U,className:"h-3"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:ae}),e.jsxs("div",{className:"flex flex-wrap gap-2 text-sm",children:[e.jsxs(A,{variant:"outline",children:["Found: ",w.totalFound]}),e.jsxs(A,{variant:"secondary",children:["Quality (4.0+): ",w.totalPassedQuality]}),e.jsxs(A,{variant:"default",children:["Imported: ",w.totalImported]}),e.jsxs(A,{variant:"outline",children:["Skipped: ",w.totalSkipped]})]})]}),g&&e.jsxs("div",{className:"p-4 bg-muted rounded-lg space-y-3",children:[e.jsx("p",{className:"font-semibold",children:"Import Complete!"}),e.jsxs("div",{className:"text-sm space-y-1 font-mono",children:[e.jsx("p",{children:"â
1âââââââââââââââââââââââ"}),e.jsxs("p",{children:["Searches performed: ",g.searchesPerformed]}),e.jsxs("p",{children:["Total found: ",g.totalFound]}),e.jsxs("p",{children:["Passed quality filter (4.0+ in ",s==null?void 0:s.name,"): ",g.totalPassedQuality]}),e.jsxs("p",{children:["New businesses imported: ",g.totalImported]}),e.jsxs("p",{children:["Duplicates skipped: ",g.totalSkipped]}),e.jsx("p",{children:"ââââââââââââââââââââââââ"}),e.jsxs("p",{children:["Estimated cost: $",(g.searchesPerformed*.01).toFixed(2)," (",g.searchesPerformed," searches)"]})]})]})]})})]}),e.jsx(Se,{value:"bulk",className:"mt-6",children:e.jsx(Qe,{})})]})]})}export{it 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.