PageSourceSearch

https://petwellhk.com/assets/RestaurantDetail-C3zGzeN0.js

js petwellhk.com collected 2026-10-06 05:23:06 UTC 34,220 bytes, 19 lines download raw bytes

1import{j as e,L as $,r as v,p as Ue}from"./react-vendor-BDHNqS4B.js";import{u as Ie,B as G,b as ge,a4 as ze,n as Ke,D as Ge,j as Ve,l as Ye}from"./main-m_sUF2N4.js";import{U as Qe,b as W,l as Ze,s as Je,e as Xe}from"./Header-BkbupWq-.js";import{I as et,M as tt,F as U,P as st}from"./Footer-CtylQEAH.js";import{C as at,a as rt,b as nt}from"./collapsible-XeBmzMPY.js";import{B as Pe,b as lt}from"./useRestaurants-DQ6cKGMa.js";import{i as it}from"./placeSearchConfig-BfT0dFXT.js";import{n as ot,g as ct,a as fe,l as je}from"./availableHours-DsyGI15X.js";import{u as dt}from"./useSEO-CoArDrdl.js";import{G as Se,W as V,R as mt,c as ut,r as xt,f as pt,a as ht,B as gt}from"./BusinessReviewReply-DaaGODlp.js";import{A as Ne}from"./AppDownloadCTA-DAEixTy3.js";import{R as ft,F as jt}from"./ReviewAuthorLink-IWaLqPnT.js";import{R as E}from"./RestaurantImage-CN6NkWJn.js";import{N as Nt}from"./NearbyRestaurants-Dk648Dmq.js";import{C as bt}from"./card-U4xgiZnN.js";import{B as P}from"./badge-BYBBu8xB.js";import{g as be,a as vt,b as yt,A as ve,c as ye,p as wt,d as Rt}from"./restaurantApi-J7TAaZ7f.js";import{S as At}from"./sparkles-BcmYxR0H.js";import{P as Y}from"./paw-print-BtMm-KXX.js";import{D as kt}from"./droplets-K-7uD6Hm.js";import{C as Ct}from"./camera-DiII9OQn.js";import{H as It}from"./heart-DRwCktcb.js";import{C as z}from"./chevron-left-Jw0Ezjn9.js";import{R as Pt}from"./RestaurantVerificationBadge-BvUGD2EG.js";import{P as St}from"./PremiumPartnerBadge-Vc4azdA6.js";import{C as Q}from"./clock-CRHi7pcr.js";import{S as Le}from"./star-Dim9pf51.js";import{P as Z}from"./phone-B2rvvDkK.js";import{N as Ee}from"./navigation-B9fVXvyH.js";import{G as Lt}from"./type-CVgQCqWZ.js";import{g as Et,a as $t}from"./placeMaps-BMm8HyB6.js";import{D as Ot}from"./door-open-DBssRldx.js";import{C as K}from"./calendar-check-D9qQBLib.js";import{C as Tt}from"./coffee-DvdZrCo4.js";import{T as Dt}from"./triangle-alert-1QSShUG6.js";import"./amplify-DYDcjoow.js";import"./query-7-WHkg5t.js";import"./chevron-right-CpkQxGj-.js";import"./check-DS0-tR9o.js";import"./tag-D40gy_Nl.js";import"./textarea-D7qsgB_p.js";import"./reportService-tEzofQZ6.js";import"./index-BZFL-brE.js";import"./hongKongDistricts--r8_jlh4.js";import"./distance-Bwcv1qLg.js";import"./image-plus--WXlfpIC.js";import"./checkbox-BkyFxaQM.js";import"./index-CFf87M6S.js";import"./popover-D22i846k.js";import"./select-fZgDq8v8.js";import"./chevron-up-Cb9C18fB.js";import"./circle-check-DgLC__8_.js";import"./minus-xARKY3S7.js";import"./plus-D0NAkfqS.js";import"./store-DWI30bPC.js";import"./badge-check-CHAeghjg.js";import"./userReviewApi-BPRYI5-q.js";import"./priceReviewApi-BFijUeFQ.js";import"./skeleton-CDto_fTL.js";import"./useNearbyRestaurants-DlbceyfQ.js";import"./PetWellVerifiedBadge-DpC4-twT.js";function $e({metadata:a,className:s}){var d;if(!a)return null;const n=(d=a.ratings)==null?void 0:d.google;return a.priceRange||(n==null?void 0:n.score)!=null?e.jsxs("div",{className:`flex flex-wrap gap-2 ${s??""}`,children:[a.priceRange&&e.jsxs("span",{className:"restaurant-rating-pill text-foreground",children:[e.jsx(Pe,{className:"h-3.5 w-3.5 text-primary","aria-hidden":!0}),a.priceRange]}),(n==null?void 0:n.score)!=null&&e.jsxs("span",{className:"restaurant-rating-pill text-foreground",children:[e.jsx(Se,{className:"h-3.5 w-3.5 shrink-0"}),n.score,n.count!=null&&e.jsxs("span",{className:"font-normal text-muted-foreground",children:["(",n.count,")"]})]})]}):null}const we={waterBowl:kt,dogMenu:Qe,photoArea:Ct,petTreats:It};function Mt({metadata:a,className:s,variant:n="card",omitQuickFacts:t=!1}){var g,i,f;const{t:d,i18n:N}=Ie(),c=N.language==="en"?"en":"zh";if(!a)return null;const o=be(a.types,c),m=be(a.cuisines,c),p=vt(a.dishStyles,c),h=yt(a),u=(g=a.ratings)==null?void 0:g.google,b=a.priceRange||(u==null?void 0:u.score),w=o.length>0||m.length>0||p.length>0,y=(f=(i=a.instagram)==null?void 0:i.handle)==null?void 0:f.replace(/^@/,"");if(!t&&!b&&!w&&h.length===0&&!y||t&&!w&&h.length===0&&!y)return null;const S=e.jsxs(e.Fragment,{children:[b&&!t&&n==="inline"&&e.jsx($e,{metadata:a}),b&&!t&&n==="card"&&e.jsxs("div",{className:"mb-4 grid grid-cols-2 gap-2 sm:grid-cols-3",children:[a.priceRange&&e.jsxs("div",{className:"rounded-lg border border-border/60 bg-card/90 px-3 py-2.5",children:[e.jsxs("div",{className:"mb-1 flex items-center gap-1.5 text-xs font-medium text-muted-foreground",children:[e.jsx(Pe,{className:"h-3.5 w-3.5 text-primary","aria-hidden":!0}),d("restaurant.import.priceRange")]}),e.jsx("p",{className:"text-sm font-semibold",children:a.priceRange})]}),(u==null?void 0:u.score)!=null&&e.jsxs("div",{className:"rounded-lg border border-border/60 bg-card/90 px-3 py-2.5",children:[e.jsxs("div",{className:"mb-1 flex items-center gap-1.5 text-xs font-medium text-muted-foreground",children:[e.jsx(Se,{className:"h-3.5 w-3.5 shrink-0"}),"Google"]}),e.jsxs("p",{className:"text-sm font-semibold",children:[u.score,u.count!=null&&e.jsxs("span",{className:"ml-1 font-normal text-muted-foreground",children:["(",u.count,")"]})]})]})]})]}),O=n==="inline"&&(w||h.length>0)?e.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[o.map(l=>e.jsx(P,{variant:"secondary",className:"rounded-md font-medium",children:l},`type-${l}`)),m.map(l=>e.jsx(P,{variant:"outline",className:"rounded-md text-muted-foreground",children:l},`cuisine-${l}`)),p.map(l=>e.jsx(P,{variant:"outline",className:"rounded-md border-primary/30 text-foreground",children:l},`dish-${l}`)),h.map(l=>{const A=we[l]??Y;return e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-border bg-muted/50 px-2.5 py-1 text-xs font-medium",children:[e.jsx(A,{className:"h-3.5 w-3.5 text-primary","aria-hidden":!0}),d(ve[l])]},l)})]}):null,R=w&&n==="card"&&e.jsxs("div",{className:"mb-4 space-y-2",children:[o.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:d("restaurant.import.types")}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:o.map(l
1=>e.jsx(P,{variant:"secondary",className:"rounded-md font-medium",children:l},l))})]}),m.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:d("restaurant.import.cuisines")}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:m.map(l=>e.jsx(P,{variant:"outline",className:"rounded-md text-muted-foreground",children:l},l))})]}),p.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"mb-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:d("restaurant.import.dishStyles")}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:p.map(l=>e.jsx(P,{variant:"outline",className:"rounded-md border-primary/30 text-foreground",children:l},l))})]})]}),I=h.length>0&&n==="card"&&e.jsxs("div",{className:"mb-4",children:[e.jsx("p",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:d("restaurant.import.amenitiesTitle")}),e.jsx("div",{className:"flex flex-wrap gap-2",children:h.map(l=>{const A=we[l]??Y;return e.jsxs("span",{className:"inline-flex items-center gap-1.5 rounded-full border border-border bg-muted/50 px-2.5 py-1 text-xs font-medium",children:[e.jsx(A,{className:"h-3.5 w-3.5 text-primary","aria-hidden":!0}),d(ve[l])]},l)})})]}),L=y?e.jsx("div",{className:"flex flex-wrap gap-2 pt-2",children:e.jsx(G,{asChild:!0,variant:"outline",size:"sm",className:"h-8 rounded-full text-xs",children:e.jsxs("a",{href:`https://instagram.com/${y}`,target:"_blank",rel:"noopener noreferrer",children:[e.jsx(et,{className:"mr-1.5 h-3.5 w-3.5"}),"@",y]})})}):null;return n==="inline"?e.jsxs("div",{className:s,children:[S,O,L]}):e.jsxs(bt,{className:`relative overflow-hidden border-primary/15 bg-gradient-to-br from-secondary/80 via-card to-secondary/40 p-5 md:p-6 shadow-soft ${s??""}`,children:[e.jsx("div",{className:"pointer-events-none absolute -right-8 -top-8 h-32 w-32 rounded-full bg-primary/5 blur-2xl","aria-hidden":!0}),e.jsxs("header",{className:"relative mb-4 flex items-start gap-3",children:[e.jsx("span",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-primary/10 text-primary",children:e.jsx(At,{className:"h-5 w-5","aria-hidden":!0})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-lg font-bold tracking-tight",children:d("restaurant.import.title")}),e.jsx("p",{className:"mt-0.5 text-sm text-muted-foreground",children:d("restaurant.import.subtitle")})]})]}),S,R,I,L]})}function Re({backLabel:a,coverImageKey:s,gallery:n,name:t,layout:d="mobile"}){const N=n!=null&&n.length?n:s?[s]:[],c=s||N[0],o=N.filter(u=>u!==c).slice(0,4),m=d==="desktop",p=m?"restaurant-hero restaurant-hero--desktop rounded-xl":"restaurant-hero",h=m?"restaurant-hero-media restaurant-hero-media--desktop":"restaurant-hero-media restaurant-hero-media--mobile";return c?o.length>=2?e.jsxs("div",{className:p,children:[e.jsx($,{to:"/restaurants",className:"restaurant-hero-back","aria-label":a,children:e.jsx(z,{className:"h-5 w-5"})}),e.jsxs("div",{className:m?"restaurant-hero-media restaurant-hero-media--desktop grid grid-cols-4 grid-rows-2 gap-0.5 md:gap-1":"restaurant-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:"restaurant-gallery-tile col-span-2 row-span-2",children:e.jsx(E,{imageKey:c,alt:t,className:"h-full w-full"})}),o.slice(0,2).map((u,b)=>e.jsx("div",{className:"restaurant-gallery-tile",children:e.jsx(E,{imageKey:u,alt:`${t} - ${b+2}`,className:"h-full w-full"})},u)),o.length>=3?e.jsxs("div",{className:"restaurant-gallery-tile relative",children:[e.jsx(E,{imageKey:o[2],alt:`${t} - 4`,className:"h-full w-full"}),o.length>3&&e.jsxs("div",{className:"absolute inset-0 flex items-center justify-center bg-black/45 text-sm font-semibold text-white",children:["+",o.length-2]})]}):e.jsx("div",{className:"restaurant-gallery-tile bg-muted"}),o.length>=4?e.jsx("div",{className:"restaurant-gallery-tile",children:e.jsx(E,{imageKey:o[3],alt:`${t} - 5`,className:"h-full w-full"})}):e.jsx("div",{className:"restaurant-gallery-tile bg-muted"})]})]}):e.jsxs("div",{className:p,children:[e.jsx($,{to:"/restaurants",className:"restaurant-hero-back","aria-label":a,children:e.jsx(z,{className:"h-5 w-5"})}),e.jsx("div",{className:`${h} restaurant-hero-media--cover`,children:e.jsx(E,{imageKey:c,alt:t,className:"h-full w-full"})})]}):e.jsxs("div",{className:p,children:[e.jsx($,{to:"/restaurants",className:"restaurant-hero-back","aria-label":a,children:e.jsx(z,{className:"h-5 w-5"})}),e.jsx("div",{className:`${h} flex items-center justify-center bg-muted text-sm text-muted-foreground`,children:"No photo"})]})}function Ht({sections:a,className:s}){var N;const[n,t]=v.useState(((N=a[0])==null?void 0:N.id)??"overview");v.useEffect(()=>{const c=[];return a.forEach(({id:o})=>
1{const m=document.getElementById(o);if(!m)return;const p=new IntersectionObserver(h=>{h.forEach(u=>{u.isIntersecting&&t(o)})},{rootMargin:"-40% 0px -45% 0px",threshold:0});p.observe(m),c.push(p)}),()=>c.forEach(o=>o.disconnect())},[a]);const d=c=>{const o=document.getElementById(c);if(!o)return;const m=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--header-height"))||72,p=o.getBoundingClientRect().top+window.scrollY-m-48;window.scrollTo({top:p,behavior:"smooth"}),t(c)};return e.jsx("nav",{className:ge("restaurant-section-nav",s),"aria-label":"Page sections",children:e.jsx("div",{className:"flex overflow-x-auto scrollbar-none",children:a.map(({id:c,label:o})=>e.jsx("button",{type:"button","data-active":n===c,className:ge("restaurant-nav-tab"),onClick:()=>d(c),children:o},c))})})}function Ae({name:a,district:s,todayHours:n,is247:t,verified:d,isPremium:N,fehdLicensed:c,listingAlert:o,totalRating:m,totalReviews:p,importMetadata:h,phoneNo:u,website:b,mapsUrl:w,callLabel:y,directionsLabel:S,websiteLabel:O,open247Label:R,reviewsLabel:I,layout:L="mobile",placeId:g,placeName:i}){const f=L==="desktop";return e.jsxs("div",{className:`flex flex-col ${f?"gap-5":""}`,children:[e.jsxs("div",{children:[e.jsxs("div",{className:"mb-2 flex flex-wrap items-center gap-2",children:[N&&e.jsx(St,{}),e.jsx(Pt,{verified:d,fehdLicensed:c,listingAlert:o,externalMetadata:h}),t&&e.jsxs(P,{variant:"secondary",className:"font-medium",children:[e.jsx(Q,{className:"mr-1 h-3 w-3"}),R]})]}),e.jsx("h1",{className:`font-bold leading-snug ${f?"text-2xl xl:text-[2rem] xl:leading-tight":"text-xl md:text-2xl"}`,children:a}),e.jsxs("div",{className:`mt-2.5 flex flex-wrap items-center gap-x-3 gap-y-1.5 text-muted-foreground ${f?"text-base":"text-sm"}`,children:[e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(tt,{className:"h-4 w-4 shrink-0 text-primary","aria-hidden":!0}),s]}),(n||t)&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-border","aria-hidden":!0,children:"·"}),e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[e.jsx(Q,{className:"h-4 w-4 shrink-0","aria-hidden":!0}),n||R]})]})]}),e.jsxs("div",{className:`mt-4 flex flex-wrap items-center gap-3 ${f?"gap-4":""}`,children:[m&&m>0&&e.jsxs("div",{className:"flex items-center gap-2.5",children:[e.jsx("span",{className:`restaurant-score font-bold leading-none text-primary ${f?"text-4xl":"text-3xl"}`,children:m.toFixed(1)}),e.jsxs("div",{children:[e.jsx("div",{className:"flex gap-0.5",children:[...Array(5)].map((l,A)=>e.jsx(Le,{className:`h-4 w-4 ${A<Math.round(m)?"fill-primary text-primary":"text-muted"}`,"aria-hidden":!0},A))}),p>0&&e.jsxs("p",{className:"mt-0.5 text-xs text-muted-foreground",children:[p," ",I]})]})]}),e.jsx($e,{metadata:h})]})]}),e.jsxs("div",{className:f?"grid grid-cols-2 gap-2":"mt-5 hidden gap-2 md:grid md:grid-cols-2 lg:hidden",children:[u&&e.jsxs("a",{href:`tel:${u}`,className:"restaurant-action-btn restaurant-action-btn--primary",children:[e.jsx(Z,{className:"h-4 w-4"}),y]}),e.jsxs("a",{href:w,target:"_blank",rel:"noopener noreferrer",className:"restaurant-action-btn",children:[e.jsx(Ee,{className:"h-4 w-4 text-primary"}),S]}),e.jsx(V,{placeType:"restaurant",placeId:g,placeName:i,buttonVariant:"outline",className:"restaurant-action-btn"}),b&&e.jsxs("a",{href:b,target:"_blank",rel:"noopener noreferrer",className:"restaurant-action-btn",children:[e.jsx(Lt,{className:"h-4 w-4 text-primary"}),O]})]})]})}const Bt=`
2  mutation CreateRestaurantReservation($input: CreateRestaurantReservationInput!) {
3    createRestaurantReservation(input: $input) {
4      id
5      restaurantId
6      customerName
7      customerPhone
8      customerEmail
9      reservationAt
10      partySize
11      petCount
12      petSummary
13      specialRequest
14      status
15      createdAt
16      updatedAt
17    }
18  }
19`,ke=a=>{const s=a==null?void 0:a.trim();return s||void 0};async function _t(a){const s=a.customerEmail.trim().toLowerCase();if(!s)throw new Error("Customer email is required");const n=await ze(Bt,{input:{restaurantId:a.restaurantId,customerName:a.customerName.trim(),customerPhone:a.customerPhone.trim(),customerEmail:s,reservationAt:a.reservationAt,partySize:a.partySize,petCount:a.petCount??0,petSummary:ke(a.petSummary),specialRequest:ke(a.specialRequest)}},{authMode:"apiKey"});if(!(n!=null&&n.createRestaurantReservation))throw new Error("Reservation was not returned by server.");return n.createRestaurantReservation}const qt=({open:a,onOpenChange:s,restaurantId:n,restaurantName:t,reservationSettings:d})=>{const N=async c=>{await _t({restaurantId:n,...c})};return e.jsx(mt,{open:a,onOpenChange:s,placeName:t,reservationSettings:d,onSubmit:N})},Ce=["mon","tue","wed","thu","fri","sat","sun"];function H(a,s){if(!a)return"";const n=s==="en"?"zh":"en";return a[s]||a[n]||""}const Qs=()=>{var ie,oe,ce,de,me,ue;const{restaurantId:a}=Ue(),{t:s,i18n:n}=Ie(),{data:t,isLoading:d,error:N}=lt(a,n.language),[c,o]=v.useState(!1),[m,p]=v.useState(!1),[h,u]=v.useState(!1),[b,w]=v.useState(null),[y,S]=v.useState(""),[O,R
19]=v.useState(!1),I=ut(t==null?void 0:t.ownerSub,t==null?void 0:t.reservationSettings),L=v.useCallback(r=>{const j=r.target.closest("img");if(!j||j.closest("a")||j.naturalWidth&&j.naturalWidth<80)return;const C=j.currentSrc||j.getAttribute("src");C&&(r.preventDefault(),w(C),S(j.getAttribute("alt")||""),u(!0))},[]),g=n.language==="en"?"en":"zh",i=H(t==null?void 0:t.name,g),f=H(t==null?void 0:t.address,g),l=(t==null?void 0:t.district)||"",A=v.useMemo(()=>{if(!t)return[];const r=t.petAccessArea==="INDOOR_ALLOWED";return[{question:s("restaurants.detail.faq.q1",{name:i}),answer:s("restaurants.detail.faq.a1",{name:i,policy:s(r?"restaurant.petAccessArea.indoorAllowed":"restaurant.petAccessArea.outdoorOnly")})},{question:s("restaurants.detail.faq.q2",{name:i}),answer:s("restaurants.detail.faq.a2")},{question:s("restaurants.detail.faq.q3",{name:i}),answer:s("restaurants.detail.faq.a3")}]},[t,i,s]),Oe=v.useMemo(()=>{var C,T;if(!t)return;const r=`https://petwellhk.com/restaurants/${a}/`,x=[];t.petAccessArea==="INDOOR_ALLOWED"&&x.push("Indoor pet access"),t.puppuccino&&x.push("Puppuccino");const j=ye({totalRating:t.totalRating,externalMetadata:t.externalMetadata,combinedRating:t.combinedRating});return[{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"PetWell HK",item:"https://petwellhk.com/"},{"@type":"ListItem",position:2,name:s("restaurants.pageTitle"),item:"https://petwellhk.com/restaurants"},{"@type":"ListItem",position:3,name:i,item:r}]},{"@context":"https://schema.org","@type":"Restaurant",name:i,petsAllowed:!0,address:{"@type":"PostalAddress",streetAddress:f,addressLocality:l,addressRegion:"Hong Kong",addressCountry:"HK"},telephone:t.phoneNo,url:r,servesCuisine:"Pet Friendly Dining",...x.length>0&&{amenityFeature:x.map(M=>({"@type":"LocationFeatureSpecification",name:M,value:!0}))},...j!=null&&{aggregateRating:{"@type":"AggregateRating",ratingValue:j,bestRating:5}},...t.coverPhoto&&{image:t.coverPhoto},...((C=t.location)==null?void 0:C.lat)&&((T=t.location)==null?void 0:T.lon)&&{geo:{"@type":"GeoCoordinates",latitude:t.location.lat,longitude:t.location.lon}}}]},[t,a,i,f,l,s]);dt({title:t?`${i} | ${l}寵物友善餐廳 | PetWell HK`:"寵物友善餐廳詳情 | PetWell HK",description:t?`${i}係${l}寵物友善餐廳,經PetWell認證。${t.petAccessArea==="INDOOR_ALLOWED"?"可帶狗入室內":"戶外用餐區"}。適合帶狗食飯前確認政策。地址:${f}。`:"查看寵物友善餐廳詳細資料及寵物政策",keywords:t?`${i}寵物友善,${l}帶狗餐廳,${l}帶狗食飯,${i}帶狗,寵物友善餐廳推薦,狗隻友善食肆`:"寵物友善餐廳,帶狗餐廳,帶狗食飯",canonicalUrl:`https://petwellhk.com/restaurants/${a}/`,ogImage:t==null?void 0:t.coverPhoto,structuredData:Oe,faqItems:A,speakableSelectors:["h1",".restaurant-decision",".faq-answer"]});const Te=r=>{switch(r){case"WALK_IN_ONLY":return s("restaurant.petEntryPolicy.walkInOnly");case"RESERVATION_REQUIRED":return s("restaurant.petEntryPolicy.reservationRequired");case"BOTH":return s("restaurant.petEntryPolicy.both");case"UNKNOWN":case void 0:return null;default:return r}},De=r=>{switch(r){case"INDOOR_ALLOWED":return s("restaurant.petAccessArea.indoorAllowed");case"OUTDOOR_ONLY":return s("restaurant.petAccessArea.outdoorOnly");case"UNKNOWN":case void 0:return null;default:return r}};if(d)return e.jsxs("div",{className:"restaurant-page min-h-screen flex flex-col",children:[e.jsx(W,{}),e.jsx("main",{className:"flex-1 py-16 md:py-20 flex items-center justify-center",children:e.jsx(Ke,{className:"w-8 h-8 animate-spin text-primary"})}),e.jsx(U,{})]});if(N||!t)return e.jsxs("div",{className:"restaurant-page min-h-screen flex flex-col",children:[e.jsx(W,{}),e.jsx("main",{className:"flex-1 py-12 md:py-16",children:e.jsxs("div",{className:"container mx-auto px-4 text-center",children:[e.jsx("h1",{className:"text-2xl font-bold mb-4",children:s("restaurants.detail.notFound")}),e.jsx($,{to:"/restaurants",children:e.jsx(G,{children:s("restaurants.backToList")})})]})}),e.jsx(U,{})]});const k=t.availableHours?ot(t.availableHours):null,B=[...((ie=t.reviews)==null?void 0:ie.items)||[]].sort((r,x)=>Date.parse(x.updatedAt||"")-Date.parse(r.updatedAt||"")).slice(0,50),Me=((ce=(oe=t.reviews)==null?void 0:oe.items)==null?void 0:ce.length)||0,J=t.coverPhoto||((de=t.gallery)==null?void 0:de[0]),X=De(t.petAccessArea),ee=Te(t.petEntryPolicy),_=H(t.petPolicyNotes,g),te=H(t.listingAlert,g),se=ct(t.availableHours,t.is247,s),ae=Et(f,t.location),He=$t(f,t.location),q=t.gallery??[],re=q.length>=3?q.slice(5):q.slice(1),Be=re.length>0,ne=wt(t.externalMetadata),_e=ye({totalRating:t.totalRating,externalMetadata:t.externalMetadata,combinedRating:t.combinedRating}),F=[X?{icon:Ot,label:X,tone:"bg-emerald-50 text-emerald-800 border-emerald-200"}:null,ee?{icon:K,label:ee,tone:"bg-sky-50 text-sky-800 border-sky-200"}:null,t.puppuccino?{icon:Tt,label:"Puppuccino",tone:"bg-lime-50 text-lime-800 border-lime-200"}
19:null].filter(Boolean),qe=F.length>0||!!_,Fe=[{id:"overview",label:s("restaurants.detail.sections.overview")},{id:"reviews",label:s("restaurants.detail.sections.reviews")},{id:"info",label:s("restaurants.detail.sections.info")}],We=g==="en"?"reviews":"則評論",le={name:i,district:l,todayHours:se,is247:t.is247,verified:t.verified,isPremium:it(t),fehdLicensed:t.fehdLicensed,listingAlert:t.listingAlert,totalRating:_e??void 0,totalReviews:Me,importMetadata:ne,phoneNo:t.phoneNo,website:Rt(t.website),mapsUrl:ae,callLabel:s("restaurants.detail.callNow"),directionsLabel:s("restaurants.detail.getDirections"),websiteLabel:s("restaurants.detail.visitWebsite"),open247Label:s("hours.open247"),reviewsLabel:We,placeId:t.id,placeName:i};return e.jsxs("div",{className:"restaurant-page min-h-screen flex flex-col",children:[e.jsx(W,{}),e.jsxs("main",{className:"flex-1",onClick:L,children:[e.jsx("div",{className:"lg:hidden",children:e.jsx(Re,{backLabel:s("restaurants.backToList"),coverImageKey:J,gallery:t.gallery,name:i})}),e.jsxs("div",{className:"restaurant-shell",children:[e.jsxs("nav",{className:"restaurant-breadcrumb hidden lg:flex lg:pt-6","aria-label":"Breadcrumb",children:[e.jsx($,{to:"/",className:"transition-colors hover:text-primary",children:"PetWell HK"}),e.jsx("span",{className:"restaurant-breadcrumb-sep","aria-hidden":!0,children:"/"}),e.jsx($,{to:"/restaurants",className:"transition-colors hover:text-primary",children:s("restaurants.pageTitle")}),e.jsx("span",{className:"restaurant-breadcrumb-sep","aria-hidden":!0,children:"/"}),e.jsx("span",{className:"truncate font-medium text-foreground",children:i})]}),e.jsxs("div",{className:"restaurant-desktop-header",children:[e.jsx(Re,{backLabel:s("restaurants.backToList"),coverImageKey:J,gallery:t.gallery,name:i,layout:"desktop"}),e.jsx("section",{className:"restaurant-panel restaurant-identity-desktop",children:e.jsx(Ae,{...le,layout:"desktop"})})]}),e.jsx("section",{className:"restaurant-panel relative z-10 -mt-5 p-4 lg:hidden md:-mt-6 md:p-6",children:e.jsx(Ae,{...le,layout:"mobile"})}),e.jsxs("p",{className:"mt-4 text-center text-sm text-muted-foreground",children:[g==="zh"?"這是你的餐廳?":"Is this your restaurant? ",e.jsx("a",{href:"https://partner.petwellhk.com/select-type",target:"_blank",rel:"noreferrer",className:"font-medium text-primary underline underline-offset-4 hover:text-primary/80",children:g==="zh"?"前往 PetWell 商戶平台管理餐廳專頁。":"Manage your listing on PetWell Partner."})]}),e.jsxs("div",{className:"restaurant-content-grid lg:mt-6",children:[e.jsxs("div",{className:"min-w-0 lg:flex lg:flex-col",children:[e.jsx(Ht,{sections:Fe,className:"restaurant-section-nav--desktop"}),e.jsxs("div",{className:"restaurant-main-column mt-4 space-y-6 lg:mt-0 lg:space-y-8",children:[e.jsxs("section",{id:"overview",className:"scroll-mt-36 max-lg:restaurant-panel max-lg:p-4 max-lg:md:p-6 lg:scroll-mt-28",children:[e.jsx(Mt,{metadata:ne,variant:"inline",omitQuickFacts:!0}),te&&e.jsxs("div",{role:"alert",className:"mt-6 rounded-xl border border-red-200 bg-red-50 p-4 md:p-5",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2 text-red-800",children:[e.jsx(Dt,{className:"h-5 w-5 shrink-0","aria-hidden":!0}),e.jsx("h2",{className:"text-base font-bold md:text-lg",children:s("restaurant.notPetFriendly")})]}),e.jsx("p",{className:"text-sm leading-relaxed text-red-900/90 md:text-[15px]",children:te})]}),qe&&e.jsxs("div",{className:"restaurant-pet-banner mt-6 rounded-xl p-4 md:p-5",children:[e.jsxs("div",{className:"mb-3 flex items-center gap-2",children:[e.jsx("span",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-emerald-100 text-emerald-700",children:e.jsx(Y,{className:"h-4 w-4","aria-hidden":!0})}),e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-bold md:text-lg",children:s("restaurants.detail.decisionTitle")}),e.jsx("p",{className:"text-xs text-muted-foreground md:text-sm",children:s("restaurants.detail.decisionSubtitle")})]})]}),F.length>0&&e.jsx("div",{className:"flex flex-wrap gap-2",children:F.map(({icon:r,label:x,tone:j})=>e.jsxs("span",{className:`inline-flex items-center gap-2 rounded-lg border px-3 py-2 text-sm font-semibold ${j}`,children:[e.jsx(r,{className:"h-4 w-4 shrink-0","aria-hidden":!0}),x]},x))}),_&&e.jsx("p",{className:"mt-3 rounded-lg border border-emerald-100 bg-white/60 px-3 py-2.5 text-sm leading-relaxed text-foreground
19/80",children:_})]}),Be&&e.jsxs("div",{className:"mt-6 border-t border-border pt-6",children:[e.jsx("h3",{className:"mb-3 text-sm font-bold lg:text-base",children:s("restaurants.gallery")}),e.jsx("div",{className:"restaurant-gallery-grid",children:re.map((r,x)=>e.jsx("div",{className:"restaurant-gallery-tile aspect-square rounded-md",children:e.jsx(E,{imageKey:r,alt:`${i} - ${x+1}`,className:"h-full w-full"})},r))})]})]}),e.jsxs("section",{id:"reviews",className:"scroll-mt-36 max-lg:restaurant-panel max-lg:p-4 max-lg:md:p-6 lg:scroll-mt-28",children:[e.jsxs("header",{className:"mb-4 flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-bold md:text-lg lg:text-xl",children:s("restaurants.detail.reviewsTitle")}),e.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground lg:text-sm",children:s("restaurants.detail.reviewsSubtitle")})]}),e.jsx(V,{placeType:"restaurant",placeId:t.id,placeName:i})]}),B.length>0?e.jsx("div",{className:"restaurant-review-list",children:B.map(r=>{var C,T,M,xe,pe;const x=Math.max(0,Math.min(5,Math.round(r.totalRating||0))),j=((C=r.reviewer)==null?void 0:C.displayName)||((T=r.reviewer)==null?void 0:T.firstName)||Ze(r.source,r.title);return e.jsx("article",{className:"restaurant-review-card",children:e.jsx("div",{className:"flex gap-3",children:e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"mb-1.5",children:e.jsx(ft,{reviewerId:r.reviewerId||((M=r.reviewer)==null?void 0:M.id),anonymous:r.anonymous,source:r.source,displayName:j,profileImage:(xe=r.reviewer)==null?void 0:xe.profileImage})}),e.jsx("div",{className:"flex gap-0.5 mb-1.5","aria-label":`Rating ${x} stars`,children:[...Array(5)].map((he,D)=>e.jsx(Le,{className:`h-3.5 w-3.5 ${D<x?"fill-primary text-primary":"text-muted"}`,"aria-hidden":!0},D))}),Je(r.title,j)&&e.jsx("h3",{className:"font-semibold text-sm mb-1",children:r.title}),r.description?e.jsx("p",{className:"text-sm leading-relaxed text-foreground/90",children:r.description}):e.jsx("p",{className:"text-sm text-muted-foreground",children:s("restaurants.detail.reviewsEmpty")}),r.fileAttachments&&r.fileAttachments.length>0&&e.jsx("div",{className:"mt-2 flex gap-1.5 flex-wrap",children:r.fileAttachments.map((he,D)=>e.jsx("img",{src:xt(he),alt:`Review photo ${D+1}`,className:"h-16 w-16 rounded-md object-cover lg:h-20 lg:w-20"},D))}),e.jsxs("p",{className:"mt-2 text-xs text-muted-foreground flex flex-wrap items-center gap-x-2",children:[e.jsx("time",{dateTime:r.updatedAt,children:pt(new Date(r.updatedAt),g==="en"?"MMM d, yyyy":"yyyy年MM月dd日")}),e.jsx(ht,{source:r.source})]}),(pe=r.partnerReply)!=null&&pe.trim()?e.jsx(gt,{reply:r.partnerReply,repliedAt:r.partnerReplyAt,placeName:i,label:s("restaurants.detail.businessReply"),fromLabel:s("restaurants.detail.businessReplyFrom"),officialBadge:s("restaurants.detail.businessReplyOfficial"),lang:g}):null]})})},r.id)})}):e.jsx(V,{placeType:"restaurant",placeId:t.id,placeName:i,variant:"empty"}),B.length>=3&&e.jsx("div",{className:"mt-4 rounded-lg bg-secondary/60 p-4",children:e.jsx(Ne,{title:g==="en"?"Want more reviews?":"想睇更多評論?",description:g==="en"?"Download PetWell to read all reviews":"下載 PetWell App 睇曬全部評論"})})]})]})]}),e.jsxs("aside",{id:"info",className:"restaurant-sidebar-desktop scroll-mt-36",children:[e.jsxs("div",{className:"restaurant-panel space-y-4 p-4 md:p-5 lg:p-6",children:[e.jsx("h2",{className:"text-base font-bold lg:text-lg",children:s("restaurants.detail.planVisit")}),I&&e.jsxs(G,{type:"button",className:"w-full gap-2",onClick:()=>R(!0),children:[e.jsx(K,{className:"h-4 w-4","aria-hidden":!0}),s("restaurantReservation.cta")]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1",children:s("restaurants.address")}),e.jsx("p",{className:"text-sm leading-relaxed",children:f})]}),e.jsx("div",{className:"overflow-hidden rounded-lg border bg-muted lg:aspect-[16/11] aspect-[4/3]",children:e.jsx("iframe",{title:`${i} — ${s("restaurants.address")}`,src:He,className:"h-full w-full border-0",loading:"lazy",referrerPolicy:"no-referrer-when-downgrade",allowFullScreen:!0})}),t.phoneNo&&e.jsxs("div",{className:"flex items-center justify-between gap-3 text-sm",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[e.jsx(Z,{className:"h-4 w-4 shrink-0 text-primary","aria-hidden":!0}),e.jsx("span",{className:"font-medium",children:s("restaurants.phone")})]}),e.jsx("a",{href:`tel:${t.phoneNo}`,className:"shrink-0 font-semibold text-primary hover:underline",children:t.phoneNo})]}),(t.is247||k)&&e.jsxs("div",{className:"border-t border-border pt-3",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx(Q,{className:"h-4 w-4 text-primary","aria-hidden":!0}),e.jsx("span",{className:"text-sm font-bold",children:s("restaurants.openingHours")})]}),e.jsxs("p",{className:"mb-2 text-sm",children:[e.jsxs("span",{className:"font-medium",children:[s("restaurants.detail.todayHours"),":"]}),e.jsx("span",{className:"text-muted-foreground",children:se||(t.is247?s("hours.open247"):s("restaurants.detail.noHoursToday"))})]}),!t.is247&&k&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"restaurant-hours-desktop",children:[e.jsx("div",{className:"space-y-1 rounded-lg bg-muted/50 p-3",children:Ce.map(r=>{const x=fe(k,r);return e.jsxs("div",{className:"flex justify-between gap-3 py-0.5 text-sm",children:[e.jsx("span",{className:"font-medium",children:s(`hours.${r}`)}),e.jsx("span",{className:"text-right text-muted-foreground",children:x||s("restaurants.closed")})]},r)})}),k.otherConditions&&e.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:je(k.otherConditions,n.language)})]}),e.jsx("div",{className:"restaurant-hours-mobile",children:e.jsxs(at,{open:m,onOpenChange:p,children:[e.jsxs(rt,{className:"inline-flex items-center text-sm font-medium text-primary hover:text-primary/80",children:[s(m?"restaurants.detail.hideFullHours":"restaurants.detail.viewFullHours"),e.jsx(Xe,{className:`ml-1 h-4 w-4 transition-transform ${m?"rotate-180":""}`,"aria-hidden":!0})]}),e.jsxs(nt,{className:"mt-2",children:[e.jsx("div",{className:"space-y-1 rounded-lg bg-muted/50 p-3",children:Ce.map(r=>{const x=fe(k,r);return e.jsxs("div",{className:"flex justify-between gap-3 py-0.5 text-sm",children:[e.jsx("span",{className:"font-medium",children:s(`hours.${r}`)}),e.jsx("span",{className:"text-right text-muted-foreground",children:x||s("restaurants.closed")})]},r)})}),k.otherConditions&&e.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:je(k.otherConditions,n.language)})]})]})})]})]})]}),e.jsxs("p",{className:"text-center text-xs text-muted-foreground px-2",children:[s("restaurants.detail.suggestEditPrompt")," ",e.jsxs("button",{type:"button",onClick:()=>o(!0),className:"inline-flex items-center gap-1 text-primary hover:underline font-medium",children:[e.jsx(jt,{className:"h-3 w-3","aria-hidden":!0}),s("restaurants.detail.suggestEdit")]})]}),e.jsx("div",{className:"restaurant-panel p-4 hidden lg:block",children:e.jsx(Ne,{title:s("restaurants.ctaTitle"),description:s("restaurants.ctaDescription")})})]})]}),(me=t.location)!=null&&me.lat&&((ue=t.location)!=null&&ue.lon)?e.jsx("section",{className:"mt-8 pb-6",children:e.jsx(Nt,{eventLat:t.location.lat,eventLon:t.location.lon,language:n.language,radiusKm:3,excludeRestaurantId:t.id,variant:"detail",title:s("restaurants.detail.nearbyTitle"),subtitle:s("restaurants.detail.nearbySubtitle",{district:l})})}):null]})]}),e.jsxs("div",{className:"restaurant-mobile-bar md:hidden",role:"toolbar","aria-label":"Quick actions",children:[I&&e.jsxs("button",{type:"button",onClick:()=>R(!0),className:"restaurant-action-btn restaurant-action-btn--primary",children:[e.jsx(K,{className:"h-4 w-4"}),s("restaurantReservation.ctaShort")]}),t.phoneNo&&e.jsxs("a",{href:`tel:${t.phoneNo}`,className:"restaurant-action-btn",children:[e.jsx(Z,{className:"h-4 w-4"}),s("restaurants.detail.callNow")]}),e.jsxs("a",{href:ae,target:"_blank",rel:"noopener noreferrer",className:"restaurant-action-btn",children:[e.jsx(Ee,{className:"h-4 w-4 text-primary"}),s("restaurants.detail.getDirections")]})]}),e.jsx(U,{}),I&&e.jsx(qt,{open:O,onOpenChange:R,restaurantId:t.id,restaurantName:i,reservationSettings:t.reservationSettings}),e.jsx(Ge,{open:h,onOpenChange:u,children:e.jsxs(Ve,{className:"max-w-[min(92vw,56rem)] border-none bg-black/95 p-2 sm:p-4",children:[e.jsx(Ye,{className:"sr-only",children:y||"Zoom image"}),b&&e.jsx("div",{className:"flex items-center justify-center",children:e.jsx("img",{src:b,alt:y,className:"max-h-[85vh] w-full rounded-lg object-contain"})})]})}),e.jsx(st,{open:c,onOpenChange:o,placeId:t.id,placeName:i,placeType:"restaurant"})]})};export{Qs 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.