1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8656],{8656:(e,t,n)=>{n.d(t,{B:()=>T});var a=n(95155),r=n(97193),l=n(22149),s=n(38966),i=n(11665),o=n(89745),u=n(87831),c=n(38779),m=n(62357),d=n(8525),h=n(64337);function f(e,t){let n=function(e){if(!e)return null;let t=e.app_metadata;if(!t||"object"!=typeof t)return null;let n=new Set,a=t.restaurant_ids;if(Array.isArray(a))for(let e of a){let t=Number(e);Number.isFinite(t)&&n.add(t)}let r=t.restaurant_id;if(null!=r){let e=Number(r);Number.isFinite(e)&&n.add(e)}return 0===n.size?null:n}(e);return null!=n&&n.has(Number(t))}var p=n(59305),b=n(56944),x=n(49637),v=n(90030),w=n(34458),g=n(95604),N=n(15870),j=n(12115);let y="block px-3 py-2.5 text-left text-sm font-medium text-[#f3f0e8] transition-colors hover:bg-white/10";function k(e){let{auth:t,authReturnPath:n,restaurantId:r,dashboardHref:l}=e,i=(0,g.useTranslations)("nav"),o=(0,s.a8)(),u=(0,s.rd)(),{user:k,loading:_,configured:S}=t,[C,I]=(0,j.useState)(!1),E=(0,j.useRef)(null),T=(0,j.useId)(),[A,R]=(0,j.useState)(null),[D,O]=(0,j.useState)(!1),[L,F]=(0,j.useState)(0),H=(0,v.fo)(),B=Number.isFinite(r)&&r>=1,P=H&&B,z=!!k&&f(k,r),q=P||z||!0===A||D,M=!P&&!z&&C&&null===A&&!D,W=(P||!!k)&&!M&&(q||D),G=q?l:"/dashboard";(0,j.useEffect)(()=>{if(!(0,h.isSupabaseConfigured)())return;let{data:{subscription:e}}=(0,d.createClient)().auth.onAuthStateChange((e,t)=>{(null==t?void 0:t.user)&&("SIGNED_IN"===e||"TOKEN_REFRESHED"===e||"USER_UPDATED"===e||"INITIAL_SESSION"===e&&t)&&F(e=>e+1)});return()=>e.unsubscribe()},[]),(0,j.useEffect)(()=>{if(H&&B){R(!0),O(!1);return}if(!(0,h.isSupabaseConfigured)()||!k){R(null),O(!1);return}return(O(!1),f(k,r))?void R(null):!Number.isFinite(r)||r<1?void R(!1):void R(null)},[k,r,L,H,B]),(0,j.useEffect)(()=>{if(H||!C||!k||!(0,h.isSupabaseConfigured)())return;let e=!1,t=async()=>{if(f(k,r))return void R(null);if(!Number.isFinite(r)||r<1)return void R(!1);try{var t;let n=await (0,b.O)(r);if(e)return;let a=null!=n.membership_role&&""!==String(n.membership_role).trim(),l=Object.values(null!=(t=n.permissions)?t:{}).some(e=>!0===e),s=!0===n.is_platform_operator||a||l;R(s)}catch(n){if(e)return;let t=n instanceof p.ge?n.status:0;(t>=500||0===t)&&console.warn("[LC_DASHBOARD_PERMISSIONS]",n),R(!1)}};return(async()=>{try{let t=await (0,p.Xl)();e||O(!0===t.is_platform_operator)}catch(t){e||O(!1)}})(),t(),()=>{e=!0}},[C,k,r,L,H]),(0,j.useEffect)(()=>{if(!C)return;let e=e=>{let t=E.current;(null==t?void 0:t.contains(e.target))||I(!1)},t=e=>{"Escape"===e.key&&I(!1)};return document.addEventListener("pointerdown",e,!0),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e,!0),document.removeEventListener("keydown",t)}},[C]);let U=async()=>{I(!1),S&&await (0,m.j)()},K=null!=n&&""!==n?{pathname:"/login",query:{returnTo:n}}:"/login",J=i("accountLoginOrRegister"),X=k?(0,w.cz)(k,i("accountGuest")):null,$=null!=n&&""!==String(n).trim()?n:null!=o&&""!==String(o).trim()?String(o):"/",Q=_&&!k,V=()=>I(!1),Y=(0,a.jsxs)("div",{className:"border-t border-white/10 px-3 py-2",role:"presentation",children:[(0,a.jsx)("p",{className:"text-[0.65rem] font-semibold uppercase tracking-wide text-white/45",children:i("language")}),(0,a.jsx)(c.SiteLocaleMenuSection,{onSelect:V})]});return(0,a.jsxs)("div",{className:"relative h-8 w-8 shrink-0 sm:h-9 sm:w-9",ref:E,children:[(0,a.jsx)("button",{type:"button",suppressHydrationWarning:!0,className:"".concat("flex shrink-0 items-center justify-center rounded-full border border-[#d4b56a]/80 bg-gradient-to-b from-[#d4b56a] to-[#9a7a35] text-[#0a0c12] shadow-[0_2px_10px_rgba(181,147,74,0.28)] transition-[filter,transform] hover:brightness-105 active:scale-[0.96] focus:outline-none focus-visible:ring-2 focus-visible:ring-white/30"," h-full w-full"),"aria-label":i("accountMenuAria"),title:X?"".concat(i("signedInAs"),": ").concat(X):i("accountMenuAria"),"aria-busy":Q||void 0,"aria-expanded":C,"aria-haspopup":"true","aria-controls":T,onClick:()=>{if(Q)return void u.push(K);I(e=>!e)},onKeyDown:e=>{("ArrowDown"===e.key||"Enter"===e.key||" "===e.key)&&(e.preventDefault(),I(!0))},children:(0,a.jsx)(N.A,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,"aria-hidden":!0})}),C?(0,a.jsxs)("div",{id:T,role:"menu","aria-label":i("accountMenuAria"),className:"absolute right-0 top-[calc(100%+1.35rem)] z-[200] min-w-[12.5rem] max-w-[min(calc(100vw-1.5rem),18rem)] rounded-xl border border-white/12 bg-[#12151c] py-1 shadow-[0_12px_40px_rgba(0,0,0,0.55)]",children:[k?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"border-b border-white/10 px-3 py-2",role:"presentation",children:[(0,a.jsx)("p",{className:"text-[0.65rem] font-semibold uppercase tracking-wide text-white/45",children:i("signedInAs")}),(0,a.jsx)("p",{className:"mt-0.5 break-all text-left text-sm font-medium leading-snug text-[#f3f0e8]",title:null!=X?X:void 0,children:X})]}),(0,a.jsx)(s.N_,{href:(0,x.Cl)($),role:"menuitem",className:y,onClick:V,children:i("accountSettings")}),(null==k?void 0:k.is_anonymous)===!0?(0,a.jsx)(s.N_,{href:(0,x.e_)($),role:"menuitem",className:"".concat(y," text-[#d4b56a]"),onClick:V,children:i("accountSecureGuest")}):null,W?(0,a.jsx)(s.N_,{href:G,role:"menuitem",className:y,onClick:V,children:i("dashboard")}):null]}):P&&W?(0,a.jsx)(s.N_,{href:G,role:"menuitem",className:y,onClick:V,children:i("dashboard")}):(0,a.jsx)(s.N_,{href:K,role:"menuitem",className:y,onClick:V,children:J}),Y,k?(0,a.jsx)("button",{type:"button",role:"menuitem",className:"w-full ".concat(y),onClick:()=>void U(),children:i("signOut")}):null]}):null]})}var _=n(83468),S=n(29438),C=n(44039),I=n(51103);let E="lc-app-shell-main mx-auto flex h-[100dvh] max-h-[100dvh] min-h-[100dvh] w-full max-w-[var(--lc-guest-column)] flex-col overflow-hidden bg-[#0a0c12] text-[#f3f0e8] [padding-bottom:calc(env(safe-area-inset-bottom,0px)+10px)]";function T(e){var t,n,c,m,d;let{variant:h,showBack:f,authReturnPath:p,onBackOverride:b,footer
1:x,children:v,hubNav:w,homeHoursChrome:N,showPlatformFavoriteToggle:y=!1,headerBrandingOverride:k=null}=e,_=(0,s.rd)(),T=(0,s.a8)(),A=(0,g.useTranslations)("nav"),{comingSoonGuest:R}=(0,l.a)(),O=(0,o.we)(R),L=(0,g.useTranslations)("landingApp"),F=(0,r.w)(),H=(0,S.h)(),B=F.restaurant,P=null!=k?k.restaurantName.trim()||L("restaurantTitle"):B?(0,C.mH)(B):L("restaurantTitle"),z=null!=k?(null!=(n=k.restaurantTag)?n:"").trim()||null:B&&(null==(t=B.name_tagline)?void 0:t.trim())||L("restaurantTagline"),q=null!=(c=null==k?void 0:k.restaurantId)?c:F.restaurantId,M=null!=(m=null==N?void 0:N.hoursDetailOpen)&&m,W=null!=(d=null==N?void 0:N.appInstallInfoOpen)&&d;(0,j.useLayoutEffect)(()=>{if("hub"===h)return(0,I.f)("tisch-hub",{reset:!0}),()=>(0,I.z)("tisch-hub",{reset:!0})},[h]);let G=f||"home"===h&&!!N&&(M||W),U=null!=O?O:(0,i.ax)(F.publicRestaurantBasePath),K=Number.isFinite(q)&&q>0||y?String(q):null,J=(0,a.jsx)(D,{showBack:G,showCityDirectoryLink:"home"===h&&!G&&null!=U,backButtonId:"hub"===h?"tisch-hub-back":"home"===h&&W?"home-app-install-back":"home"===h&&M?"home-hours-back":"tisch-hub-back",tNav:A,restaurantName:P,restaurantTag:z,onBack:e=>{var t,n;if(e.preventDefault(),"home"===h&&W&&(null==N?void 0:N.onCloseAppInstallInfo))return void N.onCloseAppInstallInfo();if("home"===h&&(null==N?void 0:N.hoursDetailOpen))return void N.onCloseHoursDetail();if(b)return void b();let a=(null==(t=F.publicRestaurantBasePath)?void 0:t.replace(/\/+$/,""))||"",r="/";if("home"===h&&!f)return void _.push(null!=(n=null!=O?O:U)?n:"/");if("hub"===h){let e=(0,i.NT)(T);r=e&&"/"!==e?e:a||"/"}else a&&(r=a);(0,u.qd)(_,r)},auth:H,authReturnPath:p,restaurantId:q,dashboardHref:(0,i.Ec)(T),platformFavoriteId:K}),X=w?(0,a.jsx)("div",{id:"tisch-hub-order-layer",className:"tisch-hub-order-layer",children:(0,a.jsx)("nav",{className:"".concat(w.navClassName," lc-app-shell-hub-nav min-h-0 w-full flex-1 overflow-x-hidden overflow-y-auto"),"aria-label":w.navAriaLabel,children:v})}):(0,a.jsx)("div",{className:"lc-app-shell-scroll flex min-h-0 flex-1 flex-col overflow-x-hidden overflow-y-auto",children:v});return(0,a.jsx)("main",{id:"home"===h?"app-home":"app-tisch-hub",className:"home"===h?"app-home lc-trans-glass-chrome ".concat(E):"app-view app-home app-tisch-hub lc-trans-glass-chrome ".concat(E),children:(0,a.jsxs)("div",{className:"home-inner flex min-h-0 flex-1 flex-col px-3 pb-0 pt-0",children:[J,(0,a.jsx)("div",{className:"relative z-0 flex min-h-0 flex-1 flex-col overflow-hidden",children:X}),null!=x?(0,a.jsx)("footer",{className:"site-powered-wrap site-powered-wrap--in-flow shrink-0",children:x}):null]})})}let A="flex shrink-0 items-center justify-center rounded-full border border-[#d4b56a]/80 bg-gradient-to-b from-[#d4b56a] to-[#9a7a35] text-[#0a0c12] shadow-[0_2px_10px_rgba(181,147,74,0.28)] transition-[filter,transform] hover:brightness-105 active:scale-[0.96] focus:outline-none focus-visible:ring-2 focus-visible:ring-white/30";function R(e){let{className:t}=e;return(0,a.jsx)("svg",{suppressHydrationWarning:!0,className:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.25",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,a.jsx)("path",{d:"m15 18-6-6 6-6"})})}function D(e){let{showBack:t,showCityDirectoryLink:n,backButtonId:r,tNav:l,restaurantName:s,restaurantTag:i,onBack:o,auth:u,authReturnPath:c,restaurantId:m,dashboardHref:d,platformFavoriteId:h}=e;return(0,a.jsxs)("header",{suppressHydrationWarning:!0,className:"lc-app-chrome-header relative z-30 mb-0 shrink-0 overflow-visible grid min-h-[52px] grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] items-center gap-1.5 pb-2.5 pt-0.5 sm:min-h-[60px] sm:gap-2 sm:pb-3 sm:pt-1",children:[(0,a.jsx)("div",{className:"flex w-full min-w-0 items-center justify-start overflow-visible",children:t?(0,a.jsx)("button",{type:"button",className:"".concat(A," h-8 w-8 sm:h-9 sm:w-9"),id:r,"aria-label":l("backReturn"),onClick:o,children:(0,a.jsx)(R,{className:"h-4 w-4 sm:h-[1.05rem] sm:w-[1.05rem]"})}):n?(0,a.jsx)("button",{type:"button",className:"".concat(A," h-8 w-8 shrink-0 sm:h-9 sm:w-9"),id:"home-city-directory","aria-label":l("backReturn"),title:l("backReturn"),onClick:o,children:(0,a.jsx)(R,{className:"h-4 w-4 sm:h-[1.05rem] sm:w-[1.05rem]"})}):(0,a.jsx)("div",{className:"h-8 w-8 sm:h-9 sm:w-9","aria-hidden":"true"})}),(0,a.jsxs)("div",{className:"max-w-[min(15.5rem,calc(100vw-6.25rem))] min-w-0 justify-self-center overflow-visible px-0.5 text-center sm:max-w-[min(18.5rem,calc(100vw-6.75rem))]",children:[(0,a.jsxs)("div",{className:"relative overflow-visible",children:[(0,a.jsx)("h1",{className:"lc-restaurant-title truncate font-fraunces text-[clamp(1.12rem,5.4vw,1.95rem)] font-bold leading-none tracking-[-0.02em] text-white",children:s}),h?(0,a.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",children:(0,a.jsxs)("span",{className:"relative max-w-full",children:[(0,a.jsx)("span",{"aria-hidden":"true",className:"invisible block truncate font-fraunces text-[clamp(1.12rem,5.4vw,1.95rem)] font-bold leading-none tracking-[-0.02em]",children:s}),(0,a.jsx)("span",{className:"pointer-events-auto absolute left-full top-1/2 -translate-y-1/2 pl-0.5",children:(0,a.jsx)(_.F,{restaurantId:h,variant:"title"})})]})}):null]}),i?(0,a.jsx)("p",{className:"lc-restaurant-tagline mt-0.5 text-[0.58rem] font-extrabold uppercase leading-snug tracking-[0.18em] text-[#d4b56a] sm:mt-1 sm:text-[0.65rem] sm:tracking-[0.2em]",children:i}):(0,a.jsx)("span",{className:"mt-0.5 block min-h-[0.58rem] sm:mt-1 sm:min-h-[0.65rem]","aria-hidden":"true"})]}
1),(0,a.jsx)("div",{className:"flex min-w-0 w-full items-center justify-end gap-1.5 sm:gap-2",children:(0,a.jsx)(k,{auth:u,authReturnPath:c,restaurantId:m,dashboardHref:d})})]})}},49637:(e,t,n)=>{n.d(t,{Cl:()=>r,O7:()=>s,e_:()=>l});var a=n(1565);function r(e){let t=(0,a.v)(null!=e?e:null);return null!=t?{pathname:"/account",query:{returnTo:t}}:{pathname:"/account"}}function l(e){let t=(0,a.v)(null!=e?e:null);return null!=t?{pathname:"/account/upgrade",query:{returnTo:t}}:{pathname:"/account/upgrade"}}function s(e){var t;let n=null!=(t=(0,a.v)(null!=e?e:null))?t:"/";return{pathname:"/login",query:{returnTo:"/account/upgrade?returnTo=".concat(encodeURIComponent(n))}}}},56944:(e,t,n)=>{n.d(t,{O:()=>r});var a=n(59305);async function r(e,t){let n=await fetch("/api/dashboard/me-permissions?restaurantId=".concat(encodeURIComponent(String(e))),{method:"GET",credentials:"same-origin",headers:{Accept:"application/json"},signal:t}),r=await n.text(),l=null;try{l=r?JSON.parse(r):null}catch(e){l=r}if(!n.ok){let e=l&&"object"==typeof l&&null!==l&&"detail"in l?l.detail:l,t="string"==typeof e?e:e&&"object"==typeof e&&"message"in e&&"string"==typeof e.message?String(e.message):"HTTP ".concat(n.status," ").concat(n.statusText);throw new a.ge(t,n.status,e)}return l}},90030:(e,t,n)=>{function a(){return!1}n.d(t,{fo:()=>a,yF:()=>r});let r="local-dev-user"}}]);
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.