PageSourceSearch

https://www.hellocity.com/assets/HomeV2Page-CV4lgGHo.js

js hellocity.com collected 2026-09-25 03:41:11 UTC 28,972 bytes, 257 lines download raw bytes

1import{dl as xt,d9 as bt,dp as ft,d8 as vt,dk as wt,aD as Q,de as yt,aA as kt,ci as d,dq as jt,aV as Ct,cr as X,b0 as J,a$ as B,bj as It,aZ as St,bL as zt,db as Rt,cP as At,bK as t,a9 as r,an as Et,d4 as tt,cW as Ft,cQ as Tt,aq as Mt,c3 as Nt,ap as Pt,ar as Lt,cV as et,A as Bt,R as Ot,e as $t,i as Ht,V as _t,h as C,M as Dt,dh as Vt,N as Ut,n as Wt,cM as qt,b2 as Zt}from"./index-wbf3bFBm.js";import{c as Yt}from"./neighborhoodCenters-CliHtHdx.js";import{u as Gt,a as Kt}from"./usePersonalizedFeed-C7SQzcBt.js";import{u as Qt}from"./useHydratedFeedItems-Dd4Lad7p.js";import{u as Xt}from"./useVisitingFeed-CyXGOQHA.js";import{h as Jt,g as te}from"./visitingFeedSource-CmzXPBCi.js";import{V as it}from"./VisitingFeedBanner-l1C0vUeY.js";import{u as ee}from"./usePersonalizedAskChips-BEOVqnhk.js";import"./feedStatus-CQUpqpJ-.js";import"./feedNearMe-DYEM62gE.js";function O(s){return s.toLowerCase().trim().replace(/[\s-]+/g,"_")}function ot(s,p){if(!p)return s;const l=O(p);return s.filter(u=>{var x;return(x=u.forYouTags)==null?void 0:x.some(w=>w&&O(w)===l)})}function at({children:s,flush:p=!1}){return t.jsx("section",{style:{background:r.surface,border:"1px solid #dcdcdc",borderRadius:r.radiusCard,padding:p?"12px 0":12,display:"flex",flexDirection:"column",gap:p?4:11,overflow:"hidden"},children:s})}function nt({title:s,sub:p,action:l,onAction:u,pad:x=!1}){return t.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:10,padding:x?"0 14px":0},children:[t.jsxs("div",{children:[t.jsx("h2",{style:{margin:0,fontFamily:r.fontHead,fontSize:15,fontWeight:600,letterSpacing:"-.2px",lineHeight:1.25},children:s}),p?t.jsx("p",{style:{margin:"2px 0 0",fontSize:12.5,color:r.textMeta},children:p}):null]}),l?t.jsx("button",{type:"button",onClick:u,style:{display:"inline-flex",alignItems:"center",gap:4,border:`1px solid ${r.yellow}`,background:r.yellow,color:r.ink,fontSize:12.5,fontWeight:700,borderRadius:r.radiusPill,padding:"5px 12px",whiteSpace:"nowrap",cursor:"pointer",fontFamily:r.fontBody},children:l}):null]})}function rt({label:s,tone:p="dark",onClick:l}){return t.jsx("button",{type:"button",onClick:l,style:{border:"1px solid #dcdcdc",width:"100%",borderRadius:r.radiusPill,padding:"7px 14px",fontSize:13.5,lineHeight:1.25,fontWeight:700,fontFamily:r.fontBody,background:p==="dark"?r.ink2:r.yellow,color:p==="dark"?"#fff":r.ink,cursor:"pointer"},children:s})}const ie={disableDefaultUI:!0,gestureHandling:"none",keyboardShortcuts:!1,clickableIcons:!1,draggable:!1,zoomControl:!1,disableDoubleClickZoom:!0};function st({count:s,city:p,center:l,onOpen:u}){const{isLoaded:x}=Vt({id:"hc-map-v2-loader",googleMapsApiKey:"AIzaSyCrLPmZwOqhD8iZz1_zrjQTYAwUmnXjIME"});return t.jsxs("button",{type:"button",onClick:u,"aria-label":`${s} picks near your home neighborhood in ${p}`,style:{position:"relative",borderRadius:r.radiusCard,overflow:"hidden",background:"#e9eee8",border:"1px solid #dcdcdc",minHeight:92,display:"flex",alignItems:"flex-end",padding:8,cursor:"pointer",font:"inherit",textAlign:"left"},children:[!0&&x?t.jsx("div",{style:{position:"absolute",inset:0,pointerEvents:"none"},children:t.jsx(Ut,{mapContainerStyle:{width:"100%",height:"100%"},center:l,zoom:12,options:ie})}):t.jsx("img",{src:"https://tile.openstreetmap.org/11/567/872.png",alt:"","aria-hidden":!0,loading:"lazy",decoding:"async",style:{position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"cover",objectPosition:"52% 46%"}}),t.jsxs("span",{"aria-hidden":!0,style:{position:"absolute",left:"50%",top:"46%",transform:"translate(-50%,-50%)",display:"flex",alignItems:"center",gap:4,background:"rgba(255,255,255,.95)",border:"1px solid #e0e0e0",borderRadius:20,padding:"3px 8px 3px 5px",boxShadow:"0 1px 4px rgba(0,0,0,.18)",fontSize:10.5,fontWeight:700,color:r.ink,whiteSpace:"nowrap"},children:[t.jsx("span",{style:{width:9,height:9,background:"#E4002B",borderRadius:"50% 50% 50% 0",transform:"rotate(-45deg)",display:"block"}}),p]}),t.jsxs("span",{style:{position:"relative",fontSize:10.5,fontWeight:600,color:r.loc,background:"rgba(255,255,255,.94)",borderRadius:`${r.radiusPill}px`,padding:"3px 8px",boxShadow:"0 0 2px rgba(0,0,0,.25)"},children:[s," near you"]})]})}function oe(){return t.jsx("div",{"aria-hidden":!0,style:{height:108,borderRadius:r.radiusCard,border:"1px solid #dcdcdc",background:"linear-gradient(180deg,#e6e6e6 0 50px,#fff 50px 100%)",opacity:.75}})}function ge(){var G,K;const s=xt(),{path:p,itemPath:l,city:u}=bt(),{firstName:x,profileTier:w}=ft(),h=vt(e=>e.email),{coords:$}=Gt(),F=wt(h||void 0),k=u,v=Q(k),I=((K=(G=F.data)==null?void 0:G.user)==null?void 0:K.neighborhood)||"",S=yt(),pt=ee(h||void 0),j=Jt(F.data),T=!!h&&!j&&F.isLoading,H=j?Q(j):"",a=Xt({cityId:k,homeCityId:j,email:h||void 0,enabled:!!h&&!!j}),_=a.active?v:I&&I!=="Other"?I:v,D=a.active?kt(k):Yt(I,k),g=Kt(h||void 0,$),b=a.active&&!
1a.useVisitingItems,dt=d.useMemo(()=>te(S),[S]),lt=d.useMemo(()=>T?[]:a.useVisitingItems?a.items:b?[]:g.items,[T,a.useVisitingItems,a.items,b,g.items]),M=Qt(lt,h||void 0,k,$),V=jt({queryKey:["engagementExcludeIds",h??""],queryFn:()=>Zt(),enabled:!!h,staleTime:5*6e4}),z=d.useMemo(()=>new Set(V.data||[]),[V.data]),c=d.useMemo(()=>z.size===0?M:M.filter(e=>{const i=Ct(e),o=String(e.id||"").trim();return!(i&&z.has(i)||o&&z.has(o))}),[M,z]),R=d.useMemo(()=>{if(a.useVisitingItems){const o=X(a.items,a.homepage,a.runId);return o.valid?o.strips.map(n=>({id:`personalized-${n.kind}-${n.key}`,title:n.title,seeAllPath:J(n),items:n.items})):[]}if(a.active)return[];const e=g.data;if(!e)return[];const i=X(e.items,e.homepage,e.runId);return i.valid?i.strips.map(o=>({id:`personalized-${o.kind}-${o.key}`,title:o.title,seeAllPath:J(o),items:o.items})):[]},[g.data,a.active,a.useVisitingItems,a.items,a.homepage,a.runId]),ht=d.useMemo(()=>{if(b)return[];if(R.length>0||c.length===0)return[];const e=new Map;for(const i of c){const o=B(i);for(const n of o.tags||[]){const y=String(n).trim();if(!y)continue;const L=e.get(y)||[];L.length<8&&L.push(o),e.set(y,L)}}return[...e.entries()].filter(([,i])=>i.length>=4).sort((i,o)=>o[1].length-i[1].length).slice(0,3).map(([i,o])=>({id:`feedtag-${i}`,title:`${It(i)} picked for you`,seeAllPath:`/feed?tag=${encodeURIComponent(i)}`,items:o}))},[R,c,b]),f=R.length>0?R:ht,A=d.useMemo(()=>{const i=(a.useVisitingItems?St(a.items):a.active?["For You"]:g.tabs).filter(o=>o!=="For You");return[{id:"all",label:"For you",q:""},...i.map(o=>({id:O(o),label:zt(o),q:o}))]},[g.tabs,a.active,a.useVisitingItems,a.items]),[m,ct]=d.useState("all"),N=d.useMemo(()=>{var i;if(m==="all")return c;const e=((i=A.find(o=>o.id===m))==null?void 0:i.q)||null;return ot(c,e)},[c,m,A]),{propsFor:mt}=Rt(c,{enabled:!!h}),gt=e=>{const i=B(e);s(l(i.type,i.id,i.title),{state:{item:i}})},U=d.useRef(null),P=d.useRef(0),W=d.useRef(0),q=d.useRef("all"),Z=d.useRef(!1);W.current=N.length,q.current=m;const E=d.useCallback(()=>{Z.current||(Z.current=!0,At({maxPosition:P.current,totalItems:W.current,activeTag:q.current}))},[]);d.useEffect(()=>{const e=U.current;if(!e||typeof IntersectionObserver>"u")return;const i=new IntersectionObserver(o=>{for(const n of o){if(!n.isIntersecting)continue;const y=Number(n.target.dataset.feedIndex||0);y>P.current&&(P.current=y)}},{threshold:.5});return Array.from(e.children).forEach(o=>i.observe(o)),()=>i.disconnect()},[N.length]),d.useEffect(()=>(window.addEventListener("pagehide",E),()=>{window.removeEventListener("pagehide",E),E()}),[E]);const ut=e=>e.map((i,o)=>{const n=B(i);return t.jsx("div",{"data-feed-index":o+1,style:{minWidth:0,maxWidth:"100%"},children:t.jsx(Wt,{type:n.type,image:n.image,title:n.title,tags:n.tags,venue:n.venue,date:n.date,distance:n.distance,source:n.source,description:n.description,experienceKind:n.experience_kind,mpaaRating:n.mpaa_rating,duration:n.duration,href:l(n.type,n.id,n.title),linkState:{item:n},onDetails:()=>{qt({position:o+1,itemId:String(n.id),itemType:n.type,itemTitle:n.title,activeTag:m}),gt(i)},...mt(i)})},`${n.type}-${n.id}-${o}`)}),Y=T||!!h&&!a.active&&(g.isLoading||!g.isSuccess)&&c.length===0;return t.jsxs("div",{style:{background:r.bg,minHeight:"100vh"},children:[t.jsx(Et,{}),t.jsx("style",{children:`
2        .hv2{max-width:460px;margin:0 auto;padding:8px 10px 0;
3          display:flex;flex-direction:column;gap:8px}
4        .hv2-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
5        .hv2-greet{margin:2px 2px 0;font-family:${r.fontHead};font-size:17px;
6          font-weight:600;letter-spacing:-.2px;line-height:1.25}
7        .hv2-count{font-family:${r.fontBody};font-size:12px;font-weight:500;
8          color:${r.textMeta};margin-left:7px;white-space:nowrap}
9
10        /* The feed is its own panel inside the card: grey ground, tabs welded
11           to its top edge, and the item area scrolls on its own so the whole
12           feed lives here instead of six frozen cards. CTA stays outside it. */
13        /* Tabs sit on the panel's top edge; the active one covers that border
14           with its own -1px overhang so it reads as one connected surface. */
15        .hv2-feedwrap{display:flex;flex-direction:column;gap:0}
16        .hv2-tabstrip{display:flex;gap:3px;overflow-x:auto;padding:0;
17          margin:0;scrollbar-width:none}
18        .hv2-tabstrip::-webkit-scrollbar{display:none}
19        .hv2-tab{flex:0 0 auto;border:1px solid #dcdcdc;border-bottom:0;
20          background:#f5f5f5;color:#6c6c6c;font-size:11.5px;font-weight:500;
21          padding:5px 11px;border-radius:9px 9px 0 0;cursor:pointer;
22          font-family:${r.fontBody};white-space:nowrap;margin-bottom:-1px;
23          position:relative;line-height:1.25}
24        .hv2-tab.is-on{background:#ededed;color:${r.ink};font-weight:600;z-index:2}
25        /* The tabs sit ON this panel, so its top corners must be square or a
26           curve shows under the strip. It was already declared square here and
27           still rendered rounded on desktop, so something with equal-or-higher
28           specificity is winning — force it rather than leave a corner that
29           only appears at one breakpoint. */
30        .hv2-feedpanel{background:#ededed;border:1px solid #dcdcdc;
31          border-radius:0 0 12px 12px;margin-top:0}
32        .hv2-feedwrap > .hv2-feedpanel{
33          border-top-left-radius:0 !important;
34          border-top-right-radius:0 !important}
35        .hv2-scroll{max-height:250px;overflow-y:auto;-webkit-overflow-scrolling:touch;
36          padding:7px}
37        .hv2-grid{gap:7px}
38
39        /* Filter chips were page-scale (40px min-height, 36px wrap). The wrap
40           and the .pub-filter-chips descendant rule both need matching
41           specificity or the height wins and the padding never applies. */
42        .hv2 .pub-filter-chips-wrap,.hv2 .pub-filter-chips{height:auto !important;
43          min-height:0 !important}
44        .hv2 .pub-filter-chips .pub-filter-chip,.hv2 .pub-filter-chip{
45          height:auto !important;min-height:0 !important;padding:5px 11px !important;
46          font-size:12px !important;line-height:1.2 !important}
47
48
49        /* Squeeze ContentCard for the fold — headline + engagement buttons only.
50           Measured on real cards: 406px raw → 122px here. Everything else goes:
51           description, tags, venue/date/time meta, More info, Share.
52           Scoped to .hv2-tight so the other 17 surfaces sharing ContentCard are
53           untouched. ContentCard uses inline styles, hence !important.
54           NOTE: the title is a flex item, so the browser blockifies
55           display:-webkit-box and -webkit-line-clamp silently stops working —
56           max-height is what actually caps it to two lines. */
57        .hv2-tight .pub-card > div:first-child{height:50px !important}
58        .hv2-tight .pub-card > div:first-child img{height:50px !important}
59        .hv2-tight .pub-card > div:first-child .pub-card-badges{
60          top:5px !important;left:5px !important;gap:3px !important;
61          max-width:calc(100% - 10px) !important}
62        .hv2-tight .pub-card > div:first-child .pub-card-badges span{
63          font-size:8px !important;padding:2px 4px !important}
64        /* Title left (~70%), the two actions right, one row — saves the whole
65           stacked footer's height. Save is dropped; Like + Not-for-me stay. */
66        .hv2-tight .pub-card-body{padding:6px 7px !important;
67          flex-direction:row !important;align-items:center !important;
68          gap:5px !important;flex:0 0 auto !important}
69        .hv2-tight .pub-card-desc{display:none !important}
70        .hv2-tight .pub-card-tags{display:none !important}
71        .hv2-tight .pub-card-meta{display:none !important}
72        .hv2-tight .pub-btn-details{display:none !important}
73        .hv2-tight .pub-btn-share{display:none !important}
74        .hv2-tight .pub-card .pub-card-title{font-size:11.5px !important;
75          font-weight:400 !important;line-height:1.2 !important;min-height:0 !important;
76          max-height:28px !important;overflow:hidden !important;margin:0 !important;
77          padding:0 !important;flex:1 1 70% !important;min-width:0 !important}
78        .hv2-tight .pub-card-foot{padding-top:0 !important;gap:3px !important;
79          margin-top:0 !important;width:auto !important;flex:0 0 auto !important;
80          justify-content:flex-end !important}
81        .hv2-tight .pub-card-foot button{width:20px !important;height:20px !important;
82          flex:0 0 20px !important;min-width:0 !important;padding:0 !important}
83        .hv2-tight .pub-card-foot svg{width:11px !important;height:11px !important}
84        .hv2-tight .pub-card-foot button[aria-label="Save"],
85        .hv2-tight .pub-card-foot button[aria-label="Saved"]{display:none !important}
86        /* 1px frame so white cards read against the grey page */
87        .hv2-tight .pub-card{border:1px solid #dcdcdc !important;box-shadow:none !important}
88
89        /* Rows inside a white Area: kill their own page background/padding. */
90        .hv2-rows .pub-pad-x{padding-left:0 !important;padding-right:0 !important}
91        /* CategoryTiles + InterestBrowse already live in the Explore box —
92           GenericHomepageBody ships its own copies, so hide the duplicates. */
93        .hv2-rows .pub-cat-grid,
94        .hv2-rows section:has(.pub-interest-grid){display:none !important}
95        /* Row cards ship at 300px — only ~1.2 fit. Match the feed grid's card
96           width so 2.3 are visible and the row reads as more-to-come. */
97        .hv2-rows .pub-news-grid{grid-template-columns:none !important;
98          grid-auto-flow:column !important;grid-auto-columns:154px !important;
99          gap:7px !important}
100        /* 5 — Ask Maya belongs in the input, not on the chip row below it. */
101        .hv2 .ask-box-compact{position:relative}
102        /* 4 — What's Hot shipped at page scale: 12/16 padding, 20px numeral,
103           9/16 CTA. Every one of those margins comes back; the block ends up
104           ~30% shorter. */
105        .hv2-rows .hot-list{gap:6px !important}
106        .hv2-rows .hot-item{padding:7px 9px !important;gap:8px !important;
107          border-radius:12px !important;box-shadow:none !important;
108          border:1px solid #dcdcdc !important}
109        .hv2-rows .hot-body{gap:4px !important}
110        .hv2-rows .hot-num{font-size:14px !important;line-height:1 !important}
111        .hv2-rows .hot-txt{font-size:12.5px !important;line-height:1.2 !important;
112          margin:0 !important}
113        /* The stock component's desc has margin-bottom, which — since hot-copy
114           has no padding — collapses straight through into hot-body's own gap,
115           doubling the space before the buttons. Zero it and cap at two lines. */
116        .hv2-rows .hot-desc{font-size:11px !important;line-height:1.22 !important;
117          margin:0 !important;max-height:27px !important;overflow:hidden !important}
118        .hv2-rows .hot-foot{gap:5px !important;margin:0 !important}
119        .hv2-rows .hot-tag{font-size:9px !important;padding:2px 6px !important}
120        .hv2-rows .hot-cta{font-size:11px !important;padding:4px 10px !important;
121          box-shadow:none !important}
122
123        /* 5 — cards in a row sat at different heights because the scroller
124           centres its items. Top-align and stretch so every row lines up. */
125        .hv2-rows .pub-card-scroll,.hv2-rows .pub-news-grid{
126          align-items:stretch !important;
127          /* Both rails start flush left. NewsGrid ships margin-left:-16px to
128             cancel its own 16px padding; the scroller ships no such margin,
129             which is why every strip except Top News sat 16px in. */
130          padding-left:0 !important;padding-right:0 !important;
131          margin-left:0 !important;margin-right:0 !important}
132        .hv2-rows .pub-card-scroll > *,.hv2-rows .pub-news-grid > *{
133          align-self:stretch !important}
134
135        /* 6 — one constant rhythm around every separator: 10px, line, 10px. */
136        .hv2-rows section{border-top:1px solid #e2e2e2 !important;
137          margin-top:10px !important;padding-top:10px !important;
138          padding-bottom:0 !important}
139        .hv2-rows section:first-of-type{border-top:0 !important;margin-top:0 !important;
140          padding-top:0 !important}
141        /* 3 — Browse Miami's heading is a bare h2, not a <section>, so the
142           section rule above skipped it and no line was drawn. */
143        .hv2-rows > div > h2.pub-h2{border-top:1px solid #e2e2e2 !important;
144          margin-top:10px !important;padding-top:10px !important}
145
146        /* 9 — Share and More info are gone for good; the card itself opens the
147           item page. Only like / save / not-for-me remain. */
148        .hv2-rows .pub-btn-share,.hv2-rows .pub-btn-details,
149        .hv2-tight .pub-btn-share,.hv2-tight .pub-btn-details{display:none !important}
150
151        /* 8 — measured: the AskBox root starts 15px above the input and the
152           input's right edge sits 17px inside the root. The Maya button is a
153           sibling of .ask-input-wrap, so it anchors to the root — these offsets
154           are what actually place it inside the field. Avatar is pinned to 20px
155           so the pill stays ~30px and centres in the 49px input. */
156        .hv2 .ask-box-compact .ask-maya-btn{position:absolute !important;
157          top:25px !important;right:22px !important;z-index:3;height:auto !important;
158          min-height:0 !important;padding:4px 9px !important;font-size:11.5px !important;
159          gap:5px !important;margin:0 !important;transform:none !important}
160        .hv2 .ask-box-compact .ask-maya-btn img{width:20px !important;height:20px !important}
161        .hv2 .ask-box-compact .pub-ask-input{padding-right:104px !important}
162
163        /* 7 — category tiles: label and count were floating apart. */
164        .hv2-browse .pub-cat-grid{gap:5px !important}
165        .hv2-browse .pub-cat-tile{padding:6px 8px !important;gap:5px !important}
166        .hv2-browse .pub-cat-tile > div{display:flex !important;
167          flex-direction:column !important;gap:0 !important;line-height:1.1 !important}
168        .hv2-browse .pub-cat-tile h3{margin:0 !important;line-height:1.15 !important}
169        .hv2-browse .pub-cat-tile > div > div{margin:0 !important;line-height:1.15 !important}
170
171        /* 6 + 9 — the rows shipped page-scale vertical rhythm; halve it. */
172        .hv2-rows section,.hv2-rows > div{padding-top:4px !important;
173          padding-bottom:0 !important;margin-top:0 !important;margin-bottom:0 !important}
174        .hv2-rows .pub-section-head{margin-bottom:1px !important;padding-bottom:0 !important}
175        .hv2-rows h2,.hv2-rows h3{font-size:14px !important;margin:0 0 2px !important;
176          padding:0 !important;line-height:1.15 !important}
177        .hv2-rows .pub-card-scroll{padding-top:2px !important;padding-bottom:2px !important}
178        .hv2-rows hr,.hv2-rows .pub-divider{display:none !important}
179        /* One consistent rule between every strip — the stock pages draw a
180           divider on some rows and not others. */
181        .hv2-rows > *,.hv2-rows > * > section,.hv2-rows > * > div{
182          border-top:0}
183        .hv2-rows .pub-see-all{padding:5px 14px !important}
184        .hv2-rows .pub-row-origin,.hv2-rows [class*="origin"]{margin-bottom:1px !important;
185          font-size:9.5px !important;letter-spacing:.08em !important}
186
187        /* 8 — CardRow ships 300px cards; match the feed grid so 2.3 fit. */
188        .hv2-rows .pub-card-scroll{gap:7px !important;
189          grid-template-columns:none !important;grid-auto-columns:154px !important}
190        .hv2-rows .pub-card-scroll > *{flex:0 0 154px !important;width:154px !important;
191          min-width:154px !important;max-width:154px !important}
192
193
194        /* Browse tiles inside the Explore box. Stock CategoryTiles +
195           InterestBrowse are page-scale (877px of Explore box); these
196           overrides bring them to 543px: category tiles become one-line rows,
197           interest taglines go, everything drops to caption sizes. */
198        .hv2-browse .pub-pad-x{padding-left:0 !important;padding-right:0 !important}
199        .hv2-browse section{padding:0 !important}
200        .hv2-browse h2,.hv2-browse h3{font-size:13px !important;
201          padding:0 0 6px !important;margin:0 !important}
202        .hv2-browse .pub-cat-grid{gap:6px !important;padding-bottom:0 !important}
203        .hv2-browse .pub-cat-tile{flex-direction:row !important;align-items:center !important;
204          justify-content:flex-start !important;padding:7px 8px !important;gap:6px !important;
205          min-height:0 !important;border-radius:10px !important;box-shadow:none !important;
206          border:1px solid #dcdcdc !important}
207        .hv2-browse .pub-cat-tile > *{padding:0 !important}
208        .hv2-browse .pub-cat-tile > span{width:18px !important;height:18px !important;
209          flex:0 0 18px !important;background:none !important}
210        .hv2-browse .pub-cat-tile > span svg{width:13px !important;height:13px !important}
211        .hv2-browse .pub-cat-tile > div{text-align:left !important}
212        .hv2-browse .pub-cat-tile h3{font-size:11px !important;line-height:1.15 !important;
213          margin:0 !important}
214        .hv2-browse .pub-cat-tile > div > div{font-size:10px !important;line-height:1.1 !important}
215        /* All four interests on one row — they are four short labels. */
216        .hv2-browse .pub-interest-tagline{display:none !important}
217        .hv2-browse .pub-interest-grid{grid-template-columns:repeat(4,1fr) !important;
218          display:grid !important;gap:5px !important}
219        .hv2-browse .pub-interest-card{padding:8px 4px !important;gap:4px !important;
220          border-radius:10px !important;min-height:0 !important;box-shadow:none !important;
221          border:1px solid #dcdcdc !important;align-items:center !important;
222          text-align:center !important}
223        .hv2-browse .pub-interest-image{width:16px !important;height:16px !important;
224          margin:0 !important}
225        .hv2-browse .pub-interest-image svg{width:16px !important;height:16px !important}
226        .hv2-browse .pub-interest-label{font-size:9.5px !important;line-height:1.1 !important;
227          text-align:center !important;
227white-space:normal !important;
228          overflow:visible !important;max-height:none !important}
229        .hv2-browse .pub-interest-card{min-height:52px !important;
230          justify-content:center !important}
231
232      `}),t.jsxs("div",{className:"hv2",children:[t.jsxs("h1",{className:"hv2-greet",children:[x||"Hey",", this is your personalized page:"]}),t.jsxs(at,{children:[t.jsx(nt,{title:t.jsxs(t.Fragment,{children:["Your Feed:",t.jsx("span",{className:"hv2-count",children:b?v:Y||!a.active&&!g.isSuccess?`building in ${v}…`:`${c.length} picks in ${v}`})]}),action:b?void 0:"See all →",onAction:b?void 0:()=>{tt("home_feed_header","/feed"),s(p("/feed"))}}),b?t.jsx("div",{className:"hv2-feedwrap",children:t.jsx("div",{className:"hv2-feedpanel",children:t.jsxs("div",{className:"hv2-scroll hv2-grid hv2-tight",children:[a.showBanner?t.jsx(it,{cityLabel:v,homeCityLabel:H,state:a.state,onGenerate:()=>void a.generate(),onDecline:()=>a.decline()}):a.isChecking?t.jsx("div",{style:{gridColumn:"1 / -1",display:"flex",justifyContent:"center",padding:"28px 0"},children:t.jsx("div",{style:{width:28,height:28,borderRadius:"50%",border:"3px solid rgba(0,0,0,0.1)",borderTopColor:"var(--hv2-yellow, #f5c518)",animation:"spin 0.8s linear infinite"}})}):null,t.jsx(st,{count:dt.length,city:_,center:D,onOpen:()=>s(p("/map"))})]})})}):t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"hv2-feedwrap",children:[t.jsx("div",{className:"hv2-tabstrip",role:"tablist",children:A.map(e=>t.jsx("button",{type:"button",role:"tab","aria-selected":m===e.id,className:`hv2-tab${m===e.id?" is-on":""}`,onClick:()=>{var i;if(e.id!==m){const o=((i=A.find(n=>n.id===m))==null?void 0:i.label)??m;Ft({tab:e.label,previousTab:o}),Tt({tagLabel:e.label,previousTag:o,resultCount:ot(c,e.id==="all"?null:e.id).length})}ct(e.id)},children:e.label},e.id))}),t.jsx("div",{className:"hv2-feedpanel",children:t.jsxs("div",{className:"hv2-scroll hv2-grid hv2-tight",ref:U,children:[a.showBanner?t.jsx(it,{cityLabel:v,homeCityLabel:H,state:a.state,onGenerate:()=>void a.generate(),onDecline:()=>a.decline()}):null,t.jsx(st,{count:c.length,city:_,center:D,onOpen:()=>s(p("/map"))}),Y?Array.from({length:7},(e,i)=>t.jsx(oe,{},i)):ut(N.slice(0,15))]})})]}),t.jsx(rt,{label:"See my full feed →",tone:"yellow",onClick:()=>{tt("home_feed_footer_cta","/feed"),s(p("/feed"))}})]})]}),w==="light"||w==="none"?t.jsxs("div",{className:"hv2-warm-banner",children:[t.jsx("style",{children:`
233              /* .hv2 is a flex column with its own 8px gap between every
234                 direct child — this section's old 16px marginBottom stacked
235                 on top of that, doubling the gap before Explore. Zeroed. */
236              .hv2-warm-banner .pub-pad-x{margin:0 !important;
237                padding:9px 9px 9px 14px !important;border-radius:12px !important;
238                flex-wrap:nowrap !important;justify-content:space-between !important;
239                align-items:center !important;gap:8px !important}
240              .hv2-warm-banner .pub-pad-x > div{display:flex !important;
241                align-items:center !important}
242              .hv2-warm-banner h2{font-size:12.5px !important;line-height:1 !important;
243                margin:0 !important;white-space:nowrap;overflow:hidden;
244                text-overflow:ellipsis}
245              .hv2-warm-banner button{min-height:32px !important;
246                padding:0 12px !important;font-size:10.5px !important;
247                white-space:nowrap !important;flex-shrink:0 !important;
248                display:flex !important;align-items:center !important;
249                justify-content:center !important}
250            `}),t.jsx(Mt,{onUpgrade:()=>s(Nt(u)),title:"Get more out of HelloCity",ctaLabel:"Upgrade profile"})]}):null,t.jsxs("div",{className:"hv2-message-ctas",children:[t.jsx("style",{children:`
251            .hv2-message-ctas{display:flex;gap:8px}
252            .hv2-message-cta{flex:1;display:inline-flex;align-items:center;
253              justify-content:center;gap:8px;min-height:44px;box-sizing:border-box;
254              padding:10px 14px;border-radius:10px;background:${r.ink};color:#fff;
255              font-family:${r.fontHead};font-size:13px;font-weight:700;
256              text-decoration:none;white-space:nowrap}
257          `}),t.jsxs("a",{className:"hv2-message-cta",href:Pt,target:"_blank",rel:"noreferrer",onClick:()=>et({cta:"whatsapp",surface:"home_mobile_mid"}),children:[t.jsx(Lt,{}),"WhatsApp"]}),t.jsxs("a",{className:"hv2-message-cta",href:Bt,target:"_blank",rel:"noreferrer",onClick:()=>et({cta:"imessage",surface:"home_mobile_mid"}),children:[t.jsx(Ot,{}),"Message Us"]})]}),t.jsxs(at,{children:[t.jsx(nt,{title:"Looking for something specific?"}),t.jsx($t,{size:"compact",placeholder:"Ask me anything…",chips:pt,onAsk:e=>s(e.trim()?`${p("/ask")}?q=${encodeURIComponent(e)}`:p("/ask"))}),t.jsx("div",{className:"hv2-browse",children:t.jsx(Ht,{})}),t.jsx("div",{className:"hv2-browse",children:t.jsx(_t,{})}),t.jsx(rt,{label:"Find something specific →",tone:"yellow",onClick:()=>s(p("/ask"))})]}),t.jsxs("div",{className:"hv2-rows hv2-tight",children:[f.slice(0,2).map(e=>t.jsx("section",{children:t.jsx(C,{row:e,originLabel:"PERSONALIZED — FROM YOUR FEED",minimumVisible:1})},e.id)),S?t.jsx(Dt,{data:S,labeled:!0,afterWhatsHot:f[2]?t.jsx("section",{children:t.jsx(C,{row:f[2],originLabel:"PERSONALIZED — FROM YOUR FEED",minimumVisible:1})}):null,afterFamilies:f[3]?t.jsx("section",{children:t.jsx(C,{row:f[3],originLabel:"PERSONALIZED — FROM YOUR FEED",minimumVisible:1})}):null,afterInterestBrowse:f[4]?t.jsx("section",{children:t.jsx(C,{row:f[4],originLabel:"PERSONALIZED — FROM YOUR FEED",minimumVisible:1})}):null}):null,f.slice(5).map(e=>t.jsx("section",{children:t.jsx(C,{row:e,originLabel:"PERSONALIZED — FROM YOUR FEED",minimumVisible:1})},e.id))]})]})]})}export{st as MapTile,ge 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.