vendor: 6,993 bytes, lines 1-31
1import{G as le,r as s,aS as qt,j as e,aR as oe,aQ as ve,aO as ce,bH as Yt,aN as Gt,ba as Qt,T as He,ax as pt,M as ie,m as ne,n as ae,o as re,K as Me,L as ut,O as Pe,t as V,S as Xt,D as Zt,X as mt,B as We,E as ye,bI as Jt}from"./index-DJGi9kSq.js";import{c as gt}from"./index-BdQq_4o_.js";import{c as es,u as ts}from"./index-CK27tsy9.js";import{L as B}from"./label-CFwQvD8h.js";import{g as ss}from"./nativeBridge-CGcMJpxz.js";import{u as ns,G as as,O as xt}from"./esm-Cr9d0-kM.js";import{C as yt}from"./camera-3OkfBeGR.js";import{U as Xe}from"./utensils-CVKlgSbZ.js";import{P as bt}from"./palette-BXsDHQC6.js";import{S as J}from"./shopping-bag-DG8YBACK.js";import{S as Ze}from"./sparkles-CpU9FJFO.js";import{u as rs,M as os}from"./useWeather-BcrnLq9M.js";import{R as is}from"./RestaurantDetailDialog-CBpEidaA.js";import{P as ls}from"./PlaceDetailDialog-D7sxnsq1.js";import{LandmarkDetailPage as cs}from"./LandmarkDetailPage-BqxgEWPp.js";import{A as ds}from"./arrow-left-CXrnAMCI.js";import{C as us}from"./chevron-down-UqThDaHh.js";import{S as ft}from"./star-DYHkTPu0.js";import{S as ms}from"./sliders-horizontal-BvDoYMLP.js";import{W as fs}from"./wifi-DFdWRoz3.js";import{C as hs}from"./car-CQmoWcNq.js";import{C as ps}from"./credit-card-BUwOPktO.js";import{C as qe}from"./coffee-Cd7zuqAF.js";import{U as gs}from"./users-ne_5I1JZ.js";import"./card-DF6l2gY8.js";import"./badge-h2NhMvjt.js";import"./PlaceLocationMap-CXzKCmzt.js";import"./myAccountService-C8qNArhK.js";import"./firebaseAuth-D21EO0Hc.js";import"./index.esm-BQEAOfp1.js";import"./landmarkUtils-fjXv1N19.js";import"./map-vrY30_6Z.js";import"./globe-DD3QCV97.js";import"./external-link-CfkJZ4lA.js";import"./navigation-BMhCu2F4.js";import"./clock-CkT6v99f.js";import"./wine-CRNwrUS4.js";import"./museumCityMatch-CqHbrQXn.js";import"./LandmarkMap-BIk-dzJK.js";import"./tag-rwLrxy0x.js";import"./landmark-DVIIG0WO.js";import"./ticket-1Qtj9KJ-.js";/** 2 * @license lucide-react v0.487.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const xs=[["path",{d:"M9 12h.01",key:"157uk2"}],["path",{d:"M15 12h.01",key:"1k8ypt"}],["path",{d:"M10 16c.5.3 1.2.5 2 .5s1.5-.2 2-.5",key:"1u7htd"}],["path",{d:"M19 6.3a9 9 0 0 1 1.8 3.9 2 2 0 0 1 0 3.6 9 9 0 0 1-17.6 0 2 2 0 0 1 0-3.6A9 9 0 0 1 12 3c2 0 3.5 1.1 3.5 2.5s-.9 2.5-2 2.5c-.8 0-1.5-.4-1.5-1",key:"5yv0yz"}]],ys=le("baby",xs);/** 7 * @license lucide-react v0.487.0 - ISC 8 * 9 * This source code is licensed under the ISC license. 10 * See the LICENSE file in the root directory of this source tree. 11 */const bs=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]],vs=le("crosshair",bs);/** 12 * @license lucide-react v0.487.0 - ISC 13 * 14 * This source code is licensed under the ISC license. 15 * See the LICENSE file in the root directory of this source tree. 16 */const ws=[["path",{d:"M11.25 16.25h1.5L12 17z",key:"w7jh35"}],["path",{d:"M16 14v.5",key:"1lajdz"}],["path",{d:"M4.42 11.247A13.152 13.152 0 0 0 4 14.556C4 18.728 7.582 21 12 21s8-2.272 8-6.444a11.702 11.702 0 0 0-.493-3.309",key:"u7s9ue"}],["path",{d:"M8 14v.5",key:"1nzgdb"}],["path",{d:"M8.5 8.5c-.384 1.05-1.083 2.028-2.344 2.5-1.931.722-3.576-.297-3.656-1-.113-.994 1.177-6.53 4-7 1.923-.321 3.651.845 3.651 2.235A7.497 7.497 0 0 1 14 5.277c0-1.39 1.844-2.598 3.767-2.277 2.823.47 4.113 6.006 4 7-.08.703-1.725 1.722-3.656 1-1.261-.472-1.855-1.45-2.239-2.5",key:"v8hric"}]],js=le("dog",ws);/** 17 * @license lucide-react v0.487.0 - ISC 18 * 19 * This source code is licensed under the ISC license. 20 * See the LICENSE file in the root directory of this source tree. 21 */const Ns=[["line",{x1:"2",x2:"5",y1:"12",y2:"12",key:"bvdh0s"}],["line",{x1:"19",x2:"22",y1:"12",y2:"12",key:"1tbv5k"}],["line",{x1:"12",x2:"12",y1:"2",y2:"5",key:"11lu5j"}],["line",{x1:"12",x2:"12",y1:"19",y2:"22",key:"x3vr5v"}],["circle",{cx:"12",cy:"12",r:"7",key:"fim9np"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],ks=le("locate-fixed",Ns);/** 22 * @license lucide-react v0.487.0 - ISC 23 * 24 * This source code is licensed under the ISC license. 25 * See the LICENSE file in the root directory of this source tree. 26 */const Ss=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],Cs=le("package",Ss);/** 27 * @license lucide-react v0.487.0 - ISC 28 * 29 * This source code is licensed under the ISC license. 30 * See the LICENSE file in the root directory of this source tree. 31 */const Ms=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],Ps=le("sun",Ms);var vt=["PageUp","PageDown"],wt=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],jt={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},de="Slider",[Ye,Ds,Is]=es(de),[Nt]=Gt(de,[Is]),[Rs,Ie]=Nt(de),kt=s.forwardRef((n,r)=>{const{name:i,min:o=0,max:c=100,step:p=1,orientation:f="horizontal",disabled:u=!1,minStepsBetweenThumbs:N=0,defaultValue:P=[o],value:b,onValueChange:d=()=>{},onValueCommit:y=()=>{},inverted:w=!1,form:D,...S}=n,k=s.useRef(new Set),j=s.useRef(0),g=f==="horizontal"?Es:$s,[x=[],M]=qt({prop:b,defaultProp:P,onChange:E=>{[...k.current][j.current]?.focus(),d(E)}}),C=s.useRef(x);function m(E){const _=Ls(x,E);R(E,_)}function h(E){R(E,j.current)}function z(){const E=C.current[j.current];x[j.current]!==E&&y(x)}function R(E,_,{commit:Q}={commit:!1}){const we=Bs(p),A=Us(Math.round((E-o)/p)*p+o,we),O=gt(A,[o,c]);M((U=[])=>{const K=zs(U,O,_);if(Fs(K,N*p)){j.current=K.indexOf(O);const X=String(K)!==String(U);return X&&Q&&y(K),X?K:U}else return U})}return e.jsx(Rs,{scope:n.__scopeSlider,name:i,disabled:u,min:o,max:c,valueIndexToChangeRef:j,thumbs:k.current,values:x,orientation:f,form:D,children:e.jsx(Ye.Provider,{scope:n.__scopeSlider,children:e.jsx(Ye.Slot,{scope:n.__scopeSlider,children:e.jsx(g,{"aria-disabled":u,"data-disabled":u?"":void 0,...S,ref:r,onPointerDown:oe(S.onPointerDown,()=>{u||(C.current=x)}),min:o,max:c,inverted:w,onSlideStart:u?void 0:m,onSlideMove:u?void 0:h,onSlideEnd:u?void 0:z,onHomeKeyDown:()=>!u&&R(o,0,{commit:!0}),onEndKeyDown:()=>!u&&R(c,x.length-1,{commit:!0}),onStepKeyDown:({event:E,direction:_})=>
31{if(!u){const A=vt.includes(E.key)||E.shiftKey&&wt.includes(E.key)?10:1,O=j.current,U=x[O],K=p*A*_;R(U+K,O,{commit:!0})}}})})})})});kt.displayName=de;var[St,Ct]=Nt(de,{startEdge:"left",endEdge:"right",size:"width",direction:1}),Es=s.forwardRef((n,r)=>{const{min:i,max:o,dir:c,inverted:p,onSlideStart:f,onSlideMove:u,onSlideEnd:N,onStepKeyDown:P,...b}=n,[d,y]=s.useState(null),w=ce(r,g=>y(g)),D=s.useRef(void 0),S=ts(c),k=S==="ltr",j=k&&!p||!k&&p;function v(g){const x=D.current||d.getBoundingClientRect(),M=[0,x.width],m=Je(M,j?[i,o]:[o,i]);return D.current=x,m(g-x.left)}return e.jsx(St,{scope:n.__scopeSlider,startEdge:j?"left":"right",endEdge:j?"right":"left",direction:j?1:-1,size:"width",children:e.jsx(Mt,{dir:S,"data-orientation":"horizontal",...b,ref:w,style:{...b.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:g=>{const x=v(g.clientX);f?.(x)},onSlideMove:g=>{const x=v(g.clientX);u?.(x)},onSlideEnd:()=>{D.current=void 0,N?.()},onStepKeyDown:g=>{const M=jt[j?"from-left":"from-right"].includes(g.key);P?.({event:g,direction:M?-1:1})}})})}),$s=s.forwardRef((n,r)=>{const{min:i,max:o,inverted:c,onSlideStart:p,onSlideMove:f,onSlideEnd:u,onStepKeyDown:N,...P}=n,b=s.useRef(null),d=ce(r,b),y=s.useRef(void 0),w=!c;function D(S){const k=y.current||b.current.getBoundingClientRect(),j=[0,k.height],g=Je(j,w?[o,i]:[i,o]);return y.current=k,g(S-k.top)}return e.jsx(St,{scope:n.__scopeSlider,startEdge:w?"bottom":"top",endEdge:w?"top":"bottom",size:"height",direction:w?1:-1,children:e.jsx(Mt,{"data-orientation":"vertical",...P,ref:d,style:{...P.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:S=>{const k=D(S.clientY);p?.(k)},onSlideMove:S=>{const k=D(S.clientY);f?.(k)},onSlideEnd:()=>{y.current=void 0,u?.()},onStepKeyDown:S=>{const j=jt[w?"from-bottom":"from-top"].includes(S.key);N?.({event:S,direction:j?-1:1})}})})}),Mt=s.forwardRef((n,r)=>{const{__scopeSlider:i,onSlideStart:o,onSlideMove:c,onSlideEnd:p,onHomeKeyDown:f,onEndKeyDown:u,onStepKeyDown:N,...P}=n,b=Ie(de,i);return e.jsx(ve.span,{...P,ref:r,onKeyDown:oe(n.onKeyDown,d=>{d.key==="Home"?(f(d),d.preventDefault()):d.key==="End"?(u(d),d.preventDefault()):vt.concat(wt).includes(d.key)&&(N(d),d.preventDefault())}),onPointerDown:oe(n.onPointerDown,d=>{const y=d.target;y.setPointerCapture(d.pointerId),d.preventDefault(),b.thumbs.has(y)?y.focus():o(d)}),onPointerMove:oe(n.onPointerMove,d=>{d.target.hasPointerCapture(d.pointerId)&&c(d)}),onPointerUp:oe(n.onPointerUp,d=>{const y=d.target;y.hasPointerCapture(d.pointerId)&&(y.releasePointerCapture(d.pointerId),p(d))})})}),Pt="SliderTrack",Dt=s.forwardRef((n,r)=>{const{__scopeSlider:i,...o}=n,c=Ie(Pt,i);return e.jsx(ve.span,{"data-disabled":c.disabled?"":void 0,"data-orientation":c.orientation,...o,ref:r})});Dt.displayName=Pt;var Ge="SliderRange",It=s.forwardRef((n,r)=>{const{__scopeSlider:i,...o}=n,c=Ie(Ge,i),p=Ct(Ge,i),f=s.useRef(null),u=ce(r,f),N=c.values.length,P=c.values.map(y=>$t(y,c.min,c.max)),b=N>1?Math.min(...P):0,d=100-Math.max(...P);return e.jsx(ve.span,{"data-orientation":c.orientation,"data-disabled":c.disabled?"":void 0,...o,ref:u,style:{...n.style,[p.startEdge]:b+"%",[p.endEdge]:d+"%"}})});It.displayName=Ge;var Qe="SliderThumb",Rt=s.forwardRef((n,r)=>{const i=Ds(n.__scopeSlider),[o,c]=s.useState(null),p=ce(r,u=>c(u)),f=s.useMemo(()=>o?i().findIndex(u=>u.ref.current===o):-1,[i,o]);return e.jsx(_s,{...n,ref:p,index:f})}),_s=s.forwardRef((n,r)=>{const{__scopeSlider:i,index:o,name:c,...p}=n,f=Ie(Qe,i),u=Ct(Qe,i),[N,P]=s.useState(null),b=ce(r,v=>P(v)),d=N?f.form||!!N.closest("form"):!0,y=Yt(N),w=f.values[o],D=w===void 0?0:$t(w,f.min,f.max),S=A
31s(o,f.values.length),k=y?.[u.size],j=k?Os(k,D,u.direction):0;return s.useEffect(()=>{if(N)return f.thumbs.add(N),()=>{f.thumbs.delete(N)}},[N,f.thumbs]),e.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[u.startEdge]:`calc(${D}% + ${j}px)`},children:[e.jsx(Ye.ItemSlot,{scope:n.__scopeSlider,children:e.jsx(ve.span,{role:"slider","aria-label":n["aria-label"]||S,"aria-valuemin":f.min,"aria-valuenow":w,"aria-valuemax":f.max,"aria-orientation":f.orientation,"data-orientation":f.orientation,"data-disabled":f.disabled?"":void 0,tabIndex:f.disabled?void 0:0,...p,ref:b,style:w===void 0?{display:"none"}:n.style,onFocus:oe(n.onFocus,()=>{f.valueIndexToChangeRef.current=o})})}),d&&e.jsx(Et,{name:c??(f.name?f.name+(f.values.length>1?"[]":""):void 0),form:f.form,value:w},o)]})});Rt.displayName=Qe;var Ts="RadioBubbleInput",Et=s.forwardRef(({__scopeSlider:n,value:r,...i},o)=>{const c=s.useRef(null),p=ce(c,o),f=Qt(r);return s.useEffect(()=>{const u=c.current;if(!u)return;const N=window.HTMLInputElement.prototype,b=Object.getOwnPropertyDescriptor(N,"value").set;if(f!==r&&b){const d=new Event("input",{bubbles:!0});b.call(u,r),u.dispatchEvent(d)}},[f,r]),e.jsx(ve.input,{style:{display:"none"},...i,ref:p,defaultValue:r})});Et.displayName=Ts;function zs(n=[],r,i){const o=[...n];return o[i]=r,o.sort((c,p)=>c-p)}function $t(n,r,i){const p=100/(i-r)*(n-r);return gt(p,[0,100])}function As(n,r){return r>2?`Value ${n+1} of ${r}`:r===2?["Minimum","Maximum"][n]:void 0}function Ls(n,r){if(n.length===1)return 0;const i=n.map(c=>Math.abs(c-r)),o=Math.min(...i);return i.indexOf(o)}function Os(n,r,i){const o=n/2,p=Je([0,50],[0,o]);return(o-p(r)*i)*i}function Ks(n){return n.slice(0,-1).map((r,i)=>n[i+1]-r)}function Fs(n,r){if(r>0){const i=Ks(n);return Math.min(...i)>=r}return!0}function Je(n,r){return i=>{if(n[0]===n[1]||r[0]===r[1])return r[0];const o=(r[1]-r[0])/(n[1]-n[0]);return r[0]+o*(i-n[0])}}function Bs(n){return(String(n).split(".")[1]||"").length}function Us(n,r){const i=Math.pow(10,r);return Math.round(n*i)/i}var Vs=kt,Hs=Dt,Ws=It,qs=Rt;function Ys({className:n,defaultValue:r,value:i,min:o=0,max:c=100,...p}){const f=s.useMemo(()=>Array.isArray(i)?i:Array.isArray(r)?r:[o,c],[i,r,o,c]);return e.jsxs(Vs,{"data-slot":"slider",defaultValue:r,value:i,min:o,max:c,className:He("relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",n),...p,children:[e.jsx(Hs,{"data-slot":"slider-track",className:He("bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-4 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5"),children:e.jsx(Ws,{"data-slot":"slider-range",className:He("bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full")})}),Array.from({length:f.length},(u,N)=>e.jsx(qs,{"data-slot":"slider-thumb",className:"border-primary bg-background ring-ring/50 block size-4 shrink-0 rounded-full border shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"},N))]})}const Gs={width:"100%",height:"100%"},Qs={lat:48.8584,lng:2.2945},Xs="AIzaSyBUF3DqYiYLr0RxO1uu3xzdvh4wlcpwU84",Zs=["places"],Js=[{id:"all",label:"ì ì²´",icon:ie,color:"gray"},{id:"landmark",label:"ëª
ì",icon:yt,color:"red"},{id:"restaurant",label:"ììì ",icon:Xe,color:"amber"},{id:"museum",label:"ë°ë¬¼ê´",icon:bt,color:"blue"},{id:"shopping",label:"ì¼í",icon:J,color:"pink"},{id:"service",label:"ìë¹ì¤",icon:Ze,color:"teal"}],en=n=>{switch(n){case"red":return"#ef4444";case"amber":return"#f59e0b";case"blue":return"#3b82f6";case"purple":return"#a855f7";case"pink":return"#ec4899";case"teal":return"#14b8a6";default:return"#6b7280"}},_t=pt.memo(({place:n,isSelected:r,onSelect:i})=>{const o=Js.find(u=>u.id===n.category),c=en(o?.color||"gray"),p=o?.icon||ie,f=s.useCallback(u=>{u.preventDefault(),u.stopPropagation(),i(n)},[i,n]);return e.jsx(xt,{position:{lat:n.lat,lng:n.lng},mapPaneName:"overlayMouseTarget",children:e.jsx("div",{className:"group absolute -translate-x-1/2 -translate-y-1/2 flex items-center justify-center",style:{width:"70px",height:"70px",zIndex:r?1e3:10,cursor:"pointer",pointerEvents:"auto",touchAction:"none"},onPointerDown:u=>u.stopPropagation(),onPointerUp:f,onMouseDown:f,onClick:f,children:e.jsx("div",{className:"relative transition-transform duration-200 group-hover:scale-110 will-change-transform",children:e.jsx("div",{className:`flex items-center justify-center rounded-full border-2 border-white shadow-lg transition-all ${r?"w-12 h-12":"w-10 h-10"}`,style:{backgroundColor:c},children:e.jsx(p,{className:`text-white ${r?"w-6 h-6":"w-5 h-5"}`})})})})})});_t.displayName="MapMarker";const Tt=pt.memo(({onPlaceSelect:n,onBoundsChanged:r,onCenterChanged:i,selectedCategory:o="all",places:c=[],center:p,selectedPlaceId:f,renderInfoCard:u})=>{const{isLoaded:N,loadError:P}=ns({id:"google-map-script",googleMapsApiKey:Xs,libraries:Zs}),[b,d]=s.useState(null),y=s.useRef(p||null),w=s.useRef(!1);s.useEffect(()=>{if(b&&p){const v=Math.abs((y.current?.lat||0)-p.lat),g=Math.abs((y.current?.lng||0)-p.lng);(v>1e-4||g>1e-4)&&(w.current||b.panTo(p),y.current=p)}w.current=!1},[b,p]);const D=s.useCallback(function(g){d(g)},[]),S=s.useCallback(function(){d(null)},[]),k=s.useCallback(()=>
31{if(!b)return;const v=b.getBounds(),g=b.getCenter();if(v&&r&&r(v),g&&i){const x={lat:g.lat(),lng:g.lng()},M=Math.abs((y.current?.lat||0)-x.lat),C=Math.abs((y.current?.lng||0)-x.lng);(M>1e-4||C>1e-4)&&(y.current=x,w.current=!0,i(x))}},[b,r,i]),j=s.useMemo(()=>o==="all"?c:c.filter(v=>v.category===o),[c,o]);return P?e.jsx("div",{className:"flex items-center justify-center p-4 bg-red-50 text-red-500 rounded-lg",children:"ì§ë ë¡ë ì¤ ì¤ë¥ê° ë°ìíìµëë¤."}):N?e.jsxs("div",{className:"w-full h-full relative",style:{touchAction:"none"},children:[e.jsxs(as,{mapContainerStyle:Gs,center:p||Qs,zoom:15,onLoad:D,onUnmount:S,onIdle:k,options:{zoomControl:!1,streetViewControl:!1,mapTypeControl:!1,fullscreenControl:!1,gestureHandling:"greedy",clickableIcons:!1,keyboardShortcuts:!1,styles:[{featureType:"poi",elementType:"all",stylers:[{visibility:"off"}]}]},onClick:v=>{n&&n({id:""})},children:[j.map(v=>e.jsx(_t,{place:v,isSelected:f===v.id,onSelect:g=>{n&&n(g)}},v.id)),u&&f&&(()=>{const v=j.find(g=>g.id===f);return v?e.jsx(xt,{position:{lat:v.lat,lng:v.lng},mapPaneName:"floatPane",children:e.jsx("div",{style:{transform:"translate(-50%, -110%)",position:"relative",zIndex:2e3},onMouseDown:g=>g.stopPropagation(),onPointerDown:g=>g.stopPropagation(),onClick:g=>g.stopPropagation(),children:u(v)})}):null})()]}),e.jsx("div",{className:"pointer-events-none absolute left-1/2 top-1/2 z-20 -translate-x-1/2 -translate-y-full",children:e.jsx("div",{className:"relative flex flex-col items-center",children:e.jsx("div",{className:"flex h-6 w-6 items-center justify-center rounded-full border border-white shadow-lg",style:{backgroundColor:"#f97316"},children:e.jsx(ks,{className:"h-3 w-3 text-white"})})})})]}):e.jsx("div",{className:"flex items-center justify-center p-4",children:"ì§ë를 ë¶ë¬ì¤ë ì¤..."})});Tt.displayName="GoogleMapInteractive";const ht=[{name:"restaurants",category:"restaurant"},{name:"museums",category:"museum"},{name:"services",category:"service"},{name:"shopping",category:"shopping"},{name:"landmarks",category:"landmark"}];function tn(){const[n,r]=s.useState([]),[i,o]=s.useState(!1),[c,p]=s.useState(null),[f,u]=s.useState(null),N=s.useCallback(async(b,d)=>{try{o(!0),p(null);const y=await ne(ae(re,"cities"));let w=null,D=1/0;if(y.forEach(x=>{const M=x.data(),C=be(b.lat,b.lng,M.lat,M.lng);C<D&&C<5e4&&(D=C,w={id:x.id,...M})}),!w){console.warn("No nearby city found within 50km"),r([]),o(!1);return}u(w);const S=w.cityCode;console.log(`Nearest city found: ${w.nameKr} (${S})`);const k=ht.map(async x=>{try{const M=Me(ae(re,x.name),ut("cityId","==",S),Pe(100));let C;try{C=await ne(M)}catch{console.warn(`Firestore Index required for ${x.name}. Falling back to client-side filtering.`);const h=Me(ae(re,x.name),Pe(300));C=await ne(h)}return C.docs.map(m=>{const h=m.data();if(h.status!=="active")return null;const z=Number(h.gpsLatitude||h.location?.gpsLat||h.latitude||h.lat||h.location?.coordinates?.lat||0),R=Number(h.gpsLongitude||h.location?.gpsLng||h.longitude||h.lng||h.location?.coordinates?.lng||0);return C.metadata.fromCache===!1&&h.cityId!==S&&h.cityKr!==w.nameKr&&be(w.lat,w.lng,z,R)>3e4?null:{...h,id:m.id,placeId:h.placeId||h.google_place_id||m.id,lat:z,lng:R,category:x.category,subCategory:typeof h.category=="string"?h.category:void 0,name:h.nameKr||h.name||"ì´ë¦ ìì",image:h.thumbnailUrl||h.media?.thumbnailUrl||h.thumbnailresizedUrl||h.media?.thumbnailresizedUrl||h.thumbnail_url||h.images&&h.images[0]||"https://images.unsplash.com/photo-1502602898657-3e91760cbb34?w=400",isOpen:!0,distance:be(b.lat,b.lng,z,R),address:h.address||h.location?.address,phone:h.phoneNumber||h.location?.phoneNumber||h.phone,website:h.websiteUrl||h.location?.websiteUrl||h.website,description:h.coreInfo||h.summary||h.description||h.guide?.overview}}).filter(m=>m!==null)}catch(M){return console.warn(`Collection ${x.name} fetch failed:`,M),[]}});let v=(await Promise.all(k)).flat();const g=new Set;v=v.filter(x=>g.has(x.placeId)?!1:(g.add(x.placeId),!0)),d&&(v=v.filter(x=>{const M=new google.maps.LatLng(x.lat,x.lng);return d.contains(M)})),v.sort((x,M)=>(x.distance||0)-(M.distance||0)),r(v),console.log(`Total ${v.length} places loaded for city: ${w.nameKr}`)}catch(y){console.error("Failed to fetch nearby places:",y),p(y instanceof Error?y:new Error("Unknown error"))}finally{o(!1)}},[]),P=s.useCallback(async b=>{try{o(!0),p(null);const d=await ne(ae(re,"cities"));let y=null;
31if(d.forEach(g=>{const x=g.data();x.nameKr===b&&(y={id:g.id,...x})}),!y)return console.warn(`City not found: ${b}`),r([]),o(!1),null;u(y);const w=y.cityCode,D={lat:y.lat,lng:y.lng},S=ht.map(async g=>{try{const x=Me(ae(re,g.name),ut("cityId","==",w),Pe(100));let M;try{M=await ne(x)}catch{console.warn(`Firestore Index required for ${g.name}. Falling back.`);const m=Me(ae(re,g.name),Pe(300));M=await ne(m)}return M.docs.map(C=>{const m=C.data();if(m.status!=="active")return null;const h=Number(m.gpsLatitude||m.location?.gpsLat||m.latitude||m.lat||m.location?.coordinates?.lat||0),z=Number(m.gpsLongitude||m.location?.gpsLng||m.longitude||m.lng||m.location?.coordinates?.lng||0);return m.cityId!==w&&m.cityKr!==b&&be(y.lat,y.lng,h,z)>3e4?null:{...m,id:C.id,placeId:m.placeId||m.google_place_id||C.id,lat:h,lng:z,category:g.category,subCategory:typeof m.category=="string"?m.category:void 0,name:m.nameKr||m.name||"ì´ë¦ ìì",image:m.thumbnailUrl||m.media?.thumbnailUrl||m.thumbnailresizedUrl||m.media?.thumbnailresizedUrl||m.thumbnail_url||m.images&&m.images[0]||"https://images.unsplash.com/photo-1502602898657-3e91760cbb34?w=400",isOpen:!0,distance:be(D.lat,D.lng,h,z),address:m.address||m.location?.address,phone:m.phoneNumber||m.location?.phoneNumber||m.phone,website:m.websiteUrl||m.location?.websiteUrl||m.website,description:m.coreInfo||m.summary||m.description||m.guide?.overview}}).filter(C=>C!==null)}catch(x){return console.warn(`Collection ${g.name} fetch failed:`,x),[]}});let j=(await Promise.all(S)).flat();const v=new Set;return j=j.filter(g=>v.has(g.placeId)?!1:(v.add(g.placeId),!0)),j.sort((g,x)=>(g.distance||0)-(x.distance||0)),r(j),console.log(`Total ${j.length} places loaded for city: ${b}`),D}catch(d){return console.error("Failed to fetch places by city:",d),p(d instanceof Error?d:new Error("Unknown error")),null}finally{o(!1)}},[]);return{places:n,loading:i,error:c,fetchNearby:N,fetchByCity:P,currentCity:f}}function be(n,r,i,o){if(!n||!r||!i||!o)return 1/0;const c=6371e3,p=(i-n)*Math.PI/180,f=(o-r)*Math.PI/180,u=Math.sin(p/2)*Math.sin(p/2)+Math.cos(n*Math.PI/180)*Math.cos(i*Math.PI/180)*Math.sin(f/2)*Math.sin(f/2),N=2*Math.atan2(Math.sqrt(u),Math.sqrt(1-u));return Math.round(c*N)}const De=[{id:"all",label:"ì ì²´",icon:ie,color:"gray"},{id:"landmark",label:"ëª
ì",icon:yt,color:"red"},{id:"restaurant",label:"ììì ",icon:Xe,color:"amber"},{id:"museum",label:"ë°ë¬¼ê´",icon:bt,color:"blue"},{id:"shopping",label:"ì¼í",icon:J,color:"pink"},{id:"service",label:"ìë¹ì¤",icon:Ze,color:"teal"}],sn=["2025-01-01","2025-04-21","2025-05-01","2025-05-08","2025-05-29","2025-06-09","2025-07-14","2025-08-15","2025-11-01","2025-11-11","2025-12-25"],nn=[{id:"1",name:"ìí í",category:"landmark",rating:4.8,distance:1200,image:"https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=400",operatingDays:["ì","í","ì","목","ê¸","í ","ì¼"],closedOnHolidays:!1,isOpen:!0},{id:"2",name:"루ë¸ë¥´ ë°ë¬¼ê´",category:"museum",rating:4.7,distance:1800,image:"https://images.unsplash.com/photo-1464983953574-0892a716854b?w=400",operatingDays:["ì","ì","목","ê¸","í ","ì¼"],closedOnHolidays:!0,isOpen:!1}];function Yn({onPageChange:n,previousPage:r,initialCity:i,overlayHistory:o,cityLocked:c}){const[p,f]=s.useState(i||"ë´ ì£¼ë³"),[u,N]=s.useState("all"),[P,b]=s.useState(i||""),[d,y]=s.useState("map"),[w,D]=s.useState("distance"),[S,k]=s.useState(null),[j,v]=s.useState(null),[g,x]=s.useState(!1),[M,C]=s.useTransition(),m=t=>st&&t.closedOnHolidays?!1:t.operatingDays.includes($.dayOfWeek),{places:h,loading:z,fetchNearby:R,fetchByCity:E,currentCity:_}=tn(),[Q,we]=s.useState(null),[A,O]=s.useState({lat:48.8584,lng:2.2945}),[U,K]=s.useState(!1),[X,zt]=s.useState(()=>new Date),{weatherData:T}=rs(A?.lat,A?.lng),Re=s.useRef(null),Ee=s.useRef({lat:48.8584,lng:2.2945}),[$e,At]=s.useState([]),[et,Z]=s.useState(!1),[je,_e]=s.useState(null),[tt,H]=s.useState(-1),W=je||_,ue=W&&(W.nameKr||W.name)||p,Te=s.useMemo(()=>[W?.ianaTimezone,W?.ianaTz,W?.timeZone,W?.timezone].find(a=>{if(typeof a!="string"||!a.includes("/"))return!1;try{return new Intl.DateTimeFormat("ko-KR",{timeZone:a}).format(new Date),!0}catch{return!1}}),[W]),$=s.useMemo(()=>{const a=new Intl.DateTimeFormat("ko-KR",{timeZone:Te,year:"numeric",month:"2-digit",day:"2-digit",weekday:"short",hour:"2-digit",minute:"2-digit",hourCycle:"h23"}).formatToParts(X),l=I=>a.find(L=>L.type===I)?.value??"";return{year:l("year"),month:l("month"),day:l("day"),dayOfWeek:l("weekday").replace("ìì¼",""),hour:Number(l("hour")||X.getHours()),minute:l("minute")||Str
31ing(X.getMinutes()).padStart(2,"0")}},[X,Te]),Lt=`${$.year}-${$.month}-${$.day}`,st=sn.includes(Lt),ee=$.hour>=3&&$.hour<12?"ì¤ì ":$.hour>=12&&$.hour<19?"ì¤í":"ì¼ê°",Ot=`${ee} ${String($.hour%12||12).padStart(2,"0")}:${$.minute}`;nn.map(t=>({...t,isOpen:m(t)}));const[ze,me]=s.useState(!1),[fe,nt]=s.useState([2e3]),[te,Ae]=s.useState([]),[Ne,Le]=s.useState(0),[at,Oe]=s.useState(!0),[Ke,Fe]=s.useState([]),[ke,Se]=s.useState(!1),[q,he]=s.useState(null),[se,Kt]=s.useState(()=>{if(typeof window<"u"){const t=localStorage.getItem("nearbyPage_likedPlaces");return t?JSON.parse(t):[]}return[]});s.useEffect(()=>{const t=setInterval(()=>{zt(new Date)},6e4);return()=>clearInterval(t)},[]),s.useEffect(()=>{if(!ze)return;const t=a=>{a.key==="Escape"&&me(!1)};return document.addEventListener("keydown",t),document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",t),document.body.style.overflow=""}},[ze]),s.useEffect(()=>{(async()=>{try{const a=await Jt();At(a)}catch(a){console.error("Failed to fetch map city options:",a)}})()},[]),s.useEffect(()=>{if(!je||!_)return;(_.nameKr||_.name||"")===je.name&&_e(null)},[_,je]),s.useEffect(()=>{U||(i?(E(i).then(t=>{t&&(O(t),f(i))}),K(!0)):j?(O(j),R(j,Q),K(!0)):A&&(R(A,Q),K(!0)))},[j,R,E,Q,U,A,i]);const Be=t=>{t==="list"?(A&&R(A,null),y("list"),o?.open(()=>y("map"))):o?o.close():y("map")},rt=s.useRef(null);s.useEffect(()=>{ke&&o?.open(()=>{Se(!1),he(null)})},[ke]);const Ue=()=>{o?o.close():(Se(!1),he(null))},ot=T?.condition?.includes("ë¹")||T?.condition?.includes("ìë기")||T?.condition?.includes("ì²ë¥"),pe=$.hour,it=$.dayOfWeek,lt=pe>=3&&pe<12,ge=s.useMemo(()=>{const a={ì:"monday",í:"tuesday",ì:"wednesday",목:"thursday",ê¸:"friday",í :"saturday",ì¼:"sunday"}[it]||"";return h.filter(l=>u==="all"||l.category===u).filter(l=>{if(d==="list"||l.category!=="landmark")return!0;const I=l.grade;return I==="A"||I==="B"}).filter(l=>d==="list"?!0:(l.distance||0)<=fe[0]).filter(l=>te.length===0||l.priceRange&&te.includes(l.priceRange)).filter(l=>Ne===0||l.rating&&l.rating>=Ne).filter(l=>!ot||l.category!=="landmark"?!0:l.environment!=="outdoor").filter(l=>lt?l.subCategory!=="bar":!0).filter(l=>{const L=l.operatingHoursMap;if(!L||!a)return!0;const G=L[a];if(!G)return!0;if(G.isClosed)return!1;const xe=parseInt(G.openTime?.split(":")[0]||"0",10),dt=parseInt(G.closeTime?.split(":")[0]||"24",10);return dt<=xe?!0:pe>=xe&&pe<dt}).sort((l,I)=>w==="distance"?(l.distance||0)-(I.distance||0):(I.rating||0)-(l.rating||0))},[h,u,d,fe,te,Ne,w,ot,pe,it,lt]),F=s.useMemo(()=>{const t=P.trim().toLowerCase();return t?$e.filter(a=>a.name.toLowerCase().includes(t)||a.country.toLowerCase().includes(t)).slice(0,8):$e.slice(0,8)},[$e,P]);s.useEffect(()=>{H(-1)},[P,et]);const Ve=t=>t<1e3?`${t}m`:`${(t/1e3).toFixed(1)}km`,Ft=t=>{const a=Math.round(t/100);if(a<60)return`ëë³´ ${a}ë¶`;const l=Math.floor(a/60),I=a%60;return I===0?`ëë³´ ${l}ìê°`:`ëë³´ ${l}ìê° ${I}ë¶`};s.useCallback(t=>{t.target===t.currentTarget&&C(()=>{k(null)})},[]);const Bt=()=>{V.info("ìì¹ ë³ê²½ 기ë¥ì ì¤ë¹ ì¤ì
ëë¤")},ct=s.useCallback(t=>{const a={lat:t.lat,lng:t.lng};b(t.name),f(t.name),_e(t),Z(!1),H(-1),k(null),Ee.current=a,Re.current=null,O(a),R(a,null),V.success(`${t.name} ì§ëë¡ ì´ëíìµëë¤`)},[R]),Ce=s.useCallback(async()=>{try{const t=await ss({enableHighAccuracy:!1,timeout:1e4}),a={lat:t.coords.latitude,lng:t.coords.longitude};v(a),O({...a}),_e(null),Ee.current=a,V.success("íì¬ ìì¹ë¡ ì´ëí©ëë¤"),R(a,Re.current)}catch(t){console.error("Geolocation error:",t?.code,t?.message),t?.code===1?V.error("ìì¹ ê¶íì´ ê±°ë¶ëììµëë¤. ì¤ì ìì ìì¹ ê¶íì íì©í´ì£¼ì¸ì."):t?.code===2||t?.message==="geolocation_unavailable"?V.error("ì´ ê¸°ê¸°ìì ìì¹ ìë¹ì¤ê° ì§ìëì§ ììµëë¤."):V.error("íì¬ ìì¹ ì 보를 ê°ì ¸ì¬ ì ììµëë¤.")}finally{x(!0)}},[R]);s.useEffect(()=>{i||Ce()},[Ce,i]);const Ut=t=>{const a=se.includes(t)?se.filter(l=>l!==t):[...se,t];Kt(a),localStorage.setItem("nearbyPage_likedPlaces",JSON.stringify(a)),V.success(se.includes(t)?"ì° ì·¨ìëììµëë¤":"ì° ëª©ë¡ì ì¶ê°ëììµëë¤")},Vt=s.useCallback(t=>{C(()=>{k(t.id);const a=h.find(l=>l.id===t.id);a&&he(a)})},[h]),Y=s.useRef(null),Ht=s.useCallback(t=>{Re.current=t,Y.current&&clearTimeout(Y.current),Y.current=setTimeout(()=>{we(t)},200)},[]),Wt=s.useCallback(t=>{Ee.current=t,Y.current&&clearTimeout(Y.current),Y.current=setTimeout(()=>{O(t)},200)},[]);return s.useEffect(()=>()=>{Y.current&&clearTimeout(Y.current)},[]),(()=>{const t=[],a=$.dayOfWeek==="í "||$.dayOfWeek==="ì¼";return ee==="ì¤ì "?a?t.push({id:"morning-weekend",title:"ì§ê¸ ì¬ì ë¡ê² ì¦ê¸¸ ì ìë ë¸ë°ì¹ & ë² ì´ì»¤ë¦¬",icon:qe,color:"#f59e0b",filter:{category:"cafe",distance:1e3}}):t.push({id:"morning-weekday",title:"í기찬 ì침ì ììíë ë² ì´ì»¤ë¦¬ ì¹´í",icon:qe,color:"#3b82f6",filter:{category:"cafe",distance:500}}):ee==="ì¤í"?t.push({id:"afternoon-cafe",title:"íì¬ ìì¹ìì 1km ì´ë´ ì¸ê¸° ì¹´í",icon:qe,color:"#3b82f6",filter:{category:"cafe",distance:1e3,minRating:4.5}}):t.push({id:"night-rooftop",title:"ì¼ê²½ì ì¦ê¸¸ ì ìë 루íí ë°",icon:Ze,color:"#8b5cf6",filter:{category:"restaurant",minRating:4.5}}),ee==="ì¤ì "?a?t.push({id:"morning-shopping",title:"ì¬ì ë¡ì´ 주ë§ì 방문í기 ì¢ì í«í í리ë§ì¼ & í¸ì§ì",icon:J,color:"#ec4899",filter:{category:"shopping",distance:2e3}}
31):t.push({id:"morning-shopping-weekday",title:"ì침 ì¼ì° ì¬ë ë¹í°ì§ìµ & í¸ì§ì",icon:J,color:"#ec4899",filter:{category:"shopping",distance:1500}}):ee==="ì¤í"?t.push({id:"afternoon-shopping",title:"íì¬ ìì¹ìì 1km ì´ë´ í¸ë ëí ë¡ëì & ë³µí© ì¼í몰",icon:J,color:"#ec4899",filter:{category:"shopping",distance:1e3}}):ee==="ì¼ê°"&&t.push({id:"night-shopping",title:"ë°¤ì ëë§ì ì¦ê¸°ë í기 ëì¹ë ì¼ìì¥ & ì¬ì¼ ì¼í ì¤í",icon:J,color:"#ec4899",filter:{category:"shopping",distance:1500}}),t.push({id:"outdoor-sunny",title:"ì¤ëì ë ì¨(âï¸)ì ì´ì¸ë¦¬ë ì¼ì¸ ëª ì",icon:Ps,color:"#f59e0b",filter:{category:"tourist",distance:2e3}}),t.push({id:"hidden-gems",title:"ëë³´ 10ë¶ ê±°ë¦¬ì ì¨ê²¨ì§ ì§ì ë§ì§",icon:Xe,color:"#ef4444",filter:{category:"restaurant",distance:1e3,minRating:4.3}}),t.push({id:"family-friendly",title:"ê°ì¡± ì¬íê°ì ìí ì£¼ë³ ê³µì ë° ì²´í ê³µê°",icon:gs,color:"#14b8a6",filter:{category:"tourist",distance:1500}}),t})(),e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"fixed inset-0 bg-white flex flex-col overflow-hidden lg:pb-0",children:[e.jsxs("div",{className:"z-30 bg-white border-b border-gray-200 shadow-sm flex-shrink-0",children:[e.jsxs("div",{className:`flex items-center ${c?"relative justify-start":"justify-between"} px-4 py-3 border-b border-gray-100`,children:[e.jsx("button",{onMouseDown:t=>{t.preventDefault(),t.stopPropagation(),c?window.history.back():n?.("home")},className:"p-2 hover:bg-gray-100 rounded-full transition-colors duration-200","aria-label":"ë¤ë¡ê°ê¸°",children:e.jsx(ds,{className:"w-5 h-5 text-gray-700"})}),c?e.jsxs("div",{className:"absolute left-1/2 -translate-x-1/2 flex items-center gap-2 px-4 py-2 pointer-events-none",children:[e.jsx(ie,{className:"w-5 h-5 text-blue-500"}),e.jsx("span",{className:"text-gray-900",children:ue})]}):e.jsxs("button",{onMouseDown:t=>{t.preventDefault(),t.stopPropagation(),Bt()},className:"flex items-center gap-2 px-4 py-2 hover:bg-gray-100 rounded-lg transition-colors duration-200",children:[e.jsx(ie,{className:"w-5 h-5 text-blue-500"}),e.jsx("span",{className:"text-gray-900",children:ue}),e.jsx(us,{className:"w-4 h-4 text-gray-500"})]}),!c&&e.jsx("div",{className:"w-9"})]}),e.jsx("div",{className:"px-4 py-2 bg-blue-50 border-b border-blue-100",children:e.jsxs("div",{className:"flex items-center justify-center gap-2 text-sm text-gray-700",children:[T&&e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 bg-white rounded-full text-xs font-medium text-gray-800 border border-gray-200",children:[T.condition==="ë§ì"||T.condition==="ëì²´ë¡ ë§ì"?"âï¸":T.condition==="í림"||T.condition==="êµ¬ë¦ ì¡°ê¸"?"âï¸":T.condition?.includes("ë¹")||T.condition?.includes("ìë기")?"ð§ï¸":T.condition?.includes("ë")?"âï¸":"â ",T.condition," ",T.temp,"°"]}),e.jsxs("span",{children:[$.month,"ì ",$.day,"ì¼ (",$.dayOfWeek,") ",Ot]}),st&&e.jsx("span",{className:"px-2 py-0.5 bg-red-100 text-red-600 rounded text-xs",children:"ê³µí´ì¼"})]})}),!c&&e.jsx("div",{className:"px-4 py-3",children:e.jsxs("div",{className:"relative",children:[e.jsx(Xt,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-gray-400"}),e.jsx(Zt,{type:"text",value:P,onChange:t=>{b(t.target.value),Z(!0),H(0)},onFocus:()=>{Z(!0),H(0)},onBlur:()=>{window.setTimeout(()=>Z(!1),120)},onKeyDown:t=>{if(t.key==="ArrowDown"&&F.length>0){t.preventDefault(),Z(!0),H(a=>a<0?0:(a+1)%F.length);return}if(t.key==="ArrowUp"&&F.length>0){t.preventDefault(),Z(!0),H(a=>a<0?F.length-1:(a-1+F.length)%F.length);return}if(t.key==="Escape"){Z(!1),H(-1);return}t.key==="Enter"&&F.length>0&&(t.preventDefault(),ct(F[tt]||F[0]))},placeholder:ue?`${ue} · ë¤ë¥¸ ëì ê²ì`:"ëì ê²ì",className:"pl-10 bg-gray-50 border-gray-200"}),et&&F.length>0&&e.jsx("div",{className:"absolute top-full left-0 right-0 mt-2 bg-white border border-gray-200 rounded-xl shadow-lg overflow-hidden z-30",children:F.map((t,a)=>e.jsx("button",{type:"button",onMouseDown:l=>{l.preventDefault(),ct(t)},onMouseEnter:()=>H(a),className:`w-full px-3 py-2 text-left transition-colors border-b border-gray-50 last:border-b-0 ${tt===a?"bg-blue-50":"hover:bg-gray-50"}`,children:e.jsx("span",{className:"text-sm text-gray-900",children:t.name})},`${t.id}-${t.cityCode}`))})]})}),!c&&!z&&g&&ge.length===0&&e.jsxs("div",{className:"mx-4 mb-3 px-3 py-2.5 rounded-xl bg-amber-50 border border-amber-200",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"text-base leading-none mt-0.5",children:"âï¸"}),e.jsxs("p",{className:"text-xs text-amber-800 leading-relaxed",children:["ë ë°ìºì¤ë ",e.jsx("b",{children:"í´ì¸ ì¬í ëì"}),"를 ìë´íë¤. íì¬ ìì¹(",ue,")ë ìë¹ì¤ ì§ìì´ ìëë¤."]})]}),e.jsx("button",{type:"button",onClick:()=>n?.("home"),className:"mt-2.5 w-full py-2 rounded-lg bg-white border border-amber-300 text-amber-800 text-xs font-medium hover:bg-amber-100 transition-colors",children:"íì¼ë¡ ëìê°ê¸°"})]}),e.jsx("div",{className:`px-4 pb-3 overflow-x-auto ${c?"pt-3":""}`,children:e.jsx("div",{className:"flex gap-2 pb-2",children:De.map(t=>{const a=t.icon,l=u===t.id;return e.jsxs("button",{onMouseDown:I=>{I.preventDefault(),I.stopPropagation(),N(t.id)},className:` 32 flex items-center gap-2 px-4 py-2 rounded-full whitespace-nowrap transition-all duration-200 33 ${l?`bg-${t.color}-500 text-white shadow-md`:"bg-gray-100 text-gray-700 hover:bg-gray-200"} 34 `,style:l?{backgroundColor:t.color==="gray"?"#6b7280":t.color==="red"?"#ef4444":t.color==="amber"?"#f59e0b":t.color==="blue"?"#3b82f6":t.color==="purple"?"#a855f7":t.color==="pink"?"#ec4899":t.color==="teal"?"#14b8a6":"#6b7280"}:void 0,children:[a&&e.jsx(a,{className:"w-4 h-4"}),e.jsx("span",{className:"text-sm",children:t.label})]},t.id)})})}),e.jsx("div",{className:"px-4 pb-2",children:e.jsx("p",{className:"text-xs text-blue-600",children:"ð¡ ì¤ìê° ì§ë¥í ì¶ì²"})})]}),d==="map"&&e.jsxs("div",{className:"flex-1 relative bg-gray-50 z-0",style:{paddingBottom:"58px"},children:[z&&e.jsx("div",{className:"absolute inset-0 flex flex-col items-center justify-center gap-3 bg-white/50 backdrop-blur-sm z-10",children:e.jsx("div",{className:"w-10 h-10 border-4 border-blue-500 border-t-transparent roun
34ded-full animate-spin"})}),e.jsxs("div",{className:"w-full h-full relative",onMouseDown:t=>{t.target===t.currentTarget&&k(null)},children:[e.jsx(Tt,{places:ge,selectedCategory:u,onPlaceSelect:Vt,onBoundsChanged:Ht,onCenterChanged:Wt,center:A||void 0,selectedPlaceId:S,renderInfoCard:t=>{const a=De.find(L=>L.id===t.category),l=h.find(L=>L.id===t.id),I=l?.image||l?.images?.[0]||"https://images.unsplash.com/photo-1414235077428-338989a2e8c0?w=400";return e.jsxs("div",{className:"bg-white rounded-lg shadow-xl border border-gray-100 w-48 overflow-hidden cursor-pointer",onClick:L=>{L.stopPropagation(),l&&(he(l),Se(!0)),C(()=>k(null))},children:[e.jsxs("div",{className:"relative w-full h-20 overflow-hidden",children:[e.jsx("img",{src:I,alt:t.name,className:"w-full h-full object-cover"}),e.jsx("div",{className:"absolute top-1.5 left-1.5 px-1.5 py-0.5 rounded-full text-[10px] text-white font-medium",style:{backgroundColor:a?.color==="red"?"#ef4444":a?.color==="amber"?"#f59e0b":a?.color==="blue"?"#3b82f6":a?.color==="pink"?"#ec4899":a?.color==="teal"?"#14b8a6":"#6b7280"},children:a?.label})]}),e.jsxs("div",{className:"px-2 py-1.5",children:[e.jsx("h4",{className:"text-xs font-semibold text-gray-900 truncate",children:t.name}),e.jsxs("div",{className:"flex items-center gap-1.5 text-[11px] mt-0.5",children:[t.rating?e.jsxs("div",{className:"flex items-center gap-0.5",children:[e.jsx(ft,{className:"w-2.5 h-2.5 text-yellow-500 fill-yellow-500"}),e.jsx("span",{children:t.rating})]}):null,l?.distance?e.jsx("span",{className:"text-gray-500",children:Ve(l.distance)}):null]})]})]})}}),e.jsxs("button",{onClick:t=>{t.stopPropagation(),Ce()},onTouchEnd:t=>{t.preventDefault(),t.stopPropagation(),Ce()},className:"absolute top-4 right-4 px-3 py-2 bg-white rounded-full shadow-lg flex items-center gap-2 hover:bg-gray-50 z-20 border border-gray-100",style:{pointerEvents:"auto",touchAction:"manipulation"},children:[e.jsx(vs,{className:"w-4 h-4 text-blue-500"}),e.jsx("span",{className:"text-sm font-medium text-gray-900",children:"íì¬ ìì¹"})]})]})]}),d==="list"&&e.jsxs("div",{className:"fixed inset-0 bg-white z-50 flex flex-col",children:[e.jsx("div",{className:"bg-white border-b border-gray-200 px-4 py-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h1",{className:"text-lg",children:"ì£¼ë³ ì¥ì"}),e.jsx("button",{onClick:()=>Be("map"),className:"p-2 hover:bg-gray-100 rounded-lg transition-colors",children:e.jsx(mt,{className:"w-5 h-5 text-gray-700"})})]})}),e.jsx("div",{className:"px-4 py-3 border-b border-gray-100 bg-white overflow-x-auto",children:e.jsx("div",{className:"flex gap-2",children:De.filter(t=>t.id!=="museum").map(t=>{const a=t.icon,l=u===t.id;return e.jsxs("button",{onClick:()=>N(t.id),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full whitespace-nowrap text-sm transition-all duration-200 ${l?"text-white shadow-md":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`,style:l?{backgroundColor:t.color==="gray"?"#6b7280":t.color==="red"?"#ef4444":t.color==="amber"?"#f59e0b":t.color==="blue"?"#3b82f6":t.color==="pink"?"#ec4899":t.color==="teal"?"#14b8a6":"#6b7280"}:void 0,children:[a&&e.jsx(a,{className:"w-4 h-4"}),t.label]},t.id)})})}),e.jsx("div",{className:"px-4 py-3 border-b border-gray-100 bg-white",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-sm text-gray-600",children:["ì´ ",e.jsxs("span",{className:"text-blue-500",children:[ge.length,"ê°"]})]}),e.jsx("div",{className:"flex gap-2",children:e.jsx("button",{onClick:()=>D("distance"),className:`px-3 py-1 rounded-full text-sm transition-all duration-200 ${w==="distance"?"bg-blue-500 text-white":"bg-gray-100 text-gray-700 hover:bg-gray-200"}`,children:"거리 ì"})})]}),e.jsx("button",{onClick:()=>me(!0),className:"p-2 hover:bg-gray-100 rounded-lg transition-colors",children:e.jsx(ms,{className:"w-5 h-5 text-gray-600"})})]})}),e.jsx("div",{className:"flex-1 overflow-y-auto px-4 pb-32",style:{touchAction:"pan-y"},children:e.jsxs("div",{className:"space-y-3 pt-4",children:[ge.map(t=>{const a=De.find(l=>l.id===t.category);return se.includes(t.id),e.jsx("div",{onClick:()=>{k(t.id),he(t),Se(!0)},className:"bg-white rounded-lg border-2 border-gray-200 p-4 hover:border-gray-300 hover:shadow-sm transition-all cursor-pointer",children:e.jsxs("div",{className:"flex gap-4 items-center",children:[e.jsx("div",{className:"flex-shrink-0 w-20 h-20 rounded-lg overflow-hidden",children:e.jsx("img",{src:t.images?.[0]||t.image||"https://images.unsplash.com/photo-1414235077428-338989a2e8c0?w=400",alt:t.name||t.nameKr,className:"w-full h-full object-cover"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"font-semibold text-gray-900 mb-1 truncate",children:t.name||t.nameKr}),e.jsxs("div",{className:"flex items-center gap-3 text-sm mb-1",children:[e.jsx("span",{className:"text-gray-600",children:Ve(t.distance||1500)}),e.jsx("span",{className:"text-gray-400",children:"â¢"}),e.jsx("span",{className:"text-gray-500 text-xs",children:a?.label})]})]})]})},t.id)}),ge.length===0&&e.jsxs("div",{className:"text-center py-12",children:[e.jsx("p",{className:"text-gray-500",children:"ê²ì ê²°ê
34³¼ê° ììµëë¤"}),e.jsx(We,{variant:"outline",className:"mt-4",onClick:()=>{N("all"),b("")},children:"íí° ì´ê¸°í"})]})]})})]}),ze&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"fixed inset-0 bg-black/50 z-[9998]",onClick:()=>me(!1)}),e.jsxs("div",{className:"fixed bottom-0 left-0 right-0 bg-white rounded-t-3xl shadow-2xl z-[9999] flex flex-col max-h-[85vh]",children:[e.jsx("div",{className:"flex-shrink-0 flex justify-center pt-3 pb-1",children:e.jsx("div",{className:"w-12 h-1 bg-gray-300 rounded-full"})}),e.jsxs("div",{className:"flex-shrink-0 flex items-start justify-between px-8 pt-3 pb-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-gray-900 font-semibold",children:"íí° ì¤ì "}),e.jsx("p",{className:"text-sm text-gray-500 mt-1",children:"ìíë ì¡°ê±´ì¼ë¡ ì¥ì를 íí°ë§íì¸ì."})]}),e.jsx("button",{onClick:()=>me(!1),className:"p-2 -m-2 hover:bg-gray-100 rounded-full transition-colors","aria-label":"ë«ê¸°",children:e.jsx(mt,{className:"w-5 h-5 text-gray-700"})})]}),e.jsx("div",{className:"flex-1 overflow-y-auto px-8",style:{touchAction:"pan-y"},children:e.jsxs("div",{className:"space-y-8 pb-4",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx(B,{className:"text-gray-900",children:"거리 ë²ì"}),e.jsx(Ys,{value:fe,onValueChange:nt,min:100,max:5e3,step:100,className:"w-full"}),e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsxs("div",{className:"text-gray-600 text-center",children:[e.jsx("div",{children:"100m"}),e.jsx("div",{className:"text-xs mt-0.5",children:"ëë³´ 1ë¶"})]}),e.jsxs("div",{className:"text-blue-600 text-center",children:[e.jsx("div",{children:Ve(fe[0])}),e.jsx("div",{className:"text-xs mt-0.5",children:Ft(fe[0])})]}),e.jsxs("div",{className:"text-gray-600 text-center",children:[e.jsx("div",{children:"5km"}),e.jsx("div",{className:"text-xs mt-0.5",children:"ëë³´ 50ë¶"})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(B,{className:"text-gray-900",children:"ê°ê²©ë"}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:["$","$$","$$$"].map(t=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ye,{id:`price-${t}`,checked:te.includes(t),onCheckedChange:a=>{Ae(a?[...te,t]:te.filter(l=>l!==t))}}),e.jsxs(B,{htmlFor:`price-${t}`,className:"cursor-pointer",children:[t," ",t==="$"&&"(ì ë ´)",t==="$$"&&"(ë³´íµ)",t==="$$$"&&"(ë¹ì)"]})]},t))})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(B,{className:"text-gray-900",children:"ìµì íì "}),e.jsx("div",{className:"space-y-4",children:[3.5,4,4.5].map(t=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ye,{id:`rating-${t}`,checked:Ne===t,onCheckedChange:a=>{Le(a?t:0)}}),e.jsxs(B,{htmlFor:`rating-${t}`,className:"cursor-pointer flex items-center gap-2",children:[e.jsx(ft,{className:"w-4 h-4 text-yellow-500 fill-yellow-500"}),t.toFixed(1)," ì´ì"]})]},t))})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(B,{className:"text-gray-900",children:"ìì
ìí"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ye,{id:"status-all",checked:!at,onCheckedChange:t=>{t&&Oe(!1)}}),e.jsx(B,{htmlFor:"status-all",className:"cursor-pointer",children:"ì ì²´ 보기"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ye,{id:"status-open",checked:at,onCheckedChange:t=>{t&&Oe(!0)}}),e.jsx(B,{htmlFor:"status-open",className:"cursor-pointer",children:"ìì
ì¤ì¸ ì¥ìë§ ë³´ê¸°"})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(B,{className:"text-gray-900",children:"í¸ììì¤"}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:[{id:"wifi",label:"Wi-Fi",icon:fs},{id:"parking",label:"주차",icon:hs},{id:"card",label:"ì¹´ëê²°ì ",icon:ps},{id:"quiet",label:"ì¡°ì©í¨",icon:os},{id:"pet",label:"ë°ë ¤ë물 ëë°",icon:js},{id:"baby",label:"ì ììì¤",icon:ys},{id:"luggage",label:"ì§ ë³´ê´ ìë¹ì¤",icon:Cs}].map(t=>{const a=t.icon;return e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ye,{id:`amenity-${t.id}`,checked:Ke.includes(t.id),onCheckedChange:l=>{Fe(l?[...Ke,t.id]:Ke.filter(I=>I!==t.id))}}),e.jsxs(B,{htmlFor:`amenity-${t.id}`,className:"cursor-pointer flex items-center gap-2",children:[e.jsx(a,{className:"w-4 h-4 text-gray-600"}),t.label]})]},t.id)})})]})]})}),e.jsxs("div",{className:"flex-shrink-0 bg-white border-t border-gray-200 p-4 flex gap-3",style:{paddingBottom:"max(1rem, env(safe-area-inset-bottom))"},children:[e.jsx(We,{variant:"outline",className:"flex-1",onClick:()=>{nt([2e3]),Ae([]),Le(0),Oe(!0),Fe([]),V.success("íí°ê° ì´ê¸°íëììµëë¤")},children:"ì´ê¸°í"}),e.jsx(We,{className:"flex-1 bg-blue-500 hover:bg-blue-600",onClick:()=>{me(!1),V.success("íí°ê° ì ì©ëììµëë¤")},children:"ì ì©"})]})]})]}),ke&&q&&(()=>{const t=q.category,a=G=>Ut(G),l=se.includes(q.id);if(t==="landmark"||t==="museum")return e.jsx("div",{ref:rt,className:"fixed inset-0 bg-white overflow-y-auto overscroll-contain",style:{paddingBottom:"max(160px, env(safe-area-inset-bottom))",zIndex:9e3},children:e.jsx(cs,{landmark:{...q,ianaTz:Te},onPageChange:(G,xe)=>{if(G==="museum-detail"&&xe){n?.("museum-detail",xe);return}Ue()}
34,previousPage:"back",displayMode:"page",scrollContainerRef:rt})});if(t==="restaurant")return e.jsx(is,{fullScreen:!0,restaurant:q,onClose:Ue,onWishlist:a,isWishlisted:l});const L={...q,placeType:{museum:"restaurant",shopping:"shopping",service:"service"}[t]||"cafe",title_ko:q.nameKr||q.name||""};return e.jsx(ls,{fullScreen:!0,place:L,onClose:Ue,onWishlist:a,isWishlisted:l})})()]}),d==="map"&&!ke&&e.jsxs("button",{onMouseDown:t=>{t.preventDefault(),t.stopPropagation(),Be("list")},className:"fixed left-1/2 -translate-x-1/2 px-6 py-3 bg-gray-900 text-white rounded-full shadow-xl flex items-center gap-2 hover:bg-gray-800 transition-all duration-200 z-[40]",style:{bottom:"calc(env(safe-area-inset-bottom, 0px) + 24px)"},children:[e.jsx(J,{className:"w-5 h-5"}),e.jsx("span",{className:"font-medium",children:"ëª©ë¡ ë³´ê¸°"})]}),d==="list"&&e.jsxs("button",{onMouseDown:t=>{t.preventDefault(),t.stopPropagation(),Be("map")},className:"fixed left-1/2 -translate-x-1/2 px-6 py-3 bg-gray-900 text-white rounded-full shadow-xl flex items-center gap-2 hover:bg-gray-800 transition-all duration-200 z-[40]",style:{bottom:"calc(env(safe-area-inset-bottom, 0px) + 24px)"},children:[e.jsx(ie,{className:"w-5 h-5"}),e.jsx("span",{className:"font-medium",children:"ì§ë 보기"})]})]})}export{Yn as NearbyPage};
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.