PageSourceSearch

https://petwellhk.com/assets/SalonDetail-BNubpZ5h.js

js petwellhk.com collected 2026-10-06 05:23:09 UTC 5,196 bytes, 1 lines download raw bytes

1import{r as b,j as t,p as N,L as S}from"./react-vendor-BDHNqS4B.js";import{a as P,b as d}from"./Header-BkbupWq-.js";import{F as u}from"./Footer-CtylQEAH.js";import{u as $,n as k,B as L}from"./main-m_sUF2N4.js";import{b as I}from"./useSalons-CNBS-O3v.js";import{u as E}from"./useSEO-CoArDrdl.js";import{P as H}from"./PlaceDetailLayout-BNsti9P1.js";import{u as A}from"./hongKongDistricts--r8_jlh4.js";import{S as B}from"./skeleton-CDto_fTL.js";import{i as D}from"./placeSearchConfig-BfT0dFXT.js";import"./amplify-DYDcjoow.js";import"./chevron-right-CpkQxGj-.js";import"./check-DS0-tR9o.js";import"./tag-D40gy_Nl.js";import"./query-7-WHkg5t.js";import"./textarea-D7qsgB_p.js";import"./reportService-tEzofQZ6.js";import"./phone-B2rvvDkK.js";import"./type-CVgQCqWZ.js";import"./serviceOfferings-40B0fv7X.js";import"./card-U4xgiZnN.js";import"./badge-BYBBu8xB.js";import"./collapsible-XeBmzMPY.js";import"./index-BZFL-brE.js";import"./availableHours-DsyGI15X.js";import"./BusinessReviewReply-DaaGODlp.js";import"./ReviewAuthorLink-IWaLqPnT.js";import"./index-CFf87M6S.js";import"./userReviewApi-BPRYI5-q.js";import"./priceReviewApi-BFijUeFQ.js";import"./star-Dim9pf51.js";import"./image-plus--WXlfpIC.js";import"./chevron-left-Jw0Ezjn9.js";import"./checkbox-BkyFxaQM.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"./AppDownloadCTA-DAEixTy3.js";import"./PetWellVerifiedBadge-DpC4-twT.js";import"./PremiumPartnerBadge-Vc4azdA6.js";import"./sparkles-BcmYxR0H.js";import"./placeMaps-BMm8HyB6.js";import"./clock-CRHi7pcr.js";import"./calendar-check-D9qQBLib.js";import"./navigation-B9fVXvyH.js";function O({imageKey:r,alt:a,className:s=""}){const{imageUrl:e,isLoading:n,error:l}=A(r),[m,i]=b.useState(!1),o=()=>t.jsx("div",{className:`flex h-full w-full items-center justify-center bg-gradient-to-br from-primary/10 to-primary/5 ${s}`,children:t.jsx(P,{className:"h-10 w-10 text-primary/40"})});return r?n?t.jsx(B,{className:`h-full w-full ${s}`}):l||!e||m?t.jsx(o,{}):t.jsx("img",{src:e,alt:a,className:`block h-full w-full object-cover ${s}`,onError:()=>i(!0)}):t.jsx(o,{})}function j(r,a){var e,n;if(!r)return"";const s=a==="en"?"zh":"en";return((e=r[a])==null?void 0:e.trim())||((n=r[s])==null?void 0:n.trim())||""}const Ae=()=>{var g,x;const{salonId:r}=N(),{i18n:a,t:s}=$(),{data:e,isLoading:n,error:l}=I(r),m=a.language==="en"?"en":"zh",i=j(e==null?void 0:e.name,m),o=j(e==null?void 0:e.address,m),c=(e==null?void 0:e.district)||"",w=((g=e==null?void 0:e.serviceOfferings)==null?void 0:g.split(",").slice(0,3).join("、"))||"",y=b.useMemo(()=>{var h,v;if(e)return{"@context":"https://schema.org","@type":"LocalBusiness",name:i,address:{"@type":"PostalAddress",streetAddress:o,addressLocality:c,addressRegion:"Hong Kong"},telephone:e.phoneNo,email:e.email,url:`https://petwellhk.com/salons/${r}`,...e.totalRating&&{aggregateRating:{"@type":"AggregateRating",ratingValue:e.totalRating,bestRating:5,reviewCount:e.numReviews||0}},...((v=(h=e.reviews)==null?void 0:h.items)==null?void 0:v.length)&&{review:e.reviews.items.slice(0,3).map(p=>({"@type":"Review",reviewRating:{"@type":"Rating",ratingValue:p.totalRating,bestRating:5},reviewBody:p.description,datePublished:p.updatedAt}))}}},[e,r,i,o,c]);if(E({title:e?`${i} | 寵物美容評價、地址 | PetWell HK`:"寵物美容詳情 | PetWell HK",description:e?`${i}寵物美容評價、真實用家評論。地址:${o}。服務:${w}。`:"查看寵物美容店詳細資料、評價及服務",keywords:e?`${i}寵物美容,${i}評價,${e.district}寵物美容,寵物美容推薦`:"寵物美容,香港寵物美容",canonicalUrl:`https://petwellhk.com/salons/${r}`,ogImage:e==null?void 0:e.coverPhoto,structuredData:y}),n)return t.jsxs("div",{className:"min-h-screen flex flex-col",children:[t.jsx(d,{}),t.jsx("main",{className:"flex-1 py-16 md:py-20 flex items-center justify-center bg-gradient-hero",children:t.jsx(k,{className:"w-8 h-8 animate-spin text-primary"})}),t.jsx(u,{})]});if(l||!e)return t.jsxs("div",{className:"min-h-screen flex flex-col",children:[t.jsx(d,{}),t.jsx("main",{className:"flex-1 py-12 md:py-16 bg-gradient-hero",children:t.jsxs("div",{className:"container mx-auto px-4 text-center",children:[t.jsx("h1",{className:"text-2xl font-bold mb-4",children:s("salons.detail.notFound")}),t.jsx(S,{to:"/salons",children:t.jsx(L,{children:s("salons.backToList")})})]})}),t.jsx(u,{})]});const f=((x=e.reviews)==null?void 0:x.items)||[],R=e.numReviews||f.length;return t.jsxs("div",{className:"min-h-screen flex flex-col",children:[t.jsx(d,{}),t.jsx(H,{backTo:"/salons",name:i,address:o,district:c,coverImageKey:e.coverPhoto,gallery:e.gallery,verified:e.verified,isPremium:D(e),is247:e.is247,totalRating:e.totalRating,totalReviews:R,phoneNo:e.phoneNo,email:e.email,website:e.website,availableHours:e.availableHours,serviceOfferings:e.serviceOfferings,reviews:f,placeId:e.id,placeType:"salon",i18nNamespace:"salons",CoverImage:O,reservationSettings:e.reservationSettings,ownerSub:e.ownerSub}),t.jsx(u,{})]})};export{Ae 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.