PageSourceSearch

https://tax2go.ai/_next/static/chunks/app/layout-9659ca5e2ce73454.js

js tax2go.ai collected 2026-10-05 15:00:06 UTC 31,866 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3185],{88295:function(e,t,n){Promise.resolve().then(n.bind(n,79441)),Promise.resolve().then(n.t.bind(n,16242,23)),Promise.resolve().then(n.t.bind(n,2778,23)),Promise.resolve().then(n.bind(n,19351)),Promise.resolve().then(n.bind(n,40486)),Promise.resolve().then(n.bind(n,47200)),Promise.resolve().then(n.bind(n,87779)),Promise.resolve().then(n.bind(n,95226)),Promise.resolve().then(n.bind(n,51153)),Promise.resolve().then(n.bind(n,36849)),Promise.resolve().then(n.bind(n,40189)),Promise.resolve().then(n.bind(n,92739)),Promise.resolve().then(n.bind(n,28921)),Promise.resolve().then(n.bind(n,47362)),Promise.resolve().then(n.bind(n,60898)),Promise.resolve().then(n.bind(n,27384)),Promise.resolve().then(n.t.bind(n,75305,23))},87779:function(e,t,n){"use strict";n.d(t,{ErrorBoundaryProvider:function(){return i}});var r=n(57437),a=n(2265);function i(e){let{children:t}=e;return(0,a.useEffect)(()=>{let e=e=>{console.error("[Unhandled Promise Rejection]",e.reason)},t=e=>{console.error("[Global Error]",e.error||e.message)};return window.addEventListener("unhandledrejection",e),window.addEventListener("error",t),()=>{window.removeEventListener("unhandledrejection",e),window.removeEventListener("error",t)}},[]),(0,r.jsx)(r.Fragment,{children:t})}},19351:function(e,t,n){"use strict";n.d(t,{ClarityAnalytics:function(){return s}});var r=n(57437),a=n(48667),i=n(40257);
1function s(){let e=i.env.NEXT_PUBLIC_CLARITY_PROJECT_ID;return e?(0,r.jsx)(a.default,{id:"microsoft-clarity",strategy:"afterInteractive",children:'\n        (function(c,l,a,r,i,t,y){\n          c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};\n          t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;\n          y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);\n        })(window, document, "clarity", "script", "'.concat(e,'");\n      ')}):null}},40486:function(e,t,n){"use strict";n.d(t,{WebVitalsReporter:function(){return s}});var r=n(2265);let a={LCP:{good:2500,needsImprovement:4e3},CLS:{good:.1,needsImprovement:.25},FCP:{good:1800,needsImprovement:3e3},TTFB:{good:800,needsImprovement:1800},INP:{good:200,needsImprovement:500}};async function i(e){let t={name:e.name,value:e.value,rating:function(e,t){let n=a[e];return!n||t<=n.good?"good":t<=n.needsImprovement?"needs-improvement":"poor"}(e.name,e.value),delta:e.delta,id:e.id,navigationType:e.navigationType,page:window.location.pathname,timestamp:new Date().toISOString()};if("poor"===t.rating)try{await fetch("/api/analytics/web-vitals",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),keepalive:!0})}catch(e){console.debug("Failed to send web vitals:",e)}}function s(){return(0,r.useEffect)(()=>{n.e(6430).then(n.bind(n,96430)).then(e=>{let{onCLS:t,onFCP:n,onLCP:r,onTTFB:a,onINP:s}=e;t(i),n(i),r(i),a(i),s(i)})},[]),null}},47200:function(e,t,n){"use strict";n.d(t,{SessionProvider:function(){return i}});var r=n(57437),a=n(80605);function i(e){let{children:t}=e;return(0,r.jsx)(a.SessionProvider,{children:t})}},95226:function(e,t,n){"use strict";n.d(t,{FeedbackWidget:function(){return h}});var r=n(57437),a=n(2265),i=n(47260),s=n(25846),o=n(53417),l=n(35685),c=n(32489),d=n(31810);let u=(0,n(68755).Z)("thumbs-down",[["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}],["path",{d:"M17 14V2",key:"8ymqnk"}]]);var m=n(44743);function h(){let[e,t]=(0,a.useState)(!1),[n,h]=(0,a.useState)(null),[f,p]=(0,a.useState)(""),[x,v]=(0,a.useState)(null),[g,b]=(0,a.useState)(!1),[w,y]=(0,a.useState)(!1),j=[{type:"bug",icon:i.Z,label:"Αναφορά σφάλματος",labelEn:"Report Bug"},{type:"feature",icon:s.Z,label:"Πρόταση",labelEn:"Suggestion"},{type:"general",icon:o.Z,label:"Γενικό σχόλιο",labelEn:"General"},{type:"help",icon:l.Z,label:"Χρειάζομαι βοήθεια",labelEn:"Need Help"}],N=async()=>{if(!f.trim()||!n)return;b(!0);let e={type:n,message:f.trim(),rating:x||void 0,page:window.location.pathname,userAgent:"undefined"!=typeof navigator?navigator.userAgent:"",timestamp:new Date().toISOString()};try{(await fetch("/api/feedback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok&&(y(!0),setTimeout(()=>{t(!1),y(!1),h(null),p(""),v(null)},2e3))}catch(e){console.error("Failed to submit feedback:",e)}finally{b(!1)}},k=()=>{h(null),p(""),v(null)};return e?(0,r.jsxs)("div",{className:"fixed bottom-0 sm:bottom-6 right-0 sm:right-24 z-50 w-full sm:w-80 rounded-t-lg sm:rounded-lg bg-white shadow-2xl border border-gray-200 max-h-[85vh] overflow-y-auto",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between border-b px-4 py-3",children:[(0,r.jsx)("h3",{className:"font-semibold text-gray-900",children:w?"Ευχαριστούμε!":"Πείτε μας τη γνώμη σας"}),(0,r.jsx)("button",{onClick:()=>{t(!1),k()},className:"text-gray-400 hover:text-gray-600","aria-label":"Κλείσιμο",children:(0,r.jsx)(c.Z,{className:"h-5 w-5"})})]}),(0,r.jsx)("div",{className:"p-4",children:w?(0,r.jsxs)("div",{className:"flex flex-col items-center py-6 text-center",children:[(0,r.jsx)("div",{className:"mb-3 rounded-full bg-green-100 p-3",children:(0,r.jsx)(d.Z,{className:"h-6 w-6 text-green-600"})}),(0,r.jsx)("p",{className:"text-gray-600",children:"Το σχόλιό σας καταχωρήθηκε!"})]}):n?(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)("button",{onClick:k,className:"text-sm text-primary hover:underline",children:"← Πίσω"}),"general"===n&&(0,r.jsxs)("div",{className:"flex items-center justify-center gap-4",children:[(0,r.jsx)("span",{className:"text-sm text-gray-600",children:"Πώς σας φαίνεται;"}),(0,r.jsx)("button",{onClick:()=>v("positive"),className:"rounded-full p-2 transition-all ".concat("positive"===x?"bg-green-100 text-green-600":"bg-gray-100 text-gray-400 hover:bg-green-50 hover:text-green-500"),children:(0,r.jsx)(d.Z,{className:"h-5 w-5"})}),(0,r.jsx)("button",{onClick:()=>v("negative"),className:"rounded-full p-2 transition-all ".concat("negative"===x?"bg-red-100 text-red-600":"bg-gray-100 text-gray-400 hover:bg-red-50 hover:text-red-500"),children:(0,r.jsx)(u,{className:"h-5 w-5"})})]}),(0,r.jsx)("textarea",{value:f,onChange:e=>p(e.target.value),placeholder:"bug"===n?"Περιγράψτε το πρόβλημα που αντιμετωπίσατε...":"feature"===n?"Ποια λειτουργία θα θέλατε να προσθέσουμε;":"help"===n?"Πώς μπορούμε να σας βοηθήσουμε;":"Γράψτε το σχόλιό σας...",className:"h-28 w-full resize-none rounded-lg border border-gray-200 p-3 text-sm focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary"}),(0,r.jsx)("button",{onClick:N,disabled:!f.trim()||g,className:"flex w-full items-center justify-center gap-2 rounded-lg bg-primary px-4 py-2.5 text-sm font-medium text-white transition-all hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50",children:g?"Αποστολή...":(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(m.Z,{className:"h-4 w-4"}),"Αποστολή"]})})]}):(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("p",{className:"mb-3 text-sm text-gray-600",children:"Τι θα θέλατε να μοιραστείτε;"}),j.map(e=>{let{type:t,icon:n,label:a}=e;return(0,r.jsxs)("button",{onClick:()=>h(t),className:"flex w-full items-center gap-3 rounded-lg border border-gray-200 p-3 text-left transition-all hover:border-primary hover:bg-primary/5",children:[(0,r.jsx)(n,{className:"h-5 w-5 text-gray-500"}),(0,r.jsx)("span",{className:"text-sm font-medium text-gray-700",children:a})]},t)})]})}),(0,r.jsx)("div",{className:"border-t bg-amber-50 px-4 py-2 text-center text-xs text-amber-700",children:"\uD83D\uDE80 Beta Version - Η γνώμη σας μας βοηθάει να βελτιωθούμε!"})]}):(0,r.jsxs)("button",{onClick:()=>t(!0),className:"fixed bottom-20 sm:bottom-6 right-4 sm:right-24 z-40 flex items-center gap-2 rounded-full bg-primary px-3 sm:px-4 py-2.5 sm:py-3 text-white shadow-lg transition-all hover:bg-primary/90 hover:shadow-xl","aria-label":"Αποστολή σχολίων",children:[(0,r.jsx)(o.Z,{className:"h-4 w-4 sm:h-5 sm:w-5"}),(0,r.jsx)("span",{className:"hidden sm:inline text-sm",children:"Feedback"})]})}},51153:function(e,t,n){"use strict";n.d(t,{MobileBottomNav:function(){return h}});var r=n(57437),a=n(99376),i=n(14938),s=n(73247);let o=(0,n(68755).Z)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);var l=n(53581),c=n(92369),d=n(71326),u=n(14165);let m=[{labelEl:"Αρχική",labelEn:"Home",icon:i.Z,href:"/dashboard",matchPrefix:"/dashboard"},{labelEl:"Σύμβουλοι",labelEn:"Advisors",icon:s.Z,href:"/providers",matchPrefix:"/providers"}
1,{labelEl:"Υποθέσεις",labelEn:"Cases",icon:o,href:"/dashboard/cases",matchPrefix:"/dashboard/cases"},{labelEl:"Σκάνερ",labelEn:"Scanner",icon:l.Z,href:"/dashboard/receipts",matchPrefix:"/dashboard/receipts"},{labelEl:"Εγώ",labelEn:"Profile",icon:c.Z,href:"/dashboard/profile",matchPrefix:"/dashboard/profile"}];function h(){let{isNative:e,isProviderApp:t}=(0,u._)(),n=(0,a.usePathname)(),i=(0,a.useRouter)();return!e||t?null:!n||["/login","/register","/forgot-password","/verify","/onboarding"].some(e=>n.includes(e))||"/"===n?null:(0,r.jsx)("nav",{className:"fixed bottom-0 left-0 right-0 z-50 flex items-center justify-around bg-white/95 backdrop-blur-xl border-t border-gray-100 shadow-lg",style:{paddingBottom:"env(safe-area-inset-bottom, 8px)",height:"calc(64px + env(safe-area-inset-bottom, 8px))"},children:m.map(e=>{var t;let a=e.icon,s=null!==(t=null==n?void 0:n.startsWith(e.matchPrefix))&&void 0!==t&&t;return(0,r.jsxs)("button",{onClick:()=>i.push(e.href),className:(0,d.cn)("flex flex-col items-center justify-center gap-0.5 flex-1 h-full px-1 transition-all duration-150 active:scale-90",s?"text-[#1a73e8]":"text-gray-400"),"aria-label":e.labelEl,children:[(0,r.jsx)("div",{className:(0,d.cn)("rounded-2xl px-4 py-1 transition-all duration-150",s?"bg-[#1a73e8]/10":""),children:(0,r.jsx)(a,{className:(0,d.cn)("w-5 h-5",s?"stroke-[2.5]":"stroke-[1.8]")})}),(0,r.jsx)("span",{className:(0,d.cn)("text-[10px] leading-none",s?"font-semibold":"font-normal"),children:e.labelEl})]},e.href)})})}},36849:function(e,t,n){"use strict";n.d(t,{ProviderMobileNav:function(){return m}});var r=n(57437),a=n(99376),i=n(31047),s=n(95805),o=n(70525),l=n(92369),c=n(71326),d=n(14165);let u=[{labelEl:"Κρατήσεις",icon:i.Z,href:"/provider/bookings",matchPrefix:"/provider/bookings"},{labelEl:"Πελάτες",icon:s.Z,href:"/provider/clients",matchPrefix:"/provider/clients"},{labelEl:"Εισοδήματα",icon:o.Z,href:"/provider/earnings",matchPrefix:"/provider/earnings"},{labelEl:"Προφίλ",icon:l.Z,href:"/provider/profile",matchPrefix:"/provider/profile"}];function m(){let{isNative:e,isProviderApp:t}=(0,d._)(),n=(0,a.usePathname)(),i=(0,a.useRouter)();return e&&t?!n||["/login","/register","/onboarding"].some(e=>n.includes(e))?null:(0,r.jsx)("nav",{className:"fixed bottom-0 left-0 right-0 z-50 flex items-center justify-around bg-white/95 backdrop-blur-xl border-t border-gray-100 shadow-lg",style:{paddingBottom:"env(safe-area-inset-bottom, 8px)",height:"calc(64px + env(safe-area-inset-bottom, 8px))"},children:u.map(e=>{var t;let a=e.icon,s=null!==(t=null==n?void 0:n.startsWith(e.matchPrefix))&&void 0!==t&&t;return(0,r.jsxs)("button",{onClick:()=>i.push(e.href),className:(0,c.cn)("flex flex-col items-center justify-center gap-0.5 flex-1 h-full px-1 transition-all duration-150 active:scale-90",s?"text-[#1a73e8]":"text-gray-400"),"aria-label":e.labelEl,children:[(0,r.jsx)("div",{className:(0,c.cn)("rounded-2xl px-4 py-1 transition-all duration-150",s?"bg-[#1a73e8]/10":""),children:(0,r.jsx)(a,{className:(0,c.cn)("w-5 h-5",s?"stroke-[2.5]":"stroke-[1.8]")})}),(0,r.jsx)("span",{className:(0,c.cn)("text-[10px] leading-none",s?"font-semibold":"font-normal"),children:e.labelEl})]},e.href)})}):null}},40189:function(e,t,n){"use strict";n.d(t,{PushNotificationSetup:function(){return s}});var r=n(2265),a=n(80605),i=n(14165);function s(){let{isNative:e,platform:t}=(0,i._)(),{data:s,status:o}=(0,a.useSession)();return(0,r.useEffect)(()=>{if(!e||"authenticated"!==o)return;let r=!1;return async function(){try{let{PushNotifications:e}=await Promise.all([n.e(8592),n.e(5105)]).then(n.bind(n,65105)),a=await e.requestPermissions();if("granted"!==a.receive)return;await e.register();let i=await e.addListener("registration",async e=>{if(!r){try{await fetch("/api/notifications/register-device",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:e.value,platform:t})})}catch(e){}i.remove()}});await e.addListener("pushNotificationReceived",e=>{let t=e.data;(null==t?void 0:t.route)&&(window.location.href=t.route)})}catch(e){console.warn("[PushSetup] Native push setup failed:",e)}}(),()=>{r=!0}},[e,t,o]),null}},92739:function(e,t,n){"use strict";n.d(t,{AppShell:function(){return o}});var r=n(57437),a=n(2265),i=n(99376),s=n(82431);function o(e){let{children:t,enablePullToRefresh:n=!0,enableSwipeNavigation:o=!0,headerHeight:l=0}=e,c=(0,i.useRouter)();(0,i.usePathname)();let d=(0,a.useRef)(null),[u,m]=(0,a.useState)(!1),[h,f]=(0,a.useState)(0),[p,x]=(0,a.useState)(!1),[v,g]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{g(window.matchMedia("(display-mode: standalone)").matches||!0===window.navigator.standalone)},[]),(0,a.useEffect)(()=>
1{if(!n||!d.current)return;let e=0,t=t=>{window.scrollY<=0&&(e=t.touches[0].clientY)},r=t=>{if(0===e)return;let n=t.touches[0].clientY-e;n>0&&window.scrollY<=0&&(m(!0),f(Math.min(n/80,1)),n>10&&t.preventDefault())},a=async()=>{h>=1&&!p&&(x(!0),await new Promise(e=>setTimeout(e,1e3)),c.refresh(),x(!1)),m(!1),f(0),e=0},i=d.current;return i.addEventListener("touchstart",t,{passive:!0}),i.addEventListener("touchmove",r,{passive:!1}),i.addEventListener("touchend",a),()=>{i.removeEventListener("touchstart",t),i.removeEventListener("touchmove",r),i.removeEventListener("touchend",a)}},[n,h,p,c]),(0,a.useEffect)(()=>{if(!o||!d.current)return;let e=0,t=0,n=n=>{e=n.touches[0].clientX,t=n.touches[0].clientY},r=n=>{let r=n.changedTouches[0].clientX,a=n.changedTouches[0].clientY,i=r-e,s=Math.abs(180/Math.PI*Math.atan2(a-t,i));Math.abs(i)>100&&(s<30||s>150)&&i>0&&e<50&&c.back()},a=d.current;return a.addEventListener("touchstart",n,{passive:!0}),a.addEventListener("touchend",r,{passive:!0}),()=>{a.removeEventListener("touchstart",n),a.removeEventListener("touchend",r)}},[o,c]),(0,r.jsxs)("div",{ref:d,className:"relative min-h-screen",style:{paddingTop:v?"env(safe-area-inset-top)":void 0,paddingBottom:v?"env(safe-area-inset-bottom)":void 0,paddingLeft:"env(safe-area-inset-left)",paddingRight:"env(safe-area-inset-right)"},children:[n&&(u||p)&&(0,r.jsx)("div",{className:"fixed left-1/2 -translate-x-1/2 z-50 transition-transform duration-200",style:{to
1p:"calc(env(safe-area-inset-top, 0px) + ".concat(l,"px + 16px)"),transform:"translateX(-50%) scale(".concat(h,")")},children:(0,r.jsx)("div",{className:"bg-white rounded-full shadow-lg p-3 border border-gray-200",children:(0,r.jsx)(s.Z,{className:"w-6 h-6 text-primary ".concat(p?"animate-spin":""),style:{transform:"rotate(".concat(360*h,"deg)")}})})}),(0,r.jsx)("div",{className:"transition-transform duration-200",style:{transform:u?"translateY(".concat(60*h,"px)"):void 0},children:t})]})}},28921:function(e,t,n){"use strict";n.d(t,{InstallPrompt:function(){return s}});var r=n(57437),a=n(2265);let i={el:{title:"Εγκαταστήστε το Tax2Go",subtitle:"Γρήγορη πρόσβαση από την αρχική",iosInstructions:"Για να εγκαταστήσετε την εφαρμογή:",iosStep1:"Πατήστε το κουμπί Share",iosStep2:'Επιλέξτε "Add to Home Screen"',iosStep3:'Πατήστε "Add"',benefit1:"Λειτουργεί χωρίς internet",benefit2:"Γρήγορη πρόσβαση με ένα tap",benefit3:"Push notifications για ραντεβού",benefit4:"Ξεκινά σαν κανονική εφαρμογή",later:"Αργότερα",install:"Εγκατάσταση",gotIt:"Κατάλαβα",new:"Νέο!"},en:{title:"Install Tax2Go",subtitle:"Quick access from your home screen",iosInstructions:"To install the app:",iosStep1:"Tap the Share button",iosStep2:'Select "Add to Home Screen"',iosStep3:'Tap "Add"',benefit1:"Works offline",benefit2:"Quick one-tap access",benefit3:"Push notifications for bookings",benefit4:"Launches like a native app",later:"Later",install:"Install",gotIt:"Got it",new:"New!"},it:{title:"Installa Tax2Go",subtitle:"Accesso rapido dalla schermata home",iosInstructions:"Per installare l'app:",iosStep1:"Tocca il pulsante Condividi",iosStep2:'Seleziona "Aggiungi alla schermata Home"',iosStep3:'Tocca "Aggiungi"',benefit1:"Funziona offline",benefit2:"Accesso rapido con un tocco",benefit3:"Notifiche push per prenotazioni",benefit4:"Si avvia come un'app nativa",later:"Dopo",install:"Installa",gotIt:"Capito",new:"Nuovo!"}};function s(e){let{locale:t="el",variant:n="banner",showAfterMs:s=3e3}=e,[p,x]=(0,a.useState)(null),[v,g]=(0,a.useState)(!1),[b,w]=(0,a.useState)(!1),[y,j]=(0,a.useState)(!1),[N,k]=(0,a.useState)(!1),[E,S]=(0,a.useState)(!1),L=i[t]||i.el;(0,a.useEffect)(()=>{var e,t;if(void 0!==window.Capacitor&&(null===(t=window.Capacitor)||void 0===t?void 0:null===(e=t.isNativePlatform)||void 0===e?void 0:e.call(t)))return;let n=window.matchMedia("(display-mode: standalone)").matches||!0===window.navigator.standalone;j(n);let r=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream;w(r);let a=localStorage.getItem("pwa-install-dismissed"),i=a?new Date(a):null;if((i?(Date.now()-i.getTime())/864e5:999)<7)return;let o=parseInt(localStorage.getItem("visit-count")||"0",10);if(localStorage.setItem("visit-count",String(o+1)),o<2)return;let l=e=>{e.preventDefault(),x(e),setTimeout(()=>{k(!0),g(!0)},s)};return window.addEventListener("beforeinstallprompt",l),r&&!n&&setTimeout(()=>{k(!0),g(!0)},2*s),()=>{window.removeEventListener("beforeinstallprompt",l)}},[s]);let P=(0,a.useCallback)(async()=>{if(!p)return;p.prompt();let{outcome:e}=await p.userChoice;"accepted"===e&&fetch("/api/analytics/events",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({event:"pwa_installed",properties:{variant:n}})}).catch(e=>console.error("[PWA analytics]",e)),x(null),g(!1)},[p,n]),C=(0,a.useCallback)(()=>{k(!1),setTimeout(()=>{localStorage.setItem("pwa-install-dismissed",new Date().toISOString()),g(!1)},300)},[]),T=(0,a.useCallback)(()=>{S(!0)},[]);return!v||y?null:"compact"===n?(0,r.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gradient-to-r from-primary/5 to-secondary/5 rounded-xl border border-primary/20 transition-all duration-300 ".concat(N?"opacity-100 translate-y-0":"opacity-0 translate-y-4"),children:[(0,r.jsx)("div",{className:"w-10 h-10 bg-primary rounded-lg flex items-center justify-center text-white text-xl shrink-0",children:"\uD83D\uDC3E"}),(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("p",{className:"font-semibold text-sm truncate",children:L.title}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:L.subtitle})]}),b?(0,r.jsx)("button",{onClick:T,className:"px-4 py-2 bg-primary text-white text-sm font-semibold rounded-lg hover:bg-primary/90 transition shrink-0",children:L.gotIt}):(0,r.jsx)("button",{onClick:P,className:"px-4 py-2 bg-primary text-white text-sm font-semibold rounded-lg hover:bg-primary/90 transition shrink-0",children:L.install}),(0,r.jsx)("button",{onClick:C,className:"p-1 text-gray-400 hover:text-gray-600 transition shrink-0","aria-label":"Dismiss",children:(0,r.jsx)(o,{})})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"fixed inset-0 bg-black/30 z-40 transition-opacity duration-300 ".concat(N?"opacity-100":"opacity-0"),onClick:C}),(0,r.jsx)("div",{className:"fixed bottom-0 left-0 right-0 z-50 p-4 pb-safe transition-all duration-300 ".concat(N?"opacity-100 translate-y-0":"opacity-0 translate-y-full"),children:(0,r.jsxs)("div",{className:"max-w-md mx-auto bg-white rounded-2xl shadow-2xl border border-gray-200 overflow-hidden",children:[(0,r.jsxs)("div",{className:"bg-gradient-to-r from-primary to-emerald-500 p-4 text-white relative overflow-hidden",children:[(0,r.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-white/10 rounded-full -translate-y-1/2 translate-x-1/2"}),(0,r.jsx)("div",{className:"absolute bottom-0 left-0 w-24 h-24 bg-white/5 rounded-full translate-y-1/2 -translate-x-1/2"}),(0,r.jsxs)("div",{className:"flex items-center gap-4 relative",children:[(0,r.jsx)("div",{className:"w-14 h-14 bg-white rounded-xl flex items-center justify-center shadow-lg",children:(0,r.jsx)("span",{className:"text-3xl",children:"\uD83D\uDC3E"})}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("h3",{className:"font-bold text-lg",children:L.title}),(0,r.jsx)("span",{className:"px-2 py-0.5 bg-white/20 text-xs font-bold rounded-full",children:L.new})]}),(0,r.jsx)("p",{className:"text-sm text-white/90",children:L.subtitle})]})]})]}),(0,r.jsx)("div",{className:"p-5",children:b?(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)("p",{className:"text-sm font-medium text-gray-700",children:L.iosInstructions}),(0,r.jsx)("div",{className:"space-y-3",children:[{step:"1",text:L.iosStep1,icon:(0,r.jsx)(l,{})},{step:"2",text:L.iosStep2,icon:(0,r.jsx)(c,{})},{step:"3",text:L.iosStep3,icon:(0,r.jsx)(d,{})}].map(e=>{let{step:t,text:n,icon:a}=e;return(0,r.jsxs)("div",{className:"flex items-center gap-3 p-3 bg-gray-50 rounded-xl",children:[(0,r.jsx)("div",{className:"w-8 h-8 bg-primary text-white rounded-full flex items-center justify-center text-sm font-bold shrink-0",children:t}),(0,r.jsx)("span",{className:"text-sm text-gray-700 flex-1",children:n}),(0,r.jsx)("div",{className:"text-gray-400 shrink-0",children:a})]},t)})})]}):(0,r.jsx)("div",{className:"grid grid-cols-2 gap-3",children:[{icon:(0,r.jsx)(u,{}),text:L.benefit1},{icon:(0,r.jsx)(m,{}),text:L.benefit2},{icon:(0,r.jsx)(h,{}),text:L.benefit3},{icon:(0,r.jsx)(f,{}),text:L.benefit4}].map((e,t)=>(0,r.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-gray-50 rounded-xl",children:[(0,r.jsx)("div",{className:"w-8 h-8 bg-primary/10 text-primary rounded-lg flex items-center justify-center shrink-0",children:e.icon}),(0,r.jsx)("span",{className:"text-xs font-medium text-gray-700 leading-tight",children:e.text})]},t))})}),(0,r.jsxs)("div",{className:"p-4 pt-0 flex gap-3",children:[(0,r.jsx)("button",{onClick:C,className:"flex-1 py-3 text-gray-600 font-semibold rounded-xl hover:bg-gray-100 transition border border-gray-200",children:L.later}),b?(0,r.jsx)("button",{onClick:C,className:"flex-1 py-3 bg-primary text-white font-bold rounded-xl hover:bg-primary/90 transition shadow-lg shadow-primary/25",children:L.gotIt}):(0,r.jsx)("button",{onClick:P,className:"flex-1 py-3 bg-primary text-white font-bold rounded-xl hover:bg-primary/90 transition shadow-lg shadow-primary/25",children:L.install})]})]})})]})}function o(){return(0,r.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}function l(){return(0,r.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.3
116m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.368 2.684 3 3 0 00-5.368-2.684z"})})}function c(){return(0,r.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 13h6m-3-3v6m-9 1V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z"})})}function d(){return(0,r.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})}function u(){return(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M18.364 5.636a9 9 0 010 12.728m0 0l-2.829-2.829m2.829 2.829L21 21M15.536 8.464a5 5 0 010 7.072m0 0l-2.829-2.829m-4.243 2.829a4.978 4.978 0 01-1.414-2.83m-1.414 5.658a9 9 0 01-2.167-9.238m7.824 2.167a1 1 0 111.414 1.414m-1.414-1.414L3 3m8.293 8.293l1.414 1.414"})})}function m(){return(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122"})})}function h(){return(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"})})}function f(){return(0,r.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,r.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 10V3L4 14h7v7l9-11h-7z"})})}},47362:function(e,t,n){"use strict";n.d(t,{NetworkStatus:function(){return l},useNetworkStatus:function(){return c}});var r=n(57437),a=n(2265),i=n(62926),s=n(75395),o=n(32489);function l(e){let{className:t="",showOnlineNotification:n=!0,autoHideOnlineDelay:l=3e3}=e,[c,d]=(0,a.useState)(!0),[u,m]=(0,a.useState)(!1),[h,f]=(0,a.useState)(!1);return((0,a.useEffect)(()=>{d(navigator.onLine),m(!navigator.onLine);let e=()=>{d(!0),n?(f(!0),m(!0),l>0&&setTimeout(()=>{m(!1),f(!1)},l)):m(!1)},t=()=>{d(!1),m(!0),f(!1)};return window.addEventListener("online",e),window.addEventListener("offline",t),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",t)}},[n,l]),u)?(0,r.jsx)("div",{className:"\n        fixed top-0 left-0 right-0 z-[100]\n        transition-transform duration-300 ease-out\n        ".concat(u?"translate-y-0":"-translate-y-full","\n        ").concat(t,"\n      "),style:{paddingTop:"env(safe-area-inset-top)"},children:(0,r.jsxs)("div",{className:"\n          flex items-center justify-between px-4 py-3\n          ".concat(c?"bg-green-500 text-white":"bg-gray-800 text-white","\n        "),children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[c?(0,r.jsx)(i.Z,{className:"w-5 h-5"}):(0,r.jsx)(s.Z,{className:"w-5 h-5"}),(0,r.jsx)("span",{className:"text-sm font-medium",children:c?h?"Back online!":"Connected":"No internet connection"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[!c&&(0,r.jsx)("span",{className:"text-xs opacity-80",children:"Some features may be limited"}),(0,r.jsx)("button",{onClick:()=>{m(!1)},className:"p-1 hover:bg-white/10 rounded-full transition-colors","aria-label":"Dismiss notification",children:(0,r.jsx)(o.Z,{className:"w-4 h-4"})})]})]})}):null}function c(){let[e,t]=(0,a.useState)(!0);return(0,a.useEffect)(()=>{t(navigator.onLine);let e=()=>t(!0),n=()=>t(!1);return window.addEventListener("online",e),window.addEventListener("offline",n),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",n)}},[]),e}},60898:function(e,t,n){"use strict";n.d(t,{ServiceWorkerRegistration:function(){return o}
1,useServiceWorker:function(){return l}});var r=n(57437),a=n(2265),i=n(82431),s=n(32489);function o(){let[e,t]=(0,a.useState)({isSupported:!1,isRegistered:!1,isUpdateAvailable:!1,registration:null}),[n,o]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!("serviceWorker"in navigator))return;t(e=>({...e,isSupported:!0}));let e=async()=>{try{let e=await navigator.serviceWorker.register("/sw.js",{scope:"/"});t(t=>({...t,isRegistered:!0,registration:e})),e.addEventListener("updatefound",()=>{let n=e.installing;n&&n.addEventListener("statechange",()=>{"installed"===n.state&&navigator.serviceWorker.controller&&(t(e=>({...e,isUpdateAvailable:!0})),o(!0))})}),setInterval(()=>{e.update().catch(e=>{console.warn("[PWA] Update check failed:",e)})},36e5)}catch(e){console.error("[PWA] Service worker registration failed:",e)}};if("complete"!==document.readyState)return window.addEventListener("load",e),()=>window.removeEventListener("load",e);e()},[]),(0,a.useEffect)(()=>{if(!e.isSupported)return;let t=!1,n=()=>{t||(t=!0,window.location.reload())};return navigator.serviceWorker.addEventListener("controllerchange",n),()=>{navigator.serviceWorker.removeEventListener("controllerchange",n)}},[e.isSupported]);let l=(0,a.useCallback)(()=>{var t;(null===(t=e.registration)||void 0===t?void 0:t.waiting)&&(e.registration.waiting.postMessage({type:"SKIP_WAITING"}),o(!1))},[e.registration]),c=(0,a.useCallback)(()=>{o(!1)},[]);return n&&e.isUpdateAvailable?(0,r.jsx)("div",{className:"fixed top-0 left-0 right-0 z-50 p-4 bg-emerald-600 text-white shadow-lg",children:(0,r.jsxs)("div",{className:"max-w-4xl mx-auto flex items-center justify-between gap-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)(i.Z,{className:"w-5 h-5 flex-shrink-0"}),(0,r.jsx)("p",{className:"text-sm font-medium",children:"A new version of Tax2Go is available!"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("button",{onClick:l,className:"px-4 py-1.5 bg-white text-emerald-600 rounded-lg text-sm font-medium hover:bg-emerald-50 transition-colors",children:"Update Now"}),(0,r.jsx)("button",{onClick:c,className:"p-1.5 text-white/80 hover:text-white transition-colors","aria-label":"Dismiss update notification",children:(0,r.jsx)(s.Z,{className:"w-4 h-4"})})]})]})}):null}function l(){let[e,t]=(0,a.useState)(null),[n,r]=(0,a.useState)(!0);(0,a.useEffect)(()=>{if(!("serviceWorker"in navigator))return;navigator.serviceWorker.ready.then(e=>{t(e)}),r(navigator.onLine);let e=()=>r(!0),n=()=>r(!1);return window.addEventListener("online",e),window.addEventListener("offline",n),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",n)}},[]);let i=(0,a.useCallback)(()=>{if(e){var t;null===(t=e.active)||void 0===t||t.postMessage({type:"SYNC_BOOKING_DRAFTS"})}},[e]),s=(0,a.useCallback)(t=>{if(e){var n;null===(n=e.active)||void 0===n||n.postMessage({type:"SYNC_PET_PROFILES",userId:t})}},[e]),o=(0,a.useCallback)(()=>{if(e){var t;null===(t=e.active)||void 0===t||t.postMessage({type:"CLEAR_PET_CACHE"})}},[e]),l=(0,a.useCallback)(t=>{if(e){var n;null===(n=e.active)||void 0===n||n.postMessage({type:"PREFETCH_PET_IMAGES",urls:t})}},[e]);return{registration:e,isOnline:n,syncBookingDrafts:i,syncPetProfiles:s,clearPetCache:o,prefetchPetImages:l}}},2778:function(){},75305:function(){},79441:function(e,t,n){"use strict";n.d(t,{default:function(){return i}});var r=n(69234),a=n(57437);function i(e){let{locale:t,...n}=e;if(!t)throw Error(void 0);return(0,a.jsx)(r.Pj,{locale:t,...n})}}},function(e){e.O(0,[3244,2461,4360,4736,8592,2971,1744],function(){return e(e.s=88295)}),_N_E=e.O()}]);

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.