PageSourceSearch

https://petwellhk.com/assets/MallDetail-mz2aiLZS.js

js petwellhk.com collected 2026-10-06 05:23:13 UTC 31,536 bytes, 11 lines download raw bytes

1import{r as N,j as e,L as P,p as ve}from"./react-vendor-BDHNqS4B.js";import{m as ke,e as F,D as de,w as ce,U as ye,x as me,y as oe,z as q,E as G,b as V}from"./Header-BkbupWq-.js";import{M as E,F as B}from"./Footer-CtylQEAH.js";import{c as he,u as K,n as xe,B as X,D as we,j as Pe,l as Me}from"./main-m_sUF2N4.js";import{C as Le,a as He,b as Ce}from"./collapsible-XeBmzMPY.js";import{g as ue,a as _,f as Ae,b as ee,c as $e,t as Se}from"./useMalls-DzLp84e2.js";import{u as De}from"./useSEO-CoArDrdl.js";import{u as Re}from"./hongKongDistricts--r8_jlh4.js";import{S as Te}from"./skeleton-CDto_fTL.js";import{C as I}from"./chevron-left-Jw0Ezjn9.js";import{L as Oe}from"./link-2-BDESSCXG.js";import{C as le}from"./check-DS0-tR9o.js";import{T as W}from"./triangle-alert-1QSShUG6.js";import{S as We}from"./scale-B2l5za8q.js";import{C as Ee}from"./coffee-DvdZrCo4.js";import{T as pe,C as Fe}from"./tram-front-BJQeNsZr.js";import{u as Ke}from"./useNearbyRestaurants-DlbceyfQ.js";import{P as ge}from"./phone-B2rvvDkK.js";import{N as je}from"./navigation-B9fVXvyH.js";import{G as Ue}from"./type-CVgQCqWZ.js";import{P as Ve}from"./PetWellVerifiedBadge-DpC4-twT.js";import{A as se}from"./AppDownloadCTA-DAEixTy3.js";import{n as Be,g as Ie,l as ze,a as Ze}from"./availableHours-DsyGI15X.js";import{g as qe,a as Ge}from"./placeMaps-BMm8HyB6.js";import{C as ae}from"./clock-CRHi7pcr.js";import{D as _e}from"./dog-_P0n7k9m.js";import"./amplify-DYDcjoow.js";import"./chevron-right-CpkQxGj-.js";import"./tag-D40gy_Nl.js";import"./query-7-WHkg5t.js";import"./textarea-D7qsgB_p.js";import"./reportService-tEzofQZ6.js";import"./index-BZFL-brE.js";import"./distance-Bwcv1qLg.js";import"./restaurantApi-J7TAaZ7f.js";import"./placeSearchConfig-BfT0dFXT.js";/**
2 * @license lucide-react v0.462.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 Ye=he("Baby",[["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"}]]);/**
7 * @license lucide-react v0.462.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 fe=he("Footprints",[["path",{d:"M4 16v-2.38C4 11.5 2.97 10.5 3 8c.03-2.72 1.49-6 4.5-6C9.37 2 10 3.8 10 5.5c0 3.11-2 5.66-2 8.68V16a2 2 0 1 1-4 0Z",key:"1dudjm"}],["path",{d:"M20 20v-2.38c0-2.12 1.03-3.12 1-5.62-.03-2.72-1.49-6-4.5-6C14.63 6 14 7.8 14 9.5c0 3.11 2 5.66 2 8.68V20a2 2 0 1 0 4 0Z",key:"l2t8xc"}],["path",{d:"M16 17h4",key:"1dejxt"}],["path",{d:"M4 13h4",key:"1bwh8b"}]]);function R({imageKey:r,alt:n,className:s=""}){const{imageUrl:l,isLoading:t,error:p}=Re(r),[d,c]=N.useState(!1),g=()=>e.jsx("div",{className:`flex h-full w-full items-center justify-center bg-gradient-to-br from-primary/10 to-primary/5 ${s}`,children:e.jsx(ke,{className:"h-10 w-10 text-primary/40"})});return r?t?e.jsx(Te,{className:`h-full w-full ${s}`}):p||!l||d?e.jsx(g,{}):e.jsx("img",{src:l,alt:n,className:`block h-full w-full object-cover ${s}`,onError:()=>c(!0)}):e.jsx(g,{})}function te({backLabel:r,coverImageKey:n,gallery:s,name:l,layout:t="mobile"}){const p=s!=null&&s.length?s:n?[n]:[],d=n||p[0],c=p.filter(h=>h!==d).slice(0,4),g=t==="desktop",f=g?"mall-hero mall-hero--desktop rounded-xl":"mall-hero",j=g?"mall-hero-media mall-hero-media--desktop":"mall-hero-media mall-hero-media--mobile";return d?c.length>=2?e.jsxs("div",{className:f,children:[e.jsx(P,{to:"/malls",className:"mall-hero-back","aria-label":r,children:e.jsx(I,{className:"h-5 w-5"})}),e.jsxs("div",{className:g?"mall-hero-media mall-hero-media--desktop grid grid-cols-4 grid-rows-2 gap-0.5 md:gap-1":"mall-hero-media grid min-h-[220px] grid-cols-4 grid-rows-2 gap-0.5 sm:min-h-[280px] sm:h-[280px] md:h-[380px] md:gap-1",children:[e.jsx("div",{className:"mall-gallery-tile col-span-2 row-span-2",children:e.jsx(R,{imageKey:d,alt:l,className:"h-full w-full"})}),c.slice(0,2).map((h,m)=>e.jsx("div",{className:"mall-gallery-tile",children:e.jsx(R,{imageKey:h,alt:`${l} - ${m+2}`,className:"h-full w-full"})},h)),c.length>=3?e.jsxs("div",{className:"mall-gallery-tile relative",children:[e.jsx(R,{imageKey:c[2],alt:`${l} - 4`,className:"h-full w-full"}),c.length>3&&e.jsxs("div",{className:"absolute inset-0 flex items-center justify-center bg-black/45 text-sm font-semibold text-white",children:["+",c.length-2]})]}):e.jsx("div",{className:"mall-gallery-tile bg-muted"}),c.length>=4?e.jsx("div",{className:"mall-gallery-tile",children:e.jsx(R,{imageKey:c[3],alt:`${l} - 5`,className:"h-full w-full"})}):e.jsx("div",{className:"mall-gallery-tile bg-muted"})]})]}):e.jsxs("div",{className:f,children:[e.jsx(P,{to:"/malls",className:"mall-hero-back","aria-label":r,children:e.jsx(I,{className:"h-5 w-5"})}),e.jsxs("div",{className:`${j} mall-hero-media--cover`,children:[e.jsx(R,{imageKey:d,alt:l,className:"h-full w-full"}),e.jsx("div",{className:"mall-hero-veil","aria-hidden":!0})]})]}):e.jsxs("div",{className:f,children:[e.jsx(P,{to:"/malls",className:"mall-hero-back","aria-label":r,children:e.jsx(I,{className:"h-5 w-5"})}),e.jsx("div",{className:`${j} flex items-center justify-center bg-muted text-sm text-muted-foreground`,children:"No photo"})]})}const re=120;function Qe(r,n){if(!r||n==null)return!1;const s=String(n);return r.includes(s)&&/按金|deposit/i.test(r)}function z({label:r}){return e.jsx("span",{className:"mall-soft-tag",children:r})}function Je({text:r}){const{t:n}=K(),[s,l]=N.useState(!1),t=r.length>re,p=!t||s?r:`${r.slice(0,re).trim()}…`;return e.jsxs("div",{className:"mt-2 space-y-1",children:[e.jsx("p",{className:"text-sm leading-relaxed text-muted-foreground",children:p}),t?e.jsxs("button",{type:"button",className:"inline-flex items-center gap-0.5 text-xs font-medium text-foreground
11/70 transition-colors hover:text-foreground",onClick:()=>l(d=>!d),children:[n(s?"mallPlaces.detail.showLess":"mallPlaces.detail.showMore"),e.jsx(F,{className:`h-3.5 w-3.5 transition-transform ${s?"rotate-180":""}`,"aria-hidden":!0})]}):null]})}function D({children:r}){return e.jsx("p",{className:"mall-section-label mb-2.5",children:r})}function Z({label:r,value:n,icon:s}){return e.jsxs("div",{className:"flex items-start gap-3 py-2.5",children:[s?e.jsx(s,{className:"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}):null,e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"text-[11px] font-medium uppercase tracking-wide text-muted-foreground",children:r}),e.jsx("div",{className:"mt-0.5 text-sm font-medium leading-relaxed text-foreground",children:n})]})]})}function Xe({mall:r,lang:n}){var w,O,M;const{t:s}=K(),l=r.petPolicy,t=l==null?void 0:l.commonArea,p=N.useMemo(()=>{const i=[];return(t==null?void 0:t.leashRequired)===!0&&i.push({key:"leash",icon:Oe,label:s("mallPlaces.detail.ruleLeash")}),(t==null?void 0:t.carrierOrStrollerOrHeldRequired)===!0?i.push({key:"carrier",icon:Ye,label:s("mallPlaces.detail.ruleCarrier")}):(t==null?void 0:t.carrierOrStrollerOrHeldRequired)===!1&&i.push({key:"carrier-ok",icon:le,label:s("mallPlaces.detail.ruleNoCarrier")}),(t==null?void 0:t.muzzleSuggestedForLargeDogs)===!0&&i.push({key:"muzzle",icon:W,label:s("mallPlaces.detail.ruleMuzzle")}),(t==null?void 0:t.maxWeightKg)!=null&&i.push({key:"weight",icon:We,label:s("mallPlaces.detail.ruleMaxWeight",{kg:t.maxWeightKg})}),i},[t,s]),d=N.useMemo(()=>{var x,y,$,L,U,T;const i=[];if(((x=l==null?void 0:l.amenities)==null?void 0:x.petParkOrGarden)===!0&&i.push({key:"park",label:s("mallPlaces.detail.amenityPark"),detail:l.amenities.petParkLocation||s("mallPlaces.detail.tagPetPark")}),(l==null?void 0:l.diningAvailable)===!0||(((y=l==null?void 0:l.diningVenues)==null?void 0:y.length)??0)>0){const S=(($=l==null?void 0:l.diningVenues)==null?void 0:$.length)??0;i.push({key:"dining",label:s("mallPlaces.detail.amenityDining"),detail:S>0?s("mallPlaces.detail.venueCount",{count:S}):s("mallPlaces.detail.tagDiningYes")})}else(l==null?void 0:l.diningAvailable)===!1&&i.push({key:"dining-no",label:s("mallPlaces.detail.amenityDining"),detail:s("mallPlaces.detail.tagDiningNo")});if(l!=null&&l.stroller?i.push({key:"stroller",label:s("mallPlaces.detail.amenityStroller"),detail:l.stroller.depositHkd!=null?s("mallPlaces.detail.depositAmount",{amount:l.stroller.depositHkd}):s("mallPlaces.detail.tagStroller")}):l!=null&&l.strollerUnavailable&&i.push({key:"stroller-no",label:s("mallPlaces.detail.amenityStroller"),detail:s("mallPlaces.detail.tagStrollerNo")}),((L=l==null?void 0:l.amenities)==null?void 0:L.petToilet)===!0&&i.push({key:"toilet",label:s("mallPlaces.detail.amenityToilet"),detail:s("mallPlaces.detail.tagPetToilet")}),((U=r.parking)==null?void 0:U.hasOwnCarPark)===!0||r.parkingWebsite){const S=((T=r.parking)==null?void 0:T.weekdayRateHkd)!=null?s("mallPlaces.detail.ratePerHour",{amount:r.parking.weekdayRateHkd}):s("mallPlaces.detail.tagParking");i.push({key:"parking",label:s("mallPlaces.detail.amenityParking"),detail:S})}return i},[l,r.parking,r.parkingWebsite,s]),c=((l==null?void 0:l.walkZones.length)??0)>0,g=((l==null?void 0:l.restrictedZones.length)??0)>0,f=!!(l!=null&&l.stroller),j=((l==null?void 0:l.diningVenues.length)??0)>0,h=!!((w=r.mtrAccess)!=null&&w.trim()),m=r.parking,A=!!m&&(m.weekdayRateHkd!=null||m.weekendRateHkd!=null||m.heightLimitM!=null||!!m.tips),k=[];if(t!=null&&t.sizeLimitNotes&&k.push(t.sizeLimitNotes),l!=null&&l.diningNotes&&k.push(l.diningNotes),(O=l==null?void 0:l.amenities)!=null&&O.other&&k.push(l.amenities.other),(M=l==null?void 0:l.stroller)!=null&&M.notes&&!Qe(l.stroller.notes,l.stroller.depositHkd)&&k.push(l.stroller.notes),r.petPolicyNotes&&k.push(r.petPolicyNotes),!(p.length>0||d.length>0||c||g||f||j||h||A||k.length>0||!!r.petsAllowed))return e.jsxs("div",{children:[e.jsx("h2",{className:"mall-title text-2xl md:text-[1.75rem]",children:s("mallPlaces.detail.policyTitle")}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:s("mallPlaces.detail.policySubtitle")})]});const a=ue(r.petsAllowed,n),o=_(r.petMovementMode,n),b=r.petsAllowed==="YES",v=r.petsAllowed==="NO";return e.jsxs("div",{className:"space-y-7 md:space-y-8",children:[e.jsxs("div",{children:[e.jsx("p",{className:"mall-kicker",children:s("mallPlaces.detail.visitGuideTitle")}),e.jsx("h2",{className:"mall-title mt-1.5 text-2xl md:text-[1.75rem]",children:a}),e.jsx("p",{className:"mt-1.5 text-sm text-muted-foreground",children:s("mallPlaces.detail.policySubtitle")}),e.jsxs("div",{className:"mt-4 flex flex-wrap gap-2",children:[e.jsxs("span",{className:b?"mall-identity-pill mall-identity-pill--emphasis":"mall-identity-pill",children:[v?e.jsx(W,{className:"h-3.5 w-3.5 shrink-0 opacity-70","aria-hidden":!0}):e.jsx(le,{className:"h-3.5 w-3.5 shrink-0 opacity-70","aria-hidden":!0}),a]}),e.jsxs("span",{className:"mall-identity-pill",children:[e.jsx(fe,{className:"h-3.5 w-3.5 shrink-0 opacity-70","aria-hidden":!0}),o]})]})]}),p.length>0?e.jsxs("div",{children:[e.jsx(D,{children:s("mallPlaces.detail.rulesTitle")}),e.jsx("ul",{className:"divide-y divide-[hsl(var(--mall-line))] rounded-xl border border-[hsl(var(--mall-line))] bg-[hsl(var(--mall-canvas))]/60",children:p.map(i=>{const x=i.icon;return e.jsxs("li",{className:"flex items-center gap-3 px-3.5 py-3 text-sm font-medium text-foreground",children:[e.jsx(x,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),i.label]},i.key)})})]}):null,d.length>0?e.jsxs("div",{children:[e.jsx(D,{children:s("mallPlaces.detail.facilitiesTitle")}),e.jsx("dl",{className:"grid overflow-hidden rounded-xl border border-[hsl(var(--mall-line))] sm:grid-cols-2",children:d.map((i,x)=>{const y=x===d.length-1,$=d.length%2===1&&y;return e.jsxs("div",{className:["bg-[hsl(var(--mall-panel))] px-3.5 py-3",x>=2?"border-t border-[hsl(var(--mall-line))]":"",x%2===1?"sm:border-l sm:border-[hsl(var(--mall-line))]":"",$?"sm:col-span-2":""].filter(
11Boolean).join(" "),children:[e.jsx("dt",{className:"text-[11px] font-medium uppercase tracking-wide text-muted-foreground",children:i.label}),e.jsx("dd",{className:"mt-1 text-sm font-semibold text-foreground",children:i.detail})]},i.key)})})]}):null,c?e.jsxs("div",{children:[e.jsxs("div",{className:"mb-2.5 flex items-baseline justify-between gap-3",children:[e.jsx("p",{className:"mall-section-label",children:s("mallPlaces.detail.walkZonesTitle")}),e.jsx("span",{className:"text-xs text-muted-foreground",children:s("mallPlaces.detail.zoneCount",{count:l.walkZones.length})})]}),e.jsx("div",{className:"space-y-2",children:l.walkZones.map(i=>{const x=Ae(i.zoneType,s);return e.jsxs("div",{className:"mall-zone-card",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"text-sm font-semibold text-foreground",children:i.label}),i.floors.map(y=>e.jsx(z,{label:ee(y,n,s)},y)),x?e.jsx(z,{label:x}):null]}),i.notes&&i.notes!==i.label?e.jsx(Je,{text:i.notes}):null]},`${i.label}-${i.floors.join("-")}`)})})]}):null,g?e.jsxs("div",{children:[e.jsx(D,{children:s("mallPlaces.detail.restrictedTitle")}),e.jsx("div",{className:"space-y-2",children:l.restrictedZones.map(i=>e.jsx("div",{className:"mall-zone-card mall-zone-card--restricted",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(W,{className:"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-semibold text-foreground",children:i.label}),i.notes&&i.notes!==i.label?e.jsx("p",{className:"mt-1 text-sm leading-relaxed text-muted-foreground",children:i.notes}):null]})]})},i.label))})]}):null,j?e.jsxs("div",{children:[e.jsxs("div",{className:"mb-2.5 flex items-baseline justify-between gap-3",children:[e.jsx("p",{className:"mall-section-label",children:s("mallPlaces.detail.diningVenues")}),e.jsx("span",{className:"text-xs text-muted-foreground",children:s("mallPlaces.detail.venueCount",{count:l.diningVenues.length})})]}),e.jsx("ul",{className:"divide-y divide-[hsl(var(--mall-line))] rounded-xl border border-[hsl(var(--mall-line))]",children:l.diningVenues.map(i=>{const x=i.floor?ee(i.floor,n,s):"";return e.jsxs("li",{className:"flex items-center gap-3 px-3.5 py-3",children:[e.jsx(Ee,{className:"h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("span",{className:"min-w-0 flex-1 text-sm font-medium text-foreground",children:i.name}),x?e.jsx(z,{label:x}):null]},`${i.name}-${i.floor||""}`)})})]}):null,f&&(l!=null&&l.stroller)?e.jsxs("div",{children:[e.jsx(D,{children:s("mallPlaces.detail.strollerTitle")}),e.jsxs("div",{className:"rounded-xl border border-[hsl(var(--mall-line))] bg-[hsl(var(--mall-canvas))]/60 px-3.5",children:[l.stroller.depositHkd!=null?e.jsx(Z,{label:s("mallPlaces.detail.depositLabel"),value:`HK$${l.stroller.depositHkd}`}):null,l.stroller.requiresMembership||l.stroller.membershipName?e.jsx(Z,{label:s("mallPlaces.detail.membership"),value:l.stroller.membershipName||s("mallPlaces.detail.membershipRequired")}):null,l.stroller.locations.length>0?e.jsxs("div",{className:"flex items-start gap-3 py-2.5",children:[e.jsx(E,{className:"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground","aria-hidden":!0}),e.jsx("p",{className:"text-sm font-medium leading-relaxed text-foreground",children:l.stroller.locations.join(" · ")})]}):null]})]}):null,h||A?e.jsxs("div",{children:[e.jsx(D,{children:s("mallPlaces.detail.gettingThere")}),e.jsxs("div",{className:"rounded-xl border border-[hsl(var(--mall-line))] bg-[hsl(var(--mall-canvas))]/60 px-3.5",children:[h?e.jsx(Z,{icon:pe,label:s("mallPlaces.mtrAccess"),value:r.mtrAccess}):null,A&&m?e.jsxs("div",{className:h?"border-t border-[hsl(var(--mall-line))] py-3":"py-3",children:[e.jsx("p",{className:"text-[11px] font-medium uppercase tracking-wide text-muted-foreground",children:s("mallPlaces.detail.parkingDetails")}),(m.weekdayRateHkd!=null||m.weekendRateHkd!=null)&&e.jsxs("div",{className:"mt-2 grid grid-cols-2 gap-3",children:[m.weekdayRateHkd!=null?e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:s("mallPlaces.detail.weekdayRate")}),e.jsxs("p",{className:"mt-0.5 text-lg font-semibold tracking-tight text-foreground",children:["HK$",m.weekdayRateHkd,e.jsx("span",{className:"ml-1 text-xs font-medium text-muted-foreground",children:s("mallPlaces.detail.perHour")})]})]}):null,m.weekendRateHkd!=null?e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:s("mallPlaces.detail.weekendRate")}),e.jsxs("p",{className:"mt-0.5 text-lg font-semibold tracking-tight text-foreground",children:["HK$",m.weekendRateHkd,e.jsx("span",{className:"ml-1 text-xs font-medium text-muted-foreground",children:s("mallPlaces.detail.perHour")})]})]}):null]}),m.heightLimitM!=null?e.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:s("mallPlaces.detail.heightLimitValue",{meters:m.heightLimitM})}):null,m.tips?e.jsx("p",{className:"mt-1 text-sm leading-relaxed text-muted-foreground",children:m.tips}):null]}):null]})]}):null,k.length>0?e.jsxs("div",{children:[e.jsx(D,{children:s("mallPlaces.detail.notesTitle")}),e.jsx("div",{className:"space-y-1.5 text-sm leading-relaxed text-muted-foreground",children:k.map(i=>e.jsx("p",{children:i},i))})]}):null]})}function el({lat:r,lon:n,mallName:s,language:l="zh",radiusKm:t=1.5}){const p=r!=null&&n!=null,{data:d,isLoading:c}=Ke(p?r:void 0,p?n:void 0,l,t);if(!p)return null;const g=d??[],f=g.slice(0,8);return e.jsxs(de,{children:[e.jsx(ce,{asChild:!0,children:e.jsxs("button",{type:"button",className:"restaurant-action-btn w-full",children:[e.jsx(ye,{className:"h-4 w-4"}),"附近寵物友善餐廳",e.jsx(F,{className:"h-3.5 w-3.5 opacity-70"})]})}),e.jsxs(me,{align:"start",className:"w-72",children:[e.jsxs(oe,{children:[s," · 1.5 km 內"]}),e.jsx(q,{}),c&&e.jsxs("div",{className:"flex items-center justify-center gap-2 px-3 py-4 text-sm text-muted-foreground",children:[e.jsx(xe,{className:"h-4 w-4 animate-spin"}),"載入中…"]}),!c&&f.length===0&&e.jsx("div",{className:"px-3 py-4 text-sm text-muted-foreground",children:"附近暫時未有已收錄嘅餐廳"}),f.map(({restaurant:j,distance:h})=>e.jsx(G,{asChild:!0,children:e.jsxs(P,{to:`/restaurants/${j.id}`,className:"flex items-start gap-2 py-2",children:[e.jsx(E,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-primary"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"truncate text-sm font-medium text-foreground",children:j.name}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[(h*1e3).toFixed(0)," 米",j.district?` · ${j.district}`:""]})]})]})},j.id)),g.length>f.length&&e.jsxs(e.Fragment,{children:[e.jsx(q,{}),e.jsx(G,{asChild:!0,children:e.jsxs(P,{to:"/restaurants",className:"text-primary",children:["查看全部 ",g.length," 間 →"]})})]})]})]})}function ie({mall:r,mapsUrl:n,lang:s}){var f,j;const{t:l}=K(),t=r.parking,p=!!r.parkingWebsite||!!(t!=null&&t.hasOwnCarPark)||(t==null?void 0:t.weekdayRateHkd)!=null||(t==null?void 0:t.weekendRateHkd)!=null||((t==null?void 0:t.spendToParkOffers.length)??0)>0||!!(t!=null&&t.tips),d=h=>h==null?null:(t==null?void 0:t.rateUnit)==="PER_HOUR"?l("mallPlaces.detail.ratePerHour",{amount:h}):l("mallPlaces.detail.rateAmount",{amount:h}),c=d(t==null?void 0:t.weekdayRateHkd),g=d(t==null?void 0:t.weekendRateHkd);return e.jsxs("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[r.phone&&e.jsxs("a",{href:`tel:${r.phone}`,className:"restaurant-action-btn restaurant-action-btn--primary",children:[e.jsx(ge,{className:"h-4 w-4"}),l("mallPlaces.detail.callNow")]}),n&&e.jsxs("a",{href:n,target:"_blank",rel:"noreferrer",className:"restaurant-action-btn restaurant-action-btn--primary",children:[e.jsx(je,{className:"h-4 w-4"}),l("mallPlaces.detail.getDirections")]}),r.website&&e.jsxs("a",{href:r.website,target:"_blank",rel:"noreferrer",className:"restaurant-action-btn",children:[e.jsx(Ue,{className:"h-4 w-4"}),l("mallPlaces.detail.visitWebsite")]}),p?e.jsxs(de,{children:[e.jsx(ce,{asChild:!0,children:e.jsxs("button",{type:"button",className:"restaurant-action-btn w-full",children:[e.jsx(Fe,{className:"h-4 w-4"}),l("mallPlaces.detail.parking"),e.jsx(F,{className:"h-3.5 w-3.5 opacity-70"})]})}),e.jsxs(me,{align:"start",className:"w-72",children:[e.jsx(oe,{children:l("mallPlaces.detail.parkingDetails")}),c&&e.jsxs("div",{className:"px-2 py-1.5 text-sm text-muted-foreground",children:[l("mallPlaces.detail.weekdayRate"),": ",c]}),g&&e.jsxs("div",{className:"px-2 py-1.5 text-sm text-muted-foreground",children:[l("mallPlaces.detail.weekendRate"),": ",g]}),(t==null?void 0:t.heightLimitM)!=null&&e.jsx("div",{className:"px-2 py-1.5 text-sm text-muted-foreground",children:l("mallPlaces.detail.heightLimitValue",{meters:t.heightLimitM})}),t==null?void 0:t.spendToParkOffers.map((h,m)=>h.notes?e.jsx("div",{className:"px-2 py-1.5 text-sm leading-snug text-foreground",children:h.notes},`spend-${m}
11`):null),(t==null?void 0:t.tips)&&e.jsx("div",{className:"px-2 py-1.5 text-sm leading-snug text-foreground",children:t.tips}),r.parkingWebsite&&e.jsxs(e.Fragment,{children:[e.jsx(q,{}),e.jsx(G,{asChild:!0,children:e.jsx("a",{href:r.parkingWebsite,target:"_blank",rel:"noreferrer",children:l("mallPlaces.detail.parkingWebsite")})})]})]})]}):null,e.jsx(el,{lat:(f=r.location)==null?void 0:f.lat,lon:(j=r.location)==null?void 0:j.lon,mallName:r.name,language:s})]})}const ne=["mon","tue","wed","thu","fri","sat","sun"],Wl=()=>{const{mallId:r}=ve(),{i18n:n,t:s}=K(),{data:l,isLoading:t,error:p}=$e(r),d=n.language==="en"?"en":"zh",[c,g]=N.useState(!1),[f,j]=N.useState(!1),[h,m]=N.useState(null),[A,k]=N.useState(""),Y=N.useCallback(u=>{const C=u.target.closest("img");if(!C||C.closest("a")||!C.closest(".mall-hero, .mall-gallery-tile")||C.naturalWidth&&C.naturalWidth<80)return;const J=C.currentSrc||C.getAttribute("src");J&&(u.preventDefault(),m(J),k(C.getAttribute("alt")||""),j(!0))},[]),a=N.useMemo(()=>l?Se(l,n.language):null,[l,n.language]),o=(a==null?void 0:a.name)||"",b=(a==null?void 0:a.address)||"",v=(a==null?void 0:a.district)||"",w=N.useMemo(()=>Be(a==null?void 0:a.availableHours),[a==null?void 0:a.availableHours]),O=Ie(a==null?void 0:a.availableHours,!1,s),M=ze(O||(a==null?void 0:a.hoursSummary)||null,n.language)||null,i=N.useMemo(()=>ne.some(u=>{var H;return(((H=w==null?void 0:w[u])==null?void 0:H.length)??0)>0}),[w]),x=N.useMemo(()=>{if(a!=null&&a.googleMapsUrl)return a.googleMapsUrl;const u=[o,b].filter(Boolean).join(" ").trim();return!u&&!(a!=null&&a.location)?null:qe(u||o,(a==null?void 0:a.location)??void 0)},[a,o,b]),y=N.useMemo(()=>{if(!a)return null;const u=[o,b,v].filter(Boolean).join(" ").trim();return!u&&!a.location?null:Ge(u||o,a.location??void 0)},[a,o,b,v]),$=N.useMemo(()=>{if(a)return{"@context":"https://schema.org","@type":"ShoppingCenter",name:o,address:{"@type":"PostalAddress",streetAddress:b,addressLocality:v,addressRegion:"Hong Kong"},telephone:a.phone||void 0,url:`https://petwellhk.com/malls/${r}`,image:a.image||void 0,openingHours:a.hoursSummary||void 0}},[a,r,o,b,v]);if(De({title:a?`${o} | ${v}寵物友善商場 | PetWell HK`:"寵物友善商場詳情 | PetWell HK",description:a?`${o}係${v}寵物友善商場。${_(a.petMovementMode,"zh")}。地址:${b}。`:"查看香港寵物友善商場詳細資料及寵物政策",keywords:a?`${o}寵物友善,${v}帶狗商場,${o}帶狗,寵物友善商場`:"寵物友善商場,帶狗入商場",canonicalUrl:`https://petwellhk.com/malls/${r}`,ogImage:a==null?void 0:a.image,structuredData:$}),t)return e.jsxs("div",{className:"mall-page flex min-h-screen flex-col",children:[e.jsx(V,{}),e.jsx("main",{className:"flex flex-1 items-center justify-center py-16 md:py-20",children:e.jsx(xe,{className:"h-8 w-8 animate-spin text-primary"})}),e.jsx(B,{})]});if(p||!a||!l)return e.jsxs("div",{className:"mall-page flex min-h-screen flex-col",children:[e.jsx(V,{}),e.jsx("main",{className:"flex-1 py-12 md:py-16",children:e.jsxs("div",{className:"mall-shell text-center",children:[e.jsx("h1",{className:"mall-title mb-4 text-3xl md:text-4xl",children:s("mallPlaces.detail.notFound")}),e.jsx(P,{to:"/malls",children:e.jsx(X,{children:s("mallPlaces.backToList")})})]})}),e.jsx(B,{})]});const L=a.gallery.length>0?a.gallery:a.image?[a.image]:[],T=L.length>=3?L.slice(5):L.slice(1),S=ue(a.petsAllowed,d),Ne=_(a.petMovementMode,d),Q=u=>{const H=u==="desktop";return e.jsxs("div",{className:`flex flex-col ${H?"h-full gap-5":"gap-4"}`,children:[e.jsxs("div",{children:[e.jsx("p",{className:"mall-kicker mb-2",children:s("mallPlaces.pageTitle")}),e.jsxs("div",{className:"mb-2.5 flex flex-wrap items-center gap-2",children:[a.verified&&e.jsx(Ve,{}),a.petsAllowed==="YES"&&e.jsxs("span",{className:"mall-identity-pill mall-identity-pill--emphasis",children:[e.jsx(_e,{className:"h-3 w-3","aria-hidden":!0}),S]}),a.petMovementMode!=="UNKNOWN"&&e.jsxs("span",{className:"mall-identity-pill",children:[e.jsx(fe,{className:"h-3 w-3 opacity-70","aria-hidden":!0}),Ne]})]}),e.jsx("h1",{className:`mall-title text-foreground ${H?"text-3xl xl:text-[2.15rem]":"text-2xl md:text-3xl"}`,children:o}),e.jsxs("div",{className:`mt-2.5 flex flex-wrap items-center gap-x-3 gap-y-1.5 text-[hsl(var(--mall-muted))] ${H?"text-base":"text-sm"}`,children:[v&&e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(E,{className:"h-4 w-4 shrink-0 text-primary","aria-hidden":!0}),v]}),M&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-[hsl(var(--mall-line))]","aria-hidden":!0,
11children:"·"}),e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(ae,{className:"h-4 w-4 shrink-0","aria-hidden":!0}),M]})]})]})]}),a.listingAlert&&e.jsxs("div",{role:"alert",className:"flex gap-2.5 rounded-lg border border-[hsl(var(--mall-line))] bg-[hsl(var(--mall-canvas))] px-3.5 py-3 text-sm text-foreground",children:[e.jsx(W,{className:"mt-0.5 h-4 w-4 shrink-0 text-primary","aria-hidden":!0}),e.jsx("p",{className:"leading-relaxed",children:a.listingAlert})]}),H&&e.jsx("div",{className:"mt-auto",children:e.jsx(ie,{mall:a,mapsUrl:x,lang:d})})]})},be=e.jsx("div",{className:"rounded-xl border border-[hsl(var(--mall-line))] bg-[hsl(var(--mall-canvas))]/70 px-3.5 py-3",children:e.jsxs("div",{className:"flex items-start gap-2.5 text-sm",children:[e.jsx(ae,{className:"mt-0.5 h-4 w-4 shrink-0 text-primary","aria-hidden":!0}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("p",{className:"font-semibold text-foreground",children:s("mallPlaces.openingHours")}),M&&e.jsx("p",{className:"mt-0.5 text-foreground/90",children:M}),i&&w&&e.jsxs(Le,{open:c,onOpenChange:g,children:[e.jsx(He,{asChild:!0,children:e.jsxs(X,{variant:"ghost",size:"sm",className:"mt-1 h-auto px-0 text-primary",children:[s(c?"mallPlaces.detail.hideFullHours":"mallPlaces.detail.viewFullHours"),e.jsx(F,{className:`ml-1 h-4 w-4 transition-transform ${c?"rotate-180":""}`})]})}),e.jsx(Ce,{className:"mt-2 space-y-1 text-sm text-muted-foreground",children:ne.map(u=>e.jsxs("div",{className:"flex justify-between gap-3",children:[e.jsx("span",{children:s(`hours.${u}`)}),e.jsx("span",{children:Ze(w,u)||s("mallPlaces.closed")})]},u))})]})]})]})});return e.jsxs("div",{className:"mall-page flex min-h-screen flex-col",children:[e.jsx(V,{}),e.jsxs("main",{className:"flex-1",onClick:Y,children:[e.jsx("div",{className:"lg:hidden",children:e.jsx(te,{backLabel:s("mallPlaces.backToList"),coverImageKey:a.image,gallery:L,name:o})}),e.jsxs("div",{className:"mall-shell",children:[e.jsxs("nav",{className:"mall-breadcrumb hidden lg:flex lg:pt-6","aria-label":"Breadcrumb",children:[e.jsx(P,{to:"/",className:"transition-colors hover:text-primary",children:"PetWell HK"}),e.jsx("span",{className:"mall-breadcrumb-sep","aria-hidden":!0,children:"/"}),e.jsx(P,{to:"/malls",className:"transition-colors hover:text-primary",children:s("mallPlaces.pageTitle")}),e.jsx("span",{className:"mall-breadcrumb-sep","aria-hidden":!0,children:"/"}),e.jsx("span",{className:"truncate font-medium text-foreground",children:o})]}),e.jsxs("div",{className:"mall-desktop-header",children:[e.jsx("div",{className:"mall-reveal",children:e.jsx(te,{backLabel:s("mallPlaces.backToList"),coverImageKey:a.image,gallery:L,name:o,layout:"desktop"})}),e.jsx("section",{className:"mall-panel mall-identity-desktop mall-reveal mall-reveal-delay-1",children:Q("desktop")})]}),e.jsx("section",{className:"mall-panel mall-reveal relative z-10 -mt-5 p-4 md:-mt-6 md:p-6 lg:hidden",children:Q("mobile")}),e.jsxs("div",{className:"mall-content-grid",children:[e.jsxs("div",{className:"mall-main-column mall-reveal mall-reveal-delay-2",children:[e.jsx("section",{className:"mall-panel p-4 md:p-6 xl:p-8",children:e.jsx(Xe,{mall:a,lang:d})}),T.length>0&&e.jsxs("section",{className:"mall-panel p-4 md:p-6",children:[e.jsx("h2",{className:"mall-title mb-3 text-2xl",children:s("mallPlaces.gallery")}),e.jsx("div",{className:"grid grid-cols-3 gap-1.5 sm:grid-cols-4 md:gap-2",children:T.slice(0,8).map(u=>e.jsx("div",{className:"mall-gallery-tile aspect-square rounded-lg",children:e.jsx(R,{imageKey:u,alt:o,className:"h-full w-full"})},u))})]})]}),e.jsxs("aside",{className:"mall-sidebar mall-reveal mall-reveal-delay-3",children:[e.jsxs("section",{className:"mall-panel space-y-4 p-4 md:p-5",children:[e.jsx("h2",{className:"text-base font-bold tracking-tight",children:s("mallPlaces.detail.planVisit")}),b&&e.jsxs("div",{className:"flex items-start gap-2.5 text-sm leading-relaxed",children:[e.jsx(E,{className:"mt-0.5 h-4 w-4 shrink-0 text-primary","aria-hidden":!0}),e.jsx("span",{children:b})]}),a.mtrAccess&&e.jsxs("div",{className:"flex items-start gap-2.5 text-sm leading-relaxed",children:[e.jsx(pe,{className:"mt-0.5 h-4 w-4 shrink-0 text-primary","aria-hidden":!0}),e.jsx("span",{children:a.mtrAccess})]}),(M||i)&&be,e.jsx("div",{className:"lg:hidden",children:e.jsx(ie,{mall:a,mapsUrl:x,lang:d})})]}),y&&e.jsx("div",{className:"mall-panel overflow-hidden",children:e.jsx("iframe",{title:`${o} map`,src:y,className:"h-56 w-full",loading:"lazy",referrerPolicy:"no-referrer-when-downgrade"})}),e.jsx("div",{className:"mall-panel hidden p-4 lg:block",children:e.jsx(se,{title:"下載 PetWell App,探索更多寵物友善商場"})})]})]}),e.jsx("div",{className:"mt-6 pb-4 lg:hidden",children:e.jsx("div",{className:"mall-panel p-4",children:e.jsx(se,{title:"下載 PetWell App,探索更多寵物友善商場"})})})]})]}),e.jsxs("div",{className:"mall-mobile-bar",role:"toolbar","aria-label":"Quick actions",children:[a.phone&&e.jsxs("a",{href:`tel:${a.phone}`,className:"restaurant-action-btn restaurant-action-btn--primary",children:[e.jsx(ge,{className:"h-4 w-4"}),s("mallPlaces.detail.callNow")]}),x&&e.jsxs("a",{href:x,target:"_blank",rel:"noreferrer",className:"restaurant-action-btn restaurant-action-btn--primary",children:[e.jsx(je,{className:"h-4 w-4"}),s("mallPlaces.detail.getDirections")]}),!a.phone&&!x&&e.jsx(P,{to:"/malls",className:"restaurant-action-btn restaurant-action-btn--primary",children:s("mallPlaces.backToList")})]}),e.jsx(B,{}),e.jsx(we,{open:f,onOpenChange:j,children:e.jsxs(Pe,{className:"max-w-[min(92vw,56rem)] border-none bg-black/95 p-2 sm:p-4",children:[e.jsx(Me,{className:"sr-only",children:A||o}),h&&e.jsx("div",{className:"flex items-center justify-center",children:e.jsx("img",{src:h,alt:A||o,className:"max-h-[85vh] w-full rounded-lg object-contain"})})]})})]})};export{Wl 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.