1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SalesTerms-CFkOiUnd.js","assets/query-Chz64zBh.js","assets/vendor-CSFuv7tw.js","assets/arrow-left-CsZM81Ql.js","assets/ui-DXMeZLsL.js","assets/charts-wunufEj4.js","assets/supabase-TY-roNVC.js","assets/motion-DALD2mD3.js","assets/dates-CphUaXMC.js","assets/PrivacyPolicy-MMMlpxb9.js","assets/CookiePolicy-BWZ9pE8D.js","assets/PublicMinimalWidget-DObDOlGX.js","assets/publicI18n-Beyg8ArK.js","assets/publicDateLocale-B-3C37Zf.js","assets/StripeEmbeddedCheckout-CIZruW3X.js","assets/stripe-_DlI7Ze0.js","assets/minus-BzGOuTe1.js","assets/Dashboard-ofLh_z8d.js","assets/grid-D52L5OkU.js","assets/LeaveDrawer-LG1rocLy.js","assets/hand-nW8dY8ZR.js","assets/useChat-CTgykdIS.js","assets/voice-input-overlay-DZIjiySF.js","assets/monitor-DM_b_iM_.js","assets/database-CtTbisPk.js","assets/markdown-LNKZICzq.js","assets/waves-DOaMSuet.js","assets/user-VIWoit9X.js","assets/circle-plus-DqKCDXH8.js","assets/Dashboard-DULRuONn.css","assets/CreateCompany-DUcwrYkN.js","assets/AcceptInvite-DgYtiEfw.js","assets/AcceptPartnerInvite-BYPZXm0L.js","assets/radio-group-6EcNJv12.js","assets/PublicInfoScreen-DMZ1gfX2.js","assets/PaymentReturnView-CVpxJ0J4.js","assets/useContentTranslations-CKzBtSyx.js","assets/imageOptimize-AC9pXZTW.js","assets/GuestStep-B88lf7D9.js","assets/CountryPicker-R-A7aseu.js","assets/NexiEmbeddedCheckout-CMLZ4JfK.js","assets/InlineConfirmation-BnhO2aQ9.js","assets/AnimatedCheckmark-Dwm_DH-P.js","assets/download-2eftF7L5.js","assets/calendar-plus-BF9z9j3Z.js","assets/index-D9LCAESz.js","assets/WaitingForPayment-gJG0bKXp.js","assets/PublicBookingConfirmation-DDrnDaOm.js","assets/PublicWidget-GtjFXCuN.js","assets/PublicCheckout-lv0qp216.js","assets/PublicItinerary-DFB6dunF.js","assets/info-C_JVvjWN.js","assets/timer-CmN1XIjp.js","assets/PublicGallery-FQqnSiVD.js","assets/image-C1I-NRaM.js","assets/CheckoutSuccess-BROsK-rS.js","assets/CheckoutCancel-DSIbVrf9.js","assets/Contacts-d2GiQvt0.js","assets/Projects-BYnfeM4W.js","assets/ProjectDetail-CVacNjfA.js","assets/Resources-uSTDMeoG.js","assets/ResourceTypes-C1sPO8A0.js","assets/lock-BJom2p32.js","assets/Blockings-qso3m7AP.js","assets/Leaves-DkyLE200.js","assets/Personnel-BZO2T4Mg.js","assets/user-plus-jotwkjwG.js","assets/Competences-bKxHD9EE.js","assets/Activities-Bp9yZu89.js","assets/ActivityPriceEditor-diTsk5Wu.js","assets/history-CPpacLNC.js","assets/seriesSummaryFormatter-ENkW9NFr.js","assets/upload-CU8Mf46A.js","assets/checkbox-B9jmUlXT.js","assets/clipboard-BBY9kkmn.js","assets/useActivityCategories-BNBZDKg8.js","assets/useIncomeProfiles-CXC5bVtl.js","assets/useFinance-BhtDLLcR.js","assets/PriceCategories-D-Hoct5J.js","assets/ActivityCategories-B9o3Y8Mw.js","assets/RecurringSeriesDetail-BSOe11zJ.js","assets/Booking-CmblAHvI.js","assets/toggle-right-Dmmgfx3r.js","assets/usePartners-CCDRlaEo.js","assets/Bookings-D8gTOogY.js","assets/Chat-BDN8d9lX.js","assets/PaymentLogs-Jv0jR1s-.js","assets/PaymentTransactions-KLnTP3Pr.js","assets/arrow-up-right-BHqZl5KP.js","assets/PromoCodes-iI8fc44-.js","assets/CompanyInbox-BWU0_rSm.js","assets/useInboundEmails-ax26Rzht.js","assets/InboundEmailDetail-lxVATPOC.js","assets/GiftCards-BI-nmPjC.js","assets/Partners-DOOxzfU1.js","assets/Distributors-Ci_i6SfT.js","assets/IncomeProfiles-BFaAIjXB.js","assets/ResourcePlanner-ngpa8HnK.js","assets/MyTrips-CnQhpOvb.js","assets/MyProfile-BCaTBoJq.js","assets/Finance-t4XVWrhp.js","assets/FinanceRegister-CRtrNUai.js","assets/FinanceAccounts-JtsECdEd.js","assets/FinanceJournal-Dr19XCqd.js","assets/FinanceDocuments-CmjfGesu.js","assets/FinanceTaxCodes-C0LEPu-H.js","assets/FinanceReceivables-BD5T1u_b.js","assets/FinancePayables-DqUzEtxQ.js"])))=>i.map(i=>d[i]); 2var pg=Object.defineProperty;var gg=(e,n,a)=>n in e?pg(e,n,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[n]=a;var rn=(e,n,a)=>gg(e,typeof n!="symbol"?n+"":n,a);import{j as t,u as st,a as Ee,b as de,Q as fg,c as Dl}from"./query-Chz64zBh.js";import{a as ps,r as d,R as O,b as hg,g as gs,L as li,u as Jn,f as sr,h as se,N as ya,i as Ni,j as vg,B as eo}from"./vendor-CSFuv7tw.js";import{c as yg,b as _a,u as Zn,B as bg,P as lt,V as Xc,d as fs,e as ed,f as mi,g as Qt,R as xg,h as kg,i as pi,j as wg,S as Ea,O as Xn,C as ea,k as Ai,T as Ra,D as za,l as P
2i,m as ji,n as td,o as Sg,p as Cg,q as Ng,r as Kn,s as nd,I as Ag,t as ad,v as id,w as Pg,x as rd,y as jg,L as od,z as sd,A as Tg,E as Dg,F as ld,G as _g,H as Eg,J as cd,K as dd,M as Rg,N as ud,Q as md,U as pd,W as gd,X as fd,Y as hd,Z as vd,$ as zg,a0 as Mg,a1 as yd,a2 as Ig,a3 as bd,a4 as Lg,a5 as Fg,a6 as Og,a7 as Bg,a8 as gi,a9 as xd,aa as qg,ab as Vg,ac as Kg,ad as kd,ae as wd,af as Sd}from"./ui-DXMeZLsL.js";import{a as Cd,R as Fo,A as Wg,b as Ug,L as _l,C as El,X as Rl,Y as zl,T as Ml,d as to}from"./charts-wunufEj4.js";import{c as Hg}from"./supabase-TY-roNVC.js";import{A as en,m as rt,u as Gg,a as $g,b as Yg}from"./motion-DALD2mD3.js";import{b as qt,a as pt,c as Ti,d as gt,i as Il,e as Kt,s as no,f as Yt,g as mn,h as Zt,j as hs,k as Ll,l as fn,m as fi,n as vs,o as Nd,p as Oo,q as Qg,r as Jg,t as Bo,u as ys,v as Zg,w as ao,x as Fl,y as Xg,z as ef,A as tf,B as Ad,C as Pd,D as bs,E as xs,F as nf,G as af,H as At,I as jd,J as rf,K as pa,L as Ol,M as of}from"./dates-CphUaXMC.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&i(l)}).observe(document,{childList:!0,subtree:!0});function a(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(r){if(r.ep)return;r.ep=!0;const o=a(r);fetch(r.href,o)}})();var Td,Bl=ps;Td=Bl.createRoot,Bl.hydrateRoot;const sf=1,lf=1e6;let io=0;function cf(){return io=(io+1)%Number.MAX_SAFE_INTEGER,io.toString()}const ro=new Map,ql=e=>{if(ro.has(e))return;const n=setTimeout(()=>{ro.delete(e),ci({type:"REMOVE_TOAST",toastId:e})},lf);ro.set(e,n)},df=(e,n)=>{switch(n.type){case"ADD_TOAST":return{...e,toasts:[n.toast,...e.toasts].slice(0,sf)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(a=>a.id===n.toast.id?{...a,...n.toast}:a)};case"DISMISS_TOAST":{const{toastId:a}=n;return a?ql(a):e.toasts.forEach(i=>{ql(i.id)}),{...e,toasts:e.toasts.map(i=>i.id===a||a===void 0?{...i,open:!1}:i)}}case"REMOVE_TOAST":return n.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(a=>a.id!==n.toastId)}}},Xi=[];let er={toasts:[]};function ci(e){er=df(er,e),Xi.forEach(n=>{n(er)})}function uf({...e}){const n=cf(),a=r=>ci({type:"UPDATE_TOAST",toast:{...r,id:n}}),i=()=>ci({type:"DISMISS_TOAST",toastId:n});return ci({type:"ADD_TOAST",toast:{...e,id:n,open:!0,onOpenChange:r=>{r||i()}}}),{id:n,dismiss:i,update:a}}function Dt(){const[e,n]=d.useState(er);return d.useEffect(()=>(Xi.push(n),()=>{const a=Xi.indexOf(n);a>-1&&Xi.splice(a,1)}),[e]),{...e,toast:uf,dismiss:a=>ci({type:"DISMISS_TOAST",toastId:a})}}var ks="ToastProvider",[ws,mf,pf]=yg("Toast"),[Dd,GD]=_a("Toast",[pf]),[gf,Ar]=Dd(ks),_d=e=>{const{__scopeToast:n,label:a="Notification",duration:i=5e3,swipeDirection:r="right",swipeThreshold:o=50,children:l}=e,[s,c]=d.useState(null),[u,m]=d.useState(0),g=d.useRef(!1),f=d.useRef(!1);return a.trim()||console.error(`Invalid prop \`label\` supplied to \`${ks}\`. Expected non-empty \`string\`.`),t.jsx(ws.Provider,{scope:n,children:t.jsx(gf,{scope:n,label:a,duration:i,swipeDirection:r,swipeThreshold:o,toastCount:u,viewport:s,onViewportChange:c,onToastAdd:d.useCallback(()=>m(p=>p+1),[]),onToastRemove:d.useCallback(()=>m(p=>p-1),[]),isFocusedToastEscapeKeyDownRef:g,isClosePausedRef:f,children:l})})};_d.displayName=ks;var Ed="ToastViewport",ff=["F8"],qo="toast.viewportPause",Vo="toast.viewportResume",Rd=d.forwardRef((e,n)=>{const{__scopeToast:a,hotkey:i=ff,label:r="Notifications ({hotkey})",...o}=e,l=Ar(Ed,a),s=mf(a),c=d.useRef(null),u=d.useRef(null),m=d.useRef(null),g=d.useRef(null),f=Zn(n,g,l.onViewportChange),p=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),h=l.toastCount>0;d.useEffect(()=>{const y=v=>{var x;i.length!==0&&i.every(S=>v[S]||v.code===S)&&((x=g.current)==null||x.focus())};return document.addEventListener("keydown",y),()=>document.removeEventListener("keydown",y)},[i]),d.useEffect(()=>{const y=c.current,v=g.current;if(h&&y&&v){const w=()=>
2{if(!l.isClosePausedRef.current){const C=new CustomEvent(qo);v.dispatchEvent(C),l.isClosePausedRef.current=!0}},x=()=>{if(l.isClosePausedRef.current){const C=new CustomEvent(Vo);v.dispatchEvent(C),l.isClosePausedRef.current=!1}},S=C=>{!y.contains(C.relatedTarget)&&x()},k=()=>{y.contains(document.activeElement)||x()};return y.addEventListener("focusin",w),y.addEventListener("focusout",S),y.addEventListener("pointermove",w),y.addEventListener("pointerleave",k),window.addEventListener("blur",w),window.addEventListener("focus",x),()=>{y.removeEventListener("focusin",w),y.removeEventListener("focusout",S),y.removeEventListener("pointermove",w),y.removeEventListener("pointerleave",k),window.removeEventListener("blur",w),window.removeEventListener("focus",x)}}},[h,l.isClosePausedRef]);const b=d.useCallback(({tabbingDirection:y})=>{const w=s().map(x=>{const S=x.ref.current,k=[S,...jf(S)];return y==="forwards"?k:k.reverse()});return(y==="forwards"?w.reverse():w).flat()},[s]);return d.useEffect(()=>{const y=g.current;if(y){const v=w=>{var k,C,A;const x=w.altKey||w.ctrlKey||w.metaKey;if(w.key==="Tab"&&!x){const q=document.activeElement,P=w.shiftKey;if(w.target===y&&P){(k=u.current)==null||k.focus();return}const F=b({tabbingDirection:P?"backwards":"forwards"}),R=F.findIndex(E=>E===q);oo(F.slice(R+1))?w.preventDefault():P?(C=u.current)==null||C.focus():(A=m.current)==null||A.focus()}};return y.addEventListener("keydown",v),()=>y.removeEventListener("keydown",v)}},[s,b]),t.jsxs(bg,{ref:c,role:"region","aria-label":r.replace("{hotkey}",p),tabIndex:-1,style:{pointerEvents:h?void 0:"none"},children:[h&&t.jsx(Ko,{ref:u,onFocusFromOutsideViewport:()=>{const y=b({tabbingDirection:"forwards"});oo(y)}}),t.jsx(ws.Slot,{scope:a,children:t.jsx(lt.ol,{tabIndex:-1,...o,ref:f})}),h&&t.jsx(Ko,{ref:m,onFocusFromOutsideViewport:()=>{const y=b({tabbingDirection:"backwards"});oo(y)}})]})});Rd.displayName=Ed;var zd="ToastFocusProxy",Ko=d.forwardRef((e,n)=>{const{__scopeToast:a,onFocusFromOutsideViewport:i,...r}=e,o=Ar(zd,a);return t.jsx(Xc,{"aria-hidden":!0,tabIndex:0,...r,ref:n,style:{position:"fixed"},onFocus:l=>{var u;const s=l.relatedTarget;!((u=o.viewport)!=null&&u.contains(s))&&i()}})});Ko.displayName=zd;var Di="Toast",hf="toast.swipeStart",vf="toast.swipeMove",yf="toast.swipeCancel",bf="toast.swipeEnd",Md=d.forwardRef((e,n)=>{const{forceMount:a,open:i,defaultOpen:r,onOpenChange:o,...l}=e,[s,c]=fs({prop:i,defaultProp:r??!0,onChange:o,caller:Di});return t.jsx(ed,{present:a||s,children:t.jsx(wf,{open:s,...l,ref:n,onClose:()=>c(!1),onPause:mi(e.onPause),onResume:mi(e.onResume),onSwipeStart:Qt(e.onSwipeStart,u=>{u.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:Qt(e.onSwipeMove,u=>{const{x:m,y:g}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","move"),u.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${m}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${g}px`)}),onSwipeCancel:Qt(e.onSwipeCancel,u=>{u.currentTarget.setAttribute("data-swipe","cancel"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:Qt(e.onSwipeEnd,u=>{const{x:m,y:g}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","end"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${m}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${g}px`),c(!1)})})})});Md.displayName=Di;var[xf,kf]=Dd(Di,{onClose(){}}),wf=d.forwardRef((e,n)=>{const{__scopeToast:a,type:i="foreground",duration:r,open:o,onClose:l,onEscapeKeyDown:s,onPause:c,onResume:u,onSwipeStart:m,onSwipeMove:g,onSwipeCancel:f,onSwipeEnd:p,...h}=e,b=Ar(Di,a),[y,v]=d.useState(null),w=Zn(n,E=>v(E)),x=d.useRef(null),S=d.useRef(null),k=r||b.duration,C=d.useRef(0),A=d.useRef(k),q=d.useRef(0),{onToastAdd:P,onToastRemove:D}=b,z=mi(()=>{var L;(y==null?void 0:y.contains(document.activeElement))&&((L=b.viewport)==null||L.focus()),l()}),F=d.useCallback(E=>
2{!E||E===1/0||(window.clearTimeout(q.current),C.current=new Date().getTime(),q.current=window.setTimeout(z,E))},[z]);d.useEffect(()=>{const E=b.viewport;if(E){const L=()=>{F(A.current),u==null||u()},M=()=>{const j=new Date().getTime()-C.current;A.current=A.current-j,window.clearTimeout(q.current),c==null||c()};return E.addEventListener(qo,M),E.addEventListener(Vo,L),()=>{E.removeEventListener(qo,M),E.removeEventListener(Vo,L)}}},[b.viewport,k,c,u,F]),d.useEffect(()=>{o&&!b.isClosePausedRef.current&&F(k)},[o,k,b.isClosePausedRef,F]),d.useEffect(()=>(P(),()=>D()),[P,D]);const R=d.useMemo(()=>y?Vd(y):null,[y]);return b.viewport?t.jsxs(t.Fragment,{children:[R&&t.jsx(Sf,{__scopeToast:a,role:"status","aria-live":i==="foreground"?"assertive":"polite","aria-atomic":!0,children:R}),t.jsx(xf,{scope:a,onClose:z,children:ps.createPortal(t.jsx(ws.ItemSlot,{scope:a,children:t.jsx(xg,{asChild:!0,onEscapeKeyDown:Qt(s,()=>{b.isFocusedToastEscapeKeyDownRef.current||z(),b.isFocusedToastEscapeKeyDownRef.current=!1}),children:t.jsx(lt.li,{role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":o?"open":"closed","data-swipe-direction":b.swipeDirection,...h,ref:w,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:Qt(e.onKeyDown,E=>{E.key==="Escape"&&(s==null||s(E.nativeEvent),E.nativeEvent.defaultPrevented||(b.is
2FocusedToastEscapeKeyDownRef.current=!0,z()))}),onPointerDown:Qt(e.onPointerDown,E=>{E.button===0&&(x.current={x:E.clientX,y:E.clientY})}),onPointerMove:Qt(e.onPointerMove,E=>{if(!x.current)return;const L=E.clientX-x.current.x,M=E.clientY-x.current.y,j=!!S.current,I=["left","right"].includes(b.swipeDirection),V=["left","up"].includes(b.swipeDirection)?Math.min:Math.max,Y=I?V(0,L):0,X=I?0:V(0,M),_=E.pointerType==="touch"?10:2,N={x:Y,y:X},W={originalEvent:E,delta:N};j?(S.current=N,Ki(vf,g,W,{discrete:!1})):Vl(N,b.swipeDirection,_)?(S.current=N,Ki(hf,m,W,{discrete:!1}),E.target.setPointerCapture(E.pointerId)):(Math.abs(L)>_||Math.abs(M)>_)&&(x.current=null)}),onPointerUp:Qt(e.onPointerUp,E=>{const L=S.current,M=E.target;if(M.hasPointerCapture(E.pointerId)&&M.releasePointerCapture(E.pointerId),S.current=null,x.current=null,L){const j=E.currentTarget,I={originalEvent:E,delta:L};Vl(L,b.swipeDirection,b.swipeThreshold)?Ki(bf,p,I,{discrete:!0}):Ki(yf,f,I,{discrete:!0}),j.addEventListener("click",V=>V.preventDefault(),{once:!0})}})})})}),b.viewport)})]}):null}),Sf=e=>{const{__scopeToast:n,children:a,...i}=e,r=Ar(Di,n),[o,l]=d.useState(!1),[s,c]=d.useState(!1);return Af(()=>l(!0)),d.useEffect(()=>{const u=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(u)},[]),s?null:t.jsx(kg,{asChild:!0,children:t.jsx(Xc,{...i,children:o&&t.jsxs(t.Fragment,{children:[r.label," ",a]})})})},Cf="ToastTitle",Id=d.forwardRef((e,n)=>{const{__scopeToast:a,...i}=e;return t.jsx(lt.div,{...i,ref:n})});Id.displayName=Cf;var Nf="ToastDescription",Ld=d.forwardRef((e,n)=>{const{__scopeToast:a,...i}=e;return t.jsx(lt.div,{...i,ref:n})});Ld.displayName=Nf;var Fd="ToastAction",Od=d.forwardRef((e,n)=>{const{altText:a,...i}=e;return a.trim()?t.jsx(qd,{altText:a,asChild:!0,children:t.jsx(Ss,{...i,ref:n})}):(console.error(`Invalid prop \`altText\` supplied to \`${Fd}\`. Expected non-empty \`string\`.`),null)});Od.displayName=Fd;var Bd="ToastClose",Ss=d.forwardRef((e,n)=>{const{__scopeToast:a,...i}=e,r=kf(Bd,a);return t.jsx(qd,{asChild:!0,children:t.jsx(lt.button,{type:"button",...i,ref:n,onClick:Qt(e.onClick,r.onClose)})})});Ss.displayName=Bd;var qd=d.forwardRef((e,n)=>{const{__scopeToast:a,altText:i,...r}=e;return t.jsx(lt.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":i||void 0,...r,ref:n})});function Vd(e){const n=[];return Array.from(e.childNodes).forEach(i=>{if(i.nodeType===i.TEXT_NODE&&i.textContent&&n.push(i.textContent),Pf(i)){const r=i.ariaHidden||i.hidden||i.style.display==="none",o=i.dataset.radixToastAnnounceExclude==="";if(!r)if(o){const l=i.dataset.radixToastAnnounceAlt;l&&n.push(l)}else n.push(...Vd(i))}}),n}function Ki(e,n,a,{discrete:i}){const r=a.originalEvent.currentTarget,o=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:a});n&&r.addEventListener(e,n,{once:!0}),i?wg(r,o):r.dispatchEvent(o)}var Vl=(e,n,a=0)=>{const i=Math.abs(e.x),r=Math.abs(e.y),o=i>r;return n==="left"||n==="right"?o&&i>a:!o&&r>a};function Af(e=()=>{}){const n=mi(e);pi(()=>{let a=0,i=0;return a=window.requestAnimationFrame(()=>i=window.requestAnimationFrame(n)),()=>{window.cancelAnimationFrame(a),window.cancelAnimationFrame(i)}},[n])}function Pf(e){return e.nodeType===e.ELEMENT_NODE}function jf(e){const n=[],a=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:i=>{const r=i.tagName==="INPUT"&&i.type==="hidden";return i.disabled||i.hidden||r?NodeFilter.FILTER_SKIP:i.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;a.nextNode();)n.push(a.currentNode);return n}function oo(e){const n=document.activeElement;return e.some(a=>a===n?!0:(a.focus(),document.activeElement!==n))}var Tf=_d,Kd=Rd,Wd=Md,Ud=Id,Hd=Ld,Gd=Od,$d=Ss;const Kl=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,Wl=Cd,Ma=(e,n)=>a=>{var i;if((n==null?void 0:n.variants)==null)return Wl(e,a==null?void 0:a.class,a==null?void 0:a.className);const{variants:r,defaultVariants:o}=n,l=Object.keys(r).map(u=>{const m=a==null?void 0:a[u],g=o==null?void 0:o[u];if(m===null)return null;const f=Kl(m)||Kl(g);return r[u][f]}),s=a&&Object.entries(a).reduce((u,m)=>{let[g,f]=m;return f===void 0||(u[g]=f),u},{}),c=n==null||(i=n.compoundVariants)===null||i===void 0?void 0:i.reduce((u,m)=>{let{class:g,className:f,...p}=m;return Object.entries(p).every(h=>{let[b,y]=h;return Array.isArray(y)?y.includes({...o,...s}[b]):{...o,...s}[b]===y})?[...u,g,f]:u},[]);return Wl(e,l,c,a==null?void 0:a.class,a==null?void 0:a.className)};/** 3 * @license lucide-react v0.462.0 - ISC 4 * 5 * This source code is licensed under the ISC license. 6 * See the LICENSE file in the root directory of this source tree. 7 */const Df=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Yd=(...e)=>e.filter((n,a,i)=>!!n&&n.trim()!==""&&i.indexOf(n)===a).join(" ").trim();/** 8 * @license lucide-react v0.462.0 - ISC 9 * 10 * This source code is licensed under the ISC license. 11 * See the LICENSE file in the root directory of this source tree. 12 */var _f={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** 13 * @license lucide-react v0.462.0 - ISC 14 * 15 * This source code is licensed under the ISC license. 16 * See the LICENSE file in the root directory of this source tree. 17 */const Ef=d.forwardRef(({color:e="currentColor",size:n=24,strokeWidth:a=2,absoluteStrokeWidth:i,className:r="",children:o,iconNode:l,...s},c)=>d.createElement("svg",{ref:c,..._f,width:n,height:n,stroke:e,strokeWidth:i?Number(a)*24/Number(n):a,className:Yd("lucide",r),...s},[...l.map(([u,m])=>d.createElement(u,m)),...Array.isArray(o)?o:[o]]));/** 18 * @license lucide-react v0.462.0 - ISC 19 * 20 * This source code is licensed under the ISC license. 21 * See the LICENSE file in the root directory of this source tree. 22 */const ee=(e,n)=>{const a=d.forwardRef(({className:i,...r},o)=>d.createElement(Ef,{ref:o,iconNode:n,className:Yd(`lucide-${Df(e)}`,i),...r}));return a.displayName=`${e}`,a};/** 23 * @license lucide-react v0.462.0 - ISC 24 * 25 * This source code is licensed under the ISC license. 26 * See the LICENSE file in the root directory of this source tree. 27 */const Rf=ee("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l
27-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/** 28 * @license lucide-react v0.462.0 - ISC 29 * 30 * This source code is licensed under the ISC license. 31 * See the LICENSE file in the root directory of this source tree. 32 */const Wn=ee("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/** 33 * @license lucide-react v0.462.0 - ISC 34 * 35 * This source code is licensed under the ISC license. 36 * See the LICENSE file in the root directory of this source tree. 37 */const Wo=ee("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);/** 38 * @license lucide-react v0.462.0 - ISC 39 * 40 * This source code is licensed under the ISC license. 41 * See the LICENSE file in the root directory of this source tree. 42 */const zf=ee("Award",[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]]);/** 43 * @license lucide-react v0.462.0 - ISC 44 * 45 * This source code is licensed under the ISC license. 46 * See the LICENSE file in the root directory of this source tree. 47 */const Mf=ee("Ban",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]]);/** 48 * @license lucide-react v0.462.0 - ISC 49 * 50 * This source code is licensed under the ISC license. 51 * See the LICENSE file in the root directory of this source tree. 52 */const If=ee("BookOpen",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);/** 53 * @license lucide-react v0.462.0 - ISC 54 * 55 * This source code is licensed under the ISC license. 56 * See the LICENSE file in the root directory of this source tree. 57 */const Lf=ee("Box",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);/** 58 * @license lucide-react v0.462.0 - ISC 59 * 60 * This source code is licensed under the ISC license. 61 * See the LICENSE file in the root directory of this source tree. 62 */const Cn=ee("Building2",[["path",{d:"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z",key:"1b4qmf"}],["path",{d:"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2",key:"i71pzd"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2",key:"10jefs"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"M10 10h4",key:"tcdvrf"}],["path",{d:"M10 14h4",key:"kelpxr"}],["path",{d:"M10 18h4",key:"1ulq68"}]]);/** 63 * @license lucide-react v0.462.0 - ISC 64 * 65 * This source code is licensed under the ISC license. 66 * See the LICENSE file in the root directory of this source tree. 67 */const Ff=ee("Cake",[["path",{d:"M20 21v-8a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8",key:"1w3rig"}],["path",{d:"M4 16s.5-1 2-1 2.5 2 4 2 2.5-2 4-2 2.5 2 4 2 2-1 2-1",key:"n2jgmb"}],["path",{d:"M2 21h20",key:"1nyx9w"}],["path",{d:"M7 8v3",key:"1qtyvj"}],["path",{d:"M12 8v3",key:"hwp4zt"}],["path",{d:"M17 8v3",key:"1i6e5u"}],["path",{d:"M7 4h.01",key:"1bh4kh"}],["path",{d:"M12 4h.01",key:"1ujb9j"}],["path",{d:"M17 4h.01",key:"1upcoc"}]]);/** 68 * @license lucide-react v0.462.0 - ISC 69 * 70 * This source code is licensed under the ISC license. 71 * See the LICENSE file in the root directory of this source tree. 72 */const Of=ee("CalendarClock",[["path",{d:"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5",key:"1osxxc"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M3 10h5",key:"r794hk"}],["path",{d:"M17.5 17.5 16 16.3V14",key:"akvzfd"}],["circle",{cx:"16",cy:"16",r:"6",key:"qoo3c4"}]]);/** 73 * @license lucide-react v0.462.0 - ISC 74 * 75 * This source code is licensed under the ISC license. 76 * See the LICENSE file in the root directory of this source tree. 77 */const Cs=ee("CalendarDays",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 18h.01",key:"lrp35t"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M16 18h.01",key:"kzsmim"}]]);/** 78 * @license lucide-react v0.462.0 - ISC 79 * 80 * This source code is licensed under the ISC license. 81 * See the LICENSE file in the root directory of this source tree. 82 */const lr=ee("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);/** 83 * @license lucide-react v0.462.0 - ISC 84 * 85 * This source code is licensed under the ISC license. 86 * See the LICENSE file in the root directory of this source tree. 87 */const Qd=ee("Camera",[["path",{d:"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z",key:"1tc9qg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]]);/** 88 * @license lucide-react v0.462.0 - ISC 89 * 90 * This source code is licensed under the ISC license. 91 * See the LICENSE file in the root directory of this source tree. 92 */const Jd=ee("ChartColumn",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);/** 93 * @license lucide-react v0.462.0 - ISC 94 * 95 * This source code is licensed under the ISC license. 96 * See the LICENSE file in the root directory of this source tree. 97 */const Xt=ee("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/** 98 * @license lucide-react v0.462.0 - ISC 99 * 100 * This source code is licensed under the ISC license. 101 * See the LICENSE file in the root directory of this source tree. 102 */const hn=ee("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/** 103 * @license lucide-react v0.462.0 - ISC 104 * 105 * This source code is licensed under the ISC license. 106 * See the LICENSE file in the root directory of this source tree. 107 */const Uo=ee("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);/** 108 * @license lucide-react v0.462.0 - ISC 109 * 110 * This source code is licensed under the ISC license. 111 * See the LICENSE file in the root directory of this source tree. 112 */const Ns=ee("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** 113 * @license lucide-react v0.462.0 - ISC 114 * 115 * This source code is licensed under the ISC license. 116 * See the LICENSE file in the root directory of this source tree. 117 */const Pr=ee("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/** 118 * @license lucide-react v0.462.0 - ISC 119 * 120 * This source code is licensed under the ISC license. 121 * See the LICENSE file in the root directory of this source tree. 122 */const Bf=ee("ChevronsLeft",[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]]);/** 123 * @license lucide-react v0.462.0 - ISC 124 * 125 * This source code is licensed under the ISC license. 126 * See the LICENSE file in the root directory of this source tree. 127 */const qf=ee("ChevronsRight",[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]]);/** 128 * @license lucide-react v0.462.0 - ISC 129 * 130 * This source code is licensed under the ISC license. 131 * See the LICENSE file in the root directory of this source tree. 132 */const Vf=ee("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);/** 133 * @license lucide-react v0.462.0 - ISC 134 * 135 * This source code is licensed under the ISC license. 136 * See the LICENSE file in the root directory of this source tree. 137 */const Zd=ee("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/** 138 * @license lucide-react v0.462.0 - ISC 139 * 140 * This source code is licensed under the ISC license. 141 * See the LICENSE file in the root directory of this source tree. 142 */const di=ee("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/** 143 * @license lucide-react v0.462.0 - ISC 144 * 145 * This source code is licensed under the ISC license. 146 * See the LICENSE file in the root directory of this source tree. 147 */const Kf=ee("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** 148 * @license lucide-react v0.462.0 - ISC 149 * 150 * This source code is licensed under the ISC license. 151 * See the LICENSE file in the root directory of this source tree. 152 */const Hn=ee("CircleSlash",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"9",x2:"15",y1:"15",y2:"9",key:"1dfufj"}]]);/** 153 * @license lucide-react v0.462.0 - ISC 154 * 155 * This source code is licensed under the ISC license. 156 * See the LICENSE file in the root directory of this source tree. 157 */const Xd=ee("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/** 158 * @license lucide-react v0.462.0 - ISC 159 * 160 * This source code is licensed under the ISC license. 161 * See the LICENSE file in the root directory of this source tree. 162 */const Wf=ee("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** 163 * @license lucide-react v0.462.0 - ISC 164 * 165 * This source code is licensed under the ISC license. 166 * See the LICENSE file in the root directory of this source tree. 167 */const Ia=ee("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/** 168 * @license lucide-react v0.462.0 - ISC 169 * 170 * This source code is licensed under the ISC license. 171 * See the LICENSE file in the root directory of this source tree. 172 */const Uf=ee("CloudDrizzle",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M8 19v1",key:"1dk2by"}],["path",{d:"M8 14v1",key:"84yxot"}],["path",{d:"M16 19v1",key:"v220m7"}],["path",{d:"M16 14v1",key:"g12gj6"}],["path",{d:"M12 21v1",key:"q8vafk"}],["path",{d:"M12 16v1",key:"1mx6rx"}]]);/** 173 * @license lucide-react v0.462.0 - ISC 174 * 175 * This source code is licensed under the ISC license. 176 * See the LICENSE file in the root directory of this source tree. 177 */const Hf=ee("CloudFog",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M16 17H7",key:"pygtm1"}],["path",{d:"M17 21H9",key:"1u2q02"}]]);/** 178 * @license lucide-react v0.462.0 - ISC 179 * 180 * This source code is licensed under the ISC license. 181 * See the LICENSE file in the root directory of this source tree. 182 */const Gf=ee("CloudHail",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M16 14v2",key:"a1is7l"}],["path",{d:"M8 14v2",key:"1e9m6t"}],["path",{d:"M16 20h.01",key:"xwek51"}],["path",{d:"M8 20h.01",key:"1vjney"}],["path",{d:"M12 16v2",key:"z66u1j"}],["path",{d:"M12 22h.01",key:"1urd7a"}]]);/** 183 * @license lucide-react v0.462.0 - ISC 184 * 185 * This source code is licensed under the ISC license. 186 * See the LICENSE file in the root directory of this source tree. 187 */const $f=ee("CloudLightning",[["path",{d:"M6 16.326A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 .5 8.973",key:"1cez44"}],["path",{d:"m13 12-3 5h4l-3 5",key:"1t22er"}]]);/** 188 * @license lucide-react v0.462.0 - ISC 189 * 190 * This source code is licensed under the ISC license. 191 * See the LICENSE file in the root directory of this source tree. 192 */const Yf=ee("CloudRain",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M16 14v6",key:"1j4efv"}],["path",{d:"M8 14v6",key:"17c4r9"}],["path",{d:"M12 16v6",key:"c8a4gj"}]]);/** 193 * @license lucide-react v0.462.0 - ISC 194 * 195 * This source code is licensed under the ISC license. 196 * See the LICENSE file in the root directory of this source tree. 197 */const Qf=ee("CloudSnow",[["path",{d:"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242",key:"1pljnt"}],["path",{d:"M8 15h.01",key:"a7atzg"}],["path",{d:"M8 19h.01",key:"puxtts"}],["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M12 21h.01",key:"h35vbk"}],["path",{d:"M16 15h.01",key:"rnfrdf"}],["path",{d:"M16 19h.01",key:"1vcnzz"}]]);/** 198 * @license lucide-react v0.462.0 - ISC 199 * 200 * This source code is licensed under the ISC license. 201 * See the LICENSE file in the root directory of this source tree. 202 */const eu=ee("CloudSun",[["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}],["path",{d:"M15.947 12.65a4 4 0 0 0-5.925-4.128",key:"dpwdj0"}
202],["path",{d:"M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z",key:"s09mg5"}]]);/** 203 * @license lucide-react v0.462.0 - ISC 204 * 205 * This source code is licensed under the ISC license. 206 * See the LICENSE file in the root directory of this source tree. 207 */const Ul=ee("Cloud",[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]]);/** 208 * @license lucide-react v0.462.0 - ISC 209 * 210 * This source code is licensed under the ISC license. 211 * See the LICENSE file in the root directory of this source tree. 212 */const Jf=ee("Columns3",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);/** 213 * @license lucide-react v0.462.0 - ISC 214 * 215 * This source code is licensed under the ISC license. 216 * See the LICENSE file in the root directory of this source tree. 217 */const Zf=ee("Contact",[["path",{d:"M16 2v2",key:"scm5qe"}],["path",{d:"M7 22v-2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2",key:"1waht3"}],["path",{d:"M8 2v2",key:"pbkmx"}],["circle",{cx:"12",cy:"11",r:"3",key:"itu57m"}],["rect",{x:"3",y:"4",width:"18",height:"18",rx:"2",key:"12vinp"}]]);/** 218 * @license lucide-react v0.462.0 - ISC 219 * 220 * This source code is licensed under the ISC license. 221 * See the LICENSE file in the root directory of this source tree. 222 */const tu=ee("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/** 223 * @license lucide-react v0.462.0 - ISC 224 * 225 * This source code is licensed under the ISC license. 226 * See the LICENSE file in the root directory of this source tree. 227 */const nu=ee("CreditCard",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]);/** 228 * @license lucide-react v0.462.0 - ISC 229 * 230 * This source code is licensed under the ISC license. 231 * See the LICENSE file in the root directory of this source tree. 232 */const Hl=ee("Droplets",[["path",{d:"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z",key:"1ptgy4"}],["path",{d:"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97",key:"1sl1rz"}]]);/** 233 * @license lucide-react v0.462.0 - ISC 234 * 235 * This source code is licensed under the ISC license. 236 * See the LICENSE file in the root directory of this source tree. 237 */const Xf=ee("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/** 238 * @license lucide-react v0.462.0 - ISC 239 * 240 * This source code is licensed under the ISC license. 241 * See the LICENSE file in the root directory of this source tree. 242 */const jr=ee("EyeOff",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** 243 * @license lucide-react v0.462.0 - ISC 244 * 245 * This source code is licensed under the ISC license. 246 * See the LICENSE file in the root directory of this source tree. 247 */const As=ee("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** 248 * @license lucide-react v0.462.0 - ISC 249 * 250 * This source code is licensed under the ISC license. 251 * See the LICENSE file in the root directory of this source tree. 252 */const eh=ee("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/** 253 * @license lucide-react v0.462.0 - ISC 254 * 255 * This source code is licensed under the ISC license. 256 * See the LICENSE file in the root directory of this source tree. 257 */const th=ee("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);/** 258 * @license lucide-react v0.462.0 - ISC 259 * 260 * This source code is licensed under the ISC license. 261 * See the LICENSE file in the root directory of this source tree. 262 */const nh=ee("Gift",[["rect",{x:"3",y:"8",width:"18",height:"4",rx:"1",key:"bkv52"}],["path",{d:"M12 8v13",key:"1c76mn"}],["path",{d:"M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7",key:"6wjy6b"}],["path",{d:"M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5",key:"1ihvrl"}]]);/** 263 * @license lucide-react v0.462.0 - ISC 264 * 265 * This source code is licensed under the ISC license. 266 * See the LICENSE file in the root directory of this source tree. 267 */const ah=ee("GitBranch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);/** 268 * @license lucide-react v0.462.0 - ISC 269 * 270 * This source code is licensed under the ISC license. 271 * See the LICENSE file in the root directory of this source tree. 272 */const Ps=ee("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/** 273 * @license lucide-react v0.462.0 - ISC 274 * 275 * This source code is licensed under the ISC license. 276 * See the LICENSE file in the root directory of this source tree. 277 */const ih=ee("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);/** 278 * @license lucide-react v0.462.0 - ISC 279 * 280 * This source code is licensed under the ISC license. 281 * See the LICENSE file in the root directory of this source tree. 282 */const rh=ee("Handshake",[["path",{d:"m11 17 2 2a1 1 0 1 0 3-3",key:"efffak"}],["path",{d:"m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4",key:"9pr0kb"}],["path",{d:"m21 3 1 11h-2",key:"1tisrp"}],["path",{d:"M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3",key:"1uvwmv"}],["path",{d:"M3 4h8",key:"1ep09j"}]]);/** 283 * @license lucide-react v0.462.0 - ISC 284 * 285 * This source code is licensed under the ISC license. 286 * See the LICENSE file in the root directory of this source tree. 287 */const ui=ee("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);/** 288 * @license lucide-react v0.462.0 - ISC 289 * 290 * This source code is licensed under the ISC license. 291 * See the LICENSE file in the root directory of this source tree. 292 */const Gl=ee("LayoutGrid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);/** 293 * @license lucide-react v0.462.0 - ISC 294 * 295 * This source code is licensed under the ISC license. 296 * See the LICENSE file in the root directory of this source tree. 297 */const Tr=ee("Link",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]);/** 298 * @license lucide-react v0.462.0 - ISC 299 * 300 * This source code is licensed under the ISC license. 301 * See the LICENSE file in the root directory of this source tree. 302 */const kt=ee("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/** 303 * @license lucide-react v0.462.0 - ISC 304 * 305 * This source code is licensed under the ISC license. 306 * See the LICENSE file in the root directory of this source tree. 307 */const oh=ee("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);/** 308 * @license lucide-react v0.462.0 - ISC 309 * 310 * This source code is licensed under the ISC license. 311 * See the LICENSE file in the root directory of this source tree. 312 */const sh=ee("MailOpen",[["path",{d:"M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z",key:"1jhwl8"}],["path",{d:"m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10",key:"1qfld7"}]]);/** 313 * @license lucide-react v0.462.0 - ISC 314 * 315 * This source code is licensed under the ISC license. 316 * See the LICENSE file in the root directory of this source tree. 317 */const cr=ee("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/** 318 * @license lucide-react v0.462.0 - ISC 319 * 320 * This source code is licensed under the ISC license. 321 * See the LICENSE file in the root directory of this source tree. 322 */const hi=ee("MapPin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);/** 323 * @license lucide-react v0.462.0 - ISC 324 * 325 * This source code is licensed under the ISC license. 326 * See the LICENSE file in the root directory of this source tree. 327 */const lh=ee("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/** 328 * @license lucide-react v0.462.0 - ISC 329 * 330 * This source code is licensed under the ISC license. 331 * See the LICENSE file in the root directory of this source tree. 332 */const ch=ee("Package",[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["path",{d:"m3.3 7 7.703 4.734a2 2 0 0 0 1.994 0L20.7 7",key:"yx3hmr"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]);/** 333 * @license lucide-react v0.462.0 - ISC 334 * 335 * This source code is licensed under the ISC license. 336 * See the LICENSE file in the root directory of this source tree. 337 */const dh=ee("Palette",[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]]);/** 338 * @license lucide-react v0.462.0 - ISC 339 * 340 * This source code is licensed under the ISC license. 341 * See the LICENSE file in the root directory of this source tree. 342 */const au=ee("Paperclip",[["path",{d:"m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48",key:"1u3ebp"}]]);/** 343 * @license lucide-react v0.462.0 - ISC 344 * 345 * This source code is licensed under the ISC license. 346 * See the LICENSE file in the root directory of this source tree. 347 */const uh=ee("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);/** 348 * @license lucide-react v0.462.0 - ISC 349 * 350 * This source code is licensed under the ISC license. 351 * See the LICENSE file in the root directory of this source tree. 352 */const dr=ee("Phone",[["path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z",key:"foiqr5"}]]);/** 353 * @license lucide-react v0.462.0 - ISC 354 * 355 * This source code is licensed under the ISC license. 356 * See the LICENSE file in the root directory of this source tree. 357 */const Rt=ee("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/** 358 * @license lucide-react v0.462.0 - ISC 359 * 360 * This source code is licensed under the ISC license. 361 * See the LICENSE file in the root directory of this source tree. 362 */const mh=ee("ReceiptText",[["path",{d:"M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z",key:"q3az6g"}],["path",{d:"M14 8H8",key:"1l3xfs"}],["path",{d:"M16 12H8",key:"1fr5h0"}
362],["path",{d:"M13 16H8",key:"wsln4y"}]]);/** 363 * @license lucide-react v0.462.0 - ISC 364 * 365 * This source code is licensed under the ISC license. 366 * See the LICENSE file in the root directory of this source tree. 367 */const ph=ee("Receipt",[["path",{d:"M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z",key:"q3az6g"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 17.5v-11",key:"1jc1ny"}]]);/** 368 * @license lucide-react v0.462.0 - ISC 369 * 370 * This source code is licensed under the ISC license. 371 * See the LICENSE file in the root directory of this source tree. 372 */const gh=ee("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** 373 * @license lucide-react v0.462.0 - ISC 374 * 375 * This source code is licensed under the ISC license. 376 * See the LICENSE file in the root directory of this source tree. 377 */const fh=ee("Repeat",[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]]);/** 378 * @license lucide-react v0.462.0 - ISC 379 * 380 * This source code is licensed under the ISC license. 381 * See the LICENSE file in the root directory of this source tree. 382 */const Dr=ee("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/** 383 * @license lucide-react v0.462.0 - ISC 384 * 385 * This source code is licensed under the ISC license. 386 * See the LICENSE file in the root directory of this source tree. 387 */const hh=ee("Settings2",[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);/** 388 * @license lucide-react v0.462.0 - ISC 389 * 390 * This source code is licensed under the ISC license. 391 * See the LICENSE file in the root directory of this source tree. 392 */const iu=ee("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** 393 * @license lucide-react v0.462.0 - ISC 394 * 395 * This source code is licensed under the ISC license. 396 * See the LICENSE file in the root directory of this source tree. 397 */const $l=ee("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);/** 398 * @license lucide-react v0.462.0 - ISC 399 * 400 * This source code is licensed under the ISC license. 401 * See the LICENSE file in the root directory of this source tree. 402 */const vh=ee("ShoppingCart",[["circle",{cx:"8",cy:"21",r:"1",key:"jimo8o"}],["circle",{cx:"19",cy:"21",r:"1",key:"13723u"}],["path",{d:"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",key:"9zh506"}]]);/** 403 * @license lucide-react v0.462.0 - ISC 404 * 405 * This source code is licensed under the ISC license. 406 * See the LICENSE file in the root directory of this source tree. 407 */const Yl=ee("SkipForward",[["polygon",{points:"5 4 15 12 5 20 5 4",key:"16p6eg"}],["line",{x1:"19",x2:"19",y1:"5",y2:"19",key:"futhcm"}]]);/** 408 * @license lucide-react v0.462.0 - ISC 409 * 410 * This source code is licensed under the ISC license. 411 * See the LICENSE file in the root directory of this source tree. 412 */const gn=ee("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);/** 413 * @license lucide-react v0.462.0 - ISC 414 * 415 * This source code is licensed under the ISC license. 416 * See the LICENSE file in the root directory of this source tree. 417 */const ru=ee("Star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);/** 418 * @license lucide-react v0.462.0 - ISC 419 * 420 * This source code is licensed under the ISC license. 421 * See the LICENSE file in the root directory of this source tree. 422 */const yh=ee("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/** 423 * @license lucide-react v0.462.0 - ISC 424 * 425 * This source code is licensed under the ISC license. 426 * See the LICENSE file in the root directory of this source tree.
427 */const bh=ee("Tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]);/** 428 * @license lucide-react v0.462.0 - ISC 429 * 430 * This source code is licensed under the ISC license. 431 * See the LICENSE file in the root directory of this source tree. 432 */const xh=ee("Thermometer",[["path",{d:"M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z",key:"17jzev"}]]);/** 433 * @license lucide-react v0.462.0 - ISC 434 * 435 * This source code is licensed under the ISC license. 436 * See the LICENSE file in the root directory of this source tree. 437 */const kh=ee("Ticket",[["path",{d:"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z",key:"qn84l0"}],["path",{d:"M13 5v2",key:"dyzc3o"}],["path",{d:"M13 17v2",key:"1ont0d"}],["path",{d:"M13 11v2",key:"1wjjxi"}]]);/** 438 * @license lucide-react v0.462.0 - ISC 439 * 440 * This source code is licensed under the ISC license. 441 * See the LICENSE file in the root directory of this source tree. 442 */const La=ee("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/** 443 * @license lucide-react v0.462.0 - ISC 444 * 445 * This source code is licensed under the ISC license. 446 * See the LICENSE file in the root directory of this source tree. 447 */const wh=ee("TreePalm",[["path",{d:"M13 8c0-2.76-2.46-5-5.5-5S2 5.24 2 8h2l1-1 1 1h4",key:"foxbe7"}],["path",{d:"M13 7.14A5.82 5.82 0 0 1 16.5 6c3.04 0 5.5 2.24 5.5 5h-3l-1-1-1 1h-3",key:"18arnh"}],["path",{d:"M5.89 9.71c-2.15 2.15-2.3 5.47-.35 7.43l4.24-4.25.7-.7.71-.71 2.12-2.12c-1.95-1.96-5.27-1.8-7.42.35",key:"ywahnh"}],["path",{d:"M11 15.5c.5 2.5-.17 4.5-1 6.5h4c2-5.5-.5-12-1-14",key:"ft0feo"}]]);/** 448 * @license lucide-react v0.462.0 - ISC 449 * 450 * This source code is licensed under the ISC license. 451 * See the LICENSE file in the root directory of this source tree. 452 */const Sh=ee("TrendingDown",[["polyline",{points:"22 17 13.5 8.5 8.5 13.5 2 7",key:"1r2t7k"}],["polyline",{points:"16 17 22 17 22 11",key:"11uiuu"}]]);/** 453 * @license lucide-react v0.462.0 - ISC 454 * 455 * This source code is licensed under the ISC license. 456 * See the LICENSE file in the root directory of this source tree. 457 */const Ch=ee("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);/** 458 * @license lucide-react v0.462.0 - ISC 459 * 460 * This source code is licensed under the ISC license. 461 * See the LICENSE file in the root directory of this source tree. 462 */const ur=ee("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** 463 * @license lucide-react v0.462.0 - ISC 464 * 465 * This source code is licensed under the ISC license. 466 * See the LICENSE file in the root directory of this source tree. 467 */const _r=ee("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);/** 468 * @license lucide-react v0.462.0 - ISC 469 * 470 * This source code is licensed under the ISC license. 471 * See the LICENSE file in the root directory of this source tree. 472 */const Nh=ee("Wind",[["path",{d:"M12.8 19.6A2 2 0 1 0 14 16H2",key:"148xed"}],["path",{d:"M17.5 8a2.5 2.5 0 1 1 2 4H2",key:"1u4tom"}],["path",{d:"M9.8 4.4A2 2 0 1 1 11 8H2",key:"75valh"}]]);/** 473 * @license lucide-react v0.462.0 - ISC 474 * 475 * This source code is licensed under the ISC license. 476 * See the LICENSE file in the root directory of this source tree. 477 */const Mt=ee("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),js="-",Ah=e=>{const n=jh(e),{conflictingClassGroups:a,conflictingClassGroupModifiers:i}=e;return{getClassGroupId:l=>{const s=l.split(js);return s[0]===""&&s.length!==1&&s.shift(),ou(s,n)||Ph(l)},getConflictingClassGroupIds:(l,s)=>{const c=a[l]||[];return s&&i[l]?[...c,...i[l]]:c}}},ou=(e,n)=>{var l;if(e.length===0)return n.classGroupId;const a=e[0],i=n.nextPart.get(a),r=i?ou(e.slice(1),i):void 0;if(r)return r;if(n.validators.length===0)return;const o=e.join(js);return(l=n.validators.find(({validator:s})=>s(o)))==null?void 0:l.classGroupId},Ql=/^\[(.+)\]$/,Ph=e=>{if(Ql.test(e)){const n=Ql.exec(e)[1],a=n==null?void 0:n.substring(0,n.indexOf(":"));if(a)return"arbitrary.."+a}},jh=e=>{const{theme:n,prefix:a}=e,i={nextPart:new Map,validators:[]};
vendor: 5,120 bytes, line 477
477return Dh(Object.entries(e.classGroups),a).forEach(([o,l])=>{Ho(l,i,o,n)}),i},Ho=(e,n,a,i)=>{e.forEach(r=>{if(typeof r=="string"){const o=r===""?n:Jl(n,r);o.classGroupId=a;return}if(typeof r=="function"){if(Th(r)){Ho(r(i),n,a,i);return}n.validators.push({validator:r,classGroupId:a});return}Object.entries(r).forEach(([o,l])=>{Ho(l,Jl(n,o),a,i)})})},Jl=(e,n)=>{let a=e;return n.split(js).forEach(i=>{a.nextPart.has(i)||a.nextPart.set(i,{nextPart:new Map,validators:[]}),a=a.nextPart.get(i)}),a},Th=e=>e.isThemeGetter,Dh=(e,n)=>n?e.map(([a,i])=>{const r=i.map(o=>typeof o=="string"?n+o:typeof o=="object"?Object.fromEntries(Object.entries(o).map(([l,s])=>[n+l,s])):o);return[a,r]}):e,_h=e=>{if(e<1)return{get:()=>{},set:()=>{}};let n=0,a=new Map,i=new Map;const r=(o,l)=>{a.set(o,l),n++,n>e&&(n=0,i=a,a=new Map)};return{get(o){let l=a.get(o);if(l!==void 0)return l;if((l=i.get(o))!==void 0)return r(o,l),l},set(o,l){a.has(o)?a.set(o,l):r(o,l)}}},su="!",Eh=e=>{const{separator:n,experimentalParseClassName:a}=e,i=n.length===1,r=n[0],o=n.length,l=s=>{const c=[];let u=0,m=0,g;for(let y=0;y<s.length;y++){let v=s[y];if(u===0){if(v===r&&(i||s.slice(y,y+o)===n)){c.push(s.slice(m,y)),m=y+o;continue}if(v==="/"){g=y;continue}}v==="["?u++:v==="]"&&u--}const f=c.length===0?s:s.substring(m),p=f.startsWith(su),h=p?f.substring(1):f,b=g&&g>m?g-m:void 0;return{modifiers:c,hasImportantModifier:p,baseClassName:h,maybePostfixModifierPosition:b}};return a?s=>a({className:s,parseClassName:l}):l},Rh=e=>{if(e.length<=1)return e;const n=[];let a=[];return e.forEach(i=>{i[0]==="["?(n.push(...a.sort(),i),a=[]):a.push(i)}),n.push(...a.sort()),n},zh=e=>({cache:_h(e.cacheSize),parseClassName:Eh(e),...Ah(e)}),Mh=/\s+/,Ih=(e,n)=>{const{parseClassName:a,getClassGroupId:i,getConflictingClassGroupIds:r}=n,o=[],l=e.trim().split(Mh);let s="";for(let c=l.length-1;c>=0;c-=1){const u=l[c],{modifiers:m,hasImportantModifier:g,baseClassName:f,maybePostfixModifierPosition:p}=a(u);let h=!!p,b=i(h?f.substring(0,p):f);if(!b){if(!h){s=u+(s.length>0?" "+s:s);continue}if(b=i(f),!b){s=u+(s.length>0?" "+s:s);continue}h=!1}const y=Rh(m).join(":"),v=g?y+su:y,w=v+b;if(o.includes(w))continue;o.push(w);const x=r(b,h);for(let S=0;S<x.length;++S){const k=x[S];o.push(v+k)}s=u+(s.length>0?" "+s:s)}return s};function Lh(){let e=0,n,a,i="";for(;e<arguments.length;)(n=arguments[e++])&&(a=lu(n))&&(i&&(i+=" "),i+=a);return i}const lu=e=>{if(typeof e=="string")return e;let n,a="";for(let i=0;i<e.length;i++)e[i]&&(n=lu(e[i]))&&(a&&(a+=" "),a+=n);return a};function Fh(e,...n){let a,i,r,o=l;function l(c){const u=n.reduce((m,g)=>g(m),e());return a=zh(u),i=a.cache.get,r=a.cache.set,o=s,s(c)}function s(c){const u=i(c);if(u)return u;const m=Ih(c,a);return r(c,m),m}return function(){return o(Lh.apply(null,arguments))}}const ut=e=>{const n=a=>a[e]||[];return n.isThemeGetter=!0,n},cu=/^\[(?:([a-z-]+):)?(.+)\]$/i,Oh=/^\d+\/\d+$/,Bh=new Set(["px","full","screen"]),qh=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Vh=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Kh=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Wh=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Uh=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,yn=e=>ba(e)||Bh.has(e)||Oh.test(e),Tn=e=>Fa(e,"length",Xh),ba=e=>!!e&&!Number.isNaN(Number(e)),so=e=>Fa(e,"number",ba),Xa=e=>!!e&&Number.isInteger(Number(e)),Hh=e=>e.endsWith("%")&&ba(e.slice(0,-1)),Ie=e=>cu.test(e),Dn=e=>qh.test(e),Gh=new Set(["length","size","percentage"]),$h=e=>Fa(e,Gh,du),Yh=e=>Fa(e,"position",du),Qh=new Set(["image","url"]),Jh=e=>Fa(e,Qh,tv),Zh=e=>Fa(e,"",ev),ei=()=>!0,Fa=(e,n,a)=>{const i=cu.exec(e);return i?i[1]?typeof n=="string"?i[1]===n:n.has(i[1]):a(i[2]):!1},Xh=e=>Vh.test(e)&&!Kh.test(e),du=()=>!1,ev=e=>Wh.test(e),tv=e=>Uh.test(e),nv=()=>{const e=ut("colors"),n=ut("spacing"),a=ut("blur"),i=ut("brightness"),r=ut("borderColor"),o=ut("borderRadius"),l=ut("borderSpacing"),s=ut("borderWidth"),c=ut("contrast"),u=ut("grayscale"),m=ut("hueRotate"),g=ut("invert"),f=ut("gap"),p=ut("gradientColorStops"),h=ut("gradientColorStopPositions"),b=ut("inset"),y=ut("margin"),v=ut("opacity"),w=ut("padding"),x=ut("saturate"),S=ut("scale"),k=ut("sepia"),C=ut("skew"),A=ut("space"),q=ut("translate"),P=()=>["auto","contain","none"],D=()=>["auto","hidden","clip","visible","scroll"],z=()=>["auto",Ie,n],F=()=>[Ie,n],R=()=>["",yn,Tn],E=()=>["auto",ba,Ie],L=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],M=()=>["solid","dashed","dotted","double","none"],j=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],I=()=>["start","end","center","between","around","evenly","stretch"],V=()=>["","0",Ie],Y=()=>["auto","avoid","all","avoid-page","page","left","right","column"],X=()=>[ba,Ie];return{cacheSize:500,separator:":",theme:{colors:[ei],spacing:[yn,Tn],blur:["none","",Dn,Ie],brightness:X(),borderColor:[e],borderRadius:["n
477one","","full",Dn,Ie],borderSpacing:F(),borderWidth:R(),contrast:X(),grayscale:V(),hueRotate:X(),invert:V(),gap:F(),gradientColorStops:[e],gradientColorStopPositions:[Hh,Tn],inset:z(),margin:z(),opacity:X(),padding:F(),saturate:X(),scale:X(),sepia:V(),skew:X(),space:F(),translate:F()},classGroups:{aspect:[{aspect:["auto","square","video",Ie]}],container:["container"],columns:[{columns:[Dn]}],"break-after":[{"break-after":Y()}],"break-before":[{"break-before":Y()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...L(),Ie]}],overflow:[{overflow:D()}],"overflow-x":[{"overflow-x":D()}],"overflow-y":[{"overflow-y":D()}],overscroll:[{overscroll:P()}],"overscroll-x":[{"overscroll-x":P()}],"overscroll-y":[{"overscroll-y":P()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[b]}],"inset-x":[{"inset-x":[b]}],"inset-y":[{"inset-y":[b]}],start:[{start:[b]}],end:[{end:[b]}],top:[{top:[b]}],right:[{right:[b]}],bottom:[{bottom:[b]}],left:[{left:[b]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Xa,Ie]}],basis:[{basis:z()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",Ie]}],grow:[{grow:V()}],shrink:[{shrink:V()}],order:[{order:["first","last","none",Xa,Ie]}],"grid-cols":[{"grid-cols":[ei]}],"col-start-end":[{col:["auto",{span:["full",Xa,Ie]},Ie]}],"col-start":[{"col-start":E()}],"col-end":[{"col-end":E()}],"grid-rows":[{"grid-rows":[ei]}],"row-start-end":[{row:["auto",{span:[Xa,Ie]},Ie]}],"row-start":[{"row-start":E()}],"row-end":[{"row-end":E()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",Ie]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",Ie]}],gap:[{gap:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:["normal",...I()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...I(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...I(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[w]}],px:[{px:[w]}],py:[{py:[w]}],ps:[{ps:[w]}],pe:[{pe:[w]}],pt:[{pt:[w]}],pr:[{pr:[w]}],pb:[{pb:[w]}],pl:[{pl:[w]}],m:[{m:[y]}],mx:[{mx:[y]}],my:[{my:[y]}],ms:[{ms:[y]}],me:[{me:[y]}],mt:[{mt:[y]}],mr:[{mr:[y]}],mb:[{mb:[y]}],ml:[{ml:[y]}],"space-x":[{"space-x":[A]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[A]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",Ie,n]}],"min-w":[{"min-w":[Ie,n,"min","max","fit"]}],"max-w":[{"max-w":[Ie,n,"none","full","min","max","fit","prose",{screen:[Dn]},Dn]}],h:[{h:[Ie,n,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[Ie,n,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[Ie,n,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[Ie,n,"auto","min","max","fit"]}],"font-size":[{text:["base",Dn,Tn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",so]}],"font-family":[{font:[ei]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",Ie]}],"line-clamp":[{"line-clamp":["none",ba,so]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",yn,Ie]}],"list-image":[{"list-image":["none",Ie]}],"list-style-type":[{list:["none","disc","decimal",Ie]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[v]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[v]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...M(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",yn,Tn]}],"underline-offset":[{"underline-offset":["auto",yn,Ie]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:F()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ie]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ie]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[v]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...L(),Yh]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",$h]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Jh]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[h]}
vendor: 5,180 bytes, line 477
477],"gradient-via-pos":[{via:[h]}],"gradient-to-pos":[{to:[h]}],"gradient-from":[{from:[p]}],"gradient-via":[{via:[p]}],"gradient-to":[{to:[p]}],rounded:[{rounded:[o]}],"rounded-s":[{"rounded-s":[o]}],"rounded-e":[{"rounded-e":[o]}],"rounded-t":[{"rounded-t":[o]}],"rounded-r":[{"rounded-r":[o]}],"rounded-b":[{"rounded-b":[o]}],"rounded-l":[{"rounded-l":[o]}],"rounded-ss":[{"rounded-ss":[o]}],"rounded-se":[{"rounded-se":[o]}],"rounded-ee":[{"rounded-ee":[o]}],"rounded-es":[{"rounded-es":[o]}],"rounded-tl":[{"rounded-tl":[o]}],"rounded-tr":[{"rounded-tr":[o]}],"rounded-br":[{"rounded-br":[o]}],"rounded-bl":[{"rounded-bl":[o]}],"border-w":[{border:[s]}],"border-w-x":[{"border-x":[s]}],"border-w-y":[{"border-y":[s]}],"border-w-s":[{"border-s":[s]}],"border-w-e":[{"border-e":[s]}],"border-w-t":[{"border-t":[s]}],"border-w-r":[{"border-r":[s]}],"border-w-b":[{"border-b":[s]}],"border-w-l":[{"border-l":[s]}],"border-opacity":[{"border-opacity":[v]}],"border-style":[{border:[...M(),"hidden"]}],"divide-x":[{"divide-x":[s]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[s]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[v]}],"divide-style":[{divide:M()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-s":[{"border-s":[r]}],"border-color-e":[{"border-e":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...M()]}],"outline-offset":[{"outline-offset":[yn,Ie]}],"outline-w":[{outline:[yn,Tn]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:R()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[v]}],"ring-offset-w":[{"ring-offset":[yn,Tn]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",Dn,Zh]}],"shadow-color":[{shadow:[ei]}],opacity:[{opacity:[v]}],"mix-blend":[{"mix-blend":[...j(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":j()}],filter:[{filter:["","none"]}],blur:[{blur:[a]}],brightness:[{brightness:[i]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":["","none",Dn,Ie]}],grayscale:[{grayscale:[u]}],"hue-rotate":[{"hue-rotate":[m]}],invert:[{invert:[g]}],saturate:[{saturate:[x]}],sepia:[{sepia:[k]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[a]}],"backdrop-brightness":[{"backdrop-brightness":[i]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[u]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m]}],"backdrop-invert":[{"backdrop-invert":[g]}],"backdrop-opacity":[{"backdrop-opacity":[v]}],"backdrop-saturate":[{"backdrop-saturate":[x]}],"backdrop-sepia":[{"backdrop-sepia":[k]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",Ie]}],duration:[{duration:X()}],ease:[{ease:["linear","in","out","in-out",Ie]}],delay:[{delay:X()}],animate:[{animate:["none","spin","ping","pulse","bounce",Ie]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[S]}],"scale-x":[{"scale-x":[S]}],"scale-y":[{"scale-y":[S]}],rotate:[{rotate:[Xa,Ie]}],"translate-x":[{"translate-x":[q]}],"translate-y":[{"translate-y":[q]}],"skew-x":[{"skew-x":[C]}],"skew-y":[{"skew-y":[C]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",Ie]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ie]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":F()}],"scroll-mx":[{"scroll-mx":F()}],"scroll-my":[{"scroll-my":F()}],"scroll-ms":[{"scroll-ms":F()}],"scroll-me":[{"scroll-me":F()}],"scroll-mt":[{"scroll-mt":F()}],"scroll-mr":[{"scroll-mr":F()}],"scroll-mb":[{"scroll-mb":F()}],"scroll-ml":[{"scroll-ml":F()}],"scroll-p":[{"scroll-p":F()}],"scroll-px":[{"scroll-px":F()}],"scroll-py":[{"scroll-py":F()}],"scroll-ps":[{"scroll-ps":F()}],"scroll-pe":[{"scroll-pe":F()}],"scroll-pt":[{"scroll-pt":F()}],"scroll-pr":[{"scroll-pr":F()}],"scroll-pb":[{"scroll-pb":F()}],"scroll-pl":[{"scroll-pl":F()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}
477],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ie]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[yn,Tn,so]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},av=Fh(nv);function B(...e){return av(Cd(e))}const iv=Tf,uu=d.forwardRef(({className:e,...n},a)=>t.jsx(Kd,{ref:a,className:B("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",e),...n}));uu.displayName=Kd.displayName;const rv=Ma("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),mu=d.forwardRef(({className:e,variant:n,...a},i)=>t.jsx(Wd,{ref:i,className:B(rv({variant:n}),e),...a}));mu.displayName=Wd.displayName;const ov=d.forwardRef(({className:e,...n},a)=>t.jsx(Gd,{ref:a,className:B("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive disabled:pointer-events-none disabled:opacity-50",e),...n}));ov.displayName=Gd.displayName;
477const pu=d.forwardRef(({className:e,...n},a)=>t.jsx($d,{ref:a,className:B("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...n,children:t.jsx(Mt,{className:"h-4 w-4"})}));pu.displayName=$d.displayName;const gu=d.forwardRef(({className:e,...n},a)=>t.jsx(Ud,{ref:a,className:B("text-sm font-semibold",e),...n}));gu.displayName=Ud.displayName;const fu=d.forwardRef(({className:e,...n},a)=>t.jsx(Hd,{ref:a,className:B("text-sm opacity-90",e),...n}));fu.displayName=Hd.displayName;function sv(){const{toasts:e}=Dt();return t.jsxs(iv,{children:[e.map(function({id:n,title:a,description:i,action:r,...o}){return t.jsxs(mu,{...o,children:[t.jsxs("div",{className:"grid gap-1",children:[a&&t.jsx(gu,{children:a}),i&&t.jsx(fu,{children:i})]}),r,t.jsx(pu,{})]},n)}),t.jsx(uu,{})]})}var mr=["light","dark"],Ts="(prefers-color-scheme: dark)",lv=typeof window>"u",Ds=d.createContext(void 0),cv={setTheme:e=>{},themes:[]},hu=()=>{var e;return(e=d.useContext(Ds))!=null?e:cv},Zl=e=>d.useContext(Ds)?e.children:d.createElement(uv,{...e}),dv=["light","dark"],uv=({forcedTheme:e,disableTransitionOnChange:n=!1,enableSystem:a=!0,enableColorScheme:i=!0,storageKey:r="theme",themes:o=dv,defaultTheme:l=a?"system":"light",attribute:s="data-theme",value:c,children:u,nonce:m})=>{let[g,f]=d.useState(()=>Xl(r,l)),[p,h]=d.useState(()=>Xl(r)),b=c?Object.values(c):o,y=d.useCallback(S=>{let k=S;if(!k)return;S==="system"&&a&&(k=ec());let C=c?c[k]:k,A=n?pv():null,q=document.documentElement;if(s==="class"?(q.classList.remove(...b),C&&q.classList.add(C)):C?q.setAttribute(s,C):q.removeAttribute(s),i){let P=mr.includes(l)?l:null,D=mr.includes(k)?k:P;q.style.colorScheme=D}A==null||A()},[]),v=d.useCallback(S=>{let k=typeof S=="function"?S(S):S;f(k);try{localStorage.setItem(r,k)}catch{}},[e]),w=d.useCallback(S=>{let k=ec(S);h(k),g==="system"&&a&&!e&&y("system")},[g,e]);d.useEffect(()=>{let S=window.matchMedia(Ts);return S.addListener(w),w(S),()=>S.removeListener(w)},[w]),d.useEffect(()=>{let S=k=>{if(k.key!==r)return;let C=k.newValue||l;v(C)};return window.addEventListener("storage",S),()=>window.removeEventListener("storage",S)},[v]),d.useEffect(()=>{y(e??g)},[e,g]);let x=d.useMemo(()=>({theme:g,setTheme:v,forcedTheme:e,resolvedTheme:g==="system"?p:g,themes:a?[...o,"system"]:o,systemTheme:a?p:void 0}),[g,v,e,p,a,o]);return d.createElement(Ds.Provider,{value:x},d.createElement(mv,{forcedTheme:e,disableTransitionOnChange:n,enableSystem:a,enableColorScheme:i,storageKey:r,themes:o,defaultTheme:l,attribute:s,value:c,children:u,attrs:b,nonce:m}),u)},mv=d.memo(({forcedTheme:e,storageKey:n,attribute:a,enableSystem:i,enableColorScheme:r,defaultTheme:o,value:l,attrs:s,nonce:c})=>{let u=o==="system",m=a==="class"?`var d=document.documentElement,c=d.classList;${`c.remove(${s.map(h=>`'${h}'`).join(",")})`};`:`var d=document.documentElement,n='${a}',s='setAttribute';`,g=r?mr.includes(o)&&o?`if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'${o}'`:"if(e==='light'||e==='dark')d.style.colorScheme=e":"",f=(h,b=!1,y=!0)=>{let v=l?l[h]:h,w=b?h+"|| ''":`'${v}'`,x="";return r&&y&&!b&&mr.includes(h)&&(x+=`d.style.colorScheme = '${h}';`),a==="class"?b||v?x+=`c.add(${w})`:x+="null":v&&(x+=`d[s](n,${w})`),x},p=e?`!function(){${m}${f(e)}}()`:i?`!function(){try{${m}var e=localStorage.getItem('${n}');if('system'===e||(!e&&${u})){var t='${Ts}',m=window.matchMedia(t);if(m.media!==t||m.matches){${f("dark")}}else{${f("light")}}}else if(e){${l?`var x=${JSON.stringify(l)};`:""}${f(l?"x[e]":"e",!0)}}${u?"":"else{"+f(o,!1,!1)+"}"}${g}}catch(e){}}()`:`!function(){try{${m}var e=localStorage.getItem('${n}');if(e){${l?`var x=${JSON.stringify(l)};`:""}${f(l?"x[e]":"e",!0)}}else{${f(o,!1,!1)};}${g}}catch(t){}}();`;return d.createElement("script",{nonce:c,dangerouslySetInnerHTML:{__html:p}})}),Xl=(e,n)=>{if(lv)return;let a;try{a=localStorage.getItem(e)||void 0}catch{}return a||n},pv=()=>{let e=document.createElement("style");return e.appendChild(document.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(e),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(e)},1)}},ec=e=>
477(e||(e=window.matchMedia(Ts)),e.matches?"dark":"light"),gv=e=>{switch(e){case"success":return vv;case"info":return bv;case"warning":return yv;case"error":return xv;default:return null}},fv=Array(12).fill(0),hv=({visible:e,className:n})=>O.createElement("div",{className:["sonner-loading-wrapper",n].filter(Boolean).join(" "),"data-visible":e},O.createElement("div",{className:"sonner-spinner"},fv.map((a,i)=>O.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${i}`})))),vv=O.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},O.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),yv=O.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},O.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),bv=O.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},O.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),xv=O.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},O.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),kv=O.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},O.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),O.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),wv=()=>{let[e,n]=O.useState(document.hidden);return O.useEffect(()=>{let a=()=>{n(document.hidden)};return document.addEventListener("visibilitychange",a),()=>window.removeEventListener("visibilitychange",a)},[]),e},Go=1,Sv=class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let n=this.subscribers.indexOf(e);this.subscribers.splice(n,1)}),this.publish=e=>{this.subscribers.forEach(n=>n(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{var n;let{message:a,...i}=e,r=typeof(e==null?void 0:e.id)=="number"||((n=e.id)==null?void 0:n.length)>0?e.id:Go++,o=this.toasts.find(s=>s.id===r),l=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),o?this.toasts=this.toasts.map(s=>s.id===r?(this.publish({...s,...e,id:r,title:a}),{...s,...e,id:r,dismissible:l,title:a}):s):this.addToast({title:a,...i,dismissible:l,id:r}),r},this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(n=>{this.subscribers.forEach(a=>a({id:n.id,dismiss:!0}))}),this.subscribers.forEach(n=>n({id:e,dismiss:!0})),e),this.message=(e,n)=>this.create({...n,message:e}),this.error=(e,n)=>this.create({...n,message:e,type:"error"}),this.success=(e,n)=>this.create({...n,type:"success",message:e}),this.info=(e,n)=>this.create({...n,type:"info",message:e}),this.warning=(e,n)=>this.create({...n,type:"warning",message:e}),this.loading=(e,n)=>this.create({...n,type:"loading",message:e}),this.promise=(e,n)=>{if(!n)return;let a;n.loading!==void 0&&(a=this.create({...n,promise:e,type:"loading",message:n.loading,description:typeof n.description!="function"?n.description:void 0}));let i=e instanceof Promise?e:e(),r=a!==void 0,o,l=i.then(async c=>{if(o=["resolve",c],O.isValidElement(c))r=!1,this.create({id:a,type:"default",message:c});else if(Nv(c)&&!c.ok){r=!1;let u=typeof n.error=="function"?await n.error(`HTTP error! status: ${c.status}`):n.error,m=typeof n.description=="function"?await n.description(`HTTP error! status: ${c.status}`):n.description;this.create({id:a,type:"error",message:u,description:m})}else if(n.success!==void 0){r=!1;let u=typeof n.success=="function"?await n.success(c):n.success,m=typeof n.description=="function"?await n.description(c):n.description;this.create({id:a,type:"success",message:u,description:m})}}).catch(async c=>{if(o=["reject",c],n.error!==void 0){r=!1;let u=typeof n.error=="function"?await n.error(c):n.error,m=typeof n.description=="function"?await n.description(c):n.description;this.create({id:a,type:"error",message:u,description:m})}}).finally(()=>{var c;r&&(this.dismiss(a),a=void 0),(c=n.finally)==null||c.call(n)}),s=()=>new Promise((c,u)=>l.then(()=>o[0]==="reject"?u(o[1]):c(o[1])).catch(u));return typeof a!="string"&&typeof a!="number"?{unwrap:s}:Object.assign(a,{unwrap:s})},this.custom=(e,n)=>{let a=(n==null?void 0:n.id)||Go++;return this.create({jsx:e(a),id:a,...n}),a},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},Vt=new Sv,Cv=(e,n)=>{let a=(n==null?void 0:n.id)||Go++;return Vt.addToast({title:e,...n,id:a}),a},Nv=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",Av=Cv,Pv=()=>Vt.toasts,jv=()=>Vt.getActiveToasts(),qe=Object.assign(Av,{success:Vt.success,info:Vt.info,warning:Vt.warning,error:Vt.error,custom:Vt.custom,message:Vt.message,promise:Vt.promise,dismiss:Vt.dismiss,loading:Vt.loading},{getHistory:Pv,getToasts:jv});function Tv(e,{insertAt:n}={}){if(typeof document>"u")return;let a=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css",n==="top"&&a.firstChild?a.insertBefore(i,a.firstChild):a.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}Tv(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
477left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
477:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);
477--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)} 478`);function Wi(e){return e.label!==void 0}var Dv=3,_v="32px",Ev="16px",tc=4e3,Rv=356,zv=14,Mv=20,Iv=200;function on(...e){return e.filter(Boolean).join(" ")}function Lv(e){let[n,a]=e.split("-"),i=[];return n&&i.push(n),a&&i.push(a),i}var Fv=e=>{var n,a,i,r,o,l,s,c,u,m,g;let{invert:f,toast:p,unstyled:h,interacting:b,setHeights:y,visibleToasts:v,heights:w,index:x,toasts:S,expanded:k,removeToast:C,defaultRichColors:A,closeButton:q,style:P,cancelButtonStyle:D,actionButtonStyle:z,className:F="",descriptionClassName:R="",duration:E,position:L,gap:M,loadingIcon:j,expandByDefault:I,classNames:V,icons:Y,closeButtonAriaLabel:X="Close toast",pauseWhenPageIsHidden:_}=e,[N,W]=O.useState(null),[$,K]=O.useState(null),[H,re]=O.useState(!1),[ie,Se]=O.useState(!1),[oe,J]=O.useState(!1),[Z,be]=O.useState(!1),[ze,Fe]=O.useState(!1),[Le,Ve]=O.useState(0),[Ke,St]=O.useState(0),tt=O.useRef(p.duration||E||tc),Ze=O.useRef(null),He=O.useRef(null),yt=x===0,wt=x+1<=v,dt=p.type,bt=p.dismissible!==!1,ve=p.className||"",We=p.descriptionClassName||"",Qe=O.useMemo(()=>w.findIndex(le=>le.toastId===p.id)||0,[w,p.id]),Q=O.useMemo(()=>{var le;return(le=p.closeButton)!=null?le:q},[p.closeButton,q]),it=O.useMemo(()=>p.duration||E||tc,[p.duration,E]),ne=O.useRef(0),xe=O.useRef(0),Ye=O.useRef(0),Je=O.useRef(null),[Oe,ce]=L.split("-"),Ce=O.useMemo(()=>w.reduce((le,ue,ye)=>ye>=Qe?le:le+ue.height,0),[w,Qe]),Pe=wv(),Ne=p.invert||f,Re=dt==="loading";xe.current=O.useMemo(()=>Qe*M+Ce,[Qe,Ce]),O.useEffect(()=>{tt.current=it},[it]),O.useEffect(()=>{re(!0)},[]),O.useEffect(()=>{let le=He.current;if(le){let ue=le.getBoundingClientRect().height;return St(ue),y(ye=>[{toastId:p.id,height:ue,position:p.position},...ye]),()=>y(ye=>
478ye.filter(Me=>Me.toastId!==p.id))}},[y,p.id]),O.useLayoutEffect(()=>{if(!H)return;let le=He.current,ue=le.style.height;le.style.height="auto";let ye=le.getBoundingClientRect().height;le.style.height=ue,St(ye),y(Me=>Me.find(Ge=>Ge.toastId===p.id)?Me.map(Ge=>Ge.toastId===p.id?{...Ge,height:ye}:Ge):[{toastId:p.id,height:ye,position:p.position},...Me])},[H,p.title,p.description,y,p.id]);let Xe=O.useCallback(()=>{Se(!0),Ve(xe.current),y(le=>le.filter(ue=>ue.toastId!==p.id)),setTimeout(()=>{C(p)},Iv)},[p,C,y,xe]);O.useEffect(()=>{if(p.promise&&dt==="loading"||p.duration===1/0||p.type==="loading")return;let le;return k||b||_&&Pe?(()=>{if(Ye.current<ne.current){let ue=new Date().getTime()-ne.current;tt.current=tt.current-ue}Ye.current=new Date().getTime()})():tt.current!==1/0&&(ne.current=new Date().getTime(),le=setTimeout(()=>{var ue;(ue=p.onAutoClose)==null||ue.call(p,p),Xe()},tt.current)),()=>clearTimeout(le)},[k,b,p,dt,_,Pe,Xe]),O.useEffect(()=>{p.delete&&Xe()},[Xe,p.delete]);function Ue(){var le,ue,ye;return Y!=null&&Y.loading?O.createElement("div",{className:on(V==null?void 0:V.loader,(le=p==null?void 0:p.classNames)==null?void 0:le.loader,"sonner-loader"),"data-visible":dt==="loading"},Y.loading):j?O.createElement("div",{className:on(V==null?void 0:V.loader,(ue=p==null?void 0:p.classNames)==null?void 0:ue.loader,"sonner-loader"),"data-visible":dt==="loading"},j):O.createElement(hv,{className:on(V==null?void 0:V.loader,(ye=p==null?void 0:p.classNames)==null?void 0:ye.loader),visible:dt==="loading"})}return O.createElement("li",{tabIndex:0,ref:He,className:on(F,ve,V==null?void 0:V.toast,(n=p==null?void 0:p.classNames)==null?void 0:n.toast,V==null?void 0:V.default,V==null?void 0:V[dt],(a=p==null?void 0:p.classNames)==null?void 0:a[dt]),"data-sonner-toast":"","data-rich-colors":(i=p.richColors)!=null?i:A,"data-styled":!(p.jsx||p.unstyled||h),"data-mounted":H,"data-promise":!!p.promise,"data-swiped":ze,"data-removed":ie,"data-visible":wt,"data-y-position":Oe,"data-x-position":ce,"data-index":x,"data-front":yt,"data-swiping":oe,"data-dismissible":bt,"data-type":dt,"data-invert":Ne,"data-swipe-out":Z,"data-swipe-direction":$,"data-expanded":!!(k||I&&H),style:{"--index":x,"--toasts-before":x,"--z-index":S.length-x,"--offset":`${ie?Le:xe.current}px`,"--initial-height":I?"auto":`${Ke}px`,...P,...p.style},onDragEnd:()=>{J(!1),W(null),Je.current=null},onPointerDown:le=>{Re||!bt||(Ze.current=new Date,Ve(xe.current),le.target.setPointerCapture(le.pointerId),le.target.tagName!=="BUTTON"&&(J(!0),Je.current={x:le.clientX,y:le.clientY}))},onPointerUp:()=>{var le,ue,ye,Me;if(Z||!bt)return;Je.current=null;let Ge=Number(((le=He.current)==null?void 0:le.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),nt=Number(((ue=He.current)==null?void 0:ue.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Ct=new Date().getTime()-((ye=Ze.current)==null?void 0:ye.getTime()),Ft=N==="x"?Ge:nt,Ht=Math.abs(Ft)/Ct;if(Math.abs(Ft)>=Mv||Ht>.11){Ve(xe.current),(Me=p.onDismiss)==null||Me.call(p,p),K(N==="x"?Ge>0?"right":"left":nt>0?"down":"up"),Xe(),be(!0),Fe(!1);return}J(!1),W(null)},onPointerMove:le=>{var ue,ye,Me,Ge;if(!Je.current||!bt||((ue=window.getSelection())==null?void 0:ue.toString().length)>0)return;let nt=le.clientY-Je.current.y,Ct=le.clientX-Je.current.x,Ft=(ye=e.swipeDirections)!=null?ye:Lv(L);!N&&(Math.abs(Ct)>1||Math.abs(nt)>1)&&W(Math.abs(Ct)>Math.abs(nt)?"x":"y");let Ht={x:0,y:0};N==="y"?(Ft.includes("top")||Ft.includes("bottom"))&&(Ft.includes("top")&&nt<0||Ft.includes("bottom")&&nt>0)&&(Ht.y=nt):N==="x"&&(Ft.includes("left")||Ft.includes("right"))&&(Ft.includes("left")&&Ct<0||Ft.includes("right")&&Ct>0)&&(Ht.x=Ct),(Math.abs(Ht.x)>0||Math.abs(Ht.y)>0)&&Fe(!0),(Me=He.current)==null||Me.style.setProperty("--swipe-amount-x",`${Ht.x}px`),(Ge=He.current)==null||Ge.style.setProperty("--swipe-amount-y",`${Ht.y}px`)}},Q&&!p.jsx?O.createElement("button",{"aria-label":X,"data-disabled":Re,"data-close-button":!0,onClick:Re||!bt?()=>{}:()=>{var le;Xe(),(le=p.onDismiss)==null||le.call(p,p)},className:on(V==null?void 0:V.closeButton,(r=p==null?void 0:p.classNames)==null?void 0:r.closeButton)},(o=Y==null?void 0:Y.close)!=null?o:kv):null,p.jsx||d.isValidElement(p.title)?p.jsx?p.jsx:typeof p.title=="function"?p.title():p.title:O.createElement(O.Fragment,null,dt||p.icon||p.promise?O.createElement("div",{"data-icon":"",className:on(V==null?void 0:V.icon,(l=p==null?void 0:p.classNames)==null?void 0:l.icon)}
478,p.promise||p.type==="loading"&&!p.icon?p.icon||Ue():null,p.type!=="loading"?p.icon||(Y==null?void 0:Y[dt])||gv(dt):null):null,O.createElement("div",{"data-content":"",className:on(V==null?void 0:V.content,(s=p==null?void 0:p.classNames)==null?void 0:s.content)},O.createElement("div",{"data-title":"",className:on(V==null?void 0:V.title,(c=p==null?void 0:p.classNames)==null?void 0:c.title)},typeof p.title=="function"?p.title():p.title),p.description?O.createElement("div",{"data-description":"",className:on(R,We,V==null?void 0:V.description,(u=p==null?void 0:p.classNames)==null?void 0:u.description)},typeof p.description=="function"?p.description():p.description):null),d.isValidElement(p.cancel)?p.cancel:p.cancel&&Wi(p.cancel)?O.createElement("button",{"data-button":!0,"data-cancel":!0,style:p.cancelButtonStyle||D,onClick:le=>{var ue,ye;Wi(p.cancel)&&bt&&((ye=(ue=p.cancel).onClick)==null||ye.call(ue,le),Xe())},className:on(V==null?void 0:V.cancelButton,(m=p==null?void 0:p.classNames)==null?void 0:m.cancelButton)},p.cancel.label):null,d.isValidElement(p.action)?p.action:p.action&&Wi(p.action)?O.createElement("button",{"data-button":!0,"data-action":!0,style:p.actionButtonStyle||z,onClick:le=>{var ue,ye;Wi(p.action)&&((ye=(ue=p.action).onClick)==null||ye.call(ue,le),!le.defaultPrevented&&Xe())},className:on(V==null?void 0:V.actionButton,(g=p==null?void 0:p.classNames)==null?void 0:g.actionButton)},p.action.label):null))};function nc(){if(typeof window>"u"||typeof document>"u")return"ltr";let e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function Ov(e,n){let a={};return[e,n].forEach((i,r)=>{let o=r===1,l=o?"--mobile-offset":"--offset",s=o?Ev:_v;function c(u){["top","right","bottom","left"].forEach(m=>{a[`${l}-${m}`]=typeof u=="number"?`${u}px`:u})}typeof i=="number"||typeof i=="string"?c(i):typeof i=="object"?["top","right","bottom","left"].forEach(u=>{i[u]===void 0?a[`${l}-${u}`]=s:a[`${l}-${u}`]=typeof i[u]=="number"?`${i[u]}px`:i[u]}):c(s)}),a}var Bv=d.forwardRef(function(e,n){let{invert:a,position:i="bottom-right",hotkey:r=["altKey","KeyT"],expand:o,closeButton:l,className:s,offset:c,mobileOffset:u,theme:m="light",richColors:g,duration:f,style:p,visibleToasts:h=Dv,toastOptions:b,dir:y=nc(),gap:v=zv,loadingIcon:w,icons:x,containerAriaLabel:S="Notifications",pauseWhenPageIsHidden:k}=e,[C,A]=O.useState([]),q=O.useMemo(()=>Array.from(new Set([i].concat(C.filter(_=>_.position).map(_=>_.position)))),[C,i]),[P,D]=O.useState([]),[z,F]=O.useState(!1),[R,E]=O.useState(!1),[L,M]=O.useState(m!=="system"?m:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),j=O.useRef(null),I=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),V=O.useRef(null),Y=O.useRef(!1),X=O.useCallback(_=>{A(N=>{var W;return(W=N.find($=>$.id===_.id))!=null&&W.delete||Vt.dismiss(_.id),N.filter(({id:$})=>$!==_.id)})},[]);return O.useEffect(()=>Vt.subscribe(_=>{if(_.dismiss){A(N=>N.map(W=>W.id===_.id?{...W,delete:!0}:W));return}setTimeout(()=>{hg.flushSync(()=>{A(N=>{let W=N.findIndex($=>$.id===_.id);return W!==-1?[...N.slice(0,W),{...N[W],..._},...N.slice(W+1)]:[_,...N]})})})}),[]),O.useEffect(()=>{if(m!=="system"){M(m);return}if(m==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?M("dark"):M("light")),typeof window>"u")return;let _=window.matchMedia("(prefers-color-scheme: dark)");try{_.addEventListener("change",({matches:N})=>{M(N?"dark":"light")})}catch{_.addListener(({matches:W})=>{try{M(W?"dark":"light")}catch($){console.error($)}})}},[m]),O.useEffect(()=>{C.length<=1&&F(!1)},[C]),O.useEffect(()=>{let _=N=>{var W,$;r.every(K=>N[K]||N.code===K)&&(F(!0),(W=j.current)==null||W.focus()),N.code==="Escape"&&(document.activeElement===j.current||($=j.current)!=null&&$.contains(document.activeElement))&&F(!1)};return document.addEventListener("keydown",_),()=>document.removeEventListener("keydown",_)},[r]),O.useEffect(()=>{if(j.current)return()=>{V.current&&(V.current.focus({preventScroll:!0}),V.current=null,Y.current=!1)}},[j.current]),O.createElement("section",{ref:n,"aria-label":`${S} ${I}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},q.map((_,N)=>{var W;let[$,K]=_.split("-");return C.length?O.createElement("ol",{key:_,dir:y==="auto"?nc():y,tabIndex:-1,ref:j,className:s,"data-sonner-toaster":!0,"data-theme":L,"data-y-position":$,"data-lifted":z&&C.length>1&&!o,"data-x-position":K,style:{"--front-toast-height":`${((W=P[0])==null?void 0:W.height)||0}px`,"--width":`${Rv}px`,"--gap":`${v}px`,...p,...Ov(c,u)},onBlur:H=>{Y.current&&!H.currentTarget.contains(H.relatedTarget)&&(Y.current=!1,V.current&&(V.current.focus({preventScroll:!0}),V.current=null))},onFocus:H=>{H.target instanceof HTMLElement&&H.target.dataset.dismissible==="false"||Y.current||(Y.current=!0,V.current=H.relatedTarget)},onMouseEnter:()=>F(!0),onMouseMove:()=>F(!0),onMouseLeave:()=>{R||F(!1)},onDragEnd:()=>F(!1),onPointerDown:H=>{H.target instanceof HTMLElement&&H.target.dataset.dismissible==="false"||E(!0)},onPointerUp:()=>E(!1)},C.filter(H=>!H.position&&N===0||H.position===_).map((H,re)=>{var ie,Se;return O.createElement(Fv,{key:H.id,icons:x,index:re,toast:H,defaultRichColors:g,duration:(ie=b==null?void 0:b.duration)!=null?ie:f,className:b==null?void 0:b.className,descriptionClassName:b==null?void 0:b.descriptionClassName,invert:a,visibleToasts:h,closeButton:(Se=b==null?void 0:b.closeButton)!=null?Se:l,interacting:R,position:_,style:b==null?void 0:b.style,unstyled:b==null?void 0:b.unstyled,classNames:b==null?void 0:b.classNames,cancelButtonStyle:b==null?void 0:b.cancelButtonStyle,actionButtonStyle:b==null?void 0:b.actionButtonStyle,removeToast:X,toasts:C.filter(oe=>oe.position==H.position),heights:P.filter(oe=>oe.position==H.position),setHeights:D,expandByDefault:o,gap:v,loadingIcon:w,exp
478anded:z,pauseWhenPageIsHidden:k,swipeDirections:e.swipeDirections})})):null}))});const lo=({...e})=>{const{theme:n="system"}=hu();return t.jsx(Bv,{theme:n,className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...e})};var qv=typeof Element<"u",Vv=typeof Map=="function",Kv=typeof Set=="function",Wv=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function tr(e,n){if(e===n)return!0;if(e&&n&&typeof e=="object"&&typeof n=="object"){if(e.constructor!==n.constructor)return!1;var a,i,r;if(Array.isArray(e)){if(a=e.length,a!=n.length)return!1;for(i=a;i--!==0;)if(!tr(e[i],n[i]))return!1;return!0}var o;if(Vv&&e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(o=e.entries();!(i=o.next()).done;)if(!n.has(i.value[0]))return!1;for(o=e.entries();!(i=o.next()).done;)if(!tr(i.value[1],n.get(i.value[0])))return!1;return!0}if(Kv&&e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(o=e.entries();!(i=o.next()).done;)if(!n.has(i.value[0]))return!1;return!0}if(Wv&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(n)){if(a=e.length,a!=n.length)return!1;for(i=a;i--!==0;)if(e[i]!==n[i])return!1;return!0}if(e.constructor===RegExp)return e.source===n.source&&e.flags===n.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof n.valueOf=="function")return e.valueOf()===n.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof n.toString=="function")return e.toString()===n.toString();if(r=Object.keys(e),a=r.length,a!==Object.keys(n).length)return!1;for(i=a;i--!==0;)if(!Object.prototype.hasOwnProperty.call(n,r[i]))return!1;if(qv&&e instanceof Element)return!1;for(i=a;i--!==0;)if(!((r[i]==="_owner"||r[i]==="__v"||r[i]==="__o")&&e.$$typeof)&&!tr(e[r[i]],n[r[i]]))return!1;return!0}return e!==e&&n!==n}var Uv=function(n,a){try{return tr(n,a)}catch(i){if((i.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw i}};const Hv=gs(Uv);var Gv=function(e,n,a,i,r,o,l,s){if(!e){var c;if(n===void 0)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[a,i,r,o,l,s],m=0;c=new Error(n.replace(/%s/g,function(){return u[m++]})),c.name="Invariant Violation"}throw c.framesToPop=1,c}},$v=Gv;const ac=gs($v);var Yv=function(n,a,i,r){var o=i?i.call(r,n,a):void 0;if(o!==void 0)return!!o;if(n===a)return!0;if(typeof n!="object"||!n||typeof a!="object"||!a)return!1;var l=Object.keys(n),s=Object.keys(a);if(l.length!==s.length)return!1;for(var c=Object.prototype.hasOwnProperty.bind(a),u=0;u<l.length;u++){var m=l[u];if(!c(m))return!1;var g=n[m],f=a[m];if(o=i?i.call(r,g,f,m):void 0,o===!1||o===void 0&&g!==f)return!1}return!0};const Qv=gs(Yv);var vu=(e=>(e.BASE="base",e.BODY="body",e.HEAD="head",e.HTML="html",e.LINK="link",e.META="meta",e.NOSCRIPT="noscript",e.SCRIPT="script",e.STYLE="style",e.TITLE="title",e.FRAGMENT="Symbol(react.fragment)",e))(vu||{}),co={link:{rel:["amphtml","canonical","alternate"]},script:{type:["application/ld+json"]},meta:{charset:"",name:["generator","robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]}},ic=Object.values(vu),Er={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},yu=Object.entries(Er).reduce((e,[n,a])=>(e[a]=n,e),{}),ln="data-rh",xa={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},ka=(e,n)=>{for(let a=e.length-1;a>=0;a-=1){const i=e[a];if(Object.prototype.hasOwnProperty.call(i,n))return i[n]}return null},Jv=e=>{let n=ka(e,"title");const a=ka(e,xa.TITLE_TEMPLATE);if(Array.isArray(n)&&(n=n.join("")),a&&n)return a.replace(/%s/g,()=>n);const i=ka(e,xa.DEFAULT_TITLE);return n||i||void 0},Zv=e=>ka(e,xa.ON_CHANGE_CLIENT_STATE)||(()=>{}),uo=(e,n)=>n.filter(a=>typeof a[e]<"u").map(a=>a[e]).reduce((a,i)=>({...a,...i}),{}),Xv=(e,n)=>n.filter(a=>typeof a.base<"u").map(a=>a.base).reverse().reduce((a,i)=>{if(!a.length){const r=Object.keys(i);for(let o=0;o<r.length;o+=1){const s=r[o].toLowerCase();if(e.indexOf(s)!==-1&&i[s])return a.concat(i)}}return a},[]),ey=e=>console&&typeof console.warn=="function"&&console.warn(e),ti=(e,n,a)=>{const i={};return a.filter(r=>Array.isArray(r[e])?!0:(typeof r[e]<"u"&&ey(`Helmet: ${e} should be of type "Array". Instead found type "${typeof r[e]}"`),!1)).map(r=>r[e]).reverse().reduce((r,o)=>{const l={};o.filter(c=>{let u;const m=Object.keys(c);for(let f=0;f<m.length;f+=1){const p=m[f],h=p.toLowerCase();n.indexOf(h)!==-1&&!(u==="rel"&&c[u].toLowerCase()==="canonical")&&!(h==="rel"&&c[h].toLowerCase()==="stylesheet")&&(u=h),n.indexOf(p)!==-1&&(p==="innerHTML"||p==="cssText"||p==="itemprop")&&(u=p)}if(!u||!c[u])return!1;const g=c[u].toLowerCase();return i[u]||(i[u]={}),l[u]||(l[u]={}),i[u][g]?!1:(l[u][g]=!0,!0)}
478).reverse().forEach(c=>r.push(c));const s=Object.keys(l);for(let c=0;c<s.length;c+=1){const u=s[c],m={...i[u],...l[u]};i[u]=m}return r},[]).reverse()},ty=(e,n)=>{if(Array.isArray(e)&&e.length){for(let a=0;a<e.length;a+=1)if(e[a][n])return!0}return!1},ny=e=>({baseTag:Xv(["href"],e),bodyAttributes:uo("bodyAttributes",e),defer:ka(e,xa.DEFER),encode:ka(e,xa.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:uo("htmlAttributes",e),linkTags:ti("link",["rel","href"],e),metaTags:ti("meta",["name","charset","http-equiv","property","itemprop"],e),noscriptTags:ti("noscript",["innerHTML"],e),onChangeClientState:Zv(e),scriptTags:ti("script",["src","innerHTML"],e),styleTags:ti("style",["cssText"],e),title:Jv(e),titleAttributes:uo("titleAttributes",e),prioritizeSeoTags:ty(e,xa.PRIORITIZE_SEO_TAGS)}),bu=e=>Array.isArray(e)?e.join(""):e,ay=(e,n)=>{const a=Object.keys(e);for(let i=0;i<a.length;i+=1)if(n[a[i]]&&n[a[i]].includes(e[a[i]]))return!0;return!1},mo=(e,n)=>Array.isArray(e)?e.reduce((a,i)=>(ay(i,n)?a.priority.push(i):a.default.push(i),a),{priority:[],default:[]}):{default:e,priority:[]},rc=(e,n)=>({...e,[n]:void 0}),iy=["noscript","script","style"],$o=(e,n=!0)=>n===!1?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),xu=e=>Object.keys(e).reduce((n,a)=>{const i=typeof e[a]<"u"?`${a}="${e[a]}"`:`${a}`;return n?`${n} ${i}`:i},""),ry=(e,n,a,i)=>{const r=xu(a),o=bu(n);return r?`<${e} ${ln}="true" ${r}>${$o(o,i)}</${e}>`:`<${e} ${ln}="true">${$o(o,i)}</${e}>`},oy=(e,n,a=!0)=>n.reduce((i,r)=>{const o=r,l=Object.keys(o).filter(u=>!(u==="innerHTML"||u==="cssText")).reduce((u,m)=>{const g=typeof o[m]>"u"?m:`${m}="${$o(o[m],a)}"`;return u?`${u} ${g}`:g},""),s=o.innerHTML||o.cssText||"",c=iy.indexOf(e)===-1;return`${i}<${e} ${ln}="true" ${l}${c?"/>":`>${s}</${e}>`}`},""),ku=(e,n={})=>Object.keys(e).reduce((a,i)=>{const r=Er[i];return a[r||i]=e[i],a},n),sy=(e,n,a)=>{const i={key:n,[ln]:!0},r=ku(a,i);return[O.createElement("title",r,n)]},nr=(e,n)=>n.map((a,i)=>{const r={key:i,[ln]:!0};return Object.keys(a).forEach(o=>{const s=Er[o]||o;if(s==="innerHTML"||s==="cssText"){const c=a.innerHTML||a.cssText;r.dangerouslySetInnerHTML={__html:c}}else r[s]=a[o]}),O.createElement(e,r)}),an=(e,n,a=!0)=>{switch(e){case"title":return{toComponent:()=>sy(e,n.title,n.titleAttributes),toString:()=>ry(e,n.title,n.titleAttributes,a)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>ku(n),toString:()=>xu(n)};default:return{toComponent:()=>nr(e,n),toString:()=>oy(e,n,a)}}},ly=({metaTags:e,linkTags:n,scriptTags:a,encode:i})=>{const r=mo(e,co.meta),o=mo(n,co.link),l=mo(a,co.script);return{priorityMethods:{toComponent:()=>[...nr("meta",r.priority),...nr("link",o.priority),...nr("script",l.priority)],toString:()=>`${an("meta",r.priority,i)} ${an("link",o.priority,i)} ${an("script",l.priority,i)}`},metaTags:r.default,linkTags:o.default,scriptTags:l.default}},cy=e=>{const{baseTag:n,bodyAttributes:a,encode:i=!0,htmlAttributes:r,noscriptTags:o,styleTags:l,title:s="",titleAttributes:c,prioritizeSeoTags:u}=e;let{linkTags:m,metaTags:g,scriptTags:f}=e,p={toComponent:()=>[],toString:()=>""};return u&&({priorityMethods:p,linkTags:m,metaTags:g,scriptTags:f}=ly(e)),{priority:p,base:an("base",n,i),bodyAttributes:an("bodyAttributes",a,i),htmlAttributes:an("htmlAttributes",r,i),link:an("link",m,i),meta:an("meta",g,i),noscript:an("noscript",o,i),script:an("script",f,i),style:an("style",l,i),title:an("title",{title:s,titleAttributes:c},i)}},Yo=cy,Ui=[],_s=!!(typeof window<"u"&&window.document&&window.document.createElement),Qo=class{constructor(e,n){rn(this,"instances",[]);rn(this,"canUseDOM",_s);rn(this,"context");rn(this,"value",{setHelmet:e=>{this.context.helmet=e},helmetInstances:{get:()=>this.canUseDOM?Ui:this.instances,add:e=>{(this.canUseDOM?Ui:this.instances).push(e)},remove:e=>{const n=(this.canUseDOM?Ui:this.instances).indexOf(e);(this.canUseDOM?Ui:this.instances).splice(n,1)}}});this.context=e,this.canUseDOM=n||!1,n||(e.helmet=Yo({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},dy=parseInt(O.version.split(".")[0],10),Jo=dy>=19,uy={},wu=O.createContext(uy),Vn,Zo=(Vn=class extends d.Component{constructor(a){
478super(a);rn(this,"helmetData");Jo?this.helmetData=null:this.helmetData=new Qo(this.props.context||{},Vn.canUseDOM)}render(){return Jo?O.createElement(O.Fragment,null,this.props.children):O.createElement(wu.Provider,{value:this.helmetData.value},this.props.children)}},rn(Vn,"canUseDOM",_s),Vn),la=(e,n)=>{const a=document.head||document.querySelector("head"),i=a.querySelectorAll(`${e}[${ln}]`),r=[].slice.call(i),o=[];let l;return n&&n.length&&n.forEach(s=>{const c=document.createElement(e);for(const u in s)if(Object.prototype.hasOwnProperty.call(s,u))if(u==="innerHTML")c.innerHTML=s.innerHTML;else if(u==="cssText"){const m=s.cssText;c.appendChild(document.createTextNode(m))}else{const m=u,g=typeof s[m]>"u"?"":s[m];c.setAttribute(u,g)}c.setAttribute(ln,"true"),r.some((u,m)=>(l=m,c.isEqualNode(u)))?r.splice(l,1):o.push(c)}),r.forEach(s=>{var c;return(c=s.parentNode)==null?void 0:c.removeChild(s)}),o.forEach(s=>a.appendChild(s)),{oldTags:r,newTags:o}},Xo=(e,n)=>{const a=document.getElementsByTagName(e)[0];if(!a)return;const i=a.getAttribute(ln),r=i?i.split(","):[],o=[...r],l=Object.keys(n);for(const s of l){const c=n[s]||"";a.getAttribute(s)!==c&&a.setAttribute(s,c),r.indexOf(s)===-1&&r.push(s);const u=o.indexOf(s);u!==-1&&o.splice(u,1)}for(let s=o.length-1;s>=0;s-=1)a.removeAttribute(o[s]);r.length===o.length?a.removeAttribute(ln):a.getAttribute(ln)!==l.join(",")&&a.setAttribute(ln,l.join(","))},my=(e,n)=>{typeof e<"u"&&document.title!==e&&(document.title=bu(e)),Xo("title",n)},oc=(e,n)=>{const{baseTag:a,bodyAttributes:i,htmlAttributes:r,linkTags:o,metaTags:l,noscriptTags:s,onChangeClientState:c,scriptTags:u,styleTags:m,title:g,titleAttributes:f}=e;Xo("body",i),Xo("html",r),my(g,f);const p={baseTag:la("base",a),linkTags:la("link",o),metaTags:la("meta",l),noscriptTags:la("noscript",s),scriptTags:la("script",u),styleTags:la("style",m)},h={},b={};Object.keys(p).forEach(y=>{const{newTags:v,oldTags:w}=p[y];v.length&&(h[y]=v),w.length&&(b[y]=p[y].oldTags)}),n&&n(),c(e,h,b)},ni=null,py=e=>{ni&&cancelAnimationFrame(ni),e.defer?ni=requestAnimationFrame(()=>{oc(e,()=>{ni=null})}):(oc(e),ni=null)},gy=py,sc=class extends d.Component{constructor(){super(...arguments);rn(this,"rendered",!1)}shouldComponentUpdate(n){return!Qv(n,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:n}=this.props.context;n.remove(this),this.emitChange()}emitChange(){const{helmetInstances:n,setHelmet:a}=this.props.context;let i=null;const r=ny(n.get().map(o=>{const{context:l,...s}=o.props;return s}));Zo.canUseDOM?gy(r):Yo&&(i=Yo(r)),a(i)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:n}=this.props.context;n.add(this),this.emitChange()}render(){return this.init(),null}},ar=[],lc=e=>{const n={};for(const a of Object.keys(e))n[yu[a]||a]=e[a];return n},Ln=e=>{const n={};for(const a of Object.keys(e)){const i=Er[a];n[i||a]=e[a]}return n},cc=(e,n)=>{if(!_s)return;const a=document.getElementsByTagName(e)[0];if(!a)return;const i="data-rh-managed",r=a.getAttribute(i),o=r?r.split(","):[],l=Object.keys(n);for(const s of o)l.includes(s)||a.removeAttribute(s);for(const s of l){const c=n[s];c==null||c===!1?a.removeAttribute(s):c===!0?a.setAttribute(s,""):a.setAttribute(s,String(c))}l.length>0?a.setAttribute(i,l.join(",")):a.removeAttribute(i)},po=()=>{const e={},n={};for(const a of ar){const{htmlAttributes:i,bodyAttributes:r}=a.props;i&&Object.assign(e,lc(i)),r&&Object.assign(n,lc(r))}cc("html",e),cc("body",n)},fy=class extends d.Component{componentDidMount(){ar.push(this),po()}componentDidUpdate(){po()}componentWillUnmount(){const e=ar.indexOf(this);e!==-1&&ar.splice(e,1),po()}resolveTitle(){const{title:e,titleTemplate:n,defaultTitle:a}=this.props;return e&&n?n.replace(/%s/g,()=>Array.isArray(e)?e.join(""):e):e||a||void 0}renderTitle(){const e=this.resolveTitle();if(e===void 0)return null;const n=this.props.titleAttributes||{};return O.createElement("title",Ln(n),e)}renderBase(){const{base:e}=this.props;return e?O.createElement("base",Ln(e)):null}renderMeta(){const{meta:e}=this.props;return!e||!Array.isArray(e)?null:e.map((n,a)=>O.createElement("meta",{key:a,...Ln(n)}))}renderLink(){const{link:e}=this.props;return!e||!Array.isArray(e)?null:e.map((n,a)=>O.createElement("link",{key:a,...Ln(n)}))}renderScript(){const{script:e}=this.props;return!e||!Array.isArray(e)?null:e.map((n,a)=>{const{innerHTML:i,...r}=n,o=Ln(r);return i&&(o.dangerouslySetInnerHTML={__html:i}),O.createElement("script",{key:a,...o})})}renderStyle(){const{style:e}=this.props;return!e||!Array.isArray(e)?null:e.map((n,a)=>{const{cssText:i,...r}=n,o=Ln(r);return i&&(o.dangerouslySetInnerHTML={__html:i}),O.createElement("style",{key:a,...o})})}renderNoscript(){const{noscript:e}=this.props;return!e||!Array.isArray(e)?null:e.map((n,a)=>{const{innerHTML:i,...r}=n,o=Ln(r);return i&&(o.dangerouslySetInnerHTML={__html:i}),O.createElement("noscript",{key:a,...o})})}render(){return O.createElement(O.Fragment,null,this.renderTitle(),this.renderBase(),this.renderMeta(),this.renderLink(),this.renderScript(),this.renderStyle(),this.renderNoscript())}},Lo,hy=(Lo=class extends d.Component{shouldComponentUpdate(e){return!Hv(rc(this.props,"helmetData"),rc(e,"helmetData"))}mapNestedChildrenToProps(e,n){if(!n)return null;switch(e.type){case"script":case"noscript":return{innerHTML:n};case"style":return{cssText:n};default:throw new Error(`<${e.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(e,n,a,i){return{...n,[e.type]:[...n[e.type]||[],{...a,...this.mapNestedChildrenToProps(e,i)}]}}mapObjectTypeChildren(e,n,a,i){switch(e.type){case"title":return{...n,[e.type]:i,titleAttributes:{...a}};case"body":return{...n,bodyAttributes:{...a}};case"html":return{...n,htmlAttributes:{...a}};default:return{...n,[e.type]:{...a}}}}mapArrayTypeChildrenToProps(e,n){let a={...n};return Object.keys(e).forEach(i=>
478{a={...a,[i]:e[i]}}),a}warnOnInvalidChildren(e,n){return ac(ic.some(a=>e.type===a),typeof e.type=="function"?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":`Only elements types ${ic.join(", ")} are allowed. Helmet does not support rendering <${e.type}> elements. Refer to our API for more information.`),ac(!n||typeof n=="string"||Array.isArray(n)&&!n.some(a=>typeof a!="string"),`Helmet expects a string as a child of <${e.type}>. Did you forget to wrap your children in braces? ( <${e.type}>{\`\`}</${e.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(e,n){let a={};return O.Children.forEach(e,i=>{if(!i||!i.props)return;const{children:r,...o}=i.props,l=Object.keys(o).reduce((c,u)=>(c[yu[u]||u]=o[u],c),{});let{type:s}=i;switch(typeof s=="symbol"?s=s.toString():this.warnOnInvalidChildren(i,r),s){case"Symbol(react.fragment)":n=this.mapChildrenToProps(r,n);break;case"link":case"meta":case"noscript":case"script":case"style":a=this.flattenArrayTypeChildren(i,a,l,r);break;default:n=this.mapObjectTypeChildren(i,n,l,r);break}}),this.mapArrayTypeChildrenToProps(a,n)}render(){const{children:e,...n}=this.props;let a={...n},{helmetData:i}=n;if(e&&(a=this.mapChildrenToProps(e,a)),i&&!(i instanceof Qo)){const r=i;i=new Qo(r.context,!0),delete a.helmetData}return Jo?O.createElement(fy,{...a}):i?O.createElement(sc,{...a,context:i.value}):O.createElement(wu.Consumer,null,r=>O.createElement(sc,{...a,context:r}))}},rn(Lo,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),Lo);function ca(e){const n=[],a=new Date(e);for(let i=0;i<7;i++){const r=new Date(a);r.setDate(a.getDate()+i),n.push(r.toISOString().split("T")[0])}return n}function Es(e,n){return e.startDate<=n&&e.endDate>=n}function pr(e){const n=new Date(e),a=n.getFullYear(),i=String(n.getMonth()+1).padStart(2,"0"),r=String(n.getDate()).padStart(2,"0");return`${a}-${i}-${r}`}function gr(e){const n=new Date(e),a=String(n.getHours()).padStart(2,"0"),i=String(n.getMinutes()).padStart(2,"0");return`${a}:${i}`}function vy(e){var o,l,s;const n=e.billing_mode_override??null,a=((o=e.activities)==null?void 0:o.is_sellable)??null,r=n??(a===!0?"billable":a===!1?"internal":null);return{id:e.id,name:e.name,activityId:e.activity_id??null,activityName:((l=e.activities)==null?void 0:l.name)||"",startAt:e.start_at,endAt:e.end_at,startDate:pr(e.start_at),endDate:pr(e.end_at),start:gr(e.start_at),end:gr(e.end_at),maxParticipants:e.max_participants,registeredParticipants:e.registered_participants,assignedPersonnelIds:e.event_personnel.map(c=>c.member_id),assignedResourceIds:e.event_resources.map(c=>c.resource_id),cancelled:e.cancelled,bookable:e.bookable,saleId:e.sale_id,saleStatus:((s=e.sales)==null?void 0:s.status)||null,customerId:e.customer_id??null,projectId:e.project_id??null,seriesId:e.series_id??null,seriesInstanceDate:e.series_instance_date??null,isOverride:e.is_override??!1,buffer_before_minutes:e.buffer_before_minutes??null,buffer_after_minutes:e.buffer_after_minutes??null,effectiveBillingMode:r,billingModeOverride:n,bookingStatusOverride:e.booking_status_override??null,operationalStatus:e.operational_status??"confirmed"}}function $D(e){return e.map(vy)}function yy(e){var o,l,s;const n=e.billing_mode_override??null,a=((o=e.activities)==null?void 0:o.is_sellable)??null,r=n??(a===!0?"billable":a===!1?"internal":null);return{id:e.id,name:e.name,activityId:e.activity_id??null,activityName:((l=e.activities)==null?void 0:l.name)||"",startAt:e.start_at,endAt:e.end_at,startDate:pr(e.start_at),endDate:pr(e.end_at),start:gr(e.start_at),end:gr(e.end_at),maxParticipants:e.max_participants,registeredParticipants:e.registered_participants,assignedPersonnelIds:e.event_personnel.map(c=>c.member_id),assignedResourceIds:e.event_resources.map(c=>c.resource_id),cancelled:e.cancelled,bookable:e.bookable,saleId:e.sale_id,saleStatus:((s=e.sales)==null?void 0:s.status)||null,customerId:e.customer_id??null,projectId:e.project_id??null,seriesId:e.series_id??null,seriesInstanceDate:e.series_instance_date??null,isOverride:e.is_override??!1,buffer_before_minutes:e.buffer_before_minutes??null,buffer_after_minutes:e.buffer_after_minutes??null,effectiveBillingMode:r,billingModeOverride:n,bookingStatusOverride:e.booking_status_override??null,operationalStatus:e.operational_status??"confirmed"}}function Rs(e){return e.map(yy)}function go(e,n){return e.replace(/ is double-booked$/,` ${n.isDoubleBooked}`).replace(/ is on leave$/,` ${n.hasLeave}`).replace(/ has leave during event$/,` ${n.hasLeave}`).replace(/ is blocked$/,` ${n.isBlocked}`)}function by(e,n,a){return e.map(i=>{const r=n[i.id];let o="LOADING",l="";return i.cancelled?(o="CANCELLED",l=a.eventCancelled):r&&(o=r.status,l=[...r.conflicts.map(c=>go(c,a)),...r.missing.map(c=>go(c,a))].join("; ")||(o==="READY"?a.allRequirementsMet:"")),{...i,status:o,statusDetails:l,conflictItems:r?r.conflicts.map(s=>go(s,a)):[]}})}function zs(e,n,a){return n&&a?by(e,n,a):e.map(i=>
478({...i,status:i.cancelled?"CANCELLED":"LOADING",statusDetails:i.cancelled?(a==null?void 0:a.eventCancelled)??"Event cancelled":"",conflictItems:[]}))}function xy(e){return!!(e.saleId&&e.saleStatus&&!["closed_won"].includes(e.saleStatus))}function Ms(e){if(xy(e))switch(e.status){case"READY":return"chip-dashed-outline-ready";case"MISSING":return"chip-dashed-outline-missing";case"CONFLICT":return"chip-dashed-outline-conflict";case"CANCELLED":return"chip-dashed-outline-cancelled";case"LOADING":return"chip-dashed-outline-loading";default:return"chip-dashed-outline"}switch(e.status){case"READY":return"status-ready";case"MISSING":return"status-missing";case"CONFLICT":return"status-conflict";case"CANCELLED":return"status-cancelled";case"LOADING":return"status-loading";default:return"bg-muted"}}function Is(e){switch(e){case"READY":return"pax-badge-ready";case"MISSING":return"pax-badge-missing";case"CONFLICT":return"pax-badge-conflict";case"CANCELLED":return"pax-badge-cancelled";case"LOADING":return"pax-badge-loading";default:return""}}function Ls(e,n){const a=e.seriesId?n.find(o=>o.id===e.seriesId):null,i=e.effectiveBillingMode==="billable",r=i&&e.bookable?e.bookingStatusOverride??(a==null?void 0:a.booking_status)??"open":"open";return{status:r,isClosed:i&&e.bookable&&r==="closed",isPrivate:i&&e.bookable&&r==="private",isCommercial:i}}function Fs(e){return e==="tentative"?"status-tentative":""}function Os(e,n){return n.personnelFilter.length===0?e:e.filter(a=>a.assignedPersonnelIds.some(i=>n.personnelFilter.includes(i)))}function Fn(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}function dc(e){const[n,a,i]=e.split("-").map(Number);return new Date(n,(a??1)-1,i??1)}const Su=d.createContext(null);function ky({children:e}){const[n,a]=d.useState(()=>{const v=new Date,w=Fn(v),x=v.getDay(),S=x===0?-6:1-x,k=new Date(v);k.setDate(v.getDate()+S);const C=Fn(k);return{weekStart:C,weekDates:ca(C),viewMode:"week",currentMonth:new Date,currentDate:w,personnelFilter:[]}}),i=d.useCallback(v=>{a(w=>({...w,weekStart:v,weekDates:ca(v)}))},[]),r=d.useCallback(()=>{a(v=>{const w=new Date(v.weekStart);w.setDate(w.getDate()-7);const x=w.toISOString().split("T")[0];return{...v,weekStart:x,weekDates:ca(x)}})},[]),o=d.useCallback(()=>{a(v=>{const w=new Date(v.weekStart);w.setDate(w.getDate()+7);const x=w.toISOString().split("T")[0];return{...v,weekStart:x,weekDates:ca(x)}})},[]),l=d.useCallback(()=>{const v=new Date,w=Fn(v),x=v.getDay(),S=x===0?-6:1-x;v.setDate(v.getDate()+S);const k=Fn(v);a(C=>({...C,weekStart:k,weekDates:ca(k),currentDate:w,currentMonth:new Date}))},[]),s=d.useCallback(()=>{a(v=>{const w=dc(v.currentDate);return w.setDate(w.getDate()-1),{...v,currentDate:Fn(w)}})},[]),c=d.useCallback(()=>{a(v=>{const w=dc(v.currentDate);return w.setDate(w.getDate()+1),{...v,currentDate:Fn(w)}})},[]),u=d.useCallback(v=>{a(w=>({...w,currentDate:Fn(v),viewMode:"day"}))},[]),m=d.useCallback(v=>{const w=new Date(v),x=w.getDay(),S=x===0?-6:1-x;w.setDate(w.getDate()+S);const k=w.toISOString().split("T")[0];a(C=>({...C,weekStart:k,weekDates:ca(k),viewMode:"week"}))},[]),g=d.useCallback(v=>{a(w=>({...w,viewMode:v}))},[]),f=d.useCallback(()=>{a(v=>{const w=new Date(v.currentMonth);return w.setMonth(w.getMonth()-1),{...v,currentMonth:w}})},[]),p=d.useCallback(()=>{a(v=>{const w=new Date(v.currentMonth);return w.setMonth(w.getMonth()+1),{...v,currentMonth:w}})},[]),h=d.useCallback(v=>{a(w=>({...w,personnelFilter:w.personnelFilter.includes(v)?w.personnelFilter:[...w.personnelFilter,v]}))},[]),b=d.useCallback(v=>{a(w=>({...w,personnelFilter:w.personnelFilter.filter(x=>x!==v)}))},[]),y=d.useCallback(()=>{a(v=>({...v,personnelFilter:[]}))},[]);return t.jsx(Su.Provider,{value:{...n,setWeekStart:i,goToPreviousWeek:r,goToNextWeek:o,goToToday:l,goToWeek:m,goToPreviousDay:s,goToNextDay:c,goToDay:u,setViewMode:g,goToPreviousMonth:f,goToNextMonth:p,addPersonnelFilter:h,removePersonnelFilter:b,clearPersonnelFilter:y},children:e})}function vn(){const e=d.useContext(Su);if(!e)throw new Error("useCalendar must be used within a CalendarProvider");return e}const Bs="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2060%2030'%3e%3cclipPath%20id='s'%3e%3cpath%20d='M0,0%20v30%20h60%20v-30%20z'/%3e%3c/clipPath%3e%3cclipPath%20id='t'%3e%3cpath%20d='M30,15%20h30%20v15%20z%20v15%20h-30%20z%20h-30%20v-15%20z%20v-15%20h30%20z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23s)'%3e%3cpath%20d='M0,0%20v30%20h60%20v-30%20z'%20fill='%23012169'/%3e%3cpath%20d='M0,0%20L60,30%20M60,0%20L0,30'%20stroke='%23fff'%20stroke-width='6'/%3e%3cpath%20d='M0,0%20L60,30%20M60,0%20L0,30'%20clip-path='url(%23t)'%20stroke='%23C8102E'%20stroke-width='4'/%3e%3cpath%20d='M30,0%20v30%20M0,15%20h60'%20stroke='%23fff'%20stroke-width='10'/%3e%3cpath%20d='M30,0%20v30%20M0,15%20h60'%20stroke='%23C8102E'%20stroke-width='6'/%3e%3c/g%3e%3c/svg%3e",qs="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2022%2016'%3e%3crect%20width='22'%20height='16'%20fill='%23EF2B2D'/%3e%3crect%20x='6'%20width='4'%20height='16'%20fill='%23fff'/%3e%3crect%20y='6'%20width='22'%20height='4'%20fill='%23fff'/%3e%3crect%20x='7'%20width='2'%20height='16'%20fill='%23002868'/%3e%3crect%20y='7'%20width='22'%20height='2'%20fill='%23002868'/%3e%3c/svg%3e",Vs="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-de'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23fc0'%20d='M0%20320h64
4780v160H0z'/%3e%3cpath%20fill='%23000001'%20d='M0%200h640v160H0z'/%3e%3cpath%20fill='red'%20d='M0%20160h640v160H0z'/%3e%3c/svg%3e",Ks="/assets/es-d5m8M5h8.svg",Ws="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-fr'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23fff'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23000091'%20d='M0%200h213.3v480H0z'/%3e%3cpath%20fill='%23e1000f'%20d='M426.7%200H640v480H426.7z'/%3e%3c/svg%3e",Us="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='512'%20height='512'%20viewBox='0%200%20512%20512'%3e%3cmask%20id='a'%3e%3ccircle%20cx='256'%20cy='256'%20r='256'%20fill='%23fff'/%3e%3c/mask%3e%3cg%20mask='url(%23a)'%3e%3cpath%20fill='%23eee'%20d='M167%200h178l25.9%20252.3L345%20512H167l-29.8-253.4z'/%3e%3cpath%20fill='%236da544'%20d='M0%200h167v512H0z'/%3e%3cpath%20fill='%23d80027'%20d='M345%200h167v512H345z'/%3e%3c/g%3e%3c/svg%3e",wy={en:{dashboard:"Dashboard",calendar:"Calendar",resourcePlanner:"Resource Planner",sales:"Sales",projects:"Projects",customers:"Customers",recurring:"Recurring",resources:"Resources",resourceTypes:"Resource Types",resourceBlockings:"Resource Blockings",leaves:"Leave & Absence",personnel:"Personnel",competences:"Competences",activities:"Activities",products:"Products",bookings:"Bookings",bookingScreens:"Booking Screens",myProfile:"My Profile",chat:"Chat",uiShowcase:"UI Showcase",settings:"Settings",companySettings:"Company Settings",prices:"Prices",giftCards:"Gift Cards",contacts:"Contacts",promoCodes:"Promo Codes",bookingLedger:"Partner Ledger",myTrips:"My Trips",distributors:"Distributors",priceCategories:"Price Categories",accounting:"Accounting",activityCategories:"Activity Categories",groupSales:"Sales",groupBooking:"Booking",groupOperations:"Operations",groupSetup:"Setup"},no:{dashboard:"Dashboard",calendar:"Kalender",resourcePlanner:"Ressursplanlegger",sales:"Salg",projects:"Prosjekter",customers:"Kunder",recurring:"Repeterende",resources:"Ressurser",resourceTypes:"Ressurstyper",resourceBlockings:"Ressursblokkeringer",leaves:"Ferie og fravær",personnel:"Personell",competences:"Kompetanser",activities:"Aktiviteter",products:"Produkter",bookings:"Bookinger",bookingScreens:"Bookingskjermer",myProfile:"Min profil",chat:"Chat",uiShowcase:"UI Showcase",settings:"Innstillinger",companySettings:"Firmainnstillinger",prices:"Priser",giftCards:"Gavekort",contacts:"Kontakter",promoCodes:"Rabattkoder",bookingLedger:"Partnerregnskap",myTrips:"Mine turer",distributors:"Distributører",priceCategories:"Priskategorier",accounting:"Regnskap",activityCategories:"Aktivitetskategorier",groupSales:"Salg",groupBooking:"Booking",groupOperations:"Drift",groupSetup:"Oppsett"},de:{dashboard:"Dashboard",calendar:"Kalender",resourcePlanner:"Ressourcenplaner",sales:"Verkauf",projects:"Projekte",customers:"Kunden",recurring:"Wiederkehrend",resources:"Ressourcen",resourceTypes:"Ressourcentypen",resourceBlockings:"Ressourcensperren",leaves:"Urlaub & Abwesenheit",personnel:"Personal",competences:"Kompetenzen",activities:"Aktivitäten",products:"Produkte",bookings:"Buchungen",bookingScreens:"Buchungsbildschirme",myProfile:"Mein Profil",chat:"Chat",uiShowcase:"UI Showcase",settings:"Einstellungen",companySettings:"Unternehmenseinstellungen",prices:"Preise",giftCards:"Gutscheine",contacts:"Kontakte",promoCodes:"Rabattcodes",bookingLedger:"Partnerledger",myTrips:"Meine Touren",distributors:"Distributoren",priceCategories:"Preiskategorien",accounting:"Buchhaltung",activityCategories:"Aktivitätskategorien",groupSales:"Vertrieb",groupBooking:"Buchung",groupOperations:"Betrieb",groupSetup:"Einrichtung"},es:{dashboard:"Panel",calendar:"Calendario",resourcePlanner:"Planificador de recursos",sales:"Ventas",projects:"Proyectos",customers:"Clientes",recurring:"Recurrente",resources:"Recursos",resourceTypes:"Tipos de recurso",resourceBlockings:"Bloqueos de recursos",leaves:"Vacaciones y ausencias",personnel:"Personal",competences:"Competencias",activities:"Actividades",products:"Productos",bookings:"Reservas",bookingScreens:"Pantallas de reserva",myProfile:"Mi perfil",chat:"Chat",uiShowcase:"UI Showcase",settings:"Configuración",companySettings:"Configuración de empresa",prices:"Precios",giftCards:"Tarjetas regalo",contacts:"Contactos",promoCodes:"Códigos de descuento",bookingLedger:"Libro de socios",myTrips:"Mis viajes",distributors:"Distribuidores",priceCategories:"CategorÃas de precio",accounting:"Contabilidad",activityCategories:"CategorÃas de actividad",groupSales:"Ventas",groupBooking:"Reservas",groupOperations:"Operaciones",groupSetup:"Configuración"},fr:{dashboard:"Tableau de bord",calendar:"Calendrier",resourcePlanner:"Planificateur de ressources",sales:"Ventes",projects:"Projets",customers:"Clients",recurring:"Récurrent",resources:"Ressources",resourceTypes:"Types de ressource",resourceBlockings:"Blocages de ressources",leaves:"Congés et absences",personnel:"Personnel",competences:"Compétences",activities:"Activités",products:"Produits",bookings:"Réservations",bookingScreens:"Ãcrans de réservation",myProfile:"Mon profil",chat:"Chat",uiShowcase:"UI Showcase",settings:"Paramètres",companySettings:"Paramètres entreprise",prices:"Prix",giftCards:"Cartes cadeaux",contacts:"Contacts",promoCodes:"Codes promo",bookingLedger:"Grand livre partenaire",myTrips:"Mes sorties",distributors:"Distributeurs",priceCategories:"Catégories de prix",accounting:"Comptabilité",activityCategories:"Catégories d'activité",groupSales:"Ventes",groupBooking:"Réservations",groupOperations:"Opérations",groupSetup:"Configuration"},it:{dashboard:"Dashboard",calendar:"Calendario",resourcePlanner:"Pianificatore risorse",sales:"Vendite",projects:"Progetti",customers:"Clienti",recurring:"Ricorrente",resources:"Risorse",resourceTypes:"Tipi di risorsa",resourceBlockings:"Blocchi risorse",leaves:"Ferie e assenze",personnel:"Personale",competences:"Competenze",activities:"Attività ",products:"Prodotti",bookings:"Prenotazioni",bookingScreens:"Schermate prenotazione",myProfile:"Il mio profilo",chat:"Chat",uiShowcase:"UI Showcase",settings:"Impostazioni",companySettings:"Impostazioni azienda",prices:"Prezzi",giftCards:"Carte regalo",contacts:"Contatti",promoCodes:"Codici sconto",bookingLedger:"Registro partner",myTrips:"Le mie uscite",distributors:"Distributori",priceCategories:"Categorie di prezzo",accounting:"Contabilità ",activityCategories:"Categorie di attività ",groupSales:"Vendite",groupBooking:"Prenotazioni",groupOperations:"Operazioni",groupSetup:"Configurazione"}},Sy={en:{add:"Add",save:"Save",cancel:"Cancel",delete:"Delete",edit:"Edit",saveChanges:"Save changes",remove:"Remove",name:"Name",today:"Today",previous:"Previous",next:"Next",noRequirements:"No requirements",noneAvailable:"None available",select:"Select",invite:"Invite",sendInvite:"Send invitation",searchPlaceholder:"Search...",none:"None",create:"Create",noneSelected:"None selected",saveFailed:"Save failed",companyNoLongerExists:"no longer exists"},no:{add:"Legg til",save:"Lagre",cancel:"Avbryt",delete:"Slett",edit:"Rediger",saveChanges:"Lagre endringer",remove:"Fjern",name:"Navn",today:"I dag",previous:"Forrige",next:"Neste",noRequirements:"Ingen krav",noneAvailable:"Ingen tilgjengelig",select:"Velg",invite:"Inviter",sendInvite:"Send invitasjon",searchPlaceholder:"Søk...",none:"Ingen",create:"Opprett",noneSelected:"Ingen valgt",s
478aveFailed:"Lagring feilet",companyNoLongerExists:"eksisterer ikke lengre"},de:{add:"Hinzufügen",save:"Speichern",cancel:"Abbrechen",delete:"Löschen",edit:"Bearbeiten",saveChanges:"Ãnderungen speichern",remove:"Entfernen",name:"Name",today:"Heute",previous:"Zurück",next:"Weiter",noRequirements:"Keine Anforderungen",noneAvailable:"Keine verfügbar",select:"Auswählen",invite:"Einladen",sendInvite:"Einladung senden",searchPlaceholder:"Suchen...",none:"Keine",create:"Erstellen",noneSelected:"Keine ausgewählt",saveFailed:"Speichern fehlgeschlagen",companyNoLongerExists:"existiert nicht mehr"},es:{add:"Añadir",save:"Guardar",cancel:"Cancelar",delete:"Eliminar",edit:"Editar",saveChanges:"Guardar cambios",remove:"Quitar",name:"Nombre",today:"Hoy",previous:"Anterior",next:"Siguiente",noRequirements:"Sin requisitos",noneAvailable:"Ninguno disponible",select:"Seleccionar",invite:"Invitar",sendInvite:"Enviar invitación",searchPlaceholder:"Buscar...",none:"Ninguno",create:"Crear",noneSelected:"Ninguno seleccionado",saveFailed:"Error al guardar",companyNoLongerExists:"ya no existe"},fr:{add:"Ajouter",save:"Enregistrer",cancel:"Annuler",delete:"Supprimer",edit:"Modifier",saveChanges:"Enregistrer les modifications",remove:"Retirer",name:"Nom",today:"Aujourd'hui",previous:"Précédent",next:"Suivant",noRequirements:"Aucune exigence",noneAvailable:"Aucun disponible",select:"Sélectionner",invite:"Inviter",sendInvite:"Envoyer l'invitation",searchPlaceholder:"Rechercher...",none:"Aucun",create:"Créer",noneSelected:"Aucun sélectionné",saveFailed:"Ãchec de l'enregistrement",companyNoLongerExists:"n'existe plus"},it:{add:"Aggiungi",save:"Salva",cancel:"Annulla",delete:"Elimina",edit:"Modifica",saveChanges:"Salva modifiche",remove:"Rimuovi",name:"Nome",today:"Oggi",previous:"Precedente",next:"Successivo",noRequirements:"Nessun requisito",noneAvailable:"Nessuno disponibile",select:"Seleziona",invite:"Invita",sendInvite:"Invia invito",searchPlaceholder:"Cerca...",none:"Nessuno",create:"Crea",noneSelected:"Nessuno selezionato",saveFailed:"Salvataggio non riuscito",companyNoLongerExists:"non esiste più"}},Cy={en:{light:"Light mode",dark:"Dark mode",system:"System",label:"Theme"},no:{light:"Lyst tema",dark:"Mørkt tema",system:"System",label:"Tema"},de:{light:"Heller Modus",dark:"Dunkler Modus",system:"System",label:"Thema"},es:{light:"Modo claro",dark:"Modo oscuro",system:"Sistema",label:"Tema"},fr:{light:"Mode clair",dark:"Mode sombre",system:"Système",label:"Thème"},it:{light:"Modalità chiara",dark:"Modalità scura",system:"Sistema",label:"Tema"}},Ny={en:{title:"Activities",newActivity:"New activity",editActivity:"Edit activity",noActivitiesYet:"No activities yet.",description:"Description",defaultDuration:"Default duration (min)",bufferBefore:"Buffer before (min)",bufferAfter:"Buffer after (min)",bookableDefault:"Bookable by default",exampleName:"e.g. Guided Tour",activitiesInProduct:"Activities in product",category:"Category",commercialCategory:"Sellable activity",internalCategory:"Internal activity",commercialDesc:"Activity that can be sold / booked",internalDesc:"Meetings, maintenance, planning",maxParticipants:"Max participants",personnelRequirements:"Personnel requirements",resourceRequirements:"Resource requirements",searchActivities:"Search activities...",noCommercialYet:"No sellable activities yet.",noInternalYet:"No internal activities yet.",noResults:"No results.",priceCategories:"Price Categories",prices:"Prices",publishingContent:"Publishing Content",validFrom:"Valid from",notSet:"Not set",createCategoriesFirst:"Create price categories first (Price Categories button at top).",newPriceEffective:"New price {amount} effective from {date}",commercialTab:"Sellable activities",internalTab:"Internal activities",seriesTab:"Scheduled departures",optionalDescription:"Optional description",cannotDeleteHasBookings:"Cannot delete activity with active bookings",aiImportTitle:"Add activity",aiImportDescription:"Paste text from your website or a document describing the activity. Salesmate will extract structured data automatically.",aiImportPlaceholder:"Paste activity description here...",aiAnalyzeButton:"Extract data",aiAnalyzing:"Extracting...",aiImportSuccess:"Activity data extracted successfully",aiOrManual:"Or fill in manually",incomeProfile:"Income Profile",dynamicReqHint:"With {pax} participants:"},no:{title:"Aktiviteter",newActivity:"Ny aktivitet",editActivity:"Rediger aktivitet",noActivitiesYet:"Ingen aktiviteter ennÃ¥.",description:"Beskrivelse",defaultDuration:"Standard varighet (min)",bufferBefore:"Buffer før (min)",bufferAfter:"Buffer etter (min)",bookableDefault:"Bookbar som standard",exampleName:"f.eks. Omvisning",activitiesInProduct:"Aktiviteter i produkt",category:"Kategori",commercialCategory:"Salgbar aktivitet",internalCategory:"Intern aktivitet",commercialDesc:"Aktivitet som kan selges / bookes",internalDesc:"Møter, vedlikehold, planlegging",maxParticipants:"Maks deltakere",personnelRequirements:"Personellkrav",resourceRequirements:"Ressurskrav",searchActivities:"Søk aktiviteter...",noCommercialYet:"Ingen salgbare aktiviteter ennÃ¥.",noInternalYet:"Ingen interne aktiviteter ennÃ¥.",noResults:"Ingen treff.",priceCategories:"Priskategorier",prices:"Priser",publishingContent:"Publiseringsinnhold",validFrom:"Gyldig fra",notSet:"Ikke satt",createCategoriesFirst:"Opprett priskategorier først (fanen Priskategorier).",newPriceEffective:"Ny pris {amount} gjeldende fra {date}",commercialTab:"Salgbare aktiviteter",internalTab:"Interne aktiviteter",seriesTab:"Faste avganger",optionalDescription:"Valgfri beskrivelse",cannotDeleteHasBookings:"Kan ikke slette aktivitet med aktive bookinger",aiImportTitle:"Legg til aktivitet",aiImportDescription:"Lim inn tekst fra nettsiden din eller et dokument som beskriver aktiviteten. Salesmate trekker ut strukturert data automatisk.",aiImportPlaceholder:"Lim inn aktivitetsbeskrivelse her...",aiAnalyzeButton:"Trekk ut data",aiAnalyzing:"Trekker ut...",aiImportSuccess:"Aktivitetsdata hentet ut",aiOrManual:"Eller fyll inn manuelt",incomeProfile:"Innte
478ktsprofil",dynamicReqHint:"Ved {pax} deltakere:"},de:{title:"Aktivitäten",newActivity:"Neue Aktivität",editActivity:"Aktivität bearbeiten",noActivitiesYet:"Noch keine Aktivitäten.",description:"Beschreibung",defaultDuration:"Standarddauer (Min.)",bufferBefore:"Puffer vorher (Min.)",bufferAfter:"Puffer nachher (Min.)",bookableDefault:"StandardmäÃig buchbar",exampleName:"z.B. Geführte Tour",activitiesInProduct:"Aktivitäten im Produkt",category:"Kategorie",commercialCategory:"Verkaufbare Aktivität",internalCategory:"Interne Aktivität",commercialDesc:"Aktivität, die verkauft/gebucht werden kann",internalDesc:"Besprechungen, Wartung, Planung",maxParticipants:"Max. Teilnehmer",personnelRequirements:"Personalanforderungen",resourceRequirements:"Ressourcenanforderungen",searchActivities:"Aktivitäten suchen...",noCommercialYet:"Noch keine verkaufbaren Aktivitäten.",noInternalYet:"Noch keine internen Aktivitäten.",noResults:"Keine Ergebnisse.",priceCategories:"Preiskategorien",prices:"Preise",publishingContent:"Veröffentlichungsinhalt",validFrom:"Gültig ab",notSet:"Nicht gesetzt",createCategoriesFirst:"Erstellen Sie zuerst Preiskategorien.",newPriceEffective:"Neuer Preis {amount} gültig ab {date}",commercialTab:"Verkaufbare Aktivitäten",internalTab:"Interne Aktivitäten",seriesTab:"Feste Abfahrten",optionalDescription:"Optionale Beschreibung",cannotDeleteHasBookings:"Aktivität mit aktiven Buchungen kann nicht gelöscht werden",aiImportTitle:"Aktivität hinzufügen",aiImportDescription:"Fügen Sie Text von Ihrer Website oder einem Dokument ein. Salesmate extrahiert strukturierte Daten automatisch.",aiImportPlaceholder:"Aktivitätsbeschreibung hier einfügen...",aiAnalyzeButton:"Daten extrahieren",aiAnalyzing:"Extrahiere...",aiImportSuccess:"Aktivitätsdaten erfolgreich extrahiert",aiOrManual:"Oder manuell ausfüllen",incomeProfile:"Einkommensprofil",dynamicReqHint:"Bei {pax} Teilnehmern:"},es:{title:"Actividades",newActivity:"Nueva actividad",editActivity:"Editar actividad",noActivitiesYet:"Aún no hay actividades.",description:"Descripción",defaultDuration:"Duración predeterminada (min)",bufferBefore:"Margen antes (min)",bufferAfter:"Margen después (min)",bookableDefault:"Reservable por defecto",exampleName:"ej. Visita guiada",activitiesInProduct:"Actividades en producto",category:"CategorÃa",commercialCategory:"Actividad vendible",internalCategory:"Actividad interna",commercialDesc:"Actividad que se puede vender/reservar",internalDesc:"Reuniones, mantenimiento, planificación",maxParticipants:"Máx. participantes",personnelRequirements:"Requisitos de personal",resourceRequirements:"Requisitos de recursos",searchActivities:"Buscar actividades...",noCommercialYet:"Aún no hay actividades vendibles.",noInternalYet:"Aún no hay actividades internas.",noResults:"Sin resultados.",priceCategories:"CategorÃas de precios",prices:"Precios",publishingContent:"Contenido de publicación",validFrom:"Válido desde",notSet:"No establecido",createCategoriesFirst:"Cree primero categorÃas de precios.",newPriceEffective:"Nuevo precio {amount} efectivo desde {date}",commercialTab:"Actividades vendibles",internalTab:"Actividades internas",seriesTab:"Salidas programadas",optionalDescription:"Descripción opcional",cannotDeleteHasBookings:"No se puede eliminar una actividad con reservas activas",aiImportTitle:"Añadir actividad",aiImportDescription:"Pegue texto de su sitio web o documento. Salesmate extraerá datos estructurados automáticamente.",aiImportPlaceholder:"Pegue la descripción de la actividad aquÃ...",aiAnalyzeButton:"Extraer datos",aiAnalyzing:"Extrayendo...",aiImportSuccess:"Datos de actividad extraÃdos correctamente",aiOrManual:"O rellenar manualmente",incomeProfile:"Perfil de ingresos",dynamicReqHint:"Con {pax} participantes:"},fr:{title:"Activités",newActivity:"Nouvelle activité",editActivity:"Modifier l'activité",noActivitiesYet:"Aucune activité.",description:"Description",defaultDuration:"Durée par défaut (min)",bufferBefore:"Marge avant (min)",bufferAfter:"Marge après (min)",bookableDefault:"Réservable par défaut",exampleName:"ex. Visite guidée",activitiesInProduct:"Activités dans le produit",category:"Catégorie",commercialCategory:"Activité vendable",internalCategory:"Activité interne",commercialDesc:"Activité pouvant être vendue/réservée",internalDesc:"Réunions, maintenance, planification",maxParticipants:"Max. participants",personnelRequirements:"Exigences de personnel",resourceRequirements:"Exigences de ressources",searchActivities:"Rechercher des activités...",noCommercialYet:"Aucune activité vendable.",noInternalYet:"Aucune activité interne.",noResults:"Aucun résultat.",priceCategories:"Catégories de prix",prices:"Prix",publishingContent:"Contenu de publication",validFrom:"Valide à partir de",notSet:"Non défini",createCategoriesFirst:"Créez d'abord des catégories de prix.",newPriceEffective:"Nouveau prix {amount} effectif à partir du {date}",commercialTab:"Activités vendables",internalTab:"Activités internes",seriesTab:"Départs programmés",optionalDescription:"Description optionnelle",cannotDeleteHasBookings:"Impossible de supprimer une activité avec des réservations actives",aiImportTitle:"Ajouter une activité",aiImportDescription:"Collez du texte de votre site web ou document. Salesmate extraira les données structurées automatiquement.",aiImportPlaceholder:"Collez la description de l'activité ici...",aiAnalyzeButton:"Extraire les données",aiAnalyzing:"Extraction en cours...",aiImportSuccess:"Données d'activité extraites avec succès",aiOrManual:"Ou remplir manuellement",incomeProfile:"Profil de revenus",dynamicReqHint:"Avec {pax} participants :"},it:{title:"Attività ",newActivity:"Nuova attività ",editActivity:"Modifica attività ",noActivitiesYet:"Nessuna attività .",description:"Descrizione",defaultDuration:"Durata predefinita (min)",bufferBefore:"Margine prima (min)",bufferAfter:"Margine dopo (min)",bookableDefault:"Prenotabile per impostazione predefinita",exampleName:"es. Visita guidata",activitiesInProduct:"Attività nel prodotto",category:"Categoria",commercialCategory:"Attività vendibile",internalCategory:"Attività interna",commercialDesc:"Attività vendibile/prenotabile",internalDesc:"Riunioni, manutenzione, pianificazione",maxParticipants:"Max partecipanti",personnelRequirements:"Requisiti personale",resourceRequirements:"Requisiti risorse",searchActivities:"Cerca attività ...",noCommercialYet:"Nessuna attività vendibile.",noInternalYet:"Nessuna attività interna.",noResults:"Nessun risultato.",priceCategories:"Categorie di prezzo",prices:"Prezzi",publishingContent:"Contenuto di pubblicazione",validFrom:"Valido dal",notSet:"Non impostato",createCategoriesFirst:"Crea prima le categorie di prezzo.",newPriceEffective:"Nuovo prezzo {amount} valido dal {date}",commercialTab:"Attività vendibili",internalTab:"Attività interne",seriesTab:"Partenze programmate",optionalDescription:"Descrizione opzionale",cannotDeleteHasBookings:"Impossibile eliminare un'attività con prenotazioni attive",aiImportTitle:"Aggiungi attività ",aiImportDescription:"Incolla il testo dal tuo sito web o documento. Salesmate estrarrà i dati strutturati automaticamente.",aiImportPlaceholder:"Incolla la descrizione dell'attività qui...",aiAnalyzeButton:"Estrai dati",aiAnalyzing:"Estrazione in corso...",aiImportSuccess:"Dati attività estratti con successo",aiOrManual:"O compila manualmente",incomeProfile:"Profilo di reddito",dynamicReqHint:"Con {pax} partecipanti:"}},Ay={en:{editInfo:"Edit publishing content",sections:"Sections",addSection:"Add section",titleLabel:"Title",content:"Content",items:"Items",newItemPlaceholder:"New item...",writeContentHere:"Write content here...",writeText:"Write text...",hideLibrary:"Hide library",selectFromLibrary:"Select from library",searchLibrary:"Search library...",noResults:"No results",libraryEmpty:"Library is empty",usedTimes:"Used {{count}} times",detachFromLibrary:"Detach from library",addSectionToStart:"Add a section to get started",selectSectionLeft:"Select a section on the left",more:"+{{count}} more",sectionFullDescription:"Full description",sectionHighlights:"Highlights",sectionIncludes:"Includes",sectionNotIncluded:"Not included",sectionNotSuitableFor:"Not suitable for",sectionMeetingPoint:"Meeting point",sectionImportantInfo:"Important information",sectionCustom:"Custom",sectionOverview:"Key Information",overviewDifficulty:"Difficulty level",overviewDuration:"Duration",overviewCapacity:"Capacity",overviewSeason:"Season",overviewMeetingPoint:"Meeting point",overviewCheckIn:"Check-in time",pasteFromClipboard:"Paste from clipboard",copyToClipboard:"Copy to clipboard",copied:"Copied!",meetingPointAddress:"Address",meetingPointSearchPlaceholder:"Search address...",tabInfo:"Activity info",tabWidget:"Widget",tabName:"Activity name",listPlaceholder:"One item per line...",addCustomSection:"Custom section",baseLanguage:"Base language",autoTranslated:"Auto-translated",manualOverride:"Manual override",translating:"Translating..."},no:{editInfo:"Rediger publiseringsinnhold",sections:"Seksjoner",addSection:"Legg til seksjon",titleLabel:"Tittel",content:"Innhold",items:"Punkter",newItemPlaceholder:"Nytt punkt...",writeContentHere:"Skriv innhold her...",writeText:"Skriv tekst...",hideLibrary:"Skjul bibliotek",selectFromLibrary:"Velg fra bibliotek",searchLibrary:"Søk i bibliotek...",noResults:"Ingen treff",libraryEmpty:"Biblioteket er tomt",usedTimes:"Brukt {{count}} ganger",detachFromLibrary:"Koble fra bibliotek",addSectionToStart:"Legg til en seksjon for Ã¥ komme i gang",selectSectionLeft:"Velg en seksjon til venstre",more:"+{{count}} flere",sectionFullDescription:"Full beskrivelse",sectionHighlights:"Høydepunkter",sectionIncludes:"Inkludert",sectionNotIncluded:"Ikke inkludert",sectionNotSuitableFor:"Ikke egnet for",sectionMeetingPoint:"Møtepunkt",sectionImportantInfo:"Viktig informasjon",sectionCustom:"Egendefinert",sectionOverview:"Nøkkelinformasjon",overviewDifficulty:"Vanskelighetsgrad",overviewDuration:"Varighet",overviewCapacity:"Kapasitet",overviewSeason:"Sesong",overviewMeetingPoint:"Møtepunkt",overviewCheckIn:"Innsjekkingstid",pasteFromClipboard:"Lim inn fra utklippstavle",copyToClipboard:"Kopier til utklippstavle",copied:"Kopiert!",meetingPointAddress:"Adresse",meetingPointSearchPlaceholder:"Søk adresse...",tabInfo:"Aktivitetsinfo",tabWidget:"Widget",tabName:"Aktivitetsnavn",listPlaceholder:"Ett punkt per linje...",addCustomSection:"Egendefinert seksjon",baseLanguage:"BasissprÃ¥k",autoTranslated:"Automatisk oversatt",manualOverride:"Manuell overstyring",translating:"Oversetter..."},de:{editInfo:"Veröffentlichungsinhalt bearbeiten",sections:"Abschnitte",addSection:"Abschnitt hinzufügen",titleLabel:"Titel",content:"Inhalt",items:"Punkte",newItemPlaceholder:"Neuer Punkt...",writeContentHere:"Inhalt hier schreiben...",writeText:"Text schreiben...",hideLibrary:"Bibliothek ausblenden",selectFromLibrary:"Aus Bibliothek wählen",searchLibrary:"Bibliothek durchsuchen...",noResults:"Keine Ergebnisse",libraryEmpty:"Bibliothek ist leer",usedTimes:"{{count}} Mal verwendet",detachFromLibrary:"Von Bibliothek trennen",addSectionToStart:"Fügen Sie einen Abschnitt hinzu",selectSectionLeft:"Wählen Sie links einen Abschnitt",more:"+{{count}} weitere",sectionFullDescription:"Vollständige Beschreibung",sectionHighlights:"Höhepunkte",sectionIncludes:"Inbegriffen",sectionNotIncluded:"Nicht inbegriffen",sectionNotSuitableFor:"Nicht geeignet für",sectionMeetingPoint:"Treffpunkt",sectionImportantInfo:"Wichtige Informationen",sectionCustom:"Benutzerdefiniert",sectionOverview:"Schlüsselinformationen",overviewDifficulty:"Schwierigkeitsgrad",overviewDuration:"Dauer",overviewCapacity:"Kapazität",overviewSeason:"Saison",overviewMeetingPoint:"Treffpunkt",overviewCheckIn:"Check-in-Zeit",pasteFromClipboard:"Aus Zwischenablage einfügen",copyToClipboard:"In Zwischenablage kopieren",copied:"Kopiert!",meetingPointAddress:"Adresse",meetingPointSearchPlaceholder:"Adresse suchen...",tabInfo:"Aktivitätsinfo",tabWidget:"Widget",tabName:"Aktivitätsname",listPlaceholder:"Ein Punkt pro Zeile...",addCustomSection:"Benutzerdefinierter Abschnitt",baseLanguage:"Basissprache",autoTranslated:"Automatisch übersetzt",manualOverride:"Manuelle Ãberschreibung",translating:"Ãbersetze..."},es:{editInfo:"Editar contenido de publicación",sections:"Secciones",addSection:"Añadir sección",titleLabel:"TÃtulo",content:"Contenido",items:"Elementos",newItemPlaceholder:"Nuevo elemento...",writeContentHere:"Escriba el contenido aquÃ...",writeText:"Escribir texto...",hideLibrary:"Ocultar biblioteca",selectFromLibrary:"Seleccionar de biblioteca",searchLibrary:"Buscar en biblioteca...",noResults:"Sin resultados",libraryEmpty:"La biblioteca está vacÃa",usedTimes:"Usado {{count}} veces",detachFromLibrary:"Separar de biblioteca",addSectionToStart:"Añada una sección para comenzar",selectSectionLeft:"Seleccione una sección a la izquierda",more:"+{{count}} más",sectionFullDescription:"Descripción completa",sectionHighlights:"Destacados",sectionIncludes:"Incluye",sectionNotIncluded:"No incluido",sectionNotSuitableFor:"No apto para",sectionMeetingPoint:"Punto de encuentro",sectionImportantInfo:"Información importante",sectionCustom:"Personalizado",sectionOverview:"Información clave",overviewDifficulty:"Nivel de dificultad",overviewDuration:"Duración",overviewCapacity:"Capacidad",overviewSeason:"Temporada",overviewMeetingPoint:"Punto de encuentro",overviewCheckIn:"Hora de registro",pasteFromClipboard:"Pegar del portapapeles",copyToClipboard:"Copiar al portapapeles",copied:"¡Copiado!",meetingPointAddress:"Dirección",meetingPointSearchPlaceholder:"Buscar dirección...",tabInfo:"Info actividad",tabWidget:"Widget",tabName:"Nombre de actividad",listPlaceholder:"Un elemento por lÃnea...",addCustomSection:"Sección personalizada",baseLanguage:"Idioma base",autoTranslated:"Traducido automáticamente",manualOverride:"Reemplazo manual",translating:"Traduciendo..."},fr:{editInfo:"Modifier le contenu de publication",sections:"Sections",addSection:"Ajouter une section",titleLabel:"Titre",content:"Contenu",items:"Points",newItemPlaceholder:"Nouveau point...",writeContentHere:"Ãcrivez le contenu ici...",writeText:"Ãcrire du texte...",hideLibrary:"Masquer la bibliothèque",selectFromLibrary:"Sélectionner dans la bibliothèque",searchLibrary:"Rechercher dans la bibliothèque...",noResults:"Aucun résultat",libraryEmpty:"La bibliothèque est vide",usedTimes:"Utilisé {{count}} fois",detachFromLibrary:"Détacher de la bibliothèque",addSectionToStart:"Ajoutez une section pour commencer",selectSectionLeft:"Sélectionnez une section à gauche",more:"+{{count}} de plus",sectionFullDescription:"Description complète",sectionHighlights:"Points forts",sectionIncludes:"Inclus",sectionNotIncluded:"Non inclus",sectionNotSuitableFor:"Non adapté pour",sectionMeetingPoint:"Point de rencontre",sectionImportantInfo:"Informations importantes",sectionCustom:"Personnalisé",sectionOverview:"Informations clés",overviewDifficulty:"Niveau de difficulté",overviewDuration:"Durée",overviewCapacity:"Capacité",overviewSeason:"Saison",overviewMeetingPoint:"Point de rencontre",overviewCheckIn:"Heure d'enregistrement",pasteFromClipboard:"Coller depuis le presse-papiers",copyToClipboard:"Copier dans le presse-papiers",copied:"Copié !",meetingPointAddress:"Adresse",meetingPointSearchPlaceholder:"Rechercher une adresse...",tabInfo:"Info activité",tabWidget:"Widget",tabName:"Nom de l'activité",listPlaceholder:"Un point par ligne...",addCustomSection:"Section personnalisée",baseLanguage:"Langue de base",autoTranslated:"Traduit automatiquement",manualOverride:"Remplacement manuel",translating:"Traduction en cours..."},it:{editInfo:"Modifica contenuto di pubblicazione",sections:"Sezioni",addSection:"Aggiungi sezione",titleLabel:"Titolo",content:"Contenuto",items:"Elementi",newItemPlaceholder:"Nuovo elemento...",writeContentHere:"Scrivi il contenuto qui...",writeText:"Scrivi testo...",hideLibrary:"Nascondi libreria",selectFromLibrary:"Seleziona dalla libreria",searchLibrary:"Cerca nella libreria...",noResults:"Nessun risultato",libraryEmpty:"La libreria è vuota",usedTimes:"Usato {{count}} volte",detachFromLibrary:"Scollega dalla libreria",addSectionToStart:"Aggiungi un
478a sezione per iniziare",selectSectionLeft:"Seleziona una sezione a sinistra",more:"+{{count}} altri",sectionFullDescription:"Descrizione completa",sectionHighlights:"In evidenza",sectionIncludes:"Include",sectionNotIncluded:"Non incluso",sectionNotSuitableFor:"Non adatto a",sectionMeetingPoint:"Punto di incontro",sectionImportantInfo:"Informazioni importanti",sectionCustom:"Personalizzato",sectionOverview:"Informazioni chiave",overviewDifficulty:"Livello di difficoltà ",overviewDuration:"Durata",overviewCapacity:"Capacità ",overviewSeason:"Stagione",overviewMeetingPoint:"Punto di incontro",overviewCheckIn:"Orario check-in",pasteFromClipboard:"Incolla dagli appunti",copyToClipboard:"Copia negli appunti",copied:"Copiato!",meetingPointAddress:"Indirizzo",meetingPointSearchPlaceholder:"Cerca indirizzo...",tabInfo:"Info attività ",tabWidget:"Widget",tabName:"Nome attività ",listPlaceholder:"Un elemento per riga...",addCustomSection:"Sezione personalizzata",baseLanguage:"Lingua base",autoTranslated:"Tradotto automaticamente",manualOverride:"Sostituzione manuale",translating:"Traduzione in corso..."}},Py={en:{dayView:"Day view",weekView:"Week view",monthView:"Month view",week:"Week",noEvents:"No events",noEventsThisDay:"No events this day",showOnlyIssues:"Show only issues",searchEvents:"Search events...",ready:"Ready",missing:"Missing",conflict:"Conflict",cancelled:"Cancelled",allRequirementsMet:"All requirements met",eventCancelled:"Event cancelled",doubleBooked:"double-booked",blocked:"blocked",isDoubleBooked:"is double-booked",hasLeave:"has leave during event",isBlocked:"is blocked",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",sunday:"Sunday",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun",searchPersonnel:"Search personnel...",noResults:"No results",activity:"Activity",activitySeries:"Activity series",leaveAbsence:"Leave / Absence",resourceBlocking:"Resource blocking",weatherDetails:"Weather details",weatherMorning:"Morning",weatherMidday:"Midday",weatherEvening:"Evening",weatherNight:"Night",weatherWind:"Wind",weatherPrecipitation:"Precipitation",weatherTemperature:"Temperature",weatherTotalPrecipitation:"Total precipitation",windWarning:"Wind warning",windWarningYellow:"Near gale",windWarningOrange:"Gale",windWarningRed:"Storm",weatherDataSource:"Based on data from MET Norway (met.no)",weatherWindCalm:"Calm winds",weatherWindLight:"Light breeze",weatherWindModerate:"Moderate wind",weatherWindFresh:"Fresh wind",weatherWindStrong:"Strong wind",weatherNoPrecipitation:"Dry",weatherLightRain:"Light rain",weatherModerateRain:"Moderate rain",weatherHeavyRain:"Heavy rain",leavesAndBlockings:"Leave & blockings"},no:{dayView:"Dagvisning",weekView:"Ukevisning",monthView:"MÃ¥nedsvisning",week:"Uke",noEvents:"Ingen hendelser",noEventsThisDay:"Ingen arrangementer denne dagen",showOnlyIssues:"Vis kun problemer",searchEvents:"Søk i hendelser...",ready:"Klar",missing:"Mangler",conflict:"Konflikt",cancelled:"Innstilt",allRequirementsMet:"Alle krav oppfylt",eventCancelled:"Event innstilt",doubleBooked:"dobbeltbooket",blocked:"blokkert",isDoubleBooked:"er dobbeltbooket",hasLeave:"har fravær i dette tidsrommet",isBlocked:"er blokkert",monday:"Mandag",tuesday:"Tirsdag",wednesday:"Onsdag",thursday:"Torsdag",friday:"Fredag",saturday:"Lørdag",sunday:"Søndag",mon:"Man",tue:"Tir",wed:"Ons",thu:"Tor",fri:"Fre",sat:"Lør",sun:"Søn",searchPersonnel:"Søk personell...",noResults:"Ingen treff",activity:"Aktivitet",activitySeries:"Serie av aktiviteter",leaveAbsence:"Ferie / Fravær",resourceBlocking:"Ressursblokkering",weatherDetails:"Værdetaljer",weatherMorning:"Morgen",weatherMidday:"Middag",weatherEvening:"Kveld",weatherNight:"Natt",weatherWind:"Vind",weatherPrecipitation:"Nedbør",weatherTemperature:"Temperatur",weatherTotalPrecipitation:"Total nedbør",windWarning:"Vindvarsel",windWarningYellow:"Liten kuling",windWarningOrange:"Sterk kuling",windWarningRed:"Storm",weatherDataSource:"Data fra Meteorologisk institutt (met.no)",weatherWindCalm:"Stille vind",weatherWindLight:"Lett bris",weatherWindModerate:"Moderat vind",weatherWindFresh:"Frisk bris",weatherWindStrong:"Sterk vind",weatherNoPrecipitation:"Oppholdsvær",weatherLightRain:"Lett nedbør",weatherModerateRain:"Moderat nedbør",weatherHeavyRain:"Kraftig nedbør",leavesAndBlockings:"Fravær og blokkeringer"},de:{dayView:"Tagesansicht",weekView:"Wochenansicht",monthView:"Monatsansicht",week:"Woche",noEvents:"Keine Termine",noEventsThisDay:"Keine Termine an diesem Tag",showOnlyIssues:"Nur Probleme anzeigen",searchEvents:"Termine suchen...",ready:"Bereit",missing:"Fehlend",conflict:"Konflikt",cancelled:"Abgesagt",allRequirementsMet:"Alle Anforderungen erfüllt",eventCancelled:"Termin abgesagt",doubleBooked:"doppelt gebucht",blocked:"gesperrt",isDoubleBooked:"ist doppelt gebucht",hasLeave:"hat Urlaub während des Termins",isBlocked:"ist gesperrt",monday:"Montag",tuesday:"Dienstag",wednesday:"Mittwoch",thursday:"Donnerstag",friday:"Freitag",saturday:"Samstag",sunday:"Sonntag",mon:"Mo",tue:"Di",wed:"Mi",thu:"Do",fri:"Fr",sat:"Sa",sun:"So",searchPersonnel:"Personal suchen...",noResults:"Keine Ergebnisse",activity:"Aktivität",activitySeries:"Aktivitätsserie",leaveAbsence:"Urlaub / Abwesenheit",resourceBlocking:"Ressourcensperre",weatherDetails:"Wetterdetails",weatherMorning:"Morgen",weatherMidday:"Mittag",weatherEvening:"Abend",weatherNight:"Nacht",weatherWind:"Wind",weatherPrecipitation:"Niederschlag",weatherTemperature:"Temperatur",weatherTotalPrecipitation:"Gesamtniederschlag",windWarning:"Windwarnung",windWarningYellow:"Stürmischer Wind",windWarningOrange:"Sturm",windWarningRed:"Schwerer Sturm",weatherDataSource:"Basierend auf Daten des Norwegischen Meteorologischen Instituts (met.no)",weatherWindCalm:"Windstille",weatherWindLight:"Leichte Brise",weatherWindModerate:"MäÃiger Wind",weatherWindFresh:"Frischer Wind",weatherWindStrong:"Starker Wind",weatherNoPrecipitation:"Trocken",weatherLightRain:"Leichter Regen",weatherModerateRain:"MäÃiger Regen",weatherHeavyRain:"Starker Regen",leavesAndBlockings:"Urlaub & Sperrungen"},es:{dayView:"Vista diaria",weekView:"Vista semanal",monthView:"Vista mensual",week:"Semana",noEvents:"Sin eventos",noEventsThisDay:"Sin eventos este dÃa",showOnlyIssues:"Mostrar solo problemas",searchEvents:"Buscar eventos...",ready:"Listo",missing:"Faltante",conflict:"Conflicto",cancelled:"Cancelado",allRequirementsMet:"Todos los requisitos cumplidos",eventCancelled:"Evento cancelado",doubleBooked:"doble reserva",blocked:"bloqueado",isDoubleBooked:"tiene doble reserva",hasLeave:"tiene ausencia durante el evento",isBlocked:"está bloqueado",monday:"Lunes",tuesday:"Martes",wednesday:"Miércoles",thursday:"Jueves",friday:"Viernes",saturday:"Sábado",sunday:"Domingo",mon:"Lun",tue:"Mar",wed:"Mié",thu:"Jue",fri:"Vie",sat:"Sáb",sun:"Dom",searchPersonnel:"Buscar personal...",noResults:"Sin resultados",activity:"Actividad",activitySeries:"Serie de actividades",leaveAbsence:"Vacaciones / Ausencia",resourceBlocking:"Bloqueo de recurso",weatherDetails:"Detalles del tiempo",weatherMorning:"Mañana",weatherMidday:"MediodÃa",weatherEvening:"Tarde",weatherNight:"Noche",weatherWind:"Viento",weatherPrecipitation:"Precipitación",weatherTemperature:"Temperatura",weatherTotalPrecipitation:"Precipitación total",windWarning:"Alerta de viento",windWarningYellow:"Viento fuerte",windWarningOrange:"Temporal",windWarningRed:"Tormenta",weatherDataSource:"Basado en datos del Instituto Meteorológico de Noruega (met.no)",weatherWindCalm:"Calma",weatherWindLight:"Brisa ligera",weatherWindModerate:"Viento moderado",weatherWindFresh:"Viento fresco",weatherWindStrong:"Viento fuerte",weatherNoPrecipitation:"Sin lluvia",weatherLightRain:"Lluvia ligera",weatherModerateRain:"Lluvia moderada",weatherHeavyRain:"Lluvia intensa",leavesAndBlockings:"Ausencias y bloqueos"},fr:{dayView:"Vue journalière",weekView:"Vue hebdomadaire",monthView:"Vue mensuelle",week:"Semaine",noEvents:"Aucun événement",noEventsThisDay:"Aucun événement ce jour",showOnlyIssues:"Afficher uniquement les problèmes",searchEvents:"Rechercher des événements...",ready:"Prêt",missing:"Manquant",conflict:"Conflit",cancelled:"Annulé",allRequirementsMet:"Toutes les exigences remplies",eventCancelled:"Ãvénement annulé",doubleBooked:"double réservation",blocked:"bloqué",isDoubleBooked:"a une double réservation",hasLeave:"est en congé pendant l'événement",isBlocked:"est bloqué",monday:"Lundi",tuesday:"Mardi",wednesday:"Mercredi",thursday:"Jeudi",friday:"Vendredi",saturday:"Samedi",sunday:"Dimanche",mon:"Lun",tue:"Mar",wed:"Mer",thu:"Jeu",fri:"Ven",sat:"Sam",sun:"Dim",searchPersonnel:"Rechercher du personnel...",noResults:"Aucun résultat",activity:"Activité",activitySeries:"Série d'activités",leaveAbsence:"Congé / Absence",resourceBlocking:"Blocage de ressource",weatherDetails:"Détails météo",weatherMorning:"Matin",weatherMidday:"Midi",weatherEvening:"Soir",weatherNight:"Nuit",weatherWind:"Vent",weatherPrecipitation:"Précipitations",weatherTemperature:"Température",weatherTotalPrecipitation:"Précipitations totales",windWarning:"Alerte vent",windWarningYellow:"Vent fort",windWarningOrange:"Coup de vent",windWarningRed:"Tempête",weatherDataSource:"Basé sur les données de l'Institut Météorologique Norvégien (met.no)",weatherWindCalm:"Calme",weatherWindLight:"Brise légère",weatherWindModerate:"Vent modéré",weatherWindFresh:"Vent frais",weatherWindStrong:"Vent fort",weatherNoPrecipitation:"Sec",weatherLightRain:"Pluie légère",weatherModerateRain:"Pluie modérée",weatherHeavyRain:"Forte pluie",leavesAndBlockings:"Congés et blocages"},it:{dayView:"Vista giornaliera",weekView:"Vista settimanale",monthView:"Vista mensile",week:"Settimana",noEvents:"Nessun evento",noEventsThisDay:"Nessun evento oggi",showOnlyIssues:"Mostra solo problemi",searchEvents:"
478Cerca eventi...",ready:"Pronto",missing:"Mancante",conflict:"Conflitto",cancelled:"Annullato",allRequirementsMet:"Tutti i requisiti soddisfatti",eventCancelled:"Evento annullato",doubleBooked:"doppia prenotazione",blocked:"bloccato",isDoubleBooked:"ha una doppia prenotazione",hasLeave:"è in ferie durante l'evento",isBlocked:"è bloccato",monday:"Lunedì",tuesday:"Martedì",wednesday:"Mercoledì",thursday:"Giovedì",friday:"Venerdì",saturday:"Sabato",sunday:"Domenica",mon:"Lun",tue:"Mar",wed:"Mer",thu:"Gio",fri:"Ven",sat:"Sab",sun:"Dom",searchPersonnel:"Cerca personale...",noResults:"Nessun risultato",activity:"Attività ",activitySeries:"Serie di attività ",leaveAbsence:"Ferie / Assenza",resourceBlocking:"Blocco risorsa",weatherDetails:"Dettagli meteo",weatherMorning:"Mattina",weatherMidday:"Mezzogiorno",weatherEvening:"Sera",weatherNight:"Notte",weatherWind:"Vento",weatherPrecipitation:"Precipitazioni",weatherTemperature:"Temperatura",weatherTotalPrecipitation:"Precipitazioni totali",windWarning:"Allerta vento",windWarningYellow:"Vento forte",windWarningOrange:"Burrasca",windWarningRed:"Tempesta",weatherDataSource:"Basato su dati dell'Istituto Meteorologico Norvegese (met.no)",weatherWindCalm:"Calma",weatherWindLight:"Brezza leggera",weatherWindModerate:"Vento moderato",weatherWindFresh:"Vento fresco",weatherWindStrong:"Vento forte",weatherNoPrecipitation:"Asciutto",weatherLightRain:"Pioggia leggera",weatherModerateRain:"Pioggia moderata",weatherHeavyRain:"Pioggia intensa",leavesAndBlockings:"Assenze e blocchi"}},jy={en:{newEvent:"New event",addEvent:"Add",editEvent:"Edit event",eventName:"Event name",product:"Product",selectProduct:"Select product",quantity:"Quantity",maxParticipants:"Max participants",fromDate:"From date",toDate:"To date",startTime:"Start time",endTime:"End time",bookable:"Bookable",notes:"Notes",addNotes:"Add notes...",createEvent:"Create event",assigned:"assigned",noneAssigned:"None assigned",addPersonnel:"Add personnel",addResource:"Add resource",description:"Description",selectActivityOptional:"Select activity (optional)",customer:"Customer",project:"Project",selectCustomerOptional:"Select customer (optional)",selectProjectOptional:"Select project (optional)",allDay:"All day",starts:"Starts",ends:"Ends",bookingStatus:"Booking status",openForBooking:"Open",privateStatus:"Hidden",closed:"Closed",inheritFromSeries:"Inherits from series",activeBookings:"active bookings",cannotDisableBooking:"Cannot disable booking with active bookings",conflicts:"Conflicts",moreConflicts:"more",partOfSeries:"Part of series:",override:"Override",missingCompetence:"Missing",timeRequired:"Start and end time are required",endMustBeAfterStart:"End time must be after start time",operationalStatus:"Status",confirmed:"Confirmed",tentative:"Tentative",cancelledStatus:"Cancelled"},no:{newEvent:"Ny aktivitet",addEvent:"Legg til",editEvent:"Rediger hendelse",eventName:"Hendelsesnavn",product:"Produkt",selectProduct:"Velg produkt",quantity:"Antall",maxParticipants:"Maks deltakere",fromDate:"Fra dato",toDate:"Til dato",startTime:"Starttid",endTime:"Sluttid",bookable:"Bookbar",notes:"Notater",addNotes:"Legg til notater...",createEvent:"Opprett hendelse",assigned:"tildelt",noneAssigned:"Ingen tildelt",addPersonnel:"Legg til personell",addResource:"Legg til ressurs",description:"Beskrivelse",selectActivityOptional:"Velg aktivitet (valgfritt)",customer:"Kunde",project:"Prosjekt",selectCustomerOptional:"Velg kunde (valgfritt)",selectProjectOptional:"Velg prosjekt (valgfritt)",allDay:"Heldags",starts:"Starter",ends:"Slutter",bookingStatus:"Bookingstatus",openForBooking:"Ã
pen",privateStatus:"Skjult",closed:"Stengt",inheritFromSeries:"Arver fra serie",activeBookings:"aktive bookinger",cannotDisableBooking:"Kan ikke slÃ¥ av booking med aktive bookinger",conflicts:"Konflikter",moreConflicts:"til",partOfSeries:"Del av serie:",override:"Overstyrt",missingCompetence:"Mangler",timeRequired:"Start- og sluttid er pÃ¥krevd",endMustBeAfterStart:"Sluttid mÃ¥ være etter starttid",operationalStatus:"Status",confirmed:"Bekreftet",tentative:"Tentativ",cancelledStatus:"Innstilt"},de:{newEvent:"Neuer Termin",addEvent:"Hinzufügen",editEvent:"Termin bearbeiten",eventName:"Terminname",product:"Produkt",selectProduct:"Produkt wählen",quantity:"Menge",maxParticipants:"Max. Teilnehmer",fromDate:"Von Datum",toDate:"Bis Datum",startTime:"Startzeit",endTime:"Endzeit",bookable:"Buchbar",notes:"Notizen",addNotes:"Notizen hinzufügen...",createEvent:"Termin erstellen",assigned:"zugewiesen",noneAssigned:"Keine zugewiesen",addPersonnel:"Personal hinzufügen",addResource:"Ressource hinzufügen",description:"Beschreibung",selectActivityOptional:"Aktivität wählen (optional)",customer:"Kunde",project:"Projekt",selectCustomerOptional:"Kunde wählen (optional)",selectProjectOptional:"Projekt wählen (optional)",allDay:"Ganztägig",starts:"Beginnt",ends:"Endet",bookingStatus:"Buchungsstatus",openForBooking:"Offen",privateStatus:"Versteckt",closed:"Geschlossen",inheritFromSeries:"Von Serie geerbt",activeBookings:"aktive Buchungen",cannotDisableBooking:"Buchung kann nicht deaktiviert werden bei aktiven Buchungen",conflicts:"Konflikte",moreConflicts:"weitere",partOfSeries:"Teil der Serie:",override:"Ãberschrieben",missingCompetence:"Fehlend",timeRequired:"Start- und Endzeit sind erforderlich",endMustBeAfterStart:"Endzeit muss nach der Startzeit liegen",operationalStatus:"Status",confirmed:"Bestätigt",tentative:"Vorläufig",cancelledStatus:"Abgesagt"},es:{newEvent:"Nuevo evento",addEvent:"Añadir",editEvent:"Editar evento",eventName:"Nombre del evento",product:"Producto",selectProduct:"Seleccionar producto",quantity:"Cantidad",maxParticipants:"Máx. participantes",fromDate:"Desde fecha",toDate:"Hasta fecha",startTime:"Hora
478inicio",endTime:"Hora fin",bookable:"Reservable",notes:"Notas",addNotes:"Añadir notas...",createEvent:"Crear evento",assigned:"asignado",noneAssigned:"Ninguno asignado",addPersonnel:"Añadir personal",addResource:"Añadir recurso",description:"Descripción",selectActivityOptional:"Seleccionar actividad (opcional)",customer:"Cliente",project:"Proyecto",selectCustomerOptional:"Seleccionar cliente (opcional)",selectProjectOptional:"Seleccionar proyecto (opcional)",allDay:"Todo el dÃa",starts:"Empieza",ends:"Termina",bookingStatus:"Estado de reserva",openForBooking:"Abierto",privateStatus:"Oculto",closed:"Cerrado",inheritFromSeries:"Hereda de la serie",activeBookings:"reservas activas",cannotDisableBooking:"No se puede desactivar la reserva con reservas activas",conflicts:"Conflictos",moreConflicts:"más",partOfSeries:"Parte de la serie:",override:"Anulado",missingCompetence:"Faltante",timeRequired:"Se requieren hora de inicio y fin",endMustBeAfterStart:"La hora de fin debe ser posterior a la de inicio",operationalStatus:"Estado",confirmed:"Confirmado",tentative:"Tentativo",cancelledStatus:"Cancelado"},fr:{newEvent:"Nouvel événement",addEvent:"Ajouter",editEvent:"Modifier l'événement",eventName:"Nom de l'événement",product:"Produit",selectProduct:"Sélectionner un produit",quantity:"Quantité",maxParticipants:"Max. participants",fromDate:"Date de début",toDate:"Date de fin",startTime:"Heure de début",endTime:"Heure de fin",bookable:"Réservable",notes:"Notes",addNotes:"Ajouter des notes...",createEvent:"Créer l'événement",assigned:"assigné",noneAssigned:"Aucun assigné",addPersonnel:"Ajouter du personnel",addResource:"Ajouter une ressource",description:"Description",selectActivityOptional:"Sélectionner une activité (optionnel)",customer:"Client",project:"Projet",selectCustomerOptional:"Sélectionner un client (optionnel)",selectProjectOptional:"Sélectionner un projet (optionnel)",allDay:"Toute la journée",starts:"Commence",ends:"Termine",bookingStatus:"Statut de réservation",openForBooking:"Ouvert",privateStatus:"Masqué",closed:"Fermé",inheritFromSeries:"Hérite de la série",activeBookings:"réservations actives",cannotDisableBooking:"Impossible de désactiver la réservation avec des réservations actives",conflicts:"Conflits",moreConflicts:"de plus",partOfSeries:"Fait partie de la série :",override:"Remplacé",missingCompetence:"Manquant",timeRequired:"Les heures de début et de fin sont requises",endMustBeAfterStart:"L'heure de fin doit être après l'heure de début",operationalStatus:"Statut",confirmed:"Confirmé",tentative:"Provisoire",cancelledStatus:"Annulé"},it:{newEvent:"Nuovo evento",addEvent:"Aggiungi",editEvent:"Modifica evento",eventName:"Nome evento",product:"Prodotto",selectProduct:"Seleziona prodotto",quantity:"Quantità ",maxParticipants:"Max partecipanti",fromDate:"Da data",toDate:"A data",startTime:"Ora inizio",endTime:"Ora fine",bookable:"Prenotabile",notes:"Note",addNotes:"Aggiungi note...",createEvent:"Crea evento",assigned:"assegnato",noneAssigned:"Nessuno assegnato",addPersonnel:"Aggiungi personale",addResource:"Aggiungi risorsa",description:"Descrizione",selectActivityOptional:"Seleziona attività (opzionale)",customer:"Cliente",project:"Progetto",selectCustomerOptional:"Seleziona cliente (opzionale)",selectProjectOptional:"Seleziona progetto (opzionale)",allDay:"Tutto il giorno",starts:"Inizia",ends:"Termina",bookingStatus:"Stato prenotazione",openForBooking:"Aperto",privateStatus:"Nascosto",closed:"Chiuso",inheritFromSeries:"Eredita dalla serie",activeBookings:"prenotazioni attive",cannotDisableBooking:"Non è possibile disattivare la prenotazione con prenotazioni attive",conflicts:"Conflitti",moreConflicts:"altri",partOfSeries:"Parte della serie:",override:"Sovrascritto",missingCompetence:"Mancante",timeRequired:"Sono richiesti orario di inizio e fine",endMustBeAfterStart:"L'orario di fine deve essere successivo a quello di inizio",operationalStatus:"Stato",confirmed:"Confermato",tentative:"Provvisorio",cancelledStatus:"Annullato"}},Ty={en:{title:"Personnel",newPersonnel:"New personnel",editPersonnel:"Edit personnel",name:"Name",namePlaceholder:"e.g. John Doe",inviteAsUser:"Invite as user",accessLevel:"Access level",selectAccessLevel:"Select access level",competences:"Competences",clickToAddCompetences:"Click + to add competences",noPersonnelYet:"No personnel added yet.",selectPersonnel:"Select personnel",inviteSent:"Invitation sent",inviteResent:"Invitation resent",emailAddress:"Email address",exampleName:"e.g. John Doe",exampleEmail:"[email protected]",userLinkedSuccess:"User linked successfully",wrongCompanyError:"This member does not belong to the active company",notifyNewLeads:"Receive email for new leads",registeredUser:"Registered user",nameOnly:"Name only",pendingInvites:"Pending invites",pendingInvite:"Invited",invitedOn:"Invited",cancelInvite:"Cancel invitation",invite
478Cancelled:"Invitation cancelled",resendInvite:"Resend"},no:{title:"Personell",newPersonnel:"Nytt personell",editPersonnel:"Rediger personell",name:"Navn",namePlaceholder:"f.eks. Ola Nordmann",inviteAsUser:"Inviter som bruker",accessLevel:"TilgangsnivÃ¥",selectAccessLevel:"Velg tilgangsnivÃ¥",competences:"Kompetanser",clickToAddCompetences:"Klikk + for Ã¥ legge til kompetanser",noPersonnelYet:"Ingen personell lagt til ennÃ¥.",selectPersonnel:"Velg personell",inviteSent:"Invitasjon sendt",inviteResent:"Invitasjon sendt pÃ¥ nytt",emailAddress:"Epostadresse",exampleName:"f.eks. Ola Nordmann",exampleEmail:"[email protected]",userLinkedSuccess:"Bruker koblet til",wrongCompanyError:"Denne brukeren tilhører ikke det aktive firmaet",notifyNewLeads:"Motta e-post for nye leads",registeredUser:"Registrert bruker",nameOnly:"Kun navn",pendingInvites:"Ventende invitasjoner",pendingInvite:"Invitert",invitedOn:"Invitert",cancelInvite:"Avbryt invitasjon",inviteCancelled:"Invitasjon avbrutt",resendInvite:"Send pÃ¥ nytt"},de:{title:"Personal",newPersonnel:"Neues Personal",editPersonnel:"Personal bearbeiten",name:"Name",namePlaceholder:"z.B. Max Mustermann",inviteAsUser:"Als Benutzer einladen",accessLevel:"Zugangsstufe",selectAccessLevel:"Zugangsstufe wählen",competences:"Kompetenzen",clickToAddCompetences:"Klicken Sie auf + zum Hinzufügen",noPersonnelYet:"Noch kein Personal.",selectPersonnel:"Personal wählen",inviteSent:"Einladung gesendet",inviteResent:"Einladung erneut gesendet",emailAddress:"E-Mail-Adresse",exampleName:"z.B. Max Mustermann",exampleEmail:"[email protected]",userLinkedSuccess:"Benutzer erfolgreich verknüpft",wrongCompanyError:"Dieses Mitglied gehört nicht zum aktiven Unternehmen",notifyNewLeads:"E-Mail für neue Leads erhalten",registeredUser:"Registrierter Benutzer",nameOnly:"Nur Name",pendingInvites:"Ausstehende Einladungen",pendingInvite:"Eingeladen",invitedOn:"Eingeladen",cancelInvite:"Einladung abbrechen",inviteCancelled:"Einladung abgebrochen",resendInvite:"Erneut senden"},es:{title:"Personal",newPersonnel:"Nuevo personal",editPersonnel:"Editar personal",name:"Nombre",namePlaceholder:"ej. Juan GarcÃa",inviteAsUser:"Invitar como usuario",accessLevel:"Nivel de acceso",selectAccessLevel:"Seleccionar nivel de acceso",competences:"Competencias",clickToAddCompetences:"Pulse + para añadir competencias",noPersonnelYet:"Aún no se ha añadido personal.",selectPersonnel:"Seleccionar personal",inviteSent:"Invitación enviada",inviteResent:"Invitación reenviada",emailAddress:"Correo electrónico",exampleName:"ej. Juan GarcÃa",exampleEmail:"[email protected]",userLinkedSuccess:"Usuario vinculado correctamente",wrongCompanyError:"Este miembro no pertenece a la empresa activa",notifyNewLeads:"Recibir email para nuevos leads",registeredUser:"Usuario registrado",nameOnly:"Solo nombre",pendingInvites:"Invitaciones pendientes",pendingInvite:"Invitado",invitedOn:"Invitado",cancelInvite:"Cancelar invitación",inviteCancelled:"Invitación cancelada",resendInvite:"Reenviar"},fr:{title:"Personnel",newPersonnel:"Nouveau personnel",editPersonnel:"Modifier le personnel",name:"Nom",namePlaceholder:"ex. Jean Dupont",inviteAsUser:"Inviter comme utilisateur",accessLevel:"Niveau d'accès",selectAccessLevel:"Sélectionner le niveau d'accès",competences:"Compétences",clickToAddCompetences:"Cliquez sur + pour ajouter des compétences",noPersonnelYet:"Aucun personnel ajouté.",selectPersonnel:"Sélectionner le personnel",inviteSent:"Invitation envoyée",inviteResent:"Invitation renvoyée",emailAddress:"Adresse e-mail",exampleName:"ex. Jean Dupont",exampleEmail:"[email protected]",userLinkedSuccess:"Utilisateur lié avec succès",wrongCompanyError:"Ce membre n'appartient pas à l'entreprise active",notifyNewLeads:"Recevoir un e-mail pour les nouveaux leads",registeredUser:"Utilisateur enregistré",nameOnly:"Nom uniquement",pendingInvites:"Invitations en attente",pendingInvite:"Invité",invitedOn:"Invité",cancelInvite:"Annuler l'invitation",inviteCancelled:"Invitation annulée",resendInvite:"Renvoyer"},it:{title:"Personale",newPersonnel:"Nuovo personale",editPersonnel:"Modifica personale",name:"Nome",namePlaceholder:"es. Mario Rossi",inviteAsUser:"Invita come utente",accessLevel:"Livello di accesso",selectAccessLevel:"Seleziona livello di accesso",competences:"Competenze",clickToAddCompetences:"Clicca + per aggiungere competenze",noPersonnelYet:"Nessun personale aggiunto.",selectPersonnel:"Seleziona personale",inviteSent:"Invito inviato",inviteResent:"Invito reinv
478iato",emailAddress:"Indirizzo email",exampleName:"es. Mario Rossi",exampleEmail:"[email protected]",userLinkedSuccess:"Utente collegato con successo",wrongCompanyError:"Questo membro non appartiene all'azienda attiva",notifyNewLeads:"Ricevi email per nuovi lead",registeredUser:"Utente registrato",nameOnly:"Solo nome",pendingInvites:"Inviti in sospeso",pendingInvite:"Invitato",invitedOn:"Invitato",cancelInvite:"Annulla invito",inviteCancelled:"Invito annullato",resendInvite:"Reinvia"}},Dy={en:{title:"Resources",newResource:"New resource",editResource:"Edit resource",resourceType:"Resource type",selectResourceType:"Select resource type",maxPax:"Max pax",optional:"Optional",noResourcesYet:"No resources added yet.",selectResource:"Select resource",exampleName:"e.g. RIB Spirit",unknownResource:"Unknown resource"},no:{title:"Ressurser",newResource:"Ny ressurs",editResource:"Rediger ressurs",resourceType:"Ressurstype",selectResourceType:"Velg ressurstype",maxPax:"Maks pax",optional:"Valgfritt",noResourcesYet:"Ingen ressurser lagt til ennÃ¥.",selectResource:"Velg ressurs",exampleName:"f.eks. RIB Spirit",unknownResource:"Ukjent ressurs"},de:{title:"Ressourcen",newResource:"Neue Ressource",editResource:"Ressource bearbeiten",resourceType:"Ressourcentyp",selectResourceType:"Ressourcentyp wählen",maxPax:"Max. Pers.",optional:"Optional",noResourcesYet:"Noch keine Ressourcen.",selectResource:"Ressource wählen",exampleName:"z.B. RIB Spirit",unknownResource:"Unbekannte Ressource"},es:{title:"Recursos",newResource:"Nuevo recurso",editResource:"Editar recurso",resourceType:"Tipo de recurso",selectResourceType:"Seleccionar tipo de recurso",maxPax:"Máx. pax",optional:"Opcional",noResourcesYet:"Aún no se han añadido recursos.",selectResource:"Seleccionar recurso",exampleName:"ej. RIB Spirit",unknownResource:"Recurso desconocido"},fr:{title:"Ressources",newResource:"Nouvelle ressource",editResource:"Modifier la ressource",resourceType:"Type de ressource",selectResourceType:"Sélectionner le type de ressource",maxPax:"Max. pers.",optional:"Optionnel",noResourcesYet:"Aucune ressource ajoutée.",selectResource:"Sélectionner une ressource",exampleName:"ex. RIB Spirit",unknownResource:"Ressource inconnue"},it:{title:"Risorse",newResource:"Nuova risorsa",editResource:"Modifica risorsa",resourceType:"Tipo di risorsa",selectResourceType:"Seleziona tipo di risorsa",maxPax:"Max pers.",optional:"Opzionale",noResourcesYet:"Nessuna risorsa aggiunta.",selectResource:"Seleziona risorsa",exampleName:"es. RIB Spirit",unknownResource:"Risorsa sconosciuta"}},_y={en:{title:"Resource Types",newResourceType:"New resource type",editResourceType:"Edit resource type",noResourceTypesYet:"No resource types added yet.",exampleName:"e.g. Boat",unknownType:"Unknown type",occupancyMin:"PAX min",occupancyMax:"Max participants",exclusiveAllowed:"Allow exclusive use",occupancyHelp:"PAX",exclusiveHelp:"Guests can reserve an entire unit for themselves",shared:"Shared",exclusive:"Exclusive",solo:"Solo",resourceUnits:"Resource units",unitsUsed:"Used",unitsTotal:"Total",unitsRemaining:"Remaining",soloUnits:"Solo",sharedUnits:"Shared",resourceMode:"Resource mode",resourceType:"Resource type",selectResourceType:"Select resource type"},no:{title:"Ressurstyper",newResourceType:"Ny ressurstype",editResourceType:"Rediger ressurstype",noResourceTypesYet:"Ingen ressurstyper lagt til ennÃ¥.",exampleName:"f.eks. BÃ¥t",unknownType:"Ukjent type",occupancyMin:"PAX min",occupancyMax:"Maks deltagere",exclusiveAllowed:"Tillat eksklusiv bruk",occupancyHelp:"PAX",exclusiveHelp:"Gjester kan reservere en hel enhet for seg selv",shared:"Delt",exclusive:"Eksklusiv",solo:"Solo",resourceUnits:"Ressursenheter",unitsUsed:"Brukt",unitsTotal:"Totalt",unitsRemaining:"GjenstÃ¥ende",soloUnits:"Solo",sharedUnits:"Delt",resourceMode:"Ressursmodus",resourceType:"Ressurstype",selectResourceType:"Velg ressurstype"},de:{title:"Ressourcentypen",newResourceType:"Neuer Ressourcentyp",editResourceType:"Ressourcentyp bearbeiten",noResourceTypesYet:"Noch keine Ressourcentypen.",exampleName:"z.B. Boot",unknownType:"Unbekannter Typ",occupancyMin:"PAX min",occupancyMax:"Max. Teilnehmer",exclusiveAllowed:"Exklusivnutzung erlauben",occupancyHelp:"PAX",exclusiveHelp:"Gäste können eine ganze Einheit für sich reservieren",shared:"Geteilt",exclusive:"Exklusiv",solo:"Solo",resourceUnits:"Ressourceneinheiten",unitsUsed:"Belegt",unitsTotal:"Gesamt",unitsRemaining:"Verfügbar",soloUnits:"Solo",sharedUnits:"Geteilt",resourceMode:"Ressourcenmodus",resourceType:"Ressourcentyp",selectResourceType:"Ressourcentyp wählen"},es:{title:"Tipos de recurso",newResourceType:"Nuevo tipo de recurso",editResourceType:"Editar tipo de recurso",noResourceTypesYet:"Aún no se han añadido tipos de recurso.",exampleName:"ej. Barco",unknownType:"Tipo desconocido",occupancyMin:"PAX mÃn.",occupancyMax:"Máx. participantes",exclusiveAllowed:"Permitir uso exclusivo",occupancyHelp:"PAX",exclusiveHelp:"Los huéspedes pueden reservar una unidad completa para sà mismos",shared:"Compartido",exclusive:"Exclusivo",solo:"Solo",resourceUnits:"Unidades de recurso",unitsUsed:"Usadas",unitsTotal:"Total",unitsRemaining:"Restantes",soloUnits:"Solo",sharedUnits:"Compartidas",resourceMode:"Modo de recurso",resourceType:"Tipo de recurso",selectResourceType:"Seleccionar tipo de recurso"},fr:{title:"Types de ressource",newResourceType:"Nouveau type de ressource",editResourceType:"Modifier le type de ressource",noResourceTypesYet:"Aucun type de ressource ajouté.",exampleName:"ex. Bateau",unknownType:"Type inconnu",occupancyMin:"PAX min",occupancyMax:"Participants max",exclusiveAllowed:"Autoriser l'usage exclusif",occupancyHelp:"PAX",exclusiveHelp:"Les clients peuvent réserver une unité entière pour eux-mêmes",shared:"Partagé",exclusive:"Exclusif",solo:"Solo",resourceUnits:"Unités de ressource",unitsUsed:"Utilisées",unitsTotal:"Total",unitsRemaining:"Restantes",soloUnits:"Solo",sharedUnits:"Partagées",resourceMode:"Mode de ressource",resourceType:"Type de ressource",selectResourceType:"Sélectionner le type de ressource"},it:{title:"Tipi di risorsa",newResourceType:"Nuovo tipo di risorsa",editResourceType:"Modifica tipo di risorsa",noResourceTypesYet:"Nessun tipo di risorsa aggiunto.",exampleName:"es. Barca",unknownType:"Tipo sconosciuto",occupancyMin:"PAX min",occupancyMax:"Max partecipanti",exclusiveAllowed:"Consenti uso esclusivo",occupancyHelp:"PAX",exclusiveHelp:"Gli ospiti possono riservare un'intera unità per sé",shared:"Condiviso",exclusive:"Esclusivo",solo:"Solo",resourceUnits:"Unità risorsa",unitsUsed:"Usate",unitsTotal:"Totale",unitsRemaining:"Rimanenti",soloUnits:"Solo",sharedUnits:"Condivise",resourceMode:"Modalità risorsa",resourceType:"Tipo di risorsa",selectResourceType:"Seleziona tipo di risorsa"}},Ey={en:{title:"Resource Blockings",newBlocking:"New blocking",editBlocking:"Edit blocking",resource:"Resource",selectResource:"Select resource",reason:"Reason",timeRange:"Time period",dateFrom:"Date from",dateTo:"Date to",allDay:"All day",timeFrom:"Time from",timeTo:"Time to",noBlockingsYet:"No resource blockings added yet.",exampleReason:"e.g. Service/maintenance"},no:{title:"Ressursblokkeringer",newBlocking:"Ny blokkering",editBlocking:"Rediger blokkering",resource:"Ressurs",selectResource:"Velg ressurs",reason:"Ã
rsak",timeRange:"Tidsrom",dateFrom:"Fra dato",dateTo:"Til dato",allDay:"Heldags",timeFrom:"Fra kl.",timeTo:"Til kl.",noBlockingsYet:"Ingen ressursblokkeringer lagt til ennÃ¥.",exampleReason:"f.eks. Service/vedlikehold"},de:{title:"Ressourcensperren",newBlocking:"Neue Sperre",editBlocking:"Sperre bearbeiten",resource:"Ressource",selectResource:"Ressource wählen",reason:"Grund",timeRange:"Zeitraum",dateFrom:"Datum von",dateTo:"Datum bis",allDay:"Ganztägig",timeFrom:"Uhrzeit von",timeTo:"Uhrzeit bis",noBlockingsYet:"Noch keine Ressourcensperren.",exampleReason:"z.B. Wartung"},es:{title:"Bloqueos de recursos",newBlocking:"Nuevo bloqueo",editBlocking:"Editar bloqueo",resource:"Recurso",selectResource:"Seleccionar recurso",reason:"Motivo",timeRange:"PerÃodo",dateFrom:"Fecha desde",dateTo:"Fecha hasta",allDay:"Todo el dÃa",timeFrom:"Hora desde",timeTo:"Hora hasta",noBlockingsYet:"Aún no se han añadido bloqueos.",exampleReason:"ej. Servicio/mantenimiento"},fr:{title:"Blocages de ressources",newBlocking:"Nouveau blocage",editBlocking:"Modifier le blocage",resource:"Ressource",selectResource:"Sélectionner une ressource",reason:"Motif",timeRange:"Période",dateFrom:"Date de début",dateTo:"Date de fin",allDay:"Toute la journée",timeFrom:"Heure de début",timeTo:"Heure de fin",noBlockingsYet:"Aucun blocage ajouté.",exampleReason:"ex. Service/maintenance"},it:{title:"Blocchi risorse",newBlocking:"Nuovo blocco",editBlocking:"Modifica blocco",resource:"Risorsa",selectResource:"Seleziona risorsa",reason:"Motivo",timeRange:"Periodo",dateFrom:"Data da",dateTo:"Data a",allDay:"Tutto il giorno",timeFrom:"Ora da",timeTo:"Ora a",noBlockingsYet:"Nessun blocco aggiunto.",exampleReason:"es. Manutenzione"}},Ry={en:{title:"Competences",newCompetence:"New competence",editCompetence:"Edit competence",noCompetencesYet:"No competences added yet.",exampleName:"e.g. Aurora guide",unknownCompetence:"Unknown competence",requiredCompetences:"Required competences",clickToAddCompetences:"Click + to add competences",maxPax:"Max participants"},no:{title:"Kompetanser",newCompetence:"Ny kompetanse",editCompetence:"Rediger kompetanse",noCompetencesYet:"Ingen kompetanser lagt til ennÃ¥.",exampleName:"f.eks. Nordlysguide",unknownCompetence:"Ukjent kompetanse",requiredCompetences:"Nødvendige kompetanser",clickToAddCompetences:"Klikk + for Ã¥ legge til kompetanser",maxPax:"Maks deltakere"},de:{title:"Kompetenzen",newCompetence:"Neue Kompetenz",editCompetence:"Kompetenz bearbeiten",noCompetencesYet:"Noch keine Kompetenzen.",exampleName:"z.B. Nordlichtführer",unknownCompetence:"Unbekannte Kompetenz",requiredCompetences:"Erforderliche Kompetenzen",clickToAddCompetences:"Klicken Sie auf + zum Hinzufügen",maxPax:"Max. Teilnehmer"}
478,es:{title:"Competencias",newCompetence:"Nueva competencia",editCompetence:"Editar competencia",noCompetencesYet:"Aún no se han añadido competencias.",exampleName:"ej. GuÃa de auroras",unknownCompetence:"Competencia desconocida",requiredCompetences:"Competencias requeridas",clickToAddCompetences:"Pulse + para añadir competencias",maxPax:"Máx. participantes"},fr:{title:"Compétences",newCompetence:"Nouvelle compétence",editCompetence:"Modifier la compétence",noCompetencesYet:"Aucune compétence ajoutée.",exampleName:"ex. Guide aurores boréales",unknownCompetence:"Compétence inconnue",requiredCompetences:"Compétences requises",clickToAddCompetences:"Cliquez sur + pour ajouter des compétences",maxPax:"Max. participants"},it:{title:"Competenze",newCompetence:"Nuova competenza",editCompetence:"Modifica competenza",noCompetencesYet:"Nessuna competenza aggiunta.",exampleName:"es. Guida aurora boreale",unknownCompetence:"Competenza sconosciuta",requiredCompetences:"Competenze richieste",clickToAddCompetences:"Clicca + per aggiungere competenze",maxPax:"Max partecipanti"}},zy={en:{planningWindow:"Planning window",fromProductDefaults:"From product defaults",overriddenForEvent:"Overridden for this event",overrideBuffer:"Override buffer",activityTime:"Activity time",minutes:"min"},no:{planningWindow:"Planleggingsvindu",fromProductDefaults:"Fra produktstandarder",overriddenForEvent:"Overstyrt for denne hendelsen",overrideBuffer:"Overstyr buffer",activityTime:"Aktivitetstid",minutes:"min"},de:{planningWindow:"Planungsfenster",fromProductDefaults:"Von Produktstandardwerten",overriddenForEvent:"Für dieses Ereignis überschrieben",overrideBuffer:"Puffer überschreiben",activityTime:"Aktivitätszeit",minutes:"min"},es:{planningWindow:"Ventana de planificación",fromProductDefaults:"De los valores predeterminados del producto",overriddenForEvent:"Anulado para este evento",overrideBuffer:"Anular margen",activityTime:"Tiempo de actividad",minutes:"min"},fr:{planningWindow:"Fenêtre de planification",fromProductDefaults:"Des valeurs par défaut du produit",overriddenForEvent:"Remplacé pour cet événement",overrideBuffer:"Remplacer la marge",activityTime:"Temps d'activité",minutes:"min"},it:{planningWindow:"Finestra di pianificazione",fromProductDefaults:"Dai valori predefiniti del prodotto",overriddenForEvent:"Sovrascritto per questo evento",overrideBuffer:"Sovrascrivi margine",activityTime:"Tempo attività ",minutes:"min"}},My={en:{missingLower:"Missing",missingRequirements:"Missing",assignmentError:"Assignment error",invalidDrop:"Invalid drop"},no:{missingLower:"Mangler",missingRequirements:"Mangler",assignmentError:"Tildelingsfeil",invalidDrop:"Ugyldig slipp"},de:{missingLower:"Fehlend",missingRequirements:"Fehlt",assignmentError:"Zuweisungsfehler",invalidDrop:"Ungültiges Ablegen"},es:{missingLower:"Faltante",missingRequirements:"Faltan",assignmentError:"Error de asignación",invalidDrop:"Soltar no válido"},fr:{missingLower:"Manquant",missingRequirements:"Manquant",assignmentError:"Erreur d'assignation",invalidDrop:"Dépôt invalide"},it:{missingLower:"Mancante",missingRequirements:"Mancanti",assignmentError:"Errore di assegnazione",invalidDrop:"Rilascio non valido"}},Iy={en:{personnel:"Personnel:",resources:"Resources:",missing:"Missing:",conflicts:"Conflicts:"},no:{personnel:"Personell:",resources:"Ressurser:",missing:"Mangler:",conflicts:"Konflikter:"},de:{personnel:"Personal:",resources:"Ressourcen:",missing:"Fehlend:",conflicts:"Konflikte:"},es:{personnel:"Personal:",resources:"Recursos:",missing:"Faltante:",conflicts:"Conflictos:"},fr:{personnel:"Personnel :",resources:"Ressources :",missing:"Manquant :",conflicts:"Conflits :"},it:{personnel:"Personale:",resources:"Risorse:",missing:"Mancante:",conflicts:"Conflitti:"}},Ly={en:{title:"My Profile",memberSince:"Member since",language:"Language",selectLanguage:"Select language",company:"Company",selectCompany:"Select company",myLeaves:"My Leave & Absence",noLeavesYet:"No leave entries yet.",changePhoto:"Change photo",avatarUpdated:"Profile picture updated",hideOnboardingTips:"Don't show onboarding tips"},no:{title:"Min profil",memberSince:"Medlem siden",language:"SprÃ¥k",selectLanguage:"Velg sprÃ¥k",company:"Firma",selectCompany:"Velg firma",myLeaves:"Mine fravær",noLeavesYet:"Ingen fravær registrert ennÃ¥.",changePhoto:"Endre bilde",avatarUpdated:"Profilbilde oppdatert",hideOnboardingTips:"Ikke vis onboarding-tips"}
478,de:{title:"Mein Profil",memberSince:"Mitglied seit",language:"Sprache",selectLanguage:"Sprache wählen",company:"Unternehmen",selectCompany:"Unternehmen wählen",myLeaves:"Mein Urlaub & Abwesenheit",noLeavesYet:"Noch keine Abwesenheitseinträge.",changePhoto:"Foto ändern",avatarUpdated:"Profilbild aktualisiert",hideOnboardingTips:"Onboarding-Tipps nicht anzeigen"},es:{title:"Mi perfil",memberSince:"Miembro desde",language:"Idioma",selectLanguage:"Seleccionar idioma",company:"Empresa",selectCompany:"Seleccionar empresa",myLeaves:"Mis vacaciones y ausencias",noLeavesYet:"Aún no hay ausencias.",changePhoto:"Cambiar foto",avatarUpdated:"Foto de perfil actualizada",hideOnboardingTips:"No mostrar consejos de incorporación"},fr:{title:"Mon profil",memberSince:"Membre depuis",language:"Langue",selectLanguage:"Sélectionner la langue",company:"Entreprise",selectCompany:"Sélectionner l'entreprise",myLeaves:"Mes congés et absences",noLeavesYet:"Aucune absence enregistrée.",changePhoto:"Changer la photo",avatarUpdated:"Photo de profil mise à jour",hideOnboardingTips:"Ne pas afficher les conseils d'intégration"},it:{title:"Il mio profilo",memberSince:"Membro dal",language:"Lingua",selectLanguage:"Seleziona lingua",company:"Azienda",selectCompany:"Seleziona azienda",myLeaves:"Le mie ferie e assenze",noLeavesYet:"Nessuna assenza registrata.",changePhoto:"Cambia foto",avatarUpdated:"Foto profilo aggiornata",hideOnboardingTips:"Non mostrare i suggerimenti di onboarding"}},Fy={en:{title:"Leave & Absence",newLeave:"New leave",editLeave:"Edit leave",person:"Person",selectPerson:"Select person",leaveType:"Leave type",timeRange:"Time period",noLeavesYet:"No leave entries added yet.",vacation:"Vacation",sick:"Sick leave",personal:"Personal leave",other:"Other"},no:{title:"Ferie og fravær",newLeave:"Nytt fravær",editLeave:"Rediger fravær",person:"Person",selectPerson:"Velg person",leaveType:"Fraværstype",timeRange:"Tidsrom",noLeavesYet:"Ingen fravær lagt til ennÃ¥.",vacation:"Ferie",sick:"Sykefravær",personal:"Personlig fravær",other:"Annet"},de:{title:"Urlaub & Abwesenheit",newLeave:"Neuer Urlaub",editLeave:"Urlaub bearbeiten",person:"Person",selectPerson:"Person wählen",leaveType:"Urlaubsart",timeRange:"Zeitraum",noLeavesYet:"Noch keine Abwesenheitseinträge.",vacation:"Urlaub",sick:"Krankheit",personal:"Persönlicher Urlaub",other:"Sonstiges"},es:{title:"Vacaciones y ausencias",newLeave:"Nueva ausencia",editLeave:"Editar ausencia",person:"Persona",selectPerson:"Seleccionar persona",leaveType:"Tipo de ausencia",timeRange:"PerÃodo",noLeavesYet:"Aún no se han añadido ausencias.",vacation:"Vacaciones",sick:"Baja médica",personal:"Permiso personal",other:"Otro"},fr:{title:"Congés et absences",newLeave:"Nouvelle absence",editLeave:"Modifier l'absence",person:"Personne",selectPerson:"Sélectionner la personne",leaveType:"Type d'absence",timeRange:"Période",noLeavesYet:"Aucune absence ajoutée.",vacation:"Vacances",sick:"Arrêt maladie",personal:"Congé personnel",other:"Autre"},it:{title:"Ferie e assenze",newLeave:"Nuova assenza",editLeave:"Modifica assenza",person:"Persona",selectPerson:"Seleziona persona",leaveType:"Tipo di assenza",timeRange:"Periodo",noLeavesYet:"Nessuna assenza aggiunta.",vacation:"Ferie",sick:"Malattia",personal:"Permesso personale",other:"Altro"}},Oy={en:{editSeries:"Edit scheduled departure",newRecurringActivity:"New recurring activity",selectActivity:"Select activity...",showInternal:"Show internal",none:"None",startDate:"Start date",repeatUntil:"Repeat until",booking:"Booking",bookable:"Bookable",maxParticipants:"Max participants",bookingStatus:"Booking status",openForBooking:"Open",privateStatus:"Hidden",closed:"Closed",activeBookings:"active bookings",cannotDisableBooking:"Cannot disable booking with active bookings",opensForBooking:"Opens for booking",appliesAll:"Applies to all departures in the series.",notAvailable:"Series is not available for booking.",timeSlots:"Time slots",singleTime:"Single time",multipleSlots:"Multiple slots",startTime:"Start time",endTime:"End time",firstSlot:"First slot",lastSlotEnds:"Last slot ends",durationMin:"Duration (min)",bufferMin:"Buffer (min)",slotsPerDay:"slots per day",exceptionDates:"Exception dates (skip)",includeDates:"Include dates",saveChanges:"Save changes",create:"Create",defaultPersonnel:"Default personnel",defaultResources:"Default resources"},no:{editSeries:"Rediger fast avgang",newRecurringActivity:"Ny repeterende aktivitet",selectActivity:"Velg aktivitet...",showInternal:"Vis interne",none:"Ingen",startDate:"Startdato",repeatUntil:"Gjenta til",booking:"Booking",bookable:"Bookbar",maxParticipants:"Maks deltagere",bookingStatus:"Bookingstatus",openForBooking:"Ã
pen",privateStatus:"Skjult",closed:"Stengt",activeBookings:"aktive bookinger",cannotDisableBooking:"Kan ikke slÃ¥ av booking med aktive bookinger",opensForBooking:"Ã
pner for booking",appliesAll:"Gjelder for alle avganger i serien.",notAvailable:"Serien er ikke tilgjengelig for booking.",timeSlots:"Tidsluker",singleTime:"Enkelt tidspunkt",multipleSlots:"Flere tidsluker",startTime:"Starttid",endTime:"Til kl.",firstSlot:"Første luke",lastSlotEnds:"Siste luke slutter",durationMin:"Varighet (min)",bufferMin:"Pause (min)",slotsPerDay:"luker per dag",exceptionDates:"Unntaksdatoer (hopp over)",includeDates:"Ekstra datoer",saveChanges:"Lagre endringer",create:"Opprett",defaultPersonnel:"Standard personell",defaultResources:"Standard ressurser"},de:{editSeries:"Feste Abfahrt bearbeiten",newRecurringActivity:"Neue wiederkehrende Aktivität",selectActivity:"Aktivität wählen...",showInternal:"Interne anzeigen",none:"Keine",startDate:"Startdatum",repeatUntil:"Wiederholen bis",booking:"Buchung",bookable:"Buchbar",maxParticipants:"Max. Teilnehmer",bookingStatus:"Buchungsstatus",openForBooking:"Offen",privateStatus:"Versteckt",closed:"Geschlossen",activeBookings:"aktive Buchungen",cannotDisableBooking:"Buchung kann nicht deaktiviert werden, solange aktive Buchungen bestehen",opensForBooking:"Ãffnet für Buchung",appliesAll:"Gilt für alle Abfahrten der Serie.",notAvailable:"Serie ist nicht zur Buchung verfügbar.",timeSlots:"Zeitfenster",singleTime:"Einzelne Zeit",multipleSlots:"Mehrere Zeitfenster",startTime:"Startzeit",endTime:"Endzeit",firstSlot:"Erstes Zeitfenster",lastSlotEnds:"Letztes Zeitfenster endet",durationMin:"Dauer (Min.)",bufferMin:"Puffer (Min.)",slotsPerDay:"Zeitfenster pro Tag",exceptionDates:"Ausnahmedaten (überspringen)",includeDates:"Zusätzliche Daten",saveChanges:"Ãnderungen speichern",create:"Erstellen",defaultPersonnel:"Standard-Personal",defaultResources:"Standard-Ressourcen"},es:{editSeries:"Editar salida programada",newRecurringActivity:"Nueva actividad recurrente",selectActivity:"Seleccionar actividad...",showInternal:"Mostrar internas",none:"Ninguno",startDate:"Fecha de inicio",repeatUntil:"Repetir hasta",booking:"Reserva",bookable:"Reservable",maxParticipants:"Máx. participantes",bookingStatus:"Estado de reserva",openForBooking:"Abierto",privateStatus:"Oculto",closed:"Cerrado",activeBookings:"reservas activas",cannotDisableBooking:"No se puede desactivar la reserva con reservas activas",opensForBooking:"Abre para reservas",appliesAll:"Se aplica a todas las salidas de la serie.",notAvailable:"La serie no está disponible para reservas.",timeSlots:"Franjas horarias",singleTime:"Hora única",multipleSlots:"Múltiples franjas",startTime:"Hora de inicio",endTime:"Hora de fin",firstSlot:"Primera franja",lastSlotEnds:"Ãltima franja termina",durationMin:"Duración (min)",bufferMin:"Margen (min)",slotsPerDay:"franjas por dÃa",exceptionDates:"Fechas de excepción (omitir)",includeDates:"Fechas adicionales",saveChanges:"Guardar cambios",create:"Crear",defaultPersonnel:"Personal predeterminado",defaultResources:"Recursos predeterminados"},fr:{editSeries:"Modifier le départ programmé",newRecurringActivity:"Nouvelle activité récurrente",selectActivity:"Sélectionner une activité...",showInternal:"Afficher internes",none:"Aucun",startDate:"Date de début",repeatUntil:"Répéter jusqu'au",booking:"Réservation",bookable:"Réservable",maxParticipants:"Max. participants",bookingStatus:"Statut de réservation",openForBooking:"Ouvert",privateStatus:"Masqué",closed:"Fermé",activeBookings:"réservations actives",cannotDisableBooking:"Impossible de désactiver la réservation avec des réservations actives",opensForBooking:"Ouvre pour réservation",appliesAll:"S'applique à tous les départs de la série.",notAvailable:"La série n'est pas disponible pour réservation.",timeSlots:"Créneaux horaires",singleTime:"Heure unique",multipleSlots:"Créneaux multiples",startTime:"Heure de début",endTime:"Heure de fin",firstSlot:"Premier créneau",lastSlotEnds:"Dernier créneau termine",durationMin:"Durée (min)",bufferMin:"Marge (min)",slotsPerDay:"créneaux par jour",exceptionDates:"Dates d'exception (ignorer)",includeDates:"Dates supplémentaires",saveChanges:"Enregistrer les modifications",create:"Créer",defaultPersonnel:"Personnel par défaut",defaultResources:"Ressources par défaut"},it:{editSeries:"Modifica partenza programmata",newRecurringActivity:"Nuova attività ricorrente",selectActivity:"Seleziona attività ...",showInternal:"Mostra interne",none:"Nessuno",startDate:"Data di inizio",repeatUntil:"Ripeti fino al",booking:"Prenotazione",bookable:"Prenotabile",maxParticipants:"Max partecipanti",bookingStatus:"Stato prenotazione",openForBooking:"Aperto",privateStatus:"Nascosto",closed:"Chiuso",activeBookings:"prenotazioni attive",cannotDisableBooking:"Impossibile disattivare la prenotazione con prenotazioni attive",opensForBooking:"Apre per prenotazione",appliesAll:"Si applica a tutte le partenze della serie.",notAvailable:"La serie non è disponibile per la prenotazione.",timeSlots:"Fasce orarie",singleTime:"Orario singolo",multipleSlots:"Fasce multiple",startTime:"Ora di inizio",endTime:"Ora di fine",firstSlot:"Prima fascia",lastSlotEnds:"Ultima fascia termina",durationMin:"Durata (min)",bufferMin:"Margine (min)",slotsPerDay:"fasce al giorno",exceptionDates:"Date di eccezione (salta)",includeDates:"Date aggiuntive",saveChanges:"Salva modifiche",create:"Crea",defaultPersonnel:"Personale predefinito",defaultResources:"Risorse predefinite"}},By={en:{dashboard:"Dashboard",calendar:"Calendar",sales:"Sales",projects:"Projects",customers:"Customers",recurring:"Recurring Activities",resources:"Resources",resourceTypes:"Resource Types",resourceBlockings:"Resource Blockings",leaves:"Leave & Absence",personnel:"Personnel",competences:"Competences",activities:"Activities",products:"Products",myProfile:"My Profile",chat:"Chat",uiShowcase:"UI Showcase",companySettings:"Settings",prices:"Prices",bookings:"Bookings",bookingScreens:"Booking Screens",resourcePlanner:"Resource Planner",giftCards:"Gift Cards",contacts:"Contacts",companyInbox:"Email",myTrips:"My Trips",priceCategories:"Price Categories",finance:"Accounting",financeDocuments:"Documents",financeJournal:"Journal",financeAccounts:"Chart of Accounts",financeTaxCodes:"Tax Codes",financeRegister:"Register Transaction",financeReceivables:"Accounts Receivable",financePayables:"Accounts Payable",activityCategories:"Activity Categories",incomeProfiles:"Income Profiles",promoCodes:"Promo Codes"},no:{dashboard:"Dashboard",calendar:"Kalender",sales:"Salg",projects:"Prosjekter",customers:"Kunder",recurring:"Repeterende aktiviteter",resources:"Ressurser",resourceTypes:"Ressurstyper",resourceBlockings:"Ressursblokkeringer",leaves:"Ferie og fravær",personnel:"Personell",competences:"Kompetanser",activities:"Aktiviteter",products:"Produkter",myProfile:"Min profil",chat:"Chat",uiShowcase:"UI Showcase",companySettings:"Innstillinger",prices:"Priser",bookings:"Bookinger",bookingScreens:"Bookingskjermer",resourcePlanner:"Ressursplanlegger",giftCards:"Gavekort",contacts:"Kontakter",companyInbox:"E-post",myTrips:"Mine turer",priceCategories:"Priskategorier",finance:"Regnskap",financeDocuments:"Dokumenter",financeJournal:"Bilag",f
478inanceAccounts:"Kontoplan",financeTaxCodes:"MVA-koder",financeRegister:"Registrer transaksjon",financeReceivables:"Kundereskontro",financePayables:"Leverandørreskontro",activityCategories:"Aktivitetskategorier",incomeProfiles:"Inntektsprofiler",promoCodes:"Rabattkoder"},de:{dashboard:"Dashboard",calendar:"Kalender",sales:"Verkauf",projects:"Projekte",customers:"Kunden",recurring:"Wiederkehrende Aktivitäten",resources:"Ressourcen",resourceTypes:"Ressourcentypen",resourceBlockings:"Ressourcenblockierungen",leaves:"Urlaub & Abwesenheit",personnel:"Personal",competences:"Kompetenzen",activities:"Aktivitäten",products:"Produkte",myProfile:"Mein Profil",chat:"Chat",uiShowcase:"UI Showcase",companySettings:"Einstellungen",prices:"Preise",bookings:"Buchungen",bookingScreens:"Buchungsbildschirme",resourcePlanner:"Ressourcenplaner",giftCards:"Gutscheine",contacts:"Kontakte",companyInbox:"E-Mail",myTrips:"Meine Touren",priceCategories:"Preiskategorien",finance:"Buchhaltung",financeDocuments:"Dokumente",financeJournal:"Journal",financeAccounts:"Kontenplan",financeTaxCodes:"Steuercodes",financeRegister:"Transaktion erfassen",financeReceivables:"Debitorenbuch",financePayables:"Kreditorenbuch",activityCategories:"Aktivitätskategorien",incomeProfiles:"Einkommensprofile",promoCodes:"Rabattcodes"},es:{dashboard:"Panel",calendar:"Calendario",sales:"Ventas",projects:"Proyectos",customers:"Clientes",recurring:"Actividades recurrentes",resources:"Recursos",resourceTypes:"Tipos de recurso",resourceBlockings:"Bloqueos de recursos",leaves:"Vacaciones y ausencias",personnel:"Personal",competences:"Competencias",activities:"Actividades",products:"Productos",myProfile:"Mi perfil",chat:"Chat",uiShowcase:"UI Showcase",companySettings:"Configuración",prices:"Precios",bookings:"Reservas",bookingScreens:"Pantallas de reserva",resourcePlanner:"Planificador de recursos",giftCards:"Tarjetas regalo",contacts:"Contactos",companyInbox:"Correo",myTrips:"Mis viajes",priceCategories:"CategorÃas de precio",finance:"Contabilidad",financeDocuments:"Documentos",financeJournal:"Diario",financeAccounts:"Plan de cuentas",financeTaxCodes:"Códigos de impuestos",financeRegister:"Registrar transacción",financeReceivables:"Cuentas por cobrar",financePayables:"Cuentas por pagar",activityCategories:"CategorÃas de actividad",incomeProfiles:"Perfiles de Ingresos",promoCodes:"Códigos de descuento"},fr:{dashboard:"Tableau de bord",calendar:"Calendrier",sales:"Ventes",projects:"Projets",customers:"Clients",recurring:"Activités récurrentes",resources:"Ressources",resourceTypes:"Types de ressource",resourceBlockings:"Blocages de ressources",leaves:"Congés et absences",personnel:"Personnel",competences:"Compétences",activities:"Activités",products:"Produits",myProfile:"Mon profil",chat:"Chat",uiShowcase:"UI Showcase",companySettings:"Paramètres",prices:"Prix",bookings:"Réservations",bookingScreens:"Ãcrans de réservation",resourcePlanner:"Planificateur de ressources",giftCards:"Cartes cadeaux",contacts:"Contacts",companyInbox:"E-mail",myTrips:"Mes sorties",priceCategories:"Catégories de prix",finance:"Comptabilité",financeDocuments:"Documents",financeJournal:"Journal",financeAccounts:"Plan comptable",financeTaxCodes:"Codes TVA",financeRegister:"Enregistrer transaction",financeReceivables:"Comptes clients",financePayables:"Comptes fournisseurs",activityCategories:"Catégories d'activité",incomeProfiles:"Profils de Revenus",promoCodes:"Codes promo"},it:{dashboard:"Dashboard",calendar:"Calendario",sales:"Vendite",projects:"Progetti",customers:"Clienti",recurring:"Attività ricorrenti",resources:"Risorse",resourceTypes:"Tipi di risorsa",resourceBlockings:"Blocchi risorse",leaves:"Ferie e assenze",personnel:"Personale",competences:"Competenze",activities:"Attività ",products:"Prodotti",myProfile:"Il mio profilo",chat:"Chat",uiShowcase:"UI Showcase",companySettings:"Impostazioni",prices:"Prezzi",bookings:"Prenotazioni",bookingScreens:"Schermate di prenotazione",resourcePlanner:"Pianificatore risorse",giftCards:"Buoni regalo",contacts:"Contatti",companyInbox:"Posta in arrivo",myTrips:"Le mie uscite",priceCategories:"Categorie di prezzo",finance:"Contabilità ",financeDocuments:"Documenti",financeJournal:"Giornale",financeAccounts:"Piano dei conti",financeTaxCodes:"Codici IVA",financeRegister:"Registra transazione",financeReceivables:"Partitario clienti",financePayables:"Partitario fornitori",activityCategories:"Categorie di attività ",incomeProfiles:"Profili di Reddito",promoCodes:"Codici sconto"}},qy={en:{title:"Contacts",newContact:"New contact",editContact:"Edit contact",noContactsYet:"No contacts yet.",searchPlaceholder:"Search name, email, phone,
478company...",firstName:"First name",lastName:"Last name",companyLinks:"Company links",linkToCompany:"Link to company",selectCustomer:"Select company",selectContact:"Select contact",roleTitlePlaceholder:"e.g. Booking manager",primary:"Primary",removePhoto:"Remove photo",deleteContact:"Delete contact",deleteConfirm:"Are you sure you want to delete this contact? This action cannot be undone.",addContact:"Add contact",noContactsLinked:"No contacts linked yet.",createNewCompany:"Create new company",companyName:"Company name",role:"Role",roleCeo:"CEO / Managing Director",roleCfo:"CFO / Finance Director",roleCoo:"COO / Operations Director",roleCto:"CTO / Technical Director",roleSalesManager:"Sales Manager",roleMarketingManager:"Marketing Manager",roleProjectManager:"Project Manager",roleBookingManager:"Booking Manager",roleOperationsManager:"Operations Manager",roleAccountManager:"Account Manager",roleAdministrator:"Administrator",roleOther:"Other",addCompanyLink:"Add company link",setPrimary:"Set as primary",duplicateLink:"This company is already linked.",noLinksYet:"No company links yet."},no:{title:"Kontakter",newContact:"Ny kontakt",editContact:"Rediger kontakt",noContactsYet:"Ingen kontakter ennÃ¥.",searchPlaceholder:"Søk navn, e-post, telefon, firma...",firstName:"Fornavn",lastName:"Etternavn",companyLinks:"Firmakoblinger",linkToCompany:"Knytt til firma",selectCustomer:"Velg firma",selectContact:"Velg kontakt",roleTitlePlaceholder:"f.eks. Bookingansvarlig",primary:"Primær",removePhoto:"Fjern bilde",deleteContact:"Slett kontakt",deleteConfirm:"Er du sikker pÃ¥ at du vil slette denne kontakten? Handlingen kan ikke angres.",addContact:"Legg til kontakt",noContactsLinked:"Ingen kontakter koblet ennÃ¥.",createNewCompany:"Opprett nytt firma",companyName:"Firmanavn",role:"Rolle",roleCeo:"Daglig leder",roleCfo:"Finansdirektør",roleCoo:"Driftsdirektør",roleCto:"Teknisk direktør",roleSalesManager:"Salgssjef",roleMarketingManager:"Markedssjef",roleProjectManager:"Prosjektleder",roleBookingManager:"Bookingansvarlig",roleOperationsManager:"Driftsleder",roleAccountManager:"Kundekontakt",roleAdministrator:"Administrator",roleOther:"Annet",addCompanyLink:"Legg til firmakobling",setPrimary:"Sett som primær",duplicateLink:"Dette firmaet er allerede koblet.",noLinksYet:"Ingen firmakoblinger ennÃ¥."},de:{title:"Kontakte",newContact:"Neuer Kontakt",editContact:"Kontakt bearbeiten",noContactsYet:"Noch keine Kontakte.",searchPlaceholder:"Name, E-Mail, Telefon, Firma suchen...",firstName:"Vorname",lastName:"Nachname",companyLinks:"Firmenverknüpfungen",linkToCompany:"Mit Firma verknüpfen",selectCustomer:"Firma wählen",selectContact:"Kontakt wählen",roleTitlePlaceholder:"z.B. Buchungsleiter",primary:"Primär",removePhoto:"Foto entfernen",deleteContact:"Kontakt löschen",deleteConfirm:"Möchten Sie diesen Kontakt wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.",addContact:"Kontakt hinzufügen",noContactsLinked:"Noch keine Kontakte verknüpft.",createNewCompany:"Neue Firma erstellen",companyName:"Firmenname",role:"Rolle",roleCeo:"Geschäftsführer",roleCfo:"Finanzleiter",roleCoo:"Betriebsleiter",roleCto:"Technischer Leiter",roleSalesManager:"Vertriebsleiter",roleMarketingManager:"Marketingleiter",roleProjectManager:"Projektleiter",roleBookingManager:"Buchungsleiter",roleOperationsManager:"Betriebsleiter",roleAccountManager:"Kundenbetreuer",roleAdministrator:"Administrator",roleOther:"Sonstiges",addCompanyLink:"Firmenverknüpfung hinzufügen",setPrimary:"Als primär setzen",duplicateLink:"Diese Firma ist bereits verknüpft.",noLinksYet:"Noch keine Firmenverknüpfungen."},es:{title:"Contactos",newContact:"Nuevo contacto",editContact:"Editar contacto",noContactsYet:"Aún no hay contactos.",searchPlaceholder:"Buscar nombre, email, teléfono, empresa...",firstName:"Nombre",lastName:"Apellido",companyLinks:"VÃnculos de empresa",linkToCompany:"Vincular a empresa",selectCustomer:"Seleccionar empresa",selectContact:"Seleccionar contacto",roleTitlePlaceholder:"ej. Responsable de reservas",primary:"Principal",removePhoto:"Eliminar foto",deleteContact:"Eliminar contacto",deleteConfirm:"¿Está seguro de que desea eliminar este contacto? Esta acción no se puede deshacer.",addContact:"Añadir contacto",noContactsLinked:"Aún no hay contactos vinculados.",createNewCompany:"Crear nueva empresa",companyName:"Nombre de la empresa",role:"Cargo",roleCeo:"CEO / Director General",roleCfo:"Director Financiero",roleCoo:"Director de Operaciones",roleCto:"Director Técnico",roleSalesManager:"Director de Ventas",roleMarketingManager:"Director de Marketing",roleProjectManager:"Director de Proyecto",roleBookingManager:"Responsable de Reservas",roleOperationsManager:"Responsable de Operaciones",roleAccountManager:"Gestor de Cuentas",roleAdministrator:"Administrador",roleOther:"Otro",addCompanyLink:"Añadir vÃnculo de empresa",setPrimary:"Establecer como principal",duplicateLink:"Esta empresa ya está vinculada.",noLinksYet:"Aún no hay vÃnculos de empresa."},fr:{title:"Contacts",newContact:"Nouveau contact",editContact:"Modifier le contact",noContactsYet:"Aucun contact.",searchPlaceholder:"Rechercher nom, email, téléphone, entreprise...",firstName:"Prénom",lastName:"Nom",companyLinks:"Liens entreprise",linkToCompany:"Lier à l'entreprise",selectCustomer:"Sélectionner entreprise",selectContact:"Sélectionner contact",roleTitlePlaceholder:"ex. Responsable réservations",primary:"Principal",removePhoto:"Supprimer la photo",deleteContact:"Supprimer le contact",deleteConfirm:"Ãtes-vous sûr de vouloir supprimer ce contact ? Cette action est irréversible.",addContact:"Ajouter un contact",noContactsLinked:"Aucun contact lié.",createNewCompany:"Créer une nouvelle entreprise",companyName:"Nom de l'entreprise",role:"Rôle",roleCeo:"PDG / Directeur général",roleCfo:"Directeur financier",roleCoo:"Directeur des opérations",roleCto:"Directeur technique",roleSalesManager:"Directeur commercial",roleMarketingManager:"Directeur marketing",roleProjectManager:"Chef de projet",roleBookingManager:"Responsable réservations",roleOperationsManager:"Responsable des opérations",roleAccountManager:"Gestionnaire de comptes",roleAdministrator:"Administrateur",roleOther:"Autre",addCompanyLink:"Ajouter un lien entreprise",setPrimary:"Définir comme principal",duplicateLink:"Cette entreprise est déjà liée.",noLinksYet:"Aucun lien entreprise."},it:{title:"Contatti",newContact:"Nuovo contatto",editContact:"Modifica contatto",noContactsYet:"Nessun contatto.",searchPlaceholder:"Cerca nome, email, telefono, azienda...",firstName:"Nome",lastName:"Cognome",companyLinks:"Link aziendali",linkToCompany:"Collega all'azienda",selectCustomer:"Seleziona azienda",selectContact:"Seleziona contatto",roleTitlePlaceholder:"es. Responsabile prenotazioni",primary:"Principale",removePhoto:"Rimuovi foto",deleteContact:"Elimina contatto",deleteConfirm:"Sei sicuro di voler eliminare questo contatto? Questa azione non può essere annullata.",addContact:"Aggiungi contatto",noContactsLinked:"Nessun contatto collegato.",createNewCompany:"Crea nuova azienda",companyName:"Nome azienda",role:"Ruolo",roleCeo:"CEO / Amministratore Delegato",roleCfo:"Direttore Finanziario",roleCoo:"Direttore Operativo",roleCto:"Direttore Tecnico",roleSalesManager:"Responsabile Vendite",roleMarketingManager:"Responsabile Marketing",roleProjectManager:"Project Manager",roleBookingManager:"Responsabile Prenotazioni",roleOperationsManager:"Responsabile Operazioni",roleAccountManager:"Account Manager",roleAdministrator:"Amministratore",roleOther:"Altro",addCompanyLink:"Aggiungi link aziendale",setPrimary:"Imposta come principale",duplicateLink:"Questa azienda è già collegata.",noLinksYet:"Nessun link aziendale."}},Vy={en:{today:"Today",yesterday:"Yesterday",noActivities:"No activity logged yet.",typeNote:"Note",typeEmailSent:"Email sent",typeEmailReceived:"Email received",typeCall:"Call",typeMeeting:"Meeting",typeInternalComment:"Internal
478comment",logPlaceholder:"Log an activity...",dragDropHint:"Drag and drop an email here to log it",addEntry:"Add",fileNotAllowed:"File type not allowed",fileTooLarge:"File exceeds 25 MB limit",maxAttachments:"Maximum 10 attachments per entry",attachmentsLabel:"attachments",uploadFailed:"file(s) failed to upload",submitError:"Failed to submit entry",moreAttachments:"more",dropFilesHere:"Drop files here to attach",unknownUser:"Unknown user",micTooltip:"Dictate"},no:{today:"I dag",yesterday:"I gÃ¥r",noActivities:"Ingen aktivitet logget ennÃ¥.",typeNote:"Notat",typeEmailSent:"E-post sendt",typeEmailReceived:"E-post mottatt",typeCall:"Samtale",typeMeeting:"Møte",typeInternalComment:"Intern kommentar",logPlaceholder:"Logg en aktivitet...",dragDropHint:"Dra og slipp en e-post her for Ã¥ logge den",addEntry:"Legg til",fileNotAllowed:"Filtype ikke tillatt",fileTooLarge:"Filen overskrider 25 MB-grensen",maxAttachments:"Maks 10 vedlegg per innlegg",attachmentsLabel:"vedlegg",uploadFailed:"fil(er) feilet under opplasting",submitError:"Kunne ikke sende innlegg",moreAttachments:"flere",dropFilesHere:"Slipp filer her for Ã¥ legge ved",unknownUser:"Ukjent bruker",micTooltip:"Dikter"},de:{today:"Heute",yesterday:"Gestern",noActivities:"Noch keine Aktivität protokolliert.",typeNote:"Notiz",typeEmailSent:"E-Mail gesendet",typeEmailReceived:"E-Mail erhalten",typeCall:"Anruf",typeMeeting:"Besprechung",typeInternalComment:"Interner Kommentar",logPlaceholder:"Aktivität protokollieren...",dragDropHint:"E-Mail hierher ziehen zum Protokollieren",addEntry:"Hinzufügen",fileNotAllowed:"Dateityp nicht erlaubt",fileTooLarge:"Datei überschreitet 25 MB",maxAttachments:"Maximal 10 Anhänge pro Eintrag",attachmentsLabel:"Anhänge",uploadFailed:"Datei(en) konnten nicht hochgeladen werden",submitError:"Eintrag konnte nicht gesendet werden",moreAttachments:"weitere",dropFilesHere:"Dateien hier ablegen zum Anhängen",unknownUser:"Unbekannter Benutzer",micTooltip:"Diktieren"},es:{today:"Hoy",yesterday:"Ayer",noActivities:"Aún no hay actividad registrada.",typeNote:"Nota",typeEmailSent:"Email enviado",typeEmailReceived:"Email recibido",typeCall:"Llamada",typeMeeting:"Reunión",typeInternalComment:"Comentario interno",logPlaceholder:"Registrar una actividad...",dragDropHint:"Arrastre un email aquà para registrarlo",addEntry:"Añadir",fileNotAllowed:"Tipo de archivo no permitido",fileTooLarge:"El archivo excede el lÃmite de 25 MB",maxAttachments:"Máximo 10 adjuntos por entrada",attachmentsLabel:"adjuntos",uploadFailed:"archivo(s) no se pudieron subir",submitError:"Error al enviar la entrada",moreAttachments:"más",dropFilesHere:"Suelte archivos aquà para adjuntar",unknownUser:"Usuario desconocido",micTooltip:"Dictar"},fr:{today:"Aujourd'hui",yesterday:"Hier",noActivities:"Aucune activité enregistrée.",typeNote:"Note",typeEmailSent:"Email envoyé",typeEmailReceived:"Email reçu",typeCall:"Appel",typeMeeting:"Réunion",typeInternalComment:"Commentaire interne",logPlaceholder:"Enregistrer une activité...",dragDropHint:"Glissez-déposez un email ici pour l'enregistrer",addEntry:"Ajouter",fileNotAllowed:"Type de fichier non autorisé",fileTooLarge:"Le fichier dépasse la limite de 25 Mo",maxAttachments:"Maximum 10 pièces jointes par entrée",attachmentsLabel:"pièces jointes",uploadFailed:"fichier(s) non téléchargé(s)",submitError:"Ãchec de l'envoi de l'entrée",moreAttachments:"de plus",dropFilesHere:"Déposez les fichiers ici pour les joindre",unknownUser:"Utilisateur inconnu",micTooltip:"Dicter"},it:{today:"Oggi",yesterday:"Ieri",noActivities:"Nessuna attività registrata.",typeNote:"Nota",typeEmailSent:"Email inviata",typeEmailReceived:"Email ricevuta",typeCall:"Chiamata",typeMeeting:"Riunione",typeInternalComment:"Commento interno",logPlaceholder:"Registra un'attività ...",dragDropHint:"Trascina un'email qui per registrarla",addEntry:"Aggiungi",fileNotAllowed:"Tipo di file non consentito",fileTooLarge:"Il file supera il limite di 25 MB",maxAttachments:"Massimo 10 allegati per voce",attachmentsLabel:"allegati",uploadFailed:"file non caricato/i",submitError:"Invio voce non riuscito",moreAttachments:"altri",dropFilesHere:"Rilascia i file qui per allegarli",unknownUser:"Utente sconosciuto",micTooltip:"Dettatura"}},Ky={en:{employee:"Employee",filterByCompetence:"Filter by competence",filterByPersonnel:"Filter by personnel",allCompetences:"All competences",allPersonnel:"All personnel",n
478oEmployees:"No employees",noActivitiesThisWeek:"No activities this week",filters:"Filters",activeFilters:"active filters",missingResources:"Missing resources",missingPersonnel:"personnel",missingResource:"resources"},no:{employee:"Ansatt",filterByCompetence:"Filtrer på kompetanse",filterByPersonnel:"Filtrer på personell",allCompetences:"Alle kompetanser",allPersonnel:"Alt personell",noEmployees:"Ingen ansatte",noActivitiesThisWeek:"Ingen aktiviteter denne uken",filters:"Filtre",activeFilters:"aktive filtre",missingResources:"Mangler ressurser",missingPersonnel:"personell",missingResource:"ressurser"},de:{employee:"Mitarbeiter",filterByCompetence:"Nach Kompetenz filtern",filterByPersonnel:"Nach Personal filtern",allCompetences:"Alle Kompetenzen",allPersonnel:"Alle Mitarbeiter",noEmployees:"Keine Mitarbeiter",noActivitiesThisWeek:"Keine Aktivitäten diese Woche",filters:"Filter",activeFilters:"aktive Filter",missingResources:"Fehlende Ressourcen",missingPersonnel:"Personal",missingResource:"Ressourcen"},es:{employee:"Empleado",filterByCompetence:"Filtrar por competencia",filterByPersonnel:"Filtrar por personal",allCompetences:"Todas las competencias",allPersonnel:"Todo el personal",noEmployees:"Sin empleados",noActivitiesThisWeek:"Sin actividades esta semana",filters:"Filtros",activeFilters:"filtros activos",missingResources:"Faltan recursos",missingPersonnel:"personal",missingResource:"recursos"},fr:{employee:"Employé",filterByCompetence:"Filtrer par compétence",filterByPersonnel:"Filtrer par personnel",allCompetences:"Toutes les compétences",allPersonnel:"Tout le personnel",noEmployees:"Aucun employé",noActivitiesThisWeek:"Aucune activité cette semaine",filters:"Filtres",activeFilters:"filtres actifs",missingResources:"Ressources manquantes",missingPersonnel:"personnel",missingResource:"ressources"},it:{employee:"Dipendente",filterByCompetence:"Filtra per competenza",filterByPersonnel:"Filtra per personale",allCompetences:"Tutte le competenze",allPersonnel:"Tutto il personale",noEmployees:"Nessun dipendente",noActivitiesThisWeek:"Nessuna attività questa settimana",filters:"Filtri",activeFilters:"filtri attivi",missingResources:"Risorse mancanti",missingPersonnel:"personale",missingResource:"risorse"}},Wy={en:{title:"Customers",newCustomer:"New customer",editCustomer:"Edit customer",noCustomersYet:"No customers yet.",organizationNumber:"Organization number",orgNumberPlaceholder:"e.g. 123456789",contactName:"Contact name",selectCustomer:"Select customer",noCustomer:"No customer",searchCustomer:"Search customers...",exampleName:"e.g. Nordland Turlag",notFound:"Customer not found",customerInUse:"Customer is linked to existing records and cannot be deleted.",findCompany:"Find company",searchByName:"Search by name",searchByOrgNumber:"Search by org. number",address:"Address",postalCode:"Postal code",city:"City",managingDirector:"Managing director",providerNoBrreg:"Norway (BRREG)",enterMin2Chars:"Enter at least 2 characters",enter9Digits:"Enter 9 digits",noResultsFound:"No results found",registryUnavailable:"Registry unavailable",dataFromRegistry:"Data from external registry",countryCode:"Country",duplicateOrgNumber:"This organization number is already registered to",annualAccounts:"Annual accounts",addOrgNumberForAccounts:"Add organization number to see annual accounts",noAccountsFound:"No annual accounts found",financeServiceUnavailable:"Annual accounts service unavailable",revenue:"Revenue",operatingProfit:"Operating profit",netProfit:"Net profit",totalAssets:"Total assets",equityLabel:"Equity",debtLabel:"Debt",equityRatio:"Equity ratio",profitMargin:"Profit margin",audited:"Audited",notAudited:"Not audited",optedOutAudit:"Opted out of audit",financePeriod:"Period",overview:"Overview",activities:"Activities",financialOverview:"Financial overview",keyFigures:"Key figures",financialHealth:"Financial Health",financialDevelopment:"Financial Development",lastYear:"Last year",riskLabel:"Risk",excellent:"Excellent",good:"Good",moderate:"Moderate",weak:"Weak",noProjectsLinked:"No projects linked to this customer.",noSalesLinked:"No s
478ales linked to this customer.",noActivitiesLinked:"No activities linked to this customer.",kfLiquidity:"Liquidity",kfProfitability:"Profitability",kfEquity:"Equity",kfUnsatisfactory:"Unsatisfactory",kfWeak:"Weak",kfSatisfactory:"Satisfactory",kfGood:"Good",kfVeryGood:"Very good",kfCalculation:"Calculation",kfPreviousYear:"Previous year",kfNoData:"Insufficient data",kfDialogTitle:"Key figures â Calculation",kfLiquidityFull:"Current ratio (Liquidity grade 1)",kfLiquidityFormula:"Current assets / Current liabilities",kfLiquidityComment:"Shows the company's ability to meet short-term obligations. A value above 1 means current assets exceed current liabilities.",kfProfitabilityFull:"Return on total capital",kfProfitabilityFormula:"(Pre-tax profit + Financial costs) à 100 / Average total assets",kfProfitabilityComment:"Measures how efficiently the company uses its total capital to generate profit, regardless of financing.",kfProfitabilityFallbackNote:"Based on year-end total capital due to limited historical data.",kfEquityFull:"Equity ratio",kfEquityFormula:"Equity à 100 / (Equity + Debt)",kfEquityComment:"Shows how much of the company is financed by equity. Higher values indicate stronger financial resilience. If equity is below 100,000, the rating is always considered weak.",kfFormulaLabel:"Formula",kfScaleLabel:"Assessment scale",kfKeyFigures:"Key figures",fhiTitle:"Financial Score",fhiExplanation:"Explanation",fhiLevelPrefix:"LEVEL",levelElite:"Elite",levelStrong:"Strong",levelStable:"Stable",levelVulnerable:"Vulnerable",levelCritical:"Critical",reModalTitle:"How the Financial Score is calculated",reIntro:"The Financial Score is an internal index based on publicly available annual accounts data. It is not a credit rating.",reTotalFormula:"Total Score Formula",reFormulaExplain:"Each factor is scored 0â100. The weighted average determines the final score, which is mapped to a level (1â5).",reSoliditet:"Solidity",reSoliditetDef:"Measures financial strength through equity ratio (Equity / Total assets).",reLonnsomhet:"Profitability",reLonnsomhetDef:"Measures profitability relative to total capital (Return on Assets).",reLonnsomhetFallback:"Based on year-end total capital due to limited historical data.",reRisiko:"Risk",reRisikoDef:"Measures financial leverage through debt-to-equity ratio (Total debt / Equity).",reDebtToEquity:"Debt-to-equity ratio",reRisikoFootnote:"If equity is zero or negative, the score is 0.",reStabilitet:"Stability",reStabilitetDef:"Measures financial stability based on positive equity and net profit.",rePositiveEquity:"Positive equity",rePositiveProfit:"Positive net profit",reYes:"Yes",reNo:"No",reStabBothPositive:"Both positive",reStabOnePositive:"One positive",reStabBothNegative:"Both negative",reStarLevelTitle:"Star Level Interpretation",reStarLevelIntro:"The Financial Score is converted into a 1â5 star level for quick visual interpretation.",reStarLevelNote:"Stars represent overall financial strength level and are derived directly from the total score.",reDisclaimer:"This index is automatically generated by Salemate based on publicly available annual accounts data. It is not a credit rating.",rePreTaxProfit:"Pre-tax profit",reFinancialCosts:"Financial costs",reAvgCapital:"Average total capital"},no:{title:"Kunder",newCustomer:"Ny kunde",editCustomer:"Rediger kunde",noCustomersYet:"Ingen kunder ennÃ¥.",organizationNumber:"Organisasjonsnummer",orgNumberPlaceholder:"f.eks. 123456789",contactName:"Kontaktperson",selectCustomer:"Velg kunde",noCustomer:"Ingen kunde",searchCustomer:"Søk i kunder...",exampleName:"f.eks. Nordland Turlag",notFound:"Kunde ikke funnet",customerInUse:"Kunden er knyttet til eksisterende data og kan ikke slettes.",findCompany:"Finn bedrift",searchByName:"Søk etter navn",searchByOrgNumber:"Søk etter org.nr.",address:"Adresse",postalCode:"Postnummer",city:"Poststed",managingDirector:"Daglig leder",providerNoBrreg:"Norge (BRREG)",enterMin2Chars:"Skriv minst 2 tegn",enter9Digits:"Skriv 9 siffer",noResultsFound:"Ingen treff",registryUnavailable:"Registeret er utilgjengelig",dataFromRegistry:"Data fra eksternt register",countryCode:"Land",duplicateOrgNumber:"Dette organisasjonsnummeret er allerede registrert pÃ¥",annualAccounts:"Ã
rsregnskap",addOrgNumberForAccounts:"Legg til organisasjonsnummer for Ã¥ se Ã¥rsregnskap",noAccountsFound:"Ingen Ã¥rsregnskap funnet",financeServiceUnavailable:"Ã
rsregnskapstjenesten er utilgjengelig",revenue:"Driftsinntekter",operatingProfit:"Driftsresultat",netProfit:"Ã
rsresultat",totalAssets:"Eiendeler",equityLabel:"Egenkapital",debtLabel:"Gjeld",equityRatio:"Egenkapitalandel",profitMargin:"Resultatmargin",audited:"Revidert",notAudited:"Ikke revidert",optedOutAudit:"Fravalgt revisjon",financePeriod:"Periode",overview:"Oversikt",activities:"Aktiviteter",financialOverview:"Finansiell oversikt",keyFigures:"Nøkkeltall",financialHealth:"Finansiell helse",financialDevelopment:"Finansiell utvikling",lastYear:"Siste Ã¥r",riskLabel:"Risiko",excellent:"Utmerket",good:"God",moderate:"Moderat",weak:"Svak",noProjectsLinked:"Ingen prosjekter koblet til denne kunden.",noSalesLinked:"Ingen salg koblet til denne kunden.",noActivitiesLinked:"Ingen aktiviteter koblet til denne kunden.",kfLiquidity:"Likviditet",kfProfitability:"Lønnsomhet",kfEquity:"Soliditet",kfUnsatisfactory:"Ikke tilfredst.",kfWeak:"Svak",kfSatisfactory:"Tilfredst.",kfGood:"God",kfVeryGood:"Meget god",kfCalculation:"Beregning",kfPreviousYear:"Forrige Ã¥r",kfNoData:"Utilstrekkelig data",kfDialogTitle:"Nøkkeltall â Beregning",kfLiquidityFull:"Likviditetsgrad 1",kfLiquidityFormula:"Sum omløpsmidler / Sum kortsiktig gjeld",kfLiquidityComment:"Viser selskapets evne til Ã¥ dekke kortsiktige forpliktelser. En verdi over 1 betyr at omløpsmidlene overstiger kortsiktig gjeld.",kfProfitabilityFull:"Totalrentabilitet",kfProfitabilityFormula:"(Ordinært resultat før skatt + Finanskostnader) à 100 / Gjennomsnittlig totalkapital",kfProfitabilityComment:"MÃ¥ler hvor effektivt selskapet bruker sin totalkapital til Ã¥ generere overskudd, uavhengig av finansiering.",kfProfitabilityFallbackNote:"Basert pÃ¥ totalkapital ved Ã¥rsslutt grunnet begrenset historisk data.",kfEquityFull:"Egenkapitalandel",kfEquityFormula:"Sum egenkapital à 100 / (Sum egenkapital + Sum gjeld)",kfEquityComment:"Viser hvor mye av selskapet som er finansiert med egenkapital. Høyere verdier indikerer sterkere økonomisk motstandskraft. Hvis egenkapitalen er under 100 000, anses soliditeten uansett som svak.",kfFormulaLabel:"Formel",kfScaleLabel:"Resultatskala",kfKeyFigures:"Nøkkeltall",fhiTitle:"Finansiell score",fhiExplanation:"Beregning",fhiLevelPrefix:"LEVEL",levelElite:"Elite",levelStrong:"Sterk",levelStable:"Stabil",levelVulnerable:"SÃ¥rbar",levelCritical:"Kritisk",reModalTitle:"Slik beregnes Finansiell score",reIntro:"Finansiell score er en intern indeks basert pÃ¥ offentlig tilgjengelige Ã¥rsregnskapsdata. Den utgjør ikke en kredittvurdering.",reTotalFormula:"Total score-formel",reFormulaExplain:"Hver faktor scores 0â100. Det vektede gjennomsnittet bestemmer den endelige scoren, som mappes til et nivÃ¥ (1â5).",reSoliditet:"Soliditet",reSoliditetDef:"MÃ¥ler finansiell styr
478ke gjennom egenkapitalandel (Egenkapital / Eiendeler).",reLonnsomhet:"Lønnsomhet",reLonnsomhetDef:"MÃ¥ler lønnsomhet relativt til totalkapital (totalrentabilitet).",reLonnsomhetFallback:"Basert pÃ¥ totalkapital ved Ã¥rsslutt grunnet begrenset historisk data.",reRisiko:"Risiko",reRisikoDef:"MÃ¥ler finansiell gearing gjennom gjeldsgrad (Gjeld / Egenkapital).",reDebtToEquity:"Gjeldsgrad",reRisikoFootnote:"Hvis egenkapitalen er null eller negativ, er scoren 0.",reStabilitet:"Stabilitet",reStabilitetDef:"MÃ¥ler finansiell stabilitet basert pÃ¥ positiv egenkapital og Ã¥rsresultat.",rePositiveEquity:"Positiv egenkapital",rePositiveProfit:"Positivt Ã¥rsresultat",reYes:"Ja",reNo:"Nei",reStabBothPositive:"Begge positive",reStabOnePositive:"En positiv",reStabBothNegative:"Begge negative",reStarLevelTitle:"StjernenivÃ¥-tolkning",reStarLevelIntro:"Finansiell score konverteres til et 1â5 stjernenivÃ¥ for rask visuell tolkning.",reStarLevelNote:"Stjernene representerer overordnet finansiell styrke og er avledet direkte fra totalscoren.",reDisclaimer:"Denne indeksen er automatisk generert av Salemate basert pÃ¥ offentlig tilgjengelige Ã¥rsregnskapsdata. Den utgjør ikke en kredittvurdering.",rePreTaxProfit:"Resultat før skatt",reFinancialCosts:"Finanskostnader",reAvgCapital:"Gjennomsnittlig totalkapital"},de:{title:"Kunden",newCustomer:"Neuer Kunde",editCustomer:"Kunde bearbeiten",noCustomersYet:"Noch keine Kunden.",organizationNumber:"Organisationsnummer",orgNumberPlaceholder:"z.B. 123456789",contactName:"Ansprechpartner",selectCustomer:"Kunde auswählen",noCustomer:"Kein Kunde",searchCustomer:"Kunden suchen...",exampleName:"z.B. Nordland Turlag",notFound:"Kunde nicht gefunden",customerInUse:"Kunde ist mit bestehenden Datensätzen verknüpft und kann nicht gelöscht werden.",findCompany:"Firma finden",searchByName:"Nach Name suchen",searchByOrgNumber:"Nach Org.-Nr. suchen",address:"Adresse",postalCode:"Postleitzahl",city:"Stadt",managingDirector:"Geschäftsführer",providerNoBrreg:"Norwegen (BRREG)",enterMin2Chars:"Mindestens 2 Zeichen eingeben",enter9Digits:"9 Ziffern eingeben",noResultsFound:"Keine Ergebnisse gefunden",registryUnavailable:"Register nicht verfügbar",dataFromRegistry:"Daten aus externem Register",countryCode:"Land",duplicateOrgNumber:"Diese Organisationsnummer ist bereits registriert bei",annualAccounts:"Jahresabschlüsse",addOrgNumberForAccounts:"Organisationsnummer hinzufügen, um Jahresabschlüsse zu sehen",noAccountsFound:"Keine Jahresabschlüsse gefunden",financeServiceUnavailable:"Jahresabschluss-Service nicht verfügbar",revenue:"Umsatz",operatingProfit:"Betriebsergebnis",netProfit:"Reingewinn",totalAssets:"Gesamtvermögen",equityLabel:"Eigenkapital",debtLabel:"Schulden",equityRatio:"Eigenkapitalquote",profitMargin:"Gewinnmarge",audited:"Geprüft",notAudited:"Nicht geprüft",optedOutAudit:"Prüfung abgelehnt",financePeriod:"Zeitraum",overview:"Ãbersicht",activities:"Aktivitäten",financialOverview:"Finanzübersicht",keyFigures:"Kennzahlen",financialHealth:"Finanzielle Gesundheit",financialDevelopment:"Finanzielle Entwicklung",lastYear:"Letztes Jahr",riskLabel:"Risiko",excellent:"Ausgezeichnet",good:"Gut",moderate:"Moderat",weak:"Schwach",noProjectsLinked:"Keine Projekte mit diesem Kunden verknüpft.",noSalesLinked:"Keine Verkäufe mit diesem Kunden verknüpft.",noActivitiesLinked:"Keine Aktivitäten mit diesem Kunden verknüpft.",kfLiquidity:"Liquidität",kfProfitability:"Rentabilität",kfEquity:"Eigenkapital",kfUnsatisfactory:"Ungenügend",kfWeak:"Schwach",kfSatisfactory:"Befriedigend",kfGood:"Gut",kfVeryGood:"Sehr gut",kfCalculation:"Berechnung",kfPreviousYear:"Vorjahr",kfNoData:"Unzureichende Daten",kfDialogTitle:"Kennzahlen â Berechnung",kfLiquidityFull:"Liquiditätsgrad 1",kfLiquidityFormula:"Umlaufvermögen / Kurzfristige Verbindlichkeiten",kfLiquidityComment:"Zeigt die Fähigkeit des Unternehmens, kurzfristige Verbindlichkeiten zu erfüllen.",kfProfitabilityFull:"Gesamtkapitalrentabilität",kfProfitabilityFormula:"(Ergebnis vor Steuern + Finanzkosten) à 100 / Durchschnittliches Gesamtkapital",kfProfitabilityComment:"Misst, wie effizient das Unternehmen sein Gesamtkapital zur Gewinnerzielung einsetzt.",kfProfitabilityFallbackNote:"Basierend auf dem Gesamtkapital zum Jahresende aufgrund begrenzter historischer Daten.",kfEquityFull:"Eigenkapitalquote",kfEquityFormula:"Eigenkapital à 100 / (Eigenkapital + Schulden)",kfEquityComment:"Zeigt, wie viel des Unternehmens durch Eigenkapital finanziert ist.",kfFormulaLabel:"Formel",kfScaleLabel:"Bewertungsskala",kfKeyFigures:"Kennzahlen",fhiTitle:"Finanz-Score",fhiExplanation:"Erklärung",fhiLevelPrefix:"LEVEL",levelElite:"Elite",levelStrong:"Stark",levelStable:"Stabil",levelVulnerable:"Verwundbar",levelCritical:"Kritisch",reModalTitle:"So wird der Finanz-Score berechnet",reIntro:"Der Finanz-Score ist ein interner Index basierend auf öffentlich verfügbaren Jahresabschlussdaten. Er stellt keine Bonitätsbewertung dar.",reTotalFormula:"Gesamtscore-Formel",reFormulaExplain:"Jeder Faktor wird mit 0â100 bewertet. Der gewichtete Durchschnitt bestimmt den Endscore.",reSoliditet:"Solidität",reSoliditetDef:"Misst finanzielle Stärke durch die Eigenkapitalquote.",reLonnsomhet:"Rentabilität",reLonnsomhetDef:"Misst die Rentabilität im Verhältnis zum Gesamtkapital.",reLonnsomhetFallback:"Basierend auf dem Gesamtkapital zum Jahresende.",reRisiko:"Risiko",reRisikoDef:"Misst den finanziellen Hebel durch das Verschuldungsverhältnis.",reDebtToEquity:"Verschuldungsgrad",reRisikoFootnote:"Wenn das Eigenkapital null oder negativ ist, ist der Score 0.",reStabilitet:"Stabilität",reStabilitetDef:"Misst finanzielle Stabilität basierend auf positivem Eigenkapital und Gewinn.",rePositiveEquity:"Positives Eigenkapital",rePositiveProfit:"Positiver Reingewinn",reYes:"Ja",reNo:"Nein",reStabBothPositive:"Beide positiv",reStabOnePositive:"Einer positiv",reStabBothNegative:"Beide negativ",reStarLevelTitle:"Sternebewertung",reStarLevelIntro:"Der Finanz-Score wird in eine 1â5 Sternebewertung umgewandelt.",reStarLevelNote:"Die Sterne repräsentieren die finanzielle Gesamtstärke.",reDisclaimer:"Dieser Index wird automatisch von Salemate basierend auf öffentlich verfügbaren Jahresabschlussdaten generiert. Er stellt keine Bonitätsbewertung dar.",rePreTaxProfit:"Ergebnis vor Steuern",reFinancialCosts:"Finanzkosten",reAvgCapital:"Durchschnittliches Gesamtkapital"},es:{title:"Clientes",newCustomer:"Nuevo cliente",editCustomer:"Editar cliente",noCustomersYet:"Aún no hay clientes.",organizationNumber:"Número de organización",orgNumberPlaceholder:"ej. 123456789",contactName:"Nombre de contacto",selectCustomer:"Seleccionar cliente",noCustomer:"Sin cliente",searchCustomer:"Bu
478scar clientes...",exampleName:"ej. Nordland Turlag",notFound:"Cliente no encontrado",customerInUse:"El cliente está vinculado a registros existentes y no se puede eliminar.",findCompany:"Buscar empresa",searchByName:"Buscar por nombre",searchByOrgNumber:"Buscar por nº org.",address:"Dirección",postalCode:"Código postal",city:"Ciudad",managingDirector:"Director general",providerNoBrreg:"Noruega (BRREG)",enterMin2Chars:"Introduzca al menos 2 caracteres",enter9Digits:"Introduzca 9 dÃgitos",noResultsFound:"No se encontraron resultados",registryUnavailable:"Registro no disponible",dataFromRegistry:"Datos del registro externo",countryCode:"PaÃs",duplicateOrgNumber:"Este número de organización ya está registrado en",annualAccounts:"Cuentas anuales",addOrgNumberForAccounts:"Añada el número de organización para ver cuentas anuales",noAccountsFound:"No se encontraron cuentas anuales",financeServiceUnavailable:"Servicio de cuentas anuales no disponible",revenue:"Ingresos",operatingProfit:"Beneficio operativo",netProfit:"Beneficio neto",totalAssets:"Activos totales",equityLabel:"Patrimonio",debtLabel:"Deuda",equityRatio:"Ratio de patrimonio",profitMargin:"Margen de beneficio",audited:"Auditado",notAudited:"No auditado",optedOutAudit:"Renunció a auditorÃa",financePeriod:"PerÃodo",overview:"Resumen",activities:"Actividades",financialOverview:"Resumen financiero",keyFigures:"Cifras clave",financialHealth:"Salud financiera",financialDevelopment:"Desarrollo financiero",lastYear:"Ãltimo año",riskLabel:"Riesgo",excellent:"Excelente",good:"Bueno",moderate:"Moderado",weak:"Débil",noProjectsLinked:"No hay proyectos vinculados a este cliente.",noSalesLinked:"No hay ventas vinculadas a este cliente.",noActivitiesLinked:"No hay actividades vinculadas a este cliente.",kfLiquidity:"Liquidez",kfProfitability:"Rentabilidad",kfEquity:"Patrimonio",kfUnsatisfactory:"Insatisfactorio",kfWeak:"Débil",kfSatisfactory:"Satisfactorio",kfGood:"Bueno",kfVeryGood:"Muy bueno",kfCalculation:"Cálculo",kfPreviousYear:"Año anterior",kfNoData:"Datos insuficientes",kfDialogTitle:"Cifras clave â Cálculo",kfLiquidityFull:"Ratio de liquidez",kfLiquidityFormula:"Activo corriente / Pasivo corriente",kfLiquidityComment:"Muestra la capacidad de la empresa para cumplir obligaciones a corto plazo.",kfProfitabilityFull:"Rendimiento del capital total",kfProfitabilityFormula:"(Beneficio antes de impuestos + Costes financieros) à 100 / Activos totales promedio",kfProfitabilityComment:"Mide la eficiencia de la empresa en el uso de su capital total.",kfProfitabilityFallbackNote:"Basado en el capital total a fin de año por datos históricos limitados.",kfEquityFull:"Ratio de patrimonio",kfEquityFormula:"Patrimonio à 100 / (Patrimonio + Deuda)",kfEquityComment:"Muestra cuánto de la empresa está financiado con patrimonio propio.",kfFormulaLabel:"Fórmula",kfScaleLabel:"Escala de evaluación",kfKeyFigures:"Cifras clave",fhiTitle:"Puntuación financiera",fhiExplanation:"Explicación",fhiLevelPrefix:"NIVEL",levelElite:"Ãlite",levelStrong:"Fuerte",levelStable:"Estable",levelVulnerable:"Vulnerable",levelCritical:"CrÃtico",reModalTitle:"Cómo se calcula la puntuación financiera",reIntro:"La puntuación financiera es un Ãndice interno basado en datos de cuentas anuales públicas. No es una calificación crediticia.",reTotalFormula:"Fórmula de puntuación total",reFormulaExplain:"Cada factor se puntúa de 0 a 100. La media ponderada determina la puntuación final.",reSoliditet:"Solidez",reSoliditetDef:"Mide la fortaleza financiera a través del ratio de patrimonio.",reLonnsomhet:"Rentabilidad",reLonnsomhetDef:"Mide la rentabilidad en relación con el capital total.",reLonnsomhetFallback:"Basado en el capital total a fin de año.",reRisiko:"Riesgo",reRisikoDef:"Mide el apalancamiento financiero a través del ratio de deuda.",reDebtToEquity:"Ratio deuda/patrimonio",reRisikoFootnote:"Si el patrimonio es cero o negativo, la puntuación es 0.",reStabilitet:"Estabilidad",reStabilitetDef:"Mide la estabilidad financiera basada en patrimonio y beneficio positivos.",rePositiveEquity:"Patrimonio positivo",rePositiveProfit:"Beneficio neto positivo",reYes:"SÃ",reNo:"No",reStabBothPositive:"Ambos positivos",reStabOnePositive:"Uno positivo",reStabBothNegative:"Ambos negativos",reStarLevelTitle:"Interpretación por estrellas",reStarLevelIntro:"La puntuación financiera se convierte en un nivel de 1 a 5 estrellas.",reStarLevelNote:"Las estrellas representan la fortaleza financiera general.",reDisclaimer:"Este Ãndice es generado automáticamente por Salemate basado en datos de cuentas anuales públicas. No es una calificación crediticia.",rePreTaxProfit:"Beneficio antes de impuestos",reFinancialCosts:"Costes financieros",reAvgCapital:"Capital total promedio"},fr:{title:"Clients",newCustomer:"Nouveau client",editCustomer:"Modifier le client",noCustomersYet:"Aucun client.",organizationNumber:"Numéro d'organisation",orgNumberPlaceholder:"ex. 123456789",contactName:"Nom du contact",selectCustomer:"Sélectionner un client",noCustomer:"Aucun client",searchCustomer:"Rechercher des clients...",exampleName:"ex. Nordland Turlag",notFound:"Client introuvable",customerInUse:"Le client est lié à des enregistrements existants et ne peut pas être supprimé.",findCompany:"Trouver une entreprise",searchByName:"Rechercher par nom",searchByOrgNumber:"Rechercher par n° org.",address:"Adresse",postalCode:"Code postal",city:"Ville",managingDirector:"Directeur général",providerNoBrreg:"Norvège (BRREG)",enterMin2Chars:"Entrez au moins 2 caractères",enter9Digits:"Entrez 9 chiffres",noResultsFound:"Aucun résultat trouvé",registryUnavailable:"Registre indisponible",dataFromRegistry:"Données du registre externe",countryCode:"Pays",duplicateOrgNumber:"Ce numéro d'organisation est déjà enregistré pour",annualAccounts:"Comptes annuels",addOrgNumberForAccounts:"Ajoutez le numéro d'organisation pour voir les comptes annuels",noAccountsFound:"Aucun compte annuel trouvé",financeServiceUnavailable:"Service de comptes annuels indisponible",revenue:"Chiffre d'affaires",operatingProfit:"Résultat d'exploitation",netProfit:"Résultat net",totalAssets:"Total des actifs",equityLabel:"Capitaux propres",debtLabel:"Dette",equityRatio:"Ratio de capitaux propres",profitMargin:"Marge bénéficiaire",audited:"Audité",notAudited:"Non audité",optedOutAudit:"A renoncé à l'audit",financePeriod:"Période",overview:"Aperçu",activities:"Activités",financialOverview:"Aperçu financier",keyFigures:"Chiffres clés",financialHealth:"Santé financière",financialDevelopment:"Développement financier",lastYear:"Année dernière",riskLabel:"Risque",excellent:"Excellent",good:"Bon",moderate:"Modéré",weak:"Faible",noProjectsLinked:"Aucun projet lié à ce client.",noSalesLinked:"Aucune vente liée à ce client.",noActivitiesLinked:"Aucune activité liée à ce client.",kfLiquidity:"Liquidité",kfProfitability:"Rentabilité",kfEquity:"Capitaux propres",kfUnsatisfactory:"Insatisfaisant",kfWeak:"Faible",kfSatisfactory:"Satisfaisant",kfGood:"Bon",kfVeryGood:"Très bon",kfCalculation:"Calcul",kfPreviousYear:"Année précédente",kfNoData:"Données insuffisantes",kfDialogTitle:"Chiffres clés â Calcul",kfLiquidityFull:"Ratio de liquidité",kfLiquidityFormula:"Actifs courants / Passifs courants",kfLiquidityComment:"Montre la capacité de l'entreprise à honorer ses obligations à court terme.",kfProfitabilityFull:"Rendement du capital total",kfProfitabilityFormula:"(Résultat avant impôts + Charges financières) à 100 / Total des actifs moye
478n",kfProfitabilityComment:"Mesure l'efficacité de l'entreprise dans l'utilisation de son capital total.",kfProfitabilityFallbackNote:"Basé sur le capital total en fin d'année en raison de données historiques limitées.",kfEquityFull:"Ratio de capitaux propres",kfEquityFormula:"Capitaux propres à 100 / (Capitaux propres + Dette)",kfEquityComment:"Montre quelle part de l'entreprise est financée par des capitaux propres.",kfFormulaLabel:"Formule",kfScaleLabel:"Ãchelle d'évaluation",kfKeyFigures:"Chiffres clés",fhiTitle:"Score financier",fhiExplanation:"Explication",fhiLevelPrefix:"NIVEAU",levelElite:"Ãlite",levelStrong:"Fort",levelStable:"Stable",levelVulnerable:"Vulnérable",levelCritical:"Critique",reModalTitle:"Comment le score financier est calculé",reIntro:"Le score financier est un indice interne basé sur des données de comptes annuels publics. Ce n'est pas une notation de crédit.",reTotalFormula:"Formule du score total",reFormulaExplain:"Chaque facteur est noté de 0 à 100. La moyenne pondérée détermine le score final.",reSoliditet:"Solidité",reSoliditetDef:"Mesure la solidité financière par le ratio de capitaux propres.",reLonnsomhet:"Rentabilité",reLonnsomhetDef:"Mesure la rentabilité par rapport au capital total.",reLonnsomhetFallback:"Basé sur le capital total en fin d'année.",reRisiko:"Risque",reRisikoDef:"Mesure l'effet de levier financier par le ratio d'endettement.",reDebtToEquity:"Ratio dette/capitaux propres",reRisikoFootnote:"Si les capitaux propres sont nuls ou négatifs, le score est 0.",reStabilitet:"Stabilité",reStabilitetDef:"Mesure la stabilité financière basée sur des capitaux propres et un bénéfice positifs.",rePositiveEquity:"Capitaux propres positifs",rePositiveProfit:"Bénéfice net positif",reYes:"Oui",reNo:"Non",reStabBothPositive:"Les deux positifs",reStabOnePositive:"Un positif",reStabBothNegative:"Les deux négatifs",reStarLevelTitle:"Interprétation par étoiles",reStarLevelIntro:"Le score financier est converti en un niveau de 1 à 5 étoiles.",reStarLevelNote:"Les étoiles représentent la solidité financière globale.",reDisclaimer:"Cet indice est généré automatiquement par Salemate basé sur des données de comptes annuels publics. Ce n'est pas une notation de crédit.",rePreTaxProfit:"Résultat avant impôts",reFinancialCosts:"Charges financières",reAvgCapital:"Capital total moyen"},it:{title:"Clienti",newCustomer:"Nuovo cliente",editCustomer:"Modifica cliente",noCustomersYet:"Nessun cliente.",organizationNumber:"Numero organizzazione",orgNumberPlaceholder:"es. 123456789",contactName:"Nome contatto",selectCustomer:"Seleziona cliente",noCustomer:"Nessun cliente",searchCustomer:"Cerca clienti...",exampleName:"es. Nordland Turlag",notFound:"Cliente non trovato",customerInUse:"Il cliente è collegato a record esistenti e non può essere eliminato.",findCompany:"Trova azienda",searchByName:"Cerca per nome",searchByOrgNumber:"Cerca per n. org.",address:"Indirizzo",postalCode:"CAP",city:"Città ",managingDirector:"Amministratore delegato",providerNoBrreg:"Norvegia (BRREG)",enterMin2Chars:"Inserire almeno 2 caratteri",enter9Digits:"Inserire 9 cifre",noResultsFound:"Nessun risultato trovato",registryUnavailable:"Registro non disponibile",dataFromRegistry:"Dati dal registro esterno",countryCode:"Paese",duplicateOrgNumber:"Questo numero organizzazione è già registrato per",annualAccounts:"Bilanci annuali",addOrgNumberForAccounts:"Aggiungere il numero organizzazione per vedere i bilanci annuali",noAccountsFound:"Nessun bilancio annuale trovato",financeServiceUnavailable:"Servizio bilanci annuali non disponibile",revenue:"Ricavi",operatingProfit:"Utile operativo",netProfit:"Utile netto",totalAssets:"Totale attività ",equityLabel:"Patrimonio netto",debtLabel:"Debito",equityRatio:"Rapporto patrimonio",profitMargin:"Margine di profitto",audited:"Verificato",notAudited:"Non verificato",optedOutAudit:"Rinuncia alla revisione",financePeriod:"Periodo",overview:"Panoramica",activities:"Attività ",financialOverview:"Panoramica finanziaria",keyFigures:"Cifre chiave",financialHealth:"Salute finanziaria",financialDevelopment:"Sviluppo finanziario",lastYear:"Ultimo anno",riskLabel:"Rischio",excellent:"Eccellente",good:"Buono",moderate:"Moderato",weak:"Debole",n
478oProjectsLinked:"Nessun progetto collegato a questo cliente.",noSalesLinked:"Nessuna vendita collegata a questo cliente.",noActivitiesLinked:"Nessuna attività collegata a questo cliente.",kfLiquidity:"Liquidità ",kfProfitability:"Redditività ",kfEquity:"Patrimonio",kfUnsatisfactory:"Insoddisfacente",kfWeak:"Debole",kfSatisfactory:"Soddisfacente",kfGood:"Buono",kfVeryGood:"Molto buono",kfCalculation:"Calcolo",kfPreviousYear:"Anno precedente",kfNoData:"Dati insufficienti",kfDialogTitle:"Cifre chiave â Calcolo",kfLiquidityFull:"Rapporto di liquidità ",kfLiquidityFormula:"Attività correnti / Passività correnti",kfLiquidityComment:"Mostra la capacità dell'azienda di soddisfare gli obblighi a breve termine.",kfProfitabilityFull:"Rendimento del capitale totale",kfProfitabilityFormula:"(Utile ante imposte + Costi finanziari) à 100 / Totale attività medio",kfProfitabilityComment:"Misura l'efficienza dell'azienda nell'uso del capitale totale.",kfProfitabilityFallbackNote:"Basato sul capitale totale a fine anno per dati storici limitati.",kfEquityFull:"Rapporto patrimonio netto",kfEquityFormula:"Patrimonio netto à 100 / (Patrimonio netto + Debito)",kfEquityComment:"Mostra quanto dell'azienda è finanziato dal patrimonio netto.",kfFormulaLabel:"Formula",kfScaleLabel:"Scala di valutazione",kfKeyFigures:"Cifre chiave",fhiTitle:"Punteggio finanziario",fhiExplanation:"Spiegazione",fhiLevelPrefix:"LIVELLO",levelElite:"Elite",levelStrong:"Forte",levelStable:"Stabile",levelVulnerable:"Vulnerabile",levelCritical:"Critico",reModalTitle:"Come viene calcolato il punteggio finanziario",reIntro:"Il punteggio finanziario è un indice interno basato su dati di bilancio pubblici. Non è un rating creditizio.",reTotalFormula:"Formula del punteggio totale",reFormulaExplain:"Ogni fattore viene valutato da 0 a 100. La media ponderata determina il punteggio finale.",reSoliditet:"Solidità ",reSoliditetDef:"Misura la solidità finanziaria attraverso il rapporto di patrimonio.",reLonnsomhet:"Redditività ",reLonnsomhetDef:"Misura la redditività rispetto al capitale totale.",reLonnsomhetFallback:"Basato sul capitale totale a fine anno.",reRisiko:"Rischio",reRisikoDef:"Misura la leva finanziaria attraverso il rapporto debito/patrimonio.",reDebtToEquity:"Rapporto debito/patrimonio",reRisikoFootnote:"Se il patrimonio è zero o negativo, il punteggio è 0.",reStabilitet:"Stabilità ",reStabilitetDef:"Misura la stabilità finanziaria basata su patrimonio e utile positivi.",rePositiveEquity:"Patrimonio positivo",rePositiveProfit:"Utile netto positivo",reYes:"Sì",reNo:"No",reStabBothPositive:"Entrambi positivi",reStabOnePositive:"Uno positivo",reStabBothNegative:"Entrambi negativi",reStarLevelTitle:"Interpretazione a stelle",reStarLevelIntro:"Il punteggio finanziario viene convertito in un livello da 1 a 5 stelle.",reStarLevelNote:"Le stelle rappresentano la solidità finanziaria complessiva.",reDisclaimer:"Questo indice è generato automaticamente da Salemate basato su dati di bilancio pubblici. Non è un rating creditizio.",rePreTaxProfit:"Utile ante imposte",reFinancialCosts:"Costi finanziari",reAvgCapital:"Capitale totale medio"}},Uy={en:{title:"Booking Screens",newScreen:"New booking screen",editScreen:"Edit booking screen",noScreensYet:"No booking screens created yet",createFirst:"Create your first",active:"Active",deactivated:"Deactivated",fromPrice:"From price",categoryList:"Category list",linkCopied:"Link copied",openScreen:"Open booking screen",copyLink:"Copy link",copyEmbedScript:"Copy embed script",screenName:"Name",screenNamePlaceholder:"E.g. Reception, Window display",priceDisplay:"Price display",showAvailability:"Show availability",showAvailabilityHelp:"Displays remaining spots on each departure in the booking screen.",selectActivities:"Activities",selectAll:"Select all",deselectAll:"Deselect all",noCommercialActivities:"No commercial activities created.",defaultName:"Booking screen",showAllActivities:"Show all activities",showAllActivitiesHelp:"Automatically includes all bookable activities, including new ones added later.",addActivity:"Add activity",selectActivity:"Select activity...",terminalReader:"Card terminal",terminalReaderHelp:"Assign a physical card reader for kiosk payment on this screen.",noTerminal:"None (online payment)",nActivities:"{{count}} activities",allActivities:"All activities",terminalPayment:"Terminal",onlinePayment:"Online",screenOrientation:"Orientation",orientationPortrait:"Portrait",orientationLandscape:"Landscape",fontSize:"Font size",fontSmall:"Small",fontMedium:"Medium",fontLarge:"Large",theme:"Theme",themeDark:"Dark",themeLight:"Light",tabLayout:"Layout",tabPayment:"Payment",tabActivities:"Activities",widgetScale:"Min. card width portrait",widgetScaleLandscape:"Min. card width landscape",widgetScaleHelp:"Minimum width of each activity card. Height is calculated automatically.",orientationAutomatic:"Automatic"},no:{title:"Bookingskjermer",newScreen:"Ny bookingskjerm",editScreen:"Rediger bookingskjerm",n
478oScreensYet:"Ingen bookingskjermer opprettet ennÃ¥",createFirst:"Opprett din første",active:"Aktiv",deactivated:"Deaktivert",fromPrice:"Fra-pris",categoryList:"Kategoriliste",linkCopied:"Lenke kopiert",openScreen:"Ã
pne bookingskjerm",copyLink:"Kopier lenke",copyEmbedScript:"Kopier innbyggingsskript",screenName:"Navn",screenNamePlaceholder:"F.eks. Resepsjon, Vinduskjerm",priceDisplay:"Prisvisning",showAvailability:"Vis tilgjengelighet",showAvailabilityHelp:"Viser gjenværende plasser pÃ¥ hver avgang i bookingskjermen.",selectActivities:"Aktiviteter",selectAll:"Velg alle",deselectAll:"Fjern alle",noCommercialActivities:"Ingen kommersielle aktiviteter opprettet.",defaultName:"Bookingskjerm",showAllActivities:"Vis alle aktiviteter",showAllActivitiesHelp:"Inkluderer automatisk alle bookbare aktiviteter, inkludert nye som legges til senere.",addActivity:"Legg til aktivitet",selectActivity:"Velg aktivitet...",terminalReader:"Kortterminal",terminalReaderHelp:"Tildel en fysisk kortleser for kioskbetaling pÃ¥ denne skjermen.",noTerminal:"Ingen (nettbetaling)",nActivities:"{{count}} aktiviteter",allActivities:"Alle aktiviteter",terminalPayment:"Terminal",onlinePayment:"Nettbetaling",screenOrientation:"Orientering",orientationPortrait:"StÃ¥ende",orientationLandscape:"Liggende",fontSize:"Skriftstørrelse",fontSmall:"Liten",fontMedium:"Medium",fontLarge:"Stor",theme:"Tema",themeDark:"Mørk",themeLight:"Lys",tabLayout:"Layout",tabPayment:"Betaling",tabActivities:"Aktiviteter",widgetScale:"Min. kortbredde stÃ¥ende",widgetScaleLandscape:"Min. kortbredde liggende",widgetScaleHelp:"Minimumsbredde pÃ¥ hvert aktivitetskort. Høyden beregnes automatisk.",orientationAutomatic:"Automatisk"},de:{title:"Buchungsbildschirme",newScreen:"Neuer Buchungsbildschirm",editScreen:"Buchungsbildschirm bearbeiten",noScreensYet:"Noch keine Buchungsbildschirme erstellt",createFirst:"Erstellen Sie Ihren ersten",active:"Aktiv",deactivated:"Deaktiviert",fromPrice:"Ab Preis",categoryList:"Kategorieliste",linkCopied:"Link kopiert",openScreen:"Buchungsbildschirm öffnen",copyLink:"Link kopieren",copyEmbedScript:"Einbettungsskript kopieren",screenName:"Name",screenNamePlaceholder:"Z.B. Rezeption, Schaufenster",priceDisplay:"Preisanzeige",showAvailability:"Verfügbarkeit anzeigen",showAvailabilityHelp:"Zeigt die verbleibenden Plätze pro Abfahrt im Buchungsbildschirm an.",selectActivities:"Aktivitäten",selectAll:"Alle auswählen",deselectAll:"Alle abwählen",noCommercialActivities:"Keine kommerziellen Aktivitäten erstellt.",defaultName:"Buchungsbildschirm",showAllActivities:"Alle Aktivitäten anzeigen",showAllActivitiesHelp:"SchlieÃt automatisch alle buchbaren Aktivitäten ein, einschlieÃlich neu hinzugefügter.",addActivity:"Aktivität hinzufügen",selectActivity:"Aktivität auswählen...",terminalReader:"Kartenterminal",terminalReaderHelp:"Weisen Sie einen physischen Kartenleser für Kioskzahlung auf diesem Bildschirm zu.",noTerminal:"Keiner (Online-Zahlung)",nActivities:"{{count}} Aktivitäten",allActivities:"Alle Aktivitäten",terminalPayment:"Terminal",onlinePayment:"Online",screenOrientation:"Ausrichtung",orientationPortrait:"Hochformat",orientationLandscape:"Querformat",fontSize:"SchriftgröÃe",fontSmall:"Klein",fontMedium:"Mittel",fontLarge:"GroÃ",theme:"Design",themeDark:"Dunkel",themeLight:"Hell",tabLayout:"Layout",tabPayment:"Zahlung",tabActivities:"Aktivitäten",widgetScale:"Min. Kartenbreite Hochformat",widgetScaleLandscape:"Min. Kartenbreite Querformat",widgetScaleHelp:"Mindestbreite jeder Aktivitätskarte. Die Höhe wird automatisch berechnet.",orientationAutomatic:"Automatisch"},es:{title:"Pantallas de reserva",newScreen:"Nueva pantalla de reserva",editScreen:"Editar pantalla de reserva",noScreensYet:"Aún no se han creado pantallas de reserva",createFirst:"Cree la primera",active:"Activa",deactivated:"Desactivada",fromPrice:"Desde precio",categoryList:"Lista de categorÃas",linkCopied:"Enlace copiado",openScreen:"Abrir pantalla de reserva",copyLink:"Copiar enlace",copyEmbedScript:"Copiar script de inserción",screenName:"Nombre",screenNamePlaceholder:"Ej. Recepción, Escaparate",priceDisplay:"Visualización de precios",showAvailability:"Mostrar disponibilidad",showAvailabilityHelp:"Muestra las plazas restantes en cada salida en la pantalla de reserva.",selectActivities:"Actividades",selectAll:"Seleccionar todo",deselectAll:"Deseleccionar todo",noCommercialActivities:"No se han creado actividades comerciales.",defaultName:"Pantalla de reserva",
478showAllActivities:"Mostrar todas las actividades",showAllActivitiesHelp:"Incluye automáticamente todas las actividades reservables, incluidas las nuevas que se añadan más adelante.",addActivity:"Añadir actividad",selectActivity:"Seleccionar actividad...",terminalReader:"Terminal de tarjetas",terminalReaderHelp:"Asigne un lector de tarjetas fÃsico para pagos en quiosco en esta pantalla.",noTerminal:"Ninguno (pago en lÃnea)",nActivities:"{{count}} actividades",allActividades:"Todas las actividades",terminalPayment:"Terminal",onlinePayment:"En lÃnea",screenOrientation:"Orientación",orientationPortrait:"Vertical",orientationLandscape:"Horizontal",fontSize:"Tamaño de fuente",fontSmall:"Pequeño",fontMedium:"Mediano",fontLarge:"Grande",theme:"Tema",themeDark:"Oscuro",themeLight:"Claro",tabLayout:"Layout",tabPayment:"Pago",tabActivities:"Actividades",widgetScale:"Ancho mÃn. vertical",widgetScaleLandscape:"Ancho mÃn. horizontal",widgetScaleHelp:"Ancho mÃnimo de cada tarjeta de actividad. La altura se calcula automáticamente.",orientationAutomatic:"Automático"},fr:{title:"Ãcrans de réservation",newScreen:"Nouvel écran de réservation",editScreen:"Modifier l'écran de réservation",noScreensYet:"Aucun écran de réservation créé",createFirst:"Créez le premier",active:"Actif",deactivated:"Désactivé",fromPrice:"à partir de",categoryList:"Liste des catégories",linkCopied:"Lien copié",openScreen:"Ouvrir l'écran de réservation",copyLink:"Copier le lien",copyEmbedScript:"Copier le script d'intégration",screenName:"Nom",screenNamePlaceholder:"Ex. Réception, Vitrine",priceDisplay:"Affichage des prix",showAvailability:"Afficher la disponibilité",showAvailabilityHelp:"Affiche les places restantes pour chaque départ sur l'écran de réservation.",selectActivities:"Activités",selectAll:"Tout sélectionner",deselectAll:"Tout désélectionner",noCommercialActivities:"Aucune activité commerciale créée.",defaultName:"Ãcran de réservation",showAllActivities:"Afficher toutes les activités",showAllActivitiesHelp:"Inclut automatiquement toutes les activités réservables, y compris les nouvelles ajoutées ultérieurement.",addActivity:"Ajouter une activité",selectActivity:"Sélectionner une activité...",terminalReader:"Terminal de paiement",terminalReaderHelp:"Attribuez un lecteur de carte physique pour le paiement en borne sur cet écran.",noTerminal:"Aucun (paiement en ligne)",nActivities:"{{count}} activités",allActivities:"Toutes les activités",terminalPayment:"Terminal",onlinePayment:"En ligne",screenOrientation:"Orientation",orientationPortrait:"Portrait",orientationLandscape:"Paysage",fontSize:"Taille de police",fontSmall:"Petite",fontMedium:"Moyenne",fontLarge:"Grande",theme:"Thème",themeDark:"Sombre",themeLight:"Clair",tabLayout:"Layout",tabPayment:"Paiement",tabActivities:"Activités",widgetScale:"Largeur min. portrait",widgetScaleLandscape:"Largeur min. paysage",widgetScaleHelp:"Largeur minimale de chaque carte d'activité. La hauteur est calculée automatiquement.",orientationAutomatic:"Automatique"},it:{title:"Schermate di prenotazione",newScreen:"Nuova schermata di prenotazione",editScreen:"Modifica schermata di prenotazione",noScreensYet:"Nessuna schermata di prenotazione creata",createFirst:"Crea la prima",active:"Attiva",deactivated:"Disattivata",fromPrice:"Da prezzo",categoryList:"Lista categorie",linkCopied:"Link copiato",openScreen:"Apri schermata di prenotazione",copyLink:"Copia link",copyEmbedScript:"Copia script di incorporamento",screenName:"Nome",screenNamePlaceholder:"Es. Reception, Vetrina",priceDisplay:"Visualizzazione prezzi",showAvailability:"Mostra disponibilità ",showAvailabilityHelp:"Mostra i posti rimanenti per ogni partenza nella schermata di prenotazione.",selectActivities:"Attività ",selectAll:"Seleziona tutto",deselectAll:"Deseleziona tutto",noCommercialActivities:"Nessuna attività commerciale creata.",defaultName:"Schermata di prenotazione",showAllActivities:"Mostra tutte le attività ",showAllActivitiesHelp:"Include automaticamente tutte le attività prenotabili, comprese quelle aggiunte successivamente.",addActivity:"Aggiungi attività ",selectActivity:"Seleziona attività ...",terminalReader:"Terminale carte",terminalReaderHelp:"Assegna un lettore di carte fisico per il pagamento chiosco su questa schermata.",noTerminal:"Nessuno (pagamento online)",nActivities:"{{count}} attività ",allActivities:"Tutte le attività ",terminalPayment:"Terminale",onlinePayment:"Online",screenOrientation:"Orientamento",orientationPortrait:"Verticale",orientationLandscape:"Orizzontale",fontSize:"Dimensione carattere",fontSmall:"Piccolo",fontMedium:"Medio",fontLarge:"Grande",theme:"Tema",themeDark:"Scuro",themeLight:"Chiaro",tabLayout:"Layout",tabPayment:"Pagamento",tabActivities:"Attività ",widgetScale:"Larghezza min. verticale",widgetScaleLandscape:"Larghezza min. orizzontale",widgetScaleHelp:"Larghezza minima di ogni carta attività . L'altezza viene calcolata automaticamente.",orientationAutomatic:"Automatico"}},Hy={en:{title:"Company Profile",settingsHelp:"Name, address, logo and company details.",companyName:"Company name",addressLine1:"Address line 1",addressLine2:"Address line 2",postalCode:"Postal code",city:"City",country:"Country",saved:"Company profile saved",deleteCompany:"Delete company",deleteCompanyConfirm:"Are you sure you want to delete this company? All data will be permanently lost.",deleteCompanyWarning:"This action cannot be undone. Type the company name to confirm.",companyDeleted:"Company deleted",typeToConfirm:"Type company name to confirm",location:"Location",locationHelp:"Used for weather forecast and map features.",address:"Address",primaryLanguage:"Primary language",defaultCurrency:"Currency",languageChangeWarning:"Changing the primary language affects translation generation. Existing content will not be modified.",deletingStage1:"Removing bookings and paymentsâ¦",deletingStage2:"Removing calendar and eventsâ¦",deletingStage3:"Removing activities and resourcesâ¦",deletingStage4:"Removing contacts and customersâ¦",deletingStage5:"Removing company settingsâ¦",deletingStage6:"Finalizingâ¦",deletingComplete:"Company has been deleted",deleteFailed:"Failed to delete company"},no:{title:"Firmaprofil",settingsHelp:"Navn, adresse, logo og firmadetaljer.",companyName:"Firmanavn",addressLine1:"Adresselinje 1",addressLine2:"Adresselinje 2",postalCode:"Postnummer",city:"Poststed",country:"Land",saved:"Firmaprofil lagret",deleteCompany:"Slett firma",deleteCompanyConfirm:"Er du sikker pÃ¥ at du vil slette dette firmaet? Alle data vil bli permanent slettet.",deleteCompanyWarning:"Denne handlingen kan ikke angres. Skriv firmanavnet for Ã¥ bekrefte.",companyDeleted:"Firma slettet",typeToConfirm:"Skriv firmanavn for Ã¥ bekrefte",location:"Lokasjon",locationHelp:"Brukes for værvarsel og kartfunksjoner.",address:"Adresse",primaryLanguage:"PrimærsprÃ¥k",defaultCurrency:"Valuta",languageChangeWarning:"Endring av primærsprÃ¥k pÃ¥virker oversettelsesgenereringen. Eksisterende innhold endres ikke.",deletingStage1:"Fjerner bookinger og betalingerâ¦",deletingStage2:"Fjerner kalender og hendelserâ¦",deletingStage3:"Fjerner aktiviteter og ressurserâ¦",deletingStage4:"Fjerner kontakter og kunderâ¦",deletingStage5:"Fjerner firmainnstillingerâ¦",deletingStage6:"Fullførerâ¦",deletingComplete:"Firmaet er slettet",deleteFailed:"Klarte ikke Ã¥ slette firmaet"},de:{title:"Firmenprofil",settingsHelp:"Name, Adresse, Logo und Firmendetails.",companyName:"Firmenname",addressLine1:"Adresszeile 1",addressLine2:"Adresszeile 2",postalCode:"Postleitzahl",city:"Stadt",country:"Land",saved:"Firmenprofil gespeichert",deleteCompany:"Firma löschen",deleteCompanyConfirm:"Sind Sie sicher, dass Sie diese Firma löschen möchten? Alle Daten gehen dauerhaft verloren.",deleteCompanyWarning:"Diese Aktion kann nicht rückgängig gemacht werden. Geben Sie den Firmennamen zur Bestätigung ein.",companyDeleted:"Firma gelöscht",typeToConfirm:"Firmennamen zur Bestätigung eingeben",location:"Standort",locationHelp:"Wird für Wettervorhersage und Kartenfunktionen verwendet.",address:"Adresse",primaryLanguage:"Primärsprache",defaultCurrency:"Währung",languageChangeWarning:"Die Ãnderung der Primärsprache wirkt sich auf die Ãbersetzungsgenerierung aus. Bestehende Inhalte werden nicht geändert.",deletingStage1:"Buchungen und Zahlungen werden entferntâ¦",deletingStage2:"Kalender und Termine werden entferntâ¦",deletingStage3:"Aktivitäten und Ressourcen werden entferntâ¦",deletingStage4:"Kontakte und Kunden werden entferntâ¦",deletingStage5:"Firmeneinstellungen werden entferntâ¦",deletingStage6:"Wird abgeschlossenâ¦",deletingComplete:"Firma wurde gelöscht",deleteFailed:"Firma konnte nicht gelöscht werden"},es:{title:"Perfil de empresa",settingsHelp:"Nombre, dirección, logotipo y detalles de la empresa.",companyName:"Nombre de empresa",addressLine1:"LÃnea de dirección 1",addressLine2:"LÃnea de dirección 2",postalCode:"Código postal",city:"Ciudad",country:"PaÃ
478s",saved:"Perfil de empresa guardado",deleteCompany:"Eliminar empresa",deleteCompanyConfirm:"¿Está seguro de que desea eliminar esta empresa? Todos los datos se perderán permanentemente.",deleteCompanyWarning:"Esta acción no se puede deshacer. Escriba el nombre de la empresa para confirmar.",companyDeleted:"Empresa eliminada",typeToConfirm:"Escriba el nombre de la empresa para confirmar",location:"Ubicación",locationHelp:"Se usa para pronóstico del tiempo y funciones de mapa.",address:"Dirección",primaryLanguage:"Idioma principal",defaultCurrency:"Moneda",languageChangeWarning:"Cambiar el idioma principal afecta la generación de traducciones. El contenido existente no se modificará.",deletingStage1:"Eliminando reservas y pagosâ¦",deletingStage2:"Eliminando calendario y eventosâ¦",deletingStage3:"Eliminando actividades y recursosâ¦",deletingStage4:"Eliminando contactos y clientesâ¦",deletingStage5:"Eliminando configuración de empresaâ¦",deletingStage6:"Finalizandoâ¦",deletingComplete:"La empresa ha sido eliminada",deleteFailed:"No se pudo eliminar la empresa"},fr:{title:"Profil de l'entreprise",settingsHelp:"Nom, adresse, logo et détails de l'entreprise.",companyName:"Nom de l'entreprise",addressLine1:"Ligne d'adresse 1",addressLine2:"Ligne d'adresse 2",postalCode:"Code postal",city:"Ville",country:"Pays",saved:"Profil de l'entreprise enregistré",deleteCompany:"Supprimer l'entreprise",deleteCompanyConfirm:"Ãtes-vous sûr de vouloir supprimer cette entreprise ? Toutes les données seront définitivement perdues.",deleteCompanyWarning:"Cette action est irréversible. Tapez le nom de l'entreprise pour confirmer.",companyDeleted:"Entreprise supprimée",typeToConfirm:"Tapez le nom de l'entreprise pour confirmer",location:"Localisation",locationHelp:"Utilisé pour les prévisions météo et les fonctions de carte.",address:"Adresse",primaryLanguage:"Langue principale",defaultCurrency:"Devise",languageChangeWarning:"Le changement de langue principale affecte la génération des traductions. Le contenu existant ne sera pas modifié.",deletingStage1:"Suppression des réservations et paiementsâ¦",deletingStage2:"Suppression du calendrier et des événementsâ¦",deletingStage3:"Suppression des activités et ressourcesâ¦",deletingStage4:"Suppression des contacts et clientsâ¦",deletingStage5:"Suppression des paramètres de l'entrepriseâ¦",deletingStage6:"Finalisationâ¦",deletingComplete:"L'entreprise a été supprimée",deleteFailed:"Impossible de supprimer l'entreprise"},it:{title:"Profilo aziendale",settingsHelp:"Nome, indirizzo, logo e dettagli aziendali.",companyName:"Nome azienda",addressLine1:"Indirizzo riga 1",addressLine2:"Indirizzo riga 2",postalCode:"CAP",city:"Città ",country:"Paese",saved:"Profilo aziendale salvato",deleteCompany:"Elimina azienda",deleteCompanyConfirm:"Sei sicuro di voler eliminare questa azienda? Tutti i dati andranno persi definitivamente.",deleteCompanyWarning:"Questa azione non può essere annullata. Digita il nome dell'azienda per confermare.",companyDeleted:"Azienda eliminata",typeToConfirm:"Digita il nome dell'azienda per confermare",location:"Posizione",locationHelp:"Utilizzato per le previsioni meteo e le funzioni mappa.",address:"Indirizzo",primaryLanguage:"Lingua principale",defaultCurrency:"Valuta",languageChangeWarning:"La modifica della lingua principale influisce sulla generazione delle traduzioni. Il contenuto esistente non verrà modificato.",deletingStage1:"Rimozione prenotazioni e pagamentiâ¦",deletingStage2:"Rimozione calendario ed eventiâ¦",deletingStage3:"Rimozione attività e risorseâ¦",deletingStage4:"Rimozione contatti e clientiâ¦",deletingStage5:"Rimozione impostazioni aziendaliâ¦",deletingStage6:"Finalizzazioneâ¦",deletingComplete:"L'azienda è stata eliminata",deleteFailed:"Impossibile eliminare l'azienda"}},Gy={en:{title:"Settings",sections:{business:"Business",productsRevenue:"Products & Revenue",salesBooking:"Sales & Booking",paymentsAccounting:"Payments & Accounting",distribution:"Distribution",integrations:"Integrations"},cards:{companyProfileDesc:"Company name, address, logo and business details used across the system.",emailDesc:"Configure sender address and email handling.",productsDesc:"Manage activities, products and resource requirements.",revenueProfilesDesc:"Define how revenue, VAT and accounting are handled per activity.",vatCodesDesc:"Manage VAT rates and accounting rules.",discountCodesDesc:"Create and manage discount codes for bookings.",salesTermsDesc:"Terms and conditions shown to customers during booking.",paymentProvidersDesc:"Connect and configure payment solutions like Stripe.",accountingDesc:"Enable financial tracking, VAT handling and reporting.",chartOfAccountsDesc:"Manage the chart of accounts used for financial postings.",distributorsDesc:"Connect external sales channels like GetYourGuide and Viator.",powerOfficeDesc:"Synchronize data with PowerOffice Go.",accountingSystemDesc:"Connect your accounting system for automatic bookkeeping.",revenueProfiles:"Revenue Profiles",vatCodes:"VAT Co
478des",discountCodes:"Discount Codes",paymentProviders:"Payment Providers"},logo:"Company logo",uploadLogo:"Upload logo",removeLogo:"Remove logo",logoHelp:"The logo is shown in the header instead of the company name.",noAccess:"You do not have access to change company settings.",logoUpdated:"Logo updated",logoRemoved:"Logo removed",fileTooLarge:"File must be less than 2 MB",invalidFileType:"Only PNG, JPG, and WebP are allowed",salesTerms:"Sales terms",privacyPolicyUrl:"Privacy policy URL",termsUrl:"Terms and conditions URL",salesTermsHelp:"Links shown to customers during booking.",saved:"Settings saved",languageAndCurrency:"Language and Currency",languageAndCurrencyHelp:"Set the primary language for content and the default currency for pricing.",primaryLanguage:"Primary language",defaultCurrency:"Default currency",languageChangeWarning:"Changing primary language affects how translations are generated. Existing content will not be modified.",accountingSystem:"Accounting system",selectAccountingSystem:"Select accounting system",noAccountingSystem:"None",payments:{title:"Payments",titleHelp:"Configure payment providers for online bookings.",noProviders:"No payment providers configured.",stripeSettings:"Payment settings",paymentMode:"Payment mode",testMode:"Test",testModeDesc:"Shared test keys â no setup needed. For development and testing.",sandboxMode:"Sandbox",sandboxModeDesc:"Use your own Stripe test account. Simulated payments with your own data.",liveMode:"Live",liveModeDesc:"Real payments with your own Stripe account.",publishableKey:"Publishable key",secretKey:"Secret key",webhookSecret:"Webhook secret",webhookSecretOptional:"Webhook secret (optional)",webhookEndpointLabel:"Webhook endpoint",webhookEndpointCopied:"Webhook endpoint copied",notConfigured:"Not configured",configured:"Configured",sandboxActive:"Sandbox active",liveActive:"Live active",keysRequired:"Both publishable and secret keys are required",paymentProvider:"Payment provider",paymentProviderLabel:"Provider",stripeTestDefault:"Stripe (shared test)",selectProvider:"Select provider...",setupKeys:"Set up keys",keysConfigured:"Keys configured",netsTestDesc:"Nets Easy test environment",netsLiveDesc:"Nets Easy production",stripeSandboxDesc:"Your own Stripe test keys",stripeLiveDesc:"Your own Stripe live keys",terminalTitle:"Card Terminals",terminalDesc:"Manage physical card readers for in-person payments.",addLocation:"Add location",addReader:"Add reader",locationName:"Location name",locationAddress:"Address",locationCity:"City",locationPostalCode:"Postal code",locationCountry:"Country",pairingCode:"Pairing code",readerLabel:"Reader label",selectLocation:"Select location",noLocations:"No locations registered",noReaders:"No readers registered",readerOnline:"Online",readerOffline:"Offline",registerReader:"Register reader",createLocation:"Create location",readerRegistered:"Reader registered",locationCreated:"Location created",deleteReader:"Delete reader",deleteLocation:"Delete location",locationErrorPostalCode:"The postal code is invalid for the selected country. Please enter a valid postal code.",locationErrorAddress:"The street address is invalid or incomplete. Please enter a full street address.",locationErrorCity:"The city name is invalid. Please check the spelling.",locationErrorCountry:"The country code is invalid. Use a two-letter code (e.g. NO, SE, DE).",locationErrorGeneric:"Could not create the location. Please verify the address details and try again."},powerOffice:{title:"PowerOffice Go",description:"Connect your PowerOffice Go account for accounting integration.",credentials:"Credentials",clientKey:"Client Key",clientKeyPlaceholder:"Enter your PowerOffice Client Key",testConnection:"Test connection",connectionSuccess:"Connection successful",connectionFailed:"Connection failed",notConnected:"Not connected",connected:"Connected",syncCustomers:"Sync customers",syncCustomersDesc:"Synchronize customers between Salesmate and PowerOffice Go.",syncing:"Syncingâ¦",syncDone:"Sync complete! {pushed} pushed, {pulled} pulled.",syncFailed:"Customer sync failed",syncTaxCodes:"Sync tax codes",syncTaxCodesDesc:"Import VAT codes from PowerOffice Go.",syncTaxCodesDone:"Tax codes synced! {count} imported.",syncTaxCodesFailed:"Tax code sync failed",syncAccounts:"Sync chart of accounts",syncAccountsDesc:"Import GL accounts from PowerOffice Go.",syncAccountsDone:"Chart of accounts synced! {count} imported.",syncAccountsFailed:"Chart of accounts sync failed"}},no:{title:"Innstillinger",sections:{business:"Bedrift",productsRevenue:"Produkter og inntekt",salesBooking:"Salg og booking",paymentsAccounting:"Betaling og regnskap",distribution:"Distribusjon",integrations:"Integrasjoner"},cards:{companyProfileDesc:"Firmanavn, adresse, logo og forretningsdetaljer brukt i systemet.",emailDesc:"Konfigurer avsenderadresse og e-posthÃ¥ndtering.",productsDesc:"Administrer aktiviteter, produkter og ressursbehov.",revenueProfilesDesc:"Definer hvordan inntekt, MVA og regnskap hÃ¥ndteres per aktivitet.",vatCodesDesc:"Administrer MVA-satser og regnskapsregler.",discountCodesDesc:"Opprett og administrer rabattkoder for bookinger.",salesTermsDesc:"VilkÃ¥r og betingelser som vises til kunder under booking.",paymentProvidersDesc:"Koble til og konfigurer betalingsløsninger som Str
478ipe.",accountingDesc:"Aktiver økonomisporing, MVA-hÃ¥ndtering og rapportering.",chartOfAccountsDesc:"Administrer kontoplanen som brukes til regnskapsføring.",distributorsDesc:"Koble til eksterne salgskanaler som GetYourGuide og Viator.",powerOfficeDesc:"Synkroniser data med PowerOffice Go.",accountingSystemDesc:"Koble til regnskapssystemet ditt for automatisk bokføring.",revenueProfiles:"Inntektsprofiler",vatCodes:"MVA-koder",discountCodes:"Rabattkoder",paymentProviders:"Betalingsleverandør"},logo:"Firmalogo",uploadLogo:"Last opp logo",removeLogo:"Fjern logo",logoHelp:"Logoen vises i toppfeltet i stedet for firmanavnet.",noAccess:"Du har ikke tilgang til Ã¥ endre firmainnstillinger.",logoUpdated:"Logo oppdatert",logoRemoved:"Logo fjernet",fileTooLarge:"Filen mÃ¥ være under 2 MB",invalidFileType:"Kun PNG, JPG og WebP er tillatt",salesTerms:"Salgsbetingelser",privacyPolicyUrl:"Lenke til personvernerklæring",termsUrl:"Lenke til vilkÃ¥r og betingelser",salesTermsHelp:"Lenkene vises til kunder under booking.",saved:"Innstillinger lagret",languageAndCurrency:"SprÃ¥k og valuta",languageAndCurrencyHelp:"Velg primærsprÃ¥k for innhold og standardvaluta for priser.",primaryLanguage:"PrimærsprÃ¥k",defaultCurrency:"Standardvaluta",languageChangeWarning:"Endring av primærsprÃ¥k pÃ¥virker hvordan oversettelser genereres. Eksisterende innhold vil ikke bli endret.",accountingSystem:"Regnskapssystem",selectAccountingSystem:"Velg regnskapssystem",noAccountingSystem:"Ingen",payments:{title:"Betalinger",titleHelp:"Konfigurer betalingsleverandører for nettbooking.",noProviders:"Ingen betalingsleverandører konfigurert.",stripeSettings:"Betalingsinnstillinger",paymentMode:"Betalingsmodus",testMode:"Test",testModeDesc:"Delte testnøkler â ingen oppsett nødvendig. For utvikling og testing.",sandboxMode:"Sandbox",sandboxModeDesc:"Bruk din egen Stripe-testkonto. Simulerte betalinger med egne data.",liveMode:"Live",liveModeDesc:"Ekte betalinger med din egen Stripe-konto.",publishableKey:"Publiserbar nøkkel",secretKey:"Hemmelig nøkkel",webhookSecret:"Webhook-hemmelighet",webhookSecretOptional:"Webhook-hemmelighet (valgfritt)",webhookEndpointLabel:"Webhook-endepunkt",webhookEndpointCopied:"Webhook-endepunkt kopiert",notConfigured:"Ikke konfigurert",configured:"Konfigurert",sandboxActive:"Sandbox aktiv",liveActive:"Live aktiv",keysRequired:"BÃ¥de publiserbar og hemmelig nøkkel er pÃ¥krevd",paymentProvider:"Betalingsleverandør",paymentProviderLabel:"Leverandør",stripeTestDefault:"Stripe (delt test)",selectProvider:"Velg leverandør...",setupKeys:"Sett opp nøkler",keysConfigured:"Nøkler konfigurert",netsTestDesc:"Nets Easy testmiljø",netsLiveDesc:"Nets Easy produksjon",stripeSandboxDesc:"Dine egne Stripe-testnøkler",stripeLiveDesc:"Dine egne Stripe live-nøkler",terminalTitle:"Kortterminaler",terminalDesc:"Administrer fysiske kortlesere for betaling pÃ¥ stedet.",addLocation:"Legg til lokasjon",addReader:"Legg til leser",locationName:"Lokasjonsnavn",locationAddress:"Adresse",locationCity:"By",locationPostalCode:"Postnummer",locationCountry:"Land",pairingCode:"Paringskode",readerLabel:"Leseretikett",selectLocation:"Velg lokasjon",noLocations:"Ingen lokasjoner registrert",noReaders:"Ingen lesere registrert",readerOnline:"Tilkoblet",readerOffline:"Frakoblet",registerReader:"Registrer leser",createLocation:"Opprett lokasjon",readerRegistered:"Leser registrert",locationCreated:"Lokasjon opprettet",deleteReader:"Slett leser",deleteLocation:"Slett lokasjon",locationErrorPostalCode:"Postnummeret er ugyldig for det valgte landet. Vennligst oppgi et gyldig postnummer.",locationErrorAddress:"Gateadressen er ugyldig eller ufullstendig. Vennligst oppgi en fullstendig adresse.",locationErrorCity:"Bynavnet er ugyldig. Vennligst sjekk stavemÃ¥ten.",locationErrorCountry:"Landkoden er ugyldig. Bruk en tobokstavskode (f.eks. NO, SE, DE).",locationErrorGeneric:"Kunne ikke opprette lokasjonen. Vennligst kontroller adresseinformasjonen og prøv igjen."},powerOffice:{title:"PowerOffice Go",description:"Koble til PowerOffice Go-kontoen din for regnskapsintegrasjon.",credentials:"PÃ¥loggingsinformasjon",clientKey:"Klientnøkkel",clientKeyPlaceholder:"Skriv inn din PowerOffice klientnøkkel",testConnection:"Test tilkobling",connectionSuccess:"Tilkobling vellykket",connectionFailed:"Tilkobling feilet",notConnected:"Ikke tilkoblet",connected:"Tilkoblet",syncCustomers:"Synkroniser kunder",syncCustomersDesc:"Synkroniser kunder mellom Salesmate og PowerOffice Go.",syncing:"Synkronisererâ¦",syncDone:"Synkronisering ferdig! {pushed} sendt, {pulled} hentet.",syncFailed:"Kundesynkronisering feilet",syncTaxCodes:"Synkroniser MVA-koder",syncTaxCodesDesc:"Importer MVA-koder fra PowerOffice Go.",syncTaxCodesDone:"MVA-koder synkronisert! {count} importert.",syncTaxCodesFailed:"Synkronisering av MVA-koder feilet",syncAccounts:"Synkroniser kontoplan",syncAccountsDesc:"Importer kontoplan fra PowerOffice Go.",syncAccountsDone:"Kontoplan synkronisert! {count} importert.",syncAccountsFailed:"Synkronisering av kontoplan feilet"}},de:{title:"Einstellungen",sections:{business:"Unternehmen",productsRevenue:"Produkte & Umsatz",salesBooking:"Verkauf & Buchung",paymentsAccounting:"Zahlungen & Buchhaltung",distribution:"Vertrieb",integrations:"Integrationen"},cards:{companyProfileDesc:"Firmenname, Adresse, Logo und Geschäftsdetails im gesamten System.",emailDesc:"Absenderadresse und E-Mail-Verarbeitung konfigurieren.",productsDesc:"Aktivitäten, Produkte und Ressourcenanforderungen verwalten.",revenueProfilesDesc:"Definieren Sie, wie Umsatz, MwSt. und Buchhaltung pro Aktivität gehandhabt werden.",vatCodesDesc:"MwSt.-Sätze und Buchhaltungsregeln verwalten.",discountCodesDesc:"Rabattcodes für Buchungen erstellen und verwalten.",salesTermsDesc:"Geschäftsbedingungen, die Kunden bei der Buchung angezeigt werden.",paymentProvidersDesc:"Zahlungslösungen wie Stripe verbinden und konfigurieren.",accountingDesc:"Finanzverfolgung, MwSt.-Verwaltung und Berichterstattung aktivieren.",chartOfAccountsDesc:"Den Kontenplan für Finanzbuchungen verwalten.",distributorsDesc:"Externe Vertriebskanäle wie GetYourGuide und Viator verbinden.",powerOfficeDesc:"Daten mit PowerOffice Go synchronisieren.",accountingSystemDesc:"Verbinden Sie Ihr Buchhaltungssystem für automatische Buchführung.",revenueProfiles:"Umsatzprofile",vatCodes:"MwSt.-Codes",discountCodes:"Rabattcodes",paymentProviders:"Zahlungsanbieter"},logo:"Firmenlogo",uploadLogo:"Logo hochladen",removeLogo:"Logo entfernen",logoHelp:"Das Logo wird in der Kopfzeile anstelle des Firmennamens angezeigt.",noAccess:"Sie haben keinen Zugriff, um Firmeneinstellungen zu ändern.",logoUpdated:"Logo aktualisiert",logoRemoved:"Logo entfernt",fileTooLarge:"Datei muss kleiner als 2 MB sein",invali
478dFileType:"Nur PNG, JPG und WebP sind erlaubt",salesTerms:"Verkaufsbedingungen",privacyPolicyUrl:"Datenschutzrichtlinien-URL",termsUrl:"AGB-URL",salesTermsHelp:"Links, die Kunden während der Buchung angezeigt werden.",saved:"Einstellungen gespeichert",languageAndCurrency:"Sprache und Währung",languageAndCurrencyHelp:"Legen Sie die Primärsprache für Inhalte und die Standardwährung für Preise fest.",primaryLanguage:"Primärsprache",defaultCurrency:"Standardwährung",languageChangeWarning:"Die Ãnderung der Primärsprache wirkt sich auf die Ãbersetzungsgenerierung aus. Bestehende Inhalte werden nicht geändert.",accountingSystem:"Buchhaltungssystem",selectAccountingSystem:"Buchhaltungssystem auswählen",noAccountingSystem:"Keines",payments:{title:"Zahlungen",titleHelp:"Zahlungsanbieter für Online-Buchungen konfigurieren.",noProviders:"Keine Zahlungsanbieter konfiguriert.",stripeSettings:"Zahlungseinstellungen",paymentMode:"Zahlungsmodus",testMode:"Test",testModeDesc:"Geteilte Testschlüssel â keine Einrichtung nötig.",sandboxMode:"Sandbox",sandboxModeDesc:"Eigenes Stripe-Testkonto verwenden.",liveMode:"Live",liveModeDesc:"Echte Zahlungen mit eigenem Stripe-Konto.",publishableKey:"Ãffentlicher Schlüssel",secretKey:"Geheimer Schlüssel",webhookSecret:"Webhook-Geheimnis",webhookSecretOptional:"Webhook-Geheimnis (optional)",webhookEndpointLabel:"Webhook-Endpunkt",webhookEndpointCopied:"Webhook-Endpunkt kopiert",notConfigured:"Nicht konfiguriert",configured:"Konfiguriert",sandboxActive:"Sandbox aktiv",liveActive:"Live aktiv",keysRequired:"Ãffentlicher und geheimer Schlüssel erforderlich",paymentProvider:"Zahlungsanbieter",paymentProviderLabel:"Anbieter",stripeTestDefault:"Stripe (geteilter Test)",selectProvider:"Anbieter wählen...",setupKeys:"Schlüssel einrichten",keysConfigured:"Schlüssel konfiguriert",netsTestDesc:"Nets Easy Testumgebung",netsLiveDesc:"Nets Easy Produktion",stripeSandboxDesc:"Eigene Stripe-Testschlüssel",stripeLiveDesc:"Eigene Stripe Live-Schlüssel",terminalTitle:"Kartenterminals",terminalDesc:"Physische Kartenleser für Zahlungen vor Ort verwalten.",addLocation:"Standort hinzufügen",addReader:"Leser hinzufügen",locationName:"Standortname",locationAddress:"Adresse",locationCity:"Stadt",locationPostalCode:"PLZ",locationCountry:"Land",pairingCode:"Pairing-Code",readerLabel:"Leser-Label",selectLocation:"Standort wählen",noLocations:"Keine Standorte registriert",noReaders:"Keine Leser registriert",readerOnline:"Online",readerOffline:"Offline",registerReader:"Leser registrieren",createLocation:"Standort erstellen",readerRegistered:"Leser registriert",locationCreated:"Standort erstellt",deleteReader:"Leser löschen",deleteLocation:"Standort löschen",locationErrorPostalCode:"Die Postleitzahl ist für das gewählte Land ungültig. Bitte geben Sie eine gültige PLZ ein.",locationErrorAddress:"Die Adresse ist ungültig oder unvollständig. Bitte geben Sie eine vollständige Adresse ein.",locationErrorCity:"Der Stadtname ist ungüldig. Bitte überprüfen Sie die Schreibweise.",locationErrorCountry:"Der Ländercode ist ungültig. Verwenden Sie einen Zwei-Buchstaben-Code (z. B. NO, SE, DE).",locationErrorGeneric:"Der Standort konnte nicht erstellt werden. Bitte überprüfen Sie die Adressangaben."},powerOffice:{title:"PowerOffice Go",description:"Verbinden Sie Ihr PowerOffice Go-Konto für die Buchhaltungsintegration.",credentials:"Zugangsdaten",clientKey:"Client Key",clientKeyPlaceholder:"PowerOffice Client Key eingeben",testConnection:"Verbindung testen",connectionSuccess:"Verbindung erfolgreich",connectionFailed:"Verbindung fehlgeschlagen",notConnected:"Nicht verbunden",connected:"Verbunden",syncCustomers:"Kunden synchronisieren",syncCustomersDesc:"Kunden zwischen Salesmate und PowerOffice Go synchronisieren.",syncing:"Synchronisiereâ¦",syncDone:"Synchronisierung abgeschlossen! {pushed} gesendet, {pulled} abgerufen.",syncFailed:"Kundensynchronisierung fehlgeschlagen",syncTaxCodes:"MwSt.-Codes synchronisieren",syncTaxCodesDesc:"MwSt.-Codes aus PowerOffice Go importieren.",syncTaxCodesDone:"MwSt.-Codes synchronisiert! {count} importiert.",syncTaxCodesFailed:"Synchronisierung der MwSt.-Codes fehlgeschlagen",syncAccounts:"Kontenplan synchronisieren",syncAccountsDesc:"Kontenplan aus PowerOffice Go importieren.",syncAccountsDone:"Kontenplan synchronisiert! {count} importiert.",syncAccountsFailed:"Synchronisierung des Kontenplans fehlgeschlagen"}},es:{title:"Configuración",sections:{business:"Empresa",productsRevenue:"Productos e ingresos",salesBooking:"Ventas y reservas",paymentsAccounting:"Pagos y contabilidad",distribution:"Distribución",integrations:"Integraciones"},cards:{companyProfileDesc:"Nombre, dirección, logo y datos comerciales utilizados en el sistema.",emailDesc:"Configurar dirección de envÃo y gestión de correo.",productsDesc:"Gestionar actividades, productos y requisitos de recursos.",revenueProfilesDesc:"Definir cómo se manejan ingresos, IVA y contabilidad por actividad.",vatCodesDesc:"Gestionar tasas de IVA y reglas contables.",discountCodesDesc:"Crear y gestionar códigos de descuento para reservas.",salesTermsDesc:"Términos y condiciones mostrados a clientes durante la reserva.",paymentProvidersDesc:"Conectar y configurar soluciones de pago como Stripe.",accountingDesc:"Activar seguimiento financiero, gestión de IVA y reportes.",chartOfAccountsDesc:"Gestionar el plan de cuentas utilizado para asientos financieros.",distributorsDesc:"Conectar canales de venta externos como GetYourGuide y Viator.",powerOfficeDesc:"Sincronizar datos con PowerOffice Go.",accountingSystemDesc:"Conecte su sistema contable para contabilidad automática.",revenueProfiles:"Perfiles de ingresos",vatCodes:"Códigos IVA",discountCodes:"Códigos de descuento",paymentProviders:"Proveedores de pago"},logo:"Logo de empresa",uploadLogo:"Subir logo",removeLogo:"Eliminar logo",logoHelp:"El logo se muestra en la cabecera en lugar del nombre de la empresa.",noAccess:"No tiene acceso para cambiar la configuración de la empresa.",logoUpdated:"Logo actualizado",logoRemoved:"Logo eliminado",fileTooLarge:"El archivo debe ser menor de 2 MB",invali
478dFileType:"Solo se permiten PNG, JPG y WebP",salesTerms:"Condiciones de venta",privacyPolicyUrl:"URL de polÃtica de privacidad",termsUrl:"URL de términos y condiciones",salesTermsHelp:"Enlaces mostrados a los clientes durante la reserva.",saved:"Configuración guardada",languageAndCurrency:"Idioma y moneda",languageAndCurrencyHelp:"Establezca el idioma principal para el contenido y la moneda predeterminada para precios.",primaryLanguage:"Idioma principal",defaultCurrency:"Moneda predeterminada",languageChangeWarning:"Cambiar el idioma principal afecta cómo se generan las traducciones. El contenido existente no se modificará.",accountingSystem:"Sistema contable",selectAccountingSystem:"Seleccionar sistema contable",noAccountingSystem:"Ninguno",payments:{title:"Pagos",titleHelp:"Configure proveedores de pago para reservas en lÃnea.",noProviders:"No hay proveedores de pago configurados.",stripeSettings:"Configuración de pagos",paymentMode:"Modo de pago",testMode:"Prueba",testModeDesc:"Claves de prueba compartidas â sin configuración necesaria.",sandboxMode:"Sandbox",sandboxModeDesc:"Use su propia cuenta de prueba de Stripe.",liveMode:"Producción",liveModeDesc:"Pagos reales con su propia cuenta de Stripe.",publishableKey:"Clave pública",secretKey:"Clave secreta",webhookSecret:"Secreto webhook",webhookSecretOptional:"Secreto webhook (opcional)",webhookEndpointLabel:"Endpoint webhook",webhookEndpointCopied:"Endpoint webhook copiado",notConfigured:"No configurado",configured:"Configurado",sandboxActive:"Sandbox activo",liveActive:"Producción activa",keysRequired:"Se requieren ambas claves",paymentProvider:"Proveedor de pago",paymentProviderLabel:"Proveedor",stripeTestDefault:"Stripe (prueba compartida)",selectProvider:"Seleccionar proveedor...",setupKeys:"Configurar claves",keysConfigured:"Claves configuradas",netsTestDesc:"Entorno de prueba Nets Easy",netsLiveDesc:"Producción Nets Easy",stripeSandboxDesc:"Sus propias claves de prueba Stripe",stripeLiveDesc:"Sus propias claves live Stripe",terminalTitle:"Terminales de tarjetas",terminalDesc:"Gestione lectores de tarjetas fÃsicos para pagos presenciales.",addLocation:"Añadir ubicación",addReader:"Añadir lector",locationName:"Nombre de ubicación",locationAddress:"Dirección",locationCity:"Ciudad",locationPostalCode:"Código postal",locationCountry:"PaÃs",pairingCode:"Código de emparejamiento",readerLabel:"Etiqueta del lector",selectLocation:"Seleccionar ubicación",noLocations:"Sin ubicaciones registradas",noReaders:"Sin lectores registrados",readerOnline:"En lÃnea",readerOffline:"Sin conexión",registerReader:"Registrar lector",createLocation:"Crear ubicación",readerRegistered:"Lector registrado",locationCreated:"Ubicación creada",deleteReader:"Eliminar lector",deleteLocation:"Eliminar ubicación",locationErrorPostalCode:"El código postal no es válido para el paÃs seleccionado. Introduzca un código postal válido.",locationErrorAddress:"La dirección es inválida o incompleta. Introduzca una dirección completa.",locationErrorCity:"El nombre de la ciudad no es válido. Verifique la ortografÃa.",locationErrorCountry:"El código de paÃs no es válido. Use un código de dos letras (ej. NO, SE, DE).",locationErrorGeneric:"No se pudo crear la ubicación. Verifique los datos de la dirección e intente de nuevo."},powerOffice:{title:"PowerOffice Go",description:"Conecte su cuenta de PowerOffice Go para la integración contable.",credentials:"Credenciales",clientKey:"Clave de cliente",clientKeyPlaceholder:"Ingrese su clave de cliente PowerOffice",testConnection:"Probar conexión",connectionSuccess:"Conexión exitosa",connectionFailed:"Conexión fallida",notConnected:"No conectado",connected:"Conectado",syncCustomers:"Sincronizar clientes",syncCustomersDesc:"Sincronice clientes entre Salesmate y PowerOffice Go.",syncing:"Sincronizandoâ¦",syncDone:"¡Sincronización completa! {pushed} enviados, {pulled} obtenidos.",syncFailed:"Error en sincronización de clientes",syncTaxCodes:"Sincronizar códigos IVA",syncTaxCodesDesc:"Importar códigos IVA desde PowerOffice Go.",syncTaxCodesDone:"¡Códigos IVA sincronizados! {count} importados.",syncTaxCodesFailed:"Error en sincronización de códigos IVA",syncAccounts:"Sincronizar plan de cuentas",syncAccountsDesc:"Importar plan de cuentas desde PowerOffice Go.",syncAccountsDone:"¡Plan de cuentas sincronizado! {count} importados.",syncAccountsFailed:"Error en sincronización del plan de cuentas"}},fr:{title:"Paramètres",sections:{business:"Entreprise",productsRevenue:"Produits et revenus",salesBooking:"Ventes et réservations",paymentsAccounting:"Paiements et comptabilité",distribution:"Distribution",integrations:"Intégrations"},cards:{companyProfileDesc:"Nom, adresse, logo et détails commerciaux utilisés dans le système.",emailDesc:"Configurer l'adresse d'expédition et la gestion des e-mails.",productsDesc:"Gérer les activités, produits et besoins en ressources.",revenueProfilesDesc:"Définir comment les revenus, la TVA et la comptabilité sont gérés par activité.",vatCodesDesc:"Gérer les taux de TVA et les règles comptables.",discountCodesDesc:"Créer et gérer des codes de réduction pour les réservations.",salesTermsDesc:"Conditions générales affichées aux clients lors de la réservation.",paymentProvidersDesc:"Connecter et configurer des solutions de paiement comme Stripe.",accountingDesc:"Activer le suivi financier, la gestion de la TVA et les rapports.",chartOfAccountsDesc:"Gérer le plan comptable utilisé pour les écritures financières.",distributorsDesc:"Connecter des canaux de vente externes comme GetYourGuide et Viator.",powerOfficeDesc:"Synchroniser les données avec PowerOffice Go.",accountingSystemDesc:"Connectez votre système comptable pour la comptabilité automatique.",revenueProfiles:"Profils de revenus",vatCodes:"Codes TVA",discountCodes:"Codes de réduction",paymentProviders:"Fournisseurs de paiement"},logo:"Logo de l'entreprise",uploadLogo:"Télécharger le logo",removeLogo:"Supprimer le logo",logoHelp:"Le logo est affiché dans l'en-tête à la place du nom de l'entreprise.",noAccess:"Vous n'avez pas accès pour modifier les paramètres de l'entreprise.",logoUpdated:"Logo mis à jour",logoRemoved:"Logo supprimé",fileTooLarge:"Le fichier doit faire moins de 2 Mo",invali
478dFileType:"Seuls PNG, JPG et WebP sont autorisés",salesTerms:"Conditions de vente",privacyPolicyUrl:"URL de la politique de confidentialité",termsUrl:"URL des conditions générales",salesTermsHelp:"Liens affichés aux clients lors de la réservation.",saved:"Paramètres enregistrés",languageAndCurrency:"Langue et devise",languageAndCurrencyHelp:"Définissez la langue principale pour le contenu et la devise par défaut pour les prix.",primaryLanguage:"Langue principale",defaultCurrency:"Devise par défaut",languageChangeWarning:"Le changement de langue principale affecte la génération des traductions. Le contenu existant ne sera pas modifié.",accountingSystem:"Système comptable",selectAccountingSystem:"Sélectionner le système comptable",noAccountingSystem:"Aucun",payments:{title:"Paiements",titleHelp:"Configurez les fournisseurs de paiement pour les réservations en ligne.",noProviders:"Aucun fournisseur de paiement configuré.",stripeSettings:"Paramètres de paiement",paymentMode:"Mode de paiement",testMode:"Test",testModeDesc:"Clés de test partagées â aucune configuration nécessaire.",sandboxMode:"Sandbox",sandboxModeDesc:"Utilisez votre propre compte de test Stripe.",liveMode:"Production",liveModeDesc:"Paiements réels avec votre propre compte Stripe.",publishableKey:"Clé publique",secretKey:"Clé secrète",webhookSecret:"Secret webhook",webhookSecretOptional:"Secret webhook (optionnel)",webhookEndpointLabel:"Point de terminaison webhook",webhookEndpointCopied:"Point de terminaison webhook copié",notConfigured:"Non configuré",configured:"Configuré",sandboxActive:"Sandbox actif",liveActive:"Production active",keysRequired:"Les deux clés sont requises",paymentProvider:"Fournisseur de paiement",paymentProviderLabel:"Fournisseur",stripeTestDefault:"Stripe (test partagé)",selectProvider:"Sélectionner un fournisseur...",setupKeys:"Configurer les clés",keysConfigured:"Clés configurées",netsTestDesc:"Environnement de test Nets Easy",netsLiveDesc:"Production Nets Easy",stripeSandboxDesc:"Vos propres clés de test Stripe",stripeLiveDesc:"Vos propres clés live Stripe",terminalTitle:"Terminaux de paiement",terminalDesc:"Gérez les lecteurs de cartes physiques pour les paiements en personne.",addLocation:"Ajouter un emplacement",addReader:"Ajouter un lecteur",locationName:"Nom de l'emplacement",locationAddress:"Adresse",locationCity:"Ville",locationPostalCode:"Code postal",locationCountry:"Pays",pairingCode:"Code d'appairage",readerLabel:"Ãtiquette du lecteur",selectLocation:"Sélectionner un emplacement",noLocations:"Aucun emplacement enregistré",noReaders:"Aucun lecteur enregistré",readerOnline:"En ligne",readerOffline:"Hors ligne",registerReader:"Enregistrer le lecteur",createLocation:"Créer un emplacement",readerRegistered:"Lecteur enregistré",locationCreated:"Emplacement créé",deleteReader:"Supprimer le lecteur",deleteLocation:"Supprimer l'emplacement",locationErrorPostalCode:"Le code postal n'est pas valide pour le pays sélectionné. Veuillez entrer un code postal valide.",locationErrorAddress:"L'adresse est invalide ou incomplète. Veuillez entrer une adresse complète.",locationErrorCity:"Le nom de la ville est invalide. Veuillez vérifier l'orthographe.",locationErrorCountry:"Le code pays est invalide. Utilisez un code à deux lettres (ex. NO, SE, DE).",locationErrorGeneric:"Impossible de créer l'emplacement. Veuillez vérifier les informations d'adresse."},powerOffice:{title:"PowerOffice Go",description:"Connectez votre compte PowerOffice Go pour l'intégration comptable.",credentials:"Identifiants",clientKey:"Clé client",clientKeyPlaceholder:"Entrez votre clé client PowerOffice",testConnection:"Tester la connexion",connectionSuccess:"Connexion réussie",connectionFailed:"Connexion échouée",notConnected:"Non connecté",connected:"Connecté",syncCustomers:"Synchroniser les clients",syncCustomersDesc:"Synchronisez les clients entre Salesmate et PowerOffice Go.",syncing:"Synchronisationâ¦",syncDone:"Synchronisation terminée ! {pushed} envoyés, {pulled} récupérés.",syncFailed:"Ãchec de la synchronisation des clients",syncTaxCodes:"Synchroniser les codes TVA",syncTaxCodesDesc:"Importer les codes TVA depuis PowerOffice Go.",syncTaxCodesDone:"Codes TVA synchronisés ! {count} importés.",syncTaxCodesFailed:"Ãchec de la synchronisation des codes TVA",syncAccounts:"Synchroniser le plan comptable",syncAccountsDesc:"Importer le plan comptable depuis PowerOffice Go.",syncAccountsDone:"Plan comptable synchronisé ! {count} importés.",syncAccountsFailed:"Ãchec de la synchronisation du plan comptable"}},it:{title:"Impostazioni",sections:{business:"Azienda",productsRevenue:"Prodotti e ricavi",salesBooking:"Vendite e prenotazioni",paymentsAccounting:"Pagamenti e contabilità ",distribution:"Distribuzione",integrations:"Integrazioni"},cards:{companyProfileDesc:"Nome, indirizzo, logo e dettagli aziendali utilizzati nel sistema.",emailDesc:"Configura indirizzo mittente e gestione email.",productsDesc:"Gestisci attività , prodotti e requisiti delle risorse.",revenueProfilesDesc:"Definisci come ricavi, IVA e contabilità vengono gestiti per attività .",vatCodesDesc:"Gestisci aliquote IVA e regole contabili.",discountCodesDesc:"Crea e gestisci codici sconto per le prenotazioni.",salesTermsDesc:"Termini e condizioni mostrati ai clienti durante la prenotazione.",paymentProvidersDesc:"Connetti e configura soluzioni di pagamento come Stripe.",accountingDesc:"Attiva monitoraggio finanziario, gestione IVA e reportistica.",chartOfAccountsDesc:"Gestire il piano dei conti utilizzato per le registrazioni finanziarie.",distributorsDesc:"Connetti canali di vendita esterni come GetYourGuide e Viator.",powerOfficeDesc:"Sincronizza i dati con PowerOffice Go.",accountingSystemDesc:"Collega il tuo sistema contabile per la contabilità automatica.",revenueProfiles:"Profili di ricavo",vatCodes:"Codici IVA",discountCodes:"Codici sconto",paymentProviders:"Fornitori di pagamento"},logo:"Logo aziendale",uploadLogo:"Carica logo",removeLogo:"Rimuovi logo",logoHelp:"Il logo viene mostrato nell'intestazione al posto del nome dell'azienda.",noAccess:"Non hai accesso per modificare le impostazioni aziendali.",logoUpdated:"Logo aggiornato",logoRemoved:"Logo rimosso",fileTooLarge:"Il file deve essere inferiore a 2 MB",invali
478dFileType:"Sono consentiti solo PNG, JPG e WebP",salesTerms:"Condizioni di vendita",privacyPolicyUrl:"URL informativa sulla privacy",termsUrl:"URL termini e condizioni",salesTermsHelp:"Link mostrati ai clienti durante la prenotazione.",saved:"Impostazioni salvate",languageAndCurrency:"Lingua e valuta",languageAndCurrencyHelp:"Imposta la lingua principale per i contenuti e la valuta predefinita per i prezzi.",primaryLanguage:"Lingua principale",defaultCurrency:"Valuta predefinita",languageChangeWarning:"La modifica della lingua principale influisce sulla generazione delle traduzioni. Il contenuto esistente non verrà modificato.",accountingSystem:"Sistema contabile",selectAccountingSystem:"Seleziona sistema contabile",noAccountingSystem:"Nessuno",payments:{title:"Pagamenti",titleHelp:"Configura i fornitori di pagamento per le prenotazioni online.",noProviders:"Nessun fornitore di pagamento configurato.",stripeSettings:"Impostazioni di pagamento",paymentMode:"Modalità di pagamento",testMode:"Test",testModeDesc:"Chiavi di test condivise â nessuna configurazione necessaria.",sandboxMode:"Sandbox",sandboxModeDesc:"Usa il tuo account di test Stripe.",liveMode:"Produzione",liveModeDesc:"Pagamenti reali con il tuo account Stripe.",publishableKey:"Chiave pubblica",secretKey:"Chiave segreta",webhookSecret:"Segreto webhook",webhookSecretOptional:"Segreto webhook (opzionale)",webhookEndpointLabel:"Endpoint webhook",webhookEndpointCopied:"Endpoint webhook copiato",notConfigured:"Non configurato",configured:"Configurato",sandboxActive:"Sandbox attivo",liveActive:"Produzione attiva",keysRequired:"Entrambe le chiavi sono richieste",paymentProvider:"Fornitore di pagamento",paymentProviderLabel:"Fornitore",stripeTestDefault:"Stripe (test condiviso)",selectProvider:"Seleziona fornitore...",setupKeys:"Configura chiavi",keysConfigured:"Chiavi configurate",netsTestDesc:"Ambiente di test Nets Easy",netsLiveDesc:"Produzione Nets Easy",stripeSandboxDesc:"Le tue chiavi di test Stripe",stripeLiveDesc:"Le tue chiavi live Stripe",terminalTitle:"Terminali carta",terminalDesc:"Gestisci i lettori di carte fisici per i pagamenti di persona.",addLocation:"Aggiungi posizione",addReader:"Aggiungi lettore",locationName:"Nome posizione",locationAddress:"Indirizzo",locationCity:"Città ",locationPostalCode:"CAP",locationCountry:"Paese",pairingCode:"Codice di accoppiamento",readerLabel:"Etichetta lettore",selectLocation:"Seleziona posizione",noLocations:"Nessuna posizione registrata",noReaders:"Nessun lettore registrato",readerOnline:"Online",readerOffline:"Offline",registerReader:"Registra lettore",createLocation:"Crea posizione",readerRegistered:"Lettore registrato",locationCreated:"Posizione creata",deleteReader:"Elimina lettore",deleteLocation:"Elimina posizione",locationErrorPostalCode:"Il codice postale non è valido per il paese selezionato. Inserire un codice postale valido.",locationErrorAddress:"L'indirizzo è invalido o incompleto. Inserire un indirizzo completo.",locationErrorCity:"Il nome della città non è valido. Verificare l'ortografia.",locationErrorCountry:"Il codice paese non è valido. Usare un codice a due lettere (es. NO, SE, DE).",locationErrorGeneric:"Impossibile creare la posizione. Verificare i dati dell'indirizzo e riprovare."},powerOffice:{title:"PowerOffice Go",description:"Collega il tuo account PowerOffice Go per l'integrazione contabile.",credentials:"Credenziali",clientKey:"Chiave client",clientKeyPlaceholder:"Inserisci la tua chiave client PowerOffice",testConnection:"Testa connessione",connectionSuccess:"Connessione riuscita",connectionFailed:"Connessione fallita",notConnected:"Non connesso",connected:"Connesso",syncCustomers:"Sincronizza clienti",syncCustomersDesc:"Sincronizza i clienti tra Salesmate e PowerOffice Go.",syncing:"Sincronizzazioneâ¦",syncDone:"Sincronizzazione completata! {pushed} inviati, {pulled} recuperati.",syncFailed:"Sincronizzazione clienti fallita",syncTaxCodes:"Sincronizza codici IVA",syncTaxCodesDesc:"Importa codici IVA da PowerOffice Go.",syncTaxCodesDone:"Codici IVA sincronizzati! {count} importati.",syncTaxCodesFailed:"Sincronizzazione codici IVA fallita",syncAccounts:"Sincronizza piano dei conti",syncAccountsDesc:"Importa piano dei conti da PowerOffice Go.",syncAccountsDone:"Piano dei conti sincronizzato! {count} importati.",syncAccountsFailed:"Sincronizzazione piano dei conti fallita"}}}
478,$y={en:{title:"Inbox",noEmails:"No incoming emails yet.",unknownSender:"Unknown sender",noSubject:"(No subject)",matched:"matched",unmatched:"Unmatched",from:"From",to:"To",received:"Received",noBody:"No content.",linkToContact:"Link to contact",link:"Link",selectContact:"Select contact...",linkedSuccess:"Email linked to contact",aliasNotAvailable:"This alias is already taken.",aliasReserved:"This alias is reserved.",inboxAlias:"Inbox alias",inboxEnabled:"Enable inbox",inboxAddress:"Inbox address",inboxHelperText:"Forward emails to this address to store them in Salesmate.",notConfigured:"Not configured",copyAddress:"Copy address",addressCopied:"Address copied",aliasPlaceholder:"e.g. your-company",aliasFormatError:"Only lowercase letters, numbers and hyphens (3-40 characters).",inbox:"Email",inboxHelp:"Receive and manage emails directly in Salesmate.",openEmail:"Open email",systemUser:"System",searchPlaceholder:"Search sender, subject...",reply:"Reply",forward:"Forward",cc:"Cc",subject:"Subject",backToInbox:"Back to inbox",newContact:"New contact",unqualified:"Unqualified",createLead:"Create lead",openSale:"Open sale",linkedToSale:"Linked to sale",deleteEmail:"Delete email",deleteConfirm:"Delete this email? This can be undone in a later version.",emailDeleted:"Email deleted",attachments:"Attachments",downloadAttachment:"Download attachment",qualifyAll:"Qualify all",qualifyingAll:"Analyzing...",qualifyDone:"Done! {leads} leads created, {skipped} skipped.",qualifyFailed:"Batch qualification failed",bookingReplyTo:"Reply-to email for bookings",bookingReplyToHelp:"This email address will be used as the reply-to address on booking confirmation emails.",bookingReplyToPlaceholder:"e.g. [email protected]"},no:{title:"Innboks",noEmails:"Ingen innkommende e-poster ennÃ¥.",unknownSender:"Ukjent avsender",noSubject:"(Ingen emne)",matched:"tilknyttet",unmatched:"Ikke tilknyttet",from:"Fra",to:"Til",received:"Mottatt",noBody:"Ingen innhold.",linkToContact:"Koble til kontakt",link:"Koble",selectContact:"Velg kontakt...",linkedSuccess:"E-post koblet til kontakt",aliasNotAvailable:"Dette aliaset er allerede tatt.",aliasReserved:"Dette aliaset er reservert.",inboxAlias:"Innboks-alias",inboxEnabled:"Aktiver innboks",inboxAddress:"Innboksadresse",inboxHelperText:"Videresend e-poster til denne adressen for Ã¥ lagre dem i Salesmate.",notConfigured:"Ikke konfigurert",copyAddress:"Kopier adresse",addressCopied:"Adresse kopiert",aliasPlaceholder:"f.eks. ditt-firma",aliasFormatError:"Kun smÃ¥ bokstaver, tall og bindestreker (3-40 tegn).",inbox:"E-post",inboxHelp:"Motta og hÃ¥ndter e-poster direkte i Salesmate.",openEmail:"Ã
pne e-post",systemUser:"System",searchPlaceholder:"Søk avsender, emne...",reply:"Svar",forward:"Videresend",cc:"Kopi",subject:"Emne",backToInbox:"Tilbake til innboks",newContact:"Ny kontakt",unqualified:"Ikke kvalifisert",createLead:"Opprett lead",openSale:"Ã
pne salg",linkedToSale:"Koblet til salg",deleteEmail:"Slett e-post",deleteConfirm:"Slette denne e-posten? Dette kan angres i en senere versjon.",emailDeleted:"E-post slettet",attachments:"Vedlegg",downloadAttachment:"Last ned vedlegg",qualifyAll:"Kvalifiser alle",qualifyingAll:"Analyserer...",qualifyDone:"Ferdig! {leads} leads opprettet, {skipped} hoppet over.",qualifyFailed:"Batch-kvalifisering feilet",bookingReplyTo:"Svar-adresse for bookinger",bookingReplyToHelp:"Denne e-postadressen brukes som svar-adresse på bookingbekreftelser som sendes ut.",bookingReplyToPlaceholder:"f.eks. [email protected]"},de:{title:"Posteingang",noEmails:"Noch keine eingehenden E-Mails.",unknownSender:"Unbekannter Absender",noSubject:"(Kein Betreff)",matched:"zugeordnet",unmatched:"Nicht zugeordnet",from:"Von",to:"An",received:"Empfangen",noBody:"Kein Inhalt.",linkToContact:"Mit Kontakt verknüpfen",link:"Verknüpfen",selectContact:"Kontakt auswählen...",linkedSuccess:"E-Mail mit Kontakt verknüpft",aliasNotAvailable:"Dieser Alias ist bereits vergeben.",aliasReserved:"Dieser Alias ist reserviert.",inboxAlias:"Posteingangs-Alias",inboxEnabled:"Posteingang aktivieren",inboxAddress:"Posteingangsadresse",inboxHelperText:"Leiten Sie E-Mails an diese Adresse weiter, um sie in Salesmate zu speichern.",notConfigured:"Nicht konfiguriert",copyAddress:"Adresse kopieren",addressCopied:"Adresse kopiert",aliasPlaceholder:"z.B. ihr-firmenname",aliasFormatError:"Nur Kleinbuchstaben, Zahlen und Bindestriche (3-40 Zeichen).",inbox:"E-Mail",inboxHelp:"E-Mails direkt in Salesmate empfangen und verwalten.",openEmail:"E-Mail öffnen",systemUser:"System",searchPlaceholder:"Absender, Betreff suchen...",reply:"Antworten",forward:"Weiterleiten",cc:"Cc",subject:"Betreff",backToInbox:"Zurück zum Posteingang",newContact:"Neuer Kontakt",unqualified:"Nicht qualifiziert",createLead:"Lead erstellen",openSale:"Verkauf öffnen",linkedToSale:"Mit Verkauf verknüpft",deleteEmail:"E-Mail löschen",deleteConfirm:"Diese E-Mail löschen? Dies kann in einer späteren Version rückgängig gemacht werden.",emailDeleted:"E-Mail gelöscht",attachments:"Anhänge",downloadAttachment:"Anhang herunterladen",qualifyAll:"Alle qualifizieren",qualifyingAll:"Analysiere...",qualifyDone:"Fertig! {leads} Leads erstellt, {skipped} übersprungen.",qualifyFailed:"Fehler bei der Batch-Qualifizierung",bookingReplyTo:"Antwort-E-Mail für Buchungen",bookingReplyToHelp:"Diese E-Mail-Adresse wird als Antwortadresse bei Buchungsbestätigungen verwendet.",bookingReplyToPlaceholder:"z.B. [email protected]"},es:{title:"Bandeja de entrada",inboxHelp:"Reciba y gestione correos electrónicos directamente en Salesmate.",noEmail
478s:"Aún no hay correos entrantes.",unknownSender:"Remitente desconocido",noSubject:"(Sin asunto)",matched:"vinculado",unmatched:"Sin vincular",from:"De",to:"Para",received:"Recibido",noBody:"Sin contenido.",linkToContact:"Vincular a contacto",link:"Vincular",selectContact:"Seleccionar contacto...",linkedSuccess:"Correo vinculado al contacto",aliasNotAvailable:"Este alias ya está en uso.",aliasReserved:"Este alias está reservado.",inboxAlias:"Alias de bandeja",inboxEnabled:"Activar bandeja",inboxAddress:"Dirección de bandeja",inboxHelperText:"ReenvÃe correos a esta dirección para guardarlos en Salesmate.",notConfigured:"No configurado",copyAddress:"Copiar dirección",addressCopied:"Dirección copiada",aliasPlaceholder:"ej. su-empresa",aliasFormatError:"Solo letras minúsculas, números y guiones (3-40 caracteres).",inbox:"Correo",openEmail:"Abrir correo",systemUser:"Sistema",searchPlaceholder:"Buscar remitente, asunto...",reply:"Responder",forward:"Reenviar",cc:"Cc",subject:"Asunto",backToInbox:"Volver a bandeja",newContact:"Nuevo contacto",unqualified:"No calificado",createLead:"Crear lead",openSale:"Abrir venta",linkedToSale:"Vinculado a venta",deleteEmail:"Eliminar correo",deleteConfirm:"¿Eliminar este correo?",emailDeleted:"Correo eliminado",attachments:"Adjuntos",downloadAttachment:"Descargar adjunto",qualifyAll:"Calificar todos",qualifyingAll:"Analizando...",qualifyDone:"¡Listo! {leads} leads creados, {skipped} omitidos.",qualifyFailed:"Error en calificación por lotes",bookingReplyTo:"Correo de respuesta para reservas",bookingReplyToHelp:"Esta dirección se usará como dirección de respuesta en los correos de confirmación de reservas.",bookingReplyToPlaceholder:"ej. [email protected]"},fr:{title:"Boîte de réception",inboxHelp:"Recevez et gérez les e-mails directement dans Salesmate.",noEmails:"Aucun email entrant.",unknownSender:"Expéditeur inconnu",noSubject:"(Sans objet)",matched:"associé",unmatched:"Non associé",from:"De",to:"Ã",received:"Reçu",noBody:"Aucun contenu.",linkToContact:"Lier au contact",link:"Lier",selectContact:"Sélectionner un contact...",linkedSuccess:"Email lié au contact",aliasNotAvailable:"Cet alias est déjà pris.",aliasReserved:"Cet alias est réservé.",inboxAlias:"Alias de boîte",inboxEnabled:"Activer la boîte",inboxAddress:"Adresse de boîte",inboxHelperText:"Transférez les emails à cette adresse pour les stocker dans Salesmate.",notConfigured:"Non configuré",copyAddress:"Copier l'adresse",addressCopied:"Adresse copiée",aliasPlaceholder:"ex. votre-entreprise",aliasFormatError:"Uniquement lettres minuscules, chiffres et tirets (3-40 caractères).",inbox:"E-mail",openEmail:"Ouvrir l'email",systemUser:"Système",searchPlaceholder:"Rechercher expéditeur, objet...",reply:"Répondre",forward:"Transférer",cc:"Cc",subject:"Objet",backToInbox:"Retour à la boîte",newContact:"Nouveau contact",unqualified:"Non qualifié",createLead:"Créer un lead",openSale:"Ouvrir la vente",linkedToSale:"Lié à une vente",deleteEmail:"Supprimer l'email",deleteConfirm:"Supprimer cet email ?",emailDeleted:"Email supprimé",attachments:"Pièces jointes",downloadAttachment:"Télécharger la pièce jointe",qualifyAll:"Qualifier tous",qualifyingAll:"Analyse...",qualifyDone:"Terminé ! {leads} leads créés, {skipped} ignorés.",qualifyFailed:"Ãchec de la qualification par lots",bookingReplyTo:"Adresse de réponse pour réservations",bookingReplyToHelp:"Cette adresse sera utilisée comme adresse de réponse sur les e-mails de confirmation de réservation.",bookingReplyToPlaceholder:"ex. [email protected]"},it:{title:"Posta in arrivo",inboxHelp:"Ricevi e gestisci le email direttamente in Salesmate.",noEmails:"Nessuna email in arrivo.",unknownSender:"Mittente sconosciuto",noSubject:"(Nessun oggetto)",matched:"associato",unmatched:"Non associato",from:"Da",to:"A",received:"Ricevuto",noBody:"Nessun contenuto.",linkToContact:"Collega al contatto",link:"Collega",selectContact:"Seleziona contatto...",linkedSuccess:"Email collegata al contatto",aliasNotAvailable:"Questo alias è già in uso.",aliasReserved:"Questo alias è riservato.",inboxAlias:"Alias casella",inboxEnabled:"Attiva casella",inboxAddress:"Indirizzo casella",inboxHelperText:"Inoltra le email a questo indirizzo per salvarle in Salesmate.",notConfigured:"Non configurato",copyAddress:"Copia indirizzo",addressCopied:"Indirizzo copiato",aliasPlaceholder:"es. la-tua-azienda",aliasFormatError:"Solo lettere minuscole, numeri e trattini (3-40 caratteri).",inbox:"E-mail",openEmail:"Apri email",systemUser:"Sistema",searchPlaceholder:"Cerca mittente, oggetto...",reply:"Rispondi",forward:"Inoltra",cc:"Cc",subject:"Oggetto",backToInbox:"Torna alla posta",newContact:"Nuovo contatto",unqualified:"Non qualificato",createLead:"Crea lead",openSale:"Apri vendita",linkedToSale:"Collegato a vendita",deleteEmail:"Elimina email",deleteConfirm:"Eliminare questa email?",emailDeleted:"Email eliminata",attachments:"Allegati",downloadAttachment:"Scarica allegato",qualifyAll:"Qualifica tutti",qualifyingAll:"Analisi...",qualifyDone:"Fatto! {leads} lead creati, {skipped} ignorati.",qualifyFailed:"Errore nella qualificazione batch",bookingReplyTo:"Indirizzo di risposta per prenotazioni",bookingReplyToHelp:"Questo indirizzo verrà usato come indirizzo di risposta nelle email di conferma prenotazione.",bookingReplyToPlaceholder:"es. [email protected]"}},Yy={en:{title:"Create Company",chooseType:"Choose company type",production:"Production",productionDesc:"A real company for your business",demo:"Demo",demoDesc:"A demo company with sample data",whatProducts:"What activities do you offer?",addProduct:"Add activity",productPlaceholder:"e.g. Northern Lights Tour",whatResourceTypes:"What types of equipment do you have?",addResourceType:"Add type",resourceTypePlaceholder:"e.g. Snowmobile",addPersonnel:"Add your first employees",addPerson:"Add person",personPlaceholder:"Name",skip:"Skip",finish:"Finish",languageAndCurrencyStep:"Language and Currency",languageAndCurrencyStepDesc:"Select the primary language for your content and the currency for pricing.",locationLabel:"Location",locationHelp:"Used for weather forecasts and map features.",locationPlaceholder:"e.g. Lofoten, Norway"},no:{title:"Opprett firma",chooseType:"Velg firmatype",production:"Produksjon",productionDesc:"Et e
478kte firma for din bedrift",demo:"Demo",demoDesc:"Et demofirma med eksempeldata",whatProducts:"Hvilke aktiviteter tilbyr dere?",addProduct:"Legg til aktivitet",productPlaceholder:"f.eks. Nordlystur",whatResourceTypes:"Hvilke typer utstyr har dere?",addResourceType:"Legg til type",resourceTypePlaceholder:"f.eks. Snøscooter",addPersonnel:"Legg til dine første ansatte",addPerson:"Legg til person",personPlaceholder:"Navn",skip:"Hopp over",finish:"Fullfør",languageAndCurrencyStep:"SprÃ¥k og valuta",languageAndCurrencyStepDesc:"Velg primærsprÃ¥k for innhold og valuta for priser.",locationLabel:"Lokasjon",locationHelp:"Brukes til værmelding og kartfunksjoner.",locationPlaceholder:"f.eks. Lofoten, Bodø, Voss"},de:{title:"Firma erstellen",chooseType:"Firmentyp wählen",production:"Produktion",productionDesc:"Eine echte Firma für Ihr Unternehmen",demo:"Demo",demoDesc:"Eine Demofirma mit Beispieldaten",whatProducts:"Welche Aktivitäten bieten Sie an?",addProduct:"Aktivität hinzufügen",productPlaceholder:"z.B. Nordlichttour",whatResourceTypes:"Welche Arten von Ausrüstung haben Sie?",addResourceType:"Typ hinzufügen",resourceTypePlaceholder:"z.B. Schneemobil",addPersonnel:"Fügen Sie Ihre ersten Mitarbeiter hinzu",addPerson:"Person hinzufügen",personPlaceholder:"Name",skip:"Ãberspringen",finish:"Fertigstellen",languageAndCurrencyStep:"Sprache und Währung",languageAndCurrencyStepDesc:"Wählen Sie die Primärsprache für Inhalte und die Währung für Preise.",locationLabel:"Standort",locationHelp:"Wird für Wettervorhersagen und Kartenfunktionen verwendet.",locationPlaceholder:"z.B. Lofoten, Norwegen"},es:{title:"Crear empresa",chooseType:"Elegir tipo de empresa",production:"Producción",productionDesc:"Una empresa real para su negocio",demo:"Demo",demoDesc:"Una empresa demo con datos de ejemplo",whatProducts:"¿Qué actividades ofrece?",addProduct:"Añadir actividad",productPlaceholder:"ej. Tour de auroras boreales",whatResourceTypes:"¿Qué tipos de equipamiento tiene?",addResourceType:"Añadir tipo",resourceTypePlaceholder:"ej. Moto de nieve",addPersonnel:"Añada sus primeros empleados",addPerson:"Añadir persona",personPlaceholder:"Nombre",skip:"Omitir",finish:"Finalizar",languageAndCurrencyStep:"Idioma y moneda",languageAndCurrencyStepDesc:"Seleccione el idioma principal para su contenido y la moneda para precios.",locationLabel:"Ubicación",locationHelp:"Se usa para pronósticos del tiempo y funciones de mapa.",locationPlaceholder:"ej. Lofoten, Noruega"},fr:{title:"Créer une entreprise",chooseType:"Choisir le type d'entreprise",production:"Production",productionDesc:"Une vraie entreprise pour votre activité",demo:"Démo",demoDesc:"Une entreprise démo avec des données d'exemple",whatProducts:"Quelles activités proposez-vous ?",addProduct:"Ajouter une activité",productPlaceholder:"ex. Tour des aurores boréales",whatResourceTypes:"Quels types d'équipement avez-vous ?",addResourceType:"Ajouter un type",resourceTypePlaceholder:"ex. Motoneige",addPersonnel:"Ajoutez vos premiers employés",addPerson:"Ajouter une personne",personPlaceholder:"Nom",skip:"Passer",finish:"Terminer",languageAndCurrencyStep:"Langue et devise",languageAndCurrencyStepDesc:"Sélectionnez la langue principale pour votre contenu et la devise pour les prix.",locationLabel:"Localisation",locationHelp:"Utilisé pour les prévisions météo et les fonctions de carte.",locationPlaceholder:"ex. Lofoten, Norvège"},it:{title:"Crea azienda",chooseType:"Scegli il tipo di azienda",production:"Produzione",productionDesc:"Un'azienda reale per la tua attività ",demo:"Demo",demoDesc:"Un'azienda demo con dati di esempio",whatProducts:"Quali attività offrite?",addProduct:"Aggiungi attività ",productPlaceholder:"es. Tour dell'aurora boreale",whatResourceTypes:"Quali tipi di attrezzatura avete?",addResourceType:"Aggiungi tipo",resourceTypePlaceholder:"es. Motoslitta",addPersonnel:"Aggiungi i tuoi primi dipendenti",addPerson:"Aggiungi persona",personPlaceholder:"Nome",skip:"Salta",finish:"Completa",languageAndCurrencyStep:"Lingua e valuta",languageAndCurrencyStepDesc:"Seleziona la lingua principale per i contenuti e la valuta per i prezzi.",locationLabel:"Posizione",locationHelp:"Utilizzato per le previsioni meteo e le funzioni mappa.",locationPlaceholder:"es. Lofoten, Norvegia"}},Qy={en:{title:"Projects",newProject:"New project",editProject:"Edit project",description:"Description",period:"Period",budget:"Budget",status:"Status",draft:"Draft",active:"Active",completed:"Completed",cancelled:"Cancelled",events:"Events",sales:"Sales",overview:"Overview",noProjectsYet:"No projects yet.",confirmedRevenue:"Confirmed revenue",selectProject:"Select project",noProject:"No project"},no:{title:"Prosjekter",newProject:"Nytt prosjekt",editProject:"Rediger prosjekt",description:"Beskrivelse",period:"Periode",budget:"Budsjett",status:"Status",draft:"Utkast",active:"Aktiv",completed:"Fullført",cancelled:"Avlyst",events:"Aktiviteter",sales:"Salg",overview:"Oversikt",noProjectsYet:"Ingen prosjekter ennÃ¥.",confirmedRevenue:"Bekreftet omsetning",selectProject:"Velg prosjekt",noProject:"Inget prosjekt"},de:{title:"Projekte",newProject:"Neues Projekt",editProject:"Projekt bearbeiten",description:"Beschreibung",period:"Zeitraum",budget:"Budget",status:"Status",draft:"Entwurf",active:"Aktiv",completed:"Abgeschlossen",cancelled:"Abgesagt",events:"Termine",sales:"Verkäufe",overview:"Ãbersicht",noProjectsYet:"Noch keine Projekte.",confirmedRevenue:"Bestätigter Umsatz",selectProject:"Projekt wählen",noProject:"Kein Projekt"},es:{title:"Proyectos",newProject:"Nuevo proyecto",editProject:"Editar proyecto",description:"Descripción",period:"PerÃodo",budget:"Presupuesto",status:"Estado",draft:"Borrador",active:"Activo",completed:"Completado",cancelled:"Cancelado",events:"Eventos",sales:"Ventas",overview:"Resumen",noProjectsYet:"Aún no hay proyectos.",confirmedRevenue:"Ingresos confirmados",selectProject:"Seleccionar proyecto",noProject:"Sin proyecto"},fr:{title:"Projets",newProject:"Nouveau projet",editProject:"Modifier le projet",description:"Description",period:"Période",budget:"Budget",status:"Statut",draft:"Brouillon",active:"Actif",completed:"Terminé",cancelled:"Annulé",events:"Ãv
478énements",sales:"Ventes",overview:"Aperçu",noProjectsYet:"Aucun projet.",confirmedRevenue:"Revenu confirmé",selectProject:"Sélectionner un projet",noProject:"Aucun projet"},it:{title:"Progetti",newProject:"Nuovo progetto",editProject:"Modifica progetto",description:"Descrizione",period:"Periodo",budget:"Budget",status:"Stato",draft:"Bozza",active:"Attivo",completed:"Completato",cancelled:"Annullato",events:"Eventi",sales:"Vendite",overview:"Panoramica",noProjectsYet:"Nessun progetto.",confirmedRevenue:"Ricavi confermati",selectProject:"Seleziona progetto",noProject:"Nessun progetto"}},Jy={en:{title:"Chat",subtitle:"Ask about capacity, availability and planning",emptyState:"Ask a question about capacity or availability",examplePrompt:"Example: Do we have capacity for Northern Lights Tour on 2026-03-12 at 18:00?",thinking:"Thinking...",inputPlaceholder:"Write a message...",listening:"Listening...",transcribing:"Transcribing...",micPermissionDenied:"Microphone permission denied. Check browser settings.",transcriptionFailed:"Transcription failed. Try again."},no:{title:"Chat",subtitle:"Spør om kapasitet, tilgjengelighet og planlegging",emptyState:"Still et spørsmÃ¥l om kapasitet eller tilgjengelighet",examplePrompt:"Eksempel: Har vi kapasitet for nordlystur 2026-03-12 kl 18:00?",thinking:"Tenker...",inputPlaceholder:"Skriv en melding...",listening:"Lytter...",transcribing:"Transkriberer...",micPermissionDenied:"Mikrofontillatelse mangler. Sjekk nettleserinnstillingene.",transcriptionFailed:"Transkribering feilet. Prøv igjen."},de:{title:"Chat",subtitle:"Fragen zu Kapazität, Verfügbarkeit und Planung",emptyState:"Stellen Sie eine Frage zu Kapazität oder Verfügbarkeit",examplePrompt:"Beispiel: Haben wir Kapazität für eine Nordlichttour am 12.03.2026 um 18:00?",thinking:"Denke nach...",inputPlaceholder:"Nachricht schreiben...",listening:"Höre zu...",transcribing:"Transkribiere...",micPermissionDenied:"Mikrofonzugriff verweigert. Ãberprüfen Sie die Browsereinstellungen.",transcriptionFailed:"Transkription fehlgeschlagen. Versuchen Sie es erneut."},es:{title:"Chat",subtitle:"Pregunte sobre capacidad, disponibilidad y planificación",emptyState:"Haga una pregunta sobre capacidad o disponibilidad",examplePrompt:"Ejemplo: ¿Tenemos capacidad para la excursión de auroras boreales el 12/03/2026 a las 18:00?",thinking:"Pensando...",inputPlaceholder:"Escribir un mensaje...",listening:"Escuchando...",transcribing:"Transcribiendo...",micPermissionDenied:"Permiso de micrófono denegado. Verifique la configuración del navegador.",transcriptionFailed:"La transcripción falló. Inténtelo de nuevo."},fr:{title:"Chat",subtitle:"Posez des questions sur la capacité, la disponibilité et la planification",emptyState:"Posez une question sur la capacité ou la disponibilité",examplePrompt:"Exemple : Avons-nous de la capacité pour une excursion aurores boréales le 12/03/2026 à 18h00 ?",thinking:"Réflexion...",inputPlaceholder:"Ãcrire un message...",listening:"Ãcoute...",transcribing:"Transcription...",micPermissionDenied:"Autorisation du microphone refusée. Vérifiez les paramètres du navigateur.",transcriptionFailed:"La transcription a échoué. Réessayez."},it:{title:"Chat",subtitle:"Chiedi informazioni su capacità , disponibilità e pianificazione",emptyState:"Fai una domanda su capacità o disponibilità ",examplePrompt:"Esempio: Abbiamo capacità per il tour dell'aurora boreale il 12/03/2026 alle 18:00?",thinking:"Sto pensando...",inputPlaceholder:"Scrivi un messaggio...",listening:"In ascolto...",transcribing:"Trascrizione...",micPermissionDenied:"Autorizzazione microfono negata. Controlla le impostazioni del browser.",transcriptionFailed:"Trascrizione fallita. Riprova."}},Zy={en:{title:"Sales",programDay:"Day",dayNotePlaceholder:"E.g. Arrival day, transfer to hotel...",activityNote:"Note",activityNotePlaceholder:"Add a note for this activity...",shareItinerary:"Itinerary",itineraryLinkCopied:"Itinerary link copied!",newSale:"New sale",editSale:"Edit sale",noSalesYet:"No sales yet.",searchSale:"Search sales...",customer:"Customer",customerName:"Customer name",customerEmail:"Email address",customerPhone:"Phone number",status:"Status",items:"Activities",customerProgram:"Itinerary",addItem:"Add activity",removeItem:"Remove activity",quantity:"Quantity",lead:"Lead",leadDesc:"New inquiry. Not yet evaluated.",qualified:"Qualified",qualifiedDesc:"Opportunity validated. Planning started.",proposal:"Proposal",proposalDesc:"Proposal sent to customer.",closedWon:"Closed Won",closedWonDesc:"Customer accepted. Events confirmed.",closedLost:"Closed Lost",closedLostDesc:"Opportunity not won.",filterByStatus:"Filter by status",allStatuses:"All statuses",overview:"Overview",linkedEvents:"Linked events",notes:"Notes",created:"Created",updated:"Updated",selectActivity:"Select activity",activity:"Activity",participants:"Participants",plan:"Plan",copyLink:"Copy link",confirmSale:"Confirm & lock plan",confirmSaleDesc:"This will confirm the sale and lock all planned events.",tentativeEventsHint:"Tentative events are created automatically when date/time is set.",newLead:"New lead",convertToSale:"Convert to sale",openSale:"Open sale",convert
478ing:"Converting...",converted:"Converted to sale",pipeline:"Pipeline",listView:"List",pipelineView:"Pipeline",emptyPipeline:"No sales in this stage",emptyLead:"No leads",emptyQualified:"No qualified",emptyProposal:"No proposals",emptyClosedWon:"No closed won",markClosedLost:"Mark as lost",valueLabel:"Value",nextStep:"Next step",lastActivity:"Last activity",daysAgo:"d ago",today:"Today",yesterday:"Yesterday",deleteConfirm:"Are you sure you want to delete this sale?",guests:"guests",activitiesCount:"activities",amountNotSet:"Amount not set",noActivitiesAdded:"No activities added",colDescLead:"New inquiries",colDescQualified:"Planning in progress",colDescProposal:"Offer sent",colDescClosedWon:"Confirmed bookings",dealsLabel:"deals",wizardStepCustomer:"Customer & contact",wizardStepActivity:"Activity & pricing",selectContact:"Select contact",noContact:"No contact",dateAndTime:"Date & time",duration:"Duration",pricePerPerson:"Price per person",totalPrice:"Total price",overridePrice:"Override price",overridePriceHint:"Set a custom total instead of calculated price",calculatedPrice:"Calculated",activitySubtotal:"Activity subtotal",totalAmount:"Total amount",customPrice:"Custom price",perPerson:"per person",back:"Back",createLead:"Create lead",selectActivityFirst:"Select an activity to configure pricing",noPricesConfigured:"No prices configured for this activity",addActivity:"Add activity",startTime:"Start time",endTime:"End time",startDate:"Start date",endDate:"End date",description:"Description",descriptionPlaceholder:"Add notes or description...",leadTitle:"Title",leadTitlePlaceholder:"E.g. Northern lights tour for Acme Corp",notesPlaceholder:"Add internal notes...",attachments:"Attachments",dropFilesHere:"Drop files here or click to upload",directPrice:"Price",priceEstimate:"Price estimate",directPricePlaceholder:"Enter amount",numberOfPersons:"Number of persons",orAddActivities:"Or add activities",wizardStepDetails:"Details & pricing",showMore:"Show more",showLess:"Show less",analyzeStep:"Analyze",analyzeStepLabel:"Paste inquiry",analyzePlaceholder:"Paste the customer inquiry here...",analyzeHint:"Paste a customer email or message and let AI fill in the details. The AI will automatically extract customer information, activities, dates, and number of persons.",analyzing:"Analyzing inquiry...",analyzeFailed:"Could not analyze the inquiry. Please fill in the fields manually.",analyzeEmpty:"Please paste an inquiry text to analyze.",responsible:"Responsible",selectResponsible:"Select responsible",noResponsible:"No responsible",customerSingular:"Customer",contactSingular:"Contact",noteSingular:"Note",programSummary:"Program summary",programSummaryPlaceholder:"Brief description of the itinerary...",programStartDate:"First date",programEndDate:"Last date"},no:{title:"Salg",programDay:"Dag",dayNotePlaceholder:"F.eks. Ankomstdag, transfer til hotell...",activityNote:"Notat",activityNotePlaceholder:"Legg til et notat for denne aktiviteten...",shareItinerary:"Reiseprogram",itineraryLinkCopied:"Lenke til reiseprogram kopiert!",newSale:"Nytt salg",editSale:"Rediger salg",noSalesYet:"Ingen salg ennå.",searchSale:"Søk i salg...",customer:"Kunde",customerName:"Kundenavn",customerEmail:"Epostadresse",customerPhone:"Telefonnummer",status:"Status",items:"Aktiviteter",customerProgram:"Reiseprogram",addItem:"Legg til aktivitet",removeItem:"Fjern aktivitet",quantity:"Antall",lead:"Lead",leadDesc:"Ny forespørsel. Ikke vurdert ennå.",qualified:"Kvalifisert",qualifiedDesc:"Muligheten er validert. Planlegging startet.",proposal:"Tilbud",proposalDesc:"Tilbud sendt til kunden.",closedWon:"Vunnet",closedWonDesc:"Kunden har akseptert. Hendelser bekreftet.",closedLost:"Tapt",closedLostDesc:"Muligheten ble ikke vunnet.",filterByStatus:"Filtrer på status",allStatuses:"Alle statuser",overview:"Oversikt",linkedEvents:"Koblede aktiviteter",notes:"Notater",created:"Opprettet",updated:"Oppdatert",selectActivity:"Velg aktivitet",activity:"Aktivitet",participants:"Deltakere",plan:"Plan",copyLink:"Kopier lenke",confirmSale:"Bekreft og lås plan",confirmSaleDesc:"Dette bekrefter salget og låser alle planlagte hendelser.",tentativeEventsHint:"Tentative he
478ndelser opprettes automatisk nÃ¥r tidspunkt er satt.",newLead:"Ny lead",convertToSale:"Konverter til salg",openSale:"Ã
pne salg",converting:"Konverterer...",converted:"Konvertert til salg",pipeline:"Pipeline",listView:"Liste",pipelineView:"Pipeline",emptyPipeline:"Ingen salg i dette steget",emptyLead:"Ingen leads",emptyQualified:"Ingen kvalifiserte",emptyProposal:"Ingen tilbud",emptyClosedWon:"Ingen vunnede",markClosedLost:"Marker som tapt",valueLabel:"Verdi",nextStep:"Neste steg",lastActivity:"Siste aktivitet",daysAgo:"d siden",today:"I dag",yesterday:"I gÃ¥r",deleteConfirm:"Er du sikker pÃ¥ at du vil slette dette salget?",guests:"gjester",activitiesCount:"aktiviteter",amountNotSet:"Beløp ikke satt",noActivitiesAdded:"Ingen aktiviteter lagt til",colDescLead:"Nye henvendelser",colDescQualified:"Planlegging pÃ¥gÃ¥r",colDescProposal:"Tilbud sendt",colDescClosedWon:"Bekreftede bookinger",dealsLabel:"salg",wizardStepCustomer:"Kunde og kontakt",wizardStepActivity:"Aktivitet og pris",selectContact:"Velg kontakt",noContact:"Ingen kontakt",dateAndTime:"Dato og tid",duration:"Varighet",pricePerPerson:"Pris per person",totalPrice:"Totalpris",overridePrice:"Overstyr pris",overridePriceHint:"Sett en egendefinert total i stedet for beregnet pris",calculatedPrice:"Beregnet",activitySubtotal:"Sum aktivitet",totalAmount:"Totalbeløp",customPrice:"Egendefinert pris",perPerson:"per person",back:"Tilbake",createLead:"Opprett lead",selectActivityFirst:"Velg en aktivitet for Ã¥ konfigurere priser",noPricesConfigured:"Ingen priser konfigurert for denne aktiviteten",addActivity:"Legg til aktivitet",startTime:"Starttid",endTime:"Sluttid",startDate:"Startdato",endDate:"Sluttdato",description:"Beskrivelse",descriptionPlaceholder:"Legg til notater eller beskrivelse...",leadTitle:"Tittel",leadTitlePlaceholder:"F.eks. Nordlystur for Acme AS",notesPlaceholder:"Legg til interne notater...",attachments:"Vedlegg",dropFilesHere:"Slipp filer her eller klikk for Ã¥ laste opp",directPrice:"Pris",priceEstimate:"Prisestimat",directPricePlaceholder:"Skriv inn beløp",numberOfPersons:"Antall personer",orAddActivities:"Eller legg til aktiviteter",wizardStepDetails:"Detaljer og prising",showMore:"Vis mer",showLess:"Vis mindre",analyzeStep:"Analyser",analyzeStepLabel:"Lim inn forespørsel",analyzePlaceholder:"Lim inn kundeforespørselen her...",analyzeHint:"Lim inn en e-post eller melding fra kunden og la AI fylle inn detaljene. AI-en vil automatisk trekke ut kundeinformasjon, aktiviteter, datoer og antall personer.",analyzing:"Analyserer forespørsel...",analyzeFailed:"Kunne ikke analysere forespørselen. Vennligst fyll inn feltene manuelt.",analyzeEmpty:"Lim inn en forespørselstekst for Ã¥ analysere.",responsible:"Ansvarlig",selectResponsible:"Velg ansvarlig",noResponsible:"Ingen ansvarlig",customerSingular:"Kunde",contactSingular:"Kontakt",noteSingular:"Notat",programSummary:"Programsammendrag",programSummaryPlaceholder:"Kort beskrivelse av reiseprogrammet...",programStartDate:"Første dato",programEndDate:"Siste dato"},de:{title:"Verkauf",programDay:"Tag",dayNotePlaceholder:"Z.B. Anreisetag, Transfer zum Hotel...",activityNote:"Notiz",activityNotePlaceholder:"Notiz für diese Aktivität hinzufügen...",shareItinerary:"Reiseplan",itineraryLinkCopied:"Link zum Reiseplan kopiert!",newSale:"Neuer Verkauf",editSale:"Verkauf bearbeiten",noSalesYet:"Noch keine Verkäufe.",searchSale:"Verkäufe suchen...",customer:"Kunde",customerName:"Kundenname",customerEmail:"E-Mail-Adresse",customerPhone:"Telefonnummer",status:"Status",items:"Aktivitäten",customerProgram:"Reiseplan",addItem:"Aktivität hinzufügen",removeItem:"Aktivität entfernen",quantity:"Menge",lead:"Lead",leadDesc:"Neue Anfrage. Noch nicht bewertet.",qualified:"Qualifiziert",qualifiedDesc:"Chance validiert. Planung begonnen.",proposal:"Angebot",proposalDesc:"Angebot an Kunden gesendet.",closedWon:"Gewonnen",closedWonDesc:"Kunde hat akzeptiert. Termine bestätigt.",closedLost:"Verloren",closedLostDesc:"Chance nicht gewonnen.",filterByStatus:"Nach Status filtern",allStatuses:"Alle Status",overview:"Ãbersicht",linkedEvents:"Verknüpfte Termine",notes:"Notizen",created:"Erstellt",updated:"Aktualisiert",selectActivity:"Aktivität wählen",activity:"Aktivität",participants:"Teilnehmer",plan:"Plan",copyLink:"Link kopieren",confirmSale:"Bestätigen & Plan sperren",confirmSaleDesc:"Dies bestätigt den Verkauf und sperrt alle geplanten Termine.",tentativeEventsHint:"Vorläufige Termine werden automatisch erstellt, wenn Datum/Uhrzeit gesetzt ist.",newLead:"Neuer Lead",convertToSale:"In Verkauf umwandeln",openSale:"Verkauf öffnen",convert
478ing:"Wird konvertiert...",converted:"In Verkauf umgewandelt",pipeline:"Pipeline",listView:"Liste",pipelineView:"Pipeline",emptyPipeline:"Keine Verkäufe in dieser Phase",emptyLead:"Keine Leads",emptyQualified:"Keine qualifizierten",emptyProposal:"Keine Angebote",emptyClosedWon:"Keine gewonnenen",markClosedLost:"Als verloren markieren",valueLabel:"Wert",nextStep:"Nächster Schritt",lastActivity:"Letzte Aktivität",daysAgo:"T her",today:"Heute",yesterday:"Gestern",deleteConfirm:"Sind Sie sicher, dass Sie diesen Verkauf löschen möchten?",guests:"Gäste",activitiesCount:"Aktivitäten",amountNotSet:"Betrag nicht festgelegt",noActivitiesAdded:"Keine Aktivitäten hinzugefügt",colDescLead:"Neue Anfragen",colDescQualified:"Planung läuft",colDescProposal:"Angebot gesendet",colDescClosedWon:"Bestätigte Buchungen",dealsLabel:"Deals",wizardStepCustomer:"Kunde & Kontakt",wizardStepActivity:"Aktivität & Preis",selectContact:"Kontakt wählen",noContact:"Kein Kontakt",dateAndTime:"Datum & Uhrzeit",duration:"Dauer",pricePerPerson:"Preis pro Person",totalPrice:"Gesamtpreis",overridePrice:"Preis überschreiben",overridePriceHint:"Eigenen Gesamtpreis statt berechnetem Preis festlegen",calculatedPrice:"Berechnet",activitySubtotal:"Aktivitätssumme",totalAmount:"Gesamtbetrag",customPrice:"Eigener Preis",perPerson:"pro Person",back:"Zurück",createLead:"Lead erstellen",selectActivityFirst:"Aktivität wählen, um Preise zu konfigurieren",noPricesConfigured:"Keine Preise für diese Aktivität konfiguriert",addActivity:"Aktivität hinzufügen",startTime:"Startzeit",endTime:"Endzeit",startDate:"Startdatum",endDate:"Enddatum",description:"Beschreibung",descriptionPlaceholder:"Notizen oder Beschreibung hinzufügen...",attachments:"Anhänge",dropFilesHere:"Dateien hier ablegen oder klicken zum Hochladen",directPrice:"Preis",priceEstimate:"Preisschätzung",directPricePlaceholder:"Betrag eingeben",numberOfPersons:"Anzahl Personen",orAddActivities:"Oder Aktivitäten hinzufügen",wizardStepDetails:"Details & Preisgestaltung",showMore:"Mehr anzeigen",showLess:"Weniger anzeigen",leadTitle:"Titel",leadTitlePlaceholder:"Z.B. Nordlichttour für Acme GmbH",notesPlaceholder:"Interne Notizen hinzufügen...",analyzeStep:"Analysieren",analyzeStepLabel:"Anfrage einfügen",analyzePlaceholder:"Fügen Sie die Kundenanfrage hier ein...",analyzeHint:"Fügen Sie eine Kunden-E-Mail oder Nachricht ein und lassen Sie KI die Details ausfüllen. Die KI extrahiert automatisch Kundeninformationen, Aktivitäten, Daten und Personenzahl.",analyzing:"Anfrage wird analysiert...",analyzeFailed:"Die Anfrage konnte nicht analysiert werden. Bitte füllen Sie die Felder manuell aus.",analyzeEmpty:"Bitte fügen Sie einen Anfragetext zum Analysieren ein.",responsible:"Verantwortlich",selectResponsible:"Verantwortlichen wählen",noResponsible:"Kein Verantwortlicher",customerSingular:"Kunde",contactSingular:"Kontakt",noteSingular:"Notiz",programSummary:"Programmzusammenfassung",programSummaryPlaceholder:"Kurze Beschreibung des Reiseplans...",programStartDate:"Erstes Datum",programEndDate:"Letztes Datum"},es:{title:"Ventas",programDay:"DÃa",dayNotePlaceholder:"Ej. DÃa de llegada, traslado al hotel...",activityNote:"Nota",activityNotePlaceholder:"Añadir una nota para esta actividad...",shareItinerary:"Itinerario",itineraryLinkCopied:"Enlace del itinerario copiado!",newSale:"Nueva venta",editSale:"Editar venta",noSalesYet:"Aún no hay ventas.",searchSale:"Buscar ventas...",customer:"Cliente",customerName:"Nombre del cliente",customerEmail:"Correo electrónico",customerPhone:"Teléfono",status:"Estado",items:"Actividades",customerProgram:"Itinerario",addItem:"Añadir actividad",removeItem:"Eliminar actividad",quantity:"Cantidad",lead:"Lead",leadDesc:"Nueva consulta. Aún no evaluada.",qualified:"Calificado",qualifiedDesc:"Oportunidad validada. Planificación iniciada.",proposal:"Propuesta",proposalDesc:"Propuesta enviada al cliente.",closedWon:"Ganada",closedWonDesc:"Cliente aceptó. Eventos confirmados.",closedLost:"Perdida",closedLostDesc:"Oportunidad no ganada.",filterByStatus:"Filtrar por estado",allStatuses:"Todos los estados",overview:"Resumen",linkedEvents:"Eventos vinculados",notes:"Notas",created:"Creado",updated:"Actualizado",selectActivity:"Seleccionar actividad",activity:"Actividad",participants:"Participantes",plan:"Plan",copyLink:"Copiar enlace",confirmSale:"Confirmar y bloquear plan",confirmSaleDesc:"Esto confirmará la venta y bloqueará todos los eventos planificados.",tentativeEventsHint:"Los eventos tentativos se
478crean automáticamente cuando se establece fecha/hora.",newLead:"Nuevo lead",convertToSale:"Convertir a venta",openSale:"Abrir venta",converting:"Convirtiendo...",converted:"Convertido a venta",pipeline:"Pipeline",listView:"Lista",pipelineView:"Pipeline",emptyPipeline:"Sin ventas en esta etapa",emptyLead:"Sin leads",emptyQualified:"Sin calificados",emptyProposal:"Sin propuestas",emptyClosedWon:"Sin ganadas",markClosedLost:"Marcar como perdida",valueLabel:"Valor",nextStep:"Siguiente paso",lastActivity:"Ãltima actividad",daysAgo:"d atrás",today:"Hoy",yesterday:"Ayer",deleteConfirm:"¿Está seguro de que desea eliminar esta venta?",guests:"invitados",activitiesCount:"actividades",amountNotSet:"Monto no establecido",noActivitiesAdded:"Sin actividades añadidas",colDescLead:"Nuevas consultas",colDescQualified:"Planificación en curso",colDescProposal:"Oferta enviada",colDescClosedWon:"Reservas confirmadas",dealsLabel:"negocios",wizardStepCustomer:"Cliente y contacto",wizardStepActivity:"Actividad y precio",selectContact:"Seleccionar contacto",noContact:"Sin contacto",dateAndTime:"Fecha y hora",duration:"Duración",pricePerPerson:"Precio por persona",totalPrice:"Precio total",overridePrice:"Anular precio",overridePriceHint:"Establezca un total personalizado en lugar del precio calculado",calculatedPrice:"Calculado",activitySubtotal:"Subtotal actividad",totalAmount:"Monto total",customPrice:"Precio personalizado",perPerson:"por persona",back:"Atrás",createLead:"Crear lead",selectActivityFirst:"Seleccione una actividad para configurar precios",noPricesConfigured:"No hay precios configurados para esta actividad",addActivity:"Añadir actividad",startTime:"Hora inicio",endTime:"Hora fin",startDate:"Fecha inicio",endDate:"Fecha fin",description:"Descripción",descriptionPlaceholder:"Añadir notas o descripción...",leadTitle:"TÃtulo",leadTitlePlaceholder:"Ej. Tour auroras para Acme Corp",notesPlaceholder:"Añadir notas internas...",attachments:"Adjuntos",dropFilesHere:"Suelte archivos aquà o haga clic para subir",directPrice:"Precio",priceEstimate:"Estimación de precio",directPricePlaceholder:"Introducir monto",numberOfPersons:"Número de personas",orAddActivities:"O añadir actividades",wizardStepDetails:"Detalles y precios",showMore:"Mostrar más",showLess:"Mostrar menos",analyzeStep:"Analizar",analyzeStepLabel:"Pegar consulta",analyzePlaceholder:"Pegue la consulta del cliente aquÃ...",analyzeHint:"Pegue un correo o mensaje del cliente y deje que la IA complete los detalles.",analyzing:"Analizando consulta...",analyzeFailed:"No se pudo analizar la consulta. Por favor complete los campos manualmente.",analyzeEmpty:"Por favor pegue un texto de consulta para analizar.",responsible:"Responsable",selectResponsible:"Seleccionar responsable",noResponsible:"Sin responsable",customerSingular:"Cliente",contactSingular:"Contacto",noteSingular:"Nota",programSummary:"Resumen del programa",programSummaryPlaceholder:"Breve descripción del itinerario...",programStartDate:"Primera fecha",programEndDate:"Ãltima fecha"},fr:{title:"Ventes",programDay:"Jour",dayNotePlaceholder:"Ex. Jour d'arrivée, transfert à l'hôtel...",activityNote:"Note",activityNotePlaceholder:"Ajouter une note pour cette activité...",shareItinerary:"Itinéraire",itineraryLinkCopied:"Lien de l'itinéraire copié !",newSale:"Nouvelle vente",editSale:"Modifier la vente",noSalesYet:"Aucune vente.",searchSale:"Rechercher des ventes...",customer:"Client",customerName:"Nom du client",customerEmail:"Adresse e-mail",customerPhone:"Téléphone",status:"Statut",items:"Activités",customerProgram:"Itinéraire",addItem:"Ajouter une activité",removeItem:"Supprimer l'activité",quantity:"Quantité",lead:"Lead",leadDesc:"Nouvelle demande. Pas encore évaluée.",qualified:"Qualifié",qualifiedDesc:"Opportunité validée. Planification démarrée.",proposal:"Proposition",proposalDesc:"Proposition envoyée au client.",closedWon:"Gagnée",closedWonDesc:"Client a accepté. Ãvénements confirmés.",closedLost:"Perdue",closedLostDesc:"Opportunité non gagnée.",filterByStatus:"Filtrer par statut",allStatuses:"Tous les statuts",overview:"Aperçu",linkedEvents:"Ãv
478énements liés",notes:"Notes",created:"Créé",updated:"Mis à jour",selectActivity:"Sélectionner une activité",activity:"Activité",participants:"Participants",plan:"Plan",copyLink:"Copier le lien",confirmSale:"Confirmer et verrouiller le plan",confirmSaleDesc:"Cela confirmera la vente et verrouillera tous les événements planifiés.",tentativeEventsHint:"Les événements provisoires sont créés automatiquement lorsque la date/heure est définie.",newLead:"Nouveau lead",convertToSale:"Convertir en vente",openSale:"Ouvrir la vente",converting:"Conversion...",converted:"Converti en vente",pipeline:"Pipeline",listView:"Liste",pipelineView:"Pipeline",emptyPipeline:"Aucune vente à cette étape",emptyLead:"Aucun lead",emptyQualified:"Aucun qualifié",emptyProposal:"Aucune proposition",emptyClosedWon:"Aucune gagnée",markClosedLost:"Marquer comme perdue",valueLabel:"Valeur",nextStep:"Prochaine étape",lastActivity:"Dernière activité",daysAgo:"j",today:"Aujourd'hui",yesterday:"Hier",deleteConfirm:"Ãtes-vous sûr de vouloir supprimer cette vente ?",guests:"invités",activitiesCount:"activités",amountNotSet:"Montant non défini",noActivitiesAdded:"Aucune activité ajoutée",colDescLead:"Nouvelles demandes",colDescQualified:"Planification en cours",colDescProposal:"Offre envoyée",colDescClosedWon:"Réservations confirmées",dealsLabel:"affaires",wizardStepCustomer:"Client et contact",wizardStepActivity:"Activité et tarification",selectContact:"Sélectionner un contact",noContact:"Aucun contact",dateAndTime:"Date et heure",duration:"Durée",pricePerPerson:"Prix par personne",totalPrice:"Prix total",overridePrice:"Remplacer le prix",overridePriceHint:"Définissez un total personnalisé au lieu du prix calculé",calculatedPrice:"Calculé",activitySubtotal:"Sous-total activité",totalAmount:"Montant total",customPrice:"Prix personnalisé",perPerson:"par personne",back:"Retour",createLead:"Créer un lead",selectActivityFirst:"Sélectionnez une activité pour configurer les prix",noPricesConfigured:"Aucun prix configuré pour cette activité",addActivity:"Ajouter une activité",startTime:"Heure début",endTime:"Heure fin",startDate:"Date début",endDate:"Date fin",description:"Description",descriptionPlaceholder:"Ajouter des notes ou une description...",leadTitle:"Titre",leadTitlePlaceholder:"Ex. Tour aurores boréales pour Acme Corp",notesPlaceholder:"Ajouter des notes internes...",attachments:"Pièces jointes",dropFilesHere:"Déposez des fichiers ici ou cliquez pour télécharger",directPrice:"Prix",priceEstimate:"Estimation de prix",directPricePlaceholder:"Entrer le montant",numberOfPersons:"Nombre de personnes",orAddActivities:"Ou ajouter des activités",wizardStepDetails:"Détails et tarification",showMore:"Voir plus",showLess:"Voir moins",analyzeStep:"Analyser",analyzeStepLabel:"Coller la demande",analyzePlaceholder:"Collez la demande client ici...",analyzeHint:"Collez un e-mail ou un message client et laissez l'IA remplir les détails.",analyzing:"Analyse de la demande...",analyzeFailed:"Impossible d'analyser la demande. Veuillez remplir les champs manuellement.",analyzeEmpty:"Veuillez coller un texte de demande à analyser.",responsible:"Responsable",selectResponsible:"Sélectionner un responsable",noResponsible:"Aucun responsable",customerSingular:"Client",contactSingular:"Contact",noteSingular:"Note",programSummary:"Résumé du programme",programSummaryPlaceholder:"Brève description de l'itinéraire...",programStartDate:"Première date",programEndDate:"Dernière date"},it:{title:"Vendite",programDay:"Giorno",dayNotePlaceholder:"Es. Giorno di arrivo, trasferimento in hotel...",activityNote:"Nota",activityNotePlaceholder:"Aggiungi una nota per questa attività ...",shareItinerary:"Itinerario",itineraryLinkCopied:"Link dell'itinerario copiato!",newSale:"Nuova vendita",editSale:"Modifica vendita",noSalesYet:"Nessuna vendita.",searchSale:"Cerca vendite...",customer:"Cliente",customerName:"Nome cliente",customerEmail:"Indirizzo email",customerPhone:"Telefono",status:"Stato",items:"Attività ",customerProgram:"Itinerario",addItem:"Agg
478iungi attività ",removeItem:"Rimuovi attività ",quantity:"Quantità ",lead:"Lead",leadDesc:"Nuova richiesta. Non ancora valutata.",qualified:"Qualificato",qualifiedDesc:"Opportunità validata. Pianificazione avviata.",proposal:"Proposta",proposalDesc:"Proposta inviata al cliente.",closedWon:"Vinta",closedWonDesc:"Cliente ha accettato. Eventi confermati.",closedLost:"Persa",closedLostDesc:"Opportunità non vinta.",filterByStatus:"Filtra per stato",allStatuses:"Tutti gli stati",overview:"Panoramica",linkedEvents:"Eventi collegati",notes:"Note",created:"Creato",updated:"Aggiornato",selectActivity:"Seleziona attività ",activity:"Attività ",participants:"Partecipanti",plan:"Piano",copyLink:"Copia link",confirmSale:"Conferma e blocca piano",confirmSaleDesc:"Questo confermerà la vendita e bloccherà tutti gli eventi pianificati.",tentativeEventsHint:"Gli eventi provvisori vengono creati automaticamente quando viene impostata la data/ora.",newLead:"Nuovo lead",convertToSale:"Converti in vendita",openSale:"Apri vendita",converting:"Conversione...",converted:"Convertito in vendita",pipeline:"Pipeline",listView:"Lista",pipelineView:"Pipeline",emptyPipeline:"Nessuna vendita in questa fase",emptyLead:"Nessun lead",emptyQualified:"Nessun qualificato",emptyProposal:"Nessuna proposta",emptyClosedWon:"Nessuna vinta",markClosedLost:"Segna come persa",valueLabel:"Valore",nextStep:"Prossimo passo",lastActivity:"Ultima attività ",daysAgo:"g fa",today:"Oggi",yesterday:"Ieri",deleteConfirm:"Sei sicuro di voler eliminare questa vendita?",guests:"ospiti",activitiesCount:"attività ",amountNotSet:"Importo non impostato",noActivitiesAdded:"Nessuna attività aggiunta",colDescLead:"Nuove richieste",colDescQualified:"Pianificazione in corso",colDescProposal:"Offerta inviata",colDescClosedWon:"Prenotazioni confermate",dealsLabel:"trattative",wizardStepCustomer:"Cliente e contatto",wizardStepActivity:"Attività e prezzo",selectContact:"Seleziona contatto",noContact:"Nessun contatto",dateAndTime:"Data e ora",duration:"Durata",pricePerPerson:"Prezzo per persona",totalPrice:"Prezzo totale",overridePrice:"Sovrascrivi prezzo",overridePriceHint:"Imposta un totale personalizzato al posto del prezzo calcolato",calculatedPrice:"Calcolato",activitySubtotal:"Subtotale attività ",totalAmount:"Importo totale",customPrice:"Prezzo personalizzato",perPerson:"per persona",back:"Indietro",createLead:"Crea lead",selectActivityFirst:"Seleziona un'attività per configurare i prezzi",noPricesConfigured:"Nessun prezzo configurato per questa attività ",addActivity:"Aggiungi attività ",startTime:"Ora inizio",endTime:"Ora fine",startDate:"Data inizio",endDate:"Data fine",description:"Descrizione",descriptionPlaceholder:"Aggiungi note o descrizione...",leadTitle:"Titolo",leadTitlePlaceholder:"Es. Tour aurora boreale per Acme Corp",notesPlaceholder:"Aggiungi note interne...",attachments:"Allegati",dropFilesHere:"Trascina file qui o clicca per caricare",directPrice:"Prezzo",priceEstimate:"Stima prezzo",directPricePlaceholder:"Inserisci importo",numberOfPersons:"Numero di persone",orAddActivities:"O aggiungi attività ",wizardStepDetails:"Dettagli e prezzi",showMore:"Mostra di più",showLess:"Mostra meno",analyzeStep:"Analizza",analyzeStepLabel:"Incolla richiesta",analyzePlaceholder:"Incolla la richiesta del cliente qui...",analyzeHint:"Incolla un'email o un messaggio del cliente e lascia che l'IA compili i dettagli.",analyzing:"Analisi della richiesta...",analyzeFailed:"Impossibile analizzare la richiesta. Compila i campi manualmente.",analyzeEmpty:"Incolla un testo di richiesta da analizzare.",responsible:"Responsabile",selectResponsible:"Seleziona responsabile",noResponsible:"Nessun responsabile",customerSingular:"Cliente",contactSingular:"Contatto",noteSingular:"Nota",programSummary:"Riepilogo del programma",programSummaryPlaceholder:"Breve descrizione del programma cliente...",programStartDate:"Prima data",programEndDate:"Ultima data"}},Xy={en:{refund:"Refund",refundConfirm:"Are you sure you want to refund {activity} ({amount})?",refunded:"Refunded",partiallyRefunded:"Partially refunded",refundSuccess:"Refund successful",refundError:"Refund failed",confirmed:"Confirmed",paid:"Paid",active:"Active",noActiveBookings:"No active bookings.",noRefundedBookings:"No refunded bookings.",noBookingsYet:"No bookings yet.",searchPlaceholder:"Search name, email, code...",processing:"Processing",refundAll:"Refund all",refundActivity:"Refund activity",refundEntireBooking:"Refund entire booking",refundAllConfirm:"Are you sure you want to refund all {count} activities ({amount})?",cancel:"Cancel",total:"Total",contact:"Contact",tickets:"Tickets",noLines:"No lines",code:"Booking ref.",customer:"Customer",activity:"Activity",time:"Time",amount:"Amount",ordered:"Ordered",bookings:"Bookings",yearsOld:"years",activities:"activities",bookingDetails:"Booking details",paymentHistory:"Payment history",paymentMadeBy:"Payment received from {company}",paymentHistoryTitle:"Payment history",noPaymentLogs:"No payment events found.",paymentEvent:{"checkout.session.completed":"Payment c
478ompleted","checkout.session.create_failed":"Payment failed","checkout.internal_error":"Internal error","refund.created":"Refund issued","refund.failed":"Refund failed","charge.refunded":"Charge refunded","payment_intent.succeeded":"Payment succeeded","payment_intent.payment_failed":"Payment failed","checkout.session.expired":"Checkout expired","partner_payment.received":"Payment received from","partner_payment.refunded":"Payment refunded by"},addBooking:"New booking",manualBadge:"Manual",paidManualBadge:"Paid (manual)",weOwePartner:"We owe partner",partnerOwesUs:"Partner owes us",period:"Period",allTime:"All time",thisMonth:"This month",lastMonth:"Last month",last3Months:"Last 3 months",customRange:"Custom range",from:"From",to:"To",manualPaymentMethod:{card:"Card",invoice:"Invoice",card_terminal:"Terminal"},journalEntries:"Accounting",prepaymentEntry:"Prepayment (booking)",revenueEntry:"Revenue recognition",refundEntry:"Refund reversal",debit:"Debit",credit:"Credit"},no:{refund:"Refunder",refundConfirm:"Er du sikker pÃ¥ at du vil refundere {activity} ({amount})?",refunded:"Refundert",partiallyRefunded:"Delvis refundert",refundSuccess:"Refundering vellykket",refundError:"Refundering feilet",confirmed:"Bekreftet",paid:"Betalt",active:"Aktive",noActiveBookings:"Ingen aktive bookinger.",noRefundedBookings:"Ingen refunderte bookinger.",noBookingsYet:"Ingen bookinger ennÃ¥.",searchPlaceholder:"Søk navn, e-post, kode...",processing:"Behandler",refundAll:"Refunder alle",refundActivity:"Refunder aktivitet",refundEntireBooking:"Refunder hele bookingen",refundAllConfirm:"Er du sikker pÃ¥ at du vil refundere alle {count} aktiviteter ({amount})?",cancel:"Avbryt",total:"Totalt",contact:"Kontakt",tickets:"Billetter",noLines:"Ingen linjer",code:"Bookingref.",customer:"Kunde",activity:"Aktivitet",time:"Tidspunkt",amount:"Beløp",ordered:"Bestilt",bookings:"Bookinger",yearsOld:"Ã¥r",activities:"aktiviteter",bookingDetails:"Bookingdetaljer",paymentHistory:"Betalingshistorikk",paymentMadeBy:"Betaling mottatt fra {company}",paymentHistoryTitle:"Betalingshistorikk",noPaymentLogs:"Ingen betalingshendelser funnet.",paymentEvent:{"checkout.session.completed":"Betaling gjennomført","checkout.session.create_failed":"Betaling feilet","checkout.internal_error":"Intern feil","refund.created":"Refundering utført","refund.failed":"Refundering feilet","charge.refunded":"Belastning refundert","payment_intent.succeeded":"Betaling vellykket","payment_intent.payment_failed":"Betaling feilet","checkout.session.expired":"Betaling utløpt","partner_payment.received":"Betaling mottatt fra","partner_payment.refunded":"Betaling refundert av"},addBooking:"Ny booking",manualBadge:"Manuell",paidManualBadge:"Betalt (manuell)",weOwePartner:"Vi skylder partner",partnerOwesUs:"Partner skylder oss",period:"Periode",allTime:"Alle",thisMonth:"Denne mÃ¥neden",lastMonth:"Forrige mÃ¥ned",last3Months:"Siste 3 mÃ¥neder",customRange:"Egendefinert",from:"Fra",to:"Til",manualPaymentMethod:{card:"Kort",invoice:"Faktura",card_terminal:"Kortterminal"},journalEntries:"Bokføring",prepaymentEntry:"Forskudd (bestilling)",revenueEntry:"Inntektsføring",refundEntry:"Refusjon",debit:"Debet",credit:"Kredit"},de:{refund:"Erstatten",manualPaymentMethod:{card:"Karte",invoice:"Rechnung",card_terminal:"Kartenterminal"},refundConfirm:"Sind Sie sicher, dass Sie {activity} ({amount}) erstatten möchten?",refunded:"Erstattet",partiallyRefunded:"Teilweise erstattet",refundSuccess:"Erstattung erfolgreich",refundError:"Erstattung fehlgeschlagen",confirmed:"Bestätigt",paid:"Bezahlt",active:"Aktiv",noActiveBookings:"Keine aktiven Buchungen.",noRefundedBookings:"Keine erstatteten Buchungen.",noBookingsYet:"Noch keine Buchungen.",searchPlaceholder:"Name, E-Mail, Code suchen...",processing:"In Bearbeitung",refundAll:"Alles erstatten",refundActivity:"Aktivität erstatten",refundEntireBooking:"Gesamte Buchung erstatten",refundAllConfirm:"Sind Sie sicher, dass Sie alle {count} Aktivitäten ({amount}) erstatten möchten?",cancel:"Abbrechen",total:"Gesamt",contact:"Kontakt",tickets:"Tickets",noLines:"Keine Positionen",code:"Buchungsref.",customer:"Kunde",activity:"Aktivität",time:"Zeit",amount:"Betrag",ordered:"Bestellt",bookings:"Buchungen",yearsOld:"Jahre",activities:"Aktivitäten",bookingDetails:"Buchungsdetails",paymentHistory:"Zahlungsverlauf",paymentMadeBy:"Zahlung erhalten von {company}",paymentHistoryTitle:"Zahlungsverlauf",noPaymentLogs:"Keine Zahlungsereignisse gefunden.",paymentEvent:{"checkout.session.completed":"Zahlung abgeschlossen","checkout.session.create_failed":"Zahlung fehlgeschlagen","checkout.internal_error":"Interner Fehler","refund.created":"Erstattung ausgestellt","refund.failed":"Erstattung fehlgeschlagen","charge.refunded":"Belastung erstattet","payment_intent.succeeded":"Zahlung erfolgreich","payment_intent.payment_failed":"Zahlung fehlgeschlagen","checkout.session.expired":"Checkout abgelaufen","partner_payment.received":"Zahlung erhalten von","partner_payment.refunded":"Zahlung erstattet von"},addBooking:"Neue Buchung",manualBadge:"Manuell",paidManualBadge:"Bezahlt (manuell)",weOwePartner:"Wir schulden Partner",partnerOwesUs:"Partner schuldet uns",period:"Zeitraum",allTime:"Gesamter Zeitraum",thisMonth:"Dieser Monat",lastMonth:"Letzter Monat",last3Months:"Letzte 3 Monate",customRange:"Benutzerdefiniert",from:"Von",to:"Bis",journalEntries:"Buchhaltung",prepaymentEntry:"Vorauszahlung (Buchung)",revenueEntry:"Umsatzrealisierung",refundEntry:"Erstattung",debit:"Soll",credit:"Haben"},es:{refund:"Reembolsar",manualPaymentMethod:{card:"Tarjeta",invoice:"Factura",card_terminal:"Terminal"},refundConfirm:"¿Está seguro de que desea reembolsar {activity} ({amount})?",refunded:"Reembolsado",partiallyRefunded:"Parcialmente reembolsado",refundSuccess:"Reembolso exitoso",refundError:"Reembolso fallido",confirmed:"Confirmado",paid:"Pagado",active:"Activo",noActiveBookings:"Sin reservas activas.",noRefundedBookings:"Sin reservas reembolsadas.",noBookingsYet:"Aún no hay reservas.",searchPlaceholder:"Buscar nombre, email, código...",processing:"Procesando",refundAll:"Reembolsar todo",refundActivity:"Reembolsar actividad",refundEntireBooking:"Reembolsar reserva completa",refundAllConfirm:"¿Está seguro de que desea reembolsar todas las {count} actividades ({amount})?",cancel:"Cancelar",total:"Total",contact:"Contacto",tickets:"Entradas",noLines:"Sin lÃneas",code:"Ref. reserva",customer:"Cliente",activity:"Actividad",time:"Hora",amount:"Monto",ordered:"Pedido",bookings:"Reservas",yearsOld:"años",activities:"actividades",bookingDetails:"Detalles de reserva",paymentHistory:"Historial de pagos",paymentMadeBy:"Pago recibido de {company}",paymentHistoryTitle:"Historial de pagos",noPaymentLogs:"No se encontraron eventos de pago.",paymentEvent:{"checkout.session.completed":"Pago completado","checkout.session.create_failed":"Pago fallido","checkout.internal_error":"Error interno","refund.created":"Reembolso emitido","refund.failed":"Reembolso fallido","charge.refunded":"Cargo reembolsado","payment_intent.succeeded":"Pago exitoso","payment_intent.payment_failed":"Pago fallido","checkout.session.expired":"Checkout expirado","partner_payment.received":"Pago recibido de","partner_payment.refunded":"Pago reembolsado por"},addBooking:"Nueva reserva",manualBadge:"Manual",paidManualBadge:"Pagado (manual)",weOwePartner:"Debemos a socio",partnerOwesUs:"Socio nos debe",period:"PerÃodo",allTime:"Todo",thisMonth:"Este mes",lastMonth:"Mes pasado",last3Months:"Ãltimos 3 meses",customRange:"Personalizado",from:"Desde",to:"Hasta",journalEntries:"Contabilidad",prepaymentEntry:"Anticipo (reserva)",revenueEntry:"Reconocimiento de ingresos",refundEntry:"Reembolso",debit:"Debe",credit:"Haber"},fr:{refund:"Rembourser",manualPaymentMethod:{card:"Carte",invoice:"Facture",card_terminal:"Terminal"},refundConfirm:"Ãtes-vous sûr de vouloir rembourser {activity} ({amount}) ?",refunded:"Remboursé",partiallyRefunded:"Partiellement remboursé",refundSuccess:"Remboursement réussi",refundError:"Remboursement échoué",confirmed:"Confirmé",paid:"Payé",active:"Actif",noActiveBookings:"Aucune réservation active.",noRefundedBookings:"Aucune réservation remboursée.",noBookingsYet:"Aucune réservation.",searchPlaceholder:"Rechercher nom, email, code...",processing:"En cours",refundAll:"Tout rembourser",refundActivity:"Rembourser l'activité",refundEntireBooking:"Rembourser la réservation entière",refundAllConfirm:"Ãtes-vous sûr de vouloir rembourser les {count} activités ({amount}) ?",cancel:"Annuler",total:"Total",contact:"Contact",tickets:"Billets",noLines:"Aucune ligne",code:"Réf. réservation",customer:"Client",activity:"Activité",time:"Heure",amount:"Montant",ordered:"Commandé",bookings:"Réservations",yearsOld:"ans",activities:"activités",bookingDetails:"Détails réservation",paymentHistory:"Historique paiements",paymentMadeBy:"Paiement reçu de {company}",paymentHistoryTitle:"Historique paiements",noPaymentLogs:"Aucun événement de paiement.",paymentEvent:{"checkout.session.completed":"Paiement complété","checkout.session.create_failed":"Paiement échoué","checkout.internal_error":"Erreur interne","refund.created":"Remboursement émis","refund.failed":"Remboursement échoué","charge.refunded":"Charge remboursée","payment_intent.succeeded":"Paiement réussi","payment_intent.payment_failed":"Paiement échoué","checkout.session.expired":"Checkout expiré","partner_payment.received":"Paiement reçu de","partner_payment.refunded":"Paiement remboursé par"},addBooking:"Nouvelle réservation",manualBadge:"Manuel",paidManualBadge:"Payé (manuel)",weOwePartner:"Nous devons au partenaire",partnerOwesUs:"Le partenaire nous doit",period:"Période",allTime:"Tout",thisMonth:"Ce mois",lastMonth:"Mois dernier",last3Months:"3 derniers mois",customRange:"Personnalisé",from:"De",to:"Ã",journalEntries:"Comptabilité",prepaymentEntry:"Acompte (réservation)",revenueEntry:"Reconnaissance du chiffre d'affaires",refundEntry:"Remboursement",debit:"Débit",credit:"Crédit"},it:{refund:"Rimborsa",manualPaymentMethod:{card:"Carta",invoice:"Fattura",card_terminal:"Terminale"},refundConfirm:"Sei sicuro di voler rimborsare {activity} ({amount})?",refunded:"Rimborsato",partiallyRefunded:"Parzialmente rimborsato",refundSuccess:"Rimborso riuscito",refundError:"Rimborso fallito",confirmed:"Confermato",paid:"Pagato",active:"Attivo",noActiveBookings:"Nessuna prenotazione attiva.",noRefundedBookings:"Nessuna prenotazione rimborsata.",noBookingsYet:"Nessuna prenotazione.",searchPlaceholder:"Cerca nome, email, codice...",processing:"In elaborazione",refundAll:"Rimborsa tutto",refundActivity:"Rimborsa attività ",refundEntireBooking:"Rimborsa intera prenotazione",refundAllConfirm:"Sei sicuro di voler rimborsare tutte le {count} attività ({amount})?",cancel:"Annulla",total:"Totale",contact:"Contatto",tickets:"Biglietti",noLines:"Nessuna riga",code:"Rif. prenotazione",customer:"Cliente",activity:"Attività ",time:"Ora",amount:"Importo",ordered:"Ordinato",bookings:"Prenotazioni",yearsOld:"anni",activities:"attività ",bookingDetails:"Dettagli prenotazione",paymentHistory:"Cronologia pagamenti",paymentMadeBy:"Pagamento ricevuto da {company}",paymentHistoryTitle:"Cronologia pagamenti",noPaymentLogs:"Nessun evento di pagamento.",paymentEvent:{"checkout.session.completed":"Pagamento completato","checkout.session.create_failed":"Pagamento fallito","checkout.internal_error":"Errore interno","refund.created":"Rimborso emesso","refund.failed":"Rimborso fallito","charge.refunded":"Addebito rimborsato","payment_intent.succeeded":"Pagamento riuscito","payment_intent.payment_failed":"Pagamento fallito","checkout.session.expired":"Checkout scaduto","partner_payment.received":"Pagamento ricevuto da","partner_payment.refunded":"Pagamento rimborsato da"},addBooking:"Nuova prenotazione",manualBadge:"Manuale",paidManualBadge:"Pagato (manuale)",weOwePartner:"Dobbiamo al partner",partnerOwesUs:"Il partner ci deve",period:"Periodo",allTime:"Tutto",thisMonth:"Questo mese",lastMonth:"Mese scorso",last3Months:"Ultimi 3 mesi",customRange:"Personalizzato",from:"Da",to:"A",journalEntries:"Contabilità ",prepaymentEntry:"Anticipo (prenotazione)",revenueEntry:"Riconoscimento ricavi",refundEntry:"Rimborso",debit:"Dare",credit:"Avere"}},eb={en:{title:"Add booking",back:"Back",next:"Next",searchActivity:"Search activities...",noActivities:"No bookable activities found.",fromPrice:"From",noDepartures:"No upcoming departures.",soldOut:"Sold out",fewSeats:"Few seats left",seatsLeft:"seats left",total:"Total",customer:"Customer",newCustomer:"New customer",searchExisting:"Search existing",searchCustomerPlaceholder:"Search name, email...",name:"Name",email:"Email",phone:"Phone",paymentMethodLabel:"Payment method",paymentMethods:{manual:"Manual",vipps:"Vipps",cash:"Cash",cardTerminal:"Card terminal",invoice:"Invoice",other:"Other",card:"Card"},markedPaid:"Marked as paid",paidBadge:"Paid",internalNote:"Internal note",internalNotePlaceholder:"Optional internal note...",stepActivity:"Activity",stepDeparture:"Departure",stepQuantity:"Tickets",createBooking:"Create booking",bookingCreated:"Booking created",terminalSelectReader:"Select reader",terminalStartPayment:"Start payment",terminalWaiting:"Waiting for card reader...",terminalSuccess:"Payment successful",terminalFailed:"Payment failed",terminalNoReaders:"No readers available. Set up in payment settings.",participantsTitle:"Participants",participantLabel:"Participant",participantFullName:"Full name"},no:{title:"Legg til booking",back:"Tilbake",next:"Neste",searchActivity:"Søk aktiviteter...",noActivities:"Ingen bookbare aktiviteter funnet.",fromPrice:"Fra",noDepartures:"Ingen kommende avganger.",soldOut:"Utsolgt",fewSeats:"FÃ¥ plasser igjen",seatsLeft:"plasser igjen",total:"Totalt",customer:"Kunde",newCustomer:"Ny kunde",searchExisting:"Søk eksisterende",searchCustomerPlaceholder:"Søk navn, e-post...",name:"Navn",email:"E-post",phone:"Telefon",paymentMethodLabel:"BetalingsmÃ¥te",paymentMethods:{manual:"Manuell",vipps:"Vipps",cash:"Kontant",cardTerminal:"Kortterminal",invoice:"Faktura",other:"Annet",card:"Kort"},markedPaid:"Markert som betalt",paidBadge:"Betalt",internalNote:"Internt notat",internalNotePlaceholder:"Valgfritt internt notat...",stepActivity:"Aktivitet",stepDeparture:"Avgang",stepQuantity:"Billetter",createBooking:"Opprett booking",bookingCreated:"Booking opprettet",terminalSelectReader:"Velg leser",terminalStartPayment:"Start betaling",terminalWaiting:"Venter pÃ¥ kortleser...",terminalSuccess:"Betaling gjennomført",terminalFailed:"Betaling feilet",terminalNoReaders:"Ingen lesere tilgjengelig. Sett opp i betalingsinnstillinger.",participantsTitle:"Deltakere",participantLabel:"Deltaker",participantFullName:"Fullt navn"},de:{title:"Buchung hinzufügen",back:"Zurück",next:"Weiter",searchActivity:"Aktivitäten suchen...",noActivities:"Keine buchbaren Aktivitäten gefunden.",fromPrice:"Ab",noDepartures:"Keine bevorstehenden Abfahrten.",soldOut:"Ausverkauft",fewSeats:"Wenige Plätze frei",seatsLeft:"Plätze frei",total:"Gesamt",customer:"Kunde",newCustomer:"Neuer Kunde",searchExisting:"Bestehende suchen",searchCustomerPlaceholder:"Name, E-Mail suchen...",name:"Name",email:"E-Mail",phone:"Telefon",paymentMethodLabel:"Zahlungsmethode",paymentMethods:{manual:"Manuell",vipps:"Vipps",cash:"Bar",cardTerminal:"Kartenterminal",invoice:"Rechnung",other:"Sonstiges",card:"Karte"},markedPaid:"Als bezahlt markiert",paidBadge:"Bezahlt",internalNote:"Interne Notiz",internalNotePlaceholder:"Optionale interne Notiz...",stepActivity:"Aktivität",stepDeparture:"Abfa
478hrt",stepQuantity:"Tickets",createBooking:"Buchung erstellen",bookingCreated:"Buchung erstellt",terminalSelectReader:"Leser wählen",terminalStartPayment:"Zahlung starten",terminalWaiting:"Warte auf Kartenleser...",terminalSuccess:"Zahlung erfolgreich",terminalFailed:"Zahlung fehlgeschlagen",terminalNoReaders:"Keine Leser verfügbar. In Zahlungseinstellungen einrichten.",participantsTitle:"Teilnehmer",participantLabel:"Teilnehmer",participantFullName:"Vollständiger Name"},es:{title:"Añadir reserva",back:"Atrás",next:"Siguiente",searchActivity:"Buscar actividades...",noActivities:"No se encontraron actividades reservables.",fromPrice:"Desde",noDepartures:"Sin próximas salidas.",soldOut:"Agotado",fewSeats:"Pocos asientos",seatsLeft:"asientos libres",total:"Total",customer:"Cliente",newCustomer:"Nuevo cliente",searchExisting:"Buscar existente",searchCustomerPlaceholder:"Buscar nombre, email...",name:"Nombre",email:"Email",phone:"Teléfono",paymentMethodLabel:"Método de pago",paymentMethods:{manual:"Manual",vipps:"Vipps",cash:"Efectivo",cardTerminal:"Terminal tarjetas",invoice:"Factura",other:"Otro",card:"Tarjeta"},markedPaid:"Marcado como pagado",paidBadge:"Pagado",internalNote:"Nota interna",internalNotePlaceholder:"Nota interna opcional...",stepActivity:"Actividad",stepDeparture:"Salida",stepQuantity:"Entradas",createBooking:"Crear reserva",bookingCreated:"Reserva creada",terminalSelectReader:"Seleccionar lector",terminalStartPayment:"Iniciar pago",terminalWaiting:"Esperando lector...",terminalSuccess:"Pago exitoso",terminalFailed:"Pago fallido",terminalNoReaders:"Sin lectores disponibles.",participantsTitle:"Participantes",participantLabel:"Participante",participantFullName:"Nombre completo"},fr:{title:"Ajouter réservation",back:"Retour",next:"Suivant",searchActivity:"Rechercher activités...",noActivities:"Aucune activité réservable trouvée.",fromPrice:"à partir de",noDepartures:"Aucun départ à venir.",soldOut:"Complet",fewSeats:"Peu de places",seatsLeft:"places restantes",total:"Total",customer:"Client",newCustomer:"Nouveau client",searchExisting:"Rechercher existant",searchCustomerPlaceholder:"Rechercher nom, email...",name:"Nom",email:"Email",phone:"Téléphone",paymentMethodLabel:"Mode de paiement",paymentMethods:{manual:"Manuel",vipps:"Vipps",cash:"Espèces",cardTerminal:"Terminal carte",invoice:"Facture",other:"Autre",card:"Carte"},markedPaid:"Marqué comme payé",paidBadge:"Payé",internalNote:"Note interne",internalNotePlaceholder:"Note interne optionnelle...",stepActivity:"Activité",stepDeparture:"Départ",stepQuantity:"Billets",createBooking:"Créer réservation",bookingCreated:"Réservation créée",terminalSelectReader:"Sélectionner lecteur",terminalStartPayment:"Démarrer paiement",terminalWaiting:"En attente du lecteur...",terminalSuccess:"Paiement réussi",terminalFailed:"Paiement échoué",terminalNoReaders:"Aucun lecteur disponible.",participantsTitle:"Participants",participantLabel:"Participant",participantFullName:"Nom complet"},it:{title:"Aggiungi prenotazione",back:"Indietro",next:"Avanti",searchActivity:"Cerca attività ...",noActivities:"Nessuna attività prenotabile trovata.",fromPrice:"Da",noDepartures:"Nessuna partenza in programma.",soldOut:"Esaurito",fewSeats:"Pochi posti",seatsLeft:"posti rimasti",total:"Totale",customer:"Cliente",newCustomer:"Nuovo cliente",searchExisting:"Cerca esistente",searchCustomerPlaceholder:"Cerca nome, email...",name:"Nome",email:"Email",phone:"Telefono",paymentMethodLabel:"Metodo di pagamento",paymentMethods:{manual:"Manuale",vipps:"Vipps",cash:"Contanti",cardTerminal:"Terminale carte",invoice:"Fattura",other:"Altro",card:"Carta"},markedPaid:"Segnato come pagato",paidBadge:"Pagato",internalNote:"Nota interna",internalNotePlaceholder:"Nota interna opzionale...",stepActivity:"Attività ",stepDeparture:"Partenza",stepQuantity:"Biglietti",createBooking:"Crea prenotazione",bookingCreated:"Prenotazione creata",terminalSelectReader:"Seleziona lettore",terminalStartPayment:"Avvia pagamento",terminalWaiting:"In attesa del lettore...",terminalSuccess:"Pagamento riuscito",terminalFailed:"Pagamento fallito",terminalNoReaders:"Nessun lettore disponibile.",participantsTitle:"Partecipanti",participantLabel:"Partecipante",participantFullName:"Nome completo"}},tb={en:{title:"Dashboard",eventsThisWeek:"Events",bookingsThisWeek:"Bookings",participants:"Participants",alerts:"Alerts",todaysEvents:"Today's Events",noEventsToday:"No events today",resourceSituation:"Resource Situation",recentBookings:"Recent Bookings",quickActions:"Quick Actions",weekBreakdown:"Week Breakdown",aiInsight:"AI Insight",onLeave:"On leave",conflicts:"Conflicts",missingAssignments:"Missing assignments",newEvent:"New event",goToCalendar:"Go to calendar",goToChat:"AI Chat",dayMon:"Mon",dayTue:"Tue",dayWed:"Wed",dayThu:"Thu",dayFri:"Fri",daySat:"Sat",daySun:"Sun",customizeDashboard:"Customize",addWidget:"Add widget",removeWidget:"Remove",doneEditing:"Done",widgetSettings:"Settings",widgetActivityPerformance:"Activity Carousel",widgetKpiCards:"KPI Cards",widgetTodaysEvents:"Today's Events",widgetResourceSituation:"Resource Situation",widgetSaltstraumen:"Saltstraumen",widgetRecentBookings:"Recent Bookings",widgetQuickActions:"Quick Actions",widgetWeekBreakdown:"Week Breakdown",widgetSingleActivity:"Activity",widgetTodaysWeather:"Today's Weather",selectActivity:"Select activity",widgetMyWeek:"My Week",noEventsThisWeek:"No events this week"},no:{title:"Dashboard",eventsThisWeek:"Hendelser",bookingsThisWeek:"Bookinger",participants:"Deltakere",alerts:"Varsler",todaysEvents:"Dagens hendelser",noEventsToday:"Ingen hendelser i dag",resourceSituation:"Ressurssituasjon",recentBookings:"Siste bookinger",quickActions:"Hurtigvalg",weekBreakdown:"Ukeoversikt",aiInsight:"AI-innsikt",onLeave:"PÃ¥ fravær",conflicts:"Konflikter",missingAssignments:"Manglende tildelinger",newEvent:"Ny hendelse",goToCalendar:"GÃ¥ til kalender",goToChat:"AI-chat",dayMon:"Man",dayTue:"Tir",dayWed:"Ons",dayThu:"Tor",dayFri:"Fre",daySat:"Lør",daySun:"Søn",customizeDashboard:"Tilpass",addWidget:"Legg til widget",removeWidget:"Fjern",doneEditing:"Ferdig",widgetSettings:"Innstillinger",widgetActivityPerformance:"Aktivitetskarusell",widgetKpiCards:"Nøkkeltall",widgetTodaysEvents:"Dagens hendelser",widgetResourceSituation:"Ressurssituasjon",widgetSaltstraumen:"Saltstraumen",widgetRecentBookings:"Siste bookinger",widgetQuickActions:"Hurtigvalg",widgetWeekBreakdown:"Ukeoversikt",widgetSingleActivity:"Aktivitet",widgetTodaysWeather:"Dagens vær",selectActivity:"Velg aktivitet",widgetMyWeek:"Min uke",noEventsThisWeek:"Ingen hendelser denne uken"},de:{title:"Dashboard",eventsThisWeek:"Termine",bookingsThisWeek:"Buchungen",participants:"Teilnehmer",alerts:"Warnungen",todaysEvents:"Heutige Termine",noEventsToday:"Keine Termine heute",resourceSituation:"Ressourcensituation",recentBookings:"Letzte Buchungen",quickActions:"Schnellaktionen",weekBreakdown:"Wochenübersicht",aiInsight:"KI-Einblick",onLeave:"Abwesend",conflicts:"Konflikte",missingAssignments:"Fehlende Zuweisungen",newEvent:"Neuer Termin",goToCalendar:"Zum Kalender",goToChat:"KI-Chat",dayMon:"Mo",dayTue:"Di",dayWed:"Mi",dayThu:"Do",dayFri:"Fr",daySat:"Sa",daySun:"So",customizeDashboard:"Anpassen",addWidget:"Widget hinzufügen",removeWidget:"Entfernen",doneEditing:"Fertig",widgetSettings:"Einstellungen",widgetActivityPerformance:"Aktivitätskarussell",widgetKpiCards:"Kennzahlen",widgetTodaysEvents:"Heutige Termine",widgetResourceSituation:"Ressourcensituation",widgetSaltstraumen:"Saltstraumen",widgetRecentBookings:"Letzte Buchungen",widgetQuickActions:"Schnellaktionen",widgetWeekBreakdown:"Wochenübersicht",widgetSingleActivity:"Aktivität",widgetTodaysWeather:"Heutiges Wetter",selectActivity:"Aktivität wählen",widgetMyWeek:"Meine Woche",noEventsThisWeek:"Keine Termine diese Woche"},es:{title:"Panel",eventsThisWeek:"Eventos",bookingsThisWeek:"Reservas",participants:"Participantes",alerts:"Alertas",todaysEvents:"Eventos de hoy",noEventsToday:"Sin eventos hoy",resourceSituation:"Situación de recursos",recentBookings:"Reservas recientes",quickActions:"Acciones rápidas",weekBreakdown:"Resumen semanal",aiInsight:"IA Insight",onLeave:"De permiso",conflicts:"Conflictos",missingAssignments:"Asignaciones faltantes",newEvent:"Nuevo evento",goToCalendar:"Ir al calendario",goToChat:"Chat IA",dayMon:"Lun",dayTue:"Mar",dayWed:"Mié",dayThu:"Jue",dayFri:"Vie",daySat:"Sáb",daySun:"Dom",customizeDashboard:"Personalizar",addWidget:"Añadir widget",removeWidget:"Eliminar",doneEditing:"Listo",widgetSettings:"Configuración",widgetActivityPerformance:"Carrusel de actividades",widgetKpiCards:"KPIs",widgetTodaysEvents:"Eventos de hoy",widgetResourceSituation:"Situación de recursos",widgetSaltstraumen:"Saltstraumen",widgetRecentBookings:"Reservas recientes",widgetQuickActions:"Acciones rápidas",widgetWeekBreakdown:"Resumen semanal",widgetSingleActivity:"Actividad",widgetTodaysWeather:"Tiempo de hoy",selectActivity:"Seleccionar actividad",widgetMyWeek:"Mi semana",noEventsThisWeek:"Sin eventos esta semana"},fr:{title:"Tableau de bord",eventsThisWeek:"Ãvénements",bookingsThisWeek:"Réservations",participants:"Participants",alerts:"Alertes",todaysEvents:"Ãv
478énements du jour",noEventsToday:"Aucun événement aujourd'hui",resourceSituation:"Situation des ressources",recentBookings:"Réservations récentes",quickActions:"Actions rapides",weekBreakdown:"Aperçu hebdomadaire",aiInsight:"IA Insight",onLeave:"En congé",conflicts:"Conflits",missingAssignments:"Affectations manquantes",newEvent:"Nouvel événement",goToCalendar:"Aller au calendrier",goToChat:"Chat IA",dayMon:"Lun",dayTue:"Mar",dayWed:"Mer",dayThu:"Jeu",dayFri:"Ven",daySat:"Sam",daySun:"Dim",customizeDashboard:"Personnaliser",addWidget:"Ajouter widget",removeWidget:"Supprimer",doneEditing:"Terminé",widgetSettings:"Paramètres",widgetActivityPerformance:"Carrousel d'activités",widgetKpiCards:"KPIs",widgetTodaysEvents:"Ãvénements du jour",widgetResourceSituation:"Situation des ressources",widgetSaltstraumen:"Saltstraumen",widgetRecentBookings:"Réservations récentes",widgetQuickActions:"Actions rapides",widgetWeekBreakdown:"Aperçu hebdomadaire",widgetSingleActivity:"Activité",widgetTodaysWeather:"Météo du jour",selectActivity:"Sélectionner activité",widgetMyWeek:"Ma semaine",noEventsThisWeek:"Aucun événement cette semaine"},it:{title:"Dashboard",eventsThisWeek:"Eventi",bookingsThisWeek:"Prenotazioni",participants:"Partecipanti",alerts:"Avvisi",todaysEvents:"Eventi di oggi",noEventsToday:"Nessun evento oggi",resourceSituation:"Situazione risorse",recentBookings:"Prenotazioni recenti",quickActions:"Azioni rapide",weekBreakdown:"Panoramica settimanale",aiInsight:"IA Insight",onLeave:"In congedo",conflicts:"Conflitti",missingAssignments:"Assegnazioni mancanti",newEvent:"Nuovo evento",goToCalendar:"Vai al calendario",goToChat:"Chat IA",dayMon:"Lun",dayTue:"Mar",dayWed:"Mer",dayThu:"Gio",dayFri:"Ven",daySat:"Sab",daySun:"Dom",customizeDashboard:"Personalizza",addWidget:"Aggiungi widget",removeWidget:"Rimuovi",doneEditing:"Fatto",widgetSettings:"Impostazioni",widgetActivityPerformance:"Carosello attività ",widgetKpiCards:"KPI",widgetTodaysEvents:"Eventi di oggi",widgetResourceSituation:"Situazione risorse",widgetSaltstraumen:"Saltstraumen",widgetRecentBookings:"Prenotazioni recenti",widgetQuickActions:"Azioni rapide",widgetWeekBreakdown:"Panoramica settimanale",widgetSingleActivity:"Attività ",widgetTodaysWeather:"Meteo di oggi",selectActivity:"Seleziona attività ",widgetMyWeek:"La mia settimana",noEventsThisWeek:"Nessun evento questa settimana"}},nb={en:{balance:"Balance",active:"Active",expired:"Expired",deactivated:"Deactivated",expires:"Expires",newGiftCard:"New gift card",searchPlaceholder:"Search by code or recipient...",noGiftCards:"No gift cards yet",amount:"Amount",currency:"Currency",recipient:"Recipient (optional)",emailOptional:"Email (optional)",validTo:"Valid to",note:"Note",create:"Create",created:"Gift card created",original:"Original",close:"Close",transactions:"Transactions",noTransactions:"No transactions",issued:"Issued",redeemed:"Redeemed",refunded:"Refunded",adjusted:"Adjusted"},no:{balance:"Saldo",active:"Aktiv",expired:"Utløpt",deactivated:"Deaktivert",expires:"Utløper",newGiftCard:"Nytt gavekort",searchPlaceholder:"Søk etter kode eller mottaker...",noGiftCards:"Ingen gavekort ennÃ¥",amount:"Beløp",currency:"Valuta",recipient:"Mottaker (valgfritt)",emailOptional:"E-post (valgfritt)",validTo:"Gyldig til",note:"Notat",create:"Opprett",created:"Gavekort opprettet",original:"Opprinnelig",close:"Lukk",transactions:"Transaksjoner",noTransactions:"Ingen transaksjoner",issued:"Utstedt",redeemed:"Innløst",refunded:"Refundert",adjusted:"Justert"},de:{balance:"Guthaben",active:"Aktiv",expired:"Abgelaufen",deactivated:"Deaktiviert",expires:"Läuft ab",newGiftCard:"Neuer Gutschein",searchPlaceholder:"Nach Code oder Empfänger suchen...",noGiftCards:"Noch keine Gutscheine",amount:"Betrag",currency:"Währung",recipient:"Empfänger (optional)",emailOptional:"E-Mail (optional)",validTo:"Gültig bis",note:"Notiz",create:"Erstellen",created:"Gutschein erstellt",original:"Original",close:"SchlieÃen",transactions:"Transaktionen",noTransactions:"Keine Transaktionen",issued:"Ausgestellt",redeemed:"Eingelöst",refunded:"Erstattet",adjusted:"Angepasst"},es:{balance:"Saldo",active:"Activa",expired:"Caducada",deactivated:"Desactivada",expires:"Caduca",newGiftCard:"Nueva tarjeta regalo",searchPlaceholder:"Buscar por código o destinatario...",noGiftCards:"Aún no hay tarjetas regalo",amount:"Monto",currency:"Moneda",recipient:"Destinatario (opcional)",emailOptional:"Email (opcional)",validTo:"Válida hasta",note:"Nota",create:"Crear",created:"Tarjeta regalo creada",original:"Original",close:"Cerrar",transactions:"Transacciones",noTransactions:"Sin transacciones",issued:"Emitida",redeemed:"Canjeada",refunded:"Reembolsada",adjusted:"Ajustada"},fr:{balance:"Solde",active:"Active",expired:"Expirée",deactivated:"Désactivée",expires:"Expire",newGiftCard:"Nouvelle carte cadeau",searchPlaceholder:"Rechercher par code ou destinataire...",noGiftCards:"Aucune carte cadeau",amount:"Montant",currency:"Devise",recipient:"Destinataire (optionnel)",emailOptional:"Email (optionnel)",validTo:"Valide jusqu'au",note:"Note",create:"Créer",created:"Carte cadeau créée",original:"Original",close:"Fermer",transactions:"Transactions",noTransactions:"Aucune transaction",issued:"Ãmise",redeemed:"Utilisée",refunded:"Remboursée",adjusted:"Ajustée"},it:{balance:"Saldo",active:"Attiva",expired:"Scaduta",deactivated:"Disattivata",expires:"Scade",newGiftCard:"Nuova carta regalo",searchPlaceholder:"Cerca per codice o destinatario...",noGiftCards:"Nessuna carta regalo",amount:"Importo",currency:"Valuta",recipient:"Destinatario (opzionale)",emailOptional:"Email (opzionale)",validTo:"Valida fino al",note:"Nota",create:"Crea",created:"Carta regalo creata",original:"Originale",close:"Chiudi",transactions:"Transazioni",noTransactions:"Nessuna transazione",issued:"Emessa",redeemed:"Riscossa",refunded:"Rimborsata",adjusted:"Rettificata"}},ab={en:{title:"Notes",addNote:"Add note",writeNote:"Write note...",noNotesYet:"No notes yet",archive:"Archive",pin:"Pin",unpin:"Unpin",noteDefault:"Note",noteImportant:"Important",noteInternal:"Internal",noteDone:"Done"},no:{title:"Notater",addNote:"Legg til notat",writeNote:"Skriv notat...",noNotesYet:"Ingen notater ennÃ¥",archive:"Arkiver",pin:"Fest",unpin:"Løsne",noteDefault:"Notat",noteImportant:"Viktig",noteInternal:"Intern",noteDone:"Fullført"},de:{title:"Notizen",addNote:"Hinzufügen",writeNote:"Notiz schreiben...",noNotesYet:"Noch keine Notizen",archive:"Archivieren",pin:"Anheften",unpin:"Lösen",noteDefault:"Notiz",noteImportant:"Wichtig",noteInternal:"Intern",noteDone:"Erledigt"},es:{title:"Notas",addNote:"Añadir",writeNote:"Escribir nota...",noNotesYet:"Aún no hay notas",archive:"Archivar",pin:"Fijar",unpin:"Desfijar",noteDefault:"Nota",noteImportant:"Importante",noteInternal:"Interna",noteDone:"Hecho"},fr:{title:"Notes",addNote:"Ajouter",writeNote:"Ãcrire une note...",noNotesYet:"Aucune note",archive:"Archiver",pin:"Ãpingler",unpin:"Détacher",noteDefault:"Note",noteImportant:"Important",noteInternal:"Interne",noteDone:"Terminé"}
478,it:{title:"Note",addNote:"Aggiungi nota",writeNote:"Scrivi nota...",noNotesYet:"Nessuna nota",archive:"Archivia",pin:"Fissa",unpin:"Sgancia",noteDefault:"Nota",noteImportant:"Importante",noteInternal:"Interna",noteDone:"Completata"}},ib={en:{imagesAndVideos:"Images & Videos",primary:"Primary",setAsPrimary:"Set as primary",clickToUpload:"Click to upload images or videos",dropToUpload:"Drop files to upload",dragToReorder:"Drag to reorder. The first image is the primary and is shown on the card.",image:"Image"},no:{imagesAndVideos:"Bilder og videoer",primary:"Hovedbilde",setAsPrimary:"Sett som hovedbilde",clickToUpload:"Klikk for Ã¥ laste opp bilder eller videoer",dropToUpload:"Slipp filer for Ã¥ laste opp",dragToReorder:"Dra for Ã¥ endre rekkefølge. Det første bildet er hovedbilde og vises pÃ¥ kortet.",image:"Bilde"},de:{imagesAndVideos:"Bilder & Videos",primary:"Hauptbild",setAsPrimary:"Als Hauptbild setzen",clickToUpload:"Klicken Sie, um Bilder oder Videos hochzuladen",dropToUpload:"Dateien zum Hochladen ablegen",dragToReorder:"Ziehen Sie zum Neuordnen. Das erste Bild ist das Hauptbild und wird auf der Karte angezeigt.",image:"Bild"},es:{imagesAndVideos:"Imágenes y vÃdeos",primary:"Principal",setAsPrimary:"Establecer como principal",clickToUpload:"Haga clic para subir imágenes o vÃdeos",dropToUpload:"Suelte archivos para subir",dragToReorder:"Arrastre para reordenar. La primera imagen es la principal y se muestra en la tarjeta.",image:"Imagen"},fr:{imagesAndVideos:"Images et vidéos",primary:"Principale",setAsPrimary:"Définir comme principale",clickToUpload:"Cliquez pour télécharger des images ou vidéos",dropToUpload:"Déposez les fichiers pour télécharger",dragToReorder:"Glissez pour réorganiser. La première image est la principale et s'affiche sur la carte.",image:"Image"},it:{imagesAndVideos:"Immagini e video",primary:"Principale",setAsPrimary:"Imposta come principale",clickToUpload:"Clicca per caricare immagini o video",dropToUpload:"Rilascia file per caricare",dragToReorder:"Trascina per riordinare. La prima immagine è la principale e viene mostrata sulla scheda.",image:"Immagine"}},rb={en:{prices:"Prices",categories:"Categories",close:"Close",currentPrice:"Current price",active:"Active",noPricesSet:"No prices set for this category.",validFrom:"Valid from",selectDate:"Select date",priceAmount:"Price",newPriceFromDate:"New price from date",createCategoriesFirst:"Create price categories first (Categories tab).",editCategory:"Edit price category",newCategory:"New price category",categoryNamePlaceholder:"e.g. Adult, Child...",categoryDescPlaceholder:"e.g. ages 3-12, Drives own snowmobile",descriptionHelp:"Shown below the price name in booking",requireDob:"Require date of birth",requireDobHelp:"Participants must enter their date of birth in the booking flow",minimumAge:"Minimum age",maximumAge:"Maximum age",ageValidationHelp:"Age is validated against date of birth at booking",ageTooYoung:"Minimum age for {name} is {age}",ageTooOld:"Maximum age for {name} is {age}",noCategoriesYet:"No price categories created yet.",addCategory:"Add category",sectionBasicInfo:"Basic information",sectionParticipantRules:"Participant rules",sectionResourceUsage:"Resource usage",priceName:"Price name",priceNameHelp:"The name shown to the customer in booking",shortDescription:"Short description (optional)",howEquipmentUsed:"How is the resource used?",sharedUse:"Shared capacity",sharedUseDesc:"Multiple participants can share the same resource",ownUnit:"One unit per booking",ownUnitDesc:"Each booking reserves a full unit",sharedHint:"The system automatically calculates how many units are needed based on the number of participants and the resource capacity.",exclusiveHint:"Each booking reserves a full unit.",equipmentType:"Applies to resource type",equipmentTypeHelp:"Select which resource type this price category applies to"},no:{prices:"Priser",categories:"Kategorier",close:"Lukk",currentPrice:"Gjeldende pris",active:"Aktiv",noPricesSet:"Ingen priser satt for denne kategorien.",validFrom:"Gyldig fra",selectDate:"Velg dato",priceAmount:"Pris (kr)",newPriceFromDate:"Ny pris fra dato",createCategoriesFirst:"Opprett priskategorier først (fanen Kategorier).",editCategory:"Rediger priskategori",newCategory:"Ny priskategori",categoryNamePlaceholder:"F.eks. Voksen, Adult...",categoryDescPlaceholder:"F.eks. 3â12 Ã¥r, Kjører egen scooter",descriptionHelp:"Vises under prisnavnet i booking",requireDob:"Krev fødselsdato",requireDobHelp:"Deltakere mÃ¥ oppgi fødselsdato i bookingløpet",minimumAge:"Minimumsalder",maximumAge:"Maksimumsalder",ageValidationHelp:"Alderen valideres mot fødselsdatoen ved booking",ageTooYoung:"Minimum alder for {name} er {age} Ã¥r",ageTooOld:"Maksimum alder for {name} er {age} Ã¥r",noCategoriesYet:"Ingen priskategorier opprettet ennÃ¥.",addCategory:"Legg til kategori",sectionBasicInfo:"Grunninformasjon",sectionParticipantRules:"Deltakerregler",sectionResourceUsage:"Ressursbruk",priceName:"Prisnavn",priceNameHelp:"Navnet som vises for kunden i booking",shortDe
478scription:"Kort beskrivelse (valgfritt)",howEquipmentUsed:"Hvordan brukes ressursen?",sharedUse:"Delt kapasitet",sharedUseDesc:"Flere deltakere kan dele samme ressurs",ownUnit:"Ãn enhet per booking",ownUnitDesc:"Hver booking reserverer en hel enhet",sharedHint:"Systemet beregner automatisk hvor mange enheter som trengs basert pÃ¥ antall deltakere og ressurskapasiteten.",exclusiveHint:"Hver booking reserverer en hel enhet.",equipmentType:"Gjelder for ressurstype",equipmentTypeHelp:"Velg hvilken ressurstype denne priskategorien gjelder for"},de:{prices:"Preise",categories:"Kategorien",close:"SchlieÃen",currentPrice:"Aktueller Preis",active:"Aktiv",noPricesSet:"Keine Preise für diese Kategorie festgelegt.",validFrom:"Gültig ab",selectDate:"Datum wählen",priceAmount:"Preis",newPriceFromDate:"Neuer Preis ab Datum",createCategoriesFirst:"Erstellen Sie zuerst Preiskategorien (Tab Kategorien).",editCategory:"Preiskategorie bearbeiten",newCategory:"Neue Preiskategorie",categoryNamePlaceholder:"z.B. Erwachsener, Kind...",categoryDescPlaceholder:"z.B. 3â12 Jahre, Fährt eigenes Schneemobil",descriptionHelp:"Wird unter dem Preisnamen in der Buchung angezeigt",requireDob:"Geburtsdatum erforderlich",requireDobHelp:"Teilnehmer müssen ihr Geburtsdatum im Buchungsablauf angeben",minimumAge:"Mindestalter",maximumAge:"Höchstalter",ageValidationHelp:"Das Alter wird bei der Buchung anhand des Geburtsdatums überprüft",ageTooYoung:"Mindestalter für {name} ist {age}",ageTooOld:"Höchstalter für {name} ist {age}",noCategoriesYet:"Noch keine Preiskategorien erstellt.",addCategory:"Kategorie hinzufügen",sectionBasicInfo:"Grundinformationen",sectionParticipantRules:"Teilnehmerregeln",sectionResourceUsage:"Ressourcennutzung",priceName:"Preisname",priceNameHelp:"Der Name, der dem Kunden in der Buchung angezeigt wird",shortDescription:"Kurzbeschreibung (optional)",howEquipmentUsed:"Wie wird die Ressource genutzt?",sharedUse:"Geteilte Kapazität",sharedUseDesc:"Mehrere Teilnehmer können dieselbe Ressource teilen",ownUnit:"Eine Einheit pro Buchung",ownUnitDesc:"Jede Buchung reserviert eine ganze Einheit",sharedHint:"Das System berechnet automatisch, wie viele Einheiten basierend auf der Teilnehmeranzahl und der Ressourcenkapazität benötigt werden.",exclusiveHint:"Jede Buchung reserviert eine ganze Einheit.",equipmentType:"Gilt für Ressourcentyp",equipmentTypeHelp:"Wählen Sie, für welchen Ressourcentyp diese Preiskategorie gilt"},es:{prices:"Precios",categories:"CategorÃas",close:"Cerrar",currentPrice:"Precio actual",active:"Activo",noPricesSet:"No hay precios establecidos para esta categorÃa.",validFrom:"Válido desde",selectDate:"Seleccionar fecha",priceAmount:"Precio",newPriceFromDate:"Nuevo precio desde fecha",createCategoriesFirst:"Cree primero categorÃas de precios (pestaña CategorÃas).",editCategory:"Editar categorÃa de precio",newCategory:"Nueva categorÃa de precio",categoryNamePlaceholder:"Ej. Adulto, Niño...",categoryDescPlaceholder:"Ej. 3â12 años, Conduce su propia moto",descriptionHelp:"Se muestra debajo del nombre del precio en la reserva",requireDob:"Requerir fecha de nacimiento",requireDobHelp:"Los participantes deben ingresar su fecha de nacimiento en el flujo de reserva",minimumAge:"Edad mÃnima",maximumAge:"Edad máxima",ageValidationHelp:"La edad se valida contra la fecha de nacimiento al reservar",ageTooYoung:"Edad mÃnima para {name} es {age}",ageTooOld:"Edad máxima para {name} es {age}",noCategoriesYet:"Aún no se han creado categorÃas de precios.",addCategory:"Añadir categorÃa",sectionBasicInfo:"Información básica",sectionParticipantRules:"Reglas de participantes",sectionResourceUsage:"Uso de recursos",priceName:"Nombre del precio",priceNameHelp:"El nombre que se muestra al cliente en la reserva",shortDescription:"Descripción corta (opcional)",howEquipmentUsed:"¿Cómo se usa el recurso?",sharedUse:"Capacidad compartida",sharedUseDesc:"Varios participantes pueden compartir el mismo recurso",ownUnit:"Una unidad por reserva",ownUnitDesc:"Cada reserva reserva una unidad completa",sharedHint:"El sistema calcula automáticamente cuántas unidades se necesitan según el número de participantes y la capacidad del recurso.",exclusiveHint:"Cada reserva reserva una unidad completa.",equipmentType:"Aplica a tipo de recurso",equipmentTypeHelp:"Seleccione a qué tipo de recurso aplica esta categorÃa de precio"},fr:{prices:"Prix",categories:"Catégories",close:"Fermer",currentPrice:"Prix actuel",active:"Actif",noPricesSet:"Aucun prix défini pour cette catégorie.",validFrom:"Valide à partir de",selectDate:"Sélectionner la date",priceAmount:"Prix",newPriceFromDate:"Nouveau prix à partir de la date",createCategoriesFirst:"Créez d'abord des catégories de prix (onglet Catégories).",editCategory:"Modifier la catégorie de prix",newCategory:"Nouvelle catégorie de prix",categoryNamePlaceholder:"ex. Adulte, Enfant...",categoryDescPlaceholder:"ex. 3â12 ans, Conduit sa propre motoneige",descriptionHelp:"Affiché sous le nom du prix dans la réservation",requireDob:"Exiger la date de naissance",requireDobHelp:"Les participants doivent entrer leur date de naissance dans le flux de réservation",minimumAge:"Ãge minimum",maximumAge:"Ãge maximum",ageValidationHelp:"L'âge est validé par rapport à la date de naissance lors de la réservation",ageTooYoung:"Ãge minimum pour {name} est {age}",ageTooOld:"Ãge maximum pour {name} est {age}",noCategoriesYet:"Aucune catégorie de prix créée.",addCategory:"Ajouter une catégorie",sectionBasicInfo:"Informations de base",sectionParticipantRules:"Règles des participants",sectionResourceUsage:"Utilisation des ressources",priceName:"Nom du prix",priceNameHelp:"Le nom affiché au client lors de la réservation",shortDe
478scription:"Description courte (facultatif)",howEquipmentUsed:"Comment la ressource est-elle utilisée ?",sharedUse:"Capacité partagée",sharedUseDesc:"Plusieurs participants peuvent partager la même ressource",ownUnit:"Une unité par réservation",ownUnitDesc:"Chaque réservation réserve une unité entière",sharedHint:"Le système calcule automatiquement le nombre d'unités nécessaires en fonction du nombre de participants et de la capacité de la ressource.",exclusiveHint:"Chaque réservation réserve une unité entière.",equipmentType:"S'applique au type de ressource",equipmentTypeHelp:"Sélectionnez à quel type de ressource cette catégorie de prix s'applique"},it:{prices:"Prezzi",categories:"Categorie",close:"Chiudi",currentPrice:"Prezzo attuale",active:"Attivo",noPricesSet:"Nessun prezzo impostato per questa categoria.",validFrom:"Valido dal",selectDate:"Seleziona data",priceAmount:"Prezzo",newPriceFromDate:"Nuovo prezzo dalla data",createCategoriesFirst:"Crea prima le categorie di prezzo (scheda Categorie).",editCategory:"Modifica categoria prezzo",newCategory:"Nuova categoria prezzo",categoryNamePlaceholder:"es. Adulto, Bambino...",categoryDescPlaceholder:"es. 3â12 anni, Guida la propria motoslitta",descriptionHelp:"Mostrato sotto il nome del prezzo nella prenotazione",requireDob:"Richiedi data di nascita",requireDobHelp:"I partecipanti devono inserire la data di nascita nel flusso di prenotazione",minimumAge:"Età minima",maximumAge:"Età massima",ageValidationHelp:"L'età viene verificata rispetto alla data di nascita alla prenotazione",ageTooYoung:"Età minima per {name} è {age}",ageTooOld:"Età massima per {name} è {age}",noCategoriesYet:"Nessuna categoria di prezzo creata.",addCategory:"Aggiungi categoria",sectionBasicInfo:"Informazioni di base",sectionParticipantRules:"Regole per i partecipanti",sectionResourceUsage:"Utilizzo delle risorse",priceName:"Nome del prezzo",priceNameHelp:"Il nome mostrato al cliente nella prenotazione",shortDescription:"Breve descrizione (facoltativo)",howEquipmentUsed:"Come viene utilizzata la risorsa?",sharedUse:"Capacità condivisa",sharedUseDesc:"Più partecipanti possono condividere la stessa risorsa",ownUnit:"Un'unità per prenotazione",ownUnitDesc:"Ogni prenotazione riserva un'intera unità ",sharedHint:"Il sistema calcola automaticamente quante unità sono necessarie in base al numero di partecipanti e alla capacità della risorsa.",exclusiveHint:"Ogni prenotazione riserva un'intera unità .",equipmentType:"Si applica al tipo di risorsa",equipmentTypeHelp:"Seleziona a quale tipo di risorsa si applica questa categoria di prezzo"}},ob={en:{frequency:"Frequency",every:"Every",daily:"Daily",weekly:"Weekly",monthly:"Monthly",days:"days",weeks:"weeks",months:"months",weekdays:"Weekdays",monthlyType:"Monthly type",onDate:"On date",onWeekday:"On weekday",date:"Date:",ordinal1:"1st",ordinal2:"2nd",ordinal3:"3rd",ordinal4:"4th",last:"Last"},no:{frequency:"Frekvens",every:"Hver",daily:"Daglig",weekly:"Ukentlig",monthly:"MÃ¥nedlig",days:"dager",weeks:"uker",months:"mÃ¥neder",weekdays:"Ukedager",monthlyType:"MÃ¥nedlig type",onDate:"PÃ¥ dato",onWeekday:"PÃ¥ ukedag",date:"Dato:",ordinal1:"1. (første)",ordinal2:"2. (andre)",ordinal3:"3. (tredje)",ordinal4:"4. (fjerde)",last:"Siste"},de:{frequency:"Häufigkeit",every:"Jede",daily:"Täglich",weekly:"Wöchentlich",monthly:"Monatlich",days:"Tage",weeks:"Wochen",months:"Monate",weekdays:"Wochentage",monthlyType:"Monatlicher Typ",onDate:"Am Datum",onWeekday:"Am Wochentag",date:"Datum:",ordinal1:"1.",ordinal2:"2.",ordinal3:"3.",ordinal4:"4.",last:"Letzter"},es:{frequency:"Frecuencia",every:"Cada",daily:"Diario",weekly:"Semanal",monthly:"Mensual",days:"dÃas",weeks:"semanas",months:"meses",weekdays:"DÃas de la semana",monthlyType:"Tipo mensual",onDate:"En fecha",onWeekday:"En dÃa de semana",date:"Fecha:",ordinal1:"1°",ordinal2:"2°",ordinal3:"3°",ordinal4:"4°",last:"Ãltimo"},fr:{frequency:"Fréquence",every:"Tous les",daily:"Quotidien",weekly:"Hebdomadaire",monthly:"Mensuel",days:"jours",weeks:"semaines",months:"mois",weekdays:"Jours de la semaine",monthlyType:"Type mensuel",onDate:"à la date",onWeekday:"Au jour de semaine",date:"Date :",ordinal1:"1er",ordinal2:"2e",ordinal3:"3e",ordinal4:"4e",last:"Dernier"}
478,it:{frequency:"Frequenza",every:"Ogni",daily:"Giornaliero",weekly:"Settimanale",monthly:"Mensile",days:"giorni",weeks:"settimane",months:"mesi",weekdays:"Giorni della settimana",monthlyType:"Tipo mensile",onDate:"Alla data",onWeekday:"Al giorno della settimana",date:"Data:",ordinal1:"1°",ordinal2:"2°",ordinal3:"3°",ordinal4:"4°",last:"Ultimo"}},sb={en:{notFound:"Series not found",back:"Back",from:"From",occurrences:"occurrences",slots:"slots",everyDay:"Every day",everyNDays:"Every {n} days",everyWeekdays:"Every {days}",everyNWeeksWeekdays:"Every {n} weeks, {days}",dayOfMonth:"{day}th of every month",nthWeekdayOfMonth:"{nth} {weekday} of every month",departure:"departure",departures:"departures",noDepartures:"No departures on this day.",selectDatePrompt:"Select a date to see departures."},no:{notFound:"Serie ikke funnet",back:"Tilbake",from:"Fra",occurrences:"forekomster",slots:"luker",everyDay:"Hver dag",everyNDays:"Hver {n}. dag",everyWeekdays:"Hver {days}",everyNWeeksWeekdays:"Hver {n}. uke, {days}",dayOfMonth:"Den {day}. hver måned",nthWeekdayOfMonth:"{nth} {weekday} hver måned",departure:"avgang",departures:"avganger",noDepartures:"Ingen avganger denne dagen.",selectDatePrompt:"Velg en dato for å se avganger."},de:{notFound:"Serie nicht gefunden",back:"Zurück",from:"Ab",occurrences:"Vorkommen",slots:"Zeitfenster",everyDay:"Jeden Tag",everyNDays:"Alle {n} Tage",everyWeekdays:"Jeden {days}",everyNWeeksWeekdays:"Alle {n} Wochen, {days}",dayOfMonth:"Am {day}. jedes Monats",nthWeekdayOfMonth:"{nth} {weekday}
478 jedes Monats",departure:"Abfahrt",departures:"Abfahrten",noDepartures:"Keine Abfahrten an diesem Tag.",selectDatePrompt:"Wählen Sie ein Datum, um Abfahrten zu sehen."},es:{notFound:"Serie no encontrada",back:"Atrás",from:"Desde",occurrences:"ocurrencias",slots:"franjas",everyDay:"Todos los dÃas",everyNDays:"Cada {n} dÃas",everyWeekdays:"Cada {days}",everyNWeeksWeekdays:"Cada {n} semanas, {days}",dayOfMonth:"DÃa {day} de cada mes",nthWeekdayOfMonth:"{nth} {weekday} de cada mes",departure:"salida",departures:"salidas",noDepartures:"No hay salidas este dÃa.",selectDatePrompt:"Seleccione una fecha para ver las salidas."},fr:{notFound:"Série introuvable",back:"Retour",from:"à partir de",occurrences:"occurrences",slots:"créneaux",everyDay:"Tous les jours",everyNDays:"Tous les {n} jours",everyWeekdays:"Chaque {days}",everyNWeeksWeekdays:"Toutes les {n} semaines, {days}",dayOfMonth:"Le {day} de chaque mois",nthWeekdayOfMonth:"{nth} {weekday} de chaque mois",departure:"départ",departures:"départs",noDepartures:"Aucun départ ce jour.",selectDatePrompt:"Sélectionnez une date pour voir les départs."},it:{notFound:"Serie non trovata",back:"Indietro",from:"Dal",occurrences:"occorrenze",slots:"slot",everyDay:"Ogni giorno",everyNDays:"Ogni {n} giorni",everyWeekdays:"Ogni {days}",everyNWeeksWeekdays:"Ogni {n} settimane, {days}",dayOfMonth:"Il {day} di ogni mese",nthWeekdayOfMonth:"{nth} {weekday} di ogni mese",departure:"partenza",departures:"partenze",noDepartures:"Nessuna partenza in questo giorno.",selectDatePrompt:"Seleziona una data per vedere le partenze."}},lb={en:{title:"Participants",contactPerson:"Contact person",tickets:"Tickets",total:"Total",confirmed:"Confirmed",paid:"Paid",noBookingsYet:"No bookings yet",participant:"pax",participants:"pax",booking:"booking",bookings:"bookings",years:"yrs"},no:{title:"PÃ¥meldte",contactPerson:"Kontaktperson",tickets:"Billetter",total:"Totalt",confirmed:"Bekreftet",paid:"Betalt",noBookingsYet:"Ingen bookinger ennÃ¥",participant:"deltaker",participants:"deltakere",booking:"booking",bookings:"bookinger",years:"Ã¥r"},de:{title:"Teilnehmer",contactPerson:"Kontaktperson",tickets:"Tickets",total:"Gesamt",confirmed:"Bestätigt",paid:"Bezahlt",noBookingsYet:"Noch keine Buchungen",participant:"Teiln.",participants:"Teiln.",booking:"Buchung",bookings:"Buchungen",years:"J."},es:{title:"Participantes",contactPerson:"Persona de contacto",tickets:"Entradas",total:"Total",confirmed:"Confirmado",paid:"Pagado",noBookingsYet:"Aún no hay reservas",participant:"partic.",participants:"partic.",booking:"reserva",bookings:"reservas",years:"años"},fr:{title:"Participants",contactPerson:"Personne de contact",tickets:"Billets",total:"Total",confirmed:"Confirmé",paid:"Payé",noBookingsYet:"Aucune réservation",participant:"partic.",participants:"partic.",booking:"réservation",bookings:"réservations",years:"ans"},it:{title:"Partecipanti",contactPerson:"Persona di contatto",tickets:"Biglietti",total:"Totale",confirmed:"Confermato",paid:"Pagato",noBookingsYet:"Nessuna prenotazione",participant:"part.",participants:"part.",booking:"prenotazione",bookings:"prenotazioni",years:"anni"}},cb={en:{settingsHelp:"Create discount codes for your booking pages.",newPromoCode:"New promo code",searchCode:"Search for code...",noCodesYet:"No promo codes yet",editPromoCode:"Edit promo code",code:"Code",type:"Type",percent:"Percent",amount:"Amount",value:"Value",validFrom:"Valid from",validTo:"Valid to",maxRedemptions:"Max redemptions",minOrderAmount:"Min. order amount",unlimited:"Unlimited",none:"None",active:"Active",disabled:"Disabled",used:"used",codeCreated:"Promo code created",codeUpdated:"Promo code updated",activate:"Activate",deactivate:"Deactivate",until:"until",exampleCode:"e.g. SUMMER25"},no:{settingsHelp:"Opprett rabattkoder for bookingsidene dine.",newPromoCode:"Ny rabattkode",searchCode:"Søk etter kode...",noCodesYet:"Ingen rabattkoder ennÃ¥",editPromoCode:"Rediger rabattkode",code:"Kode",type:"Type",percent:"Prosent",amount:"Beløp",value:"Verdi",validFrom:"Gyldig fra",validTo:"Gyldig til",maxRedemptions:"Maks innløsninger",minOrderAmount:"Min. ordrebeløp",unlimited:"Ubegrenset",none:"Ingen",active:"Aktiv",disabled:"Deaktivert",used:"brukt",codeCreated:"Rabattkode opprettet",codeUpdated:"Rabattkode oppdatert",activate:"Aktiver",deactivate:"Deaktiver",until:"til",exampleCode:"F.eks. SOMMER25"},de:{settingsHelp:"Erstellen Sie Rabattcodes für Ihre Buchungsseiten.",newPromoCode:"Neuer Rabattcode",searchCode:"Code suchen...",noCodesYet:"Noch keine Rabattcodes",editPromoCode:"Rabattcode bearbeiten",code:"Code",type:"Typ",percent:"Prozent",amount:"Betrag",value:"Wert",validFrom:"Gültig ab",validTo:"Gültig bis",maxRedemptions:"Max. Einlösungen",minOrderAmount:"Min. Bestellbetrag",unlimited:"Unbegrenzt",none:"Keine",active:"Aktiv",disabled:"Deaktiviert",used:"eingelöst",codeCreated:"Rabattcode erstellt",codeUpdated:"Rabattcode aktualisiert",activate:"Aktivieren",deactivate:"Deaktivieren",until:"bis",exampleCode:"z.B. SOMMER25"},es:{settingsHelp:"Cree códigos de descuento para sus páginas de reservas.",newPromoCode:"Nuevo código promocional",searchCode:"Buscar código...",noCodesYet:"Aún no hay códigos promocionales",editPromoCode:"Editar código promocional",code:"Código",type:"Tipo",percent:"Porcentaje",amount:"Importe",value:"Valor",validFrom:"Válido desde",validTo:"Válido hasta",maxRedemptions:"Máx. canjes",minOrderAmount:"Importe mÃn. de pedido",unlimited:"Ilimitado",none:"Ninguno",active:"Activo",disabled:"Desactivado",used:"canjeado",codeCreated:"Código promocional creado",codeUpdated:"Código promocional actualizado",activate:"Activar",deactivate:"Desactivar",until:"hasta",exampleCode:"ej. VERANO25"},fr:{settingsHelp:"Créez des codes de réduction pour vos pages de réservation.",newPromoCode:"Nouveau code promo",searchCode:"Rechercher un code...",noCodesYet:"Aucun code promo",editPromoCode:"Modifier le code promo",code:"Code",type:"Type",percent:"Pourcentage",amount:"Montant",value:"Valeur",validFrom:"Valide à partir de",validTo:"Valide jusqu'au",maxRedemptions:"Utilisations max.",minOrderAmount:"Montant min. de commande",unlimited:"Illimité",none:"Aucun",active:"Actif",disabled:"Désactivé",used:"utilisé",codeCreated:"Code promo créé",codeUpdated:"Code promo mis à jour",activate:"Activer",deactivate:"Désactiver",until:"jusqu'au",exampleCode:"ex. ETE25"},it:{settingsHelp:"Crea codici sconto per le tue pagine di prenotazione.",newPromoCode:"Nuovo codice promo",searchCode:"Cerca codice...",noCodesYet:"Nessun codice promo",editPromoCode:"Modifica codice promo",code:"Codice",type:"Tipo",percent:"Percentuale",amount:"Importo",value:"Valore",validFrom:"Valido dal",validTo:"Valido fino al",maxRedemptions:"Max. utilizzi",minOrderAmount:"Importo min. ordine",unlimited:"Illimitato",none:"Nessuno",active:"Attivo",disabled:"Disattivato",used:"utilizzato",codeCreated:"Codice promo creato",code
478Updated:"Codice promo aggiornato",activate:"Attiva",deactivate:"Disattiva",until:"fino al",exampleCode:"es. ESTATE25"}},db={en:{title:"Payment log",subtitle:"Overview of Stripe events and any errors.",all:"All",success:"Success",failed:"Failed",info:"Info",hours24:"24 hours",days7:"7 days",days30:"30 days",time:"Time",event:"Event",bookingRef:"Booking ref",customer:"Customer",amount:"Amount",message:"Message",logDetails:"Log details",errorDetails:"Error details",errorCode:"Code:",errorType:"Type:",errorMessage:"Message:",copy:"Copy",copied:"Copied",rawData:"Raw data (JSON)",noLogsFound:"No logs found.",page:"Page",environment:"Environment",provider:"Provider",checkStripe:"Check Stripe Dashboard for more information.",searchPlaceholder:"Search reference, email, Stripe ID...",email:"Email",bookingId:"Booking ID",categoryCheckout:"Checkout",categoryPayment:"Payment",categoryCharge:"Charge"},no:{title:"Betalingslogg",subtitle:"Oversikt over Stripe-hendelser og eventuelle feil.",all:"Alle",success:"Suksess",failed:"Feilet",info:"Info",hours24:"24 timer",days7:"7 dager",days30:"30 dager",time:"Tid",event:"Hendelse",bookingRef:"Bookingref",customer:"Kunde",amount:"Beløp",message:"Melding",logDetails:"Loggdetaljer",errorDetails:"Feildetaljer",errorCode:"Kode:",errorType:"Type:",errorMessage:"Melding:",copy:"Kopier",copied:"Kopiert",rawData:"RÃ¥-data (JSON)",noLogsFound:"Ingen logger funnet.",page:"Side",environment:"Miljø",provider:"Provider",checkStripe:"Sjekk Stripe Dashboard for mer informasjon.",searchPlaceholder:"Søk referanse, e-post, Stripe ID...",email:"E-post",bookingId:"Booking ID",categoryCheckout:"Checkout",categoryPayment:"Betaling",categoryCharge:"Belastning"},de:{title:"Zahlungsprotokoll",subtitle:"Ãbersicht über Stripe-Ereignisse und Fehler.",all:"Alle",success:"Erfolg",failed:"Fehlgeschlagen",info:"Info",hours24:"24 Stunden",days7:"7 Tage",days30:"30 Tage",time:"Zeit",event:"Ereignis",bookingRef:"Buchungsref.",customer:"Kunde",amount:"Betrag",message:"Nachricht",logDetails:"Protokolldetails",errorDetails:"Fehlerdetails",errorCode:"Code:",errorType:"Typ:",errorMessage:"Nachricht:",copy:"Kopieren",copied:"Kopiert",rawData:"Rohdaten (JSON)",noLogsFound:"Keine Protokolle gefunden.",page:"Seite",environment:"Umgebung",provider:"Anbieter",checkStripe:"Prüfen Sie das Stripe-Dashboard für weitere Informationen.",searchPlaceholder:"Referenz, E-Mail, Stripe-ID suchen...",email:"E-Mail",bookingId:"Buchungs-ID",categoryCheckout:"Checkout",categoryPayment:"Zahlung",categoryCharge:"Belastung"},es:{title:"Registro de pagos",subtitle:"Resumen de eventos de Stripe y posibles errores.",all:"Todos",success:"Ãxito",failed:"Fallido",info:"Info",hours24:"24 horas",days7:"7 dÃas",days30:"30 dÃas",time:"Hora",event:"Evento",bookingRef:"Ref. reserva",customer:"Cliente",amount:"Importe",message:"Mensaje",logDetails:"Detalles del registro",errorDetails:"Detalles del error",errorCode:"Código:",errorType:"Tipo:",errorMessage:"Mensaje:",copy:"Copiar",copied:"Copiado",rawData:"Datos sin procesar (JSON)",noLogsFound:"No se encontraron registros.",page:"Página",environment:"Entorno",provider:"Proveedor",checkStripe:"Consulte el panel de Stripe para más información.",searchPlaceholder:"Buscar referencia, email, ID de Stripe...",email:"Email",bookingId:"ID de reserva",categoryCheckout:"Checkout",categoryPayment:"Pago",categoryCharge:"Cargo"},fr:{title:"Journal des paiements",subtitle:"Aperçu des événements Stripe et des erreurs éventuelles.",all:"Tous",success:"Succès",failed:"Ãchoué",info:"Info",hours24:"24 heures",days7:"7 jours",days30:"30 jours",time:"Heure",event:"Ãvénement",bookingRef:"Réf. réservation",customer:"Client",amount:"Montant",message:"Message",logDetails:"Détails du journal",errorDetails:"Détails de l'erreur",errorCode:"Code :",errorType:"Type :",errorMessage:"Message :",copy:"Copier",copied:"Copié",rawData:"Données brutes (JSON)",noLogsFound:"Aucun journal trouvé.",page:"Page",environment:"Environnement",provider:"Fournisseur",checkStripe:"Consultez le tableau de bord Stripe pour plus d'informations.",searchPlaceholder:"Rechercher référence, email, ID Stripe...",email:"Email",bookingId:"ID réservation",categoryCheckout:"Checkout",categoryPayment:"Paiement",categoryCharge:"Charge"},it:{title:"Registro pagamenti",subtitle:"Panoramica degli eventi Stripe e degli errori.",all:"Tutti",success:"Successo",failed:"Fallito",info:"Info",hours24:"24 ore",days7:"7 giorni",days30:"30 giorni",time:"Ora",event:"Evento",bookingRef:"Rif. prenotazione",customer:"Cliente",amount:"Importo",message:"Messaggio",logDetails:"Dettagli registro",errorDetails:"Dettagli errore",errorCode:"Codice:",errorType:"Tipo:",errorMessage:"Messaggio:",copy:"Copia",copied:"Copiato",rawData:"Dati grezzi (JSON)",noLogsFound:"Nessun registro trovato.",page:"Pagina",environment:"Ambiente",provider:"Fornitore",checkStripe:"C
478ontrolla il dashboard Stripe per ulteriori informazioni.",searchPlaceholder:"Cerca riferimento, email, ID Stripe...",email:"Email",bookingId:"ID prenotazione",categoryCheckout:"Checkout",categoryPayment:"Pagamento",categoryCharge:"Addebito"}},ub={en:{title:"Partner Ledger",date:"Date",subtitle:"Financial overview of partner transactions and settlements.",back:"Back",searchPlaceholder:"Search customer, activity, company...",noTransactions:"No transactions found.",paid:"Paid",paidBy:"Paid by",refunded:"Refunded",partner:"Partner",partnerCol:"Partner",moneyIn:"Money in",moneyOut:"Money out",incoming:"Incoming",outgoing:"Outgoing",ownSale:"Own sale",soldFor:"Sold for",soldBy:"Sold by",settlement:"Settlement",refund:"Refund",commission:"Commission",directSales:"Direct sales",soldForPartners:"We sold for partner",partnersSoldForUs:"Partner sold for us",customer:"Customer",reference:"Reference",grossAmount:"Gross",netAmount:"Net",status:"Status",paidPartner:"Paid",typeCol:"Type",typeBooking:"Booking",typeSale:"Paid",typePaymentIn:"Payment in",typePaymentOut:"Payment out",typeClaim:"Partner owes us",typeDebt:"We owe partner",addTransaction:"Add transaction",addTransactionTitle:"Add transaction",amount:"Amount",transactionAdded:"Transaction added",typeRequired:"Type is required",dateRequired:"Date is required",amountRequired:"Amount is required",subtotal:"Subtotal",allTab:"All",partnerSalesTab:"Partner sales",newSettlement:"New settlement",newSettlementTitle:"New settlement",settlementReceived:"We received settlement",settlementSent:"We sent settlement",settlementAdded:"Settlement added",filterByPartner:"Filter by partner",allPartners:"All partners",partnersSelected:"partners selected"},no:{title:"Partnerregnskap",date:"Dato",subtitle:"Oversikt over partnertransaksjoner og oppgjør.",back:"Tilbake",searchPlaceholder:"Søk kunde, aktivitet, firma...",noTransactions:"Ingen transaksjoner funnet.",paid:"Betalt",paidBy:"Betalt av",refunded:"Refundert",partner:"Partner",partnerCol:"Partner",moneyIn:"Inn på konto",moneyOut:"Ut av konto",incoming:"Innbetaling",outgoing:"Utbetaling",ownSale:"Eget salg",soldFor:"Solgt for",soldBy:"Solgt av",settlement:"Oppgjør",refund:"Refusjon",commission:"Provisjon",directSales:"Direktesalg",soldForPartners:"Vi solgte for partner",partnersSoldForUs:"Partner solgte for oss",customer:"Kunde",reference:"Referanse",grossAmount:"Brutto",netAmount:"Netto",status:"Status",paidPartner:"Betalt",typeCol:"Type",typeBooking:"Booking",typeSale:"Betalt",typePaymentIn:"Innbetaling",typePaymentOut:"Utbetaling",typeClaim:"Partner skylder oss",typeDebt:"Vi skylder partner",addTransaction:"Legg til transaksjon",addTransactionTitle:"Legg til transaksjon",amount:"Beløp",transactionAdded:"Transaksjon lagt til",typeRequired:"Type er påkrevd",dateRequired:"Dato er påkrevd",amountRequired:"Beløp er påkrevd",subtotal:"Sum",allTab:"Alle",partnerSalesTab:"Partnersalg",newSettlement:"Nytt oppgjør",newSettlementTitle:"Nytt oppgjør",settlementReceived:"Vi har mottatt oppgjør",settlementSent:"Vi har sendt oppgjør",settlementAdded:"Oppgjør lagt til",filterByPartner:"Filtrer på partner",allPartners:"Alle partnere",partnersSelected:"partnere valgt"},de:{title:"Partnerhauptbuch",date:"Datum",subtitle:"Finanzübersicht der Partnertransaktionen und Abrechnungen.",back:"Zurück",searchPlaceholder:"Kunde, Aktivität, Firma suchen...",noTransactions:"Keine Transaktionen gefunden.",paid:"Bezahlt",paidBy:"Bezahlt von",refunded:"Erstattet",partner:"Partner",partnerCol:"Partner",moneyIn:"Eingang",moneyOut:"Ausgang",incoming:"Eingehend",outgoing:"Ausgehend",ownSale:"Eigenverkauf",soldFor:"Verkauft für",soldBy:"Verkauft von",settlement:"Abrechnung",refund:"Erstattung",commission:"Provision",directSales:"Direktverkauf",soldForPartners:"Wir verkauften für Partner",partnersSoldForUs:"Partner verkaufte für uns",customer:"Kunde",reference:"Referenz",grossAmount:"Brutto",netAmount:"Netto",status:"Status",paidPartner:"Bezahlt",typeCol:"Typ",typeBooking:"Buchung",typeSale:"Bezahlt",typePaymentIn:"Einzahlung",typePaymentOut:"Auszahlung",typeClaim:"Partner schuldet uns",typeDebt:"Wir schulden Partner",addTransaction:"Transaktion hinzufügen",addTransactionTitle:"Transaktion hinzufügen",amount:"Betrag",transactionAdded:"Transaktion hinzugefügt",typeRequired:"Typ erforderlich",dateRequired:"Datum erforderlich",amountRequired:"Betrag erforderlich",subtotal:"Zwischensumme",allTab:"Alle",partnerSalesTab:"Partnerverkäufe",newSettlement:"Neue Abrechnung",newSettlementTitle:"Neue Abrechnung",settlementReceived:"Abrechnung erhalten",settlementSent:"Abrechnung gesendet",settlementAdded:"Abrechnung hinzugefügt",filterByPartner:"Nach Partner filtern",allPartners:"Alle Partner",partnersSelected:"Partner ausgewählt"},es:{title:"Libro de socios",date:"Fecha",subtitle:"Resumen financiero de transacciones y liquidaciones con socios.",back:"Atrás",searchPlaceholder:"Buscar cliente, actividad, empresa...",noTransactions:"No se encontraron transacciones.",paid:"Pagado",paidBy:"Pagado por",refunded:"Reembolsado",partner:"Socio",partnerCol:"Socio",moneyIn:"Ingresos",moneyOut:"Egresos",incoming:"Entrante",outgoing:"Saliente",ownSale:"Venta propia",soldFor:"Vendido para",soldBy:"Vendido por",settlement:"Liquidación",refund:"Reembolso",commission:"Comisión",directSales:"Venta directa",
478soldForPartners:"Vendimos para socio",partnersSoldForUs:"Socio vendió para nosotros",customer:"Cliente",reference:"Referencia",grossAmount:"Bruto",netAmount:"Neto",status:"Estado",paidPartner:"Pagado",typeCol:"Tipo",typeBooking:"Reserva",typeSale:"Pagado",typePaymentIn:"Cobro",typePaymentOut:"Pago",typeClaim:"Socio nos debe",typeDebt:"Debemos al socio",addTransaction:"Añadir transacción",addTransactionTitle:"Añadir transacción",amount:"Importe",transactionAdded:"Transacción añadida",typeRequired:"El tipo es obligatorio",dateRequired:"La fecha es obligatoria",amountRequired:"El importe es obligatorio",subtotal:"Subtotal",allTab:"Todos",partnerSalesTab:"Ventas de socios",newSettlement:"Nueva liquidación",newSettlementTitle:"Nueva liquidación",settlementReceived:"Hemos recibido liquidación",settlementSent:"Hemos enviado liquidación",settlementAdded:"Liquidación añadida",filterByPartner:"Filtrar por socio",allPartners:"Todos los socios",partnersSelected:"socios seleccionados"},fr:{title:"Grand livre partenaire",date:"Date",subtitle:"Aperçu financier des transactions et règlements partenaires.",back:"Retour",searchPlaceholder:"Rechercher client, activité, entreprise...",noTransactions:"Aucune transaction trouvée.",paid:"Payé",paidBy:"Payé par",refunded:"Remboursé",partner:"Partenaire",partnerCol:"Partenaire",moneyIn:"Entrées",moneyOut:"Sorties",incoming:"Entrant",outgoing:"Sortant",ownSale:"Vente propre",soldFor:"Vendu pour",soldBy:"Vendu par",settlement:"Règlement",refund:"Remboursement",commission:"Commission",directSales:"Ventes directes",soldForPartners:"Nous avons vendu pour le partenaire",partnersSoldForUs:"Le partenaire a vendu pour nous",customer:"Client",reference:"Référence",grossAmount:"Brut",netAmount:"Net",status:"Statut",paidPartner:"Payé",typeCol:"Type",typeBooking:"Réservation",typeSale:"Payé",typePaymentIn:"Encaissement",typePaymentOut:"Décaissement",typeClaim:"Le partenaire nous doit",typeDebt:"Nous devons au partenaire",addTransaction:"Ajouter transaction",addTransactionTitle:"Ajouter transaction",amount:"Montant",transactionAdded:"Transaction ajoutée",typeRequired:"Le type est requis",dateRequired:"La date est requise",amountRequired:"Le montant est requis",subtotal:"Sous-total",allTab:"Tous",partnerSalesTab:"Ventes partenaires",newSettlement:"Nouveau règlement",newSettlementTitle:"Nouveau règlement",settlementReceived:"Règlement reçu",settlementSent:"Règlement envoyé",settlementAdded:"Règlement ajouté",filterByPartner:"Filtrer par partenaire",allPartners:"Tous les partenaires",partnersSelected:"partenaires sélectionnés"},it:{title:"Registro partner",date:"Data",subtitle:"Panoramica finanziaria delle transazioni e regolamenti con i partner.",back:"Indietro",searchPlaceholder:"Cerca cliente, attività , azienda...",noTransactions:"Nessuna transazione trovata.",paid:"Pagato",paidBy:"Pagato da",refunded:"Rimborsato",partner:"Partner",partnerCol:"Partner",moneyIn:"Entrate",moneyOut:"Uscite",incoming:"In entrata",outgoing:"In uscita",ownSale:"Vendita propria",soldFor:"Venduto per",soldBy:"Venduto da",settlement:"Regolamento",refund:"Rimborso",commission:"Commissione",directSales:"Vendite dirette",soldForPartners:"Abbiamo venduto per il partner",partnersSoldForUs:"Il partner ha venduto per noi",customer:"Cliente",reference:"Riferimento",grossAmount:"Lordo",netAmount:"Netto",status:"Stato",paidPartner:"Pagato",typeCol:"Tipo",typeBooking:"Prenotazione",typeSale:"Pagato",typePaymentIn:"Incasso",typePaymentOut:"Pagamento",typeClaim:"Il partner ci deve",typeDebt:"Dobbiamo al partner",addTransaction:"Aggiungi transazione",addTransactionTitle:"Aggiungi transazione",amount:"Importo",transactionAdded:"Transazione aggiunta",typeRequired:"Il tipo è obbligatorio",dateRequired:"La data è obbligatoria",amountRequired:"L'importo è obbligatorio",subtotal:"Subtotale",allTab:"Tutti",partnerSalesTab:"Vendite partner",newSettlement:"Nuovo regolamento",newSettlementTitle:"Nuovo regolamento",settlementReceived:"Regolamento ricevuto",settlementSent:"Regolamento inviato",settlementAdded:"Regolamento aggiunto",filterByPartner:"Filtra per partner",allPartners:"Tutti i partner",partnersSelected:"partner selezionati"}},mb={en:{signIn:"Sign in",signUp:"Sign up",continueWithGoogle:"Continue with Google",or:"or",email:"Email",password:"Password",fullName:"Full name",rememberMe:"Remember me",logIn:"Log in",createAccount:"Create account",newUser:"New user?",alreadyHaveAccount:"Already have an account?",forgotPassword:"Forgot password?",createYourAccount:"Create your account",verifyEmail:"Verify your email address",resetPassword:"Reset password",enterCode:"Enter the code",chooseNewPassword:"Choose new password",sendCode:"Send code",confirm:"Confirm",confirmCode:"Confirm code",backToLogin:"Back to login",resendCode:"Resend code",verificationSent:"Check your email",codeSentTo:"We've sent a verification code to",passwordUpdated:"Password updated!",passwordTooShort:"Password too short",loginFailed:"Login failed",signupFailed:"Signup failed",error:"Error",couldNotSendCode:"Could not send verification code",checkEmail:"We've sent you a verification code.",invalidCode:"Invalid code",accountVerified:"Account verified!",updatePassword:"Update password",resetDescription:"Enter your email address and we'll send you a code to reset your password.",newPasswordPlaceholder:"New password (min 6 characters)",passwordMinLength:"Password must be at least 6 characters.",googleLoginFailed:"Google login failed",preferredLanguage:"Preferred language"},no:{signIn:"Logg inn",signUp:"Registrer deg",continueWithGoogle:"Fortsett med Google",or:"eller",email:"E-post",password:"Passord",fullName:"Fullt navn",rememberMe:"Husk meg",logIn:"Logg inn",createAccount:"Opprett konto",newUser:"Ny bruker?",alreadyHaveAccount:"Har du allerede en konto?",forgotPassword:"Glemt passord?",createYourAccount:"Opprett din konto",verifyEmail:"Bekreft e-postadressen din",resetPassword:"Tilbakestill passord",enterCode:"Skriv inn koden",chooseNewPassword:"Velg nytt passord",sendCode:"Send kode",confirm:"Bekreft",confirmCode:"Bekreft kode",backToLogin:"Tilbake til innlogging",resendCode:"Send kode på nytt",verificationSent:"Sjekk e-posten din",codeSentTo:"Vi har sendt en bekreftelseskode til",passwordUpdated:"Passord o
478ppdatert!",passwordTooShort:"For kort passord",loginFailed:"Innlogging feilet",signupFailed:"Registrering feilet",error:"Feil",couldNotSendCode:"Kunne ikke sende bekreftelseskode",checkEmail:"Vi har sendt deg en bekreftelseskode.",invalidCode:"Ugyldig kode",accountVerified:"Konto verifisert!",updatePassword:"Oppdater passord",resetDescription:"Skriv inn e-postadressen din, sÃ¥ sender vi deg en kode for Ã¥ tilbakestille passordet.",newPasswordPlaceholder:"Nytt passord (minst 6 tegn)",passwordMinLength:"Passordet mÃ¥ være minst 6 tegn.",googleLoginFailed:"Google-innlogging feilet",preferredLanguage:"Foretrukket sprÃ¥k"},de:{signIn:"Anmelden",signUp:"Registrieren",continueWithGoogle:"Mit Google fortfahren",or:"oder",email:"E-Mail",password:"Passwort",fullName:"Vollständiger Name",rememberMe:"Angemeldet bleiben",logIn:"Einloggen",createAccount:"Konto erstellen",newUser:"Neuer Benutzer?",alreadyHaveAccount:"Bereits ein Konto?",forgotPassword:"Passwort vergessen?",createYourAccount:"Konto erstellen",verifyEmail:"E-Mail-Adresse bestätigen",resetPassword:"Passwort zurücksetzen",enterCode:"Code eingeben",chooseNewPassword:"Neues Passwort wählen",sendCode:"Code senden",confirm:"Bestätigen",confirmCode:"Code bestätigen",backToLogin:"Zurück zur Anmeldung",resendCode:"Code erneut senden",verificationSent:"Prüfen Sie Ihre E-Mails",codeSentTo:"Wir haben einen Bestätigungscode gesendet an",passwordUpdated:"Passwort aktualisiert!",passwordTooShort:"Passwort zu kurz",loginFailed:"Anmeldung fehlgeschlagen",signupFailed:"Registrierung fehlgeschlagen",error:"Fehler",couldNotSendCode:"Bestätigungscode konnte nicht gesendet werden",checkEmail:"Wir haben Ihnen einen Bestätigungscode gesendet.",invalidCode:"Ungültiger Code",accountVerified:"Konto verifiziert!",updatePassword:"Passwort aktualisieren",resetDescription:"Geben Sie Ihre E-Mail-Adresse ein und wir senden Ihnen einen Code zum Zurücksetzen Ihres Passworts.",newPasswordPlaceholder:"Neues Passwort (min. 6 Zeichen)",passwordMinLength:"Das Passwort muss mindestens 6 Zeichen lang sein.",googleLoginFailed:"Google-Anmeldung fehlgeschlagen",preferredLanguage:"Bevorzugte Sprache"},es:{signIn:"Iniciar sesión",signUp:"Registrarse",continueWithGoogle:"Continuar con Google",or:"o",email:"Correo electrónico",password:"Contraseña",fullName:"Nombre completo",rememberMe:"Recordarme",logIn:"Iniciar sesión",createAccount:"Crear cuenta",newUser:"¿Nuevo usuario?",alreadyHaveAccount:"¿Ya tiene cuenta?",forgotPassword:"¿Olvidó su contraseña?",createYourAccount:"Cree su cuenta",verifyEmail:"Verifique su dirección de correo",resetPassword:"Restablecer contraseña",enterCode:"Introduzca el código",chooseNewPassword:"Elija nueva contraseña",sendCode:"Enviar código",confirm:"Confirmar",confirmCode:"Confirmar código",backToLogin:"Volver al inicio de sesión",resendCode:"Reenviar código",verificationSent:"Compruebe su correo",codeSentTo:"Hemos enviado un código de verificación a",passwordUpdated:"¡Contraseña actualizada!",passwordTooShort:"Contraseña demasiado corta",loginFailed:"Error de inicio de sesión",signupFailed:"Error de registro",error:"Error",couldNotSendCode:"No se pudo enviar el código de verificación",checkEmail:"Le hemos enviado un código de verificación.",invalidCode:"Código no válido",accountVerified:"¡Cuenta verificada!",updatePassword:"Actualizar contraseña",resetDescription:"Introduzca su correo electrónico y le enviaremos un código para restablecer su contraseña.",newPasswordPlaceholder:"Nueva contraseña (mÃn. 6 caracteres)",passwordMinLength:"La contraseña debe tener al menos 6 caracteres.",googleLoginFailed:"Error de inicio de sesión con Google",preferredLanguage:"Idioma preferido"},fr:{signIn:"Se connecter",signUp:"S'inscrire",continueWithGoogle:"Continuer avec Google",or:"ou",email:"Email",password:"Mot de passe",fullName:"Nom complet",rememberMe:"Se souvenir de moi",logIn:"Se connecter",createAccount:"Créer un compte",newUser:"Nouvel utilisateur ?",alreadyHaveAccount:"Déjà un compte ?",forgotPassword:"Mot de passe oublié ?",createYourAccount:"Créez votre compte",verifyEmail:"Vérifiez votre adresse email",resetPassword:"Réinitialiser le mot de passe",enterCode:"Entrez le code",chooseNewPassword:"Choisissez un nouveau mot de passe",sendCode:"Envoyer le code",confirm:"Confirmer",confirmCode:"Confirmer le code",backToLogin:"Retour à la connexion",resendCode:"Renvoyer le code",verificationSent:"Vérifiez vos emails",codeSentTo:"Nous avons envoyé un code de vérification à ",passwordUpdated:"Mot de passe mis à jour !",passwordTooShort:"Mot de passe trop court",loginFailed:"Ãchec de connexion",signupFailed:"Ãchec d'inscription",error:"Erreur",couldNotSendCode:"Impossible d'envoyer le code de vérification",checkEmail:"Nous vous avons envoyé un code de vérification.",invalidCode:"Code invalide",accountVerified:"Compte vérifié !",updatePassword:"Mettre à jour le mot de passe",resetDescription:"Entrez votre adresse email et nous vous enverrons un code pour réinitialiser votre mot de passe.",newPasswordPlaceholder:"Nouveau mot de passe (min. 6 caractères)",passwordMinLength:"Le mot de passe doit contenir au moins 6 caractères.",googleLoginFailed:"Ãchec de connexion Google",preferredLanguage:"Langue préférée"},it:{signIn:"Accedi",signUp:"Registrati",continueWithGoogle:"Continua con Google",or:"o",email:"Email",password:"Password",fullName:"Nome completo",rememberMe:"Ricordami",logIn:"Accedi",createAccount:"Crea account",newUser:"Nuovo utente?",alreadyHaveAccount:"Hai già un account?",forgotPassword:"Password dimenticata?",createYourAccount:"Crea il tuo account",verifyEmail:"Verifica il tuo indirizzo email",resetPassword:"Reimposta password",enterCode:"Inserisci il codice",chooseNewPassword:"Scegli nuova password",sendCode:"Invia codice",confirm:"Conferma",confirmCode:"Conferma codice",backToLogin:"Torna al login",resendCode:"Rinvia codice",verificationSent:"Controlla la tua email",codeSentTo:"Abbiamo inviato un codice di verifica a",passwordUpdated:"Password aggiornata!",passwordTooShort:"Password troppo corta",loginFailed:"Accesso fallito",signupFailed:"Registrazione fallita",error:"Errore",couldNotSendCode:"Impossibile inviare il codice di verifica",checkEmail:"Ti abbiamo inviato un codice di verifica.",invalidCode:"Codice non valido",accountVerified:"Account verificato!",updatePassword:"Aggiorna password",resetDescription:"Inserisci il tuo indirizzo email e ti invieremo un codice per reimpostare la password.",newPasswordPlaceholder:"Nuova password (min. 6 caratteri)",passwordMinLength:"La password deve contenere almeno 6 caratteri.",googleLoginFailed:"Accesso Google fallito",preferredLanguage:"Lingua preferita"}},pb={en:{title:"Partners",addPartner:"Add partner",searchCompany:"Search for company...",noPartnersYet:"No partners yet.",products:"Products",transactions:"Transactions",commission:"Commission",commissionType:"Commission type",percentage:"Percent",fixed:"Fixed amount",partnerProduct:"Partner product",providedBy:"Provided by {company}",pending:"Pending",active:"Active",disabled:"Disabled",activate:"Activate",disable:"Disable",connect:"Connect",noProductsShared:"No products shared yet.",noTransactionsYet:"No transactions yet.",grossAmount:"Gross",commissionAmount:"Commission",
478netAmount:"Net",enableForResale:"Enable for resale",searchPlaceholder:"Search partners...",partnerConnected:"Partner connected",statusUpdated:"Status updated",productUpdated:"Product updated",deleteConfirm:"Delete this partnership?",partnerDeleted:"Partnership deleted",status:"Status",addProduct:"Add activity",selectActivity:"Select activity...",saved:"Changes saved",weShare:"We share",partnerShares:"Partner shares",noPartnerProducts:"No activities shared by the partner.",country:"Country",newPartner:"New partner",invitePartner:"Invite partner",inviteSend:"Send invitation",inviteSending:"Sending...",inviteHelp:"Send an invitation to a company you want to partner with. They'll receive an email with a link to accept.",inviteMessage:"Message (optional)",inviteMessagePlaceholder:"e.g. We'd love to partner with you for the summer season!",inviteSent:"Invitation sent!",inviteSentFailed:"Could not send invitation",inviteNoToken:"No invitation token provided",inviteNotFound:"Invitation not found",inviteAlreadyUsed:"This invitation has already been used",inviteExpired:"This invitation has expired",inviteNoCompany:"You need to create a company first",inviteSelfError:"Cannot partner with own company",inviteTitle:"Partner invitation",inviteDescription:"invites you to become a partner.",inviteSelectCompany:"Which company should be linked as partner?",inviteConnectAs:"Connect as:",inviteAcceptButton:"Accept invitation",inviteAccepting:"Accepting invitation...",inviteLoading:"Loading invitation...",inviteLoginRequired:"You need to sign in or create an account to accept this invitation.",inviteAccepted:"Partnership accepted!",inviteAcceptFailed:"Could not accept invitation",inviteRedirecting:"Redirecting...",pendingInvitations:"Pending invitations",inviteCompanyName:"Company name",inviteCompanyNamePlaceholder:"e.g. Adventure Tours Ltd",inviteContactPerson:"Contact person",inviteContactPersonPlaceholder:"e.g. John Smith",inviteResend:"Resend",inviteResendFailed:"Could not resend invitation",inviteDelete:"Delete",inviteDeleted:"Invitation deleted",inviteDeleteFailed:"Could not delete invitation",companyDeleted:"deleted",theySoldOurs:"They sold our products",weSoldTheirs:"We sold their products",balanceLabel:"Balance",theyOweUs:"They owe us this amount.",weOweThem:"We owe them this amount.",balanced:"The balance is settled.",registerSettlement:"Register settlement",settlementHistory:"Settlement history",settlementConfirm:"Register a settlement of {amount}? This zeros out the current balance.",settlementRegistered:"Settlement registered",settlementFailed:"Could not register settlement",settlement:"Settlement",refundLabel:"Refund",partnersTab:"Partners",partnerSalesTab:"Partner sales"},no:{title:"Partnere",addPartner:"Legg til partner",searchCompany:"Søk etter firma...",noPartnersYet:"Ingen partnere ennå.",products:"Produkter",transactions:"Transaksjoner",commission:"Provisjon",commissionType:"Provisjonstype",percentage:"Prosent",fixed:"Fast beløp",partnerProduct:"Partnerprodukt",providedBy:"Levert av {company}",pending:"Ventende",active:"Aktiv",disabled:"Deaktivert",activate:"Aktiver",disable:"Deaktiver",connect:"Koble til",noProductsShared:"Ingen produkter delt ennå.",noTransactionsYet:"Ingen transaksjoner ennå.",grossAmount:"Brutto",commissionAmount:"Provisjon",netAmount:"Netto",enableForResale:"Aktiver for videresalg",searchPlaceholder:"Søk partnere...",partnerConnected:"Partner tilkoblet",statusUpdated:"Status oppdatert",productUpdated:"Produkt oppdatert",deleteConfirm:"Slette dette partnerskapet?",partnerDeleted:"Partnerskap slettet",status:"Status",addProduct:"Legg til aktivitet",selectActivity:"Velg aktivitet...",saved:"Endringer lagret",weShare:"Vi deler",partnerShares:"Partner deler",noPartnerProducts:"Ingen aktiviteter delt av partneren.",country:"Land",newPartner:"Ny partner",invitePartner:"Inviter partner",inviteSend:"Send invitasjon",inviteSending:"Sender...",inviteHelp:"Send en invitasjon til et firma du ønsker å samarbeide med. De mottar en e-post med en lenke for å akseptere.",inviteMessage:"Melding (valgfri)",inviteMessagePlaceholder:"f.eks. Vi vil gjerne samarbeide med dere i s
478ommersesongen!",inviteSent:"Invitasjon sendt!",inviteSentFailed:"Kunne ikke sende invitasjon",inviteNoToken:"Ingen invitasjonstoken oppgitt",inviteNotFound:"Invitasjon ikke funnet",inviteAlreadyUsed:"Denne invitasjonen er allerede brukt",inviteExpired:"Denne invitasjonen har utløpt",inviteNoCompany:"Du mÃ¥ opprette et firma først",inviteSelfError:"Kan ikke bli partner med eget firma",inviteTitle:"Partnerinvitasjon",inviteDescription:"inviterer deg til Ã¥ bli partner.",inviteSelectCompany:"Hvilket firma skal kobles som partner?",inviteConnectAs:"Koble som:",inviteAcceptButton:"Aksepter invitasjon",inviteAccepting:"Aksepterer invitasjon...",inviteLoading:"Laster invitasjon...",inviteLoginRequired:"Du mÃ¥ logge inn eller opprette en konto for Ã¥ akseptere denne invitasjonen.",inviteAccepted:"Partnerskap akseptert!",inviteAcceptFailed:"Kunne ikke akseptere invitasjon",inviteRedirecting:"Omdirigerer...",pendingInvitations:"Ventende invitasjoner",inviteCompanyName:"Firmanavn",inviteCompanyNamePlaceholder:"f.eks. Adventure Tours AS",inviteContactPerson:"Kontaktperson",inviteContactPersonPlaceholder:"f.eks. Ola Nordmann",inviteResend:"Send pÃ¥ nytt",inviteResendFailed:"Kunne ikke sende invitasjon pÃ¥ nytt",inviteDelete:"Slett",inviteDeleted:"Invitasjon slettet",inviteDeleteFailed:"Kunne ikke slette invitasjon",companyDeleted:"slettet",theySoldOurs:"De har solgt av vÃ¥re produkter",weSoldTheirs:"Vi har solgt av deres produkter",balanceLabel:"Saldo",theyOweUs:"De skylder oss dette beløpet.",weOweThem:"Vi skylder dem dette beløpet.",balanced:"Saldoen er oppgjort.",registerSettlement:"Registrer oppgjør",settlementHistory:"Oppgjørshistorikk",settlementConfirm:"Registrer et oppgjør pÃ¥ {amount}? Dette nuller ut gjeldende saldo.",settlementRegistered:"Oppgjør registrert",settlementFailed:"Kunne ikke registrere oppgjør",settlement:"Oppgjør",refundLabel:"Refusjon",partnersTab:"Partnere",partnerSalesTab:"Partnersalg"},de:{title:"Partner",addPartner:"Partner hinzufügen",searchCompany:"Firma suchen...",noPartnersYet:"Noch keine Partner.",products:"Produkte",transactions:"Transaktionen",commission:"Provision",commissionType:"Provisionstyp",percentage:"Prozent",fixed:"Festbetrag",partnerProduct:"Partnerprodukt",providedBy:"Bereitgestellt von {company}",pending:"Ausstehend",active:"Aktiv",disabled:"Deaktiviert",activate:"Aktivieren",disable:"Deaktivieren",connect:"Verbinden",noProductsShared:"Noch keine Produkte geteilt.",noTransactionsYet:"Noch keine Transaktionen.",grossAmount:"Brutto",commissionAmount:"Provision",netAmount:"Netto",enableForResale:"Für Wiederverkauf aktivieren",searchPlaceholder:"Partner suchen...",partnerConnected:"Partner verbunden",statusUpdated:"Status aktualisiert",productUpdated:"Produkt aktualisiert",deleteConfirm:"Partnerschaft löschen?",partnerDeleted:"Partnerschaft gelöscht",status:"Status",addProduct:"Aktivität hinzufügen",selectActivity:"Aktivität wählen...",saved:"Ãnderungen gespeichert",weShare:"Wir teilen",partnerShares:"Partner teilt",noPartnerProducts:"Keine vom Partner geteilten Aktivitäten.",country:"Land",newPartner:"Neuer Partner",invitePartner:"Partner einladen",inviteSend:"Einladung senden",inviteSending:"Wird gesendet...",inviteHelp:"Senden Sie eine Einladung an eine Firma, mit der Sie zusammenarbeiten möchten.",inviteMessage:"Nachricht (optional)",inviteMessagePlaceholder:"z.B. Wir würden gerne für die Sommersaison zusammenarbeiten!",inviteSent:"Einladung gesendet!",inviteSentFailed:"Einladung konnte nicht gesendet werden",inviteNoToken:"Kein Einladungstoken angegeben",inviteNotFound:"Einladung nicht gefunden",inviteAlreadyUsed:"Diese Einladung wurde bereits verwendet",inviteExpired:"Diese Einladung ist abgelaufen",inviteNoCompany:"Sie müssen zuerst eine Firma erstellen",inviteSelfError:"Partnerschaft mit eigener Firma nicht möglich",inviteTitle:"Partnereinladung",inviteDescription:"lädt Sie ein, Partner zu werden.",inviteSelectCompany:"Welche Firma soll als Partner verknüpft werden?",inviteConnectAs:"Verbinden als:",inviteAcceptButton:"Einladung annehmen",inviteAccepting:"Einladung wird angenommen...",inviteLoading:"Einladung wird geladen...",inviteLoginRequired:"Sie müssen sich anmelden oder ein Konto erstellen, um diese Einladung anzunehmen.",inviteAccepted:"Partnerschaft akzeptiert!",inviteAcceptFailed:"Einladung konnte nicht angenommen werden",inviteRedirecting:"Weiterleitung...",pendingInvitations:"Ausstehende Einladungen",invite
478CompanyName:"Firmenname",inviteCompanyNamePlaceholder:"z.B. Adventure Tours GmbH",inviteContactPerson:"Kontaktperson",inviteContactPersonPlaceholder:"z.B. Max Mustermann",inviteResend:"Erneut senden",inviteResendFailed:"Erneutes Senden fehlgeschlagen",inviteDelete:"Löschen",inviteDeleted:"Einladung gelöscht",inviteDeleteFailed:"Einladung konnte nicht gelöscht werden",companyDeleted:"gelöscht",theySoldOurs:"Sie haben unsere Produkte verkauft",weSoldTheirs:"Wir haben ihre Produkte verkauft",balanceLabel:"Saldo",theyOweUs:"Sie schulden uns diesen Betrag.",weOweThem:"Wir schulden ihnen diesen Betrag.",balanced:"Der Saldo ist ausgeglichen.",registerSettlement:"Abrechnung registrieren",settlementHistory:"Abrechnungsverlauf",settlementConfirm:"Abrechnung von {amount} registrieren? Dies setzt den aktuellen Saldo auf null.",settlementRegistered:"Abrechnung registriert",settlementFailed:"Abrechnung konnte nicht registriert werden",settlement:"Abrechnung",refundLabel:"Erstattung",partnersTab:"Partner",partnerSalesTab:"Partnerverkäufe"},es:{title:"Socios",addPartner:"Añadir socio",searchCompany:"Buscar empresa...",noPartnersYet:"Aún no hay socios.",products:"Productos",transactions:"Transacciones",commission:"Comisión",commissionType:"Tipo de comisión",percentage:"Porcentaje",fixed:"Importe fijo",partnerProduct:"Producto de socio",providedBy:"Proporcionado por {company}",pending:"Pendiente",active:"Activo",disabled:"Desactivado",activate:"Activar",disable:"Desactivar",connect:"Conectar",noProductsShared:"Aún no se han compartido productos.",noTransactionsYet:"Aún no hay transacciones.",grossAmount:"Bruto",commissionAmount:"Comisión",netAmount:"Neto",enableForResale:"Habilitar para reventa",searchPlaceholder:"Buscar socios...",partnerConnected:"Socio conectado",statusUpdated:"Estado actualizado",productUpdated:"Producto actualizado",deleteConfirm:"¿Eliminar esta asociación?",partnerDeleted:"Asociación eliminada",status:"Estado",addProduct:"Añadir actividad",selectActivity:"Seleccionar actividad...",saved:"Cambios guardados",weShare:"Compartimos",partnerShares:"Socio comparte",noPartnerProducts:"Sin actividades compartidas por el socio.",country:"PaÃs",newPartner:"Nuevo socio",invitePartner:"Invitar socio",inviteSend:"Enviar invitación",inviteSending:"Enviando...",inviteHelp:"EnvÃe una invitación a una empresa con la que desea asociarse.",inviteMessage:"Mensaje (opcional)",inviteMessagePlaceholder:"ej. Nos encantarÃa asociarnos para la temporada de verano!",inviteSent:"¡Invitación enviada!",inviteSentFailed:"No se pudo enviar la invitación",inviteNoToken:"No se proporcionó token de invitación",inviteNotFound:"Invitación no encontrada",inviteAlreadyUsed:"Esta invitación ya ha sido utilizada",inviteExpired:"Esta invitación ha expirado",inviteNoCompany:"Primero necesita crear una empresa",inviteSelfError:"No puede asociarse con su propia empresa",inviteTitle:"Invitación de socio",inviteDescription:"le invita a convertirse en socio.",inviteSelectCompany:"¿Qué empresa debe vincularse como socio?",inviteConnectAs:"Conectar como:",inviteAcceptButton:"Aceptar invitación",inviteAccepting:"Aceptando invitación...",inviteLoading:"Cargando invitación...",inviteLoginRequired:"Debe iniciar sesión o crear una cuenta para aceptar esta invitación.",inviteAccepted:"¡Asociación aceptada!",inviteAcceptFailed:"No se pudo aceptar la invitación",inviteRedirecting:"Redirigiendo...",pendingInvitations:"Invitaciones pendientes",inviteCompanyName:"Nombre de la empresa",inviteCompanyNamePlaceholder:"ej. Adventure Tours S.L.",inviteContactPerson:"Persona de contacto",inviteContactPersonPlaceholder:"ej. Juan Pérez",inviteResend:"Reenviar",inviteResendFailed:"No se pudo reenviar la invitación",inviteDelete:"Eliminar",inviteDeleted:"Invitación eliminada",inviteDeleteFailed:"No se pudo eliminar la invitación",companyDeleted:"eliminado",theySoldOurs:"Ellos vendieron nuestros productos",weSoldTheirs:"Nosotros vendimos sus productos",balanceLabel:"Saldo",theyOweUs:"Nos deben este importe.",weOweThem:"Les debemos este importe.",balanced:"El saldo está liquidado.",registerSettlement:"Registrar liquidación",settlementHistory:"Historial de liquidaciones",settlementConfirm:"¿Registrar una liquidación de {amount}?",settlementRegistered:"Liquidación registrada",settlementFailed:"No se pudo registrar la liquidación",settlement:"Liquidación",refundLabel:"Reembolso",partnersTab:"Socios",partnerSalesTab:"Ventas de socios"},fr:{title:"Partenaires",addPartner:"Ajouter un partenaire",searchCompany:"Rechercher une entreprise...",noPartnersYet:"Aucun partenaire.",products:"Produits",transactions:"Transactions",commission:"Commission",commissionType:"Type de commission",percentage:"Pourcentage",fixed:"Montant fixe",partnerProduct:"Produit partenaire",providedBy:"Fourni par {company}",pending:"En attente",active:"Actif",disabled:"Désactivé",activate:"Activer",disable:"Désactiver",connect:"Connecter",noProductsShared:"Aucun produit partagé.",noTransactionsYet:"Aucune transaction.",grossAmount:"Brut",commissionAmount:"Commission",
478netAmount:"Net",enableForResale:"Activer pour la revente",searchPlaceholder:"Rechercher partenaires...",partnerConnected:"Partenaire connecté",statusUpdated:"Statut mis à jour",productUpdated:"Produit mis à jour",deleteConfirm:"Supprimer ce partenariat ?",partnerDeleted:"Partenariat supprimé",status:"Statut",addProduct:"Ajouter une activité",selectActivity:"Sélectionner une activité...",saved:"Modifications enregistrées",weShare:"Nous partageons",partnerShares:"Le partenaire partage",noPartnerProducts:"Aucune activité partagée par le partenaire.",country:"Pays",newPartner:"Nouveau partenaire",invitePartner:"Inviter un partenaire",inviteSend:"Envoyer l'invitation",inviteSending:"Envoi...",inviteHelp:"Envoyez une invitation à une entreprise avec laquelle vous souhaitez collaborer.",inviteMessage:"Message (optionnel)",inviteMessagePlaceholder:"ex. Nous aimerions collaborer pour la saison estivale !",inviteSent:"Invitation envoyée !",inviteSentFailed:"Impossible d'envoyer l'invitation",inviteNoToken:"Aucun jeton d'invitation fourni",inviteNotFound:"Invitation introuvable",inviteAlreadyUsed:"Cette invitation a déjà été utilisée",inviteExpired:"Cette invitation a expiré",inviteNoCompany:"Vous devez d'abord créer une entreprise",inviteSelfError:"Impossible de s'associer avec sa propre entreprise",inviteTitle:"Invitation partenaire",inviteDescription:"vous invite à devenir partenaire.",inviteSelectCompany:"Quelle entreprise doit être liée comme partenaire ?",inviteConnectAs:"Connecter comme :",inviteAcceptButton:"Accepter l'invitation",inviteAccepting:"Acceptation en cours...",inviteLoading:"Chargement de l'invitation...",inviteLoginRequired:"Vous devez vous connecter ou créer un compte pour accepter cette invitation.",inviteAccepted:"Partenariat accepté !",inviteAcceptFailed:"Impossible d'accepter l'invitation",inviteRedirecting:"Redirection...",pendingInvitations:"Invitations en attente",inviteCompanyName:"Nom de l'entreprise",inviteCompanyNamePlaceholder:"ex. Adventure Tours SARL",inviteContactPerson:"Personne de contact",inviteContactPersonPlaceholder:"ex. Jean Dupont",inviteResend:"Renvoyer",inviteResendFailed:"Impossible de renvoyer l'invitation",inviteDelete:"Supprimer",inviteDeleted:"Invitation supprimée",inviteDeleteFailed:"Impossible de supprimer l'invitation",companyDeleted:"supprimé",theySoldOurs:"Ils ont vendu nos produits",weSoldTheirs:"Nous avons vendu leurs produits",balanceLabel:"Solde",theyOweUs:"Ils nous doivent ce montant.",weOweThem:"Nous leur devons ce montant.",balanced:"Le solde est réglé.",registerSettlement:"Enregistrer un règlement",settlementHistory:"Historique des règlements",settlementConfirm:"Enregistrer un règlement de {amount} ?",settlementRegistered:"Règlement enregistré",settlementFailed:"Impossible d'enregistrer le règlement",settlement:"Règlement",refundLabel:"Remboursement",partnersTab:"Partenaires",partnerSalesTab:"Ventes partenaires"},it:{title:"Partner",addPartner:"Aggiungi partner",searchCompany:"Cerca azienda...",noPartnersYet:"Nessun partner.",products:"Prodotti",transactions:"Transazioni",commission:"Commissione",commissionType:"Tipo commissione",percentage:"Percentuale",fixed:"Importo fisso",partnerProduct:"Prodotto partner",providedBy:"Fornito da {company}",pending:"In attesa",active:"Attivo",disabled:"Disattivato",activate:"Attiva",disable:"Disattiva",connect:"Collega",noProductsShared:"Nessun prodotto condiviso.",noTransactionsYet:"Nessuna transazione.",grossAmount:"Lordo",commissionAmount:"Commissione",netAmount:"Netto",enableForResale:"Abilita per rivendita",searchPlaceholder:"Cerca partner...",partnerConnected:"Partner collegato",statusUpdated:"Stato aggiornato",productUpdated:"Prodotto aggiornato",deleteConfirm:"Eliminare questa partnership?",partnerDeleted:"Partnership eliminata",status:"Stato",addProduct:"Aggiungi attività ",selectActivity:"Seleziona attività ...",saved:"Modifiche salvate",weShare:"Noi condividiamo",partnerShares:"Il partner condivide",noPartnerProducts:"Nessuna attività condivisa dal partner.",country:"Paese",newPartner:"Nuovo partner",invitePartner:"Invita partner",inviteSend:"Invia invito",inviteSending:"Invio...",inviteHelp:"Invia un invito a un'azienda con cui vuoi collaborare.",inviteMessage:"Messaggio (opzionale)",inviteMessagePlaceholder:"es. Ci piacerebbe collaborare per la stagione estiva!",inviteSent:"Invito inviato!",inviteSentFailed:"Impossibile inviare l'invito",inviteNoToken:"Nessun token di invito fornito",inviteNotFound:"Invito non trovato",inviteAlreadyUsed:"Questo invito è già stato utilizzato",inviteExpired:"Questo invito è scaduto",inviteNoCompany:"Devi prima creare un'azienda",inviteSelfError:"Non puoi associarti con la tua stessa azienda",inviteTitle:"Invito partner",inviteDescription:"ti invita a diventare partner.",inviteSelectCompany:"Quale azienda deve essere collegata come partner?",inviteConnectAs:"Collega come:",inviteAcceptButton:"Accetta invito",inviteAccepting:"Accettazione in corso...",inviteLoading:"Caricamento invito...",inviteLoginRequired:"Devi accedere o creare un account per accettare questo invito.",inviteAccepted:"Partnership accettata!",inviteAcceptFailed:"Impossibile accettare l'invito",inviteRedirecting:"Reindirizzamento...",pendingInvitations:"Inviti in attesa",invite
478CompanyName:"Nome azienda",inviteCompanyNamePlaceholder:"es. Adventure Tours Srl",inviteContactPerson:"Persona di contatto",inviteContactPersonPlaceholder:"es. Mario Rossi",inviteResend:"Rinvia",inviteResendFailed:"Impossibile rinviare l'invito",inviteDelete:"Elimina",inviteDeleted:"Invito eliminato",inviteDeleteFailed:"Impossibile eliminare l'invito",companyDeleted:"eliminato",theySoldOurs:"Hanno venduto i nostri prodotti",weSoldTheirs:"Abbiamo venduto i loro prodotti",balanceLabel:"Saldo",theyOweUs:"Ci devono questo importo.",weOweThem:"Dobbiamo loro questo importo.",balanced:"Il saldo è regolato.",registerSettlement:"Registra regolamento",settlementHistory:"Storico regolamenti",settlementConfirm:"Registrare un regolamento di {amount}?",settlementRegistered:"Regolamento registrato",settlementFailed:"Impossibile registrare il regolamento",settlement:"Regolamento",refundLabel:"Rimborso",partnersTab:"Partner",partnerSalesTab:"Vendite partner"}},gb={en:{navProduct:"Product",navAbout:"About",navPricing:"Pricing",navEarlyAccess:"Early access",ctaStayUpdated:"Keep me updated",heroHeadline:"Finally â a booking system built for activity operators.",heroSub:"Salesmate combines booking, customer follow-up and planning in one simple system. At the center of everything is one clear calendar â and AI helps organize customer inquiries automatically.",heroLaunchingSoon:"Launching soon for tour and activity companies.",builtByTitle:"Built by people who actually run tours.",builtByText1:"Most booking systems were never designed for companies that run tours and activities. They were built for hotels, restaurants or generic appointment systems â and it shows.",builtByText2:"Salesmate is made by people who work in the activity industry. We know what it's like to juggle guides, weather, equipment and last-minute changes â because we do it ourselves.",builtByText3:"That's why everything is built around one clear operations center: the calendar.",calendarTitle:"The calendar is the heart of the system.",calendarText1:"Everything revolves around one clear calendar.",calendarText2:"When a booking is confirmed, it appears instantly â along with guides, resources and capacity.",calendarText3:"No double entry. No confusion.",calendarText4:"Just a complete view of your operations.",inquiryTitle:"From inquiry to confirmed booking.",inquiryText1:"Salesmate uses AI to read incoming emails and messages and turn them into structured leads.",inquiryText2:"The system understands the activity, dates and group size automatically.",inquiryText3:"You simply review the inquiry and continue the process â from inquiry to confirmed booking.",bookingScreensTitle:"Beautiful booking screens for your guests.",bookingScreensText1:"Salesmate includes public booking screens designed for touch screens and sales counters.",bookingScreensText2:"Guests can browse experiences, see availability and book directly.",videoTitle:"See Salesmate in action",videoSubtitle:"A quick look at how Salesmate helps you manage bookings, planning and customer follow-up â all in one place.",comingSoonTitle:"Salesmate is coming soon.",comingSoonText:"Salesmate is currently under development and preparing for launch. If you run tours or activities and want to follow the project, leave your email and we'll keep you updated.",formName:"Name",formCompany:"Company",formEmail:"Email",footerDescription:"The operating system for activity and tour operators.",footerPrivacy:"Privacy",footerTerms:"Terms",footerContact:"Contact",signupSuccess:"Thank you! We'll keep you updated.",signupError:"Something went wrong. Please try again.",pricingSectionTitle:"Simple, transparent pricing",pricingSectionSub:"Salesmate consists of a monthly subscription and a small fee per booking.",pricingDisclaimer:"All prices are in NOK and exclude payment provider fees.",pricingPerMonth:"/ month",pricingPerBooking:"per booking",pricingTransactionFee:"Transaction fee",pricingMostPopular:"Most popular",pricingFreeName:"Starter",pricingFreePrice:"0 NOK",pricingFreeDesc:"For getting started and testing the platform.",pricingFreeTx:"5%",pricingFreeF1:"Online booking",pricingFreeF2:"Basic widgets",pricingFreeF3:"Basic CRM",pricingFreeF4:"1 user",pricingFreeCta:"Get started",pricingStdName:"Standard",pricingStdPrice:"1 990 NOK",pricingStdDesc:"For professional operators running and growing their business.",pricingStdTx:"3%",pricingStdF1:"Everything in Starter",pricingStdF2:"Booking widgets + shared cart",pricingStdF3:"Resource management",pricingStdF4:"Booking ledger",pricingStdF5:"Partner sales",pricingStdF6:"Integrations",pricingStdF7:"Multiple users",pricingStdCta:"Start now",pricingEntName:"Enterprise",pricingEntPrice:"On request",pricingEntDesc:"For larger operators and multi-company setups.",pricingEntTx:"1.5%",pricingEntF1:"Everything in Standard",pricingEntF2:"Multi-company support",pricingEntF3:"Advanced distribution (OTA)",pricingEntF4:"Custom integrations",pricingEntF5:"Priority support",pricingEntF6:"SLA",pricingEntCta:"Book a demo"},no:{navProduct:"Produkt",navAbout:"Om oss",navPricing:"Priser",navEarlyAccess:"Tidlig tilgang",pricingSectionTitle:"Enkel, transparent prising",pricingSectionSub:"Salesmate bestÃ¥r av et mÃ¥nedlig abonnement og et lite gebyr per booking.",pricingDisclaimer:"Alle priser er i NOK og ekskluderer betalingsleverandørens gebyrer.",pricingPerMonth:"/ mnd",pricingPerBooking:"per booking",pricingTransactionFee:"Transaksjonsgebyr",pricingMostPopular:"Mest populær",pricingFreeName:"Starter",pricingFreePrice:"0 NOK",pricingFreeDesc:"For Ã¥ komme i gang og teste plattformen.",pricingFreeTx:"5%",pricingFreeF1:"Online booking",pricingFreeF2:"Grunnleggende widgets",pricingFreeF3:"Grunnleggende CRM",pricingFreeF4:"1 bruker",pricingFreeCta:"Kom i gang",pricingStdName:"Standard",pricingStdPrice:"1 990 NOK",pricingStdDesc:"For profesjonelle operatører som driver og vokser virksomheten sin.",pricingStdTx:"3%",pricingStdF1:"Alt i Starter",pricingStdF2:"Booking-widgets + delt handlekurv",pricingStdF3:"Ressursstyring",pricingStdF4:"Bookingjournal",pricingStdF5:"Partnersalg",pricingStdF6:"Integrasjoner",pricingStdF7:"Flere brukere",pricingStdCta:"Start nÃ¥",pricingEntName:"Enterprise",pricingEntPrice:"PÃ¥ forespørsel",pricingEntDesc:"For større operatører og flerbedriftsoppsett.",pricingEntTx:"1,5%",pricingEntF1:"Alt i Standard",pricingEntF2:"Flerbedriftsstøtte",pricingEntF3:"Avansert distribusjon (OTA)",pricingEntF4:"Tilpassede integrasjoner",pricingEntF5:"Prioritert support",pricingEntF6:"SLA",pricingEntCta:"Book en demo",ctaStayUpdated:"Hold meg oppdatert",heroHeadline:"Endelig â et bookingsystem laget for aktivitetsleverandører.",heroSub:"Salesmate kombinerer booking, kundeoppfølging og planlegging i ett enkelt system. I sentrum av alt stÃ¥r én tydelig kalender â og AI hjelper med Ã¥ organisere kundehenvendelser automatisk.",heroLaunchingSoon:"Lanseres snart for tur- og aktivitetsselskaper.",builtByTitle:"Bygget av folk som faktisk driver turer.",builtByText1:"De fleste bookingsystemer ble aldri designet for selskaper som driver turer og aktiviteter. De ble bygget for hoteller, restauranter eller generelle timebookingsystemer â og det merkes.",builtByText2:"Salesmate er laget av folk som jobber i aktivitetsbransjen. Vi vet hvordan det er Ã¥ sjonglere guider, vær, utstyr og siste-liten-endringer â fordi vi gjør det selv.",builtByText3:"Derfor er alt bygget rundt ett tydelig operasjonsse
478nter: kalenderen.",calendarTitle:"Kalenderen er hjertet av systemet.",calendarText1:"Alt dreier seg rundt én tydelig kalender.",calendarText2:"NÃ¥r en booking bekreftes, vises den umiddelbart â sammen med guider, ressurser og kapasitet.",calendarText3:"Ingen dobbeltregistrering. Ingen forvirring.",calendarText4:"Bare en komplett oversikt over driften din.",inquiryTitle:"Fra henvendelse til bekreftet booking.",inquiryText1:"Salesmate bruker AI til Ã¥ lese innkommende e-poster og meldinger og gjøre dem om til strukturerte leads.",inquiryText2:"Systemet forstÃ¥r aktiviteten, datoene og gruppestørrelsen automatisk.",inquiryText3:"Du gjennomgÃ¥r enkelt forespørselen og fortsetter prosessen â fra henvendelse til bekreftet booking.",bookingScreensTitle:"Vakre bookingskjermer for gjestene dine.",bookingScreensText1:"Salesmate inkluderer offentlige bookingskjermer designet for berøringsskjermer og salgsdisker.",bookingScreensText2:"Gjester kan bla gjennom opplevelser, se tilgjengelighet og booke direkte.",videoTitle:"Se Salesmate i aksjon",videoSubtitle:"Et raskt overblikk over hvordan Salesmate hjelper deg med bookinger, planlegging og kundeoppfølging â alt pÃ¥ ett sted.",comingSoonTitle:"Salesmate kommer snart.",comingSoonText:"Salesmate er for tiden under utvikling og forbereder lansering. Hvis du driver turer eller aktiviteter og ønsker Ã¥ følge prosjektet, legg igjen e-posten din, sÃ¥ holder vi deg oppdatert.",formName:"Navn",formCompany:"Firma",formEmail:"E-post",footerDescription:"Operativsystemet for aktivitets- og turoperatører.",footerPrivacy:"Personvern",footerTerms:"VilkÃ¥r",footerContact:"Kontakt",signupSuccess:"Takk! Vi holder deg oppdatert.",signupError:"Noe gikk galt. Vennligst prøv igjen."},de:{navProduct:"Produkt",navAbout:"Ãber uns",navPricing:"Preise",navEarlyAccess:"Frühzugang",pricingSectionTitle:"Einfache, transparente Preise",pricingSectionSub:"Salesmate besteht aus einem monatlichen Abonnement und einer kleinen Gebühr pro Buchung.",pricingDisclaimer:"Alle Preise in NOK, exklusive Zahlungsanbietergebühren.",pricingPerMonth:"/ Monat",pricingPerBooking:"pro Buchung",pricingTransactionFee:"Transaktionsgebühr",pricingMostPopular:"Beliebteste",pricingFreeName:"Starter",pricingFreePrice:"0 NOK",pricingFreeDesc:"Zum Einstieg und Testen der Plattform.",pricingFreeTx:"5%",pricingFreeF1:"Online-Buchung",pricingFreeF2:"Basis-Widgets",pricingFreeF3:"Basis-CRM",pricingFreeF4:"1 Benutzer",pricingFreeCta:"Loslegen",pricingStdName:"Standard",pricingStdPrice:"1 990 NOK",pricingStdDesc:"Für professionelle Anbieter, die ihr Geschäft betreiben und ausbauen.",pricingStdTx:"3%",pricingStdF1:"Alles in Starter",pricingStdF2:"Buchungs-Widgets + geteilter Warenkorb",pricingStdF3:"Ressourcenmanagement",pricingStdF4:"Buchungsjournal",pricingStdF5:"Partnerverkauf",pricingStdF6:"Integrationen",pricingStdF7:"Mehrere Benutzer",pricingStdCta:"Jetzt starten",pricingEntName:"Enterprise",pricingEntPrice:"Auf Anfrage",pricingEntDesc:"Für gröÃere Anbieter und Multi-Firmen-Setups.",pricingEntTx:"1,5%",pricingEntF1:"Alles in Standard",pricingEntF2:"Multi-Firmen-Unterstützung",pricingEntF3:"Erweiterte Distribution (OTA)",pricingEntF4:"Individuelle Integrationen",pricingEntF5:"Prioritäts-Support",pricingEntF6:"SLA",pricingEntCta:"Demo buchen",ctaStayUpdated:"Haltet mich auf dem Laufenden",heroHeadline:"Endlich â ein Buchungssystem für Aktivitätsanbieter.",heroSub:"Salesmate vereint Buchung, Kundenbetreuung und Planung in einem einfachen System. Im Mittelpunkt steht ein klarer Kalender â und KI hilft, Kundenanfragen automatisch zu organisieren.",heroLaunchingSoon:"Bald verfügbar für Tour- und Aktivitätsunternehmen.",builtByTitle:"Von Menschen gebaut, die tatsächlich Touren durchführen.",builtByText1:"Die meisten Buchungssysteme wurden nie für Unternehmen entwickelt, die Touren und Aktivitäten anbieten.",builtByText2:"Salesmate wurde von Menschen gemacht, die in der Aktivitätsbranche arbeiten.",builtByText3:"Deshalb ist alles um ein klares Operationszentrum gebaut: den Kalender.",calendarTitle:"Der Kalender ist das Herz des Systems.",calendarText1:"Alles dreht sich um einen klaren Kalender.",calendarText2:"Wenn eine Buchung bestätigt wird, erscheint sie sofort â zusammen mit Guides, Ressourcen und Kapazität.",calendarText3:"Keine Doppelerfassung. Keine Verwirrung.",calendarText4:"Nur ein vollständiger Ãberblick über Ihren Betrieb.",inquiryTitle:"Von der Anfrage zur bestätigten Buchung.",inquiryText1:"Salesmate nutzt KI, um eingehende E-Mails und Nachrichten zu lesen und in strukturierte Leads umzuwandeln.",inquiryText2:"Das System versteht Aktivität, Daten und GruppengröÃe automatisch.",inquiryText3:"Sie überprüfen einfach die Anfrage und setzen den Prozess fort.",bookingScreensTitle:"Schöne Buchungsbildschirme für Ihre Gäste.",bookingScreensText1:"Salesmate enthält öffentliche Buchungsbildschirme für Touchscreens und Verkaufstheken.",bookingScreensText2:"Gäste können Erlebnisse durchsuchen, Verfügbarkeit sehen und direkt buchen.",videoTitle:"Salesmate in Aktion erleben",videoSubtitle:"Ein kurzer Einblick, wie Salesmate Ihnen bei Buchungen, Planung und Kundenbetreuung hilft â alles an einem Ort.",comingSoonTitle:"Salesmate kommt bald.",comingSoonText:"Salesmate befindet sich derzeit in der Entwicklung. Wenn Sie Touren oder Aktivitäten anbieten, hinterlassen Sie Ihre E-Mail und wir halten Sie auf dem Laufenden.",formName:"Name",formCompany:"Firma",formEmail:"E-Mail",footerDescription:"Das Betriebssystem für Aktivitäts- und Touranbieter.",footerPrivacy:"Datenschutz",footerTerms:"AGB",footerContact:"Kontakt",signupSuccess:"Danke! Wir halten Sie auf dem Laufenden.",signupError:"Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut."},es:{navProduct:"Producto",navAbout:"Acerca de",navPricing:"Precios",navEarlyAccess:"Acceso anticipado",pricingSectionTitle:"Precios simples y transparentes",pricingSectionSub:"Salesmate consiste en una suscripción mensual y una pequeña tarifa por reserva.",pricingDisclaimer:"Todos los precios en NOK, excluyen tarifas del proveedor de pago.",pricingPerMonth:"/ mes",pricingPerBooking:"por reserva",pricingTransactionFee:"Tarifa por transacción",pricingMostPopular:"Más popular",pricingFreeName:"Starter",pricingFreePrice:"0 NOK",pricingFreeDesc:"Para empezar y probar la plataforma.",pricingFreeTx:"5%",pricingFreeF1:"Reservas online",pricingFreeF2:"Widgets básicos",pricingFreeF3:"CRM básico",pricingFreeF4:"1 usuario",pricingFreeCta:"Empezar",pricingStdName:"Standard",pricingStdPrice:"1 990 NOK",pricingStdDesc:"Para operadores profesionales que gestionan y hacen crecer su negocio.",pricingStdTx:"3%",pricingStdF1:"Todo en Starter",pricingStdF2:"Widgets de reserva + carrito compartido",pricingStdF3:"Gestión de recursos",pricingStdF4:"Diario de reservas",pricingStdF5:"Ventas de socios",pricingStdF6:"Integraciones",pricingStdF7:"Múltiples usuarios",pricingStdCta:"Empezar ahora",pricingEntName:"Enterprise",pricingEntPrice:"Bajo pedido",pricingEntDesc:"Para operadores grandes y configuraciones multi-empresa.",pricingEntTx:"1,5%",pricingEntF1:"Todo en Standard",pricingEntF2:"Soporte multi-empresa",pricingEntF3:"Distribución avanzada (OTA)",pricingEntF4:"Integraciones personalizadas",pricingEntF5:"Soporte prioritario",pricingEntF6:"SLA",pricingEntCta:"Reservar demo",ctaStayUpdated:"Mantenerme informado",heroHeadline:"Por fin â un sistema de reservas hecho para proveedores de actividades.",heroSub:"Salesmate combina reservas, seguimiento de clientes y planificación en un sistema sencillo. En el centro de todo hay un calendario claro â y la IA ayuda a organizar las solicitudes de los clientes automáticamente.",heroLaunchingSoon:"Próximamente para empresas de tours y actividades.",builtByTitle:"Creado por personas que realmente operan tours.",builtByText1:"La mayorÃa de los sistemas de reservas nunca fueron diseña
478dos para empresas que operan tours y actividades.",builtByText2:"Salesmate fue creado por personas que trabajan en la industria de actividades.",builtByText3:"Por eso todo está construido alrededor de un centro operativo claro: el calendario.",calendarTitle:"El calendario es el corazón del sistema.",calendarText1:"Todo gira en torno a un calendario claro.",calendarText2:"Cuando una reserva se confirma, aparece al instante â junto con guÃas, recursos y capacidad.",calendarText3:"Sin doble entrada. Sin confusión.",calendarText4:"Solo una visión completa de sus operaciones.",inquiryTitle:"De la consulta a la reserva confirmada.",inquiryText1:"Salesmate usa IA para leer correos y mensajes entrantes y convertirlos en leads estructurados.",inquiryText2:"El sistema entiende la actividad, fechas y tamaño del grupo automáticamente.",inquiryText3:"Simplemente revisa la solicitud y continúa el proceso.",bookingScreensTitle:"Hermosas pantallas de reserva para tus huéspedes.",bookingScreensText1:"Salesmate incluye pantallas de reserva públicas diseñadas para pantallas táctiles y mostradores.",bookingScreensText2:"Los huéspedes pueden explorar experiencias, ver disponibilidad y reservar directamente.",videoTitle:"Mira Salesmate en acción",videoSubtitle:"Un vistazo rápido a cómo Salesmate te ayuda a gestionar reservas, planificación y seguimiento de clientes â todo en un solo lugar.",comingSoonTitle:"Salesmate llega pronto.",comingSoonText:"Salesmate está actualmente en desarrollo. Si operas tours o actividades, deja tu email y te mantendremos informado.",formName:"Nombre",formCompany:"Empresa",formEmail:"Email",footerDescription:"El sistema operativo para operadores de actividades y tours.",footerPrivacy:"Privacidad",footerTerms:"Condiciones",footerContact:"Contacto",signupSuccess:"¡Gracias! Te mantendremos informado.",signupError:"Algo salió mal. Por favor, inténtalo de nuevo."},fr:{navProduct:"Produit",navAbout:"à propos",navPricing:"Tarifs",navEarlyAccess:"Accès anticipé",pricingSectionTitle:"Tarification simple et transparente",pricingSectionSub:"Salesmate comprend un abonnement mensuel et un petit frais par réservation.",pricingDisclaimer:"Tous les prix en NOK, hors frais du prestataire de paiement.",pricingPerMonth:"/ mois",pricingPerBooking:"par réservation",pricingTransactionFee:"Frais de transaction",pricingMostPopular:"Le plus populaire",pricingFreeName:"Starter",pricingFreePrice:"0 NOK",pricingFreeDesc:"Pour démarrer et tester la plateforme.",pricingFreeTx:"5%",pricingFreeF1:"Réservation en ligne",pricingFreeF2:"Widgets de base",pricingFreeF3:"CRM de base",pricingFreeF4:"1 utilisateur",pricingFreeCta:"Commencer",pricingStdName:"Standard",pricingStdPrice:"1 990 NOK",pricingStdDesc:"Pour les opérateurs professionnels qui gèrent et développent leur activité.",pricingStdTx:"3%",pricingStdF1:"Tout dans Starter",pricingStdF2:"Widgets de réservation + panier partagé",pricingStdF3:"Gestion des ressources",pricingStdF4:"Journal de réservation",pricingStdF5:"Ventes partenaires",pricingStdF6:"Intégrations",pricingStdF7:"Plusieurs utilisateurs",pricingStdCta:"Commencer maintenant",pricingEntName:"Enterprise",pricingEntPrice:"Sur demande",pricingEntDesc:"Pour les grands opérateurs et les configurations multi-entreprises.",pricingEntTx:"1,5%",pricingEntF1:"Tout dans Standard",pricingEntF2:"Support multi-entreprise",pricingEntF3:"Distribution avancée (OTA)",pricingEntF4:"Intégrations sur mesure",pricingEntF5:"Support prioritaire",pricingEntF6:"SLA",pricingEntCta:"Réserver une démo",ctaStayUpdated:"Me tenir informé",heroHeadline:"Enfin â un système de réservation conçu pour les opérateurs d'activités.",heroSub:"Salesmate combine réservation, suivi client et planification en un seul système. Au centre de tout, un calendrier clair â et l'IA aide à organiser les demandes clients automatiquement.",heroLaunchingSoon:"Bientôt disponible pour les entreprises de tours et d'activités.",builtByTitle:"Créé par des personnes qui organisent vraiment des tours.",builtByText1:"La plupart des systèmes de réservation n'ont jamais été conçus pour les entreprises qui organisent des tours et des activités.",builtByText2:"Salesmate est fait par des personnes qui travaillent dans l'industrie des activités.",builtByText3:"C'est pourquoi tout est construit autour d'un centre opérationnel clair : le calendrier.",calendarTitle:"Le calendrier est le cÅur du système.",calendarText1:"Tout tourne autour d'un calendrier clair.",calendarText2:"Quand une réservation est c
478onfirmée, elle apparaît instantanément â avec les guides, ressources et capacité.",calendarText3:"Pas de double saisie. Pas de confusion.",calendarText4:"Juste une vue complète de vos opérations.",inquiryTitle:"De la demande à la réservation confirmée.",inquiryText1:"Salesmate utilise l'IA pour lire les emails et messages entrants et les transformer en leads structurés.",inquiryText2:"Le système comprend l'activité, les dates et la taille du groupe automatiquement.",inquiryText3:"Vous examinez simplement la demande et continuez le processus.",bookingScreensTitle:"De beaux écrans de réservation pour vos clients.",bookingScreensText1:"Salesmate inclut des écrans de réservation publics conçus pour les écrans tactiles et les comptoirs.",bookingScreensText2:"Les clients peuvent parcourir les expériences, voir la disponibilité et réserver directement.",videoTitle:"Découvrez Salesmate en action",videoSubtitle:"Un aperçu rapide de la façon dont Salesmate vous aide à gérer les réservations, la planification et le suivi client â le tout en un seul endroit.",comingSoonTitle:"Salesmate arrive bientôt.",comingSoonText:"Salesmate est actuellement en développement. Si vous organisez des tours ou des activités, laissez votre email et nous vous tiendrons informé.",formName:"Nom",formCompany:"Entreprise",formEmail:"Email",footerDescription:"Le système d'exploitation pour les opérateurs d'activités et de tours.",footerPrivacy:"Confidentialité",footerTerms:"Conditions",footerContact:"Contact",signupSuccess:"Merci ! Nous vous tiendrons informé.",signupError:"Une erreur s'est produite. Veuillez réessayer."},it:{navProduct:"Prodotto",navAbout:"Chi siamo",navPricing:"Prezzi",navEarlyAccess:"Accesso anticipato",pricingSectionTitle:"Prezzi semplici e trasparenti",pricingSectionSub:"Salesmate comprende un abbonamento mensile e una piccola commissione per prenotazione.",pricingDisclaimer:"Tutti i prezzi in NOK, escluse le commissioni del fornitore di pagamento.",pricingPerMonth:"/ mese",pricingPerBooking:"per prenotazione",pricingTransactionFee:"Commissione per transazione",pricingMostPopular:"Più popolare",pricingFreeName:"Starter",pricingFreePrice:"0 NOK",pricingFreeDesc:"Per iniziare e testare la piattaforma.",pricingFreeTx:"5%",pricingFreeF1:"Prenotazione online",pricingFreeF2:"Widget di base",pricingFreeF3:"CRM di base",pricingFreeF4:"1 utente",pricingFreeCta:"Inizia",pricingStdName:"Standard",pricingStdPrice:"1 990 NOK",pricingStdDesc:"Per operatori professionisti che gestiscono e fanno crescere la loro attività .",pricingStdTx:"3%",pricingStdF1:"Tutto in Starter",pricingStdF2:"Widget di prenotazione + carrello condiviso",pricingStdF3:"Gestione risorse",pricingStdF4:"Registro prenotazioni",pricingStdF5:"Vendite partner",pricingStdF6:"Integrazioni",pricingStdF7:"Più utenti",pricingStdCta:"Inizia ora",pricingEntName:"Enterprise",pricingEntPrice:"Su richiesta",pricingEntDesc:"Per operatori più grandi e configurazioni multi-azienda.",pricingEntTx:"1,5%",pricingEntF1:"Tutto in Standard",pricingEntF2:"Supporto multi-azienda",pricingEntF3:"Distribuzione avanzata (OTA)",pricingEntF4:"Integrazioni personalizzate",pricingEntF5:"Supporto prioritario",pricingEntF6:"SLA",pricingEntCta:"Prenota una demo",ctaStayUpdated:"Tienimi aggiornato",heroHeadline:"Finalmente â un sistema di prenotazione fatto per gli operatori di attività .",heroSub:"Salesmate combina prenotazioni, follow-up clienti e pianificazione in un unico sistema. Al centro di tutto c'è un calendario chiaro â e l'IA aiuta a organizzare le richieste dei clienti automaticamente.",heroLaunchingSoon:"In arrivo per le aziende di tour e attività .",builtByTitle:"Creato da persone che gestiscono davvero tour.",builtByText1:"La maggior parte dei sistemi di prenotazione non è mai stata progettata per aziende che gestiscono tour e attività .",builtByText2:"Salesmate è fatto da persone che lavorano nel settore delle attività .",builtByText3:"Per questo tutto è costruito attorno a un chiaro centro operativo: il calendario.",calendarTitle:"Il calendario è il cuore del sistema.",calendarText1:"Tutto ruota attorno a un calendario chiaro.",calendarText2:"Quando una prenotazione viene confermata, appare istantaneamente â con guide, risorse e capacità .",calendarText3:"Nessuna doppia registrazione. Nessuna confusione.",calendarText4:"Solo una visione completa delle tue operazioni.",inquiryTitle:"Dalla ric
478hiesta alla prenotazione confermata.",inquiryText1:"Salesmate usa l'IA per leggere email e messaggi in arrivo e trasformarli in lead strutturati.",inquiryText2:"Il sistema comprende l'attività , le date e la dimensione del gruppo automaticamente.",inquiryText3:"Basta esaminare la richiesta e continuare il processo.",bookingScreensTitle:"Bellissime schermate di prenotazione per i tuoi ospiti.",bookingScreensText1:"Salesmate include schermate di prenotazione pubbliche progettate per touchscreen e banconi.",bookingScreensText2:"Gli ospiti possono sfogliare esperienze, vedere disponibilità e prenotare direttamente.",videoTitle:"Guarda Salesmate in azione",videoSubtitle:"Uno sguardo rapido a come Salesmate ti aiuta a gestire prenotazioni, pianificazione e follow-up clienti â tutto in un unico posto.",comingSoonTitle:"Salesmate sta arrivando.",comingSoonText:"Salesmate è attualmente in sviluppo. Se gestisci tour o attività , lascia la tua email e ti terremo aggiornato.",formName:"Nome",formCompany:"Azienda",formEmail:"Email",footerDescription:"Il sistema operativo per operatori di attività e tour.",footerPrivacy:"Privacy",footerTerms:"Termini",footerContact:"Contatto",signupSuccess:"Grazie! Ti terremo aggiornato.",signupError:"Qualcosa è andato storto. Riprova."}},fb={en:{bannerTitle:"We use cookies",bannerText:"We use cookies and similar technologies to make the site work, understand usage, and improve the experience.",acceptAll:"Accept all",rejectOptional:"Reject optional",customize:"Customize",savePreferences:"Save preferences",cookieSettings:"Cookie settings",necessary:"Necessary",necessaryDesc:"Required for the site to function. These cannot be disabled.",analytics:"Analytics",analyticsDesc:"Help us understand how visitors use the site so we can improve it.",functional:"Functional",functionalDesc:"Remember your preferences such as language and theme.",readMore:"Read our Cookie Policy",footerCookies:"Cookies"},no:{bannerTitle:"Vi bruker informasjonskapsler",bannerText:"Vi bruker informasjonskapsler og lignende teknologier for at nettstedet skal fungere, forstÃ¥ bruk og forbedre opplevelsen.",acceptAll:"Godta alle",rejectOptional:"Avvis valgfrie",customize:"Tilpass",savePreferences:"Lagre valg",cookieSettings:"Informasjonskapsler",necessary:"Nødvendige",necessaryDesc:"PÃ¥krevd for at nettstedet skal fungere. Disse kan ikke deaktiveres.",analytics:"Analyse",analyticsDesc:"Hjelper oss Ã¥ forstÃ¥ hvordan besøkende bruker nettstedet slik at vi kan forbedre det.",functional:"Funksjonelle",functionalDesc:"Husker dine preferanser som sprÃ¥k og tema.",readMore:"Les vÃ¥r informasjonskapsel-policy",footerCookies:"Informasjonskapsler"},de:{bannerTitle:"Wir verwenden Cookies",bannerText:"Wir verwenden Cookies und ähnliche Technologien, damit die Website funktioniert, die Nutzung verstanden wird und das Erlebnis verbessert werden kann.",acceptAll:"Alle akzeptieren",rejectOptional:"Optionale ablehnen",customize:"Anpassen",savePreferences:"Einstellungen speichern",cookieSettings:"Cookie-Einstellungen",necessary:"Notwendig",necessaryDesc:"Erforderlich, damit die Website funktioniert. Diese können nicht deaktiviert werden.",analytics:"Analyse",analyticsDesc:"Helfen uns zu verstehen, wie Besucher die Website nutzen, damit wir sie verbessern können.",functional:"Funktional",functionalDesc:"Merken sich Ihre Einstellungen wie Sprache und Design.",readMore:"Lesen Sie unsere Cookie-Richtlinie",footerCookies:"Cookies"},es:{bannerTitle:"Usamos cookies",bannerText:"Usamos cookies y tecnologÃas similares para que el sitio funcione, entender el uso y mejorar la experiencia.",acceptAll:"Aceptar todas",rejectOptional:"Rechazar opcionales",customize:"Personalizar",savePreferences:"Guardar preferencias",cookieSettings:"Configuración de cookies",necessary:"Necesarias",necessaryDesc:"Requeridas para que el sitio funcione. No se pueden desactivar.",analytics:"AnalÃticas",analyticsDesc:"Nos ayudan a entender cómo los visitantes usan el sitio para poder mejorarlo.",functional:"Funcionales",functionalDesc:"Recuerdan sus preferencias como idioma y tema.",readMore:"Lea nuestra PolÃtica de Cookies",footerCookies:"Cookies"}
478,fr:{bannerTitle:"Nous utilisons des cookies",bannerText:"Nous utilisons des cookies et des technologies similaires pour faire fonctionner le site, comprendre l'utilisation et améliorer l'expérience.",acceptAll:"Tout accepter",rejectOptional:"Refuser les optionnels",customize:"Personnaliser",savePreferences:"Enregistrer les préférences",cookieSettings:"Paramètres des cookies",necessary:"Nécessaires",necessaryDesc:"Requis pour le fonctionnement du site. Ils ne peuvent pas être désactivés.",analytics:"Analytiques",analyticsDesc:"Nous aident à comprendre comment les visiteurs utilisent le site afin de l'améliorer.",functional:"Fonctionnels",functionalDesc:"Mémorisent vos préférences telles que la langue et le thème.",readMore:"Lire notre Politique de Cookies",footerCookies:"Cookies"},it:{bannerTitle:"Utilizziamo i cookie",bannerText:"Utilizziamo cookie e tecnologie simili per far funzionare il sito, comprendere l'utilizzo e migliorare l'esperienza.",acceptAll:"Accetta tutti",rejectOptional:"Rifiuta opzionali",customize:"Personalizza",savePreferences:"Salva preferenze",cookieSettings:"Impostazioni cookie",necessary:"Necessari",necessaryDesc:"Necessari per il funzionamento del sito. Non possono essere disattivati.",analytics:"Analitici",analyticsDesc:"Ci aiutano a capire come i visitatori utilizzano il sito per poterlo migliorare.",functional:"Funzionali",functionalDesc:"Ricordano le tue preferenze come lingua e tema.",readMore:"Leggi la nostra Politica sui Cookie",footerCookies:"Cookie"}},hb={en:{welcomeTo:"Welcome to",youveBeenInvited:"You've been invited to join",asRole:"as",createAccountToJoin:"Create an account to get started.",alreadyHaveAccount:"Already have an account?",signInInstead:"Sign in instead",acceptAndContinue:"Accept & continue",creatingAccount:"Creating account...",acceptingInvitation:"Accepting invitation...",invitationAccepted:"Invitation accepted!",redirecting:"Redirecting to dashboard...",invalidInvitation:"Invalid invitation",invitationExpired:"This invitation has expired. Please ask for a new one.",invitationAlreadyAccepted:"This invitation has already been accepted.",invitationNotFound:"Invitation not found. The link may be invalid or expired.",noToken:"No invitation token provided.",goToLogin:"Go to login",verifyYourEmail:"Verify your email",weSentCode:"We sent a verification code to",passwordRequirements:"Min. 6 characters",preferredLanguage:"Language",inviteError:"Could not process invitation"},no:{welcomeTo:"Velkommen til",youveBeenInvited:"Du er invitert til",asRole:"som",createAccountToJoin:"Opprett en konto for å komme i gang.",alreadyHaveAccount:"Har du allerede en konto?",signInInstead:"Logg inn i stedet",acceptAndContinue:"Aksepter og fortsett",creatingAccount:"Oppretter konto...",acceptingInvitation:"Aksepterer invitasjon...",invitationAccepted:"Invitasjon akseptert!",redirecting:"Omdirigerer til dashboardet...",invalidInvitation:"Ugyldig invitasjon",invitationExpired:"Denne invitasjonen har utløpt. Be om en ny.",invitationAlreadyAccepted:"Denne invitasjonen er allerede akseptert.",invitationNotFound:"Invitasjonen ble ikke funnet. Lenken kan være ugyldig eller utløpt.",noToken:"Ingen invitasjonstoken oppgitt.",goToLogin:"Gå til innlogging",verifyYourEmail:"Bekreft e-posten din",weSentCode:"Vi sendte en bekreftelseskode til",passwordRequirements:"Min. 6 tegn",preferredLanguage:"Språk",inviteError:"Kunne ikke behandle invitasjonen"},de:{welcomeTo:"Willkommen bei",youveBeenInvited:"Sie wurden eingeladen,",asRole:"als",createAccountToJoin:"Erstellen Sie ein Konto, um loszulegen.",alreadyHaveAccount:"Bereits ein Konto?",signInInstead:"Stattdessen anmelden",acceptAndContinue:"Akzeptieren & fortfahren",creatingAccount:"Konto wird erstellt...",acceptingInvitation:"Einladung wird angenommen...",invitationAccepted:"Einladung angenommen!",redirecting:"Weiterleitung zum Dashboard...",invalidInvitation:"Ungültige Einladung",invitationExpired:"Diese Einladung ist abgelaufen. Bitte fordern Sie eine neue an.",invitationAlreadyAccepted:"Diese Einladung wurde bereits angenommen.",invitationNotFound:"Einladung nicht gefunden. Der Link ist möglicherweise ungültig oder abgelaufen.",noToken:"Kein Einladungstoken angegeben.",goToLogin:"Zur Anmeldung",verifyYourEmail:"Bestätigen Sie Ihre E-Mail",weSentCode:"Wir haben einen Bestätigungscode gesendet an",passwordRequirements:"Min. 6 Zeichen",preferredLanguage:"Sprache",inviteError:"Einladung konnte nicht verarbeitet werden"},es:{welcomeTo:"Bienvenido a",youveBeenInvited:"Has sido invitado a unirte a",asRole:"
478como",createAccountToJoin:"Crea una cuenta para empezar.",alreadyHaveAccount:"¿Ya tienes cuenta?",signInInstead:"Inicia sesión",acceptAndContinue:"Aceptar y continuar",creatingAccount:"Creando cuenta...",acceptingInvitation:"Aceptando invitación...",invitationAccepted:"¡Invitación aceptada!",redirecting:"Redirigiendo al panel...",invalidInvitation:"Invitación no válida",invitationExpired:"Esta invitación ha caducado. Solicite una nueva.",invitationAlreadyAccepted:"Esta invitación ya ha sido aceptada.",invitationNotFound:"Invitación no encontrada. El enlace puede ser inválido o haber caducado.",noToken:"No se proporcionó token de invitación.",goToLogin:"Ir al inicio de sesión",verifyYourEmail:"Verifica tu correo",weSentCode:"Enviamos un código de verificación a",passwordRequirements:"MÃn. 6 caracteres",preferredLanguage:"Idioma",inviteError:"No se pudo procesar la invitación"},fr:{welcomeTo:"Bienvenue chez",youveBeenInvited:"Vous avez été invité à rejoindre",asRole:"en tant que",createAccountToJoin:"Créez un compte pour commencer.",alreadyHaveAccount:"Déjà un compte ?",signInInstead:"Se connecter",acceptAndContinue:"Accepter et continuer",creatingAccount:"Création du compte...",acceptingInvitation:"Acceptation de l'invitation...",invitationAccepted:"Invitation acceptée !",redirecting:"Redirection vers le tableau de bord...",invalidInvitation:"Invitation invali
478de",invitationExpired:"Cette invitation a expiré. Veuillez en demander une nouvelle.",invitationAlreadyAccepted:"Cette invitation a déjà été acceptée.",invitationNotFound:"Invitation introuvable. Le lien est peut-être invalide ou expiré.",noToken:"Aucun jeton d'invitation fourni.",goToLogin:"Aller à la connexion",verifyYourEmail:"Vérifiez votre email",weSentCode:"Nous avons envoyé un code de vérification à ",passwordRequirements:"Min. 6 caractères",preferredLanguage:"Langue",inviteError:"Impossible de traiter l'invitation"},it:{welcomeTo:"Benvenuto in",youveBeenInvited:"Sei stato invitato a unirti a",asRole:"come",createAccountToJoin:"Crea un account per iniziare.",alreadyHaveAccount:"Hai già un account?",signInInstead:"Accedi invece",acceptAndContinue:"Accetta e continua",creatingAccount:"Creazione account...",acceptingInvitation:"Accettazione invito...",invitationAccepted:"Invito accettato!",redirecting:"Reindirizzamento alla dashboard...",invalidInvitation:"Invito non valido",invitationExpired:"Questo invito è scaduto. Richiedine uno nuovo.",invitationAlreadyAccepted:"Questo invito è già stato accettato.",invitationNotFound:"Invito non trovato. Il link potrebbe essere non valido o scaduto.",noToken:"Nessun token di invito fornito.",goToLogin:"Vai al login",verifyYourEmail:"Verifica la tua email",weSentCode:"Abbiamo inviato un codice di verifica a",passwordRequirements:"Min. 6 caratteri",preferredLanguage:"Lingua",inviteError:"Impossibile elaborare l'invito"}},da={saltstraumen:{en:{subtitle:"Tidal current forecast â 7 days",ingoing:"Ingoing",outgoing:"Outgoing",knots:"kn",wind:"Wind",error:"Could not load tidal data",noData:"No tidal data available"},no:{subtitle:"Tidevannsvarsel â 7 dager",ingoing:"InngÃ¥ende",outgoing:"UtgÃ¥ende",knots:"kn",wind:"Vind",error:"Kunne ikke laste tidevannsdata",noData:"Ingen tidevannsdata tilgjengelig"},de:{subtitle:"Gezeitenströmung â 7 Tage",ingoing:"Eingehend",outgoing:"Ausgehend",knots:"kn",wind:"Wind",error:"Gezeitendaten konnten nicht geladen werden",noData:"Keine Gezeitendaten verfügbar"},es:{subtitle:"Pronóstico de mareas â 7 dÃas",ingoing:"Entrante",outgoing:"Saliente",knots:"kn",wind:"Viento",error:"No se pudieron cargar los datos de mareas",noData:"Sin datos de mareas"},fr:{subtitle:"Prévision des courants de marée â 7 jours",ingoing:"Entrant",outgoing:"Sortant",knots:"kn",wind:"Vent",error:"Impossible de charger les données de marée",noData:"Aucune donnée de marée"},it:{subtitle:"Previsione correnti di marea â 7 giorni",ingoing:"Entrante",outgoing:"Uscente",knots:"kn",wind:"Vento",error:"Impossibile caricare i dati di marea",noData:"Nessun dato di marea disponibile"}},dashboardAI:{en:{placeholder:"Ask me about anything",thinking:"Thinking...",clearConversation:"Clear",sourcesLabel:"Sources",promptAttention:"What needs attention today?",promptBestActivities:"Which activities are performing best this month?",promptLowFill:"Show departures with low fill rate",promptOverloaded:"Which guides are overloaded next week?",promptRevenue:"Summarize revenue by activity",promptPartners:"What bookings were sold by partners?",promptHowTo:"How do I plan a departure?"},no:{placeholder:"Spør meg om hva som helst",thinking:"Tenker...",clearConversation:"Tøm",sourcesLabel:"Kilder",promptAttention:"Hva trenger oppmerksomhet i dag?",promptBestActivities:"Hvilke aktiviteter presterer best denne mÃ¥neden?",promptLowFill:"Vis avganger med lav fyllingsgrad",promptOverloaded:"Hvilke guider er overbelastet neste uke?",promptRevenue:"Oppsummer omsetning per aktivitet",promptPartners:"Hvilke bookinger ble solgt av partnere?",promptHowTo:"Hvordan planlegger jeg en avgang?"},de:{placeholder:"Fragen Sie mich alles",thinking:"Denke nach...",clearConversation:"Löschen",sourcesLabel:"Quellen",promptAttention:"Was braucht heute Aufmerksamkeit?",promptBestActivities:"Welche Aktivitäten laufen diesen Monat am besten?",promptLowFill:"Abfa
478hrten mit niedriger Auslastung anzeigen",promptOverloaded:"Welche Guides sind nächste Woche überlastet?",promptRevenue:"Umsatz nach Aktivität zusammenfassen",promptPartners:"Welche Buchungen wurden von Partnern verkauft?",promptHowTo:"Wie plane ich eine Abfahrt?"},es:{placeholder:"Pregúntame lo que sea",thinking:"Pensando...",clearConversation:"Limpiar",sourcesLabel:"Fuentes",promptAttention:"¿Qué necesita atención hoy?",promptBestActivities:"¿Cuáles son las actividades con mejor rendimiento este mes?",promptLowFill:"Mostrar salidas con baja ocupación",promptOverloaded:"¿Qué guÃas están sobrecargados la próxima semana?",promptRevenue:"Resumir ingresos por actividad",promptPartners:"¿Qué reservas fueron vendidas por socios?",promptHowTo:"¿Cómo planifico una salida?"},fr:{placeholder:"Posez-moi n'importe quelle question",thinking:"Réflexion...",clearConversation:"Effacer",sourcesLabel:"Sources",promptAttention:"Qu'est-ce qui nécessite une attention aujourd'hui ?",promptBestActivities:"Quelles activités sont les plus performantes ce mois ?",promptLowFill:"Afficher les départs à faible taux de remplissage",promptOverloaded:"Quels guides sont surchargés la semaine prochaine ?",promptRevenue:"Résumer les revenus par activité",promptPartners:"Quelles réservations ont été vendues par des partenaires ?",promptHowTo:"Comment planifier un départ ?"},it:{placeholder:"Chiedimi qualsiasi cosa",thinking:"Sto pensando...",clearConversation:"Cancella",sourcesLabel:"Fonti",promptAttention:"Cosa richiede attenzione oggi?",promptBestActivities:"Quali attività stanno avendo le migliori prestazioni questo mese?",promptLowFill:"Mostra partenze con basso tasso di riempimento",promptOverloaded:"Quali guide sono sovraccariche la prossima settimana?",promptRevenue:"Riassumi i ricavi per attività ",promptPartners:"Quali prenotazioni sono state vendute dai partner?",promptHowTo:"Come pianifico una partenza?"}},activityPerformance:{en:{title:"Activity Performance",periodToday:"Today",period7d:"7 days",period30d:"30 days",periodSeason:"Season",sortRevenue:"Revenue",sortBookings:"Bookings",sortFillRate:"Fill rate",sortUpcoming:"Upcoming",revenue:"Revenue",bookings:"Bookings",fillRate:"Fill rate",departures:"Departures",nextDeparture:"Next",noActivities:"No activity data for this period"},no:{title:"Aktivitetsytelse",periodToday:"I dag",period7d:"7 dager",period30d:"30 dager",periodSeason:"Sesong",sortRevenue:"Omsetning",sortBookings:"Bookinger",sortFillRate:"Fyllingsgrad",sortUpcoming:"Kommende",revenue:"Omsetning",bookings:"Bookinger",fillRate:"Fyllingsgrad",departures:"Avganger",nextDeparture:"Neste",noActivities:"Ingen aktivitetsdata for denne perioden"},de:{title:"Aktivitätsleistung",periodToday:"Heute",period7d:"7 Tage",period30d:"30 Tage",periodSeason:"Saison",sortRevenue:"Umsatz",sortBookings:"Buchungen",sortFillRate:"Auslastung",sortUpcoming:"Kommende",revenue:"Umsatz",bookings:"Buchungen",fillRate:"Auslastung",departures:"Abfahrten",nextDeparture:"Nächste",noActivities:"Keine Aktivitätsdaten für diesen Zeitraum"},es:{title:"Rendimiento de actividades",periodToday:"Hoy",period7d:"7 dÃas",period30d:"30 dÃas",periodSeason:"Temporada",sortRevenue:"Ingresos",sortBookings:"Reservas",sortFillRate:"Ocupación",sortUpcoming:"Próximos",revenue:"Ingresos",bookings:"Reservas",fillRate:"Ocupación",departures:"Salidas",nextDeparture:"Siguiente",noActivities:"Sin datos de actividad para este perÃodo"},fr:{title:"Performance des activités",periodToday:"Aujourd'hui",period7d:"7 jours",period30d:"30 jours",periodSeason:"Saison",sortRevenue:"Revenus",sortBookings:"Réservations",sortFillRate:"Taux remplissage",sortUpcoming:"à venir",revenue:"Revenus",bookings:"Réservations",fillRate:"Taux remplissage",departures:"Départs",nextDeparture:"Prochain",noActivities:"Aucune donnée d'activité pour cette période"},it:{title:"Prestazioni attività ",periodToday:"Oggi",period7d:"7 giorni",period30d:"30 giorni",periodSeason:"Stagione",sortRevenue:"Ricavi",sortBookings:"Prenotazioni",sortFillRate:"Tasso riempimento",sortUpcoming:"Prossimi",revenue:"Ricavi",bookings:"Prenotazioni",fillRate:"Tasso riempimento",departures:"Partenze",nextDeparture:"Prossima",noActivities:"Nessun dato attività per questo periodo"}},guideDashboard:{en:{myActivities:"My Activities",noUpcomingActivities:"No upcoming activities",viewDetails:"View details",participants:"Participants",needsPersonnel:"Needs Personnel",n
478oMissingPersonnel:"All events are fully staffed",missingCount:"Missing {count}",takeAssignment:"Take assignment",myAvailability:"My Availability",noAbsenceRegistered:"No absence registered",registerAbsence:"Register absence",weekOverview:"Week Overview",noActivitiesThisDay:"No activities",booked:"Booked",cancelled:"Cancelled",assigned:"Assigned"},no:{myActivities:"Mine aktiviteter",noUpcomingActivities:"Ingen kommende aktiviteter",viewDetails:"Se detaljer",participants:"Deltakere",needsPersonnel:"Trenger personell",noMissingPersonnel:"Alle hendelser er fullbemannet",missingCount:"Mangler {count}",takeAssignment:"Ta oppdrag",myAvailability:"Min tilgjengelighet",noAbsenceRegistered:"Ingen fravær registrert",registerAbsence:"Registrer fravær",weekOverview:"Ukeoversikt",noActivitiesThisDay:"Ingen aktiviteter",booked:"Booket",cancelled:"Kansellert",assigned:"Tildelt"},de:{myActivities:"Meine Aktivitäten",noUpcomingActivities:"Keine bevorstehenden Aktivitäten",viewDetails:"Details ansehen",participants:"Teilnehmer",needsPersonnel:"Braucht Personal",noMissingPersonnel:"Alle Termine sind vollständig besetzt",missingCount:"Fehlen {count}",takeAssignment:"Auftrag übernehmen",myAvailability:"Meine Verfügbarkeit",noAbsenceRegistered:"Keine Abwesenheit registriert",registerAbsence:"Abwesenheit registrieren",weekOverview:"Wochenübersicht",noActivitiesThisDay:"Keine Aktivitäten",booked:"Gebucht",cancelled:"Abgesagt",assigned:"Zugewiesen"},es:{myActivities:"Mis actividades",noUpcomingActivities:"Sin actividades próximas",viewDetails:"Ver detalles",participants:"Participantes",needsPersonnel:"Necesita personal",noMissingPersonnel:"Todos los eventos están completamente cubiertos",missingCount:"Faltan {count}",takeAssignment:"Tomar asignación",myAvailability:"Mi disponibilidad",noAbsenceRegistered:"Sin ausencia registrada",registerAbsence:"Registrar ausencia",weekOverview:"Resumen semanal",noActivitiesThisDay:"Sin actividades",booked:"Reservado",cancelled:"Cancelado",assigned:"Asignado"},fr:{myActivities:"Mes activités",noUpcomingActivities:"Aucune activité à venir",viewDetails:"Voir les détails",participants:"Participants",needsPersonnel:"Besoin de personnel",noMissingPersonnel:"Tous les événements sont complets",missingCount:"Manquent {count}",takeAssignment:"Prendre la mission",myAvailability:"Ma disponibilité",noAbsenceRegistered:"Aucune absence enregistrée",registerAbsence:"Enregistrer une absence",weekOverview:"Aperçu de la semaine",noActivitiesThisDay:"Aucune activité",booked:"Réservé",cancelled:"Annulé",assigned:"Assigné"},it:{myActivities:"Le mie attività ",noUpcomingActivities:"Nessuna attività in programma",viewDetails:"Vedi dettagli",participants:"Partecipanti",needsPersonnel:"Necessita personale",noMissingPersonnel:"Tutti gli eventi sono completamente coperti",missingCount:"Mancano {count}",takeAssignment:"Prendi incarico",myAvailability:"La mia disponibilità ",noAbsenceRegistered:"Nessuna assenza registrata",registerAbsence:"Registra assenza",weekOverview:"Panoramica settimanale",noActivitiesThisDay:"Nessuna attività ",booked:"Prenotato",cancelled:"Annullato",assigned:"Assegnato"}},widget:{en:{widgetSetup:"Widget setup",close:"Close",widgetStatus:"Widget status",enabled:"Enabled",disabled:"Disabled",bookingSettings:"Booking settings",requireParticipantNames:"Register participant names",url:"URL",embedCode:"Embed code",copyUrl:"Copy booking widget URL",copyEmbedCode:"Copy iframe embed code",testWidget:"Test widget",copied:"Copied!",widgetWithImages:"Widget with images",widgetWithoutImages:"Widget without images",backgroundColor:"Background color"},no:{widgetSetup:"Widget-oppsett",close:"Lukk",widgetStatus:"Widget-status",enabled:"Aktivert",disabled:"Deaktivert",bookingSettings:"Booking-innstillinger",requireParticipantNames:"Registrer navn pÃ¥ deltakere",url:"Nettadresse",embedCode:"Integrasjonskode",copyUrl:"Kopier widget-URL",copyEmbedCode:"Kopier iframe-kode",testWidget:"Test widget",copied:"Kopiert!",widgetWithImages:"Widget med bilder",widgetWithoutImages:"Widget uten bilder",backgroundColor:"Bakgrunnsfarge"},de:{widgetSetup:"Widget-Einrichtung",close:"SchlieÃen",widgetStatus:"Widget-Status",enabled:"Aktiviert",disabled:"Deaktiviert",bookingSettings:"Buchungseinstellungen",requireParticipantNames:"Teilnehmernamen erfassen",url:"URL",embedCode:"Einbettungscode",copyUrl:"Widget-URL kopieren",copyEmbedCode:"Iframe-Code kopieren",testWidget:"Widget testen",copied:"Kopiert!",widgetWithImages:"Widget mit Bildern",
478widgetWithoutImages:"Widget ohne Bilder",backgroundColor:"Hintergrundfarbe"},es:{widgetSetup:"Configuración de widget",close:"Cerrar",widgetStatus:"Estado del widget",enabled:"Activado",disabled:"Desactivado",bookingSettings:"Configuración de reservas",requireParticipantNames:"Registrar nombres de participantes",url:"URL",embedCode:"Código de inserción",copyUrl:"Copiar URL del widget",copyEmbedCode:"Copiar código iframe",testWidget:"Probar widget",copied:"¡Copiado!",widgetWithImages:"Widget con imágenes",widgetWithoutImages:"Widget sin imágenes",backgroundColor:"Color de fondo"},fr:{widgetSetup:"Configuration du widget",close:"Fermer",widgetStatus:"Statut du widget",enabled:"Activé",disabled:"Désactivé",bookingSettings:"Paramètres de réservation",requireParticipantNames:"Enregistrer les noms des participants",url:"URL",embedCode:"Code d'intégration",copyUrl:"Copier l'URL du widget",copyEmbedCode:"Copier le code iframe",testWidget:"Tester le widget",copied:"Copié !",widgetWithImages:"Widget avec images",widgetWithoutImages:"Widget sans images",backgroundColor:"Couleur de fond"},it:{widgetSetup:"Configurazione widget",close:"Chiudi",widgetStatus:"Stato widget",enabled:"Attivato",disabled:"Disattivato",bookingSettings:"Impostazioni prenotazione",requireParticipantNames:"Registra nomi partecipanti",url:"URL",embedCode:"Codice di incorporamento",copyUrl:"Copia URL widget",copyEmbedCode:"Copia codice iframe",testWidget:"Testa widget",copied:"Copiato!",widgetWithImages:"Widget con immagini",widgetWithoutImages:"Widget senza immagini",backgroundColor:"Colore di sfondo"}},seriesList:{en:{searchSeries:"Search series...",noResults:"No results.",noRecurringYet:"No recurring activities added yet.",open:"Open",private:"Hidden",closed:"Closed",viewDepartures:"View departures",slotsCount:"{count} slots à {dur}",from:"from {date}"},no:{searchSeries:"Søk i serier...",noResults:"Ingen treff.",noRecurringYet:"Ingen repeterende aktiviteter lagt til ennÃ¥.",open:"Ã
pen",private:"Skjult",closed:"Stengt",viewDepartures:"Vis avganger",slotsCount:"{count} luker à {dur}",from:"fra {date}"},de:{searchSeries:"Serien suchen...",noResults:"Keine Ergebnisse.",noRecurringYet:"Noch keine wiederkehrenden Aktivitäten.",open:"Offen",private:"Versteckt",closed:"Geschlossen",viewDepartures:"Abfahrten anzeigen",slotsCount:"{count} Zeitfenster à {dur}",from:"ab {date}"},es:{searchSeries:"Buscar series...",noResults:"Sin resultados.",noRecurringYet:"Aún no hay actividades recurrentes.",open:"Abierta",private:"Oculta",closed:"Cerrada",viewDepartures:"Ver salidas",slotsCount:"{count} franjas à {dur}",from:"desde {date}"},fr:{searchSeries:"Rechercher séries...",noResults:"Aucun résultat.",noRecurringYet:"Aucune activité récurrente ajoutée.",open:"Ouverte",private:"Cachée",closed:"Fermée",viewDepartures:"Voir les départs",slotsCount:"{count} créneaux à {dur}",from:"à partir du {date}"},it:{searchSeries:"Cerca serie...",noResults:"Nessun risultato.",noRecurringYet:"Nessuna attività ricorrente aggiunta.",open:"Aperta",private:"Nascosta",closed:"Chiusa",viewDepartures:"Vedi partenze",slotsCount:"{count} slot à {dur}",from:"dal {date}"}}},vb={en:{title:"My Trips",myTrips:"My Trips",availableTrips:"Available Trips",noTripsAssigned:"No upcoming trips assigned to you",noAvailableTrips:"No available trips matching your competences",signUp:"Sign up",signed:"Signed up",participants:"Participants",capacity:"Capacity",missingCompetence:"Needs your competence"},no:{title:"Mine turer",myTrips:"Mine turer",availableTrips:"Ledige turer",noTripsAssigned:"Ingen kommende turer tildelt deg",noAvailableTrips:"Ingen ledige turer som matcher dine kompetanser",signUp:"Meld meg på",signed:"Påmeldt",participants:"Deltakere",capacity:"Kapasitet",missingCompetence:"Trenger din kompetanse"},de:{title:"Meine Touren",myTrips:"Meine Touren",availableTrips:"Verfügbare Touren",noTripsAssigned:"Keine bevorstehenden Touren zugewiesen",noAvailableTrips:"Keine verfügbaren Touren passend zu Ihren Kompetenzen",signUp:"Anmelden",signed:"Angemeldet",participants:"Teilnehmer",capacity:"Kapazität",missingCompetence:"Benötigt Ihre Kompetenz"},es:{title:"Mis viajes",myTrips:"Mis viajes",availableTrips:"Viajes dis
478ponibles",noTripsAssigned:"No hay viajes próximos asignados",noAvailableTrips:"No hay viajes disponibles que coincidan con tus competencias",signUp:"Inscribirse",signed:"Inscrito",participants:"Participantes",capacity:"Capacidad",missingCompetence:"Necesita tu competencia"},fr:{title:"Mes sorties",myTrips:"Mes sorties",availableTrips:"Sorties disponibles",noTripsAssigned:"Aucune sortie à venir assignée",noAvailableTrips:"Aucune sortie disponible correspondant à vos compétences",signUp:"S'inscrire",signed:"Inscrit",participants:"Participants",capacity:"Capacité",missingCompetence:"Nécessite votre compétence"},it:{title:"Le mie uscite",myTrips:"Le mie uscite",availableTrips:"Uscite disponibili",noTripsAssigned:"Nessuna uscita imminente assegnata",noAvailableTrips:"Nessuna uscita disponibile corrispondente alle tue competenze",signUp:"Iscriversi",signed:"Iscritto",participants:"Partecipanti",capacity:"Capacità ",missingCompetence:"Richiede la tua competenza"}},yb={en:{participants:"Participants",noParticipants:"No participants yet",pax:"pax",paxPlural:"pax",team:"Team",resources:"Resources",noPersonnel:"No personnel assigned",noResources:"No resources assigned",missing:"Missing",checkedIn:"Checked in",timeRegistration:"Time registration",fromTime:"From",toTime:"To",registerTime:"Register time",hours:"h",minutes:"min",timeRegistered:"Time registered",notesPlaceholder:"Notes...",updateTime:"Update time",cancel:"Cancel",photos:"Photos",addPhotos:"Add photos",sharePhotos:"Share photos",noPhotos:"Tap to add photos from this trip",scanToViewPhotos:"Guests can scan to view and download photos",copyLink:"Copy link",linkCopied:"Link copied!",dropPhotos:"Drop photos here",tripDetails:"Trip details",date:"Date",time:"Time",guides:"Guides",back:"Back",actions:"Actions",edit:"Edit",showQRCode:"Show QR code",deleteTrip:"Delete trip",guests:"Guests",noGuestsRegistered:"No guests registered",socialMediaConsent:"Photos can be published on social media",socialMediaConsentDescription:"The guide has obtained consent from the guests that the photos can be published",save:"Save"},no:{participants:"Deltakere",noParticipants:"Ingen deltakere ennå",pax:"deltaker",paxPlural:"deltakere",team:"Team",resources:"Ressurser",noPersonnel:"Ingen personell tildelt",noResources:"Ingen ressurser tildelt",missing:"Mangler",checkedIn:"Oppmøtt",timeRegistration:"Timeregistrering",fromTime:"Fra",toTime:"Til",registerTime:"Registrer tid",hours:"t",minutes:"min",timeRegistered:"Tid registrert",notesPlaceholder:"Notater...",updateTime:"Oppdater tid",cancel:"Avbryt",photos:"Bilder",addPhotos:"Legg til bilder",sharePhotos:"Del bilder",noPhotos:"Trykk for å legge til bilder fra turen",scanToViewPhotos:"Gjestene kan skanne for å se og laste ned bilder",copyLink:"Kopier lenke",linkCopied:"Lenke kopiert!",dropPhotos:"Slipp bilder her",tripDetails:"Turdetaljer",date:"Dato",time:"Tid",guides:"Guider",back:"Tilbake",actions:"Handlinger",edit:"Rediger",showQRCode:"Vis QR-kode",deleteTrip:"Slett tur",guests:"Gjester",noGuestsRegistered:"Ingen gjester registrert",socialMediaConsent:"Bilder kan publiseres på sosiale medier",socialMediaConsentDescription:"Guiden har innhentet samtykke fra gjestene om at bildene kan publiseres",save:"Lagre"},de:{participants:"Teilnehmer",noParticipants:"Noch keine Teilnehmer",pax:"Teiln.",paxPlural:"Teiln.",team:"Team",resources:"Ressourcen",noPersonnel:"Kein Personal zugewiesen",noResources:"Keine Ressourcen zugewiesen",missing:"Fehlt",checkedIn:"Eingecheckt",timeRegistration:"Zeiterfassung",fromTime:"Von",toTime:"Bis",registerTime:"Zeit erfassen",hours:"Std",minutes:"Min",timeRegistered:"Zeit erfasst",notesPlaceholder:"Notizen...",updateTime:"Zeit aktualisieren",cancel:"Abbrechen",photos:"Fotos",addPhotos:"Fotos hinzufügen",sharePhotos:"Fotos teilen",noPhotos:"Tippen Sie, um Fotos von diesem Ausflug hinzuzufügen",scanToViewPhotos:"Gäste können scannen, um Fotos anzusehen und herunterzuladen",copyLink:"Link kopieren",linkCopied:"Link kopiert!",dropPhotos:"Fotos hier ablegen",tripDetails:"Tourdetails",date:"Datum",time:"Zeit",guides:"Guides",back:"Zurück",actions:"Aktionen",edit:"Bearbeiten",showQRCode:"QR-Code anzeigen",deleteTrip:"Tour löschen",guests:"Gäste",noGuestsRegistered:"Keine Gäste registriert",socialMediaConsent:"Fotos können in sozialen Medien veröffentlicht werden",socialMediaConsentDescription:"Der Guide hat die Zustimmung der Gäste eingeholt, dass die Fotos veröffentlicht werden dürfen",save:"Speichern"},es:{participants:"Participantes",noParticipants:"Aún no hay participantes",pax:"part.",paxPlural:"part.",team:"Equipo",resources:"Recursos",noPersonnel:"Sin personal asignado",noResources:"Sin recursos asignados",missing:"Falta",checkedIn:"Registrado",timeRegistration:"Registro de tiempo",fromTime:"Desde",toTime:"Hasta",registerTime:"Registrar tiempo",hours:"h",minutes:"min",timeRegistered:"Tiempo registrado",notesPlaceholder:"Notas...",updateTime:"Actualizar tiempo",cancel:"Cancelar",photos:"Fotos",addPhotos:"Añ
478adir fotos",sharePhotos:"Compartir fotos",noPhotos:"Toque para añadir fotos de este viaje",scanToViewPhotos:"Los huéspedes pueden escanear para ver y descargar fotos",copyLink:"Copiar enlace",linkCopied:"¡Enlace copiado!",dropPhotos:"Suelta las fotos aquÃ",tripDetails:"Detalles del viaje",date:"Fecha",time:"Hora",guides:"GuÃas",back:"Volver",actions:"Acciones",edit:"Editar",showQRCode:"Mostrar código QR",deleteTrip:"Eliminar viaje",guests:"Invitados",noGuestsRegistered:"No hay invitados registrados",socialMediaConsent:"Las fotos pueden publicarse en redes sociales",socialMediaConsentDescription:"El guÃa ha obtenido el consentimiento de los invitados para publicar las fotos",save:"Guardar"},fr:{participants:"Participants",noParticipants:"Aucun participant",pax:"part.",paxPlural:"part.",team:"Ãquipe",resources:"Ressources",noPersonnel:"Aucun personnel assigné",noResources:"Aucune ressource assignée",missing:"Manquant",checkedIn:"Enregistré",timeRegistration:"Saisie du temps",fromTime:"De",toTime:"Ã",registerTime:"Enregistrer le temps",hours:"h",minutes:"min",timeRegistered:"Temps enregistré",notesPlaceholder:"Notes...",updateTime:"Mettre à jour le temps",cancel:"Annuler",photos:"Photos",addPhotos:"Ajouter des photos",sharePhotos:"Partager les photos",noPhotos:"Appuyez pour ajouter des photos de ce voyage",scanToViewPhotos:"Les invités peuvent scanner pour voir et télécharger les photos",copyLink:"Copier le lien",linkCopied:"Lien copié !",dropPhotos:"Déposez les photos ici",tripDetails:"Détails du voyage",date:"Date",time:"Heure",guides:"Guides",back:"Retour",actions:"Actions",edit:"Modifier",showQRCode:"Afficher le code QR",deleteTrip:"Supprimer le voyage",guests:"Invités",noGuestsRegistered:"Aucun invité enregistré",socialMediaConsent:"Les photos peuvent être publiées sur les réseaux sociaux",socialMediaConsentDescription:"Le guide a obtenu le consentement des invités pour publier les photos",save:"Enregistrer"},it:{participants:"Partecipanti",noParticipants:"Nessun partecipante",pax:"part.",paxPlural:"part.",team:"Squadra",resources:"Risorse",noPersonnel:"Nessun personale assegnato",noResources:"Nessuna risorsa assegnata",missing:"Mancante",checkedIn:"Registrato",timeRegistration:"Registrazione ore",fromTime:"Da",toTime:"A",registerTime:"Registra tempo",hours:"h",minutes:"min",timeRegistered:"Tempo registrato",notesPlaceholder:"Note...",updateTime:"Aggiorna tempo",cancel:"Annulla",photos:"Foto",addPhotos:"Aggiungi foto",sharePhotos:"Condividi foto",noPhotos:"Tocca per aggiungere foto da questo viaggio",scanToViewPhotos:"Gli ospiti possono scansionare per visualizzare e scaricare le foto",copyLink:"Copia link",linkCopied:"Link copiato!",dropPhotos:"Rilascia le foto qui",tripDetails:"Dettagli del viaggio",date:"Data",time:"Ora",guides:"Guide",back:"Indietro",actions:"Azioni",edit:"Modifica",showQRCode:"Mostra codice QR",deleteTrip:"Elimina viaggio",guests:"Ospiti",noGuestsRegistered:"Nessun ospite registrato",socialMediaConsent:"Le foto possono essere pubblicate sui social media",socialMediaConsentDescription:"La guida ha ottenuto il consenso degli ospiti per la pubblicazione delle foto",save:"Salva"}},bb={en:{activities:{title:"Activities overview",intro:"Activities are the products you offer â tours, experiences or internal tasks. Configure each one with duration, pricing, personnel and resource requirements.",tipTabs:"Use the tabs to switch between Sellable activities (customer-facing products), Internal activities (operational tasks) and Scheduled departures (recurring schedules that automatically create calendar events).",tipPricing:"Tap the price tag icon to set prices per category and period. Manage price categories with the dedicated button in the header.",tipSeries:"Use the Scheduled departures tab to set up recurring departures. Define the activity, days of the week, time slots, and a date range â the system automatically generates calendar events on the chosen schedule.",tipMedia:"Click the thumbnail to add photos. The first image becomes the cover shown in booking pages and widgets.",tipPublishing:"Use the globe icon to manage public-facing content â descriptions, included items, meeting point and practical info."},calendar:{title:"Calendar overview",intro:"The calendar is your central hub for scheduling and managing departures. Switch views, navigate dates and create events â all in one place.",tipViews:"Toggle between Day, Week and Month views using the buttons in the header. Each view is optimised for different planning needs.",tipNavigate:'Use the peri
478od picker to jump to a specific date. Click "Today" to return to the current day instantly.',tipCreate:'Press the "+" button to create a new event. Select an activity to pre-fill duration, pricing and capacity.',tipRecurring:"Set up recurring departures from the Scheduled departures tab under Activities â the system automatically creates events on your chosen schedule.",tipDetails:"Click any event card to open the event drawer where you can edit details, assign personnel and manage bookings.",tipWeather:"In week and day views the header shows weather forecasts and wind conditions to help plan outdoor activities."},dontShowAgain:"Don't show again",eventDrawer:{title:"What is an event?",intro:"Events are the building blocks of your calendar. Each event represents a scheduled departure or activity â assign personnel and resources, and open it for bookings.",tipActivity:"Select an activity to automatically set duration, pricing and capacity.",tipSeries:"Create recurring departures from the Scheduled departures tab under Activities to schedule repeated departures automatically.",tipPersonnel:"Assign guides and staff. The system warns you about scheduling conflicts.",tipStatus:'Set the operational status: "Confirmed" means the departure is going ahead, "Tentative" signals it is not yet confirmed, and "Cancelled" marks it as called off.',tipBooking:'Toggle "Bookable" to accept online reservations. Use "Open" to allow bookings, "Hidden" to hide from public pages, or "Closed" to block new bookings and show the departure as sold out publicly. Manage participants directly from here.'},resourcePlanner:{title:"Resource planner",intro:"The resource planner gives you a weekly overview of personnel schedules, conflicts and missing assignments.",tipTimeline:"Each row shows one team member's week. Events are colour-coded: green = ready, amber = missing requirements, red = conflict.",tipMissing:'The "Missing resources" panel at the bottom lists all departures that still need personnel or equipment.',tipAssign:'Click a "Missing â¦" slot to assign someone directly â no need to open the event drawer.',tipFilter:"Use the filter to narrow by competence or hide members without events."},myTrips:{title:"My trips",intro:"This is your personal overview of upcoming trips and available shifts.",tipMyTrips:'"My trips" shows all upcoming departures you are assigned to. Tap a trip to see participants, team and resources.',tipAvailable:'"Available trips" shows shifts that match your competences and still need staff. Tap "Sign up" to join.',tipCheckin:"Inside a trip, use the checkboxes to check in participants on arrival.",tipTime:"After the trip, register your actual working hours. If you worked longer or shorter than planned, the deviation is shown on the trip card."},resources:{title:"Resources overview",intro:"Resources are the physical items used on activities â boats, snowmobiles, kayaks, climbing gear and more. Group them by type and set occupancy rules to control capacity.",tipTypes:'Use "Resource types" to group similar items. Each type can have its own occupancy rules â for example, a snowmobile can carry 1â2 guests.',tipResources:'Each resource is an individual unit â e.g. "Snowmobile #1". Assign a type and optional max capacity.',tipOccupancy:"Set min/max occupancy on a resource type to control how many guests can share one unit. The system calculates required units automatically.",tipExclusive:'Enable "Exclusive use" on a resource type to offer a solo option. Guests can pay extra to reserve a full unit for themselves.'},resourceTypes:{title:"Resource types",intro:"Resource types define categories of equipment â boats, snowmobiles, kayaks, etc. Each type sets occupancy rules that control how many guests can share one unit.",tipTypes:"Create a type for each category of equipment you use. Activities and price categories link to these types for automatic capacity tracking.",tipOccupancy:"Min/max occupancy defines how many guests fit in one unit. The booking system uses max occupancy to calculate how many units are needed.",tipExclusive:"When exclusive use is enabled, you can create price categories that let guests reserve an entire unit for themselves at a premium price.",tipCapacity:"The system automatically tracks resource usage per event. Bookings are blocked when all units of a type are fully allocated."},bookingScreens:{title:"Booking screens",intro:"Booking screens are public pages where customers can browse activities, pick a departure and pay â perfect for kiosks, websites or shared links.",tipScreens:"Each screen is a standalone booking page. Create multiple screens for different locations, events or audiences.",tipActivities:'Choose "All activities" to include everything, or hand-pick specific activities. Partner activities are grouped by company.',tipLayout:"Customise the look: choose dark or light theme, font size and screen orientation. The grid adapts automatically to the screen width.",tipPayment:"Link a card terminal for on-site kiosk payments, or leave it on online payment for Stripe checkout.",tipShare:"Copy the public link, embed it as an iframe, or use the embed script for shared-cart integration on your website."},priceCategories:{title:"Price categories",intro:"Price categories define the ticket types customers can buy. Each category defaults to shared mode, where guests share resources. Switch to exclusive mode to let a guest reserve a full unit.",tipShared:"Shared: guests share resource units. The system calculates how many units are needed based on the number of guests and the occupancy limit.",tipExclusive:"Exclusive: each guest gets their own unit regardless of max occupancy. Use this for premium solo experiences at a higher price.",tipResourceType:"When using exclusive mode, select the resource type so the system knows which units to reserve.",tipBirthDate:"You can require a birth date for participants. Salesmate will then verify that the participant meets the age restriction set for the category."},categoryForm:{title:"Setting up a price category",intro:'A price category is a ticket type your customers see in booking â for example "Adult", "Child" or "Solo snowmobile".',tipName:"Price name â the label shown to the customer in the booking flow.",tipDescription:'Short description â optional text shown below the price name, e.g. "ages 3â12" or "drives own snowmobile".',tipDob:"Require date of birth â when enabled, participants must enter the
478ir birth date. You can also set a minimum age that is validated automatically.",tipShared:"Shared capacity â multiple participants share the same resource. The system calculates units needed based on participants and capacity.",tipExclusive:"One unit per booking â each booking reserves a full resource unit. Requires selecting a resource type.",tipEquipment:"Applies to resource type â determines which resource pool is drawn from when bookings are made with this category."},leaves:{title:"Leaves & absence",intro:"Register holidays, sick leave and other absences for your team. Leaves block the person from being assigned to events during the period.",tipTypes:"Choose leave type â holiday, sick leave or other absence. Each type is shown with a distinct label in the list.",tipPeriod:"Set start and end dates. The system prevents scheduling conflicts with existing events.",tipCalendar:"Approved leaves appear automatically in the calendar as blocked periods for the assigned person."}},no:{activities:{title:"Aktivitetsoversikt",intro:"Aktiviteter er produktene du tilbyr â turer, opplevelser eller interne oppgaver. Konfigurer hver med varighet, priser, personell- og ressurskrav.",tipTabs:"Bruk fanene for Ã¥ bytte mellom Salgbare aktiviteter (kundevendte produkter), Interne aktiviteter (driftsoppgaver) og Faste avganger (gjentakende tidsplaner som automatisk oppretter kalenderhendelser).",tipPricing:"Trykk pÃ¥ prisetiketten for Ã¥ sette priser per kategori og periode. Administrer priskategorier med den dedikerte knappen i headeren.",tipSeries:"Bruk Faste avganger-fanen for Ã¥ sette opp gjentakende avganger. Definer aktivitet, ukedager, tidspunkt og datointervall â systemet oppretter kalenderhendelser automatisk etter valgt tidsplan.",tipMedia:"Klikk pÃ¥ miniatyrbildet for Ã¥ legge til bilder. Det første bildet blir forsidebildet som vises pÃ¥ bookingsider og widgeter.",tipPublishing:"Bruk globus-ikonet for Ã¥ administrere offentlig innhold â beskrivelser, inkluderte elementer, oppmøtested og praktisk info."},calendar:{title:"Kalenderoversikt",intro:"Kalenderen er ditt sentrale verktøy for planlegging og hÃ¥ndtering av avganger. Bytt visning, naviger datoer og opprett hendelser â alt pÃ¥ ett sted.",tipViews:"Bytt mellom Dag-, Uke- og MÃ¥nedsvisning med knappene i headeren. Hver visning er tilpasset ulike planleggingsbehov.",tipNavigate:"Bruk periodevelgeren for Ã¥ hoppe til en bestemt dato. Klikk «I dag» for Ã¥ gÃ¥ tilbake til dagens dato.",tipCreate:"Trykk «+»-knappen for Ã¥ opprette en ny hendelse. Velg en aktivitet for Ã¥ forhÃ¥ndsutfylle varighet, priser og kapasitet.",tipRecurring:"Sett opp repeterende avganger fra Faste avganger-fanen under Aktiviteter â systemet oppretter hendelser automatisk etter valgt tidsplan.",tipDetails:"Klikk pÃ¥ et hendelseskort for Ã¥ Ã¥pne hendelseskuffen der du kan redigere detaljer, tildele personell og administrere bookinger.",tipWeather:"I uke- og dagsvisningen viser headeren værmelding og vindforhold for Ã¥ hjelpe med planlegging av utendørsaktiviteter."},dontShowAgain:"Ikke vis igjen",eventDrawer:{title:"Hva er en hendelse?",intro:"Hendelser er byggesteinene i kalenderen din. Hver hendelse representerer en planlagt avgang eller aktivitet â tildel personell og ressurser, og Ã¥pne den for bookinger.",tipActivity:"Velg en aktivitet for Ã¥ automatisk sette varighet, priser og kapasitet.",tipSeries:"Opprett gjentakende avganger fra Faste avganger-fanen under Aktiviteter for Ã¥ planlegge faste avganger automatisk.",tipPersonnel:"Tildel guider og ansatte. Systemet varsler deg om planleggingskonflikter.",tipStatus:"Sett driftsstatus: «Bekreftet» betyr at avgangen gjennomføres, «Tentativ» signaliserer at den ikke er endelig bekreftet, og «Innstilt» markerer den som kansellert.",tipBooking:"SlÃ¥ pÃ¥ «Bookbar» for Ã¥ ta imot reservasjoner. Bruk «Ã
pen» for å tillate bookinger, «Skjult» for å skjule fra offentlige sider, eller «Stengt» for å blokkere nye bookinger og vise avgangen som utsolgt offentlig. Administrer deltakere direkte herfra."},resourcePlanner:{title:"Ressursplanlegger",intro:"Ressursplanleggeren gir deg en ukentlig oversikt over personalets tidsplan, konflikter og manglende tildelinger.",tipTimeline:"Hver rad viser én ansatts uke. Hendelser er fargekodet: grønn = klar, gul = mangler krav, rød
478= konflikt.",tipMissing:"Panelet «Mangler ressurser» nederst lister alle avganger som fortsatt trenger personell eller utstyr.",tipAssign:"Klikk pÃ¥ en «Mangler â¦Â»-knapp for Ã¥ tildele noen direkte â du trenger ikke Ã¥pne hendelseskuffen.",tipFilter:"Bruk filteret til Ã¥ begrense etter kompetanse eller skjule ansatte uten hendelser."},myTrips:{title:"Mine turer",intro:"Dette er din personlige oversikt over kommende turer og ledige vakter.",tipMyTrips:"«Mine turer» viser alle kommende avganger du er tildelt. Trykk pÃ¥ en tur for Ã¥ se deltakere, team og ressurser.",tipAvailable:"«Ledige turer» viser vakter som matcher dine kompetanser og fortsatt trenger bemanning. Trykk «Meld på» for Ã¥ melde deg pÃ¥.",tipCheckin:"Inne i en tur kan du bruke avkrysningsboksene for Ã¥ sjekke inn deltakere ved ankomst.",tipTime:"Etter turen registrerer du faktisk arbeidstid. Hvis du jobbet mer eller mindre enn planlagt, vises avviket pÃ¥ turkortet."},resources:{title:"Ressursoversikt",intro:"Ressurser er de fysiske gjenstandene som brukes pÃ¥ aktiviteter â bÃ¥ter, snøscootere, kajakker, klatreutstyr og mer. Grupper dem etter type og sett beleggskrav for Ã¥ styre kapasitet.",tipTypes:"Bruk «Ressurstyper» for Ã¥ gruppere like enheter. Hver type kan ha egne beleggsregler â for eksempel kan en snøscooter ta 1â2 gjester.",tipResources:"Hver ressurs er en individuell enhet â f.eks. «Snøscooter #1». Tilordne en type og valgfri maks kapasitet.",tipOccupancy:"Sett min/maks belegg pÃ¥ en ressurstype for Ã¥ styre hvor mange gjester som kan dele én enhet. Systemet beregner nødvendige enheter automatisk.",tipExclusive:"Aktiver «Eksklusiv bruk» pÃ¥ en ressurstype for Ã¥ tilby en solo-opsjon. Gjester kan betale ekstra for Ã¥ reservere en hel enhet for seg selv."},resourceTypes:{title:"Ressurstyper",intro:"Ressurstyper definerer kategorier av utstyr â bÃ¥ter, snøscootere, kajakker osv. Hver type har beleggsregler som styrer hvor mange gjester som kan dele én enhet.",tipTypes:"Opprett en type for hver utstyrskategori du bruker. Aktiviteter og priskategorier kobles til disse typene for automatisk kapasitetssporing.",tipOccupancy:"Min/maks belegg bestemmer hvor mange gjester som fÃ¥r plass i én enhet. Bookingsystemet bruker maks belegg til Ã¥ beregne antall enheter som trengs.",tipExclusive:"NÃ¥r eksklusiv bruk er aktivert, kan du opprette priskategorier som lar gjester reservere en hel enhet for seg selv til en høyere pris.",tipCapacity:"Systemet sporer automatisk ressursbruk per avgang. Bookinger blokkeres nÃ¥r alle enheter av en type er fullt allokert."},bookingScreens:{title:"Bookingskjermer",intro:"Bookingskjermer er offentlige sider der kunder kan bla gjennom aktiviteter, velge avgang og betale â perfekt for kiosker, nettsider eller delte lenker.",tipScreens:"Hver skjerm er en frittstÃ¥ende bookingside. Opprett flere skjermer for ulike lokasjoner, arrangementer eller mÃ¥lgrupper.",tipActivities:"Velg «Alle aktiviteter» for Ã¥ inkludere alt, eller velg spesifikke aktiviteter. Partneraktiviteter grupperes etter selskap.",tipLayout:"Tilpass utseendet: velg mørkt eller lyst tema, skriftstørrelse og skjermretning. Rutenettet tilpasser seg automatisk etter skjermens bredde.",tipPayment:"Koble til en kortterminal for betaling pÃ¥ stedet, eller la det stÃ¥ pÃ¥ nettbetaling for Stripe-utsjekk.",tipShare:"Kopier den offentlige lenken, bygg den inn som iframe, eller bruk innbyggingsskriptet for delt handlekurv-integrasjon pÃ¥ nettsiden din."},priceCategories:{title:"Priskategorier",intro:"Priskategorier definerer billetttypene kundene kan kjøpe. Hver kategori er satt til delt modus som standard, der gjester deler ressurser. Bytt til eksklusiv modus for Ã¥ la en gjest reservere en hel enhet.",tipShared:"Delt: gjestene deler ressursenheter. Systemet beregner hvor mange enheter som trengs basert pÃ¥ antall gjester og beleggsgrensen.",tipExclusive:"Eksklusiv: hver gjest fÃ¥r sin egen enhet uavhengig av maks belegg. Bruk dette for premium solo-opplevelser til en høyere pris.",tipResourceType:"Ved eksklusiv modus, velg ressurstypen slik at systemet vet hvilke enheter som skal reserveres.",tipBirthDate:"Du kan kreve fødselsdato pÃ¥ deltakere. Salesmate kontrollerer da at deltakeren tilfredsstiller aldersbegrensningen som er satt for kategorien."},categoryForm:{title:"Oppsett av priskategori",intro:"En priskategori er en billetttype kundene ser i booking â for eksempel «Voksen», «Barn» eller «Solo-scooter».",tipName:"Prisnavn â teksten s
478om vises for kunden i bookingløpet.",tipDescription:"Kort beskrivelse â valgfri tekst under prisnavnet, f.eks. «3â12 Ã¥r» eller «Kjører egen scooter».",tipDob:"Krev fødselsdato â deltakere mÃ¥ oppgi fødselsdato. Du kan ogsÃ¥ sette en minimumsalder som valideres automatisk.",tipShared:"Delt kapasitet â flere deltakere deler samme ressurs. Systemet beregner enheter basert pÃ¥ deltakere og kapasitet.",tipExclusive:"Ãn enhet per booking â hver booking reserverer en hel ressursenhet. Krever at du velger en ressurstype.",tipEquipment:"Gjelder for ressurstype â bestemmer hvilken ressurspool som brukes ved booking med denne kategorien."},leaves:{title:"Ferie og fravær",intro:"Registrer ferie, sykefravær og annet fravær for teamet ditt. Fravær blokkerer personen fra Ã¥ bli tildelt hendelser i perioden.",tipTypes:"Velg fraværstype â ferie, sykefravær eller annet. Hver type vises med egen etikett i listen.",tipPeriod:"Sett start- og sluttdato. Systemet forhindrer konflikter med eksisterende hendelser.",tipCalendar:"Godkjent fravær vises automatisk i kalenderen som blokkerte perioder for den tildelte personen."}},de:{activities:{title:"Aktivitätenübersicht",intro:"Aktivitäten sind die Produkte, die Sie anbieten â Touren, Erlebnisse oder interne Aufgaben. Konfigurieren Sie jede mit Dauer, Preisen, Personal- und Ressourcenanforderungen.",tipTabs:"Verwenden Sie die Tabs, um zwischen Verkaufbaren Aktivitäten (kundenorientierte Produkte), Internen Aktivitäten (Betriebsaufgaben) und Festen Abfahrten (wiederkehrende Zeitpläne, die automatisch Kalendereinträge erstellen) zu wechseln.",tipPricing:"Tippen Sie auf das Preis-Symbol, um Preise pro Kategorie und Zeitraum festzulegen. Verwalten Sie Preiskategorien über die Schaltfläche in der Kopfzeile.",tipSeries:"Nutzen Sie den Tab Feste Abfahrten, um wiederkehrende Abfahrten einzurichten. Definieren Sie Aktivität, Wochentage, Zeitfenster und Datumsbereich â das System erstellt Kalendereinträge automatisch.",tipMedia:"Klicken Sie auf das Vorschaubild, um Fotos hinzuzufügen. Das erste Bild wird zum Titelbild auf Buchungsseiten und Widgets.",tipPublishing:"Verwenden Sie das Globus-Symbol, um öffentliche Inhalte zu verwalten â Beschreibungen, enthaltene Leistungen, Treffpunkt und praktische Infos."},calendar:{title:"Kalenderübersicht",intro:"Der Kalender ist Ihre zentrale Anlaufstelle für die Planung und Verwaltung von Abfahrten. Wechseln Sie Ansichten, navigieren Sie Daten und erstellen Sie Events â alles an einem Ort.",tipViews:"Wechseln Sie zwischen Tag-, Wochen- und Monatsansicht über die Schaltflächen in der Kopfzeile. Jede Ansicht ist für unterschiedliche Planungsbedürfnisse optimiert.",tipNavigate:"Verwenden Sie die Periodenauswahl, um zu einem bestimmten Datum zu springen. Klicken Sie auf «Heute», um sofort zum aktuellen Tag zurückzukehren.",tipCreate:"Drücken Sie die «+»-Taste, um ein neues Event zu erstellen. Wählen Sie eine Aktivität, um Dauer, Preise und Kapazität vorzufüllen.",tipRecurring:"Richten Sie wiederkehrende Abfahrten im Tab Feste Abfahrten unter Aktivitäten ein â das System erstellt Events automatisch nach dem gewählten Zeitplan.",tipDetails:"Klicken Sie auf eine Event-Karte, um die Event-Schublade zu öffnen, in der Sie Details bearbeiten, Personal zuweisen und Buchungen verwalten können.",tipWeather:"In der Wochen- und Tagesansicht zeigt die Kopfzeile Wettervorhersagen und Windbedingungen an, um die Planung von Outdoor-Aktivitäten zu erleichtern."},dontShowAgain:"Nicht mehr anzeigen",eventDrawer:{title:"Was ist ein Event?",intro:"Events sind die Bausteine Ihres Kalenders. Jedes Event stellt eine geplante Abfahrt oder Aktivität dar â weisen Sie Personal und Ressourcen zu und öffnen Sie es für Buchungen.",tipActivity:"Wählen Sie eine Aktivität, um Dauer, Preise und Kapazität automatisch festzulegen.",tipSeries:"Erstellen Sie wiederkehrende Abfahrten im Tab Feste Abfahrten unter Aktivitäten, um regelmäÃige Abfahrten automatisch zu planen.",tipPersonnel:"Weisen Sie Guides und Mitarbeiter zu. Das System warnt bei Planungskonflikten.",tipStatus:"Setzen Sie den Betriebsstatus: «Be
478stätigt» bedeutet, die Abfahrt findet statt, «Vorläufig» signalisiert, dass sie noch nicht endgültig bestätigt ist, und «Abgesagt» kennzeichnet sie als gestrichen.",tipBooking:"Aktivieren Sie âBuchbarâ, um Reservierungen anzunehmen. âOffenâ erlaubt Buchungen, âVerstecktâ blendet von öffentlichen Seiten aus, âGeschlossenâ blockiert neue Buchungen und zeigt die Abfahrt öffentlich als ausverkauft. Verwalten Sie Teilnehmer direkt von hier."},resourcePlanner:{title:"Ressourcenplaner",intro:"Der Ressourcenplaner bietet Ihnen eine wöchentliche Ãbersicht über Personalpläne, Konflikte und fehlende Zuweisungen.",tipTimeline:"Jede Zeile zeigt die Woche eines Teammitglieds. Events sind farbcodiert: grün = bereit, gelb = fehlende Anforderungen, rot = Konflikt.",tipMissing:"Das Panel «Fehlende Ressourcen» unten listet alle Abfahrten auf, die noch Personal oder Ausrüstung benötigen.",tipAssign:"Klicken Sie auf einen «Fehlt â¦Â»-Slot, um jemanden direkt zuzuweisen â ohne die Event-Schublade zu öffnen.",tipFilter:"Verwenden Sie den Filter, um nach Kompetenz einzuschränken oder Mitglieder ohne Events auszublenden."},myTrips:{title:"Meine Touren",intro:"Dies ist Ihre persönliche Ãbersicht über kommende Touren und verfügbare Schichten.",tipMyTrips:"«Meine Touren» zeigt alle bevorstehenden Abfahrten, denen Sie zugewiesen sind. Tippen Sie auf eine Tour, um Teilnehmer, Team und Ressourcen zu sehen.",tipAvailable:"«Verfügbare Touren» zeigt Schichten, die zu Ihren Kompetenzen passen und noch Personal benötigen. Tippen Sie auf «Anmelden», um sich einzutragen.",tipCheckin:"In einer Tour können Sie die Kontrollkästchen verwenden, um Teilnehmer bei Ankunft einzuchecken.",tipTime:"Nach der Tour erfassen Sie Ihre tatsächliche Arbeitszeit. Wenn Sie länger oder kürzer als geplant gearbeitet haben, wird die Abweichung auf der Tourkarte angezeigt."},resources:{title:"Ressourcenübersicht",intro:"Ressourcen sind die physischen Gegenstände, die bei Aktivitäten verwendet werden â Boote, Schneemobile, Kajaks, Kletterausrüstung und mehr. Gruppieren Sie sie nach Typ und legen Sie Belegungsregeln fest.",tipTypes:"Verwenden Sie «Ressourcentypen», um ähnliche Einheiten zu gruppieren. Jeder Typ kann eigene Belegungsregeln haben â z.B. kann ein Schneemobil 1â2 Gäste aufnehmen.",tipResources:"Jede Ressource ist eine einzelne Einheit â z.B. «Schneemobil #1». Weisen Sie einen Typ und optionale Maximalkapazität zu.",tipOccupancy:"Legen Sie Min/Max-Belegung für einen Ressourcentyp fest, um zu steuern, wie viele Gäste sich eine Einheit teilen können. Das System berechnet die benötigten Einheiten automatisch.",tipExclusive:"Aktivieren Sie «Exklusivnutzung» für einen Ressourcentyp, um eine Solo-Option anzubieten. Gäste können extra zahlen, um eine ganze Einheit für sich zu reservieren."},resourceTypes:{title:"Ressourcentypen",intro:"Ressourcentypen definieren Gerätekategorien â Boote, Schneemobile, Kajaks usw. Jeder Typ legt Belegungsregeln fest, die steuern, wie viele Gäste sich eine Einheit teilen können.",tipTypes:"Erstellen Sie einen Typ für jede Gerätekategorie. Aktivitäten und Preiskategorien verknüpfen sich mit diesen Typen für automatische Kapazitätsverfolgung.",tipOccupancy:"Min/Max-Belegung bestimmt, wie viele Gäste in eine Einheit passen. Das Buchungssystem nutzt die maximale Belegung, um die benötigten Einheiten zu berechnen.",tipExclusive:"Wenn Exklusivnutzung aktiviert ist, können Sie Preiskategorien erstellen, mit denen Gäste eine ganze Einheit für sich reservieren können â zu einem Premiumpreis.",tipCapacity:"Das System verfolgt automatisch die Ressourcennutzung pro Event. Buchungen werden blockiert, wenn alle Einheiten eines Typs vollständig zugewiesen sind."},bookingScreens:{title:"Buchungsbildschirme",intro:"Buchungsbildschirme sind öffentliche Seiten, auf denen Kunden Aktivitäten durchstöbern, eine Abfahrt wählen und bezahlen können â ideal für Kioske, Websites oder geteilte Links.",tipScreens:"Jeder Bildschirm ist eine eigenständige Buchungsseite. Erstellen Sie mehrere Bildschirme für verschiedene Standorte, Events oder Zielgruppen.",tipActivities:"Wählen Sie âAlle Aktivitätenâ, um alles einzubeziehen, oder wählen Sie bestimmte Aktivitäten aus. Partneraktivitäten werden nach Unternehmen gruppiert.",tipLayout:"Passen Sie das Erscheinungsbild an: Wählen Sie dunkles oder helles Theme, SchriftgröÃe und Bildschirmausrichtung. Das Raster passt sich automatisch an die Bildschirmbreite an.",tipPayment:"Verknüpfen Sie ein Kartenterminal für Vor-Ort-Zahlungen oder belasse
478n Sie es bei Online-Zahlung für Stripe-Checkout.",tipShare:"Kopieren Sie den öffentlichen Link, betten Sie ihn als Iframe ein oder verwenden Sie das Einbettungsskript für die gemeinsame Warenkorb-Integration auf Ihrer Website."},priceCategories:{title:"Preiskategorien",intro:"Preiskategorien definieren die Ticketarten, die Kunden kaufen können. Jede Kategorie ist standardmäÃig auf den geteilten Modus eingestellt, bei dem sich Gäste Ressourcen teilen. Wechseln Sie in den exklusiven Modus, damit ein Gast eine ganze Einheit reservieren kann.",tipShared:"Geteilt: Gäste teilen sich Ressourceneinheiten. Das System berechnet, wie viele Einheiten basierend auf der Gästeanzahl und der Belegungsgrenze benötigt werden.",tipExclusive:"Exklusiv: Jeder Gast erhält seine eigene Einheit unabhängig von der maximalen Belegung. Verwenden Sie dies für Premium-Solo-Erlebnisse zu einem höheren Preis.",tipResourceType:"Bei exklusivem Modus wählen Sie den Ressourcentyp, damit das System weiÃ, welche Einheiten reserviert werden sollen.",tipBirthDate:"Sie können ein Geburtsdatum für Teilnehmer verlangen. Salesmate prüft dann, ob der Teilnehmer die für die Kategorie festgelegte Altersbeschränkung erfüllt."},categoryForm:{title:"Preiskategorie einrichten",intro:"Eine Preiskategorie ist eine Ticketart, die Ihre Kunden bei der Buchung sehen â zum Beispiel «Erwachsener», «Kind» oder «Solo-Schneemobil».",tipName:"Preisname â die Bezeichnung, die dem Kunden im Buchungsablauf angezeigt wird.",tipDescription:"Kurzbeschreibung â optionaler Text unter dem Preisnamen, z.B. «3â12 Jahre» oder «Fährt eigenes Schneemobil».",tipDob:"Geburtsdatum erforderlich â Teilnehmer müssen ihr Geburtsdatum angeben. Sie können auch ein Mindestalter festlegen, das automatisch überprüft wird.",tipShared:"Geteilte Kapazität â mehrere Teilnehmer teilen dieselbe Ressource. Das System berechnet Einheiten basierend auf Teilnehmern und
478Kapazität.",tipExclusive:"Eine Einheit pro Buchung â jede Buchung reserviert eine ganze Ressourceneinheit. Erfordert die Auswahl eines Ressourcentyps.",tipEquipment:"Gilt für Ressourcentyp â bestimmt, aus welchem Ressourcenpool bei Buchungen mit dieser Kategorie geschöpft wird."},leaves:{title:"Urlaub & Abwesenheit",intro:"Erfassen Sie Urlaub, Krankmeldungen und andere Abwesenheiten Ihres Teams. Abwesenheiten blockieren die Person für die Zuweisung zu Veranstaltungen im Zeitraum.",tipTypes:"Wählen Sie die Abwesenheitsart â Urlaub, Krankmeldung oder sonstige Abwesenheit. Jede Art wird mit eigenem Label in der Liste angezeigt.",tipPeriod:"Legen Sie Start- und Enddatum fest. Das System verhindert Konflikte mit bestehenden Veranstaltungen.",tipCalendar:"Genehmigte Abwesenheiten erscheinen automatisch im Kalender als blockierte Zeiträume für die zugewiesene Person."}},es:{activities:{title:"Vista de actividades",intro:"Las actividades son los productos que ofreces â tours, experiencias o tareas internas. Configura cada una con duración, precios, requisitos de personal y recursos.",tipTabs:"Usa las pestañas para alternar entre Actividades vendibles (productos orientados al cliente), Actividades internas (tareas operativas) y Salidas programadas (horarios recurrentes que crean eventos de calendario automáticamente).",tipPricing:"Toca el icono de precio para establecer precios por categorÃa y periodo. Gestiona las categorÃas de precio con el botón dedicado en el encabezado.",tipSeries:"Usa la pestaña Salidas programadas para configurar salidas recurrentes. Define la actividad, los dÃas de la semana, las franjas horarias y el rango de fechas â el sistema genera eventos de calendario automáticamente.",tipMedia:"Haz clic en la miniatura para añadir fotos. La primera imagen se convierte en la portada mostrada en las páginas de reserva y widgets.",tipPublishing:"Usa el icono del globo para gestionar el contenido público â descripciones, elementos incluidos, punto de encuentro e información práctica."},calendar:{title:"Vista del calendario",intro:"El calendario es tu centro principal para programar y gestionar salidas. Cambia de vista, navega fechas y crea eventos â todo en un solo lugar.",tipViews:"Alterna entre las vistas de DÃa, Semana y Mes usando los botones del encabezado. Cada vista está optimizada para diferentes necesidades de planificación.",tipNavigate:"Usa el selector de periodo para saltar a una fecha especÃfica. Haz clic en «Hoy» para volver al dÃa actual.",tipCreate:"Pulsa el botón «+» para crear un nuevo evento. Selecciona una actividad para precargar duración, precios y capacidad.",tipRecurring:"Configura salidas recurrentes desde la pestaña Salidas programadas en Actividades â el sistema crea eventos automáticamente según el horario elegido.",tipDetails:"Haz clic en cualquier tarjeta de evento para abrir el cajón del evento donde puedes editar detalles, asignar personal y gestionar reservas.",tipWeather:"En las vistas de semana y dÃa, el encabezado muestra pronósticos del tiempo y condiciones de viento para ayudar a planificar actividades al aire libre."},dontShowAgain:"No mostrar de nuevo",eventDrawer:{title:"¿Qué es un evento?",intro:"Los eventos son los bloques de construcción de tu calendario. Cada evento representa una salida o actividad programada â asigna personal y recursos, y ábrelo para reservas.",tipActivity:"Elige una actividad para establecer automáticamente duración, precios y capacidad.",tipSeries:"Crea salidas recurrentes desde la pestaña Salidas programadas en Actividades para programar salidas repetidas automáticamente.",tipPersonnel:"Asigna guÃas y personal. El sistema te avisa de conflictos de programación.",tipStatus:"Establece el estado operativo: «Confirmado» significa que la salida se realizará, «Tentativo» indica que aún no está confirmada, y «Cancelado» la marca como suspendida.",tipBooking:"Activa «Reservable» para aceptar reservas. Usa «Abierto» para permitir reservas, «Oculto» para ocultar de páginas públicas, o «Cerrado» para bloquear nuevas reservas y mostrar la salida como agotada públicamente. Gestiona participantes directamente desde aquÃ."},resourcePlanner:{title:"Planificador de recursos",intro:"El planificador de recursos te ofrece una visión semanal de los horarios del personal, conflictos y asignaciones pendientes.",tipTimeline:"Cada fila muestra la semana de un miembro del equipo. Los eventos están codificados por color: verde = listo, ámbar = faltan requisitos, rojo = conflicto.",tipMissing:"El panel «Faltan recursos» en la parte inferior lista todas las salidas que aún necesitan personal o equipo.",tipAssign:"Haz clic en un slot «Falta â¦Â» para asignar a alguien directamente â sin necesidad de abrir el cajón del evento.",tipFilter:"Usa el filtro para acotar por competencia u ocultar miembros sin eventos."},myTrips:{title:"Mis viajes",intro:"Esta es tu vista personal de próximos viajes y turnos disponibles.",tipMyTrips:"«Mis viajes» muestra todas las salidas próximas a las que estás asignado. Toca un viaje para ver participantes, equipo y recursos.",tipAvailable:"«Viajes dis
478ponibles» muestra turnos que coinciden con tus competencias y aún necesitan personal. Toca «Inscribirse» para apuntarte.",tipCheckin:"Dentro de un viaje, usa las casillas para registrar la llegada de los participantes.",tipTime:"Después del viaje, registra tus horas reales de trabajo. Si trabajaste más o menos de lo planificado, la desviación se muestra en la tarjeta del viaje."},resources:{title:"Vista de recursos",intro:"Los recursos son los elementos fÃsicos utilizados en actividades â barcos, motos de nieve, kayaks, equipo de escalada y más. Agrúpalos por tipo y establece reglas de ocupación para controlar la capacidad.",tipTypes:"Usa «Tipos de recursos» para agrupar elementos similares. Cada tipo puede tener sus propias reglas de ocupación â por ejemplo, una moto de nieve puede llevar 1â2 pasajeros.",tipResources:"Cada recurso es una unidad individual â p.ej. «Moto de nieve #1». Asigna un tipo y capacidad máxima opcional.",tipOccupancy:"Establece la ocupación mÃn/máx en un tipo de recurso para controlar cuántos huéspedes pueden compartir una unidad. El sistema calcula las unidades necesarias automáticamente.",tipExclusive:"Activa «Uso exclusivo» en un tipo de recurso para ofrecer una opción en solitario. Los huéspedes pueden pagar extra para reservar una unidad completa para ellos."},resourceTypes:{title:"Tipos de recurso",intro:"Los tipos de recurso definen categorÃas de equipamiento â barcos, motos de nieve, kayaks, etc. Cada tipo establece reglas de ocupación que controlan cuántos huéspedes pueden compartir una unidad.",tipTypes:"Crea un tipo para cada categorÃa de equipo que utilices. Las actividades y categorÃas de precio se vinculan a estos tipos para el seguimiento automático de capacidad.",tipOccupancy:"La ocupación mÃn/máx define cuántos huéspedes caben en una unidad. El sistema de reservas usa la ocupación máxima para calcular cuántas unidades se necesitan.",tipExclusive:"Cuando el uso exclusivo está habilitado, puedes crear categorÃas de precio que permitan a los huéspedes reservar una unidad completa para ellos mismos a un precio premium.",tipCapacity:"El sistema rastrea automáticamente el uso de recursos por evento. Las reservas se bloquean cuando todas las unidades de un tipo están completamente asignadas."},bookingScreens:{title:"Pantallas de reserva",intro:"Las pantallas de reserva son páginas públicas donde los clientes pueden explorar actividades, elegir una salida y pagar â ideales para quioscos, sitios web o enlaces compartidos.",tipScreens:"Cada pantalla es una página de reserva independiente. Crea múltiples pantallas para diferentes ubicaciones, eventos o audiencias.",tipActivities:"Elige «Todas las actividades» para incluir todo, o selecciona actividades especÃficas. Las actividades de socios se agrupan por empresa.",tipLayout:"Personaliza el aspecto: elige tema oscuro o claro, tamaño de fuente y orientación de pantalla. La cuadrÃcula se adapta automáticamente al anch
478o de la pantalla.",tipPayment:"Conecta un terminal de tarjetas para pagos en el lugar, o déjalo en pago en lÃnea para Stripe checkout.",tipShare:"Copia el enlace público, incrústalo como iframe o usa el script de incrustación para la integración de carrito compartido en tu sitio web."},priceCategories:{title:"CategorÃas de precio",intro:"Las categorÃas de precio definen los tipos de entradas que los clientes pueden comprar. Cada categorÃa está configurada en modo compartido por defecto, donde los huéspedes comparten recursos. Cambia al modo exclusivo para que un huésped reserve una unidad completa.",tipShared:"Compartido: los huéspedes comparten unidades de recursos. El sistema calcula cuántas unidades se necesitan según el número de huéspedes y el lÃmite de ocupación.",tipExclusive:"Exclusivo: cada huésped obtiene su propia unidad independientemente de la ocupación máxima. Ãsalo para experiencias premium en solitario a un precio superior.",tipResourceType:"En modo exclusivo, selecciona el tipo de recurso para que el sistema sepa qué unidades reservar.",tipBirthDate:"Puedes exigir la fecha de nacimiento de los participantes. Salesmate verificará que el participante cumple con la restricción de edad establecida para la categorÃa."},categoryForm:{title:"Configurar categorÃa de precio",intro:"Una categorÃa de precio es un tipo de entrada que los clientes ven en la reserva â por ejemplo «Adulto», «Niño» o «Moto de nieve solo».",tipName:"Nombre del precio â la etiqueta que se muestra al cliente en el flujo de reserva.",tipDescription:"Descripción corta â texto opcional debajo del nombre, p.ej. «3â12 años» o «Conduce su propia moto».",tipDob:"Requerir fecha de nacimiento â los participantes deben ingresar su fecha. También puedes establecer una edad mÃnima que se valida automáticamente.",tipShared:"Capacidad compartida â varios participantes comparten el mismo recurso. El sistema calcula unidades según participantes y capacidad.",tipExclusive:"Una unidad por reserva â cada reserva reserva una unidad completa de recurso. Requiere seleccionar un tipo de recurso.",tipEquipment:"Aplica a tipo de recurso â determina de qué grupo de recursos se toma al reservar con esta categorÃa."},leaves:{title:"Vacaciones y ausencias",intro:"Registra vacaciones, bajas por enfermedad y otras ausencias de tu equipo. Las ausencias bloquean a la persona para ser asignada a eventos durante el perÃodo.",tipTypes:"Elige el tipo de ausencia â vacaciones, baja por enfermedad u otra ausencia. Cada tipo se muestra con una etiqueta diferente en la lista.",tipPeriod:"Establece las fechas de inicio y fin. El sistema previene conflictos con eventos existentes.",tipCalendar:"Las ausencias aprobadas aparecen automáticamente en el calendario como perÃodos bloqueados para la persona asignada."}},fr:{activities:{title:"Vue des activités",intro:"Les activités sont les produits que vous proposez â visites, expériences ou tâches internes. Configurez chacune avec durée, tarifs, besoins en personnel et ressources.",tipTabs:"Utilisez les onglets pour basculer entre Activités vendables (produits orientés client), Activités internes (tâches opérationnelles) et Départs programmés (plannings récurrents qui créent automatiquement des événements).",tipPricing:"Appuyez sur l'icône de prix pour définir les tarifs par catégorie et période. Gérez les catégories de prix avec le bouton dédié dans l'en-tête.",tipSeries:"Utilisez l'onglet Départs programmés pour configurer des départs récurrents. Définissez l'activité, les jours de la semaine, les créneaux horaires et la plage de dates â le système génère automatiquement les événements.",tipMedia:"Cliquez sur la vignette pour ajouter des photos. La première image devient la couverture affichée sur les pages de réservation et les widgets.",tipPublishing:"Utilisez l'icône du globe pour gérer le contenu public â descriptions, éléments inclus, point de rendez-vous et infos pratiques."},calendar:{title:"Vue du calendrier",intro:"Le calendrier est votre centre principal pour planifier et gérer les départs. Changez de vue, naviguez entre les dates et créez des événements â le tout en un seul endroit.",tipViews:"Basculez entre les vues Jour, Semaine et Mois à l'aide des boutons dans l'en-tête. Chaque vue est optimisée pour différents besoins de planification.",tipNavigate:"Utilisez le sélecteur de période pour accéder à une date précise. Cliquez sur « Aujourd'hui » pour revenir au jour actuel.",tipCreate:"Appuyez sur le bouton « + » pour créer un nouvel événement. Sélectionnez une activité pour pré-remplir la durée, les tarifs et la capacité.",tipRecurring:"Configurez des départs récurrents depuis l'onglet Départs programmés dans Activités â le système crée automatiquement des événements selon le calendrier choisi.",tipDetails:"Cliquez sur n'importe quelle carte d'événement pour ouvrir le tiroir de l'événement où vou
478s pouvez modifier les détails, assigner du personnel et gérer les réservations.",tipWeather:"Dans les vues semaine et jour, l'en-tête affiche les prévisions météo et les conditions de vent pour aider à planifier les activités en plein air."},dontShowAgain:"Ne plus afficher",eventDrawer:{title:"Qu'est-ce qu'un événement ?",intro:"Les événements sont les éléments de base de votre calendrier. Chaque événement représente un départ ou une activité planifié â assignez du personnel et des ressources, et ouvrez-le aux réservations.",tipActivity:"Choisissez une activité pour définir automatiquement la durée, les tarifs et la capacité.",tipSeries:"Créez des départs récurrents depuis l'onglet Départs programmés dans Activités pour planifier des départs répétés automatiquement.",tipPersonnel:"Assignez des guides et du personnel. Le système vous avertit des conflits de planification.",tipStatus:"Définissez le statut opérationnel : « Confirmé » signifie que le départ a lieu, « Provisoire » indique qu'il n'est pas encore confirmé, et « Annulé » le marque comme supprimé.",tipBooking:"Activez « Réservable » pour accepter les réservations. « Ouvert » autorise les réservations, « Masqué » cache des pages publiques, « Fermé » bloque les nouvelles réservations et affiche le départ comme complet publiquement. Gérez les participants directement ici."},resourcePlanner:{title:"Planificateur de ressources",intro:"Le planificateur de ressources vous offre un aperçu hebdomadaire des plannings du personnel, des conflits et des affectations manquantes.",tipTimeline:"Chaque ligne montre la semaine d'un membre de l'équipe. Les événements sont codés par couleur : vert = prêt, ambre = exigences manquantes, rouge = conflit.",tipMissing:"Le panneau « Ressources manquantes » en bas liste tous les départs qui nécessitent encore du personnel ou de l'équipement.",tipAssign:"Cliquez sur un slot « Manque ⦠» pour assigner quelqu'un directement â sans ouvrir le tiroir de l'événement.",tipFilter:"Utilisez le filtre pour affiner par compétence ou masquer les membres sans événements."},myTrips:{title:"Mes sorties",intro:"Ceci est votre aperçu personnel des prochaines sorties et des créneaux disponibles.",tipMyTrips:"« Mes sorties » affiche tous les départs à venir auxquels vous êtes assigné. Appuyez sur une sortie pour voir les participants, l'équipe et les ressources.",tipAvailable:"« Sorties disponibles » affiche les créneaux correspondant à vos compétences et nécessitant encore du personnel. Appuyez sur « S'inscrire » pour vous inscrire.",tipCheckin:"Dans une sortie, utilisez les cases à cocher pour enregistrer l'arrivée des participants.",tipTime:"Après la sortie, enregistrez vos heures de travail réelles. Si vous avez travaillé plus ou moins que prévu, l'écart est affiché sur la carte de la sortie."},resources:{title:"Vue des ressources",intro:"Les ressources sont les éléments physiques utilisés pour les activités â bateaux, motoneiges, kayaks, équipement d'escalade et plus. Regroupez-les par type et définissez des règles d'occupation pour contrôler la capacité.",tipTypes:"Utilisez « Types de ressources » pour regrouper des éléments similaires. Chaque type peut avoir ses propres règles d'occupation â par exemple, une motoneige peut accueillir 1â2 passagers.",tipResources:"Chaque ressource est une unité individuelle â ex. « Motoneige #1 ». Attribuez un type et une capacité maximale optionnelle.",tipOccupancy:"Définissez l'occupation min/max sur un type de ressource pour contrôler combien de clients peuvent partager une unité. Le système calcule les unités nécessaires automatiquement.",tipExclusive:"Activez « Utilisation exclusive » sur un type de ressource pour proposer une option solo. Les clients peuvent payer un supplément pour réserver une unité entière pour eux."},resourceTypes:{title:"Types de ressource",intro:"Les types de ressource définissent des catégories d'équipement â bateaux, motoneiges, kayaks, etc. Chaque type fixe des règles d'occupation qui contrôlent combien de clients peuvent partager une unité.",tipTypes:"Créez un type pour chaque catégorie d'équipement que vous utilisez. Les activités et catégories de prix sont liées à ces types pour le suivi automatique de la capacité.",tipOccupancy:"L'occupation min/max définit combien de clients peuvent tenir dans une unité. Le système de réservation utilise l'occupation maximale pour calculer le nombre d'unités nécessaires.",tipExclusive:"Lorsque l'utilisation exclusive est activée, vous pouvez créer des catégories de prix permettant aux clients de réserver une unité entière pour eux-mêmes à un tarif premium.",tipCapacity:"Le système suit automatiquement l'utilisation des ressources par événement. Les réservations sont bloquées lorsque toutes les unités d'un type sont entièrement allouées."},bookingScreens:{title:"Ãcrans de réservation",intro:"Les écrans de réservation sont des pages publiques où les clients peuvent parcourir les activités, choisir un départ et payer â parfaits pour les bornes, sites web ou liens partagés.",tipScreens:"Chaque écran est une page de réservation indépendante. Créez plusieurs écrans pour différents lieux,
478événements ou publics.",tipActivities:"Choisissez « Toutes les activités » pour tout inclure, ou sélectionnez des activités spécifiques. Les activités partenaires sont groupées par entreprise.",tipLayout:"Personnalisez l'apparence : choisissez un thème sombre ou clair, la taille de police et l'orientation de l'écran. La grille s'adapte automatiquement à la largeur de l'écran.",tipPayment:"Associez un terminal de carte pour les paiements sur place, ou laissez le paiement en ligne pour Stripe checkout.",tipShare:"Copiez le lien public, intégrez-le en iframe ou utilisez le script d'intégration pour le panier partagé sur votre site web."},priceCategories:{title:"Catégories de prix",intro:"Les catégories de prix définissent les types de billets que les clients peuvent acheter. Chaque catégorie est par défaut en mode partagé, où les clients partagent les ressources. Passez en mode exclusif pour qu'un client réserve une unité entière.",tipShared:"Partagé : les clients partagent les unités de ressources. Le système calcule le nombre d'unités nécessaires en fonction du nombre de clients et de la limite d'occupation.",tipExclusive:"Exclusif : chaque client obtient sa propre unité quelle que soit l'occupation maximale. Utilisez ceci pour des expériences premium en solo à un tarif supérieur.",tipResourceType:"En mode exclusif, sélectionnez le type de ressource pour que le système sache quelles unités réserver.",tipBirthDate:"Vous pouvez exiger la date de naissance des participants. Salesmate vérifiera alors que le participant respecte la restriction d'âge définie pour la catégorie."},categoryForm:{title:"Configuration d'une catégorie de prix",intro:"Une catégorie de prix est un type de billet que vos clients voient lors de la réservation â par exemple « Adulte », « Enfant » ou « Motoneige solo ».",tipName:"Nom du prix â le libellé affiché au client dans le flux de réservation.",tipDescription:"Description courte â texte facultatif sous le nom, ex. « 3â12 ans » ou « Conduit sa propre motoneige ».",tipDob:"Exiger la date de naissance â les participants doivent entrer leur date. Vous pouvez aussi définir un âge minimum validé automatiquement.",tipShared:"Capacité partagée â plusieurs participants partagent la même ressource. Le système calcule les unités selon les participants et la capacité.",tipExclusive:"Une unité par réservation â chaque réservation réserve une unité de ressource entière. Nécessite de sélectionner un type de ressource.",tipEquipment:"S'applique au type de ressource â détermine de quel groupe de ressources on puise lors des réservations avec cette catégorie."},leaves:{title:"Congés et absences",intro:"Enregistrez les vacances, arrêts maladie et autres absences de votre équipe. Les absences bloquent la personne pour l'affectation aux événements pendant la période.",tipTypes:"Choisissez le type d'absence â vacances, arrêt maladie ou autre absence. Chaque type est affiché avec un libellé distinct dans la liste.",tipPeriod:"Définissez les dates de début et de fin. Le système empêche les conflits avec les événements existants.",tipCalendar:"Les absences approuvées apparaissent automatiquement dans le calendrier comme périodes bloquées pour la personne concernée."}},it:{activities:{title:"Panoramica attività ",intro:"Le attività sono i prodotti che offri â tour, esperienze o compiti interni. Configura ciascuna con durata, prezzi, requisiti di personale e risorse.",tipTabs:"Usa le schede per passare tra Attività vendibili (prodotti rivolti ai clienti), Attività interne (compiti operativi) e Partenze programmate (programmazioni ricorrenti che creano automaticamente eventi nel calendario).",tipPricing:"Tocca l'icona del prezzo per impostare i prezzi per categoria e periodo. Gestisci le categorie di prezzo con il pulsante dedicato nell'intestazione.",tipSeries:"Usa la scheda Partenze programmate per configurare partenze ricorrenti. Definisci l'attività , i giorni della settimana, le fasce orarie e l'intervallo di date â il sistema genera automaticamente gli eventi.",tipMedia:"Fai clic sulla miniatura per aggiungere foto. La prima immagine diventa la copertina mostrata nelle pagine di prenotazione e nei widget.",tipPublishing:"Usa l'icona del globo per gestire i contenuti pubblici â descrizioni, elementi inclusi, punto di incontro e informazioni pratiche."},calendar:{title:"Panoramica calendario",intro:"Il calendario è il tuo centro principale per programmare e gestire le partenze. Cambia vista, naviga tra le date e crea eventi â tutto in un unico posto.",tipViews:"Alterna tra le viste Giorno, Settimana e Mese usando i pulsanti nell'intestazione. Ogni vista è ottimizzata per diverse esigenze di pianificazione.",tipNavigate:"Usa il selettore di periodo per saltare a una data specifica. Fai clic su «Oggi» per tornare al giorno corrente.",tipCreate:"Premi il pulsante «+» per
478creare un nuovo evento. Seleziona un'attività per precompilare durata, prezzi e capacità .",tipRecurring:"Configura partenze ricorrenti dalla scheda Partenze programmate in Attività â il sistema crea automaticamente gli eventi secondo il programma scelto.",tipDetails:"Fai clic su qualsiasi scheda evento per aprire il cassetto dell'evento dove puoi modificare i dettagli, assegnare personale e gestire le prenotazioni.",tipWeather:"Nelle viste settimana e giorno, l'intestazione mostra le previsioni meteo e le condizioni del vento per aiutare a pianificare le attività all'aperto."},dontShowAgain:"Non mostrare più",eventDrawer:{title:"Cos'è un evento?",intro:"Gli eventi sono i mattoni del tuo calendario. Ogni evento rappresenta una partenza o attività programmata â assegna personale e risorse e aprilo alle prenotazioni.",tipActivity:"Scegli un'attività per impostare automaticamente durata, prezzi e capacità .",tipSeries:"Crea partenze ricorrenti dalla scheda Partenze programmate in Attività per pianificare partenze ripetute automaticamente.",tipPersonnel:"Assegna guide e personale. Il sistema ti avvisa dei conflitti di programmazione.",tipStatus:"Imposta lo stato operativo: «Confermato» significa che la partenza si effettua, «Provvisorio» segnala che non è ancora confermata, e «Annullato» la contrassegna come cancellata.",tipBooking:"Attiva «Prenotabile» per accettare prenotazioni. Usa «Aperto» per consentire prenotazioni, «Nascosto» per nascondere dalle pagine pubbliche, o «Chiuso» per bloccare nuove prenotazioni e mostrare la partenza come esaurita pubblicamente. Gestisci i partecipanti direttamente da qui."},resourcePlanner:{title:"Pianificatore risorse",intro:"Il pianificatore risorse offre una panoramica settimanale degli orari del personale, dei conflitti e delle assegnazioni mancanti.",tipTimeline:"Ogni riga mostra la settimana di un membro del team. Gli eventi sono codificati per colore: verde = pronto, ambra = requisiti mancanti, rosso = conflitto.",tipMissing:"Il pannello «Risorse mancanti» in basso elenca tutte le partenze che necessitano ancora di personale o attrezzature.",tipAssign:"Fai clic su uno slot «Manca â¦Â» per assegnare qualcuno direttamente â senza aprire il cassetto dell'evento.",tipFilter:"Usa il filtro per restringere per competenza o nascondere i membri senza eventi."},myTrips:{title:"I miei viaggi",intro:"Questa è la tua panoramica personale dei prossimi viaggi e dei turni disponibili.",tipMyTrips:"«I miei viaggi» mostra tutte le partenze imminenti a cui sei assegnato. Tocca un viaggio per vedere partecipanti, team e risorse.",tipAvailable:"«Viaggi disponibili» mostra i turni che corrispondono alle tue competenze e necessitano ancora di personale. Tocca «Iscriviti» per iscriverti.",tipCheckin:"All'interno di un viaggio, usa le caselle per registrare l'arrivo dei partecipanti.",tipTime:"Dopo il viaggio, registra le tue ore di lavoro effettive. Se hai lavorato più o meno del previsto, la deviazione viene mostrata sulla scheda del viaggio."},resources:{title:"Panoramica risorse",intro:"Le risorse sono gli oggetti fisici utilizzati nelle attività â barche, motoslitte, kayak, attrezzatura da arrampicata e altro. Raggruppale per tipo e imposta le regole di occupazione per controllare la capacità .",tipTypes:"Usa «Tipi di risorse» per raggruppare elementi simili. Ogni tipo può avere le proprie regole di occupazione â ad esempio, una motoslitta può portare 1â2 ospiti.",tipResources:"Ogni risorsa è un'unità individuale â es. «Motoslitta #1». Assegna un tipo e una capacità massima opzionale.",tipOccupancy:"Imposta l'occupazione min/max su un tipo di risorsa per controllare quanti ospiti possono condividere un'unità . Il sistema calcola le unità necessarie automaticamente.",tipExclusive:"Abilita «Uso esclusivo» su un tipo di risorsa per offrire un'opzione solo. Gli ospiti possono pagare un extra per riservare un'intera unità per sé."},resourceTypes:{title:"Tipi di risorsa",intro:"I tipi di risorsa definiscono categorie di attrezzatura â barche, motoslitte, kayak, ecc. Ogni tipo imposta regole di occupazione che controllano quanti ospiti possono condividere un'unità .",tipTypes:"Crea un tipo per ogni categoria di attrezzatura che utilizzi. Le attività e le categorie di prezzo si collegano a questi tipi per il monitoraggio automatico della capacità .",tipOccupancy:"L'occupazione min/max definisce quanti ospiti possono stare in un'unità . Il sistema di prenotazione usa l'occupazione massima per calcolare quante unità servono.",tipExclusive:"Quando l'uso esclusivo è abilitato, puoi creare categorie di prezzo che permettono agli ospiti di riservare un'intera unità per sé a un prezzo premium.",tipCapacity:"Il sistema monitora automaticamente l'uso delle risorse per evento. Le prenotazioni vengono bloccate quando tutte le unità di un tipo sono completamente assegnate."},bookingScreens:{title:"Schermate di prenotazione",intro:"Le schermate di prenotazione sono pagine pubbliche dove i clienti possono sfogliare le attività , scegliere una partenza e pagare â perfette per chioschi, siti web o link condivisi.",tipScreens:"Ogni schermata è una pagina di prenotazione indipendente. Crea più schermate per diverse sedi, eventi o pubblici.",tipActivities:"Scegli «Tutte le attività » per includere tutto, oppure seleziona attività specifiche. Le attività dei partner sono raggruppate per azienda.",tipLayout:"Personalizza l'aspetto: scegli tema scuro o chiaro, dimensione del carattere e orientamento dello schermo. La griglia si adatta automaticamente alla larghezza dello schermo.",tipPayment:"Collega un terminale per pagamenti in loco, oppure lascia il pagamento online per Stripe checkout.",tipShare:"Copia il link pubblico, incorporalo come iframe o usa lo script di incorporamento per l'integrazione del carrello condiviso sul tuo sito web."},priceCategories:{title:"Categorie di prezzo",intro:"Le categorie di prezzo definiscono i tipi di biglietti che i clienti possono acquistare. Ogni categoria è impostata per default in modalità condivisa, dove gli ospiti condividono le risorse. Passa alla modalità esclusiva per consentire a un ospite di riservare un'intera unità .",tipShared:"Condiviso: gli ospiti condividono le unità di risorse. Il sistema calcola quante unità sono necessarie in base al numero di ospiti e al limite di occupazione.",tipExclusive:"Esclusivo: ogni ospite ottiene la propria unità indipendentemente dall'occupazione massima. Usalo per esperienze premium in solitaria a un prezzo superiore.",tipResourceType:"In modalità esclusiva, seleziona il tipo di risorsa affinché il sistema sappia quali unità riservare.",tipBirthDate:"Puoi richiedere la data di nascita dei partecipanti. Salesmate verificherà che il partecipante soddisfi il limite di età impostato per la categoria."},categoryForm:{title:"Configurazione categoria di prezzo",intro:"Una categoria di prezzo è un tipo di biglietto che i clienti vedono nella prenotazione â ad esempio «Adulto», «Bambino» o «Motoslitta solo».",tipName:"Nome del prezzo â l'etichetta mostrata al cliente nel flusso di prenotazione.",tipDescription:"Breve descrizione â testo facoltativo sotto il nome, es. «3â12 anni» o «Guida la propria motoslitta».",tipDob:"Richiedi data di nascita â i partecipanti devono inserire la data. Puoi anche impostare un'età minima validata automaticamente.",tipShared:"Capacità condivisa â più partecipanti condividono la stessa risorsa. Il sistema calcola le unità in base ai partecipanti e alla capacità .",tipExclusive:"Un'unità per prenotazione â ogni prenotazione riserva un'intera unità di risorsa. Richiede la selezione di un tipo di risorsa.",tipEquipment:"Si applica al tipo di risorsa â determina da quale pool di risorse si attinge per le prenotazioni con questa categoria."},leaves:{title:"Ferie e assenze",intro:"Registra ferie, malattie e altre asse
478nze del tuo team. Le assenze bloccano la persona dall'essere assegnata agli eventi durante il periodo.",tipTypes:"Scegli il tipo di assenza â ferie, malattia o altra assenza. Ogni tipo è mostrato con un'etichetta distinta nell'elenco.",tipPeriod:"Imposta le date di inizio e fine. Il sistema previene conflitti con eventi esistenti.",tipCalendar:"Le assenze approvate appaiono automaticamente nel calendario come periodi bloccati per la persona assegnata."}}},xb={en:{dashboard:{title:"Dashboard overview",intro:"The dashboard gives you a quick summary of your week â events, bookings, participants and alerts. Customise the layout to fit your workflow.",tipWidgets:"Add and remove widgets to show the information that matters most. Drag to reorder them.",tipKpi:"The KPI cards show this week's numbers compared to the previous week â events, bookings, participants and alerts.",tipCustomise:'Click "Customise" to enter edit mode. Add widgets, rearrange the grid and save your layout.'},bookings:{title:"Bookings overview",intro:"This page lists all bookings across your activities. Search, filter and manage refunds from one place.",tipSearch:"Search by customer name, email or confirmation code to quickly find a booking.",tipRefund:"Open a booking to view details and initiate a refund if needed. The system handles Stripe and Nexi refunds automatically.",tipManual:'Use the "Add" button to create a manual booking without online payment.'},giftCards:{title:"Gift cards",intro:"Create and manage gift cards. Customers can redeem gift card codes during the booking checkout flow.",tipCreate:"Create a new gift card with an initial balance. Share the code with the recipient.",tipBalance:"Track remaining balances and expiry dates. Deactivate cards that should no longer be used."},contacts:{title:"Contacts",intro:"Contacts are the people you interact with â customers, partners and leads. Link them to companies and track communication history.",tipSearch:"Search by name, email or phone to find contacts quickly.",tipTimeline:"Select a contact to see their full timeline â notes, emails and linked companies.",tipLink:"Link contacts to customer companies to build your CRM network."},customers:{title:"Customers",intro:"Customers can be companies or private individuals you do business with. Each customer can have linked contacts and a detailed financial overview.",tipSearch:"Search by name to find customers. Click a row to see the detail panel.",tipRegistry:"For companies, use the registry search to auto-fill details from public databases.",tipFinance:"The detail panel shows booking history, revenue and financial health for each customer."},sales:{title:"Sales pipeline",intro:"The sales pipeline tracks your deals from lead to close. Drag cards between columns to update their status.",tipColumns:"Each column represents a stage â Lead, Qualified, Proposal and Closed Won. Cards are sorted by last updated.",tipCreate:'Click "New lead" to create a deal. Link it to a customer, activity and expected revenue.',tipDrag:"Drag a card to another column to advance or revert a deal. The status updates automatically."},inbox:{title:"Company inbox",intro:"Inbound emails are collected here. Qualify emails into sales leads, create contacts or forward them â all from one place.",tipQualify:'Use "Qualify all" to let the AI automatically create leads from unprocessed emails.',tipPreview:"Click an email to preview its content. Use the action bar to reply, forward or create a lead."},partners:{title:"Partners",intro:"Partners are other companies you collaborate with. Invite partners to share activities, sell each other's products and settle payments.",tipInvite:"Send an invitation email to a partner company. Once accepted, you can share activities and track shared sales.",tipLedger:"The partner sales tab shows all transactions between you and your partners, with settlement tracking."},personnel:{title:"Personnel",intro:"Manage your team â guides, staff and administrators. Assign competences and send invitations to join the platform.",tipCompetences:'Use the competences panel to define skills like "Guide", "Driver" or "Instructor". Assign them to personnel for smart scheduling.',tipInvite:"Invite new team members by email. They will receive a link to join your company on the platform.",tipRoles:"Each member has a role that controls their access level â from guide to administrator."},competences:{title:"Competences",intro:"Competences define the skills your personnel can have â such as Guide, Driver or Skipper. Each competence can have a maximum participant capacity.",tipDefine:'Create competences that match the roles needed for your activities, for example "RIB Skipper", "Northern Lights Guide" or "Mountain Guide".',tipMaxPax:'Set "Max participants" to define how many guests one person with this competence can handle per departure.',tipAutoCalc:"When you change the number of participants on an event, the system automatically calculates how many personnel are needed. Example: if a skipper handles 12 guests, 25 participants means 3 skippers (rounded up).",tipEvent:"You can always manually adjust the number after automatic calculation â the system suggests, you decide."},blockings:{title:"Resource blockings",intro:"Block a resource for a specific period â for maintenance, private use or any reason. Blocked resources cannot be assigned to events.",tipCreate:"Create a blocking by selecting a resource and a date range. Add an optional reason for reference.",tipCalendar:"Active blockings are shown in the calendar and resource planner, preventing double-booking."},leaves:{title:"Leave & absence",intro:"Register holidays, sick leave and other absences for your team. Leaves block the person from being assigned to events during the peri
478od.",tipTypes:"Choose leave type â vacation, sick leave, personal leave or other. Each type is shown with a distinct label in the list.",tipPeriod:"Set start and end dates. The system prevents scheduling conflicts with existing events.",tipCalendar:"Approved leaves appear automatically in the calendar as blocked periods for the assigned person."},incomeProfiles:{title:"Revenue Profiles",intro:"Revenue profiles define how income from each activity is distributed across accounting codes. Assign a profile to each sellable activity to automate VAT calculation and financial reporting.",tipMode:"Single mode allocates 100% to one account. Split mode distributes revenue across multiple accounts with separate VAT rates â useful for bundled products.",tipAssessment:"Split profiles require a VAT assessment explaining why the revenue is distributed. This is a legal requirement in many jurisdictions.",tipLink:"Assign a profile to an activity in the activity editor. The profile is applied automatically when bookings are created."}},no:{dashboard:{title:"Dashbordoversikt",intro:"Dashbordet gir deg en rask oversikt over uken â hendelser, bookinger, deltakere og varsler. Tilpass oppsettet etter din arbeidsflyt.",tipWidgets:"Legg til og fjern widgets for Ã¥ vise den informasjonen som betyr mest. Dra for Ã¥ omorganisere.",tipKpi:"KPI-kortene viser denne ukens tall sammenlignet med forrige uke â hendelser, bookinger, deltakere og varsler.",tipCustomise:"Klikk «Tilpass» for Ã¥ gÃ¥ inn i redigeringsmodus. Legg til widgets, omorganiser rutenettet og lagre oppsettet ditt."},bookings:{title:"Bookingoversikt",intro:"Denne siden lister alle bookinger pÃ¥ tvers av aktivitetene dine. Søk, filtrer og hÃ¥ndter refusjoner fra ett sted.",tipSearch:"Søk etter kundenavn, e-post eller bekreftelseskode for Ã¥ finne en booking raskt.",tipRefund:"Ã
pne en booking for å se detal
478jer og initiere en refusjon ved behov. Systemet hÃ¥ndterer Stripe- og Nexi-refusjoner automatisk.",tipManual:"Bruk «Legg til»-knappen for Ã¥ opprette en manuell booking uten nettbetaling."},giftCards:{title:"Gavekort",intro:"Opprett og administrer gavekort. Kunder kan løse inn gavekortkoder under bookingbetalingen.",tipCreate:"Opprett et nytt gavekort med en startsaldo. Del koden med mottakeren.",tipBalance:"Følg med pÃ¥ gjenværende saldo og utløpsdatoer. Deaktiver kort som ikke lenger skal brukes."},contacts:{title:"Kontakter",intro:"Kontakter er personene du samhandler med â kunder, partnere og leads. Koble dem til bedrifter og følg kommunikasjonshistorikk.",tipSearch:"Søk etter navn, e-post eller telefon for Ã¥ finne kontakter raskt.",tipTimeline:"Velg en kontakt for Ã¥ se hele tidslinjen â notater, e-poster og tilknyttede bedrifter.",tipLink:"Koble kontakter til kundebedrifter for Ã¥ bygge CRM-nettverket ditt."},customers:{title:"Kunder",intro:"Kunder kan være bedrifter eller privatpersoner du gjør forretninger med. Hver kunde kan ha tilknyttede kontakter og en detaljert finansoversikt.",tipSearch:"Søk etter navn for Ã¥ finne kunder. Klikk pÃ¥ en rad for Ã¥ se detal
478jpanelet.",tipRegistry:"For bedrifter kan du bruke registersøket for Ã¥ fylle ut detaljer automatisk fra offentlige databaser.",tipFinance:"Detaljpanelet viser bookinghistorikk, inntekter og finansiell helse for hver kunde."},sales:{title:"Salgsrør",intro:"Salgsrøret sporer avtalene dine fra lead til avslutning. Dra kort mellom kolonner for Ã¥ oppdatere statusen.",tipColumns:"Hver kolonne representerer et trinn â Lead, Kvalifisert, Tilbud og Vunnet. Kort sorteres etter sist oppdatert.",tipCreate:"Klikk «Nytt lead» for Ã¥ opprette en avtale. Koble den til en kunde, aktivitet og forventet inntekt.",tipDrag:"Dra et kort til en annen kolonne for Ã¥ fremme eller tilbakestille en avtale. Statusen oppdateres automatisk."},inbox:{title:"Bedriftsinnboks",intro:"Innkommende e-poster samles her. Kvalifiser e-poster til salgsledere, opprett kontakter eller videresend dem â alt fra ett sted.",tipQualify:"Bruk «Kvalifiser alle» for Ã¥ la AI automatisk opprette leads fra ubehandlede e-poster.",tipPreview:"Klikk pÃ¥ en e-post for Ã¥ forhÃ¥ndsvise innholdet. Bruk handlingslinjen for Ã¥ svare, videresende eller opprette et lead."},partners:{title:"Partnere",intro:"Partnere er andre selskaper du samarbeider med. Inviter partnere til Ã¥ dele aktiviteter, selge hverandres produkter og gjøre opp betalinger.",tipInvite:"Send en invitasjons-e-post til et partnerselskap. NÃ¥r den er akseptert, kan dere dele aktiviteter og spore felles salg.",tipLedger:"Fanen for partnersalg viser alle transaksjoner mellom deg og partnerne dine, med oppgjørssporing."},personnel:{title:"Personell",intro:"Administrer teamet ditt â guider, ansatte og administratorer. Tildel kompetanser og send invitasjoner for Ã¥ bli med pÃ¥ plattformen.",tipCompetences:"Bruk kompetansepanelet for Ã¥ definere ferdigheter som «Guide», «SjÃ¥før» eller «Instruktør». Tildel dem til personell for smart planlegging.",tipInvite:"Inviter nye teammedlemmer via e-post. De mottar en lenke for Ã¥ bli med i selskapet ditt pÃ¥ plattformen.",tipRoles:"Hvert medlem har en rolle som styrer tilgangsnivÃ¥et â fra guide til administrator."},competences:{title:"Kompetanser",intro:"Kompetanser definerer ferdighetene personellet ditt kan ha â som Guide, SjÃ¥før eller Skipper. Hver kompetanse kan ha en maks deltakerkapasitet.",tipDefine:"Opprett kompetanser som matcher rollene aktivitetene dine trenger, for eksempel «RIB-skipper», «Nordlysguide» eller «Fjellguide».",tipMaxPax:"Sett «Maks deltakere» for Ã¥ definere hvor mange gjester én person med denne kompetansen kan hÃ¥ndtere per avgang.",tipAutoCalc:"NÃ¥r du endrer antall deltakere pÃ¥ en hendelse, beregner systemet automatisk hvor mange personer som trengs. Eksempel: hvis en skipper hÃ¥ndterer 12 gjester, betyr 25 deltakere 3 skippere (rundet opp).",tipEvent:"Du kan alltid justere antallet manuelt etter automatisk beregning â systemet foreslÃ¥r, du bestemmer."},blockings:{title:"Ressursblokkering",intro:"Blokker en ressurs for en bestemt periode â for vedlikehold, privat bruk eller annen grunn. Blokkerte ressurser kan ikke tildeles hendelser.",tipCreate:"Opprett en blokkering ved Ã¥ velge en ressurs og et datointervall. Legg til en valgfri begrunnelse.",tipCalendar:"Aktive blokkeringer vises i kalenderen og ressursplanleggeren og forhindrer dobbeltbooking."},leaves:{title:"Ferie og fravær",intro:"Registrer ferie, sykefravær og annet fravær for teamet ditt. Fravær blokkerer personen fra Ã¥ bli tildelt hendelser i perioden.",tipTypes:"Velg fraværstype â ferie, sykefravær, personlig fravær eller annet. Hver type vises med en tydelig etikett i listen.",tipPeriod:"Sett start- og sluttdato. Systemet forhindrer konflikter med eksisterende hendelser.",tipCalendar:"Godkjent fravær vises automatisk i kalenderen som blokkerte perioder for den tildelte personen."},incomeProfiles:{title:"Inntektsprofiler",intro:"Inntektsprofiler definerer hvordan inntekter fra hver aktivitet fordeles pÃ¥ regnskapskontoer. Tilordne en profil til hver salgbar aktivitet for automatisk MVA-beregning og finansiell rapportering.",tipMode:"Enkel-modus tildeler 100 % til én konto. Splittet modus fordeler inntekter pÃ¥ flere kontoer med separate MVA-satser â nyttig for sammensatte produkter.",tipAssessment:"Splittede profiler krever en MVA-vurdering som forklarer hvorfor inntekten er fordelt. Dette er et lovkrav i mange jurisdiksjoner.",tipLink:"Tilordne en profil til en aktivitet i aktivitetsredigereren. Profilen brukes automatisk nÃ¥r bookinger opprettes."}},de:{dashboard:{title:"Dashboard-Ãbersicht",intro:"Das Dashboard gibt Ihnen eine schnelle Zusammenfassung Ihrer Woche â Events, Buchungen, Teilnehmer und Warnungen. Passen Sie das Layout an Ihren Workflow an.",tipWidgets:"Fügen Sie Widgets hinzu oder entfernen Sie sie, um die wichtigsten Informationen anzuzeigen. Ziehen Sie zum Neuordnen.",tipKpi:"Die KPI-Karten zeigen die Zahlen dieser Woche im Vergleich zur Vorwoche â Events, Buchungen, Teilnehmer und Warnungen.",tipCustomise:"Klicken Sie auf «Anpassen», um den Bearbeitungsmodus zu öffnen. Widgets hinzufügen, Raster neu anordnen und Layout speichern."},bookings:{title:"Buchungsübersicht",intro:"Diese Seite listet alle Buchungen über Ihre Aktivitäten. Suchen, filtern und Rückerstattungen von einem Ort verwalten.",tipSearch:"Suchen Sie nach Kundenname, E-Mail oder Bestätigungscode, um eine Buchung schnell zu finden.",tipRefund:"Ãffnen Sie eine Buchung für Details und initiieren Sie bei Bedarf eine Rückerstattung. Das System verarbeitet Stripe- und Nexi-Rückerstattungen automatisch.",tipManual:"Verwenden Sie den «Hinzufügen»-Button, um eine manuelle Buchung ohne Online-Zahlung zu erstellen."},giftCards:{title:"Geschenkkarten",intro:"Erstellen und verwalten Sie Geschenkkarten. Kunden können Geschenkkartencodes während des Buchungs-Checkouts einlösen.",tipCreate:"Erstellen Sie eine neue Geschenkkarte mit einem Startguthaben. Teilen Sie den Code mit dem Empfänger.",tipBalance:"Verfolgen Sie Restguthaben und Ablaufdaten. Deaktivieren Sie Karten, die nicht mehr verwendet werden sollen."},contacts:{title:"Kontakte",intro:"Kontakte sind die Personen, mit denen Sie interagieren â Kunden, Partner und Leads. Verknüpfen Sie sie mit Unternehmen und verfolgen Sie die Kommunikationshistorie.",tipSearch:"Suchen Sie nach Name, E-Mail oder Telefon, um Kontakte schnell zu finden.",tipTimeline:"Wählen Sie einen Kontakt, um die vollständige Zeitleiste zu sehen â Notizen, E-Mails und verknüpfte Unternehmen.",tipLink:"Verknüpfen Sie Kontakte mit Kundenunternehmen, um Ihr CRM-Netzwerk aufzubauen."},customers:{title:"Kunden",intro:"Kunden können Unternehmen oder Privatpersonen sein, mit denen Sie Geschäfte machen. Jeder Kunde kann verknüpfte Kontakte und eine detaillierte Finanzübersicht haben.",tipSearch:"Suchen Sie nach Name. Klicken Sie auf eine Zeile, um das Detailpanel zu sehen.",tipRegistry:"Für Unternehmen können Sie die Handelsregistersuche nutzen, um Daten automatisch auszufüllen.",tipFinance:"Das Detailpanel zeigt Buchungshistorie, Umsatz und finanzielle Gesundheit für jeden Kunden."},sales:{title:"Vertriebspipeline",intro:"Die Vertriebspipeline verfolgt Ihre Deals vom Lead bis zum Abschluss. Ziehen Sie Karten zwischen Spalten, um den Status zu aktualisieren.",tipColumns:"Jede Spalte steht für eine Phase â Lead, Qualifiziert, Angebot und Gewonnen. Karten werden nach letzter Aktualisierung sortiert.",tipCreate:"Klicken Sie auf «
478Neuer Lead», um einen Deal zu erstellen. Verknüpfen Sie ihn mit Kunde, Aktivität und erwartetem Umsatz.",tipDrag:"Ziehen Sie eine Karte in eine andere Spalte, um einen Deal voranzutreiben oder zurückzusetzen. Der Status wird automatisch aktualisiert."},inbox:{title:"Firmenposteingang",intro:"Eingehende E-Mails werden hier gesammelt. Qualifizieren Sie E-Mails zu Vertriebsleads, erstellen Sie Kontakte oder leiten Sie weiter â alles an einem Ort.",tipQualify:"Verwenden Sie «Alle qualifizieren», damit die KI automatisch Leads aus unbearbeiteten E-Mails erstellt.",tipPreview:"Klicken Sie auf eine E-Mail für eine Vorschau. Verwenden Sie die Aktionsleiste zum Antworten, Weiterleiten oder Erstellen eines Leads."},partners:{title:"Partner",intro:"Partner sind andere Unternehmen, mit denen Sie zusammenarbeiten. Laden Sie Partner ein, um Aktivitäten zu teilen, gegenseitig Produkte zu verkaufen und Zahlungen abzurechnen.",tipInvite:"Senden Sie eine Einladungs-E-Mail an ein Partnerunternehmen. Nach Annahme können Sie Aktivitäten teilen und gemeinsame Verkäufe verfolgen.",tipLedger:"Der Tab Partnerverkäufe zeigt alle Transaktionen zwischen Ihnen und Ihren Partnern mit Abrechnungsverfolgung."},personnel:{title:"Personal",intro:"Verwalten Sie Ihr Team â Guides, Mitarbeiter und Administratoren. Weisen Sie Kompetenzen zu und senden Sie Einladungen zur Plattform.",tipCompetences:"Verwenden Sie das Kompetenzpanel, um Fähigkeiten wie «Guide», «Fahrer» oder «Instruktor» zu definieren. Weisen Sie sie Personal für intelligente Planung zu.",tipInvite:"Laden Sie neue Teammitglieder per E-Mail ein. Sie erhalten einen Link, um Ihrem Unternehmen beizutreten.",tipRoles:"Jedes Mitglied hat eine Rolle, die die Zugriffsebene steuert â vom Guide bis zum Administrator."},competences:{title:"Kompetenzen",intro:"Kompetenzen definieren die Fähigkeiten Ihres Personals â wie Guide, Fahrer oder Skipper. Jede Kompetenz kann eine maximale Teilnehmerkapazität haben.",tipDefine:"Erstellen Sie Kompetenzen, die zu den Rollen Ihrer Aktivitäten passen, z. B. «RIB-Skipper», «Nordlicht-Guide» oder «Bergführer».",tipMaxPax:"Setzen Sie «Max. Teilnehmer», um festzulegen, wie viele Gäste eine Person mit dieser Kompetenz pro Abfahrt betreuen kann.",tipAutoCalc:"Wenn Sie die Teilnehmerzahl eines Events ändern, berechnet das System automatisch, wie viel Personal benötigt wird. Beispiel: wenn ein Skipper 12 Gäste betreut, bedeuten 25 Teilnehmer 3 Skipper (aufgerundet).",tipEvent:"Sie können die Anzahl nach der automatischen Berechnung jederzeit manuell anpassen â das System schlägt vor, Sie entscheiden."},blockings:{title:"Ressourcensperrungen",intro:"Sperren Sie eine Ressource für einen bestimmten Zeitraum â für Wartung, private Nutzung oder einen anderen Grund. Gesperrte Ressourcen können nicht für Events zugewiesen werden.",tipCreate:"Erstellen Sie eine Sperrung, indem Sie eine Ressource und einen Datumsbereich auswählen. Fügen Sie optional einen Grund hinzu.",tipCalendar:"Aktive Sperrungen werden im Kalender und Ressourcenplaner angezeigt und verhindern Doppelbuchungen."},leaves:{title:"Urlaub & Abwesenheit",intro:"Erfassen Sie Urlaub, Krankmeldungen und andere Abwesenheiten Ihres Teams. Abwesenheiten blockieren die Person für die Zuweisung zu Veranstaltungen im Zeitraum.",tipTypes:"Wählen Sie die Abwesenheitsart â Urlaub, Krankheit, persönlicher Urlaub oder Sonstiges. Jede Art wird mit einem eigenen Label in der Liste angezeigt.",tipPeriod:"Legen Sie Start- und Enddatum fest. Das System verhindert Konflikte mit bestehenden Veranstaltungen.",tipCalendar:"Genehmigte Abwesenheiten erscheinen automatisch im Kalender als gesperrte Zeiträume für die zugewiesene Person."},incomeProfiles:{title:"Umsatzprofile",intro:"Umsatzprofile definieren, wie Einnahmen aus jeder Aktivität auf Buchhaltungskonten verteilt werden. Weisen Sie jeder verkaufbaren Aktivität ein Profil zu, um MwSt.-Berechnung und Finanzberichterstattung zu automatisieren.",tipMode:"Einfach-Modus weist 100 % einem Konto zu. Aufgeteilt-Modus verteilt Einnahmen auf mehrere Konten mit separaten MwSt.-Sätzen â nützlich für aufgeteilte Produkte.",tipAssessment:"Aufgeteilte Profile erfordern eine MwSt.-Begründung, warum die Einnahmen aufgeteilt werden. Dies ist in vielen Rechtsordnungen eine gesetzliche Pflicht.",tipLink:"Weisen Sie einer Aktivität im Aktivitätseditor ein Profil zu. Das Profil wird automatisch bei der Buchungserstellung angewendet."}},es:{dashboard:{title:"Vista del panel",intro:"El panel te da un resumen rápido de tu semana â eventos, reservas, participantes y alertas. Personaliza el diseño para adaptarlo a tu flujo de trabajo.",tipWidgets:"Añade y elimina widgets para mostrar la información más importante. Arrastra para reordenar.",tipKpi:"Las tarjetas KPI muestran las cifras de esta semana comparadas con la anterior â eventos, reservas, participantes y alertas.",tipCustomise:"Haz clic en «Personalizar» para entrar en modo edición. Añade widgets, reorganiza la cuadrÃcula y guarda tu diseño."},bookings:{title:"Vista de reservas",intro:"Esta página lista todas las reservas de tus actividades. Busca, filtra y gestiona reembolsos desde un solo lugar.",tipSearch:"Busca por nombre de cliente, email o código de confirmación para encontrar una reserva rápidamente.",tipRefund:"Abre una reserva para ver detalles e iniciar un reembolso si es necesario. El sistema procesa reembolsos de Stripe y Nexi automáticamente.",tipManual:"Usa el botón «Añadir» para crear una reserva manual sin pago en lÃnea."},giftCards:{title:"Tarjetas regalo",intro:"Crea y gestiona tarjetas regalo. Los clientes pueden canjear códigos de tarjeta durante el proceso de reserva.",tipCreate:"Crea una nueva tarjeta regalo con un saldo inicial. Comparte el código con el destinatario.",tipBalance:"Controla los saldos restantes y las fechas de vencimiento. Desactiva las tarjetas que ya no deban usarse."},contacts:{title:"Contactos",intro:"Los contactos son las personas con las que interactúas â clientes, socios y leads. Vincúlalos a empresas y haz seguimiento del historial de comunicación.",tipSearch:"Busca por nombre, email o teléfono para encontrar c
478ontactos rápidamente.",tipTimeline:"Selecciona un contacto para ver su lÃnea de tiempo completa â notas, emails y empresas vinculadas.",tipLink:"Vincula contactos a empresas cliente para construir tu red CRM."},customers:{title:"Clientes",intro:"Los clientes pueden ser empresas o personas particulares con las que haces negocios. Cada cliente puede tener contactos vinculados y una visión financiera detallada.",tipSearch:"Busca por nombre. Haz clic en una fila para ver el panel de detalles.",tipRegistry:"Para empresas, usa la búsqueda en el registro mercantil para completar datos automáticamente.",tipFinance:"El panel de detalles muestra el historial de reservas, ingresos y salud financiera de cada cliente."},sales:{title:"Embudo de ventas",intro:"El embudo de ventas rastrea tus acuerdos desde lead hasta cierre. Arrastra tarjetas entre columnas para actualizar su estado.",tipColumns:"Cada columna representa una fase â Lead, Cualificado, Propuesta y Ganado. Las tarjetas se ordenan por última actualización.",tipCreate:"Haz clic en «Nuevo lead» para crear un acuerdo. Vincúlalo a un cliente, actividad e ingreso esperado.",tipDrag:"Arrastra una tarjeta a otra columna para avanzar o revertir un acuerdo. El estado se actualiza automáticamente."},inbox:{title:"Bandeja de entrada",intro:"Los correos entrantes se recogen aquÃ. Cualifica emails en leads, crea contactos o reenvÃa â todo desde un solo lugar.",tipQualify:"Usa «Cualificar todos» para que la IA cree automáticamente leads de los emails sin procesar.",tipPreview:"Haz clic en un email para previsualizar su contenido. Usa la barra de acciones para responder, reenviar o crear un lead."},partners:{title:"Socios",intro:"Los socios son otras empresas con las que colaboras. Invita socios para compartir actividades, vender productos mutuamente y liquidar pagos.",tipInvite:"EnvÃa un email de invitación a una empresa socia. Una vez aceptada, podéis compartir actividades y rastrear ventas compartidas.",tipLedger:"La pestaña de ventas con socios muestra todas las transacciones entre tú y tus socios, con seguimiento de liquidaciones."},personnel:{title:"Personal",intro:"Gestiona tu equipo â guÃas, personal y administradores. Asigna competencias y envÃa invitaciones para unirse a la plataforma.",tipCompetences:"Usa el panel de competencias para definir habilidades como «GuÃa», «Conductor» o «Instructor». AsÃgnalas al personal para programación inteligente.",tipInvite:"Invita a nuevos miembros del equipo por email. Recibirán un enlace para unirse a tu empresa en la plataforma.",tipRoles:"Cada miembro tiene un rol que controla su nivel de acceso â desde guÃa hasta administrador."},competences:{title:"Competencias",intro:"Las competencias definen las habilidades de tu personal â como GuÃa, Conductor o Patrón. Cada competencia puede tener una capacidad máxima de participantes.",tipDefine:"Crea competencias que coincidan con los roles que necesitan tus actividades, por ejemplo «Patrón de RIB», «GuÃa de auroras boreales» o «GuÃa de montaña».",tipMaxPax:"Establece «Máx. participantes» para definir cuántos huéspedes puede manejar una persona con esta competencia por salida.",tipAutoCalc:"Cuando cambias el número de participantes en un evento, el sistema calcula automáticamente cuánto personal se necesita. Ejemplo: si un patrón maneja 12 huéspedes, 25 participantes significan 3 patrones (redondeado hacia arriba).",tipEvent:"Siempre puedes ajustar manualmente el número después del cálculo automático â el sistema sugiere, tú decides."},blockings:{title:"Bloqueos de recursos",intro:"Bloquea un recurso durante un perÃodo â para mantenimiento, uso privado o cualquier motivo. Los recursos bloqueados no pueden asignarse a eventos.",tipCreate:"Crea un bloqueo seleccionando un recurso y un rango de fechas. Añade un motivo opcional como referencia.",tipCalendar:"Los bloqueos activos se muestran en el calendario y el planificador de recursos, evitando dobles reservas."},leaves:{title:"Vacaciones y ausencias",intro:"Registra vacaciones, bajas por enfermedad y otras ausencias de tu equipo. Las ausencias bloquean a la persona para ser asignada a eventos durante el perÃodo.",tipTypes:"Elige el tipo de ausencia â vacaciones, baja médica, permiso personal u otro.
478Cada tipo se muestra con una etiqueta distinta en la lista.",tipPeriod:"Establece fechas de inicio y fin. El sistema evita conflictos con eventos existentes.",tipCalendar:"Las ausencias aprobadas aparecen automáticamente en el calendario como perÃodos bloqueados para la persona asignada."},incomeProfiles:{title:"Perfiles de ingresos",intro:"Los perfiles de ingresos definen cómo se distribuyen los ingresos de cada actividad en las cuentas contables. Asigne un perfil a cada actividad vendible para automatizar el cálculo del IVA y los informes financieros.",tipMode:"El modo simple asigna el 100% a una cuenta. El modo dividido distribuye ingresos en varias cuentas con tasas de IVA separadas â útil para productos divididos.",tipAssessment:"Los perfiles divididos requieren una justificación de IVA que explique por qué se distribuye el ingreso. Esto es un requisito legal en muchas jurisdicciones.",tipLink:"Asigne un perfil a una actividad en el editor. El perfil se aplica automáticamente al crear reservas."}},fr:{dashboard:{title:"Vue du tableau de bord",intro:"Le tableau de bord vous donne un résumé rapide de votre semaine â événements, réservations, participants et alertes. Personnalisez la mise en page selon votre workflow.",tipWidgets:"Ajoutez et supprimez des widgets pour afficher les informations les plus importantes. Glissez pour réorganiser.",tipKpi:"Les cartes KPI montrent les chiffres de cette semaine comparés à la semaine précédente â événements, réservations, participants et alertes.",tipCustomise:"Cliquez sur « Personnaliser » pour entrer en mode édition. Ajoutez des widgets, réorganisez la grille et sauvegardez votre mise en page."},bookings:{title:"Vue des réservations",intro:"Cette page liste toutes les réservations de vos activités. Cherchez, filtrez et gérez les remboursements depuis un seul endroit.",tipSearch:"Cherchez par nom de client, email ou code de confirmation pour trouver une réservation rapidement.",tipRefund:"Ouvrez une réservation pour voir les détails et initier un remboursement si nécessaire. Le système gère les remboursements Stripe et Nexi automatiquement.",tipManual:"Utilisez le bouton « Ajouter » pour créer une réservation manuelle sans paiement en ligne."},giftCards:{title:"Cartes cadeaux",intro:"Créez et gérez des cartes cadeaux. Les clients peuvent utiliser les codes de carte cadeau lors du paiement de réservation.",tipCreate:"Créez une nouvelle carte cadeau avec un solde initial. Partagez le code avec le destinataire.",tipBalance:"Suivez les soldes restants et les dates d'expiration. Désactivez les cartes qui ne doivent plus être utilisées."},contacts:{title:"Contacts",intro:"Les contacts sont les personnes avec lesquelles vous interagissez â clients, partenaires et prospects. Liez-les à des entreprises et suivez l'historique des communications.",tipSearch:"Cherchez par nom, email ou téléphone pour trouver des contacts rapidement.",tipTimeline:"Sélectionnez un contact pour voir sa chronologie complète â notes, emails et entreprises liées.",tipLink:"Liez les contacts aux entreprises clientes pour construire votre réseau CRM."},customers:{title:"Clients",intro:"Les clients peuvent être des entreprises ou des particuliers avec lesquels vous faites affaire. Chaque client peut avoir des contacts liés et un aperçu financier détaillé.",tipSearch:"Cherchez par nom. Cliquez sur une ligne pour voir le panneau de détails.",tipRegistry:"Pour les entreprises, utilisez la recherche au registre du commerce pour remplir automatiquement les données.",tipFinance:"Le panneau de détails montre l'historique des réservations, le chiffre d'affaires et la santé financière de chaque client."},sales:{title:"Pipeline de ventes",intro:"Le pipeline de ventes suit vos affaires du prospect à la clôture. Glissez les cartes entre les colonnes pour mettre à jour leur statut.",tipColumns:"Chaque colonne représente une étape â Prospect, Qualifié, Proposition et Gagné. Les cartes sont triées par dernière mise à jour.",tipCreate:"Cliquez sur « Nouveau prospect » pour créer une affaire. Liez-la à un client, une activité et un revenu attendu.",tipDrag:"Glissez une carte vers une autre colonne pour avancer ou reculer une affaire. Le statut se met à jour automatiquement."},inbox:{title:"Boîte de réception",intro:"Les emails entrants sont collectés ici. Qualifiez les emails en prospects, créez des contacts ou transférez-les â tout depuis un seul endroit.",tipQualify:"Utilisez « Qualifier tous » pour que l'IA crée automatiquement des prospects à partir des emails non traités.",tipPreview:"Cliquez sur un email pour prévisualiser son contenu. Utilisez la barre d'actions pour répondre, transférer ou créer un prospect."},partners:{title:"Partenaires",intro:"Les partenaires sont d'autres entreprises avec lesquelles vous collaborez. Invitez des partenaires pour partager des activités, vendre mutuellement des produits et régler les paiements.",tipInvite:"Envoyez un email d'invitation à une entreprise partenaire. Une fois acceptée, vous pouvez partager des activités et suivre les ventes communes.",tipLedger:"L'onglet ventes partenaires affiche toutes les transactions entre vou
478s et vos partenaires, avec suivi des règlements."},personnel:{title:"Personnel",intro:"Gérez votre équipe â guides, employés et administrateurs. Attribuez des compétences et envoyez des invitations pour rejoindre la plateforme.",tipCompetences:"Utilisez le panneau de compétences pour définir des aptitudes comme « Guide », « Chauffeur » ou « Instructeur ». Attribuez-les au personnel pour une planification intelligente.",tipInvite:"Invitez de nouveaux membres de l'équipe par email. Ils recevront un lien pour rejoindre votre entreprise sur la plateforme.",tipRoles:"Chaque membre a un rôle qui contrôle son niveau d'accès â du guide à l'administrateur."},competences:{title:"Compétences",intro:"Les compétences définissent les aptitudes de votre personnel â comme Guide, Chauffeur ou Skipper. Chaque compétence peut avoir une capacité maximale de participants.",tipDefine:"Créez des compétences correspondant aux rôles de vos activités, par exemple « Skipper RIB », « Guide aurores boréales » ou « Guide de montagne ».",tipMaxPax:"Définissez « Max. participants » pour indiquer combien d'invités une personne avec cette compétence peut gérer par départ.",tipAutoCalc:"Quand vous modifiez le nombre de participants d'un événement, le système calcule automatiquement le personnel nécessaire. Exemple : si un skipper gère 12 invités, 25 participants signifient 3 skippers (arrondi au supérieur).",tipEvent:"Vous pouvez toujours ajuster manuellement le nombre après le calcul automatique â le système suggère, vous décidez."},blockings:{title:"Blocages de ressources",intro:"Bloquez une ressource pour une période â pour maintenance, usage privé ou toute raison. Les ressources bloquées ne peuvent pas être assignées aux événements.",tipCreate:"Créez un blocage en sélectionnant une ressource et une plage de dates. Ajoutez un motif optionnel pour référence.",tipCalendar:"Les blocages actifs sont affichés dans le calendrier et le planificateur de ressources, empêchant les doubles réservations."},leaves:{title:"Congés et absences",intro:"Enregistrez les vacances, arrêts maladie et autres absences de votre équipe. Les absences bloquent la personne pour l'affectation aux événements pendant la période.",tipTypes:"Choisissez le type d'absence â vacances, arrêt maladie, congé personnel ou autre. Chaque type est affiché avec un libellé distinct dans la liste.",tipPeriod:"Définissez les dates de début et de fin. Le système empêche les conflits avec les événements existants.",tipCalendar:"Les absences approuvées apparaissent automatiquement dans le calendrier comme périodes bloquées pour la personne assignée."},incomeProfiles:{title:"Profils de revenus",intro:"Les profils de revenus définissent comment les recettes de chaque activité sont réparties sur les comptes comptables. Attribuez un profil à chaque activité vendable pour automatiser le calcul de la TVA et les rapports financiers.",tipMode:"Le mode simple attribue 100 % à un seul compte. Le mode divisé répartit les revenus sur plusieurs comptes avec des taux de TVA séparés â utile pour les produits divisés.",tipAssessment:"Les profils divisés nécessitent une justification TVA expliquant pourquoi les revenus sont répartis. C'est une obligation légale dans de nombreuses juridictions.",tipLink:"Attribuez un profil à une activité dans l'éditeur. Le profil est appliqué automatiquement lors de la création des réservations."}},it:{dashboard:{title:"Panoramica dashboard",intro:"La dashboard t
478i offre un riepilogo rapido della settimana â eventi, prenotazioni, partecipanti e avvisi. Personalizza il layout per adattarlo al tuo flusso di lavoro.",tipWidgets:"Aggiungi e rimuovi widget per mostrare le informazioni più importanti. Trascina per riordinare.",tipKpi:"Le schede KPI mostrano i numeri di questa settimana rispetto alla precedente â eventi, prenotazioni, partecipanti e avvisi.",tipCustomise:"Fai clic su «Personalizza» per entrare in modalità modifica. Aggiungi widget, riorganizza la griglia e salva il layout."},bookings:{title:"Panoramica prenotazioni",intro:"Questa pagina elenca tutte le prenotazioni delle tue attività . Cerca, filtra e gestisci rimborsi da un unico posto.",tipSearch:"Cerca per nome cliente, email o codice di conferma per trovare rapidamente una prenotazione.",tipRefund:"Apri una prenotazione per vedere i dettagli e avviare un rimborso se necessario. Il sistema gestisce automaticamente i rimborsi Stripe e Nexi.",tipManual:"Usa il pulsante «Aggiungi» per creare una prenotazione manuale senza pagamento online."},giftCards:{title:"Carte regalo",intro:"Crea e gestisci carte regalo. I clienti possono riscattare i codici delle carte regalo durante il checkout della prenotazione.",tipCreate:"Crea una nuova carta regalo con un saldo iniziale. Condividi il codice con il destinatario.",tipBalance:"Monitora i saldi residui e le date di scadenza. Disattiva le carte che non devono più essere utilizzate."}
478,contacts:{title:"Contatti",intro:"I contatti sono le persone con cui interagisci â clienti, partner e lead. Collegali alle aziende e monitora la cronologia delle comunicazioni.",tipSearch:"Cerca per nome, email o telefono per trovare contatti rapidamente.",tipTimeline:"Seleziona un contatto per vedere la sua cronologia completa â note, email e aziende collegate.",tipLink:"Collega i contatti alle aziende clienti per costruire la tua rete CRM."},customers:{title:"Clienti",intro:"I clienti possono essere aziende o privati con cui fai affari. Ogni cliente può avere contatti collegati e una panoramica finanziaria dettagliata.",tipSearch:"Cerca per nome. Fai clic su una riga per vedere il pannello dei dettagli.",tipRegistry:"Per le aziende, usa la ricerca nel registro delle imprese per compilare automaticamente i dati.",tipFinance:"Il pannello dei dettagli mostra lo storico prenotazioni, il fatturato e la salute finanziaria di ogni cliente."},sales:{title:"Pipeline di vendita",intro:"La pipeline di vendita traccia le tue trattative dal lead alla chiusura. Trascina le schede tra le colonne per aggiornare lo stato.",tipColumns:"Ogni colonna rappresenta una fase â Lead, Qualificato, Proposta e Vinto. Le schede sono ordinate per ultimo aggiornamento.",tipCreate:"Fai clic su «Nuovo lead» per creare una trattativa. Collegala a un cliente, attività e ricavo atteso.",tipDrag:"Trascina una scheda in un'altra colonna per far avanzare o riportare indietro una trattativa. Lo stato si aggiorna automaticamente."},inbox:{title:"Posta in arrivo",intro:"Le email in arrivo sono raccolte qui. Qualifica le email in lead di vendita, crea contatti o inoltra â tutto da un unico posto.",tipQualify:"Usa «Qualifica tutti» per far creare automaticamente lead dall'IA dalle email non elaborate.",tipPreview:"Fai clic su un'email per visualizzarne il contenuto. Usa la barra azioni per rispondere, inoltrare o creare un lead."},partners:{title:"Partner",intro:"I partner sono altre aziende con cui collabori. Invita partner per condividere attività , vendere reciprocamente prodotti e regolare i pagamenti.",tipInvite:"Invia un'email di invito a un'azienda partner. Una volta accettata, potete condividere attività e tracciare le vendite condivise.",tipLedger:"La scheda vendite partner mostra tutte le transazioni tra te e i tuoi partner, con tracciamento dei regolamenti."},personnel:{title:"Personale",intro:"Gestisci il tuo team â guide, personale e amministratori. Assegna competenze e invia inviti per unirsi alla piattaforma.",tipCompetences:"Usa il pannello competenze per definire abilità come «Guida», «Autista» o «Istruttore». Assegnale al personale per una pianificazione intelligente.",tipInvite:"Invita nuovi membri del team via email. Riceveranno un link per unirsi alla tua azienda sulla piattaforma.",tipRoles:"Ogni membro ha un ruolo che controlla il livello di accesso â dalla guida all'amministratore."},competences:{title:"Competenze",intro:"Le competenze definiscono le abilità del tuo personale â come Guida, Autista o Skipper. Ogni competenza può avere una capacità massima di partecipanti.",tipDefine:"Crea competenze corrispondenti ai ruoli delle tue attività , ad esempio «Skipper RIB», «Guida aurora boreale» o «Guida alpina».",tipMaxPax:"Imposta «Max partecipanti» per definire quanti ospiti una persona con questa competenza può gestire per partenza.",tipAutoCalc:"Quando modifichi il numero di partecipanti di un evento, il sistema calcola automaticamente quante persone servono. Esempio: se uno skipper gestisce 12 ospiti, 25 partecipanti significano 3 skipper (arrotondato per eccesso).",tipEvent:"Puoi sempre regolare manualmente il numero dopo il calcolo automatico â il sistema suggerisce, tu decidi."},blockings:{title:"Blocchi risorse",intro:"Blocca una risorsa per un periodo specifico â per manutenzione, uso privato o qualsiasi motivo. Le risorse bloccate non possono essere assegnate agli eventi.",tipCreate:"Crea un blocco selezionando una risorsa e un intervallo di date. Aggiungi un motivo opzionale come riferimento.",tipCalendar:"I blocchi attivi sono mostrati nel calendario e nel pianificatore risorse, impedendo doppie prenotazioni."},leaves:{title:"Ferie e assenze",intro:"Registra ferie, malattie e altre asse
478nze del tuo team. Le assenze bloccano la persona dall'essere assegnata agli eventi durante il periodo.",tipTypes:"Scegli il tipo di assenza â ferie, malattia, permesso personale o altro. Ogni tipo è mostrato con un'etichetta distinta nella lista.",tipPeriod:"Imposta le date di inizio e fine. Il sistema previene conflitti con gli eventi esistenti.",tipCalendar:"Le assenze approvate appaiono automaticamente nel calendario come periodi bloccati per la persona assegnata."},incomeProfiles:{title:"Profili di ricavo",intro:"I profili di ricavo definiscono come i ricavi di ogni attività vengono distribuiti sui conti contabili. Assegna un profilo a ogni attività vendibile per automatizzare il calcolo dell'IVA e la reportistica finanziaria.",tipMode:"La modalità singola assegna il 100% a un conto. La modalità divisa distribuisce i ricavi su più conti con aliquote IVA separate â utile per prodotti divisi.",tipAssessment:"I profili divisi richiedono una giustificazione IVA che spiega perché i ricavi sono distribuiti. Questo è un requisito legale in molte giurisdizioni.",tipLink:"Assegna un profilo a un'attività nell'editor. Il profilo viene applicato automaticamente alla creazione delle prenotazioni."}}},kb={en:{title:"Distributors",description:"Manage external distributors and sales channels for your activities.",distributorsHelp:"Connect to external sales channels like GetYourGuide and Viator.",addDistributor:"Add distributor",searchPlaceholder:"Search distributorsâ¦",noDistributorsYet:"No distributors configured yet.",name:"Name",type:"Type",status:"Status",description_field:"Description",contactName:"Contact name",contactEmail:"Contact email",contactPhone:"Contact phone",externalSystemKey:"External system key",lastSync:"Last sync",neverSynced:"Never",activitiesMapped:"Activities mapped",typeOta:"OTA",typeReseller:"Reseller",typeConcierge:"Concierge",typeHotel:"Hotel",typeOther:"Other",statusActive:"Active",statusInactive:"Inactive",statusDraft:"Draft",activeDistributors:"Active distributors",distributedActivities:"Distributed activities",bookingsFromDistributors:"Bookings (30d)",revenueFromDistributors:"Revenue (30d)",overview:"Overview",activities:"Activities",bookings:"Bookings",settings:"Settings",mapActivity:"Map activity",removeMapping:"Remove mapping",commissionPercent:"Commission %",externalProductId:"External product ID",externalOptionId:"Exter
478nal option ID",active:"Active",selectActivity:"Select activity",noActivitiesMapped:"No activities mapped to this distributor.",allActivitiesAlreadyMapped:"All activities are already mapped.",noBookingsYet:"No bookings from this distributor yet.",bookingReference:"Reference",customer:"Customer",amount:"Amount",commission:"Commission",net:"Net",grossSales:"Gross sales",totalCommission:"Total commission",netRevenue:"Net revenue",bookingsCount:"Bookings",connectionStatus:"Connection status",notConnected:"Not connected",syncPlaceholder:"API integration and sync settings will be available in a future update.",sourceDistributor:"Distributor",sourceDirect:"Direct",sourcePartner:"Partner",createDistributor:"New distributor",editDistributor:"Edit distributor",saved:"Distributor saved",deleted:"Distributor deleted",mappingSaved:"Activity mapping saved",mappingRemoved:"Activity mapping removed",provider:"Provider",selectProvider:"Select provider",customDistributor:"Custom distributor",customNamePlaceholder:"e.g. Hotel concierge",gygApiConfig:"GetYourGuide API configuration",gygEnvironment:"Environment",gygEnvTest:"Test",gygEnvProduction:"Production",gygApiUsername:"API username",gygApiUsernamePlaceholder:"Username from GYG",gygApiPassword:"API password",gygSupplierApiUrl:"Your Supplier API URL",gygAuthNote:"GetYourGuide uses HTTP Basic Auth. Provide the credentials GYG gave you, and the URL where GYG should reach your system.",apiEndpoint:"API endpoint",gygApiEndpointDesc:"Use these values when configuring the connection in the GetYourGuide Integrator Portal.",gygFullUrl:"Full URL (example)",connected:"Connected",viatorApiConfig:"Viator API configuration",viatorApiKey:"API key",viatorApiKeyPlaceholder:"Key provided by Viator",viatorSupplierId:"Supplier ID",viatorSupplierIdPlaceholder:"Your numeric Viator supplier ID",viatorAuthNote:"Viator uses an API key sent via the x-api-key header. Enter the credentials provided by Viator.",viatorFullUrl:"Full URL (example)",viatorApiEndpointDesc:"Provide this endpoint URL to Viator when configuring the Reservation System API connection.",viatorNotificationUrl:"Notification URL",viatorNotificationUrlPlaceholder:"https://api.viator.com/v2/notification/events",viatorNotificationUrlNote:"Override the default Viator notification endpoint (leave empty for production default)."},no:{title:"Distributører",description:"Administrer eksterne distributører og salgskanaler for dine aktiviteter.",distributorsHelp:"Koble til eksterne salgskanaler som GetYourGuide og Viator.",addDistributor:"Legg til distributør",searchPlaceholder:"Søk distributørerâ¦",noDistributorsYet:"Ingen distributører konfigurert ennÃ¥.",name:"Navn",type:"Type",status:"Status",description_field:"Beskrivelse",contactName:"Kontaktperson",contactEmail:"Kontakt e-post",contactPhone:"Kontakttelefon",externalSystemKey:"Eksternt systemnøkkel",lastSync:"Siste synkronisering",neverSynced:"Aldri",activitiesMapped:"Aktiviteter tilknyttet",typeOta:"OTA",typeReseller:"Forhandler",typeConcierge:"Concierge",typeHotel:"Hotell",typeOther:"Annet",statusActive:"Aktiv",statusInactive:"Inaktiv",statusDraft:"Utkast",activeDistributors:"Aktive distributører",distributedActivities:"Distribuerte aktiviteter",bookingsFromDistributors:"Bookinger (30d)",revenueFromDistributors:"Omsetning (30d)",overview:"Oversikt",activities:"Aktiviteter",bookings:"Bookinger",settings:"Innstillinger",mapActivity:"Tilknytt aktivitet",removeMapping:"Fjern tilknytning",commissionPercent:"Provisjon %",externalProductId:"Eksternt produkt-ID",externalOptionId:"Eksternt alternativ-ID",active:"Aktiv",selectActivity:"Velg aktivitet",noActivitiesMapped:"Ingen aktiviteter tilknyttet denne distributøren.",allActivitiesAlreadyMapped:"Alle aktiviteter er allerede tilknyttet.",noBookingsYet:"Ingen bookinger fra denne distributøren ennÃ¥.",bookingReference:"Referanse",customer:"Kunde",amount:"Beløp",commission:"Provisjon",net:"Netto",grossSales:"Bruttosalg",totalCommission:"Total provisjon",netRevenue:"Nettoinntekt",bookingsCount:"Bookinger",connectionStatus:"Tilkoblingsstatus",notConnected:"Ikke tilkoblet",syncPlaceholder:"API-integrasjon og synkroniseringsinnstillinger blir tilgjengelig i en fremtidig oppdatering.",sourceDistributor:"Distributør",sourceDirect:"Direkte",sourcePartner:"Partner",createDistributor:"Ny distributør",editDistributor:"Rediger distributør",saved:"Distributør lagret",deleted:"Distributør slettet",mappingSaved:"Aktivitetstilknytning lagret",mappingRemoved:"Aktivitetstilknytning fjernet",provider:"Leverandør",selectProvider:"Velg leverandør",customDistributor:"Egendefinert distributør",customNamePlaceholder:"f.eks. Hotell-concierge",gygApiConfig:"GetYourGuide API-konfigurasjon",gygEnvironment:"Miljø",gygEnvTest:"Test",gygEnvProduction:"Produksjon",gygApiUsername:"API-brukernavn",gygApiUsernamePlaceholder:"Brukernavn fra GYG",gygApiPassword:"API-passord",gygSupplierApiUrl:"Din Supplier API-URL",gygAuthNote:"GetYourGuide bruker HTTP Basic Auth. Oppgi pÃ¥loggingsdetaljene du har fÃ¥tt fra GYG, og URL-en der GYG skal nÃ¥ ditt system.",apiEndpoint:"API-endepunkt",gygApiEndpointDesc:"Bruk disse verdiene nÃ¥r du konfigurerer tilkoblingen i GetYourGuide Integrator Portal.",gygFullUrl:"Full URL (eksempel)",connected:"Tilkoblet",viatorApiConfig:"Viator API-konfigurasjon",viatorApiKey:"API-nøkkel",viatorApiKeyPlaceholder:"Nøkkel fra Viator",viatorSupplierId:"Leverandør-ID",viatorSupplierIdPlaceholder:"Ditt numeriske Viator leverandør-ID",viatorAuthNote:"Viator bruker en API-nøkkel sendt via x-api-key headeren. Oppgi legitimasjonen du har fÃ¥tt fra Viator.",viatorFullUrl:"Full URL (eksempel)",viatorApiEndpointDesc:"Oppgi denne endepunkt-URL-e
478n til Viator nÃ¥r du konfigurerer Reservation System API-tilkoblingen.",viatorNotificationUrl:"Varslings-URL",viatorNotificationUrlPlaceholder:"https://api.viator.com/v2/notification/events",viatorNotificationUrlNote:"Overstyr standard Viator-varslingsendepunkt (la stÃ¥ tom for produksjonsstandard)."},de:{title:"Distributoren",description:"Externe Distributoren und Vertriebskanäle für Ihre Aktivitäten verwalten.",distributorsHelp:"Verbinden Sie sich mit externen Vertriebskanälen wie GetYourGuide und Viator.",addDistributor:"Distributor hinzufügen",searchPlaceholder:"Distributoren suchenâ¦",noDistributorsYet:"Noch keine Distributoren konfiguriert.",name:"Name",type:"Typ",status:"Status",description_field:"Beschreibung",contactName:"Kontaktname",contactEmail:"Kontakt-E-Mail",contactPhone:"Kontakttelefon",externalSystemKey:"Externer Systemschlüssel",lastSync:"Letzte Synchronisierung",neverSynced:"Nie",activitiesMapped:"Zugeordnete Aktivitäten",typeOta:"OTA",typeReseller:"Wiederverkäufer",typeConcierge:"Concierge",typeHotel:"Hotel",typeOther:"Sonstige",statusActive:"Aktiv",statusInactive:"Inaktiv",statusDraft:"Entwurf",activeDistributors:"Aktive Distributoren",distributedActivities:"Verteilte Aktivitäten",bookingsFromDistributors:"Buchungen (30T)",revenueFromDistributors:"Umsatz (30T)",overview:"Ãbersicht",activities:"Aktivitäten",bookings:"Buchungen",settings:"Einstellungen",mapActivity:"Aktivität zuordnen",removeMapping:"Zuordnung entfernen",commissionPercent:"Provision %",externalProductId:"Externe Produkt-ID",externalOptionId:"Exter
478ne Options-ID",active:"Aktiv",selectActivity:"Aktivität auswählen",noActivitiesMapped:"Keine Aktivitäten diesem Distributor zugeordnet.",allActivitiesAlreadyMapped:"Alle Aktivitäten sind bereits zugeordnet.",noBookingsYet:"Noch keine Buchungen von diesem Distributor.",bookingReference:"Referenz",customer:"Kunde",amount:"Betrag",commission:"Provision",net:"Netto",grossSales:"Bruttoumsatz",totalCommission:"Gesamtprovision",netRevenue:"Nettoumsatz",bookingsCount:"Buchungen",connectionStatus:"Verbindungsstatus",notConnected:"Nicht verbunden",syncPlaceholder:"API-Integration und Synchronisierungseinstellungen werden in einem zukünftigen Update verfügbar sein.",sourceDistributor:"Distributor",sourceDirect:"Direkt",sourcePartner:"Partner",createDistributor:"Neuer Distributor",editDistributor:"Distributor bearbeiten",saved:"Distributor gespeichert",deleted:"Distributor gelöscht",mappingSaved:"Aktivitätszuordnung gespeichert",mappingRemoved:"Aktivitätszuordnung entfernt",provider:"Anbieter",selectProvider:"Anbieter auswählen",customDistributor:"Benutzerdefinierter Distributor",customNamePlaceholder:"z.B. Hotel-Concierge",gygApiConfig:"GetYourGuide API-Konfiguration",gygEnvironment:"Umgebung",gygEnvTest:"Test",gygEnvProduction:"Produktion",gygApiUsername:"API-Benutzername",gygApiUsernamePlaceholder:"Benutzername von GYG",gygApiPassword:"API-Passwort",gygSupplierApiUrl:"Ihre Supplier-API-URL",gygAuthNote:"GetYourGuide verwendet HTTP Basic Auth. Geben Sie die Zugangsdaten an, die Sie von GYG erhalten haben, und die URL, über die GYG Ihr System erreichen soll.",apiEndpoint:"API-Endpunkt",gygApiEndpointDesc:"Verwenden Sie diese Werte bei der Konfiguration der Verbindung im GetYourGuide Integrator Portal.",gygFullUrl:"Vollständige URL (Beispiel)",connected:"Verbunden",viatorApiConfig:"Viator API-Konfiguration",viatorApiKey:"API-Schlüssel",viatorApiKeyPlaceholder:"Schlüssel von Viator",viatorSupplierId:"Lieferanten-ID",viatorSupplierIdPlaceholder:"Ihre numerische Viator Lieferanten-ID",viatorAuthNote:"Viator verwendet einen API-Schlüssel, der über den x-api-key Header gesendet wird. Geben Sie die von Viator bereitgestellten Zugangsdaten ein.",viatorFullUrl:"Vollständige URL (Beispiel)",viatorApiEndpointDesc:"Geben Sie diese Endpunkt-URL an Viator weiter, wenn Sie die Reservation System API-Verbindung konfigurieren.",viatorNotificationUrl:"Benachrichtigungs-URL",viatorNotificationUrlPlaceholder:"https://api.viator.com/v2/notification/events",viatorNotificationUrlNote:"Standard-Viator-Benachrichtigungsendpunkt überschreiben (leer lassen für Produktionsstandard)."},es:{title:"Distribuidores",description:"Gestionar distribuidores externos y canales de venta para sus actividades.",distributorsHelp:"Conéctese a canales de venta externos como GetYourGuide y Viator.",addDistributor:"Añadir distribuidor",searchPlaceholder:"Buscar distribuidoresâ¦",noDistributorsYet:"Aún no hay distribuidores configurados.",name:"Nombre",type:"Tipo",status:"Estado",description_field:"Descripción",contactName:"Nombre de contacto",contactEmail:"Email de contacto",contactPhone:"Teléfono de contacto",externalSystemKey:"Clave de sistema externo",lastSync:"Ãltima sincronización",neverSynced:"Nunca",activitiesMapped:"Actividades asignadas",typeOta:"OTA",typeReseller:"Revendedor",typeConcierge:"Conserje",typeHotel:"Hotel",typeOther:"Otro",statusActive:"Activo",statusInactive:"Inactivo",statusDraft:"Borrador",activeDistributors:"Distribuidores activos",distributedActivities:"Actividades distribuidas",bookingsFromDistributors:"Reservas (30d)",revenueFromDistributors:"Ingresos (30d)",overview:"Resumen",activities:"Actividades",bookings:"Reservas",settings:"Configuración",mapActivity:"Asignar actividad",removeMapping:"Eliminar asignación",commissionPercent:"Comisión %",externalProductId:"ID de producto externo",externalOptionId:"ID de opción externa",active:"Activo",selectActivity:"Seleccionar actividad",noActivitiesMapped:"No hay actividades asignadas a este distribuidor.",allActivitiesAlreadyMapped:"Todas las actividades ya están asignadas.",noBookingsYet:"Aún no hay reservas de este distribuidor.",bookingReference:"Referencia",customer:"Cliente",amount:"Importe",commission:"Comisión",net:"Neto",grossSales:"Ventas brutas",totalCommission:"Comisión total",netRevenue:"Ingresos netos",bookingsCount:"Reservas",connectionStatus:"Estado de conexión",notConnected:"No conectado",syncPlaceholder:"La integración API y la configuración de sincronización estarán disponibles en una actualización futura.",sourceDistributor:"Distribuidor",sourceDirect:"Directo",sourcePartner:"Socio",createDistributor:"Nuevo distribuidor",editDistributor:"Editar distribuidor",saved:"Distribuidor guardado",deleted:"Distribuidor eliminado",mappingSaved:"Asignación de actividad guardada",mappingRemoved:"Asignación de actividad eliminada",provider:"Proveedor",selectProvider:"Seleccionar proveedor",customDistributor:"Distribuidor personalizado",customNamePlaceholder:"p. ej. Conserje de hotel",gygApiConfig:"Configuración API de GetYourGuide",gygEnvironment:"Entorno",gygEnvTest:"Prueba",gygEnvProduction:"Producción",gygApiUsername:"Usuario API",gygApiUsernamePlaceholder:"Usuario de GYG",gygApiPassword:"Contraseña API",gygSupplierApiUrl:"URL de su Supplier API",gygAuthNote:"GetYourGuide usa HTTP Basic Auth. Proporcione las credenciales que recibió de GYG y la URL donde GYG debe acceder a su sistema.",apiEndpoint:"Endpoint de API",gygApiEndpointDesc:"Use estos valores al configurar la conexión en el GetYourGuide Integrator Portal.",gygFullUrl:"URL completa (ejemplo)",connected:"Conectado",viatorApiConfig:"Configuración API de Viator",viatorApiKey:"Clave API",viatorApiKeyPlaceholder:"Clave proporcionada por Viator",viatorSupplierId:"ID de proveedor",viatorSupplierIdPlaceholder:"Su ID numérico de proveedor Viator",viatorAuthNote:"Viator usa una clave API enviada mediante el encabezado x-api-key. Ingrese las credenciales proporcionadas por Viator.",viatorFullUrl:"URL completa (ejemplo)",viatorApiEndpointDesc:"Proporcione esta URL de endpoint a Viator al configurar la conexión de la Reservation System API.",viatorNotificationUrl:"URL de notificación",viatorNotificationUrlPlaceholder:"https://api.viator.com/v2/notification/events",viatorNotificationUrlNote:"Anular el endpoint de notificación predeterminado de Viator (dejar vacÃo para el valor predeterminado de producción)."},fr:{title:"Distributeurs",description:"Gérer les distributeurs externes et les canaux de vente pour vos activités.",distributorsHelp:"Connectez-vous à des canaux de vente externes comme GetYourGuide et Viator.",addDistributor:"Ajouter un distributeur",searchPlaceholder:"Rechercher des distributeursâ¦",noDistributorsYet:"Aucun distributeur configuré pour le moment.",name:"Nom",type:"Type",status:"Statut",description_field:"Description",contactName:"Nom du contact",contactEmail:"Email de contact",contactPhone:"Téléphone de contact",externalSystemKey:"Clé système externe",lastSync:"Dernière synchronisation",neverSynced:"Jamais",activitiesMapped:"Activités associées",typeOta:"OTA",typeReseller:"Revendeur",typeConcierge:"Concierge",typeHotel:"Hôtel",typeOther:"Autre",statusActive:"Actif",statusInactive:"Inactif",statusDraft:"Brouillon",activeDistributors:"Distributeurs actifs",distributedActivities:"Activités distribuées",bookingsFromDistributors:"Réservations (30j)",revenueFromDistributors:"Revenus (30j)",overview:"Aperçu",activities:"Activités",bookings:"Réservations",settings:"Paramètres",mapActivity:"Associer une activité",removeMapping:"Supprimer l'association",commissionPercent:"Commission %",externalProductId:"ID produit externe",externalOptionId:"ID option externe",active:"Actif",selectActivity:"Sélectionner une activité",noActivitiesMapped:"Aucune activité associée à ce distributeur.",allActivitiesAlreadyMapped:"Toutes les activités sont déjà associées.",noBookingsYet:"Aucune réservation de ce distributeur pour le moment.",bookingReference:"Référence",customer:"Client",amount:"Montant",commission:"Commission",
478net:"Net",grossSales:"Ventes brutes",totalCommission:"Commission totale",netRevenue:"Revenu net",bookingsCount:"Réservations",connectionStatus:"Ãtat de la connexion",notConnected:"Non connecté",syncPlaceholder:"L'intégration API et les paramètres de synchronisation seront disponibles dans une mise à jour future.",sourceDistributor:"Distributeur",sourceDirect:"Direct",sourcePartner:"Partenaire",createDistributor:"Nouveau distributeur",editDistributor:"Modifier le distributeur",saved:"Distributeur enregistré",deleted:"Distributeur supprimé",mappingSaved:"Association d'activité enregistrée",mappingRemoved:"Association d'activité supprimée",provider:"Fournisseur",selectProvider:"Sélectionner le fournisseur",customDistributor:"Distributeur personnalisé",customNamePlaceholder:"ex. Concierge d'hôtel",gygApiConfig:"Configuration API GetYourGuide",gygEnvironment:"Environnement",gygEnvTest:"Test",gygEnvProduction:"Production",gygApiUsername:"Nom d'utilisateur API",gygApiUsernamePlaceholder:"Nom d'utilisateur de GYG",gygApiPassword:"Mot de passe API",gygSupplierApiUrl:"URL de votre Supplier API",gygAuthNote:"GetYourGuide utilise HTTP Basic Auth. Fournissez les identifiants reçus de GYG et l'URL où GYG doit accéder à votre système.",apiEndpoint:"Point de terminaison API",gygApiEndpointDesc:"Utilisez ces valeurs lors de la configuration de la connexion dans le GetYourGuide Integrator Portal.",gygFullUrl:"URL complète (exemple)",connected:"Connecté",viatorApiConfig:"Configuration API Viator",viatorApiKey:"Clé API",viatorApiKeyPlaceholder:"Clé fournie par Viator",viatorSupplierId:"ID fournisseur",viatorSupplierIdPlaceholder:"Votre ID numérique de fournisseur Viator",viatorAuthNote:"Viator utilise une clé API envoyée via l'en-tête x-api-key. Entrez les identifiants fournis par Viator.",viatorFullUrl:"URL complète (exemple)",viatorApiEndpointDesc:"Fournissez cette URL d'endpoint à Viator lors de la configuration de la connexion Reservation System API.",viatorNotificationUrl:"URL de notification",viatorNotificationUrlPlaceholder:"https://api.viator.com/v2/notification/events",viatorNotificationUrlNote:"Remplacer le point de terminaison de notification Viator par défaut (laisser vide pour la valeur par défaut de production)."},it:{title:"Distributori",description:"Gestire distributori esterni e canali di vendita per le tue attività .",distributorsHelp:"Collegati a canali di vendita esterni come GetYourGuide e Viator.",addDistributor:"Aggiungi distributore",searchPlaceholder:"Cerca distributoriâ¦",noDistributorsYet:"Nessun distributore configurato ancora.",name:"Nome",type:"Tipo",status:"Stato",description_field:"Descrizione",contactName:"Nome contatto",contactEmail:"Email contatto",contactPhone:"Telefono contatto",externalSystemKey:"Chiave sistema esterno",lastSync:"Ultima sincronizzazione",neverSynced:"Mai",activitiesMapped:"Attività associate",typeOta:"OTA",typeReseller:"Rivenditore",typeConcierge:"Concierge",typeHotel:"Hotel",typeOther:"Altro",statusActive:"Attivo",statusInactive:"Inattivo",statusDraft:"Bozza",activeDistributors:"Distributori attivi",distributedActivities:"Attività distribuite",bookingsFromDistributors:"Prenotazioni (30g)",revenueFromDistributors:"Fatturato (30g)",overview:"Panoramica",activities:"Attività ",bookings:"Prenotazioni",settings:"Impostazioni",mapActivity:"Associa attività ",removeMapping:"Rimuovi associazione",commissionPercent:"Commissione %",externalProductId:"ID prodotto esterno",externalOptionId:"ID opzione esterna",active:"Attivo",selectActivity:"Seleziona attività ",noActivitiesMapped:"Nessuna attività associata a questo distributore.",allActivitiesAlreadyMapped:"Tutte le attività sono già associate.",noBookingsYet:"Nessuna prenotazione da questo distributore ancora.",bookingReference:"Riferimento",customer:"Cliente",amount:"Importo",commission:"Commissione",net:"Netto",grossSales:"Vendite lorde",totalCommission:"Commissione totale",netRevenue:"Ricavo netto",bookingsCount:"Prenotazioni",connectionStatus:"Stato connessione",notConnected:"Non connesso",syncPlaceholder:"L'integrazione API e le impostazioni di sincronizzazione saranno disponibili in un aggiornamento futuro.",sourceDistributor:"Distributore",sourceDirect:"Diretto",sourcePartner:"Partner",createDistributor:"Nuovo distributore",editDistributor:"Modifica distributore",saved:"Distributore salvato",deleted:"Distributore eliminato",mappingSaved:"Associazione attività salvata",mappingRemoved:"Associazione attività rimossa",provider:"Fornitore",selectProvider:"Seleziona fornitore",customDistributor:"Distributore personalizzato",customNamePlaceholder:"es. Concierge hotel",gygApiConfig:"Configurazione API GetYourGuide",gygEnvironment:"Ambiente",gygEnvTest:"Test",gygEnvProduction:"Produzione",gygApiUsername:"Username API",gygApiUsernamePlaceholder:"Username da GYG",gygApiPassword:"Password API",gygSupplierApiUrl:"URL della tua Supplier API",gygAuthNote:"GetYourGuide usa HTTP Basic Auth. Fornisci le credenziali ricevute da GYG e l'URL dove GYG deve raggiungere il tuo sistema.",apiEndpoint:"Endpoint API",gygApiEndpointDesc:"Usa questi valori durante la configurazione della connessione nel GetYourGuide Integrator Portal.",gygFullUrl:"URL completo (esempio)",connected:"Connesso",viatorApiConfig:"Configurazione API Viator",viatorApiKey:"Chiave API",viatorApiKeyPlaceholder:"Chiave fornita da Viator",viatorSupplierId:"ID fornitore",viatorSupplierIdPlaceholder:"Il tuo ID numerico fornitore Viator",viatorAuthNote:"Viator utilizza una chiave API inviata tramite l'header x-api-key. Inserisci le credenziali fornite da Viator.",viatorFullUrl:"URL completo (esempio)",viatorApiEndpointDesc:"Fornisci questo URL endpoint a Viator durante la configurazione della connessione Reservation System API.",viatorNotificationUrl:"URL di notifica",viatorNotificationUrlPlaceholder:"https://api.viator.com/v2/notification/events",viatorNotificationUrlNote:"Sovrascrivere l'endpoint di notifica Viator predefinito (lasciare vuoto per il valore predefinito di produzione)."}},wb={title:"Accounting",enableAccounting:"Enable Accounting",enableAccountingHelp:"Activate the finance layer to track revenue, VAT, and generate financial documents.",legalName:"Legal Name",organizationNumber:"Organization Number",vatNumber:"VAT Number",fiscalYearStart:"Fiscal Year Start Month",taxRegime:"Tax Regime",baseCurrency:"Base Currency",accountingEnabled:"Accounting is enabled",accountingDisabled:"Accounting is not enabled",generalSection:"General",taxSection:"Tax & VAT",months:{jan:"January",feb:"February",mar:"March",apr:"April",may:"May",jun:"June",jul:"July",aug:"August",sep:"September",oct:"October",nov:"November",dec:"December"},accountNo:"Account No",accountName:"Account Name",accountType:"Account Type",normalBalance:"Normal Balance",category:"Category",active:"Active",allowTax:"Allow Tax",addAccount:"New Account",editAccount:"Edit Account",noAccounts:"No accounts found",journalLines:"Journal Lines",account:"Account",debit:"Debit",credit:"Credit",taxCode:"Tax Code",taxCodeName:"Name",rate:"Rate",direction:"Direction",directionInput:"Input",directionOutput:"Output",saftCode:"SAF-T Code",addTaxCode:"Add Tax Code",editTaxCode:"Edit Tax Code",noTaxCodes:"No tax codes found",documentLines:"Document Lines",description:"Description",quantity:"Quantity",unitPrice:"Unit Price",vat:"VAT",amountIncVat:"Amount inc. VAT",docNo:"Doc No",type:"Type",date:"Date",party:"Party",status:"Status",source:"Source",allTypes:"All Types",receipt:"Receipt",invoice:"Invoice",creditNote:"Credit Note",noDocuments:"No documents found",noEntries:"No journal entries found",dateFrom:"From",dateTo:"To",close:"Close",financeDocuments:"Documents",financeJournal:"Journal",financeAccounts:"Chart of Accounts",financeTaxCodes:"Tax Codes",financeDocumentsDesc:"Receipts, invoices and credit notes",financeJournalDesc:"General ledger entries",financeAccountsDesc:"Manage your chart of accounts",financeTaxCodesDesc:"VAT and tax rate configuration",registerTransaction:"Register transaction",registerTransactionDesc:"Record a sale, purchase, payment or refund",registerTitle:"Register something that happened",stepWhatHappened:"What happened?",stepDetails:"Details",stepReview:"Review",stepConfirm:"Confirm",iSoldSomething:"I sold something",iSoldSomethingDesc:"A customer paid for a product or service",iBoughtSomething:"I bought something",iBoughtSomethingDesc:"You purchased goods or services",iReceivedMoney:"I received money",iReceivedMoneyDesc:"Payment received to your account",iPaidSomething:"I paid something",iPaidSomethingDesc:"You made a payment or settled an expense",iRefundedCustomer:"I refunded a customer",iRefundedCustomerDesc:"Money returned to a customer",other:"Other",otherDesc:"Something else happened",whatDidYouSell:"What did you sell?",whatDidYouBuy:"What did you buy?",whatDidYouReceive:"What did you receive payment for?",whatDidYouPay:"What did you pay for?",whoDidYouRefund:"Who did you refund?",describeWhatHappened:"Describe what happened",amount:"Amount incl. VAT",whoFrom:"Who from?",whoTo:"Who to?",paidNow:"Paid now",willPayLater:"Will pay later",receivedNow:"Received now",willReceiveLater:"Will receive later",paymentMethod:"Payment method",analyzingTransaction:"Analyzing your transaction...",weThinkCorrect:"We think this is correct",whatHappensAccounting:"This is what happens in your accounting",youReceive:"You receive",youGive:"You give",showAccountingDetails:"Show accounting details",hideAccountingDetails:"Hide accounting details",saveAndRegister:"Save and register",transactionSaved:"Transaction saved successfully",goodToKnow:"Good to know",learningSale:"When you sell something, you increase your revenue and either receive money directly or create a receivable.",learningPurchase:"When you buy something, you increase what you own (assets or expenses), and reduce your money or create a payable.",learningReceived:"When you receive money, your bank balance goes up and a receivable is settled.",learningPaid:"When you pay something, your bank balance goes down and a payable is settled.",learningRefund:"When you refund, your revenue decreases and money leaves your account.",learningOther:"Every transaction has two sides â something you gain and something you give.",aiUnsure:"We're not fully sure about this. Is this correct?",tryAlternative:"Try alternative",expenseVoucher:"Expense Voucher",back:"Back",next:"Next",dropReceiptHere:"Drop receipt or invoice here",dropReceiptDesc:"Upload an image or PDF â AI will read and pre-fill the form",uploadingDocument:"Uploading document...",analyzingDocument:"AI is reading your document...",documentAnalyzed:"Document analyzed â please review the details",uploadFailed:"Upload failed",attachedDocuments:"attached document(s)",orChooseManually:"or choose manually",catCurrentAssets:"Current assets",catFixedAssets:"Fixed assets",catCurrentLiabilities:"Current liabilities",catLongTermLiabilities:"Long-term liabilities",catEquity:"Equity",catOperatingRevenue:"Operating revenue",catOtherRevenue:"Other revenue",catCostOfGoods:"Cost of goods",catPersonnelCosts:"Personnel costs",catOperatingExpenses:"Operating expenses",catFinancialItems:"Financial items",catTax:"Tax",catIntangibleAssets:"Intangible assets",catFinancialAssets:"Financial assets",catFinancialIncome:"Financial income",catFinancialExpense:"Financial expense",catPersonnelCost:"Personnel costs",catTaxLiability:"Tax liability",catResult:"Result",typeAsset:"Asset",typeLiability:"Liability",typeEquity:"Equity",typeRevenue:"Revenue",typeExpense:"Expense",arLedger:"Accounts Receivable",arLedgerDesc:"Customer balances and open invoices",apLedger:"Accounts Payable",apLedgerDesc:"Supplier balances and open bills",arOriginal:"Original",arOpenAmount:"Open",arTotal:"Total receivables",apTotal:"Total payables",arNoItems:"No receivable items found",apNoItems:"No payable items found",accountingAndVat:"Accounting and VAT",revenueAccount:"Revenue account",prepaymentAccount:"Prepayment account",recognitionRule:"Revenue recognition",onEventCompletion:"When activity is completed",vatSettingInfo:"This VAT setting will be used when selling this activity",priceIncludesVat:"Price includes VAT",exempt:"Exempt",outsideScope:"Outside scope",nameNb:"Name (Norwegian)",nameEn:"Name (English)",isExempt:"VAT exempt",isOutsideScope:"Outside VAT scope",priceIncVatDefault:"Price includes VAT by default",supplierInvoiceDetected:"Supplier invoice detected",supplier:"Supplier",invoiceNo:"Invoice no",invoiceDate:"Invoice date",dueDate:"Due date",bankAccount:"Bank account",kidNumber:"KID",verifySupplierFields:"Please verify the extracted invoice details",accountDescription:"Description",safTMappingCode:"SAF-T code",catReceivable:"Receivable",catBank:"Bank",catVat:"VAT",catDeferred:"Deferred revenue",catProvision:"Provision",catRevenue:"Revenue",catCostOfSales:"Cost of sales",catOperating:"Operating",catPayable:"Payable",accountingMode:"Accounting Mode",modeNone:"None",modeInternal:"Internal",modeExternal:"External system",modeNoneDesc:"Accounting is disabled. No financial tracking or reporting.",modeInternalDesc:"Use the built-in accounting module for revenue tracking, VAT and reporting.",modeExternalDesc:"Connect an external accounting system for automatic bookkeeping.",externalSystemSection:"External System",externalSystemSelectedDesc:"Save settings, then configure sync in Settings â Payments & Accounting.",advanceAccount:"Advance account",advanceAccountDesc:"Balance account for customer prepayments (deferred revenue)",giftCardAccount:"Gift card account",giftCardAccountDesc:"Balance account for gift card liability",postingFrequency:"Posting frequency",postingFrequencyDesc:"How often journal entries are aggregated for transfer",freqDaily:"Daily",freqWeekly:"Weekly",freqMonthly:"Monthly",settlementAccounts:"Settlement accounts",settlementAccountsDesc:"Map payment providers to clearing accounts",paymentProvider:"Payment provider",glAccount:"GL account",noSettlementAccounts:"No settlement accounts configured",addSettlementAccount:"Add account",providerStripe:"Stripe",providerNexi:"Nexi (card terminal)",providerVipps:"Vipps",providerGYG:"GetYourGuide",providerViator:"Viator",providerGiftCard:"Gift card",providerManual:"Manual / cash",providerDistributor:"Distributor"},Sb={title:"Regnskap",enableAccounting:"Aktiver regnskap",enableAccountingHelp:"Aktiver finanslaget for Ã¥ spore inntekter, MVA og generere finansdokumenter.",legalName:"Juridisk navn",organizationNumber:"Organisasjonsnummer",vatNumber:"MVA-nummer",fiscalYearStart:"RegnskapsÃ¥r startmÃ¥ned",taxRegime:"Skatteregime",baseCurrency:"Basisvaluta",accountingEnabled:"Regnskap er aktivert",accountingDisabled:"Regnskap er ikke aktivert",generalSection:"Generelt",taxSection:"Skatt og MVA",months:{jan:"Januar",feb:"Februar",mar:"Mars",apr:"April",may:"Mai",jun:"Juni",jul:"Juli",aug:"August",sep:"September",oct:"Oktober",nov:"November",dec:"Desember"},accountNo:"Kontonr",accountName:"Kontonavn",accountType:"Kontotype",normalBalance:"Normal saldo",category:"Kategori",active:"Aktiv",allowTax:"Tillat MVA",addAccount:"Ny konto",editAccount:"Rediger konto",noAccounts:"Ingen kontoer funnet",journalLines:"Bilagsposter",account:"Konto",debit:"Debet",credit:"Kredit",taxCode:"MVA-kode",taxCodeName:"Navn",rate:"Sats",direction:"Retning",directionInput:"InngÃ¥ende",directionOutput:"UtgÃ¥ende",saftCode:"SAF-T-kode",addTaxCode:"Legg til MVA-kode",editTaxCode:"Rediger MVA-kode",noTaxCodes:"Ingen MVA-koder funnet",documentLines:"Dokumentlinjer",description:"Beskrivelse",quantity:"Antall",unitPrice:"Enhetspris",vat:"MVA",amountIncVat:"Beløp inkl. MVA",docNo:"Dok.nr",type:"Type",date:"Dato",party:"Part",status:"Status",source:"Kilde",allTypes:"Alle typer",receipt:"Kvittering",invoice:"Faktura",creditNote:"Kreditnota",noDocuments:"Ingen dokumenter funnet",noEntries:"Ingen bilag funnet",dateFrom:"Fra",dateTo:"Til",close:"Lukk",financeDocuments:"Dokumenter",financeJournal:"Bilag",f
478inanceAccounts:"Kontoplan",financeTaxCodes:"MVA-koder",financeDocumentsDesc:"Kvitteringer, fakturaer og kreditnotaer",financeJournalDesc:"Hovedbok og bilagsoversikt",financeAccountsDesc:"Administrer kontoplanen",financeTaxCodesDesc:"MVA-satser og konfigurering",registerTransaction:"Registrer transaksjon",registerTransactionDesc:"Registrer et salg, kjøp, betaling eller refusjon",registerTitle:"Registrer noe som har skjedd",stepWhatHappened:"Hva skjedde?",stepDetails:"Detaljer",stepReview:"Gjennomgang",stepConfirm:"Bekreft",iSoldSomething:"Jeg solgte noe",iSoldSomethingDesc:"En kunde betalte for et produkt eller en tjeneste",iBoughtSomething:"Jeg kjøpte noe",iBoughtSomethingDesc:"Du kjøpte varer eller tjenester",iReceivedMoney:"Jeg mottok penger",iReceivedMoneyDesc:"Betaling mottatt til kontoen din",iPaidSomething:"Jeg betalte noe",iPaidSomethingDesc:"Du foretok en betaling eller dekket en utgift",iRefundedCustomer:"Jeg refunderte en kunde",iRefundedCustomerDesc:"Penger returnert til en kunde",other:"Annet",otherDesc:"Noe annet skjedde",whatDidYouSell:"Hva solgte du?",whatDidYouBuy:"Hva kjøpte du?",whatDidYouReceive:"Hva mottok du betaling for?",whatDidYouPay:"Hva betalte du for?",whoDidYouRefund:"Hvem refunderte du?",describeWhatHappened:"Beskriv hva som skjedde",amount:"Beløp inkl. MVA",whoFrom:"Fra hvem?",whoTo:"Til hvem?",paidNow:"Betalt nÃ¥",willPayLater:"Betaler senere",receivedNow:"Mottatt nÃ¥",willReceiveLater:"Mottar senere",paymentMethod:"Betalingsmetode",analyzingTransaction:"Analyserer transaksjonen din...",weThinkCorrect:"Vi tror dette er riktig",whatHappensAccounting:"Dette skjer i regnskapet ditt",youReceive:"Du mottar",youGive:"Du gir",showAccountingDetails:"Vis regnskapsdetaljer",hideAccountingDetails:"Skjul regnskapsdetaljer",saveAndRegister:"Lagre og registrer",transactionSaved:"Transaksjon lagret",goodToKnow:"Godt Ã¥ vite",learningSale:"NÃ¥r du selger noe, øker du inntektene dine og mottar enten penger direkte eller oppretter en fordring.",learningPurchase:"NÃ¥r du kjøper noe, øker du det du eier (eiendeler eller utgifter), og reduserer pengene dine eller oppretter en gjeld.",learningReceived:"NÃ¥r du mottar penger, øker banksaldoen din og en fordring gjøres opp.",learningPaid:"NÃ¥r du betaler noe, reduseres banksaldoen din og en gjeld gjøres opp.",learningRefund:"NÃ¥r du refunderer, reduseres inntektene dine og penger forlater kontoen din.",learningOther:"Hver transaksjon har to sider â noe du mottar og noe du gir.",aiUnsure:"Vi er ikke helt sikre pÃ¥ dette. Er dette riktig?",tryAlternative:"Prøv alternativ",expenseVoucher:"Utgiftsbilag",back:"Tilbake",next:"Neste",dropReceiptHere:"Slipp kvittering eller faktura her",dropReceiptDesc:"Last opp et bilde eller PDF â AI leser og fyller ut skjemaet",uploadingDocument:"Laster opp dokument...",analyzingDocument:"AI leser dokumentet ditt...",documentAnalyzed:"Dokument analysert â vennligst sjekk detaljene",uploadFailed:"Opplasting feilet",attachedDocuments:"vedlagte dokument(er)",orChooseManually:"eller velg manuelt",catCurrentAssets:"Omløpsmidler",catFixedAssets:"Anleggsmidler",catCurrentLiabilities:"Kortsiktig gjeld",catLongTermLiabilities:"Langsiktig gjeld",catEquity:"Egenkapital",catOperatingRevenue:"Driftsinntekter",catOtherRevenue:"Andre inntekter",catCostOfGoods:"Varekostnad",catPersonnelCosts:"Lønnskostnader",catOperatingExpenses:"Driftskostnader",catFinancialItems:"Finansposter",catTax:"Skatt",catIntangibleAssets:"Immaterielle eiendeler",catFinancialAssets:"Finansielle eiendeler",catFinancialIncome:"Finansinntekter",catFinancialExpense:"Finanskostnader",catPersonnelCost:"Lønnskostnader",catTaxLiability:"Skattegjeld",catResult:"Resultat",typeAsset:"Eiendel",typeLiability:"Gjeld",typeEquity:"Egenkapital",typeRevenue:"Inntekt",typeExpense:"Kostnad",arLedger:"Kundereskontro",arLedgerDesc:"Kundesaldoer og Ã¥pne fakturaer",apLedger:"Leverandørreskontro",apLedgerDesc:"Leverandørsaldoer og Ã¥pne regninger",arOriginal:"Opprinnelig",arOpenAmount:"UtestÃ¥ende",arTotal:"Sum kundefordringer",apTotal:"Sum leverandørgjeld",arNoItems:"Ingen kundefordringer funnet",apNoItems:"Ingen leverandørgjeld funnet",accountingAndVat:"Regnskap og MVA",revenueAccount:"Innte
478ktskonto",prepaymentAccount:"Forskuddskonto",recognitionRule:"Inntektsføring",onEventCompletion:"NÃ¥r aktiviteten er fullført",vatSettingInfo:"Denne MVA-innstillingen brukes ved salg av denne aktiviteten",priceIncludesVat:"Pris inkluderer MVA",exempt:"Fritatt",outsideScope:"Utenfor MVA-loven",nameNb:"Navn (norsk)",nameEn:"Navn (engelsk)",isExempt:"MVA-fritatt",isOutsideScope:"Utenfor MVA-loven",priceIncVatDefault:"Pris inkluderer MVA som standard",supplierInvoiceDetected:"Leverandørfaktura oppdaget",supplier:"Leverandør",invoiceNo:"Fakturanr",invoiceDate:"Fakturadato",dueDate:"Forfallsdato",bankAccount:"Bankkonto",kidNumber:"KID",verifySupplierFields:"Vennligst kontroller de uttrukne fakturadetaljer",accountDescription:"Beskrivelse",safTMappingCode:"SAF-T-kode",catReceivable:"Fordring",catBank:"Bank",catVat:"MVA",catDeferred:"Utsatt inntekt",catProvision:"Avsetning",catRevenue:"Inntekt",catCostOfSales:"Varekostnad",catOperating:"Drift",catPayable:"Leverandørgjeld",accountingMode:"Regnskapsmodus",modeNone:"Ingen",modeInternal:"Internt",modeExternal:"Eksternt system",modeNoneDesc:"Regnskap er deaktivert. Ingen økonomisporing eller rapportering.",modeInternalDesc:"Bruk den innebygde regnskapsmodulen for inntektssporing, MVA og rapportering.",modeExternalDesc:"Koble til et eksternt regnskapssystem for automatisk bokføring.",externalSystemSection:"Eksternt system",externalSystemSelectedDesc:"Lagre innstillingene, og konfigurer synkronisering under Innstillinger â Betaling og regnskap.",advanceAccount:"Forskuddskonto",advanceAccountDesc:"Balansekonto for kundeforskudd (utsatt inntekt)",giftCardAccount:"Gavekortkonto",giftCardAccountDesc:"Balansekonto for gavekortgjeld",postingFrequency:"Bilagsfrekvens",postingFrequencyDesc:"Hvor ofte bilag aggregeres for overføring",freqDaily:"Daglig",freqWeekly:"Ukentlig",freqMonthly:"MÃ¥nedlig",settlementAccounts:"Oppgjørskontoer",settlementAccountsDesc:"Koble betalingsleverandører til oppgjørskontoer",paymentProvider:"Betalingsleverandør",glAccount:"Hovedbokskonto",noSettlementAccounts:"Ingen oppgjørskontoer konfigurert",addSettlementAccount:"Legg til konto",providerStripe:"Stripe",providerNexi:"Nexi (kortterminal)",providerVipps:"Vipps",providerGYG:"GetYourGuide",providerViator:"Viator",providerGiftCard:"Gavekort",providerManual:"Manuell / kontant",providerDistributor:"Distributør"},Cb={title:"Buchhaltung",enableAccounting:"Buchhaltung aktivieren",enableAccountingHelp:"Aktivieren Sie die Finanzebene, um Einnahmen, MwSt. und Finanzdokumente zu verfolgen.",legalName:"Firmenname (rechtlich)",organizationNumber:"Organisationsnummer",vatNumber:"USt-IdNr.",fiscalYearStart:"Geschäftsjahr Startmonat",taxRegime:"Steuerregime",baseCurrency:"Basiswährung",accountingEnabled:"Buchhaltung ist aktiviert",accountingDisabled:"Buchhaltung ist nicht aktiviert",generalSection:"Allgemein",taxSection:"Steuer & MwSt.",months:{jan:"Januar",feb:"Februar",mar:"März",apr:"April",may:"Mai",jun:"Juni",jul:"Juli",aug:"August",sep:"September",oct:"Oktober",nov:"November",dec:"Dezember"},accountNo:"Kontonr.",accountName:"Kontoname",accountType:"Kontotyp",normalBalance:"Normalsaldo",category:"Kategorie",active:"Aktiv",allowTax:"MwSt. erlauben",addAccount:"Neues Konto",editAccount:"Konto bearbeiten",noAccounts:"Keine Konten gefunden",journalLines:"Buchungszeilen",account:"Konto",debit:"Soll",credit:"Haben",taxCode:"Steuercode",taxCodeName:"Name",rate:"Satz",direction:"Richtung",directionInput:"Eingang",directionOutput:"Ausgang",saftCode:"SAF-T-Code",addTaxCode:"Steuercode hinzufügen",editTaxCode:"Steuercode bearbeiten",noTaxCodes:"Keine Steuercodes gefunden",documentLines:"Dokumentzeilen",description:"Beschreibung",quantity:"Menge",unitPrice:"Stückpreis",vat:"MwSt.",amountIncVat:"Betrag inkl. MwSt.",docNo:"Dok.-Nr.",type:"Typ",date:"Datum",party:"Partei",status:"Status",source:"Quelle",allTypes:"Alle Typen",receipt:"Quittung",invoice:"Rechnung",creditNote:"Gutschrift",noDocuments:"Keine Dokumente gefunden",noEntries:"Keine Buchungen gefunden",dateFrom:"Von",dateTo:"Bis",close:"SchlieÃen",financeDocuments:"Dokumente",financeJournal:"Journal",financeAccounts:"Kontenplan",financeTaxCodes:"Steuercodes",financeDocumentsDesc:"Quittungen, Rechnungen und Gutschriften",financeJournalDesc:"Hauptbucheinträge",financeAccountsDesc:"Kontenplan verwalten",financeTaxCodesDesc:"MwSt.-Sätze und Konfiguration",registerTransaction:"Transaktion erfassen",registerTransactionDesc:"Verkauf, Einkauf, Zahlung oder Erstattung erfassen",registerTitle:"Erfassen Sie, was passiert ist",stepWhatHappened:"Was ist passiert?",stepDetails:"Details",stepReview:"Ãberprüfung",stepConfirm:"Bestätigen",iSoldSomething:"Ich habe etwas verkauft",iSoldSomethingDesc:"Ein Kunde hat für ein Produkt oder eine Dienstleistung bezahlt",iBoughtSomething:"Ich habe etwas gekauft",iBoughtSomethingDesc:"Sie haben Waren oder Dienstleistungen eingekauft",iReceivedMoney:"Ich habe Geld erhalten",iReceivedMoneyDesc:"Zahlung auf Ihrem Konto eingegangen",iPaidSomething:"Ich habe etwas bezahlt",iPaidSomethingDesc:"Sie haben eine Zahlung geleistet oder eine Ausgabe beglichen",iRefundedCustomer:"Ich habe einem Kunden erstattet",iRefundedCustomerDesc:"Geld an einen Kunden zurückgegeben",other:"Sonstiges",otherDesc:"Etwas anderes ist passiert",whatDidYouSell:"Was haben Sie verkauft?",whatDidYouBuy:"Was haben Sie gekauft?",whatDidYouReceive:"Wofür haben Sie Zahlung erhalten?",whatDidYouPay:"Wofür haben Sie bezahlt?",whoDidYouRefund:"Wen haben Sie erstattet?",describeWhatHappened:"Beschreiben Sie, was passiert ist",amount:"Betrag inkl. MwSt.",whoFrom:"Von wem?",whoTo:"An wen?",paidNow:"Sofort bezahlt",willPayLater:"Später bezahlen",receivedNow:"Sofort erhalten",willReceiveLater:"Später erhalten",paymentMethod:"Zahlungsmethode",analyzingTransaction:"Transaktion wird analysiert...",weThinkCorrect:"Wir glauben, das ist richtig",whatHappensAccounting:"Das passiert in Ihrer Buchhaltung",youReceive:"Sie erhalten",youGive:"Sie geben",showAccountingDetails:"Buchhaltungsdetails anzeigen",hideAccountingDetails:"Buchhaltungsdetails ausblenden",saveAndRegister:"Speichern und buchen",transactionSaved:"Transaktion erfolgreich gespeichert",goodToKnow:"Gut zu wissen",learningSale:"Wenn Sie etwas verkaufen, steigern Sie Ihren Umsatz und erhalten entweder direkt Geld oder erstellen eine Forderung.",learningPurchase:"Wenn Sie etwas kaufen, erhöhen Sie Ihren Besitz (Vermögen oder Ausgaben) und verringern Ihr Geld oder schaffen eine Verbindlichkeit.",learningReceived:"Wenn Sie Geld erhalten, steigt Ihr Kontostand und eine Forderung wird beglichen.",learningPaid:"Wenn Sie etwas bezahlen, sinkt Ihr Kontostand und eine Verbindlichkeit wird beglichen.",learningRefund:"Bei einer Erstattung sinkt Ihr Umsatz und Geld verlässt Ihr Konto.",learningOther:"Jede Transaktion hat zwei Seiten â etwas, das Sie erhalten, und etwas, das Sie geben.",aiUnsure:"Wir sind uns nicht ganz sicher. Ist das korrekt?",tryAlternative:"Alternative versuchen",expenseVoucher:"Ausgabenbeleg",back:"Zurück",next:"Weiter",dropReceiptHere:"Beleg oder Rechnung hier ablegen",dropReceiptDesc:"Laden Sie ein Bild oder PDF hoch â KI liest und füllt das Formular aus",uploadingDocument:"Dokument wird hochgeladen...",analyzingDocument:"KI liest Ihr Dokument...",documentAnalyzed:"Dokument analysiert â bitte überprüfen Sie die Details",uploadFailed:"Upload fehlgeschlagen",attachedDocuments:"angehängte(s) Dokument(e)",orChooseManually:"oder manuell auswählen",catCurrentAssets:"Umlaufvermögen",catFixedAssets:"Anlagevermögen",catCurrentLiabilities:"Kurzfristige Verbindlichkeiten",catLongTermLiabilities:"Langfristige Verbindlichkeiten",catEquity:"Eigenkapital",catOperatingRevenue:"Betriebseinnahmen",catOtherRevenue:"Sonstige Einnahmen",catCostOfGoods:"Wareneinsatz",catPersonnelCosts:"Personalkosten",catOperatingExpenses:"Betriebsausgaben",catFinancialItems:"Finanzposten",catTax:"Steuern",catIntangibleAssets:"Immaterielle Vermögenswerte",catFinancialAssets:"Finanzanlagen",catFinancialIncome:"Finanzerträge",catFinancialExpense:"Finanzaufwendungen",catPersonnelCost:"Personalkosten",catTaxLiability:"Steuerschulden",catResult:"Ergebnis",typeAsset:"Vermögenswert",typeLiability:"Verbindlichkeit",typeEquity:"Eigenkapital",typeRevenue:"Ertrag",typeExpense:"Aufwand",arLedger:"Debitorenbuch",arLedgerDesc:"Kundensalden und offene Rechnungen",apLedger:"Kreditorenbuch",apLedgerDesc:"Lieferantensalden und offene Rechnungen",arOriginal:"Original",arOpenAmount:"Offen",arTotal:"Summe Forderungen",apTotal:"Summe Verbindlichkeiten",arNoItems:"Keine Forderungen gefunden",apNoItems:"Keine Verbindlichkeiten gefunden",accountingAndVat:"Buchhaltung und MwSt.",revenueAccount:"Erlöskonto",prepaymentAccount:"Vorauszahlungskonto",recognitionRule:"Erlöserfassung",onEventCompletion:"Bei Abschluss der Aktivität",vatSettingInfo:"Diese MwSt.-Einstellung wird beim Verkauf dieser Aktivität verwendet",priceIncludesVat:"Preis
478inkl. MwSt.",exempt:"Befreit",outsideScope:"AuÃerhalb des Geltungsbereichs",nameNb:"Name (Norwegisch)",nameEn:"Name (Englisch)",isExempt:"MwSt.-befreit",isOutsideScope:"AuÃerhalb des MwSt.-Bereichs",priceIncVatDefault:"Preis inkl. MwSt. als Standard",supplierInvoiceDetected:"Lieferantenrechnung erkannt",supplier:"Lieferant",invoiceNo:"Rechnungsnr.",invoiceDate:"Rechnungsdatum",dueDate:"Fälligkeitsdatum",bankAccount:"Bankkonto",kidNumber:"KID",verifySupplierFields:"Bitte überprüfen Sie die extrahierten Rechnungsdetails",accountDescription:"Beschreibung",safTMappingCode:"SAF-T-Code",catReceivable:"Forderung",catBank:"Bank",catVat:"MwSt.",catDeferred:"Abgegrenzte Erlöse",catProvision:"Rückstellung",catRevenue:"Umsatzerlös",catCostOfSales:"Wareneinsatz",catOperating:"Betrieb",catPayable:"Verbindlichkeit",accountingMode:"Buchhaltungsmodus",modeNone:"Keine",modeInternal:"Intern",modeExternal:"Externes System",modeNoneDesc:"Buchhaltung ist deaktiviert. Keine Finanzverfolgung oder Berichterstattung.",modeInternalDesc:"Verwenden Sie das integrierte Buchhaltungsmodul für Umsatzverfolgung, MwSt. und Berichterstattung.",modeExternalDesc:"Verbinden Sie ein externes Buchhaltungssystem für automatische Buchführung.",externalSystemSection:"Externes System",externalSystemSelectedDesc:"Einstellungen speichern, dann Synchronisierung unter Einstellungen â Zahlungen & Buchhaltung konfigurieren.",advanceAccount:"Vorauszahlungskonto",advanceAccountDesc:"Bilanzkonto für Kundenvorauszahlungen (abgegrenzte Einnahmen)",giftCardAccount:"Gutscheinkonto",giftCardAccountDesc:"Bilanzkonto für Gutscheinverbindlichkeiten",postingFrequency:"Buchungsfrequenz",postingFrequencyDesc:"Wie oft Buchungen für die Ãbertragung aggregiert werden",freqDaily:"Täglich",freqWeekly:"Wöchentlich",freqMonthly:"Monatlich",settlementAccounts:"Abrechnungskonten",settlementAccountsDesc:"Zahlungsanbieter den Verrechnungskonten zuordnen",paymentProvider:"Zahlungsanbieter",glAccount:"Hauptbuchkonto",noSettlementAccounts:"Keine Abrechnungskonten konfiguriert",addSettlementAccount:"Konto hinzufügen",providerStripe:"Stripe",providerNexi:"Nexi (Kartenterminal)",providerVipps:"Vipps",providerGYG:"GetYourGuide",providerViator:"Viator",providerGiftCard:"Gutschein",providerManual:"Manuell / Bar",providerDistributor:"Vertriebspartner"},Nb={title:"Contabilidad",enableAccounting:"Activar contabilidad",enableAccountingHelp:"Active la capa financiera para rastrear ingresos, IVA y generar documentos financieros.",legalName:"Razón social",organizationNumber:"Número de organización",vatNumber:"Número de IVA",fiscalYearStart:"Mes de inicio del año fiscal",taxRegime:"Régimen fiscal",baseCurrency:"Moneda base",accountingEnabled:"Contabilidad activada",accountingDisabled:"Contabilidad no activada",generalSection:"General",taxSection:"Impuestos e IVA",months:{jan:"Enero",feb:"Febrero",mar:"Marzo",apr:"Abril",may:"Mayo",jun:"Junio",jul:"Julio",aug:"Agosto",sep:"Septiembre",oct:"Octubre",nov:"Noviembre",dec:"Diciembre"},accountNo:"Nº cuenta",accountName:"Nombre cuenta",accountType:"Tipo cuenta",normalBalance:"Saldo normal",category:"CategorÃa",active:"Activo",allowTax:"Permitir IVA",addAccount:"Nueva cuenta",editAccount:"Editar cuenta",noAccounts:"No se encontraron cuentas",journalLines:"LÃneas de asiento",account:"Cuenta",debit:"Debe",credit:"Haber",taxCode:"Código fiscal",taxCodeName:"Nombre",rate:"Tasa",direction:"Dirección",directionInput:"Entrada",directionOutput:"Salida",saftCode:"Código SAF-T",addTaxCode:"Añadir código fiscal",editTaxCode:"Editar código fiscal",noTaxCodes:"No se encontraron códigos fiscales",documentLines:"LÃneas del documento",description:"Descripción",quantity:"Cantidad",unitPrice:"Precio unitario",vat:"IVA",amountIncVat:"Importe con IVA",docNo:"Nº doc.",type:"Tipo",date:"Fecha",party:"Parte",status:"Estado",source:"Origen",allTypes:"Todos los tipos",receipt:"Recibo",invoice:"Factura",creditNote:"Nota de crédito",noDocuments:"No se encontraron documentos",noEntries:"No se encontraron asientos",dateFrom:"Desde",dateTo:"Hasta",close:"Cerrar",financeDocuments:"Documentos",financeJournal:"Diario",financeAccounts:"Plan de cuentas",financeTaxCodes:"Códigos fiscales",financeDocumentsDesc:"Recibos, facturas y notas de crédito",financeJournalDesc:"Asientos del libro mayor",financeAccountsDesc:"Gestionar el plan de cuentas",financeTaxCodesDesc:"Configuración de tasas de IVA",registerTransaction:"Registrar transacción",registerTransactionDesc:"Registrar una venta, compra, pago o reembolso",registerTitle:"Registrar algo que sucedió",stepWhatHappened:"¿Qué pasó?",stepDetails:"Detalles",stepReview:"Revisión",stepConfirm:"Confirmar",iSoldSomething:"Vendà algo",iSoldSomethingDesc:"Un cliente pagó por un producto o servicio",iBoughtSomething:"Compré algo",iBoughtSomethingDesc:"Compró bienes o servicios",iReceivedMoney:"Recibà dinero",iReceivedMoneyDesc:"Pago recibido en su cuenta",iPaidSomething:"Pagué algo",iPaidSomethingDesc:"Realizó un pago o cubrió un gasto",iRefundedCustomer:"Reembolsé a un cliente",iRefundedCustomerDesc:"Dinero devuelto a un cliente",other:"Otro",otherDesc:"Algo más sucedió",whatDidYouSell:"¿Qué vendió?",whatDidYouBuy:"¿Qué compró?",whatDidYouReceive:"¿Por qué recibió el pago?",whatDidYouPay:"¿Qué pagó?",whoDidYouRefund:"¿A quién reembolsó?",describeWhatHappened:"Describa qué sucedió",amount:"Importe con IVA",whoFrom:"¿De quién?",whoTo:"¿A quién?",paidNow:"Pagado ahora",willPayLater:"Pagará después",receivedNow:"Recibido ahora",willReceiveLater:"Recibirá después",paymentMethod:"Método de pago",analyzingTransaction:"Analizando su transacción...",weThinkCorrect:"Creemos que esto es correcto",whatHappensAccounting:"Esto es lo que pasa en su contabilidad",youReceive:"Usted recibe",youGive:"Usted da",showAccountingDetails:"Mostrar detalles contables",hideAccountingDetails:"Ocultar detalles contables",saveAndRegister:"Guardar y registrar",transactionSaved:"Transacción guardada exitosamente",goodToKnow:"Bueno saber",learningSale:"Cuando vende algo, aumenta sus ingresos y recibe dinero directamente o crea una cuenta por cobrar.",learningPurchase:"Cuando compra algo, aumenta lo que posee (activos o gastos) y reduce su dinero o crea una cuenta por pagar.",learningReceived:"Cuando recibe dinero, su saldo bancario sube y una cuenta por cobrar se liquida.",learningPaid:"Cuando paga algo, su saldo bancario baja y una cuenta por pagar se liquida.",learningRefund:"Cuando reembolsa, sus ingresos disminuyen y el dinero sale de su cuenta.",learningOther:"Cada transacción tiene dos lados: algo que recibe y algo que da.",aiUnsure:"No estamos completamente seguros. ¿Es correcto?",tryAlternative:"Probar alternativa",expenseVoucher:"Comprobante de gasto",back:"Atrás",
478next:"Siguiente",dropReceiptHere:"Suelte recibo o factura aquÃ",dropReceiptDesc:"Suba una imagen o PDF â la IA leerá y completará el formulario",uploadingDocument:"Subiendo documento...",analyzingDocument:"La IA está leyendo su documento...",documentAnalyzed:"Documento analizado â revise los detalles",uploadFailed:"Error al subir",attachedDocuments:"documento(s) adjunto(s)",orChooseManually:"o elija manualmente",catCurrentAssets:"Activos corrientes",catFixedAssets:"Activos fijos",catCurrentLiabilities:"Pasivos corrientes",catLongTermLiabilities:"Pasivos a largo plazo",catEquity:"Patrimonio",catOperatingRevenue:"Ingresos operativos",catOtherRevenue:"Otros ingresos",catCostOfGoods:"Coste de mercancÃas",catPersonnelCosts:"Costes de personal",catOperatingExpenses:"Gastos operativos",catFinancialItems:"Partidas financieras",catTax:"Impuestos",catIntangibleAssets:"Activos intangibles",catFinancialAssets:"Activos financieros",catFinancialIncome:"Ingresos financieros",catFinancialExpense:"Gastos financieros",catPersonnelCost:"Costes de personal",catTaxLiability:"Deuda tributaria",catResult:"Resultado",typeAsset:"Activo",typeLiability:"Pasivo",typeEquity:"Patrimonio",typeRevenue:"Ingreso",typeExpense:"Gasto",arLedger:"Cuentas por cobrar",arLedgerDesc:"Saldos de clientes y facturas abiertas",apLedger:"Cuentas por pagar",apLedgerDesc:"Saldos de proveedores y facturas pendientes",arOriginal:"Original",arOpenAmount:"Pendiente",arTotal:"Total por cobrar",apTotal:"Total por pagar",arNoItems:"No se encontraron cuentas por cobrar",apNoItems:"No se encontraron cuentas por pagar",accountingAndVat:"Contabilidad e IVA",revenueAccount:"Cuenta de ingresos",prepaymentAccount:"Cuenta de anticipos",recognitionRule:"Reconocimiento de ingresos",onEventCompletion:"Al completar la actividad",vatSettingInfo:"Esta configuración de IVA se usará al vender esta actividad",priceIncludesVat:"Precio incluye IVA",exempt:"Exento",outsideScope:"Fuera del ámbito",nameNb:"Nombre (noruego)",nameEn:"Nombre (inglés)",isExempt:"Exento de IVA",isOutsideScope:"Fuera del ámbito del IVA",priceIncVatDefault:"Precio incluye IVA por defecto",supplierInvoiceDetected:"Factura de proveedor detectada",supplier:"Proveedor",invoiceNo:"Nº factura",invoiceDate:"Fecha factura",dueDate:"Fecha de vencimiento",bankAccount:"Cuenta bancaria",kidNumber:"KID",verifySupplierFields:"Verifique los detalles extraÃdos de la factura",accountDescription:"Descripción",safTMappingCode:"Código SAF-T",catReceivable:"Por cobrar",catBank:"Banco",catVat:"IVA",catDeferred:"Ingresos diferidos",catProvision:"Provisión",catRevenue:"Ingreso",catCostOfSales:"Coste de ventas",catOperating:"Operativo",catPayable:"Por pagar",accountingMode:"Modo de contabilidad",modeNone:"Ninguno",modeInternal:"Interno",modeExternal:"Sistema externo",modeNoneDesc:"La contabilidad está desactivada. Sin seguimiento financiero ni informes.",modeInternalDesc:"Use el módulo de contabilidad integrado para seguimiento de ingresos, IVA e informes.",modeExternalDesc:"Conecte un sistema de contabilidad externo para la contabilidad automática.",externalSystemSection:"Sistema externo",externalSystemSelectedDesc:"Guarde la configuración, luego configure la sincronización en Ajustes â Pagos y contabilidad.",advanceAccount:"Cuenta de anticipos",advanceAccountDesc:"Cuenta de balance para anticipos de clientes (ingresos diferidos)",giftCardAccount:"Cuenta de tarjetas regalo",giftCardAccountDesc:"Cuenta de balance para pasivos de tarjetas regalo",postingFrequency:"Frecuencia de contabilización",postingFrequencyDesc:"Con qué frecuencia se agregan los asientos para transferencia",freqDaily:"Diario",freqWeekly:"Semanal",freqMonthly:"Mensual",settlementAccounts:"Cuentas de liquidación",settlementAccountsDesc:"Asignar proveedores de pago a cuentas de compensación",paymentProvider:"Proveedor de pago",glAccount:"Cuenta contable",noSettlementAccounts:"No hay cuentas de liquidación configuradas",addSettlementAccount:"Añadir cuenta",providerStripe:"Stripe",providerNexi:"Nexi (terminal de tarjeta)",providerVipps:"Vipps",providerGYG:"GetYourGuide",providerViator:"Viator",providerGiftCard:"Tarjeta regalo",providerManual:"Manual / efectivo",providerDistributor:"Distribuidor"},Ab={title:"Comptabilité",enableAccounting:"Activer la comptabilité",enableAccountingHelp:"Activez la couche financière pour suivre les revenus, la TVA et générer des documents financiers.",legalName:"Raison sociale",organizationNumber:"Numéro d'organisation",vatNumber:"Numéro de TVA",fiscalYearStart:"Mois de début de l'exercice",taxRegime:"Régime fiscal",baseCurrency:"Devise de base",accountingEnabled:"Comptabilité activée",accountingDisabled:"Comptabilité non activée",generalSection:"Général",taxSection:"Taxes & TVA",months:{jan:"Janvier",feb:"Février",mar:"Mars",apr:"Avril",may:"Mai",jun:"Juin",jul:"Juillet",aug:"Août",sep:"Septembre",oct:"Octobre",n
478ov:"Novembre",dec:"Décembre"},accountNo:"N° compte",accountName:"Nom du compte",accountType:"Type de compte",normalBalance:"Solde normal",category:"Catégorie",active:"Actif",allowTax:"Autoriser TVA",addAccount:"Nouveau compte",editAccount:"Modifier le compte",noAccounts:"Aucun compte trouvé",journalLines:"Lignes d'écriture",account:"Compte",debit:"Débit",credit:"Crédit",taxCode:"Code TVA",taxCodeName:"Nom",rate:"Taux",direction:"Direction",directionInput:"Entrée",directionOutput:"Sortie",saftCode:"Code SAF-T",addTaxCode:"Ajouter un code TVA",editTaxCode:"Modifier le code TVA",noTaxCodes:"Aucun code TVA trouvé",documentLines:"Lignes du document",description:"Description",quantity:"Quantité",unitPrice:"Prix unitaire",vat:"TVA",amountIncVat:"Montant TTC",docNo:"N° doc.",type:"Type",date:"Date",party:"Tiers",status:"Statut",source:"Source",allTypes:"Tous les types",receipt:"Reçu",invoice:"Facture",creditNote:"Avoir",noDocuments:"Aucun document trouvé",noEntries:"Aucune écriture trouvée",dateFrom:"Du",dateTo:"Au",close:"Fermer",financeDocuments:"Documents",financeJournal:"Journal",financeAccounts:"Plan comptable",financeTaxCodes:"Codes TVA",financeDocumentsDesc:"Reçus, factures et avoirs",financeJournalDesc:"Ãcritures du grand livre",financeAccountsDesc:"Gérer le plan comptable",financeTaxCodesDesc:"Configuration des taux de TVA",registerTransaction:"Enregistrer une transaction",registerTransactionDesc:"Enregistrer une vente, achat, paiement ou remboursement",registerTitle:"Enregistrer quelque chose qui s'est passé",stepWhatHappened:"Que s'est-il passé ?",stepDetails:"Détails",stepReview:"Vérification",stepConfirm:"Confirmer",iSoldSomething:"J'ai vendu quelque chose",iSoldSomethingDesc:"Un client a payé pour un produit ou un service",iBoughtSomething:"J'ai acheté quelque chose",iBoughtSomethingDesc:"Vous avez acheté des biens ou des services",iReceivedMoney:"J'ai reçu de l'argent",iReceivedMoneyDesc:"Paiement reçu sur votre compte",iPaidSomething:"J'ai payé quelque chose",iPaidSomethingDesc:"Vous avez effectué un paiement ou réglé une dépense",iRefundedCustomer:"J'ai remboursé un client",iRefundedCustomerDesc:"Argent retourné à un client",other:"Autre",otherDesc:"Quelque chose d'autre s'est passé",whatDidYouSell:"Qu'avez-vous vendu ?",whatDidYouBuy:"Qu'avez-vous acheté ?",whatDidYouReceive:"Pour quoi avez-vous reçu un paiement ?",whatDidYouPay:"Pour quoi avez-vous payé ?",whoDidYouRefund:"Qui avez-vous remboursé ?",describeWhatHappened:"Décrivez ce qui s'est passé",amount:"Montant TTC",whoFrom:"De qui ?",whoTo:"à qui ?",paidNow:"Payé maintenant",willPayLater:"Paiera plus tard",receivedNow:"Reçu maintenant",willReceiveLater:"Recevra plus tard",paymentMethod:"Mode de paiement",analyzingTransaction:"Analyse de votre transaction...",weThinkCorrect:"Nous pensons que c'est correct",whatHappensAccounting:"Voici ce qui se passe dans votre comptabilité",youReceive:"Vous recevez",youGive:"Vous donnez",showAccountingDetails:"Afficher les détails comptables",hideAccountingDetails:"Masquer les détails comptables",saveAndRegister:"Enregistrer et comptabiliser",transactionSaved:"Transaction enregistrée avec succès",goodToKnow:"Bon à savoir",learningSale:"Quand vous vendez, vous augmentez vos revenus et recevez de l'argent directement ou créez une créance.",learningPurchase:"Quand vous achetez, vous augmentez ce que vous possédez (actifs ou charges) et réduisez votre argent ou créez une dette.",learningReceived:"Quand vous recevez de l'argent, votre solde bancaire augmente et une créance est réglée.",learningPaid:"Quand vous payez, votre solde bancaire diminue et une dette est réglée.",learningRefund:"Quand vous remboursez, vos revenus diminuent et l'argent quitte votre compte.",learningOther:"Chaque transaction a deux côtés â quelque chose que vous recevez et quelque chose que vous donnez.",aiUnsure:"Nous ne sommes pas tout à fait sûrs. Est-ce correct ?",tryAlternative:"Essayer une alternative",expenseVoucher:"Justificatif de dépense",back:"Retour",next:"Suivant",dropReceiptHere:"Déposez le reçu ou la facture ici",dropReceiptDesc:"Téléchargez une image ou un PDF â l'IA lira et remplira le formulaire",uploadingDocument:"Téléchargement du document...",analyzingDocument:"L'IA lit votre document...",documentAnalyzed:"Document analysé â veuillez vérifier les détails",uploadFailed:"Ãchec du téléchargement",attachedDocuments:"document(s) joint(s)",orChooseManually:"ou choisissez manuellement",catCurrentAssets:"Actifs courants",catFixedAssets:"Immobilisations",catCurrentLiabilities:"Passifs courants",catLongTermLiabilities:"Passifs à long terme",catEquity:"Capitaux propres",catOperatingRevenue:"Produits d'exploitation",catOtherRevenue:"Autres produits",catCostOfGoods:"Coût des marchandises",catPersonnelCosts:"Charges de personnel",catOperatingExpenses:"Charges d'exploitation",catFinancialItems:"Postes financiers",catTax:"Impôts",catIntangibleAssets:"Immobilisations incorporelles",catFinancialAssets:"Actifs financiers",catFinancialIncome:"Produits financiers",catFinancialExpense:"Charges financières",catPersonnelCost:"Charges de personnel",catTaxLiability:"Dettes fiscales",catResult:"Résultat",typeAsset:"Actif",typeLiability:"Passif",typeEquity:"Capitaux propres",typeRevenue:"Produit",typeExpense:"Charge",arLedger:"Comptes clients",arLedgerDesc:"Soldes clients et factures ouvertes",apLedger:"Comptes fournisseurs",apLedgerDesc:"Soldes fournisseurs et factures en attente",arOriginal:"Original",arOpenAmount:"Ouvert",arTotal:"Total créances",apTotal:"Total dettes",arNoItems:"Aucune créance trouvée",apNoItems:"Aucune dette trouvée",accountingAndVat:"Comptabilité et TVA",revenueAccount:"Compte de produits",prepaymentAccount:"Compte d'avances",recognitionRule:"Reconnaissance des produits",onEventCompletion:"à la fin de l'activité",vatSettingInfo:"Ce paramètre de TVA sera utilisé lors de la vente de cette activité",priceIncludesVat:"Prix TTC",exempt:"Exonéré",outsideScope:"Hors champ",
478nameNb:"Nom (norvégien)",nameEn:"Nom (anglais)",isExempt:"Exonéré de TVA",isOutsideScope:"Hors champ de la TVA",priceIncVatDefault:"Prix TTC par défaut",supplierInvoiceDetected:"Facture fournisseur détectée",supplier:"Fournisseur",invoiceNo:"N° facture",invoiceDate:"Date facture",dueDate:"Date d'échéance",bankAccount:"Compte bancaire",kidNumber:"KID",verifySupplierFields:"Veuillez vérifier les détails extraits de la facture",accountDescription:"Description",safTMappingCode:"Code SAF-T",catReceivable:"Créance",catBank:"Banque",catVat:"TVA",catDeferred:"Produits différés",catProvision:"Provision",catRevenue:"Chiffre d'affaires",catCostOfSales:"Coût des ventes",catOperating:"Exploitation",catPayable:"Fournisseur",accountingMode:"Mode comptable",modeNone:"Aucun",modeInternal:"Interne",modeExternal:"Système externe",modeNoneDesc:"La comptabilité est désactivée. Pas de suivi financier ni de rapports.",modeInternalDesc:"Utilisez le module de comptabilité intégré pour le suivi des revenus, la TVA et les rapports.",modeExternalDesc:"Connectez un système de comptabilité externe pour la comptabilité automatique.",externalSystemSection:"Système externe",externalSystemSelectedDesc:"Enregistrez les paramètres, puis configurez la synchronisation dans Paramètres â Paiements et comptabilité.",advanceAccount:"Compte d'acomptes",advanceAccountDesc:"Compte de bilan pour les acomptes clients (produits différés)",giftCardAccount:"Compte cartes cadeaux",giftCardAccountDesc:"Compte de bilan pour les passifs cartes cadeaux",postingFrequency:"Fréquence de comptabilisation",postingFrequencyDesc:"Fréquence d'agrégation des écritures pour le transfert",freqDaily:"Quotidien",freqWeekly:"Hebdomadaire",freqMonthly:"Mensuel",settlementAccounts:"Comptes de règlement",settlementAccountsDesc:"Associer les prestataires de paiement aux comptes de compensation",paymentProvider:"Prestataire de paiement",glAccount:"Compte du grand livre",noSettlementAccounts:"Aucun compte de règlement configuré",addSettlementAccount:"Ajouter un compte",providerStripe:"Stripe",providerNexi:"Nexi (terminal de carte)",providerVipps:"Vipps",providerGYG:"GetYourGuide",providerViator:"Viator",providerGiftCard:"Carte cadeau",providerManual:"Manuel / espèces",providerDistributor:"Distributeur"},Pb={title:"Contabilità ",enableAccounting:"Attiva contabilità ",enableAccountingHelp:"Attiva il livello finanziario per monitorare ricavi, IVA e generare documenti finanziari.",legalName:"Ragione sociale",organizationNumber:"Numero organizzazione",vatNumber:"Partita IVA",fiscalYearStart:"Mese inizio anno fiscale",taxRegime:"Regime fiscale",baseCurrency:"Valuta base",accountingEnabled:"Contabilità attivata",accountingDisabled:"Contabilità non attivata",generalSection:"Generale",taxSection:"Tasse e IVA",months:{jan:"Gennaio",feb:"Febbraio",mar:"Marzo",apr:"Aprile",may:"Maggio",jun:"Giugno",jul:"Luglio",aug:"Agosto",sep:"Settembre",oct:"Ottobre",nov:"Novembre",dec:"Dicembre"},accountNo:"Nr. conto",accountName:"Nome conto",accountType:"Tipo conto",normalBalance:"Saldo normale",category:"Categoria",active:"Attivo",allowTax:"Consenti IVA",addAccount:"Nuovo conto",editAccount:"Modifica conto",noAccounts:"Nessun conto trovato",journalLines:"Righe di registrazione",account:"Conto",debit:"Dare",credit:"Avere",taxCode:"Codice IVA",taxCodeName:"Nome",rate:"Aliquota",direction:"Direzione",directionInput:"Ingresso",directionOutput:"Uscita",saftCode:"Codice SAF-T",addTaxCode:"Aggiungi codice IVA",editTaxCode:"Modifica codice IVA",noTaxCodes:"Nessun codice IVA trovato",documentLines:"Righe documento",description:"Descrizione",quantity:"Quantità ",unitPrice:"Prezzo unitario",vat:"IVA",amountIncVat:"Importo IVA inclusa",docNo:"Nr. doc.",type:"Tipo",date:"Data",party:"Parte",status:"Stato",source:"Origine",allTypes:"Tutti i tipi",receipt:"Ricevuta",invoice:"Fattura",creditNote:"Nota di credito",noDocuments:"Nessun documento trovato",noEntries:"Nessuna registrazione trovata",dateFrom:"Dal",dateTo:"Al",close:"Chiudi",financeDocuments:"Documenti",financeJournal:"Giornale",financeAccounts:"Piano dei conti",financeTaxCodes:"Codici IVA",financeDocumentsDesc:"Ricevute, fatture e note di credito",financeJournalDesc:"Registrazioni del libro mastro",financeAccountsDesc:"Gestisci il piano dei conti",financeTaxCodesDesc:"Configurazione aliquote IVA",registerTransaction:"Registra transazione",registerTransactionDesc:"Registra una vendita, acquisto, pagamento o rimborso",registerTitle:"Registra qualcosa che è successo",stepWhatHappened:"Cosa è successo?",stepDetails:"Dettagli",stepReview:"Revisione",stepConfirm:"Conferma",iSoldSomething:"Ho venduto qualcosa",iSoldSomethingDesc:"Un cliente ha pagato per un prodotto o servizio",iBoughtSomething:"Ho comprato qualcosa",iBoughtSomethingDesc:"Hai acquistato beni o servizi",iReceivedMoney:"Ho ricevuto denaro",iReceivedMoneyDesc:"Pagamento ricevuto sul tuo conto",iPaidSomething:"Ho pagato qualcosa",iPaidSomethingDesc:"Hai effettuato un pagamento o saldato una spesa",iRefundedCustomer:"Ho rimborsato un cliente",iRefundedCustomerDesc:"Denaro restituito a un cliente",other:"Altro",otherDesc:"à successo qualcos'altro",whatDidYouSell:"Cosa hai venduto?",whatDidYouBuy:"Cosa hai comprato?",whatDidYouReceive:"Per cosa hai ricevuto il pagamento?",whatDidYouPay:"Per cosa hai pagato?",whoDidYouRefund:"Chi hai rimborsato?",describeWhatHappened:"Descrivi cosa è successo",amount:"Importo IVA inclusa",whoFrom:"Da chi?",whoTo:"A chi?",paidNow:"Pagato ora",willPayLater:"Pagherà dopo",receivedNow:"Ricevuto ora",willReceiveLater:"Riceverà dopo",paymentMethod:"Metodo di pagamento",analyzingTransaction:"Analisi della transazione...",weThinkCorrect:"Pensiamo che sia corretto",whatHappensAccounting:"Ecco cosa succede nella tua contabilità ",youReceive:"Ricevi",youGive:"Dai",showAccountingDetails:"Mostra dettagli contabili",hideAccountingDetails:"Nascondi dettagli contabili",saveAndRegister:"Salva e registra",transactionSaved:"Transazione salvata con successo",goodToKnow:"Buono a sapersi",learningSale:"Quando vendi qualcosa, aumenti i tuoi ricavi e ricevi denaro direttamente o crei un credito.",learningPurchase:"Quando compri qualcosa, aumenti ciò che possiedi (attività o spese) e riduci il tuo denaro o crei un debito.",learningReceived:"Quando ricevi denaro, il tuo saldo bancario sale e un credito viene saldato.",learningPaid:"Quando paghi qualcosa, il tuo saldo bancario scende e un debito viene saldato.",learningRefund:"Quando rimborsi, i tuoi ricavi diminuiscono e il denaro esce dal tuo conto.",learningOther:"Ogni transazione ha due lati: qualcosa che ricevi e qualcosa che dai.",aiUnsure:"Non siamo del tutto sicuri. à corretto?",tryAlternative:"Prova alternativa",expenseVoucher:"Voucher di spesa",back:"Indietro",next:"Avanti",dropReceiptHere:"Trascina qui la ricevuta o la fattura",dropReceiptDesc:"Carica un'immagine o un PDF â l'IA leggerà e compilerà il modulo",uploadingDocument:"Caricamento documento...",analyzingDocument:"L'IA sta leggendo il tuo documento...",documentAnalyzed:"Documento analizzato â controlla i dettagli",uploadFailed:"Caricamento fallito",attachedDocuments:"documento/i allegato/i",orChooseManually:"oppure scegli manualmente",catCurrentAssets:"Attività correnti",catFixedAssets:"Immobilizzazioni",catCurrentLiabilities:"Passività correnti",catLongTermLiabilities:"Passività a lungo termine",catEquity:"Patrimonio netto",catOperatingRevenue:"Ricavi operativi",catOtherRevenue:"Altri ricavi",catCostOfGoods:"Costo del venduto",catPersonnelCosts:"Costi del personale",catOperatingExpenses:"Spese operative",catFinancialItems:"Voci finanziarie",catTax:"Imposte",catIntangibleAssets:"Attività immateriali",catFinancialAssets:"Attività finanziarie",catFinancialIncome:"Proventi finanziari",catFinancialExpense:"Oneri finanziari",catPersonnelCost:"Costi del personale",catTaxLiability:"Debiti tributari",catResult:"Risultato",typeAsset:"Attività ",typeLiability:"Passività ",typeEquity:"Patrimonio netto",typeRevenue:"Ricavo",typeExpense:"Costo",arLedger:"Partitario clienti",arLedgerDesc:"Saldi clienti e fatture aperte",apLedger:"Partitario fornitori",apLedgerDesc:"Saldi fornitori e fatture in sospeso",arOriginal:"Originale",arOpenAmount:"Aperto",arTotal:"Totale crediti",apTotal:"Totale debiti",arNoItems:"Nessun credito trovato",apNoItems:"Nessun debito trovato",accountingAndVat:"Contabilità e IVA",revenueAccount:"Conto ricavi",prepaymentAccount:"Conto anticipi",recognitionRule:"Riconoscimento dei ricavi",onEventCompletion:"Al completamento dell'attività ",vatSettingInfo:"Questa impostazione IVA verrà utilizzata per la vendita di questa attività ",priceIncludesVat:"Prezzo IVA inclusa",exempt:"Esente",outsideScope:"Fuori campo",nameNb:"Nome (norvegese)",nameEn:"Nome (inglese)",isExempt:"Esente da IVA",isOutsideScope:"Fuori campo IVA",priceIncVatDefault:"Prezzo IVA inclusa per impostazione predefinita",supplierInvoiceDetected:"Fattura fornitore rilevata",supplier:"Fornitore",invoiceNo:"N. fattura",invoiceDate:"Data fattura",dueDate:"Data scadenza",bankAccount:"Conto bancario",kidNumber:"KID",verifySupplierFields:"Verificare i dettagli estratti dalla fattura",accountDescription:"Descrizione",s
478afTMappingCode:"Codice SAF-T",catReceivable:"Credito",catBank:"Banca",catVat:"IVA",catDeferred:"Ricavi differiti",catProvision:"Accantonamento",catRevenue:"Ricavo",catCostOfSales:"Costo del venduto",catOperating:"Operativo",catPayable:"Debito",accountingMode:"Modalità contabile",modeNone:"Nessuna",modeInternal:"Interno",modeExternal:"Sistema esterno",modeNoneDesc:"La contabilità è disattivata. Nessun monitoraggio finanziario o reportistica.",modeInternalDesc:"Usa il modulo di contabilità integrato per il monitoraggio dei ricavi, IVA e reportistica.",modeExternalDesc:"Collega un sistema di contabilità esterno per la contabilità automatica.",externalSystemSection:"Sistema esterno",externalSystemSelectedDesc:"Salva le impostazioni, poi configura la sincronizzazione in Impostazioni â Pagamenti e contabilità .",advanceAccount:"Conto anticipi",advanceAccountDesc:"Conto patrimoniale per anticipi clienti (ricavi differiti)",giftCardAccount:"Conto buoni regalo",giftCardAccountDesc:"Conto patrimoniale per passività buoni regalo",postingFrequency:"Frequenza di registrazione",postingFrequencyDesc:"Frequenza di aggregazione delle registrazioni per il trasferimento",freqDaily:"Giornaliero",freqWeekly:"Settimanale",freqMonthly:"Mensile",settlementAccounts:"Conti di regolamento",settlementAccountsDesc:"Associa i provider di pagamento ai conti di compensazione",paymentProvider:"Provider di pagamento",glAccount:"Conto contabile",noSettlementAccounts:"Nessun conto di regolamento configurato",addSettlementAccount:"Aggiungi conto",providerStripe:"Stripe",providerNexi:"Nexi (terminale carte)",providerVipps:"Vipps",providerGYG:"GetYourGuide",providerViator:"Viator",providerGiftCard:"Buono regalo",providerManual:"Manuale / contanti",providerDistributor:"Distributore"},jb={en:wb,no:Sb,de:Cb,es:Nb,fr:Ab,it:Pb},Tb={en:{title:"Activity Categories",newCategory:"New Category",editCategory:"Edit Category",name:"Name",description:"Description",active:"Active",archived:"Archived",all:"All",status:"Status",activitiesCount:"Activities",searchCategories:"Search categoriesâ¦",noCategories:"No activity categories yet",noResults:"No categories match your search",archive:"Archive",restore:"Restore",archiveConfirm:"Archive this category? Activities using it will keep the reference.",categoryRequired:"Category name is required",selectCategory:"Select category",noCategory:"No category",inheritedSettings:"Inherited from category",defaultForSellable:"Default for new sellable activities"},no:{title:"Aktivitetskategorier",newCategory:"Ny kategori",editCategory:"Rediger kategori",name:"Navn",description:"Beskrivelse",active:"Aktiv",archived:"Arkivert",all:"Alle",status:"Status",activitiesCount:"Aktiviteter",searchCategories:"Søk i kategorierâ¦",noCategories:"Ingen aktivitetskategorier ennÃ¥",noResults:"Ingen kategorier matcher søket",archive:"Arkiver",restore:"Gjenopprett",archiveConfirm:"Arkivere denne kategorien? Aktiviteter som bruker den beholder referansen.",categoryRequired:"Kategorinavn er pÃ¥krevd",selectCategory:"Velg kategori",noCategory:"Ingen kategori",inheritedSettings:"Arvet fra kategori",defaultForSellable:"Standard ved nye salgbare aktiviteter"},de:{title:"Aktivitätskategorien",newCategory:"Neue Kategorie",editCategory:"Kategorie bearbeiten",name:"Name",description:"Beschreibung",active:"Aktiv",archived:"Archiviert",all:"Alle",status:"Status",activitiesCount:"Aktivitäten",searchCategories:"Kategorien suchenâ¦",noCategories:"Noch keine Aktivitätskategorien",noResults:"Keine Kategorien gefunden",archive:"Archivieren",restore:"Wiederherstellen",archiveConfirm:"Diese Kategorie archivieren? Aktivitäten behalten die Referenz.",categoryRequired:"Kategoriename ist erforderlich",selectCategory:"Kategorie wählen",noCategory:"Keine Kategorie",inheritedSettings:"Ãbernommen von Kategorie",defaultForSellable:"Standard für neue verkaufbare Aktivitäten"},es:{title:"CategorÃas de actividad",newCategory:"Nueva categorÃa",editCategory:"Editar categorÃa",name:"Nombre",description:"Descripción",active:"Activa",archived:"Archivada",all:"Todas",status:"Estado",activitiesCount:"Actividades",searchCategories:"Buscar categorÃasâ¦",noCategories:"Aún no hay categorÃas de actividad",noResults:"Ninguna categorÃa coincide",archive:"Archivar",restore:"Restaurar",archiveConfirm:"¿Archivar esta categorÃa? Las actividades mantendrán la referencia.",categoryRequired:"El nombre de categorÃa es obligatorio",selectCategory:"Seleccionar categorÃa",noCategory:"Sin categorÃa",inheritedSettings:"Heredado de categorÃa",defaultForSellable:"Predeterminada para nuevas actividades vendibles"},fr:{title:"Catégories d'activité",newCategory:"Nouvelle catégorie",editCategory:"Modifier la catégorie",name:"Nom",description:"Description",active:"Active",archived:"Archivée",all:"Toutes",status:"Statut",activitiesCount:"Activités",searchCategories:"Rechercher des catégoriesâ¦",noCategories:"Aucune catégorie d'activité",noResults:"Aucune catégorie trouvée",archive:"Archiver",restore:"Restaurer",archiveConfirm:"Archiver cette catégorie ? Les activités garderont la référence.",categoryRequired:"Le nom de catégorie est requis",selectCategory:"Sélectionner une catégorie",noCategory:"Aucune catégorie",inheritedSettings:"Hérité de la catégorie",defaultForSellable:"Par défaut pour les nouvelles activités vendables"},it:{title:"Categorie di attività ",newCategory:"Nuova categoria",editCategory:"Modifica categoria",name:"Nome",description:"Descrizione",active:"Attiva",archived:"Archiviata",all:"Tutte",status:"Stato",activitiesCount:"Attività ",searchCategories:"Cerca categorieâ¦",noCategories:"Nessuna categoria di attività ",noResults:"Nessuna categoria trovata",archive:"Archivia",restore:"Ripristina",archiveConfirm:"Archiviare questa categoria? Le attività manterranno il riferimento.",categoryRequired:"Il nome della categoria è obbligatorio",selectCategory:"Seleziona categoria",noCategory:"Nessuna categoria",inheritedSettings:"Ereditato dalla categoria",defaultForSellable:"Predefinita per nuove attività vendibili"}},Db={title:"Income Profiles",newProfile:"New Income Profile",editProfile:"Edit Income Profile",name:"Name",mode:"Setup Type",single:"Single",split:"Split",composite:"Split",singleDesc:"All revenue to one VAT code and account",splitDesc:"Revenue split across multiple VAT codes and accounts",standardDesc:"Standard income profile",compositeDesc:"Split income profile",vatCode:"VAT Code",revenueAccount:"Revenue Account",assessment:"Assessment",assessmentHelp:"Provide a justification for why this income is split across multiple VAT treatments. This may be required for accounting and compliance.",assessmentRequired:"VAT assessment is required for split profiles",lines:"Allocation Lines",label:"Label",allocation:"Allocation %",addLine:"Add line",totalMustBe100:"Total allocation must equal 100%",
478nameRequired:"Profile name is required",vatCodeRequired:"VAT code is required",revenueAccountRequired:"Revenue account is required",linesRequired:"At least one allocation line is required",allFieldsRequired:"All line fields must be filled",preview:"Preview",previewBase:"Base amount",previewVat:"VAT",previewTotal:"Total incl. VAT",linesCount:"Lines",lastUpdated:"Updated",noProfiles:"No income profiles yet",noResults:"No profiles match your search",searchProfiles:"Search profilesâ¦",deleteConfirm:"Delete this income profile?",incomeProfile:"Income Profile",incomeProfileHelp:"Defines how revenue, VAT, and accounting are handled for activities.",noProfile:"No profile",profileSummary:"{percent}% {label} ({rate}% VAT)",vat:"VAT",more:"more",usedIn:"Used in {count} activities",notInUse:"Not in use",defaultForNew:"Default for new sellable activities"},_b={title:"Inntektsprofiler",newProfile:"Ny inntektsprofil",editProfile:"Rediger inntektsprofil",name:"Navn",mode:"Oppsetttype",single:"Enkel",split:"Splittet",composite:"Splittet",singleDesc:"All inntekt til én MVA-kode og konto",splitDesc:"Inntekt fordelt pÃ¥ flere MVA-koder og kontoer",standardDesc:"Standard inntektsprofil",compositeDesc:"Splittet inntektsprofil",vatCode:"MVA-kode",revenueAccount:"Inntektskonto",assessment:"Vurdering",assessmentHelp:"Gi en begrunnelse for hvorfor denne inntekten er fordelt pÃ¥ flere MVA-behandlinger. Dette kan kreves for regnskap og etterlevelse.",assessmentRequired:"MVA-vurdering er pÃ¥krevd for splittede profiler",lines:"Fordelingslinjer",label:"Betegnelse",allocation:"Fordeling %",addLine:"Legg til linje",totalMustBe100:"Total fordeling mÃ¥ være 100%",nameRequired:"Profilnavn er pÃ¥krevd",vatCodeRequired:"MVA-kode er pÃ¥krevd",revenueAccountRequired:"Inntektskonto er pÃ¥krevd",linesRequired:"Minst én fordelingslinje er pÃ¥krevd",allFieldsRequired:"Alle linjefelt mÃ¥ fylles ut",preview:"ForhÃ¥ndsvisning",previewBase:"Grunnbeløp",previewVat:"MVA",previewTotal:"Totalt inkl. MVA",linesCount:"Linjer",lastUpdated:"Oppdatert",noProfiles:"Ingen inntektsprofiler ennÃ¥",noResults:"Ingen profiler matcher søket",searchProfiles:"Søk profilerâ¦",deleteConfirm:"Slette denne inntektsprofilen?",incomeProfile:"Inntektsprofil",incomeProfileHelp:"Definerer hvordan inntekt, MVA og regnskap hÃ¥ndteres for aktiviteter.",noProfile:"Ingen profil",profileSummary:"{percent}% {label} ({rate}% MVA)",vat:"MVA",more:"flere",usedIn:"Brukes i {count} aktiviteter",notInUse:"Ikke i bruk",defaultForNew:"Standard for nye salgbare aktiviteter"},Eb={title:"Einkommensprofile",newProfile:"Neues Einkommensprofil",editProfile:"Einkommensprofil bearbeiten",name:"Name",mode:"Einrichtungstyp",single:"Einzeln",split:"Aufgeteilt",composite:"Aufgeteilt",singleDesc:"Alle Einnahmen an einen MwSt-Code und ein Konto",splitDesc:"Einnahmen auf mehrere MwSt-Codes und Konten aufgeteilt",standardDesc:"Standard-Einkommensprofil",compositeDesc:"Aufgeteiltes Einkommensprofil",vatCode:"MwSt-Code",revenueAccount:"Ertragskonto",assessment:"Bewertung",assessmentHelp:"Begründen Sie, warum diese Einnahmen auf mehrere MwSt-Behandlungen aufgeteilt werden. Dies kann für die Buchhaltung und Compliance erforderlich sein.",assessmentRequired:"MwSt-Bewertung ist für aufgeteilte Profile erforderlich",lines:"Zuordnungszeilen",label:"Bezeichnung",allocation:"Zuordnung %",addLine:"Zeile hinzufügen",totalMustBe100:"Die Gesamtzuordnung muss 100% betragen",nameRequired:"Profilname ist erforderlich",vatCodeRequired:"MwSt-Code ist erforderlich",revenueAccountRequired:"Ertragskonto ist erforderlich",linesRequired:"Mindestens eine Zuordnungszeile ist erforderlich",allFieldsRequired:"Alle Zeilenfelder müssen ausgefüllt werden",preview:"Vorschau",previewBase:"Grundbetrag",previewVat:"MwSt",previewTotal:"Gesamt inkl. MwSt",linesCount:"Zeilen",lastUpdated:"Aktualisiert",noProfiles:"Noch keine Einkommensprofile",noResults:"Keine Profile entsprechen Ihrer Suche",searchProfiles:"Profile suchenâ¦",deleteConfirm:"Dieses Einkommensprofil löschen?",incomeProfile:"Einkommensprofil",incomeProfileHelp:"Definiert wie Einnahmen, MwSt und Buchhaltung für Aktivitäten gehandhabt werden.",noProfile:"Kein Profil",profileSummary:"{percent}% {label} ({rate}% MwSt)",vat:"MwSt",more:"weitere",usedIn:"Verwendet in {count} Aktivitäten",notInUse:"Nicht in Verwendung",defaultForNew:"Standard für neue verkaufbare Aktivitäten"},Rb={title:"Perfiles de Ingresos",newProfile:"Nuevo perfil de ingresos",editProfile:"Editar perfil de ingresos",name:"Nombre",mode:"Tipo de configuración",single:"Ãnico",split:"Dividido",composite:"Dividido",singleDesc:"Todos los ingresos a un código IVA y cuenta",splitDesc:"Ingresos divididos entre múltiples códigos IVA y cuentas",standardDesc:"Perfil de ingresos estándar",compositeDesc:"Perfil de ingresos dividido",vatCode:"Código IVA",revenueAccount:"Cuenta de ingresos",assessment:"Evaluación",assessmentHelp:"Proporcione una justificación de por qué estos ingresos se dividen entre múltiples tratamientos de IVA. Esto puede ser requerido para contabilidad y cumplimiento.",assessmentRequired:"La evaluación de IVA es requerida para perfiles divididos",lines:"LÃneas de asignación",label:"Etiqueta",allocation:"Asignación %",addLine:"Agregar lÃnea",totalMustBe100:"La asignación total debe ser 100%",
478nameRequired:"El nombre del perfil es requerido",vatCodeRequired:"El código IVA es requerido",revenueAccountRequired:"La cuenta de ingresos es requerida",linesRequired:"Se requiere al menos una lÃnea de asignación",allFieldsRequired:"Todos los campos de lÃnea deben completarse",preview:"Vista previa",previewBase:"Monto base",previewVat:"IVA",previewTotal:"Total incl. IVA",linesCount:"LÃneas",lastUpdated:"Actualizado",noProfiles:"No hay perfiles de ingresos aún",noResults:"No hay perfiles que coincidan con su búsqueda",searchProfiles:"Buscar perfilesâ¦",deleteConfirm:"¿Eliminar este perfil de ingresos?",incomeProfile:"Perfil de ingresos",incomeProfileHelp:"Define cómo se manejan los ingresos, IVA y contabilidad para las actividades.",noProfile:"Sin perfil",profileSummary:"{percent}% {label} ({rate}% IVA)",vat:"IVA",more:"más",usedIn:"Usado en {count} actividades",notInUse:"Sin uso",defaultForNew:"Predeterminado para nuevas actividades vendibles"},zb={title:"Profils de Revenus",newProfile:"Nouveau profil de revenus",editProfile:"Modifier le profil de revenus",name:"Nom",mode:"Type de configuration",single:"Unique",split:"Divisé",composite:"Divisé",singleDesc:"Tous les revenus vers un code TVA et un compte",splitDesc:"Revenus répartis entre plusieurs codes TVA et comptes",standardDesc:"Profil de revenus standard",compositeDesc:"Profil de revenus divisé",vatCode:"Code TVA",revenueAccount:"Compte de revenus",assessment:"Ãvaluation",assessmentHelp:"Fournissez une justification expliquant pourquoi ce revenu est réparti entre plusieurs traitements TVA. Cela peut être requis pour la comptabilité et la conformité.",assessmentRequired:"L'évaluation TVA est requise pour les profils divisés",lines:"Lignes d'allocation",label:"Libellé",allocation:"Allocation %",addLine:"Ajouter une ligne",totalMustBe100:"L'allocation totale doit être de 100%",nameRequired:"Le nom du profil est requis",vatCodeRequired:"Le code TVA est requis",revenueAccountRequired:"Le compte de revenus est requis",linesRequired:"Au moins une ligne d'allocation est requise",allFieldsRequired:"Tous les champs de ligne doivent être remplis",preview:"Aperçu",previewBase:"Montant de base",previewVat:"TVA",previewTotal:"Total TTC",linesCount:"Lignes",lastUpdated:"Mis à jour",noProfiles:"Aucun profil de revenus",noResults:"Aucun profil ne correspond à votre recherche",searchProfiles:"Rechercher des profilsâ¦",deleteConfirm:"Supprimer ce profil de revenus ?",incomeProfile:"Profil de revenus",incomeProfileHelp:"Définit comment les revenus, la TVA et la comptabilité sont gérés pour les activités.",noProfile:"Aucun profil",profileSummary:"{percent}% {label} ({rate}% TVA)",vat:"TVA",more:"de plus",usedIn:"Utilisé dans {count} activités",notInUse:"Non utilisé",defaultForNew:"Par défaut pour les nouvelles activités vendables"},Mb={title:"Profili di Reddito",newProfile:"Nuovo profilo di reddito",editProfile:"Modifica profilo di reddito",name:"Nome",mode:"Tipo di configurazione",single:"Singolo",split:"Diviso",composite:"Diviso",singleDesc:"Tutti i ricavi a un codice IVA e un conto",splitDesc:"Ricavi divisi tra più codici IVA e conti",standardDesc:"Profilo di reddito standard",compositeDesc:"Profilo di reddito diviso",vatCode:"Codice IVA",revenueAccount:"Conto ricavi",assessment:"Valutazione",assessmentHelp:"Fornisci una giustificazione per cui questo reddito è suddiviso tra più trattamenti IVA. Questo può essere richiesto per la contabilità e la conformità .",assessmentRequired:"La valutazione IVA è richiesta per i profili divisi",lines:"Linee di allocazione",label:"Etichetta",allocation:"Allocazione %",addLine:"Aggiungi riga",totalMustBe100:"L'allocazione totale deve essere 100%",nameRequired:"Il nome del profilo è obbligatorio",vatCodeRequired:"Il codice IVA è obbligatorio",revenueAccountRequired:"Il conto ricavi è obbligatorio",linesRequired:"à richiesta almeno una riga di allocazione",allFieldsRequired:"Tutti i campi riga devono essere compilati",preview:"Anteprima",previewBase:"Importo base",previewVat:"IVA",previewTotal:"Totale IVA inclusa",linesCount:"Righe",lastUpdated:"Aggiornato",noProfiles:"Nessun profilo di reddito",noResults:"Nessun profilo corrisponde alla ricerca",searchProfiles:"Cerca profiliâ¦",deleteConfirm:"Eliminare questo profilo di reddito?",incomeProfile:"Profilo di reddito",incomeProfileHelp:"Definisce come vengono gestiti ricavi, IVA e contabilità per le attività .",noProfile:"Nessun profilo",profileSummary:"{percent}% {label} ({rate}% IVA)",vat:"IVA",more:"altri",usedIn:"Usato in {count} attività ",notInUse:"Non in uso",defaultForNew:"Predefinito per nuove attività vendibili"},Ib={en:Db,no:_b,de:Eb,es:Rb,fr:zb,it:Mb},Lb={title:"Embed booking widget",descriptionPrefix:"Copy and paste these snippets to embed:",popupTab:"Floating popup",inlineTab:"Inline",headTab:"Setup (head)",popupDescription:"A floating pill at the bottom of the page that expands into a booking panel when clicked. Place this once per page where you want the popup available:",popupButtonDescription:"Optional â open the same popup from any custom button or link on the page:",inlineDescription:"Renders the full booking widget inline at the position of this tag:",headDescription:"Place this once in the <head> of every page that uses Salesmate widgets. It loads the embed script and configures language, terms and privacy URLs:",requiresHead:"Requires the setup snippet (Setup tab) to be present in the page <head>.",openBookingButton:"Book now",embedCodeAction:"Embed code",copySuccess:"Widget code
478copied to clipboard",copyFailed:"Could not copy. Press Ctrl/Cmd+C to copy manually.",landingWidgetTitle:"Landing-page booking widget",landingWidgetDescription:"Embed this activity on your own website using the snippets below.",standaloneUrlTitle:"Standalone URL (booking screen)",standaloneUrlDescription:"Direct URLs and iframe code for kiosks, info screens, and standalone tabs.",enableLandingWidget:"Enable landing-page widget"},Fb={title:"Bygg inn bookingwidget",descriptionPrefix:"Kopier og lim inn disse kodebitene for Ã¥ bygge inn:",popupTab:"Flytende popup",inlineTab:"Inline",headTab:"Oppsett (head)",popupDescription:"En flytende pille nederst pÃ¥ siden som ekspanderer til et bookingpanel nÃ¥r den klikkes. Plasser denne én gang per side der popupen skal være tilgjengelig:",popupButtonDescription:"Valgfritt â Ã¥pne samme popup fra en hvilken som helst egen knapp eller lenke pÃ¥ siden:",inlineDescription:"Viser hele bookingwidgeten inline pÃ¥ plasseringen av denne taggen:",headDescription:"Plasser denne én gang i <head> pÃ¥ alle sider som bruker Salesmate-widgets. Den laster embed-skriptet og konfigurerer sprÃ¥k, vilkÃ¥r og personvern-URLer:",requiresHead:"Krever at oppsett-koden (Oppsett-fanen) er lagt inn i sidens <head>.",openBookingButton:"Bestill nÃ¥",embedCodeAction:"Embed-kode",copySuccess:"Widget-kode kopiert til utklippstavlen",copyFailed:"Kunne ikke kopiere. Trykk Ctrl/Cmd+C for Ã¥ kopiere manuelt.",landingWidgetTitle:"Bookingwidget for landingsside",landingWidgetDescription:"Bygg denne aktiviteten inn pÃ¥ din egen nettside med kodebitene nedenfor.",standaloneUrlTitle:"FrittstÃ¥ende URL (bookingskjerm)",standaloneUrlDescription:"Direkte URL og iframe-kode for kiosker, infoskjermer og egne faner.",enableLandingWidget:"Aktiver landingsside-widget"},Ob={title:"Buchungs-Widget einbetten",descriptionPrefix:"Kopieren Sie diese Snippets zum Einbetten:",popupTab:"Schwebendes Popup",inlineTab:"Inline",headTab:"Setup (Head)",popupDescription:"Eine schwebende Pille am unteren Seitenrand, die sich beim Klick zu einem Buchungspanel öffnet. Platzieren Sie dies einmal pro Seite, auf der das Popup verfügbar sein soll:",popupButtonDescription:"Optional â öffnen Sie dasselbe Popup über eine beliebige eigene Schaltfläche oder Link auf der Seite:",inlineDescription:"Rendert das vollständige Buchungs-Widget inline an der Position dieses Tags:",headDescription:"Platzieren Sie dies einmal im <head> jeder Seite, die Salesmate-Widgets verwendet. Es lädt das Embed-Skript und konfiguriert Sprache, AGB- und Datenschutz-URLs:",requiresHead:"Erfordert, dass das Setup-Snippet (Setup-Tab) im <head> der Seite vorhanden ist.",openBookingButton:"Jetzt buchen",embedCodeAction:"Embed-Code",copySuccess:"Widget-Code in die Zwischenablage kopiert",copyFailed:"Kopieren fehlgeschlagen. Drücken Sie Strg/Cmd+C, um manuell zu kopieren.",landingWidgetTitle:"Landingpage-Buchungs-Widget",landingWidgetDescription:"Betten Sie diese Aktivität mit den folgenden Snippets in Ihre eigene Website ein.",standaloneUrlTitle:"Eigenständige URL (Buchungsbildschirm)",standaloneUrlDescription:"Direkte URLs und iframe-Code für Kioske, Infobildschirme und separate Tabs.",enableLandingWidget:"Landingpage-Widget aktivieren"},Bb={title:"Insertar widget de reserva",descriptionPrefix:"Copia y pega estos fragmentos para insertar:",popupTab:"Popup flotante",inlineTab:"En lÃnea",headTab:"Configuración (head)",popupDescription:"Una pÃldora flotante en la parte inferior de la página que se expande a un panel de reserva al hacer clic. Coloca esto una vez por página donde quieras que el popup esté disponible:",popupButtonDescription:"Opcional â abre el mismo popup desde cualquier botón o enlace personalizado de la página:",inlineDescription:"Muestra el widget completo de reserva en lÃnea en la posición de esta etiqueta:",headDescription:"Coloca esto una vez en el <head> de cada página que use widgets de Salesmate. Carga el script y configura el idioma, los términos y las URLs de privacidad:",requiresHead:"Requiere que el fragmento de configuración (pestaña Configuración) esté presente en el <head> de la página.",openBookingButton:"Reservar ahora",embedCodeAction:"Código de inserción",copySuccess:"Código del widget copiado al portapapeles",copyFailed:"No se pudo copiar. Pulsa Ctrl/Cmd+C para copiar manualmente.",landingWidgetTitle:"Widget de reserva para landing page",landingWidgetDescription:"Inserta esta actividad en tu propio sitio web con los fragmentos de abajo.",standaloneUrlTitle:"URL independiente (pantalla de reserva)",standaloneUrlDescription:"URL directas y código iframe para kioscos, pantallas informativas y pestañas independientes.",enableLandingWidget:"Activar widget de landing page"},qb={title:"Intégrer le widget de réservation",descriptionPrefix:"Copiez et collez ces extraits pour intégrer :",popupTab:"Popup flottant",inlineTab:"En ligne",headTab:"Configuration (head)",popupDescription:"Une pastille flottante en bas de la page qui s'agrandit en panneau de réservation au clic. Placez ceci une fois par page où le popup doit être disponible :",popupButtonDescription:"Optionnel â ouvrez le même popup depuis n'importe quel bouton ou lien personnalisé de la page :",inlineDescription:"Affiche le widget de réservation complet en ligne à la position de cette balise :",headDescription:"Placez ceci une fois dans le <head> de chaque page utilisant les widgets Salesmate. Il charge le script d'intégration et configure la langue, les conditions et les URL de confidentialité :",requiresHead:"Nécessite que l'extrait de configuration (onglet Configuration) soit présent dans le <head>
478 de la page.",openBookingButton:"Réserver",embedCodeAction:"Code d'intégration",copySuccess:"Code du widget copié dans le presse-papiers",copyFailed:"Copie impossible. Appuyez sur Ctrl/Cmd+C pour copier manuellement.",landingWidgetTitle:"Widget de réservation pour landing page",landingWidgetDescription:"Intégrez cette activité sur votre propre site web avec les extraits ci-dessous.",standaloneUrlTitle:"URL autonome (écran de réservation)",standaloneUrlDescription:"URL directes et code iframe pour bornes, écrans d'information et onglets autonomes.",enableLandingWidget:"Activer le widget de landing page"},Vb={title:"Incorpora widget di prenotazione",descriptionPrefix:"Copia e incolla questi snippet per incorporare:",popupTab:"Popup fluttuante",inlineTab:"In linea",headTab:"Configurazione (head)",popupDescription:"Una pillola fluttuante in fondo alla pagina che si espande in un pannello di prenotazione al clic. Posizionalo una volta per pagina dove vuoi che il popup sia disponibile:",popupButtonDescription:"Opzionale â apri lo stesso popup da qualsiasi pulsante o link personalizzato sulla pagina:",inlineDescription:"Mostra il widget di prenotazione completo in linea nella posizione di questo tag:",headDescription:"Posizionalo una volta nell'<head> di ogni pagina che usa i widget Salesmate. Carica lo script e configura lingua, termini e URL della privacy:",requiresHead:"Richiede che lo snippet di configurazione (scheda Configurazione) sia presente nell'<head> della pagina.",openBookingButton:"Prenota ora",embedCodeAction:"Codice di incorporamento",copySuccess:"Codice widget copiato negli appunti",copyFailed:"Impossibile copiare. Premi Ctrl/Cmd+C per copiare manualmente.",landingWidgetTitle:"Widget di prenotazione per landing page",landingWidgetDescription:"Incorpora questa attività nel tuo sito web con gli snippet qui sotto.",standaloneUrlTitle:"URL autonomo (schermo di prenotazione)",standaloneUrlDescription:"URL dirette e codice iframe per chioschi, schermi informativi e schede autonome.",enableLandingWidget:"Attiva widget landing page"},Kb={en:Lb,no:Fb,de:Ob,es:Bb,fr:qb,it:Vb},Un=[{code:"en",name:"English",nativeName:"English",flag:Bs},{code:"no",name:"Norwegian",nativeName:"Norsk",flag:qs},{code:"de",name:"German",nativeName:"Deutsch",flag:Vs},{code:"es",name:"Spanish",nativeName:"Español",flag:Ks},{code:"fr",name:"French",nativeName:"Français",flag:Ws},{code:"it",name:"Italian",nativeName:"Italiano",flag:Us}],Wb={nav:wy,common:Sy,theme:Cy,activities:Ny,publishingContent:Ay,calendar:Py,event:jy,personnel:Ty,resources:Dy,resourceTypes:_y,blockings:Ey,competences:Ry,buffer:zy,requirements:My,tooltip:Iy,profile:Ly,leaves:Fy,recurring:Oy,pageTitles:By,contacts:qy,contactTimeline:Vy,resourcePlanner:Ky,customers:Wy,bookingScreens:Uy,companyProfile:Hy,companySettings:Gy,companyInbox:$y,createCompany:Yy,projects:Qy,chat:Jy,sales:Zy,bookingsPage:Xy,manualBooking:eb,dashboard:tb,giftCards:nb,notes:ab,media:ib,pricing:rb,recurrenceBuilder:ob,seriesDetail:sb,participants:lb,promoCodes:cb,paymentLogs:db,paymentTransactions:ub,login:mb,partners:pb,landing:gb,cookies:fb,invite:hb,myTrips:vb,myTripDrawer:yb,help:bb,help2:xb,distributors:kb,accounting:jb,activityCategories:Tb,incomeProfiles:Ib,embed:Kb},Ub={saltstraumen:da.saltstraumen,dashboardAI:da.dashboardAI,activityPerformance:da.activityPerformance,guideDashboard:da.guideDashboard,widget:da.widget,seriesList:da.seriesList},Hb={...Wb,...Ub};function ua(e){return Object.fromEntries(Object.entries(Hb).map(([n,a])=>[n,a[e]]))}const Cu={en:ua("en"),no:ua("no"),de:ua("de"),es:ua("es"),fr:ua("fr"),it:ua("it")},Gb="https://ofonhoptrjclgvirmyal.supabase.co",$b="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9mb25ob3B0cmpjbGd2aXJteWFsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzA2NDA3NjQsImV4cCI6MjA4NjIxNjc2NH0.s4vViiLRdqUj1wP_rzNb2PXXklA3XQn-mLCha9_Pg4w",T=Hg(Gb,$b,{auth:{storage:localStorage,persistSession:!0,autoRefreshToken:!0}}),YD=Object.freeze(Object.defineProperty({__proto__:null,supabase:T},Symbol.toStringTag,{value:"Module"})),Nu=d.createContext(void 0),fo="app-language";function uc({children:e}
478){const n=["en","no","de","es","fr","it"],[a,i]=d.useState(()=>{if(typeof window<"u"){const s=localStorage.getItem(fo);if(s&&n.includes(s))return s}return"en"});d.useEffect(()=>{T.auth.getSession().then(({data:{session:s}})=>{s!=null&&s.user&&T.from("profiles").select("language").eq("id",s.user.id).single().then(({data:c})=>{c!=null&&c.language&&n.includes(c.language)&&(i(c.language),localStorage.setItem(fo,c.language))})})},[]),d.useEffect(()=>{localStorage.setItem(fo,a),document.documentElement.lang=a},[a]);const r=d.useCallback(async s=>{i(s);const{data:{session:c}}=await T.auth.getSession();c!=null&&c.user&&await T.from("profiles").update({language:s}).eq("id",c.user.id)},[]),o=Cu[a],l=Un.find(s=>s.code===a)||Un[0];return t.jsx(Nu.Provider,{value:{language:a,setLanguage:r,t:o,languages:Un,currentLanguage:l},children:e})}const Yb={language:"en",setLanguage:()=>{},t:Cu.en,languages:Un,currentLanguage:Un[0]};function ke(){return d.useContext(Nu)??Yb}const Au=d.createContext(void 0);function Qb({children:e}){const[n,a]=d.useState(null),[i,r]=d.useState(null),[o,l]=d.useState(!0);d.useEffect(()=>{const{data:{subscription:c}}=T.auth.onAuthStateChange(async(u,m)=>{a(m),m!=null&&m.user?setTimeout(async()=>{const{data:g}=await T.from("profiles").select("id, display_name, avatar_url, theme, language").eq("id",m.user.id).single();r(g)},0):r(null),l(!1)});return T.auth.getSession().then(({data:{session:u}})=>{a(u),u!=null&&u.user&&T.from("profiles").select("id, display_name, avatar_url, theme, language").eq("id",u.user.id).single().then(({data:m})=>r(m)),l(!1)}),()=>c.unsubscribe()},[]);const s=async()=>{await T.auth.signOut(),a(null),r(null)};return t.jsx(Au.Provider,{value:{session:n,user:(n==null?void 0:n.user)??null,profile:i,loading:o,signOut:s},children:e})}function Rn(){const e=d.useContext(Au);if(!e)throw new Error("useAuth must be used within AuthProvider");return e}const Pu=d.createContext(void 0),Hi="selected-company-id";function Jb({children:e}){const{user:n}=Rn(),[a,i]=d.useState([]),[r,o]=d.useState(()=>typeof window<"u"?localStorage.getItem(Hi):null),[l,s]=d.useState(null),[c,u]=d.useState(!1),[m,g]=d.useState(0),f=n?l!==n.id:!1,p=d.useCallback(async(x,S)=>{var q;u(!1);const[k,C]=await Promise.all([T.from("company_members").select("id, company_id, role, companies(name, logo_path, primary_language, default_currency, accounting_enabled, accounting_system)").eq("user_id",x),T.from("profiles").select("selected_company_id").eq("id",x).single()]);if(S.current)return;if(k.error){console.error("Failed to fetch memberships:",k.error),u(!0);return}const A=(k.data||[]).map(P=>{var D,z,F,R,E,L;return{companyId:P.company_id,companyName:((D=P.companies)==null?void 0:D.name)??"Unknown",role:P.role,memberId:P.id,logoPath:((z=P.companies)==null?void 0:z.logo_path)??null,primaryLanguage:((F=P.companies)==null?void 0:F.primary_language)??"en",defaultCurrency:((R=P.companies)==null?void 0:R.default_currency)??"NOK",accountingEnabled:((E=P.companies)==null?void 0:E.accounting_enabled)??!1,accountingSystem:((L=P.companies)==null?void 0:L.accounting_system)??null}});if(i(A),A.length>0){const P=(q=C.data)==null?void 0:q.selected_company_id,D=localStorage.getItem(Hi),z=P||D,F=z?A.find(E=>E.companyId===z):null,R=F?F.companyId:A[0].companyId;o(R),localStorage.setItem(Hi,R)}s(x)},[]),[h,b]=d.useState(0);d.useEffect(()=>{if(!n){i([]),s(null),u(!1),b(0);return}const x={current:!1};return p(n.id,x),()=>{x.current=!0}},[n,m,h,p]),d.useEffect(()=>{if(!c||h>=3)return;const x=setTimeout(()=>b(S=>S+1),1e3*(h+1));return()=>clearTimeout(x)},[c,h]);const y=d.useCallback(()=>{g(x=>x+1)},[]),v=d.useCallback(x=>{o(x),localStorage.setItem(Hi,x),n&&T.from("profiles").update({selected_company_id:x}).eq("id",n.id).then(({error:S})=>{S&&console.error("Failed to persist selected company:",S)})},[n]),w=a.find(x=>x.companyId===r)??a[0]??null;return t.jsx(Pu.Provider,{value:{memberships:a,currentMembership:w,setCurrentCompanyId:v,refreshMemberships:y,loading:f},children:e})}function he(){const e=d.useContext(Pu);if(!e)throw new Error("useCompany must be used within CompanyProvider");return e}function Zb(){const{profile:e}=Rn(),{setTheme:n,resolvedTheme:a}=hu(),i=typeof window<"u"&&window.location.pathname.startsWith("/embed/widget-minimal/");return d.useEffect(()=>{i||e!=null&&e.theme&&n(e.theme)},[i,e==null?void 0:e.theme,n]),d.useEffect(()=>{var o;if(i){const l=document.documentElement;l.classList.remove("dark"),l.style.colorScheme="light",l.style.backgroundColor="transparent",document.body.style.backgroundColor="transparent",(o=document.getElementById("root"))==null||o.style.setProperty("background-color","transparent");const s=Array.from(document.querySelectorAll('meta[name="theme-color"]')),[c]=s,u=c??document.createElement("meta");c||(u.setAttribute("name","theme-color"),document.head.appendChild(u)),u.setAttribute("content","#ffffff"),u.removeAttribute("media"),s.slice(1).forEac
478h(m=>m.remove());return}const r=window.requestAnimationFrame(()=>{var p;const l=document.documentElement,s=getComputedStyle(l).getPropertyValue("--surface-app").trim(),c=l.classList.contains("dark")?"#16181d":"#f5f6f8",u=Xb(s,c);document.documentElement.style.backgroundColor=u,document.body.style.backgroundColor=u,(p=document.getElementById("root"))==null||p.style.setProperty("background-color",u);const m=Array.from(document.querySelectorAll('meta[name="theme-color"]')),[g]=m,f=g??document.createElement("meta");g||(f.setAttribute("name","theme-color"),document.head.appendChild(f)),f.setAttribute("content",u),f.removeAttribute("media"),m.slice(1).forEach(h=>h.remove())});return()=>window.cancelAnimationFrame(r)},[i,a]),null}function Xb(e,n){const a=e.match(/-?\d*\.?\d+/g);if(!a||a.length<3)return n;const i=(Number(a[0])%360+360)%360,r=Number(a[1])/100,o=Number(a[2])/100,l=(1-Math.abs(2*o-1))*r,s=l*(1-Math.abs(i/60%2-1)),c=o-l/2;let u=0,m=0,g=0;i<60?(u=l,m=s,g=0):i<120?(u=s,m=l,g=0):i<180?(u=0,m=l,g=s):i<240?(u=0,m=s,g=l):i<300?(u=s,m=0,g=l):(u=l,m=0,g=s);const f=p=>Math.round((p+c)*255).toString(16).padStart(2,"0");return`#${f(u)}${f(m)}${f(g)}`}class ho extends d.Component{constructor(){super(...arguments);rn(this,"state",{hasError:!1});rn(this,"handleReload",()=>{this.setState({hasError:!1,error:void 0}),window.location.reload()})}static getDerivedStateFromError(a){return{hasError:!0,error:a}}componentDidCatch(a){}render(){return this.state.hasError?this.props.fallback?this.props.fallback:t.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background text-foreground p-6",children:t.jsxs("div",{className:"max-w-md text-center space-y-4",children:[t.jsx("h1",{className:"text-2xl font-semibold",children:"Noe gikk galt"}),t.jsx("p",{className:"text-sm text-muted-foreground",children:"Vi kunne ikke laste denne siden. Prøv å laste på nytt."}),t.jsx("button",{type:"button",onClick:this.handleReload,className:"inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground px-6 py-2.5 text-sm font-medium hover:opacity-90 transition-opacity",children:"Last på nytt"})]})}):this.props.children}}const ex="modulepreload",tx=function(e){return"/"+e},mc={},fe=function(n,a,i){let r=Promise.resolve();if(a&&a.length>0){document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),s=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));r=Promise.allSettled(a.map(c=>{if(c=tx(c),c in mc)return;mc[c]=!0;const u=c.endsWith(".css"),m=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${m}`))return;const g=document.createElement("link");if(g.rel=u?"stylesheet":ex,u||(g.as="script"),g.crossOrigin="",g.href=c,s&&g.setAttribute("nonce",s),document.head.appendChild(g),u)return new Promise((f,p)=>{g.addEventListener("load",f),g.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(l){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=l,window.dispatchEvent(s),!s.defaultPrevented)throw l}return r.then(l=>{for(const s of l||[])s.status==="rejected"&&o(s.reason);return n().catch(o)})},bn="https://salesmate.net";function ju({title:e,description:n,canonical:a,image:i="https://salesmate.net/favicon.png",type:r="website",lang:o="en",jsonLd:l,noindex:s=!1}){const c=a?a.startsWith("http")?a:`${bn}${a}`:typeof window<"u"?window.location.href:bn,u=e.length>60?e.slice(0,57)+"...":e,m=n.length>160?n.slice(0,157)+"...":n;return t.jsxs(hy,{children:[t.jsx("html",{lang:o}),t.jsx("title",{children:u}),t.jsx("meta",{name:"description",content:m}),t.jsx("link",{rel:"canonical",href:c}),s&&t.jsx("meta",{name:"robots",content:"noindex,nofollow"}),t.jsx("meta",{property:"og:title",content:u}),t.jsx("meta",{property:"og:description",content:m}),t.jsx("meta",{property:"og:type",content:r}),t.jsx("meta",{property:"og:url",content:c}),t.jsx("meta",{property:"og:image",content:i}),t.jsx("meta",{property:"og:site_name",content:"Salesmate"}),t.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),t.jsx("meta",{name:"twitter:title",content:u}),t.jsx("meta",{name:"twitter:description",content:m}),t.jsx("meta",{name:"twitter:image",content:i}),t.jsx("link",{rel:"alternate",hrefLang:"en",href:`${bn}/`}),t.jsx("link",{rel:"alternate",hrefLang:"no",href:`${bn}/`}),t.jsx("link",{rel:"alternate",hrefLang:"de",href:`${bn}/`}),t.jsx("link",{rel:"alternate",hrefLang:"es",href:`${bn}/`}),t.jsx("link",{rel:"alternate",hrefLang:"fr",href:`${bn}/`}),t.jsx("link",{rel:"alternate",hrefLang:"it",href:`${bn}/`}),t.jsx("link",{rel:"alternate",hrefLang:"x-default",href:`${bn}/`}),l&&t.jsx("script",{type:"application/ld+json",children:JSON.stringify(l)})]})}const Ca="/assets/Salesmate_text-qifIVyc3.png",nx="/assets/white_icon_transparent_background-Cf_Qdvwf.png",ax="/assets/payment-cards-CnDpn4VZ.png",ix="/assets/Hero_enhanced-Db2bW1Ap.webp",rx="/assets/Dashboard-n5CFN-ot.webp",ox="/assets/Calendar-D7S7bGY2.webp",sx="/assets/Pipeline-Bt4I6NR2.webp",lx="/assets/TouchBookingScreen-DcF3vZLD.webp",Tu="sm-cookie-consent",cx={necessary:!0,analytics:!1,functional:!1};function dx(){try{const e=localStorage.getItem(Tu);return e?JSON.parse(e):null}catch{return null}}function ux(e){localStorage.setItem(Tu,JSON.stringify({...e,necessary:!0}))}function mx(){const{t:e}
478=ke(),n=e.cookies,[a,i]=d.useState(!1),[r,o]=d.useState(!1),[l,s]=d.useState(cx);d.useEffect(()=>{if(!dx()){const f=setTimeout(()=>i(!0),800);return()=>clearTimeout(f)}},[]);const c=d.useCallback(g=>{const f={...l,...g,necessary:!0};ux(f),i(!1)},[l]),u=d.useCallback(()=>c({analytics:!0,functional:!0}),[c]),m=d.useCallback(()=>c({analytics:!1,functional:!1}),[c]);return a?t.jsx(en,{children:t.jsx(rt.div,{initial:{opacity:0,y:40},animate:{opacity:1,y:0},exit:{opacity:0,y:40},transition:{duration:.4,ease:[.25,.1,.25,1]},className:"fixed bottom-0 inset-x-0 z-[100] p-4 md:p-6",children:t.jsx("div",{className:"max-w-lg mx-auto md:mx-0 md:ml-auto bg-[#14161c] border border-white/[0.08] rounded-2xl shadow-2xl shadow-black/40 overflow-hidden",children:t.jsxs("div",{className:"p-5 md:p-6",children:[t.jsxs("div",{className:"flex items-center gap-2.5 mb-3",children:[t.jsx($l,{className:"h-4 w-4 text-white/50 shrink-0"}),t.jsx("h3",{className:"text-[15px] font-semibold text-white/90",children:n.bannerTitle})]}),t.jsx("p",{className:"text-[13px] leading-relaxed text-white/50 mb-1.5",children:n.bannerText}),t.jsx(li,{to:"/cookies",className:"text-[12px] text-white/30 hover:text-white/60 transition-colors underline underline-offset-2",children:n.readMore}),t.jsx(en,{children:r&&t.jsx(rt.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.25},className:"overflow-hidden",children:t.jsxs("div",{className:"mt-5 space-y-3",children:[t.jsx(vo,{icon:t.jsx($l,{className:"h-3.5 w-3.5"}),label:n.necessary,desc:n.necessaryDesc,checked:!0,disabled:!0}),t.jsx(vo,{icon:t.jsx(Jd,{className:"h-3.5 w-3.5"}),label:n.analytics,desc:n.analyticsDesc,checked:l.analytics,onChange:g=>s(f=>({...f,analytics:g}))}),t.jsx(vo,{icon:t.jsx(dh,{className:"h-3.5 w-3.5"}),label:n.functional,desc:n.functionalDesc,checked:l.functional,onChange:g=>s(f=>({...f,functional:g}))})]})})}),t.jsxs("div",{className:"mt-5 flex flex-wrap gap-2",children:[t.jsx("button",{onClick:u,className:"h-9 px-4 rounded-lg bg-white text-[#0a0c10] text-[13px] font-semibold hover:bg-white/90 transition-colors",children:n.acceptAll}),t.jsx("button",{onClick:m,className:"h-9 px-4 rounded-lg bg-white/[0.06] text-white/70 text-[13px] font-medium hover:bg-white/[0.1] transition-colors border border-white/[0.08]",children:n.rejectOptional}),r?t.jsx("button",{onClick:()=>c(),className:"h-9 px-4 rounded-lg bg-white/[0.06] text-white/70 text-[13px] font-medium hover:bg-white/[0.1] transition-colors border border-white/[0.08]",children:n.savePreferences}):t.jsxs("button",{onClick:()=>o(!0),className:"h-9 px-4 rounded-lg bg-white/[0.06] text-white/70 text-[13px] font-medium hover:bg-white/[0.1] transition-colors border border-white/[0.08] flex items-center gap-1.5",children:[t.jsx(hh,{className:"h-3.5 w-3.5"}),n.customize]})]})]})})})}):null}function vo({icon:e,label:n,desc:a,checked:i,disabled:r,onChange:o}){return t.jsxs("label",{className:`flex items-start gap-3 p-3 rounded-xl border transition-colors ${i?"border-white/[0.1] bg-white/[0.03]":"border-white/[0.06] bg-transparent"} ${r?"cursor-default":"cursor-pointer hover:border-white/[0.12]"}`,children:[t.jsx("div",{className:"mt-0.5 text-white/40 shrink-0",children:e}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"text-[13px] font-medium text-white/80",children:n}),t.jsx("div",{className:"text-[12px] text-white/40 leading-relaxed mt-0.5",children:a})]}),t.jsxs("div",{className:"mt-0.5 shrink-0",children:[t.jsx("div",{className:`w-9 h-5 rounded-full relative transition-colors ${i?"bg-white/20":"bg-white/[0.06]"} ${r?"opacity-50":""}`,children:t.jsx("div",{className:`absolute top-0.5 w-4 h-4 rounded-full transition-all ${i?"left-[18px] bg-white":"left-0.5 bg-white/40"}`})}),t.jsx("input",{type:"checkbox",className:"sr-only",checked:i,disabled:r,onChange:l=>o==null?void 0:o(l.target.checked)})]})]})}function $t({children:e,className:n=""}){const a=d.useRef(null),i=Yg(a,{once:!0,margin:"-80px"});return t.jsx(rt.div,{ref:a,initial:{opacity:0,y:32},animate:i?{opacity:1,y:0}:{},transition:{duration:.7,ease:[.25,.1,.25,1]},className:n,children:e})}function Du(){const{t:e,language:n,setLanguage:a,currentLanguage:i}
478=ke(),r=e.landing,[o,l]=d.useState(!1),[s,c]=d.useState(!1),[u,m]=d.useState({name:"",company:"",email:"",website:""}),[g,f]=d.useState(!1),[p,h]=d.useState(!1);Jn();const b=d.useCallback(k=>{k.preventDefault(),h(!0),setTimeout(()=>{window.location.href="/login"},500)},[]);d.useEffect(()=>{const k=()=>l(window.scrollY>40);return window.addEventListener("scroll",k,{passive:!0}),()=>window.removeEventListener("scroll",k)},[]);const y=d.useRef(null),{scrollYProgress:v}=Gg({target:y,offset:["start start","end start"]}),w=$g(v,[0,1],[0,-60]),x=async k=>{if(k.preventDefault(),u.website){qe.success(r.signupSuccess);return}if(!u.email||!u.email.match(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/)||u.name.length>100||u.company.length>200||u.email.length>255)return;f(!0);const{data:C,error:A}=await T.rpc("submit_landing_signup",{p_name:u.name,p_company:u.company,p_email:u.email});f(!1),A?qe.error(r.signupError):(qe.success(r.signupSuccess),m({name:"",company:"",email:"",website:""}))},S=[{"@context":"https://schema.org","@type":"Organization",name:"Salesmate",url:"https://salesmate.net/",logo:"https://salesmate.net/favicon.png",sameAs:[]},{"@context":"https://schema.org","@type":"SoftwareApplication",name:"Salesmate",applicationCategory:"BusinessApplication",operatingSystem:"Web",description:r.heroSub,url:"https://salesmate.net/",offers:{"@type":"Offer",priceCurrency:"EUR",price:"0"},publisher:{"@type":"Organization",name:"Salesmate",url:"https://salesmate.net/"}}];return t.jsxs(t.Fragment,{children:[t.jsx(ju,{title:`Salesmate â ${r.heroHeadline}`,description:r.heroSub,canonical:"/",lang:n,jsonLd:S}),t.jsxs("div",{className:`min-h-screen bg-[#0a0c10] text-white overflow-x-hidden transition-opacity duration-500 ${p?"opacity-0":"opacity-100"}`,children:[t.jsx("header",{className:`fixed top-0 inset-x-0 z-50 transition-all duration-500 ${o?"bg-[#0a0c10]/90 backdrop-blur-xl border-b border-white/[0.06]":"bg-transparent"}`,children:t.jsxs("div",{className:"max-w-6xl mx-auto flex items-center justify-between h-16 px-6",children:[t.jsx("img",{src:Ca,alt:"Salesmate",className:"h-6 object-contain"}),t.jsxs("nav",{className:"hidden md:flex items-center gap-8 text-[13px] font-medium text-white/60",children:[t.jsx("a",{href:"#product",className:"hover:text-white transition-colors",children:r.navProduct}),t.jsx("a",{href:"#pricing",className:"hover:text-white transition-colors",children:r.navPricing}),t.jsx("a",{href:"#about",className:"hover:text-white transition-colors",children:r.navAbout}),t.jsx("a",{href:"#early-access",className:"hover:text-white transition-colors",children:r.navEarlyAccess})]}),t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsxs("div",{className:"relative",children:[t.jsxs("button",{onClick:()=>c(!s),className:"flex items-center gap-1.5 text-[13px] text-white/60 hover:text-white transition-colors px-2 py-1 rounded-lg",children:[t.jsx("img",{src:i.flag,alt:"",className:"w-4 h-3 object-cover rounded-[2px]"}),t.jsx("span",{className:"hidden sm:inline",children:i.nativeName}),t.jsx(hn,{className:"h-3 w-3"})]}),s&&t.jsx("div",{className:"absolute right-0 top-full mt-2 bg-[#14161c] border border-white/[0.08] rounded-xl shadow-2xl py-1.5 min-w-[160px] z-50",children:Un.map(k=>t.jsxs("button",{onClick:()=>{a(k.code),c(!1)},className:`w-full flex items-center gap-2.5 px-4 py-2 text-[13px] hover:bg-white/[0.05] transition-colors ${n===k.code?"text-white":"text-white/50"}`,children:[t.jsx("img",{src:k.flag,alt:"",className:"w-4 h-3 object-cover rounded-[2px]"}),k.nativeName]},k.code))})]}),t.jsx("button",{onClick:b,className:"inline-flex items-center gap-1.5 rounded-full bg-white text-[#0a0c10] px-4 py-1.5 text-[13px] font-semibold hover:bg-white/90 transition-colors",children:"Log in"})]})]})}),t.jsxs("section",{ref:y,className:"relative min-h-[100vh] flex flex-col justify-center overflow-hidden",children:[t.jsxs("div",{className:"absolute inset-0",children:[t.jsx("img",{src:ix,alt:"",className:"w-full h-full object-cover",width:1920,height:1080,fetchPriority:"high",decoding:"async"}),t.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-[#0a0c10]/70 via-[#0a0c10]/50 to-[#0a0c10]"})]}),t.jsx("div",{className:"absolute inset-0 flex items-center justify-center pointer-events-none",children:t.jsx("img",{src:nx,alt:"",className:"w-[600px] h-[600px] object-contain opacity-[0.03]"})}),t.jsxs("div",{className:"relative z-10 max-w-4xl mx-auto text-center px-6 pt-32 pb-8",children:[t.jsx(rt.h1,{initial:{opacity:0,y:20}
478,animate:{opacity:1,y:0},transition:{duration:.8,delay:.2},className:"text-4xl sm:text-5xl md:text-[3.5rem] font-bold tracking-[-0.03em] leading-[1.1] mb-6",children:r.heroHeadline}),t.jsx(rt.p,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8,delay:.4},className:"text-base sm:text-lg text-white/60 max-w-2xl mx-auto leading-relaxed mb-8",children:r.heroSub}),t.jsxs(rt.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.8,delay:.6},className:"flex flex-col items-center gap-4",children:[t.jsxs("a",{href:"#early-access",className:"inline-flex items-center gap-2 rounded-full bg-white text-[#0a0c10] px-8 py-3 text-[15px] font-semibold hover:bg-white/90 transition-colors shadow-[0_0_40px_rgba(255,255,255,0.12)]",children:[r.ctaStayUpdated,t.jsx(Wn,{className:"h-4 w-4"})]}),t.jsx("p",{className:"text-[13px] text-white/40",children:r.heroLaunchingSoon})]})]}),t.jsx(rt.div,{style:{y:w},initial:{opacity:0,y:60},animate:{opacity:1,y:0},transition:{duration:1,delay:.8},className:"relative z-10 max-w-4xl mx-auto px-6 mt-4",children:t.jsxs("div",{className:"relative",children:[t.jsx("div",{className:"absolute -inset-6 rounded-3xl bg-black/40 blur-3xl pointer-events-none"}),t.jsx("div",{className:"absolute -inset-3 rounded-2xl bg-black/30 blur-xl pointer-events-none"}),t.jsxs("div",{className:"relative rounded-xl overflow-hidden shadow-[0_25px_80px_rgba(0,0,0,0.6),0_10px_30px_rgba(0,0,0,0.4)] border border-white/[0.1]",children:[t.jsx("img",{src:rx,alt:"Salesmate Dashboard",className:"w-full",width:1600,height:1e3,loading:"lazy",decoding:"async"}),t.jsx("div",{className:"absolute inset-0 rounded-xl ring-1 ring-inset ring-white/[0.08] pointer-events-none"}),t.jsx("div",{className:"absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-white/[0.15] to-transparent pointer-events-none"})]})]})}),t.jsx("div",{className:"h-12 md:h-24"})]}),t.jsx("section",{id:"product",className:"py-16 md:py-32 px-6",children:t.jsxs("div",{className:"max-w-5xl mx-auto grid md:grid-cols-2 gap-10 md:gap-16 items-center",children:[t.jsx($t,{children:t.jsxs("div",{className:"space-y-5",children:[t.jsx("h2",{className:"text-3xl sm:text-4xl font-bold tracking-[-0.02em] leading-[1.15]",children:r.calendarTitle}),t.jsxs("div",{className:"space-y-4 text-[15px] text-white/55 leading-relaxed",children:[t.jsx("p",{children:r.calendarText1}),t.jsx("p",{children:r.calendarText2}),t.jsx("p",{className:"text-white/80 font-medium",children:r.calendarText3}),t.jsx("p",{children:r.calendarText4})]})]})}),t.jsx($t,{children:t.jsxs("div",{className:"relative group",children:[t.jsx("div",{className:"absolute -inset-1 rounded-2xl bg-gradient-to-b from-white/[0.08] via-trans
478parent to-transparent opacity-60 blur-sm pointer-events-none"}),t.jsxs("div",{className:"relative rounded-xl overflow-hidden shadow-[0_8px_40px_rgba(100,140,255,0.08),0_20px_60px_rgba(0,0,0,0.5)] border border-white/[0.10]",children:[t.jsx("img",{src:ox,alt:"Calendar",className:"w-full",width:1600,height:1e3,loading:"lazy",decoding:"async"}),t.jsx("div",{className:"absolute inset-x-0 bottom-0 h-16 bg-gradient-to-t from-black/40 to-transparent pointer-events-none"}),t.jsx("div",{className:"absolute inset-0 ring-1 ring-inset ring-white/[0.06] rounded-xl pointer-events-none"})]})]})})]})}),t.jsx("section",{className:"py-16 md:py-32 px-6",children:t.jsxs("div",{className:"max-w-5xl mx-auto grid md:grid-cols-2 gap-10 md:gap-16 items-center",children:[t.jsx($t,{className:"md:order-2",children:t.jsxs("div",{className:"space-y-5",children:[t.jsx("h2",{className:"text-3xl sm:text-4xl font-bold tracking-[-0.02em] leading-[1.15]",children:r.inquiryTitle}),t.jsxs("div",{className:"space-y-4 text-[15px] text-white/55 leading-relaxed",children:[t.jsx("p",{children:r.inquiryText1}),t.jsx("p",{children:r.inquiryText2}),t.jsx("p",{children:r.inquiryText3})]})]})}),t.jsx($t,{className:"md:order-1",children:t.jsxs("div",{className:"relative group",children:[t.jsx("div",{className:"absolute -inset-1 rounded-2xl bg-gradient-to-b from-white/[0.08] via-trans
478parent to-transparent opacity-60 blur-sm pointer-events-none"}),t.jsxs("div",{className:"relative rounded-xl overflow-hidden shadow-[0_8px_40px_rgba(100,140,255,0.08),0_20px_60px_rgba(0,0,0,0.5)] border border-white/[0.10]",children:[t.jsx("img",{src:sx,alt:"Pipeline",className:"w-full -mt-1 scale-[1.005]",width:1600,height:1e3,loading:"lazy",decoding:"async"}),t.jsx("div",{className:"absolute inset-x-0 bottom-0 h-16 bg-gradient-to-t from-black/40 to-transparent pointer-events-none"}),t.jsx("div",{className:"absolute inset-0 ring-1 ring-inset ring-white/[0.06] rounded-xl pointer-events-none"})]})]})})]})}),t.jsx("section",{className:"py-16 md:py-32 px-6",children:t.jsxs("div",{className:"max-w-5xl mx-auto",children:[t.jsxs($t,{className:"text-center mb-10 md:mb-16",children:[t.jsx("h2",{className:"text-3xl sm:text-4xl font-bold tracking-[-0.02em] leading-[1.15] mb-5",children:r.bookingScreensTitle}),t.jsxs("p",{className:"text-[15px] text-white/55 max-w-xl mx-auto leading-relaxed",children:[r.bookingScreensText1,t.jsx("br",{}),t.jsx("br",{}),r.bookingScreensText2]})]}),t.jsx($t,{children:t.jsx("div",{className:"max-w-2xl mx-auto",children:t.jsxs(rt.div,{initial:{y:0},animate:{y:[0,-8,0]},transition:{duration:5,repeat:1/0,ease:"easeInOut"},className:"relative",children:[t.jsx("div",{className:"bg-[#1a1c22] rounded-[28px] p-3 shadow-[0_0_80px_rgba(100,140,255,0.06),0_30px_80px_rgba(0,0,0,0.5)] border border-white/[0.08]",children:t.jsx("div",{className:"rounded-[18px] overflow-hidden bg-black",children:t.jsx("img",{src:lx,alt:"Touch Booking Screen",className:"w-full",width:1400,height:1050,loading:"lazy",decoding:"async"})})}),t.jsx("div",{className:"absolute bottom-1.5 left-1/2 -translate-x-1/2 w-24 h-1 bg-white/20 rounded-full"})]})})})]})}),t.jsx("section",{id:"pricing",className:"py-16 md:py-32 px-6",children:t.jsxs("div",{className:"max-w-5xl mx-auto",children:[t.jsx($t,{className:"text-center mb-6",children:t.jsx("h2",{className:"text-3xl sm:text-4xl font-bold tracking-[-0.02em] leading-[1.15]",children:r.pricingSectionTitle})}),t.jsx($t,{className:"text-center mb-4",children:t.jsx("p",{className:"text-[15px] text-white/55 leading-relaxed max-w-xl mx-auto",children:r.pricingSectionSub})}),t.jsx($t,{className:"text-center mb-14",children:t.jsx("p",{className:"text-[13px] text-white/35",children:r.pricingDisclaimer})}),t.jsx($t,{children:t.jsxs("div",{className:"grid md:grid-cols-3 gap-5 md:gap-6 items-start",children:[t.jsxs("div",{className:"rounded-2xl border border-white/[0.08] bg-white/[0.03] p-7 flex flex-col",children:[t.jsx("h3",{className:"text-lg font-semibold mb-1",children:r.pricingFreeName}),t.jsx("p",{className:"text-[13px] text-white/40 mb-6 min-h-[40px]",children:r.pricingFreeDesc}),t.jsxs("div",{className:"mb-1",children:[t.jsx("span",{className:"text-3xl font-bold",children:r.pricingFreePrice}),t.jsx("span",{className:"text-[13px] text-white/40 ml-1",children:r.pricingPerMonth})]}),t.jsxs("div",{className:"flex items-baseline gap-1.5 mb-7",children:[t.jsxs("span",{className:"text-[13px] text-white/50",children:[r.pricingTransactionFee,":"]}),t.jsx("span",{className:"text-[15px] font-semibold text-white/80",children:r.pricingFreeTx}),t.jsx("span",{className:"text-[13px] text-white/40",children:r.pricingPerBooking})]}),t.jsx("ul",{className:"space-y-3 mb-8 flex-1",children:[r.pricingFreeF1,r.pricingFreeF2,r.pricingFreeF3,r.pricingFreeF4].map(k=>t.jsxs("li",{className:"flex items-start gap-2.5 text-[14px] text-white/60",children:[t.jsx(Xt,{className:"h-4 w-4 mt-0.5 text-white/30 shrink-0"}),k]},k))}),t.jsx("a",{href:"#early-access",className:"w-full h-11 rounded-xl border border-white/[0.12] text-[14px] font-semibold text-white/70 hover:bg-white/[0.06] transition-colors flex items-center justify-center gap-2",children:r.pricingFreeCta})]}),t.jsxs("div",{className:"rounded-2xl border border-white/[0.15] bg-white/[0.05] p-7 flex flex-col relative md:scale-[1.04] md:-my-2 shadow-[0_0_60px_rgba(255,255,255,0.04)]",children:[t.jsx("div",{className:"absolute -top-3 left-1/2 -translate-x-1/2 px-4 py-1 rounded-full bg-white text-[#0a0c10] text-[11px] font-bold tracking-wide uppercase",children:r.pricingMostPopular}),t.jsx("h3",{className:"text-lg font-semibold mb-1",children:r.pricingStdName}),t.jsx("p",{className:"text-[13px] text-white/40 mb-6 min-h-[40px]",children:r.pricingStdDesc}),t.jsxs("div",{className:"mb-1",children:[t.jsx("span",{className:"text-3xl font-bold",children:r.pricingStdPrice}),t.jsx("span",{className:"text-[13px] text-white/40 ml-1",children:r.pricingPerMonth})]}),t.jsxs("div",{className:"flex items-baseline gap-1.5 mb-7",children:[t.jsxs("span",{className:"text-[13px] text-white/50",children:[r.pricingTransactionFee,":"]}),t.jsx("span",{className:"text-[15px] font-semibold text-white/80",children:r.pricingStdTx}),t.jsx("span",{className:"text-[13px] text-white/40",children:r.pricingPerBooking})]}),t.jsx("ul",{className:"space-y-3 mb-8 flex-1",children:[r.pricingStdF1,r.pricingStdF2,r.pricingStdF3,r.pricingStdF4,r.pricingStdF5,r.pricingStdF6,r.pricingStdF7].map(k=>t.jsxs("li",{className:"flex items-start gap-2.5 text-[14px] text-white/60",children:[t.jsx(Xt,{className:"h-4 w-4 mt-0.5 text-white/40 shrink-0"}),k]},k))}),t.jsxs("a",{href:"#early-access",className:"w-full h-11 rounded-xl bg-white text-[#0a0c10] text-[14px] font-semibold hover:bg-white/90 transition-colors flex items-center justify-center gap-2 shadow-[0_0_30px_rgba(255,255,255,0.1)]",children:[r.pricingStdCta,t.jsx(Wn,{className:"h-4 w-4"})]})]}),t.jsxs("div",{className:"rounded-2xl border border-white/[0.08] bg-white/[0.03] p-7 flex flex-col",children:[t.jsx("h3",{className:"text-lg font-semibold mb-1",children:r.pricingEntName}),t.jsx("p",{className:"text-[13px] text-white/40 mb-6 min-h-[40px]",children:r.pricingEntDesc}),t.jsx("div",{className:"mb-1",children:t.jsx("span",{className:"text-3xl font-bold",children:r.pricingEntPrice})}),t.jsxs("div",{className:"flex items-baseline gap-1.5 mb-7",children:[t.jsxs("span",{className:"text-[13px] text-white/50",children:[r.pricingTransactionFee,":"]}),t.jsx("span",{className:"text-[15px] font-semibold text-white/80",children:r.pricingEntTx}),t.jsx("span",{className:"text-[13px] text-white/40",children:r.pricingPerBooking})]}),t.jsx("ul",{className:"space-y-3 mb-8 flex-1",children:[r.pricingEntF1,r.pricingEntF2,r.pricingEntF3,r.pricingEntF4,r.pricingEntF5,r.pricingEntF6].map(k=>t.jsxs("li",{className:"flex items-start gap-2.5 text-[14px] text-white/60",children:[t.jsx(Xt,{className:"h-4 w-4 mt-0.5 text-white/30 shrink-0"}),k]},k))}),t.jsx("a",{href:"#early-access",className:"w-full h-11 rounded-xl border border-white/[0.12] text-[14px] font-semibold text-white/70 hover:bg-white/[0.06] transition-colors flex items-center justify-center gap-2",children:r.pricingEntCta})]})]})})]})}),t.jsx("section",{id:"about",className:"py-16 md:py-32 px-6",children:t.jsxs("div",{className:"max-w-5xl mx-auto grid md:grid-cols-2 gap-10 md:gap-16 items-start",children:[t.jsx($t,{children:t.jsx("h2",{className:"text-3xl sm:text-4xl font-bold tracking-[-0.02em] leading-[1.15]",children:r.builtByTitle})}),t.jsx($t,{children:t.jsxs("div",{className:"space-y-5 text-[15px] text-white/55 leading-relaxed",children:[t.jsx("p",{children:r.builtByText1}),t.jsx("p",{children:r.builtByText2}),t.jsx("p",{className:"text-white/80 font-medium",children:r.builtByText3})]})})]})}),t.jsx("section",{id:"early-access",className:"py-16 md:py-32 px-6",children:t.jsx("div",{className:"max-w-xl mx-auto text-center",children:t.jsxs($t,{children:[t.jsx("h2",{className:"text-3xl sm:text-4xl font-bold tracking-[-0.02em] leading-[1.15] mb-5",children:r.comingSoonTitle}),t.jsx("p",{className:"text-[15px] text-white/55 leading-relaxed mb-10",children:r.comingSoonText}),t.jsxs("form",{onSubmit:x,className:"space-y-3 text-left",children:[t.jsx("input",{type:"text",placeholder:r.formName,value:u.name,onChange:k=>m(C=>({...C,name:k.target.value})),className:"w-full h-11 rounded-xl bg-white/[0.06] border border-white/[0.08] px-4 text-[14px] text-white placeholder:text-white/30 focus:outline-none focus:ring-2 focus:ring-white/20 transition-all"}),t.jsx("input",{type:"text",placeholder:r.formCompany,value:u.company,onChange:k=>m(C=>({...C,company:k.target.value})),className:"w-full h-11 rounded-xl bg-white/[0.06] border border-white/[0.08] px-4 text-[14px] text-white placeholder:text-white/30 focus:outline-none focus:ring-2 focus:ring-white/20 transition-all"}),t.jsx("input",{type:"email",required:!0,placeholder:r.formEmail,value:u.email,onChange:k=>m(C=>({...C,email:k.target.value})),className:"w-full h-11 rounded-xl bg-white/[0.06] border border-white/[0.08] px-4 text-[14px] text-white placeholder:text-white/30 focus:outline-none focus:ring-2 focus:ring-white/20 transition-all"}),t.jsx("input",{type:"text",name:"website",value:u.website,onChange:k=>m(C=>({...C,website:k.target.value})),autoComplete:"off",tabIndex:-1,"aria-hidden":"true",style:{position:"absolute",left:"-9999px",opacity:0,height:0,width:0}}),t.jsxs("button",{type:"submit",disabled:g,className:"w-full h-11 rounded-xl bg-white text-[#0a0c10] text-[14px] font-semibold hover:bg-white/90 transition-colors disabled:opacity-50 flex items-center justify-center gap-2",children:[r.ctaStayUpdated,t.jsx(Wn,{className:"h-4 w-4"})]})]})]})})}),t.jsxs("footer",{className:"border-t border-white/[0.06] py-12 px-6",children:[t.jsxs("div",{className:"max-w-5xl mx-auto mb-4 flex flex-col items-center gap-2",children:[t.jsx("img",{src:ax,alt:"Visa, Mastercard, Diners Club, Discover, JCB, UnionPay, Amex",className:"h-7 object-contain opacity-50"}),t.jsxs("div",{className:"flex items-center gap-4 text-[11px] text-white/30",children:[t.jsx("a",{href:"https://www.visa.no",target:"_blank",rel:"noopener noreferrer",className:"hover:text-white/50 transition-colors",children:"visa.no"}),t.jsx("a",{href:"https://www.mastercard.no",target:"_blank",rel:"noopener noreferrer",className:"hover:text-white/50 transition-colors",children:"mastercard.no"})]})]}),t.jsxs("div",{className:"max-w-5xl mx-auto mb-8 text-center text-[12px] text-white/25 leading-relaxed",children:[t.jsx("p",{className:"font-medium text-white/35",children:"Salesmate AS â Org.nr: 837 001 552"}),t.jsx("p",{children:"Tollbugata 11a, 8006 Bodø"}),t.jsxs("p",{children:[t.jsx("a",{href:"mailto:[email protected]",className:"hover:text-white/50 transition-colors",children:"[email protected]"})," · ",t.jsx("a",{href:"tel:+4797171201",className:"hover:text-white/50 transition-colors",children:"+47 971 71 201"})]})]}),t.jsxs("div",{className:"max-w-5xl mx-auto flex flex-col md:flex-row items-center justify-between gap-6",children:[t.jsxs("div",{className:"flex flex-col items-center md:items-start gap-3",children:[t.jsx("img",{src:Ca,alt:"Salesmate",className:"h-7 object-contain opacity-80"}),t.jsx("p",{className:"text-[13px] text-white/35",children:r.footerDescription})]}),t.jsxs("div",{className:"flex flex-wrap items-center justify-center md:justify-end gap-x-6 gap-y-2 text-[13px] text-white/40",children:[t.jsx(li,{to:"/terms",className:"hover:text-white/70 transition-colors",children:r.footerTerms||"Terms"}),t.jsx(li,{to:"/privacy",className:"hover:text-white/70 transition-colors",children:r.footerPrivacy}),t.jsx(li,{to:"/cookies",className:"hover:text-white/70 transition-colors",children:e.cookies.footerCookies}),t.jsx("a",{href:"#",className:"hover:text-white/70 transition-colors",children:r.footerContact}),t.jsx("a",{href:"#early-access",className:"hover:text-white/70 transition-colors",children:r.navEarlyAccess}),t.jsx("button",{onClick:()=>{localStorage.removeItem("sm-cookie-consent"),window.location.reload()},className:"hover:text-white/70 transition-colors",children:e.cookies.cookieSettings})]})]}),t.jsxs("div",{className:"max-w-5xl mx-auto mt-8 text-center text-[12px] text-white/20",children:["© ",new Date().getFullYear()," Salesmate"]})]}),t.jsx(mx,{})]})]})}const px=d.lazy(()=>fe(()=>import("./SalesTerms-CFkOiUnd.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),gx=d.lazy(()=>fe(()=>import("./PrivacyPolicy-MMMlpxb9.js"),__vite__mapDeps([9,1,2,3,4,5,6,7,8]))),fx=d.lazy(()=>fe(()=>import("./CookiePolicy-BWZ9pE8D.js"),__vite__mapDeps([10,1,2,3,4,5,6,7,8])));function hx(){return t.jsx(d.Suspense,{fallback:null,children:t.jsxs(sr,{children:[t.jsx(se,{path:"/",element:t.jsx(Du,{})}),t.jsx(se,{path:"/terms",element:t.jsx(px,{})}),t.jsx(se,{path:"/privacy",element:t.jsx(gx,{})}),t.jsx(se,{path:"/cookies",element:t.jsx(fx,{})})]})})}const vx=d.lazy(()=>fe(()=>import("./PublicMinimalWidget-DObDOlGX.js"),__vite__mapDeps([11,1,2,12,13,8,14,15,5,16,4,6,7])));function yx(){return t.jsx(d.Suspense,{fallback:null,children:t.jsx(sr,{children:t.jsx(se,{path:"/embed/widget-minimal/:slug",element:t.jsx(vx,{})})})})}var bx="authorization_response",xx="/~oauth/initiate",kx=["https://oauth.lovable.app","https://lovable.dev"],wx="lovable://oauth-callback",Sx="http://127.0.0.1/iframe-oauth/callback",Cx=500,Nx=12e4;function Ax(e){let n;const a=new Promise(o=>{n=o}),i=o=>
478{if(!e.some(c=>o.origin===c))return;const s=o.data;!s||typeof s!="object"||s.type===bx&&n(s.response)},r=()=>{window.removeEventListener("message",i)};return window.addEventListener("message",i),{cleanup:r,messagePromise:a}}function Px(e){const n=window.screenX!==0||window.screenY!==0||!e,a=n?window.outerWidth*.5:window.screen.width*.5,i=n?window.outerHeight*.5:window.screen.height*.5,r=n?window.screenX+(window.outerWidth-a)/2:(window.screen.width-a)/2,o=n?window.screenY+(window.outerHeight-i)/2:(window.screen.height-i)/2;return{width:a,height:i,left:r,top:o}}function pc(e,n){return e.state!==n?{error:new Error("State is invalid")}:e.error?e.error==="legacy_flow"?{error:new Error("This flow is not supported in Preview mode. Please open the app in a new tab to sign in.")}:{error:new Error(e.error_description??"Sign in failed")}:!e.access_token||!e.refresh_token?{error:new Error("No tokens received")}:{tokens:{access_token:e.access_token,refresh_token:e.refresh_token},error:null}}function jx(){const e=navigator.userAgent;return!!(/iPhone|iPad|iPod|Android/i.test(e)||/Macintosh/i.test(e)&&navigator.maxTouchPoints>1)}function Tx(){return typeof crypto<"u"&&crypto.getRandomValues?[...crypto.getRandomValues(new Uint8Array(16))].map(e=>e.toString(16).padStart(2,"0")).join(""):Math.random().toString(36).substring(2)+Date.now().toString(36)}function Dx(e={}){const n=e.oauthBrokerUrl??xx,a=e.supportedOAuthOrigins??kx;async function i(r,o={}){let l=!1;try{l=window.self!==window.top}catch{l=!0}const s=navigator.userAgent,c=/LovableApp\//.test(s),u=!c&&/lovable/i.test(s),m=Tx();let g=o.redirect_uri??window.location.origin;c&&l?g=wx:u&&l&&(g=Sx);const f=new URLSearchParams({...o.extraParams,provider:r,redirect_uri:g,state:m});if(!l)return window.location.href=`${n}?${f.toString()}`,{error:null,redirected:!0};!c&&!u&&f.set("response_mode","web_message");const p=`${n}?${f.toString()}`,h=u?[...a,window.location.origin]:a,{messagePromise:b,cleanup:y}=Ax(h);let v;if(jx())v=window.open(p,"_blank");else{const{width:S,height:k,left:C,top:A}=Px(l);v=window.open(p,"oauth",`width=${S},height=${k},left=${C},top=${A}`)}if(!v&&(c||u)){let S;const k=new Promise((C,A)=>{S=setTimeout(()=>{A(new Error("OAuth timed out waiting for response"))},Nx)});try{const C=await Promise.race([b,k]);return pc(C,m)}catch(C){return{error:C instanceof Error?C:new Error(String(C))}}finally{S&&clearTimeout(S),y()}}if(!v)return y(),{error:new Error("Popup was blocked")};let w;const x=new Promise((S,k)=>{w=setInterval(()=>{v.closed&&(clearInterval(w),k(new Error("Sign in was cancelled")))},Cx)});try{const S=await Promise.race([b,x]);return pc(S,m)}catch(S){return{error:S instanceof Error?S:new Error(String(S))}}finally{clearInterval(w),y(),v==null||v.close()}}return{signInWithOAuth:i}}var _x={name:"@lovable.dev/cloud-auth-js",version:"1.1.1",description:"Lovable Cloud Auth JS",main:"./dist/index.cjs",module:"./dist/index.js",types:"./dist/index.d.ts",type:"module",files:["dist"],scripts:{build:"tsup src/index.ts --format cjs,esm --dts --outDir dist",dev:"tsup src/index.ts --format cjs,esm --dts --watch",test:"vitest run",typecheck:"tsgo --noEmit",prepublishOnly:"npm run clean && npm run build",clean:"rimraf dist"},keywords:["lovable","oauth","authentication"],license:"MIT",devDependencies:{"@types/node":"^22",jsdom:"^26",rimraf:"^5.0.0",tsup:"^7.2.0",typescript:"^5",vitest:"^4.1.0"}};typeof window<"u"&&(window.__lovable_cloud_auth_js_version=_x.version);function Ex(e={}){return Dx(e)}const Rx=Ex(),zx={auth:{signInWithOAuth:async(e,n)=>{const a=await Rx.signInWithOAuth(e,{redirect_uri:n==null?void 0:n.redirect_uri,extraParams:{...n==null?void 0:n.extraParams}});if(a.redirected||a.error)return a;try{await T.auth.setSession(a.tokens)}catch(i){return{error:i instanceof Error?i:new Error(String(i))}}return a}}},Mx="https://ofonhoptrjclgvirmyal.supabase.co";async function Gi(e){return(await fetch(`${Mx}/functions/v1/auth-otp`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).json()}function Ix(){const{user:e,loading:n}=Rn(),{t:a}
478=ke(),[i,r]=d.useState(""),[o,l]=d.useState(""),[s,c]=d.useState(""),[u,m]=d.useState(""),[g,f]=d.useState(""),[p,h]=d.useState(!1),[b,y]=d.useState("signin"),[v,w]=d.useState(()=>{var L;const R=["en","no","de","es","fr","it"],E=(L=navigator.language)==null?void 0:L.split("-")[0];return R.includes(E)?E:"en"}),[x,S]=d.useState(()=>localStorage.getItem("salemate_remember")==="true"),{toast:k}=Dt();if(d.useState(()=>{if(localStorage.getItem("salemate_remember")==="true"){const R=localStorage.getItem("salemate_remembered_email");R&&l(R)}}),n)return t.jsx("div",{className:"sm-login-page",children:t.jsx("img",{src:Ca,alt:"Salesmate",className:"animate-pulse h-6 object-contain"})});if(e&&b!=="reset"&&b!=="verify"&&b!=="signup"){const R=sessionStorage.getItem("pending_invite_token");return R?(sessionStorage.removeItem("pending_invite_token"),t.jsx(ya,{to:`/invite?token=${R}`,replace:!0})):t.jsx(ya,{to:"/app",replace:!0})}const C=async R=>{R.preventDefault(),h(!0),x?(localStorage.setItem("salemate_remember","true"),localStorage.setItem("salemate_remembered_email",o)):(localStorage.removeItem("salemate_remember"),localStorage.removeItem("salemate_remembered_email"));const{error:E}=await T.auth.signInWithPassword({email:o,password:s});E&&k({title:a.login.loginFailed,description:E.message,variant:"destructive"}),h(!1)},A=async R=>{R.preventDefault(),h(!0);const{error:E}=await T.auth.signUp({email:o,password:s,options:{emailRedirectTo:window.location.origin+"/app",data:{full_name:u,language:v}}});if(E){k({title:a.login.signupFailed,description:E.message,variant:"destructive"}),h(!1);return}await T.auth.signOut();const L=await Gi({action:"send",email:o,type:"signup",name:u});L.ok?(k({title:a.login.verificationSent,description:a.login.checkEmail}),y("verify")):k({title:a.login.error,description:L.message||a.login.couldNotSendCode,variant:"destructive"}),h(!1)},q=async R=>{var L;R.preventDefault(),h(!0);const E=await Gi({action:"verify",email:o,code:g,type:"signup"});if(!E.ok)k({title:a.login.invalidCode,description:E.message||a.login.invalidCode,variant:"destructive"});else{localStorage.setItem("app-language",v);const{error:M,data:j}=await T.auth.signInWithPassword({email:o,password:s});M?(k({title:a.login.accountVerified,description:a.login.logIn+"."}),y("signin")):(L=j==null?void 0:j.user)!=null&&L.id&&T.from("profiles").update({language:v}).eq("id",j.user.id).then(()=>{})}h(!1)},P=async R=>{if(R.preventDefault(),!o){k({title:a.login.email,description:a.login.resetDescription,variant:"destructive"});return}h(!0);const E=await Gi({action:"send",email:o,type:"recovery"});!E.ok&&E.code!==void 0?k({title:a.login.error,description:E.message,variant:"destructive"}):(k({title:a.login.verificationSent,description:a.login.checkEmail}),y("reset-code")),h(!1)},D=async R=>{R.preventDefault(),h(!0),y("reset"),h(!1)},z=async R=>{if(R.preventDefault(),s.length<6){k({title:a.login.passwordTooShort,description:a.login.passwordMinLength,variant:"destructive"});return}h(!0);const E=await Gi({action:"reset-password",email:o,code:i,new_password:s});E.ok?(k({title:a.login.passwordUpdated,description:a.login.logIn+"."}),y("signin"),c(""),r("")):k({title:a.login.error,description:E.message||a.login.couldNotSendCode,variant:"destructive"}),h(!1)},F=async()=>{h(!0);const{error:R}=await zx.auth.signInWithOAuth("google",{redirect_uri:window.location.origin+"/app"});R&&!String(R).toLowerCase().includes("cancel")&&k({title:a.login.googleLoginFailed,description:String(R),variant:"destructive"}),h(!1)};return t.jsxs(t.Fragment,{children:[t.jsx(ju,{title:"Sign in â Salesmate",description:"Sign in to your Salesmate account to manage bookings, resources and operations.",canonical:"/login",noindex:!0}),t.jsxs("div",{className:"sm-login-page sm-login-page--dark animate-[fadeInLogin_0.6s_ease-out]",children:[t.jsxs("div",{className:"fixed inset-0 overflow-hidden pointer-events-none",children:[t.jsx("div",{className:"absolute -top-40 -left-40 w-96 h-96 rounded-full blur-3xl bg-blue-500/[0.04]"}),t.jsx("div",{className:"absolute -bottom-40 -right-40 w-96 h-96 rounded-full blur-3xl bg-indigo-500/[0.04]"})]}
478),t.jsxs("div",{className:"relative w-full max-w-md space-y-8",children:[t.jsxs("div",{className:"text-center space-y-4",children:[t.jsx(li,{to:"/",children:t.jsx("img",{src:Ca,alt:"Salesmate",className:"mx-auto h-6 object-contain cursor-pointer hover:opacity-80 transition-opacity"})}),b!=="signin"&&t.jsxs("p",{className:"sm-login-text-muted text-sm",children:[b==="signup"&&a.login.createYourAccount,b==="verify"&&a.login.verifyEmail,b==="forgot"&&a.login.resetPassword,b==="reset-code"&&a.login.enterCode,b==="reset"&&a.login.chooseNewPassword]})]}),b==="signin"&&t.jsxs(t.Fragment,{children:[t.jsxs("button",{onClick:F,disabled:p,className:"sm-login-btn-google",children:[t.jsxs("svg",{className:"h-5 w-5",viewBox:"0 0 24 24",children:[t.jsx("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92a5.06 5.06 0 0 1-2.2 3.32v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.1z",fill:"#4285F4"}),t.jsx("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),t.jsx("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),t.jsx("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]}),a.login.continueWithGoogle]}),t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsx("div",{className:"flex-1 sm-login-divider"}),t.jsx("span",{className:"sm-login-text-muted text-sm",children:a.login.or}),t.jsx("div",{className:"flex-1 sm-login-divider"})]}),t.jsxs("form",{onSubmit:C,className:"space-y-4",children:[t.jsx("input",{type:"email",placeholder:a.login.email,value:o,onChange:R=>l(R.target.value),required:!0,className:"sm-login-input"}),t.jsx("input",{type:"password",placeholder:a.login.password,value:s,onChange:R=>c(R.target.value),required:!0,className:"sm-login-input"}),t.jsxs("label",{className:"flex items-center gap-2.5 cursor-pointer select-none",children:[t.jsx("input",{type:"checkbox",checked:x,onChange:R=>S(R.target.checked),className:"h-4 w-4 rounded border-border bg-input text-primary accent-primary focus:ring-0"}),t.jsx("span",{className:"sm-login-text-muted text-sm",children:a.login.rememberMe})]}),t.jsx("button",{type:"submit",disabled:p,className:"sm-login-btn-primary",children:a.login.logIn})]}),t.jsx("div",{className:"text-center space-y-3",children:t.jsx("button",{onClick:()=>y("forgot"),className:"sm-login-link-subtle text-sm",children:a.login.forgotPassword})})]}),b==="signup"&&t.jsxs(t.Fragment,{children:[t.jsxs("form",{onSubmit:A,className:"space-y-4",children:[t.jsx("input",{type:"text",placeholder:a.login.fullName,value:u,onChange:R=>m(R.target.value),required:!0,className:"sm-login-input"}),t.jsx("input",{type:"email",placeholder:a.login.email,value:o,onChange:R=>l(R.target.value),required:!0,className:"sm-login-input"}),t.jsx("input",{type:"password",placeholder:a.login.newPasswordPlaceholder,value:s,onChange:R=>c(R.target.value),required:!0,minLength:6,className:"sm-login-input"}),t.jsxs("div",{children:[t.jsx("label",{className:"text-xs font-medium text-muted-foreground ml-1 mb-1 block",children:a.login.preferredLanguage}),t.jsx("select",{value:v,onChange:R=>w(R.target.value),className:"sm-login-input",children:Un.map(R=>t.jsx("option",{value:R.code,children:R.nativeName},R.code))})]}),t.jsx("button",{type:"submit",disabled:p,className:"sm-login-btn-primary",children:a.login.createAccount})]}),t.jsx("div",{className:"text-center",children:t.jsxs("p",{className:"sm-login-text-muted text-sm",children:[a.login.alreadyHaveAccount," ",t.jsx("button",{onClick:()=>y("signin"),className:"sm-login-link text-sm",children:a.login.logIn})]})})]}),b==="verify"&&t.jsxs(t.Fragment,{children:[t.jsxs("form",{onSubmit:q,className:"space-y-4",children:[t.jsxs("p",{className:"sm-login-text-muted text-sm text-center",children:[a.login.codeSentTo," ",t.jsx("span",{className:"text-foreground font-medium",children:o})]}),t.jsx("input",{type:"text",placeholder:a.login.enterCode,value:g,onChange:R=>f(R.target.value.replace(/\D/g,"")),required:!0,maxLength:6,className:"sm-login-input text-center text-2xl tracking-[0.5em] font-mono"}),t.jsx("button",{type:"submit",disabled:p||g.length<6,className:"sm-login-btn-primary",children:a.login.confirm})]}),t.jsx("div",{className:"text-center",children:t.jsx("button",{onClick:()=>y("signin"),className:"sm-login-link-subtle text-sm",children:a.login.backToLogin})})]}),b==="forgot"&&t.jsxs(t.Fragment,{children:[t.jsxs("form",{onSubmit:P,className:"space-y-4",children:[t.jsx("p",{className:"sm-login-text-muted text-sm text-center",children:a.login.resetDescription}),t.jsx("input",{type:"email",placeholder:a.login.email,value:o,onChange:R=>l(R.target.value),required:!0,className:"sm-login-input"}),t.jsx("button",{type:"submit",disabled:p,className:"sm-login-btn-primary",children:a.login.sendCode})]}),t.jsx("div",{className:"text-center",children:t.jsx("button",{onClick:()=>y("signin"),className:"sm-login-link-subtle text-sm",children:a.login.backToLogin})})]}),b==="reset-code"&&t.jsxs(t.Fragment,{children:[t.jsxs("form",{onSubmit:D,className:"space-y-4",children:[t.jsxs("p",{className:"sm-login-text-muted text-sm text-center",children:[a.login.codeSentTo," ",t.jsx("span",{className:"text-foreground font-medium",children:o})]}),t.jsx("input",{type:"text",placeholder:a.login.enterCode,value:i,onChange:R=>r(R.target.value.replace(/\D/g,"")),required:!0,maxLength:6,className:"sm-login-input text-center text-2xl tracking-[0.5em] font-mono"}),t.jsx("button",{type:"submit",disabled:p||i.length<6,className:"sm-login-btn-primary",children:a.login.confirmCode})]}),t.jsx("div",{className:"text-center",children:t.jsx("button",{onClick:()=>{r(""),P(new Event("submit"))},className:"sm-login-link-subtle text-sm",children:a.login.resendCode})})]}),b==="reset"&&t.jsx(t.Fragment,{children:t.jsxs("form",{onSubmit:z,className:"space-y-4",children:[t.jsx("p",{className:"sm-login-text-muted text-sm text-center",children:a.login.chooseNewPassword}),t.jsx("input",{type:"password",placeholder:a.login.newPasswordPlaceholder,value:s,onChange:R=>c(R.target.value),required:!0,minLength:6,className:"sm-login-input"}),t.jsx("button",{type:"submit",disabled:p,className:"sm-login-btn-primary",children:a.login.updatePassword})]})})]})]})]})}const Lx=()=>{const e=Ni();return d.useEffect(()=>{console.error("404 Error: User attempted to access non-existent route:",e.pathname)},[e.pathname]),t.jsx("div",{className:"flex min-h-screen items-center justify-center bg-muted",children:t.jsxs("div",{className:"text-center",children:[t.jsx("h1",{className:"mb-4 text-4xl font-bold",children:"404"}),t.jsx("p",{className:"mb-4 text-xl text-muted-foreground",children:"Oops! Page not found"}),t.jsx("a",{href:"/",className:"text-primary underline hover:text-primary/90",children:"Return to Home"})]})})},yo=768;
478function _i(){const[e,n]=d.useState(void 0);return d.useEffect(()=>{const a=window.matchMedia(`(max-width: ${yo-1}px)`),i=()=>{n(window.innerWidth<yo)};return a.addEventListener("change",i),n(window.innerWidth<yo),()=>a.removeEventListener("change",i)},[]),!!e}const vi=Ma("inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium ring-offset-background transition-[background,box-shadow] duration-[120ms] ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-[hsl(var(--button-primary-bg))] text-[hsl(var(--button-text-primary))] shadow-[inset_0_1px_0_rgba(255,255,255,0.15)] hover:bg-[hsl(var(--button-primary-hover))] active:bg-[hsl(var(--button-primary-active))] rounded-[10px]",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90 rounded-[10px]",outline:"bg-[hsl(var(--button-secondary-bg))] border border-[hsl(var(--button-secondary-border))] text-[hsl(var(--button-text-secondary))] hover:bg-[hsl(var(--button-secondary-hover))] rounded-[10px]",secondary:"bg-[hsl(var(--button-secondary-bg))] border border-[hsl(var(--button-secondary-border))] text-[hsl(var(--button-text-secondary))] hover:bg-[hsl(var(--button-secondary-hover))] rounded-[10px]",ghost:"text-[hsl(var(--button-text-secondary))] hover:bg-[hsl(var(--button-ghost-hover))] rounded-lg",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-[38px] px-4 py-[10px]",sm:"h-8 px-3 py-1.5",lg:"h-11 px-5 py-3",icon:"h-[34px] w-[34px] rounded-lg"}},defaultVariants:{variant:"default",size:"default"}}),Be=d.forwardRef(({className:e,variant:n,size:a,asChild:i=!1,...r},o)=>{const l=i?Ea:"button";return t.jsx(l,{className:B(vi({variant:n,size:a,className:e})),ref:o,...r})});Be.displayName="Button";const ge=d.forwardRef(({className:e,type:n,...a},i)=>t.jsx("input",{type:n,className:B("flex h-10 w-full rounded-md bg-input px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm shadow-sm",e),ref:i,...a}));ge.displayName="Input";var Fx="Separator",gc="horizontal",Ox=["horizontal","vertical"],_u=d.forwardRef((e,n)=>{const{decorative:a,orientation:i=gc,...r}=e,o=Bx(i)?i:gc,s=a?{role:"none"}:{"aria-orientation":o==="vertical"?o:void 0,role:"separator"};return t.jsx(lt.div,{"data-orientation":o,...s,...r,ref:n})});_u.displayName=Fx;function Bx(e){return Ox.includes(e)}var Eu=_u;const Ru=d.forwardRef(({className:e,orientation:n="horizontal",decorative:a=!0,...i},r)=>t.jsx(Eu,{ref:r,decorative:a,orientation:n,className:B("shrink-0 bg-border",n==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...i}));Ru.displayName=Eu.displayName;const qx=Pi,Vx=ji,zu=d.forwardRef(({className:e,...n},a)=>t.jsx(Xn,{className:B("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...n,ref:a}));zu.displayName=Xn.displayName;const Kx=Ma("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),Mu=d.forwardRef(({side:e="right",className:n,children:a,...i},r)=>t.jsxs(Vx,{children:[t.jsx(zu,{}),t.jsxs(ea,{ref:r,className:B(Kx({side:e}),n),style:{background:"linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0.015)), hsl(var(--surface-modal))",backdropFilter:"blur(20px)",boxShadow:"inset 0 1px 0 var(--edge-highlight-medium), 0 30px 80px rgba(0,0,0,0.6)"},...i,children:[a,t.jsxs(Ai,{className:"absolute right-4 top-4 roun
478ded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-secondary hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[t.jsx(Mt,{className:"h-4 w-4"}),t.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Mu.displayName=ea.displayName;const Wx=d.forwardRef(({className:e,...n},a)=>t.jsx(Ra,{ref:a,className:B("text-lg font-semibold text-foreground",e),...n}));Wx.displayName=Ra.displayName;const Ux=d.forwardRef(({className:e,...n},a)=>t.jsx(za,{ref:a,className:B("text-sm text-muted-foreground",e),...n}));Ux.displayName=za.displayName;function Nn({className:e,...n}){return t.jsx("div",{className:B("animate-pulse rounded-md bg-muted",e),...n})}const Iu=Sg,Lu=Cg,Fu=Ng,Hs=d.forwardRef(({className:e,sideOffset:n=4,...a},i)=>t.jsx(td,{ref:i,sideOffset:n,className:B("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...a}));Hs.displayName=td.displayName;const Hx="sidebar:state",Gx=60*60*24*7,$x="240px",Yx="280px",Qx="3rem",Jx="b",Ou=d.createContext(null);function Oa(){const e=d.useContext(Ou);if(!e)throw new Error("useSidebar must be used within a SidebarProvider.");return e}const Bu=d.forwardRef(({defaultOpen:e=!0,open:n,onOpenChange:a,className:i,style:r,children:o,...l},s)=>{const c=_i(),[u,m]=d.useState(!1),[g,f]=d.useState(e),p=n??g,h=d.useCallback(w=>{const x=typeof w=="function"?w(p):w;a?a(x):f(x),document.cookie=`${Hx}=${x}; path=/; max-age=${Gx}`},[a,p]),b=d.useCallback(()=>c?m(w=>!w):h(w=>!w),[c,h,m]);d.useEffect(()=>{const w=x=>{x.key===Jx&&(x.metaKey||x.ctrlKey)&&(x.preventDefault(),b())};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[b]);const y=p?"expanded":"collapsed",v=d.useMemo(()=>({state:y,open:p,setOpen:h,isMobile:c,openMobile:u,setOpenMobile:m,toggleSidebar:b}),[y,p,h,c,u,m,b]);return t.jsx(Ou.Provider,{value:v,children:t.jsx(Iu,{delayDuration:0,children:t.jsx("div",{style:{"--sidebar-width":$x,"--sidebar-width-icon":Qx,...r},className:B("group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",i),ref:s,...l,children:o})})})});Bu.displayName="SidebarProvider";const qu=d.forwardRef(({side:e="left",variant:n="sidebar",collapsible:a="offcanvas",className:i,children:r,...o},l)=>{const{isMobile:s,state:c,openMobile:u,setOpenMobile:m}=Oa();return a==="none"?t.jsx("div",{className:B("flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",i),ref:l,...o,children:r}):s?t.jsx(qx,{open:u,onOpenChange:m,...o,children:t.jsx(Mu,{"data-sidebar":"sidebar","data-mobile":"true",className:"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{"--sidebar-width":Yx,background:"radial-gradient(1000px 700px at 20% -10%, rgba(255,255,255,0.05), transparent 60%), linear-gradient(180deg, rgba(255,255,255,0.02), rgba(0,0,0,0.02)), hsl(var(--surface-sidebar))"},side:e,children:t.jsx("div",{className:"flex h-full w-full flex-col",children:r})})}):t.jsxs("div",{ref:l,className:"group peer hidden text-sidebar-foreground md:block","data-state":c,"data-collapsible":c==="collapsed"?a:"","data-variant":n,"data-side":e,children:[t.jsx("div",{className:B("relative h-svh w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180",n==="floating"||n==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]":"group-data-[collapsible=icon]:w-[--sidebar-width-icon]")}),t.jsx("div",{className:B("fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex",e==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",n==="floating"||n==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]":"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l",i),...o,children:t.jsx("div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",style:{background:"radial-gradient(1000px 700px at 20% -10%, rgba(255,255,255,0.05), transparent 60%), linear-gradient(180deg, rgba(255,255,255,0.02), rgba(0,0,0,0.02)), hsl(var(--surface-sidebar))"},children:r})})]})});qu.displayName="Sidebar";const Vu=d.forwardRef(({className:e,onClick:n,...a},i)=>{const{toggleSidebar:r}=Oa();return t.jsxs(Be,{ref:i,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:B("h-7 w-7",e),onClick:o=>{n==null||n(o),r()},...a,children:[t.jsx(lh,{}),t.jsx("span",{className:"sr-only",children:"Toggle Sidebar"})]})});
478Vu.displayName="SidebarTrigger";const Zx=d.forwardRef(({className:e,...n},a)=>{const{toggleSidebar:i}=Oa();return t.jsx("button",{ref:a,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:i,title:"Toggle Sidebar",className:B("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 hover:after:bg-sidebar-border sm:flex","[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",e),...n})});Zx.displayName="SidebarRail";const Xx=d.forwardRef(({className:e,...n},a)=>t.jsx("main",{ref:a,className:B("relative flex min-h-svh flex-1 flex-col bg-background","peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",e),...n}));Xx.displayName="SidebarInset";const ek=d.forwardRef(({className:e,...n},a)=>t.jsx(ge,{ref:a,"data-sidebar":"input",className:B("h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",e),...n}));ek.displayName="SidebarInput";const es=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,"data-sidebar":"header",className:B("gap-2 p-2 flex flex-col",e),...n}));es.displayName="SidebarHeader";const Ku=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,"data-sidebar":"footer",className:B("flex flex-col gap-2 p-2",e),...n}));Ku.displayName="SidebarFooter";const tk=d.forwardRef(({className:e,...n},a)=>t.jsx(Ru,{ref:a,"data-sidebar":"separator",className:B("mx-2 w-auto bg-sidebar-border",e),...n}));tk.displayName="SidebarSeparator";const Wu=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,"data-sidebar":"content",className:B("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",e),...n}));Wu.displayName="SidebarContent";const ts=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,"data-sidebar":"group",className:B("relative flex w-full min-w-0 flex-col p-2",e),...n}));ts.displayName="SidebarGroup";const nk=d.forwardRef(({className:e,asChild:n=!1,...a},i)=>{const r=n?Ea:"div";return t.jsx(r,{ref:i,"data-sidebar":"group-label",className:B("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",e),...a})});nk.displayName="SidebarGroupLabel";const ak=d.forwardRef(({className:e,asChild:n=!1,...a},i)=>{const r=n?Ea:"button";return t.jsx(r,{ref:i,"data-sidebar":"group-action",className:B("absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",e),...a})});ak.displayName="SidebarGroupAction";const ns=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,"data-sidebar":"group-content",className:B("w-full text-sm",e),...n}));ns.displayName="SidebarGroupContent";const as=d.forwardRef(({className:e,...n},a)=>t.jsx("ul",{ref:a,"data-sidebar":"menu",className:B("flex w-full min-w-0 flex-col gap-1",e),...n}));as.displayName="SidebarMenu";const Uu=d.forwardRef(({className:e,...n},a)=>t.jsx("li",{ref:a,"data-sidebar":"menu-item",className:B("group/menu-item relative",e),...n}));Uu.displayName="SidebarMenuItem";const ik=Ma("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu
478-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-5 [&>svg]:shrink-0 h-11 text-base md:h-8 md:text-sm md:[&>svg]:size-4",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),Hu=d.forwardRef(({asChild:e=!1,isActive:n=!1,variant:a="default",size:i="default",tooltip:r,className:o,...l},s)=>{const c=e?Ea:"button",{isMobile:u,state:m}=Oa(),g=t.jsx(c,{ref:s,"data-sidebar":"menu-button","data-size":i,"data-active":n,className:B(ik({variant:a,size:i}),o),...l});return r?(typeof r=="string"&&(r={children:r}),t.jsxs(Lu,{children:[t.jsx(Fu,{asChild:!0,children:g}),t.jsx(Hs,{side:"right",align:"center",hidden:m!=="collapsed"||u,...r})]})):g});Hu.displayName="SidebarMenuButton";const rk=d.forwardRef(({className:e,asChild:n=!1,showOnHover:a=!1,...i},r)=>{const o=n?Ea:"button";return t.jsx(o,{ref:r,"data-sidebar":"menu-action",className:B("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",e),...i})});rk.displayName="SidebarMenuAction";const ok=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,"data-sidebar":"menu-badge",className:B("pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",e),...n}));ok.displayName="SidebarMenuBadge";const sk=d.forwardRef(({className:e,showIcon:n=!1,...a},i)=>{const r=d.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return t.jsxs("div",{ref:i,"data-sidebar":"menu-skeleton",className:B("flex h-8 items-center gap-2 rounded-md px-2",e),...a,children:[n&&t.jsx(Nn,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),t.jsx(Nn,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":r}})]})});sk.displayName="SidebarMenuSkeleton";const lk=d.forwardRef(({className:e,...n},a)=>t.jsx("ul",{ref:a,"data-sidebar":"menu-sub",className:B("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",e),...n}));lk.displayName="SidebarMenuSub";const ck=d.forwardRef(({...e},n)=>t.jsx("li",{ref:n,...e}));ck.displayName="SidebarMenuSubItem";const dk=d.forwardRef(({asChild:e=!1,size:n="md",isActive:a,className:i,...r},o)=>{const l=e?Ea:"a";return t.jsx(l,{ref:o,"data-sidebar":"menu-sub-button","data-size":n,"data-active":a,className:B("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",n==="sm"&&"text-xs",n==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",i),...r})});dk.displayName="SidebarMenuSubButton";const Gu=d.forwardRef(({className:e,activeClassName:n,pendingClassName:a,to:i,...r},o)=>t.jsx(vg,{ref:o,to:i,className:({isActive:l,isPending:s})=>B(e,l&&n,s&&a),...r}));Gu.displayName="NavLink";var Rr="Collapsible",[uk,QD]=_a(Rr),[mk,Gs]=uk(Rr),$u=d.forwardRef((e,n
478)=>{const{__scopeCollapsible:a,open:i,defaultOpen:r,disabled:o,onOpenChange:l,...s}=e,[c,u]=fs({prop:i,defaultProp:r??!1,onChange:l,caller:Rr});return t.jsx(mk,{scope:a,disabled:o,contentId:Kn(),open:c,onOpenToggle:d.useCallback(()=>u(m=>!m),[u]),children:t.jsx(lt.div,{"data-state":Ys(c),"data-disabled":o?"":void 0,...s,ref:n})})});$u.displayName=Rr;var Yu="CollapsibleTrigger",Qu=d.forwardRef((e,n)=>{const{__scopeCollapsible:a,...i}=e,r=Gs(Yu,a);return t.jsx(lt.button,{type:"button","aria-controls":r.contentId,"aria-expanded":r.open||!1,"data-state":Ys(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...i,ref:n,onClick:Qt(e.onClick,r.onOpenToggle)})});Qu.displayName=Yu;var $s="CollapsibleContent",Ju=d.forwardRef((e,n)=>{const{forceMount:a,...i}=e,r=Gs($s,e.__scopeCollapsible);return t.jsx(ed,{present:a||r.open,children:({present:o})=>t.jsx(pk,{...i,ref:n,present:o})})});Ju.displayName=$s;var pk=d.forwardRef((e,n)=>{const{__scopeCollapsible:a,present:i,children:r,...o}=e,l=Gs($s,a),[s,c]=d.useState(i),u=d.useRef(null),m=Zn(n,u),g=d.useRef(0),f=g.current,p=d.useRef(0),h=p.current,b=l.open||s,y=d.useRef(b),v=d.useRef(void 0);return d.useEffect(()=>{const w=requestAnimationFrame(()=>y.current=!1);return()=>cancelAnimationFrame(w)},[]),pi(()=>{const w=u.current;if(w){v.current=v.current||{transitionDuration:w.style.transitionDuration,animationName:w.style.animationName},w.style.transitionDuration="0s",w.style.animationName="none";const x=w.getBoundingClientRect();g.current=x.height,p.current=x.width,y.current||(w.style.transitionDuration=v.current.transitionDuration,w.style.animationName=v.current.animationName),c(i)}},[l.open,i]),t.jsx(lt.div,{"data-state":Ys(l.open),"data-disabled":l.disabled?"":void 0,id:l.contentId,hidden:!b,...o,ref:m,style:{"--radix-collapsible-content-height":f?`${f}px`:void 0,"--radix-collapsible-content-width":h?`${h}px`:void 0,...e.style},children:b&&r})});function Ys(e){return e?"open":"closed"}var gk=$u;const Zu=gk,Xu=Qu,em=Ju;function fk(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{data:i=0}=Ee({queryKey:["unread-inbox-count",n],enabled:!!n,queryFn:async()=>{const{count:r,error:o}=await T.from("inbound_emails").select("id",{count:"exact",head:!0}).eq("company_id",n).is("converted_sale_id",null).is("deleted_at",null);if(o)throw o;return r??0}});return d.useEffect(()=>{if(!n)return;const r=T.channel(`unread-inbox-count-${n}`).on("postgres_changes",{event:"*",schema:"public",table:"inbound_emails",filter:`company_id=eq.${n}`},()=>{a.invalidateQueries({queryKey:["unread-inbox-count",n]})}).subscribe();return()=>{T.removeChannel(r)}},[n,a]),i}function hk(){var L,M;const{state:e,setOpenMobile:n,isMobile:a,toggleSidebar:i}=Oa(),r=Ni(),o=e==="collapsed",{t:l}=ke(),{signOut:s,profile:c}=Rn(),{currentMembership:u}=he(),m=Jn(),g=st(),f=fk(),p=["guide","gjest","partner"],h=(u==null?void 0:u.role)&&p.includes(u.role),b=async()=>{await s(),g.clear(),window.location.href="https://salesmate.net"},y=()=>{a&&n(!1)},v=[{title:l.nav.dashboard,url:"/app",icon:Gl},{title:l.nav.calendar,url:"/app/calendar",icon:lr},{title:l.nav.resourcePlanner,url:"/app/resource-planner",icon:ui},{title:l.nav.myTrips,url:"/app/my-trips",icon:hi}],w=[{title:l.nav.contacts,url:"/app/contacts",icon:Zf,badge:0},{title:l.nav.customers,url:"/app/customers",icon:Cn,badge:0},{title:l.nav.sales,url:"/app/sales",icon:vh,badge:0},{title:((L=l.companyInbox)==null?void 0:L.inbox)||"Inbox",url:"/app/settings/inbox",icon:sh,badge:f},{title:((M=l.partners)==null?void 0:M.title)||"Partners",url:"/app/partners",icon:rh,badge:0}],x=[{title:l.nav.activities,url:"/app/activities",icon:Rf},{title:l.nav.bookings,url:"/app/bookings",icon:mh},{title:l.nav.bookingScreens,url:"/app/booking",icon:kh},{title:l.nav.giftCards,url:"/app/gift-cards",icon:nh}],S=[{title:l.nav.personnel,url:"/app/personnel",icon:_r},{title:l.nav.leaves,url:"/app/leaves",icon:wh},{title:l.nav.resources,url:"/app/resources",icon:Lf},{title:l.nav.resourceBlockings,url:"/app/blockings",icon:Mf}],k=[{title:l.nav.activityCategories,url:"/app/activity-categories",icon:ui},{title:l.nav.priceCategories,url:"/app/price-categories",icon:bh},{title:l.nav.resourceTypes,url:"/app/resource-types",icon:ui},{title:l.nav.competences,url:"/app/competences",icon:zf}
478,{title:l.nav.settings,url:"/app/settings",icon:iu}],C=[{title:l.nav.accounting,url:"/app/finance",icon:If}],A=j=>{const I=j.icon,V=r.pathname===j.url||j.url!=="/app"&&r.pathname.startsWith(j.url),Y=j.badge||0;return t.jsx(Uu,{children:t.jsx(Hu,{asChild:!0,isActive:V,tooltip:o?j.title:void 0,children:t.jsxs(Gu,{to:j.url,end:!0,className:B("sm-sidebar-item group relative flex items-center transition-all duration-[120ms] ease-out",o?"justify-center px-2":"px-3",V?"bg-[hsl(0_0%_100%/0.06)] font-semibold":"hover:bg-[hsl(0_0%_100%/0.04)]"),activeClassName:"",onClick:y,children:[V&&t.jsx("span",{className:"absolute left-0 top-1/2 -translate-y-1/2 w-[3px] h-[22px] rounded-r-full bg-sidebar-primary shadow-[0_0_8px_hsl(var(--sidebar-primary)/0.6)]","aria-hidden":!0}),t.jsx(I,{className:B("shrink-0 transition-colors duration-[120ms]",V?"text-sidebar-accent-foreground":"text-sidebar-muted"),style:{width:18,height:18,strokeWidth:1.5}}),!o&&t.jsx("span",{className:B("flex-1 truncate",V?"text-sidebar-accent-foreground":"text-sidebar-foreground"),style:{marginLeft:10},children:j.title}),!o&&Y>0&&t.jsx("span",{className:"ml-auto inline-flex items-center justify-center rounded-[10px] bg-[#EF4444] text-white font-semibold",style:{height:18,minWidth:18,padding:"0 6px",fontSize:11,lineHeight:"18px"},children:Y>99?"99+":Y}),o&&Y>0&&t.jsx("span",{className:"absolute top-0.5 right-0.5 h-2 w-2 rounded-full bg-[#EF4444]"})]})})},j.url)},q=j=>t.jsx(ts,{className:"p-0",children:t.jsx(ns,{children:t.jsx(as,{className:"gap-0",children:j.map(I=>A(I))})})}),P={sales:{label:l.nav.groupSales,items:w,defaultOpen:!0},booking:{label:l.nav.groupBooking,items:x,defaultOpen:!1},operations:{label:l.nav.groupOperations,items:S,defaultOpen:!1},setup:{label:l.nav.groupSetup,items:k,defaultOpen:!1}},D="sm-sidebar-groups",[z,F]=d.useState(()=>{if(typeof window>"u")return{};try{const j=JSON.parse(localStorage.getItem(D)||"{}"),I={};return Object.entries(P).forEach(([V,Y])=>{I[V]=typeof j[V]=="boolean"?j[V]:Y.defaultOpen}),I}catch{const j={};return Object.entries(P).forEach(([I,V])=>{j[I]=V.defaultOpen}),j}});d.useEffect(()=>{F(j=>{const I={...j};let V=!1;return Object.entries(P).forEach(([Y,X])=>{X.items.some(N=>r.pathname===N.url||N.url!=="/app"&&r.pathname.startsWith(N.url))&&!I[Y]&&(I[Y]=!0,V=!0)}),V?I:j})},[r.pathname]);const R=j=>{F(I=>{const V={...I,[j]:!I[j]};try{localStorage.setItem(D,JSON.stringify(V))}catch{}return V})},E=j=>{const I=P[j],V=z[j];return o?q(I.items):t.jsx(ts,{className:"p-0",children:t.jsxs(Zu,{open:V,onOpenChange:()=>R(j),children:[t.jsx(Xu,{asChild:!0,children:t.jsxs("button",{type:"button",className:"flex items-center w-full px-3 pt-2 pb-1 text-[11px] font-medium uppercase tracking-wider text-sidebar-muted hover:text-sidebar-foreground transition-colors",children:[t.jsx("span",{className:"flex-1 text-left",children:I.label}),t.jsx(hn,{className:B("transition-transform duration-200",V?"rotate-0":"-rotate-90"),style:{width:14,height:14,strokeWidth:1.75}})]})}),t.jsx(em,{className:"overflow-hidden data-[state=open]:animate-collapsible-down data-[state=closed]:animate-collapsible-up",children:t.jsx(ns,{children:t.jsx(as,{className:"gap-0",children:I.items.map(Y=>A(Y))})})})]})})};return t.jsxs(qu,{collapsible:"icon",children:[t.jsx(es,{className:"hidden md:flex",style:{height:56,padding:"0 16px",paddingLeft:20,paddingRight:28},children:t.jsx("div",{className:B("flex items-center w-full h-full",o?"justify-center":"justify-start"),children:!o&&t.jsx("img",{src:Ca,alt:"Salesmate",className:"h-6 object-contain cursor-pointer translate-y-px",onClick:()=>m("/app")})})}),t.jsx(es,{className:"flex md:hidden",style:{height:56,padding:"0 16px"},children:t.jsx("div",{className:"flex items-center h-full",children:t.jsx("img",{src:Ca,alt:"Salesmate",className:"h-6 object-contain cursor-pointer",onClick:()=>m("/app")})})}),t.jsx(Wu,{className:"sm-sidebar-content",style:{paddingTop:4,paddingLeft:8,paddingRight:16,gap:0},children:h?q([{title:l.nav.dashboard,url:"/app",icon:Gl},{title:l.nav.calendar,url:"/app/calendar",icon:lr},{title:l.nav.myTrips,url:"/app/my-trips",icon:hi}]):t.jsxs(t.Fragment,{children:[q(v),t.jsx("div",{style:{height:8}}),E("sales"),E("booking"),E("operations"),E("setup"),(u==null?void 0:u.accountingEnabled)&&!(u!=null&&u.accountingSystem)&&t.jsxs(t.Fragment,{children:[t.jsx("div",{style:{height:12}}),q(C)]})]})}),t.jsx(Ku,{style:{padding:"8px 8px 12px",paddingLeft:16,paddingRight:20},children:t.jsxs("div",{className:B("flex items-center",o?"justify-center":"justify-between px-2"),children:[t.jsx(Be,{variant:"ghost",size:"icon",onClick:i,className:"h-8 w-8 shrink-0 text-sidebar-muted hover:text-sidebar-foreground hover:bg-[hsl(0_0%_100%/0.04)]",children:o?t.jsx(qf,{style:{width:18,height:18,strokeWidth:1.5}}):t.jsx(Bf,{style:{width:18,height:18,strokeWidth:1.5}})}),!o&&t.jsx(Be,{variant:"ghost",size:"icon",onClick:b,className:"shrink-0 h-8 w-8 text-sidebar-muted hover:text-sidebar-foreground hover:bg-[hsl(0_0%_100%/0.04)]",title:"Sign out",children:t.jsx(oh,{style:{width:18,height:18,strokeWidth:1.5}})})]})})]})}const Qs=["image/jpeg","image/png","image/webp","image/gif"],vk=["video/mp4","video/quicktime","video/webm"],JD=[...Qs,...vk],yk=["application/pdf","image/jpeg","image/png","image/webp"],bk=2*1024*1024,xk=2*1024*1024,ZD=10*1024*1024,kk=25*1024*1024,XD=200*1024*1024;function Js(e,n){return!e||!(e instanceof File)?"Ingen fil valgt":e.size===0?"Filen er tom":e.size>n.maxBytes?`Filen er for stor (maks ${Math.round(n.maxBytes/1024/1024)} MB)`:n.allowed.includes(e.type)?null:`Filtype "${e.type||"ukjent"}" er ikke tillatt`}const wk=900;function tm(){const{currentMembership:e}=he(),n=e==null?void 0:e.logoPath,a=e==null?void 0:e.companyId;return Ee({queryKey:["company-logo-url",a,n],queryFn:async()=>
478{if(!n)return null;const{data:i,error:r}=await T.storage.from("company-logos").createSignedUrl(n,wk);if(r)throw r;return i.signedUrl},enabled:!!n&&!!a,staleTime:10*60*1e3,gcTime:15*60*1e3})}function Sk(){const e=st(),{refreshMemberships:n}=he();return ke(),de({mutationFn:async({companyId:a,file:i})=>{var g;const r=Js(i,{allowed:Qs,maxBytes:bk});if(r)throw new Error(r);const o=((g=i.name.split(".").pop())==null?void 0:g.toLowerCase())||"png",l=`${a}/logo.${o}`,{error:s}=await T.storage.from("company-logos").upload(l,i,{upsert:!0,contentType:i.type});if(s)throw s;const{data:c,error:u}=await T.rpc("update_company_logo",{p_company_id:a,p_logo_path:l});if(u)throw u;const m=c;if(!m.ok)throw new Error(m.message||"Failed to update logo");return l},onSuccess:()=>{n(),e.invalidateQueries({queryKey:["company-logo-url"]})}})}function Ck(){const e=st(),{refreshMemberships:n}=he();return ke(),de({mutationFn:async({companyId:a,logoPath:i})=>{const{data:r,error:o}=await T.rpc("remove_company_logo",{p_company_id:a});if(o)throw o;const l=r;if(!l.ok)throw new Error(l.message||"Failed to remove logo");await T.storage.from("company-logos").remove([i])},onSuccess:()=>{n(),e.invalidateQueries({queryKey:["company-logo-url"]})}})}const yi=Pi,Nk=ji,nm=d.forwardRef(({className:e,...n},a)=>t.jsx(Xn,{ref:a,className:B("fixed inset-0 z-50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),style:{background:"rgba(6,10,20,0.55)",backdropFilter:"blur(6px)"},...n}));nm.displayName=Xn.displayName;const Na=d.forwardRef(({className:e,children:n,...a},i)=>t.jsxs(Nk,{children:[t.jsx(nm,{}),t.jsxs(ea,{ref:i,className:B("fixed left-[50%] top-[50%] z-50 grid w-[calc(100vw-2rem)] max-w-lg max-h-[calc(100dvh-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 p-6 duration-200 overflow-y-auto data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-[0.98] data-[state=open]:zoom-in-[0.98] data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm-dialog-container",e),...a,children:[t.jsx("div",{className:"pointer-events-none absolute inset-x-4 top-0 h-px z-[1] rounded-t-[14px]",style:{background:"linear-gradient(90deg, transparent, var(--dialog-glow-top-edge), transparent)",opacity:.3}}),n,t.jsxs(Ai,{className:"absolute right-5 top-5 rounded-[10px] p-1.5 opacity-70 ring-offset-background transition-all border border-[hsl(var(--dialog-border))] hover:opacity-100 hover:bg-[rgba(255,255,255,0.06)] focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none [.sm-form-overlay-shell_&]:hidden",style:{display:"var(--radix-dialog-content-close-display, flex)"},children:[t.jsx(Mt,{className:"h-4 w-4"}),t.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Na.displayName=ea.displayName;const am=({className:e,...n})=>t.jsx("div",{className:B("flex flex-col space-y-1.5 text-center sm:text-left border-b border-[hsl(var(--dialog-separator))] pb-4 px-1",e),...n});am.displayName="DialogHeader";const im=({className:e,...n})=>t.jsx("div",{className:B("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 border-t border-[hsl(var(--dialog-separator))] pt-4 px-1",e),...n});im.displayName="DialogFooter";const Aa=d.forwardRef(({className:e,...n},a)=>t.jsx(Ra,{ref:a,className:B("text-lg font-semibold leading-none tracking-tight",e),...n}));Aa.displayName=Ra.displayName;const bi=d.forwardRef(({className:e,...n},a)=>t.jsx(za,{ref:a,className:B("text-sm text-muted-foreground",e),...n}));bi.displayName=za.displayName;const Bt=_g,Jt=Eg,It=d.forwardRef(({className:e,children:n,...a},i)=>t.jsxs(nd,{ref:i,className:B("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm r
478ing-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",e),...a,children:[n,t.jsx(Ag,{asChild:!0,children:t.jsx(hn,{className:"h-4 w-4 opacity-50"})})]}));It.displayName=nd.displayName;const rm=d.forwardRef(({className:e,...n},a)=>t.jsx(ad,{ref:a,className:B("flex cursor-default items-center justify-center py-1",e),...n,children:t.jsx(Pr,{className:"h-4 w-4"})}));rm.displayName=ad.displayName;const om=d.forwardRef(({className:e,...n},a)=>t.jsx(id,{ref:a,className:B("flex cursor-default items-center justify-center py-1",e),...n,children:t.jsx(hn,{className:"h-4 w-4"})}));om.displayName=id.displayName;const Lt=d.forwardRef(({className:e,children:n,position:a="popper",...i},r)=>t.jsx(Pg,{children:t.jsxs(rd,{ref:r,className:B("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:a,...i,children:[t.jsx(rm,{}),t.jsx(jg,{className:B("p-1",a==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:n}),t.jsx(om,{})]})}));Lt.displayName=rd.displayName;const Ak=d.forwardRef(({className:e,...n},a)=>t.jsx(od,{ref:a,className:B("py-1.5 pl-8 pr-2 text-sm font-semibold",e),...n}));Ak.displayName=od.displayName;const mt=d.forwardRef(({className:e,children:n,...a},i)=>t.jsxs(sd,{ref:i,className:B("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",e),...a,children:[t.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:t.jsx(Tg,{children:t.jsx(Xt,{className:"h-4 w-4"})})}),t.jsx(Dg,{children:n})]}));mt.displayName=sd.displayName;const Pk=d.forwardRef(({className:e,...n},a)=>t.jsx(ld,{ref:a,className:B("-mx-1 my-1 h-px bg-muted",e),...n}));Pk.displayName=ld.displayName;var jk="Label",sm=d.forwardRef((e,n)=>t.jsx(lt.label,{...e,ref:n,onMouseDown:a=>{var r;a.target.closest("button, input, select, textarea")||((r=e.onMouseDown)==null||r.call(e,a),!a.defaultPrevented&&a.detail>1&&a.preventDefault())}}));sm.displayName=jk;var lm=sm;const Tk=Ma("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),ga=d.forwardRef(({className:e,...n},a)=>t.jsx(lm,{ref:a,className:B(Tk(),e),...n}));ga.displayName=lm.displayName;const Gn=d.forwardRef(({className:e,...n},a)=>t.jsx("textarea",{className:B("flex min-h-[80px] w-full rounded-md bg-input px-3 py-2 text-sm r
478ing-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 shadow-sm",e),ref:a,...n}));Gn.displayName="Textarea";var Zs="Progress",Xs=100,[Dk,e_]=_a(Zs),[_k,Ek]=Dk(Zs),cm=d.forwardRef((e,n)=>{const{__scopeProgress:a,value:i=null,max:r,getValueLabel:o=Rk,...l}=e;(r||r===0)&&!fc(r)&&console.error(zk(`${r}`,"Progress"));const s=fc(r)?r:Xs;i!==null&&!hc(i,s)&&console.error(Mk(`${i}`,"Progress"));const c=hc(i,s)?i:null,u=fr(c)?o(c,s):void 0;return t.jsx(_k,{scope:a,value:c,max:s,children:t.jsx(lt.div,{"aria-valuemax":s,"aria-valuemin":0,"aria-valuenow":fr(c)?c:void 0,"aria-valuetext":u,role:"progressbar","data-state":mm(c,s),"data-value":c??void 0,"data-max":s,...l,ref:n})})});cm.displayName=Zs;var dm="ProgressIndicator",um=d.forwardRef((e,n)=>{const{__scopeProgress:a,...i}=e,r=Ek(dm,a);return t.jsx(lt.div,{"data-state":mm(r.value,r.max),"data-value":r.value??void 0,"data-max":r.max,...i,ref:n})});um.displayName=dm;function Rk(e,n){return`${Math.round(e/n*100)}%`}function mm(e,n){return e==null?"indeterminate":e===n?"complete":"loading"}function fr(e){return typeof e=="number"}function fc(e){return fr(e)&&!isNaN(e)&&e>0}function hc(e,n){return fr(e)&&!isNaN(e)&&e<=n&&e>=0}function zk(e,n){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${n}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Xs}\`.`}function Mk(e,n){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${n}\`. The \`value\` prop must be: 479 - a positive number 480 - less than the value passed to \`max\` (or ${Xs} if no \`max\` prop is set) 481 - \`null\` or \`undefined\` if the progress is indeterminate. 482 483Defaulting to \`null\`.`}var pm=cm,Ik=um;const el=d.forwardRef(({className:e,value:n,...a},i)=>t.jsx(pm,{ref:i,className:B("relative h-4 w-full overflow-hidden rounded-full bg-secondary",e),...a,children:t.jsx(Ik,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(n||0)}%)`}})}));el.displayName=pm.displayName;function t_(e){if(!e)return{address:""};try{const n=JSON.parse(e);return typeof n=="object"&&n!==null&&"address"in n?n:{address:e}}catch{return{address:e}}}function n_(e){return JSON.stringify(e)}function Lk(){return Ee({queryKey:["google-maps-key"],queryFn:async()=>{const{data:e,error:n}=await T.functions.invoke("google-maps-key");if(n)throw n;return e.key},staleTime:1e3*60*60,retry:1})}let ai=null;function Fk(e){var n;return ai||((n=window.google)!=null&&n.maps?Promise.resolve():(ai=new Promise((a,i)=>{const r=document.createElement("script");r.src=`https://maps.googleapis.com/maps/api/js?key=${e}&loading=async`,r.async=!0,r.defer=!0,r.onload=()=>a(),r.onerror=()=>{ai=null,i(new Error("Failed to load Google Maps"))},document.head.appendChild(r)}),ai))}function gm({latitude:e,longitude:n,initialQuery:a,onSelect:i,placeholder:r="Search address...",inputClassName:o="sm-input"}){const{data:l,isLoading:s}=Lk(),[c,u]=d.useState(a||""),[m,g]=d.useState([]),[f,p]=d.useState(!1),[h,b]=d.useState(!1),[y,v]=d.useState(!1),w=d.useRef(null),x=d.useRef(null),S=e!=null&&n!=null;d.useEffect(()=>{a&&u(a)},[a]),d.useEffect(()=>{l&&Fk(l).then(()=>v(!0)).catch(()=>{})},[l]),d.useEffect(()=>{const P=D=>{var z;(z=x.current)!=null&&z.contains(D.target)||b(!1)};return document.addEventListener("mousedown",P),()=>document.removeEventListener("mousedown",P)},[]);const k=d.useCallback(async P=>{if(!l||P.trim().length<3){g([]);return}p(!0);try{const D=await fetch("https://places.googleapis.com/v1/places:autocomplete",{method:"POST",headers:{"Content-Type":"application/json","X-Goog-Api-Key":l,"X-Goog-FieldMask":"suggestions.placePrediction.placeId,suggestions.placePrediction.text.text"},body:JSON.stringify({input:P})});if(!D.ok)throw new Error("Autocomplete failed");const z=await D.json();g(((z==null?void 0:z.suggestions)||[]).map(F=>{var R,E,L;return{placeId:(R=F==null?void 0:F.placePrediction)==null?void 0:R.placeId,text:(L=(E=F==null?void 0:F.placePrediction)==null?void 0:E.text)==null?void 0:L.text}}).filter(F=>F.placeId&&F.text))}catch{g([])}finally{p(!1)}},[l]),C=d.useCallback(async P=>{var D,z;if(l)try{const F=await fetch(`https://places.googleapis.com/v1/places/${P.placeId}
483?fields=id,formattedAddress,location`,{headers:{"X-Goog-Api-Key":l}});if(!F.ok)throw new Error("Place details failed");const R=await F.json(),E=(D=R==null?void 0:R.location)==null?void 0:D.latitude,L=(z=R==null?void 0:R.location)==null?void 0:z.longitude,M=(R==null?void 0:R.formattedAddress)||P.text;typeof E=="number"&&typeof L=="number"&&i(E,L,M),u(M),b(!1),g([])}catch{b(!1)}},[l,i]),A=P=>{u(P),b(!0),w.current&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>void k(P),250)},q=d.useCallback(()=>{var P;!y||!c.trim()||typeof((P=google==null?void 0:google.maps)==null?void 0:P.Geocoder)!="function"||new google.maps.Geocoder().geocode({address:c},(D,z)=>{var R,E;if(z!=="OK"||!((E=(R=D==null?void 0:D[0])==null?void 0:R.geometry)!=null&&E.location))return;const F=D[0].geometry.location;i(F.lat(),F.lng(),D[0].formatted_address||c)})},[y,c,i]);return s?t.jsx("div",{className:"flex items-center gap-2 py-2 text-sm text-muted-foreground",children:t.jsx(kt,{className:"h-4 w-4 animate-spin"})}):t.jsxs("div",{ref:x,className:"space-y-2",children:[t.jsxs("div",{className:"relative",children:[t.jsx(ge,{value:c,onChange:P=>A(P.target.value),onFocus:()=>{l&&b(!0)},onKeyDown:P=>{P.key==="Enter"&&(P.preventDefault(),q(),b(!1))},onBlur:()=>window.setTimeout(()=>b(!1),120),placeholder:r,className:o}),l&&h&&(f||m.length>0)&&t.jsxs("div",{className:"absolute z-50 mt-1 w-full rounded-md border border-border bg-background shadow-lg overflow-hidden",children:[f&&t.jsx("div",{className:"px-3 py-2 text-sm text-muted-foreground flex items-center gap-2",children:t.jsx(kt,{className:"h-3.5 w-3.5 animate-spin"})}),!f&&m.map(P=>t.jsx("button",{type:"button",onMouseDown:D=>D.preventDefault(),onClick:()=>void C(P),className:"block w-full text-left px-3 py-2 text-sm hover:bg-muted",children:P.text},P.placeId))]})]}),S&&t.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[t.jsx(hi,{className:"h-3.5 w-3.5 shrink-0"}),t.jsxs("span",{children:[e.toFixed(4),", ",n.toFixed(4)]})]})]})}const fm=[{code:"en",name:"English",flag:Bs},{code:"no",name:"Norsk",flag:qs},{code:"de",name:"Deutsch",flag:Vs},{code:"fr",name:"Français",flag:Ws},{code:"es",name:"Español",flag:Ks},{code:"it",name:"Italiano",flag:Us},{code:"nl",name:"Nederlands",flag:null}],Ok=[{code:"NOK",name:"Norwegian Krone"},{code:"EUR",name:"Euro"},{code:"USD",name:"US Dollar"},{code:"GBP",name:"British Pound"}],ir={no:"NOK",en:"EUR",de:"EUR",fr:"EUR",es:"EUR",it:"EUR",nl:"EUR"},vc={US:"USD",GB:"GBP",NO:"NOK",DE:"EUR",FR:"EUR",ES:"EUR",IT:"EUR",NL:"EUR",AT:"EUR",BE:"EUR",FI:"EUR",IE:"EUR",PT:"EUR"};function rr(){var n,a;let e=((a=(n=navigator.language)==null?void 0:n.split("-")[0])==null?void 0:a.toLowerCase())??"en";return(e==="nb"||e==="nn")&&(e="no"),fm.some(i=>i.code===e)?e:"en"}function yc(e){var o;const n=e??rr();if(ir[n])return ir[n];const i=(navigator.language??"en").split("-");if(i.length>=2){const l=i[i.length-1].toUpperCase();if(vc[l])return vc[l]}let r=((o=i[0])==null?void 0:o.toLowerCase())??"en";return(r==="nb"||r==="nn")&&(r="no"),ir[r]??"EUR"}const Bk=new Set(["activities","products","events","resources","resourceTypes","members","competences","projects","sales","customers","contacts","leaves","blockings","recurringSeries","booking-screens"]);function qk({open:e,onOpenChange:n,onCompanyCreated:a}){const{toast:i}=Dt(),{t:r}=ke(),o=st();he();const{user:l}=Rn(),[s,c]=d.useState(1),[u,m]=d.useState(null),[g,f]=d.useState(""),[p,h]=d.useState(null),[b,y]=d.useState(null),[v,w]=d.useState(""),[x,S]=d.useState(!1),[k,C]=d.use
483State(null),[A,q]=d.useState(()=>rr()),[P,D]=d.useState(()=>{const ne=rr();return yc(ne)}),[z,F]=d.useState(1),[R,E]=d.useState([""]),[L,M]=d.useState([""]),[j,I]=d.useState([""]),[V,Y]=d.useState(!1),[X,_]=d.useState(""),[N,W]=d.useState(!1),[$,K]=d.useState(0),[H,re]=d.useState(""),[ie,Se]=d.useState([]),[oe,J]=d.useState(!1),[Z,be]=d.useState(!1),ze=d.useRef(null),Fe=d.useRef(!1),Le=()=>{c(1),m(null),f(""),h(null),y(null),w(""),S(!1),C(null);const ne=rr();q(ne),D(yc(ne)),F(1),E([""]),M([""]),I([""]),Y(!1),_(""),W(!1),K(0),re(""),Se([]),J(!1),be(!1)},Ve=ne=>{N||V||(ne||Le(),n(ne))},Ke=async()=>{if(!(!g.trim()||x||Fe.current)){Fe.current=!0,S(!0);try{const ne=g.trim().toLowerCase().replace(/[^a-z0-9æøå]+/g,"-").replace(/^-|-$/g,""),{data:xe,error:Ye}=await T.rpc("create_company",{p_name:g.trim(),p_slug:ne+"-"+Date.now()}),Je=xe;if(Ye||!(Je!=null&&Je.ok)){i({title:"Kunne ikke opprette firma",description:(Ye==null?void 0:Ye.message)||(Je==null?void 0:Je.message)||"Ukjent feil",variant:"destructive"});return}const Oe=Je.data.company_id;C(Oe),p!=null&&b!=null&&await T.from("companies").update({latitude:p,longitude:b,location_name:v||null}).eq("id",Oe),c(1.5)}finally{S(!1),Fe.current=!1}}},St=async()=>{if(k){if(await T.from("companies").update({primary_language:A,default_currency:P}).eq("id",k),P==="NOK"){await T.from("tax_codes").insert([{company_id:k,country_code:"NO",code:"1",tax_code_name:"Utgående MVA 25%",rate:25,tax_type:"VAT",direction:"output",saf_t_code:"3",price_includes_vat_default:!0,is_exempt:!1,is_outside_scope:!1,is_active:!0},{company_id:k,country_code:"NO",code:"11",tax_code_name:"Utgående MVA 15% næringsmidler",rate:15,tax_type:"VAT",direction:"output",saf_t_code:"31",price_includes_vat_default:!0,is_exempt:!1,is_outside_scope:!1,is_active:!0},{company_id:k,country_code:"NO",code:"13",tax_code_name:"Utgående MVA 12% transport/overnatting",rate:12,tax_type:"VAT",direction:"output",saf_t_code:"5",price_includes_vat_default:!0,is_exempt:!1,is_outside_scope:!1,is_active:!0},{company_id:k,country_code:"NO",code:"5",tax_code_name:"Inngående MVA 25%",rate:25,tax_type:"VAT",direction:"input",saf_t_code:"1",price_includes_vat_default:!1,is_exempt:!1,is_outside_scope:!1,is_active:!0},{company_id:k,country_code:"NO",code:"51",tax_code_name:"Inngående MVA 15% næringsmidler",rate:15,tax_type:"VAT",direction:"input",saf_t_code:"11",price_includes_vat_default:!1,is_exempt:!1,is_outside_scope:!1,is_active:!0},{company_id:k,country_code:"NO",code:"53",tax_code_name:"Inngående MVA 12% transport/overnatting",rate:12,tax_type:"VAT",direction:"input",saf_t_code:"15",price_includes_vat_default:!1,is_exempt:!1,is_outside_scope:!1,is_active:!0},{company_id:k,country_code:"NO",code:"6",tax_code_name:"MVA-fri omsetning",rate:0,tax_type:"VAT",direction:"output",saf_t_code:"6",price_includes_vat_default:!1,is_exempt:!0,is_outside_scope:!1,is_active:!0},{company_id:k,country_code:"NO",code:"0",tax_code_name:"Ingen MVA",rate:0,tax_type:"VAT",direction:"output",saf_t_code:"0",price_includes_vat_default:!1,is_exempt:!1,is_outside_scope:!0,is_active:!0}]);const ne=[{account_no:"1500",account_name:"Accounts receivable",account_type:"asset",normal_balance:"debit",category:"receivable",allow_tax:!1,is_active:!0},{account_no:"1505",account_name:"Stripe settlement account",account_type:"asset",normal_balance:"debit",category:"receivable",allow_tax:!1,is_active:!0},{account_no:"1506",account_name:"Other payment provider settlement",account_type:"asset",normal_balance:"debit",category:"receivable",allow_tax:!1,is_active:!0},{account_no:"1920",account_name:"Bank deposit",account_type:"asset",normal_balance:"debit",category:"bank",allow_tax:!1,is_active:!0},{account_no:"2400",account_name:"Accounts payable",account_type:"liability",normal_balance:"credit",category:"payable",allow_tax:!1,is_active:!0},{account_no:"2405",account_name:"Payable to activity suppliers",account_type:"liability",normal_balance:"credit",category:"payable",allow_tax:!1,is_active:!0},{account_no:"2406",account_name:"Supplier settlement, not yet invoiced",account_type:"liability",normal_balance:"credit",category:"payable",allow_tax:!1,is_active:!0},{account_no:"2700",account_name:"Output VAT high rate",account_type:"liability",normal_balance:"credit",category:"vat",allow_tax:!1,is_active:!0},{account_no:"2701",account_name:"Output VAT high rate (tracking)",account_type:"liability",normal_balance:"credit",category:"vat",allow_tax:!1,is_active:!0},{account_no:"2702",account_name:"Output VAT low rate",account_type:"liability",normal_balance:"credit",category:"vat",allow_tax:!1,is_active:!0},{account_no:"2703",account_name:"Output VAT zero rate / reporting",account_type:"liability",normal_balance:"credit",category:"vat",allow_tax:!1,is_active:!0},{account_no:"2710",account_name:"Input VAT high rate",account_type:"liability",normal_balance:"debit",category:"vat",allow_tax:!1,is_active:!0},{account_no:"2740",account_name:"VAT settlement / deferred VAT",account_type:"liability",normal_balance:"credit",category:"vat",allow_tax:!1,is_active:!0},{account_no:"2900",account_name:"Deferred revenue / prepaid income",account_type:"liability",normal_balance:"credit",category:"deferred",allow_tax:!1,is_active:!0},{account_no:"2901",account_name:"Customer prepayments for activities",account_type:"liability",normal_balance:"credit",category:"deferred",allow_tax:!1,is_active:!0},{account_no:"2905",account_name:"Unused gift cards",account_type:"liability",normal_balance:"credit",category:"deferred",allow_tax:!1,is_active:!0},{account_no:"2960",account_name:"Refund provision",account_type:"liability",normal_balance:"credit",category:"provision",allow_tax:!1,is_active:!0},{account_no:"2961",account_name:"Cancellation provision",account_type:"liability",normal_balance:"credit",category:"provision",allow_tax:!1,is_active:!0},{account_no:"3000",account_name:"Sales revenue, taxable",account_type:"revenue",normal_balance:"credit",category:"revenue",allow_tax:!0,is_active:!0},{account_no:"3001",account_name:"Sales revenue own activities, high VAT",account_type:"revenue",normal_balance:"credit",category:"revenue",allow_tax:!0,is_active:!0},{account_no:"3002",account_name:"Sales revenue own activities, low VAT",account_type:"revenue",normal_balance:"credit",category:"revenue",allow_tax:!0,is_active:!0},{account_no:"3003",account_name:"Sales revenue own activities, VAT exempt",account_type:"revenue",normal_balance:"credit",category:"revenue",allow_tax:!1,is_active:!0},{account_no:"3100",account_name:"Sales revenue, VAT exempt",account_type:"revenue",normal_balance:"credit",category:"revenue",allow_tax:!1,is_active:!0},{account_no:"3101",account_name:"Sales revenue resold activities, gross",account_type:"revenue",normal_balance:"credit",category:"revenue",allow_tax:!0,is_active:!0},{account_no:"3102",account_name:"Commission revenue, net",account_type:"revenue",normal_balance:"credit",category:"revenue",allow_tax:!0,is_active:!0},{account_no:"4000",account_name:"Purchase of goods/services for resale",account_type:"expense",normal_balance:"debit",category:"cost_of_sales",allow_tax:!0,is_active:!0},{account_no:"4001",account_name:"Purchase of activities from suppliers",account_type:"expense",normal_balance:"debit",category:"cost_of_sales",allow_tax:!0,is_active:!0},{account_no:"4002",account_name:"Purchase of guiding services",account_type:"expense",normal_balance:"debit",category:"cost_of_sales",allow_tax:!0,is_active:!0},{account_no:"4003",account_name:"Purchase of transport services",account_type:"expense",normal_balance:"debit",category:"cost_of_sales",allow_tax:!0,is_active:!0},{account_no:"7770",account_name:"Payment fees / card fees",account_type:"expense",normal_balance:"debit",category:"operating",allow_tax:!1,is_active:!0},{account_no:"7771",account_name:"Stripe fees",account_type:"expense",normal_balance:"debit",category:"operating",allow_tax:!1,is_active:!0}],{data:xe}=await T.from("gl_accounts").select("account_no").eq("company_id",k),Ye=new Set((xe||[]).map(Ne=>
483Ne.account_no)),Je=ne.filter(Ne=>!Ye.has(Ne.account_no)).map(Ne=>({...Ne,company_id:k}));Je.length>0&&await T.from("gl_accounts").insert(Je);const{data:Oe}=await T.from("income_profiles").select("name").eq("company_id",k),ce=new Set((Oe||[]).map(Ne=>Ne.name)),Pe=[{name:"Egen aktivitet â høy MVA",mode:"single",assessment:null,lines:[{label:"Inntekt 25% MVA",pct:100,acct:"3001",tc:"1"}]},{name:"Egen aktivitet â lav MVA",mode:"single",assessment:null,lines:[{label:"Inntekt 12% MVA",pct:100,acct:"3002",tc:"13"}]},{name:"Egen aktivitet â MVA-fri",mode:"single",assessment:null,lines:[{label:"Inntekt MVA-fri",pct:100,acct:"3003",tc:"6"}]},{name:"Transport + guiding",mode:"split",assessment:"Sammensatt aktivitet der transport (20%) er avgiftspliktig med lav MVA (12%) og guiding (80%) er MVA-fri.",lines:[{label:"Transport",pct:20,acct:"3002",tc:"13"},{label:"Guiding",pct:80,acct:"3003",tc:"6"}]}].filter(Ne=>!ce.has(Ne.name));if(Pe.length>0){const Ne=new Set,Re=new Set;for(const ye of Pe)for(const Me of ye.lines)Ne.add(Me.acct),Re.add(Me.tc);const{data:Xe}=await T.from("gl_accounts").select("id, account_no").eq("company_id",k).in("account_no",Array.from(Ne)),Ue={};for(const ye of Xe||[])Ue[ye.account_no]=ye.id;const{data:le}=await T.from("tax_codes").select("id, code").eq("company_id",k).in("code",Array.from(Re)),ue={};for(const ye of le||[])ue[ye.code]=ye.id;for(const ye of Pe){if(!ye.lines.every(nt=>Ue[nt.acct]&&ue[nt.tc]))continue;const{data:Ge}=await T.from("income_profiles").insert({company_id:k,name:ye.name,mode:ye.mode,...ye.assessment?{assessment:ye.assessment}:{}}).select("id").single();Ge&&await T.from("income_profile_lines").insert(ye.lines.map((nt,Ct)=>({profile_id:Ge.id,label:nt.label,allocation_percent:nt.pct,revenue_account_id:Ue[nt.acct],vat_code_id:ue[nt.tc],sort_order:Ct})))}}}c(2)}},tt=ne=>{m(ne),c(3)},Ze=()=>{const ne=document.createElement("div");ne.style.cssText="position:fixed;inset:0;z-index:99999;background:#11111F;display:flex;align-items:center;justify-content:center;";const xe=document.createElement("div");xe.style.cssText="width:40px;height:40px;border:3px solid rgba(255,255,255,0.15);border-top-color:#6366f1;border-radius:50%;animation:spin 0.8s linear infinite;";const Ye=document.createElement("style");Ye.textContent="@keyframes spin{to{transform:rotate(360deg)}}",ne.appendChild(xe),ne.appendChild(Ye),document.body.appendChild(ne),setTimeout(()=>{window.location.replace("/app")},100)},He=async()=>{k&&(await T.from("profiles").update({selected_company_id:k}).eq("id",(l==null?void 0:l.id)??""),localStorage.setItem("selected-company-id",k),a==null||a(k)),n(!1),Ze()},yt=(ne,xe)=>{xe([...ne,""])},wt=(ne,xe,Ye)=>{xe(ne.filter((Je,Oe)=>Oe!==Ye))},dt=(ne,xe,Ye,Je)=>{const Oe=[...ne];Oe[Ye]=Je,xe(Oe)},bt=async()=>{if(k)if(z===1)F(2);else if(z===2){const ne=L.map(xe=>xe.trim()).filter(Boolean);if(ne.length>0){const{error:xe}=await T.from("resource_types").insert(ne.map(Ye=>({company_id:k,name:Ye})));if(xe){i({title:"Feil",description:xe.message,variant:"destructive"});return}}F(3)}else{Y(!0);const ne=j.map(xe=>xe.trim()).filter(Boolean);for(const xe of ne){const{error:Ye}=await T.rpc("add_personnel_by_name",{p_name:xe});if(Ye){i({title:"Feil",description:Ye.message,variant:"destructive"}),Y(!1);return}}Y(!1),He()}},ve=()=>{z===1?F(2):z===2?F(3):He()},We=async()=>{var Ce;if(!k){i({title:"Mangler selskap",description:"Opprett selskapet først.",variant:"destructive"});return}const ne="havørnsafari med RIB, toppturer, kajakk, sauna, via ferrata, snøscootersafari",xe="Lofoten",Ye=X.trim()||ne,Je=v.trim()||xe;W(!0),K(0),Se([]),re("Starter generering..."),J(!1),be(!1);const Oe=new AbortController;ze.current=Oe;let ce=!1;try{const{data:{session:Pe}}=await T.auth.getSession();if(!(Pe!=null&&Pe.access_token))throw new Error("Ikke innlogget");const Ne=await fetch("https://ofonhoptrjclgvirmyal.supabase.co/functions/v1/generate-demo-data",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Pe.access_token}`,apikey:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9mb25ob3B0cmpjbGd2aXJteWFsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzA2NDA3NjQsImV4cCI6MjA4NjIxNjc2NH0.s4vViiLRdqUj1wP_rzNb2PXXklA3XQn-mLCha9_Pg4w"},body:JSON.stringify({company_id:k,description:Ye,location:Je}),signal:Oe.signal});if(!Ne.ok){const ue=await Ne.text();throw new Error(ue||`HTTP ${Ne.status}`)}const Re=(Ce=Ne.body)==null?void 0:Ce.getReader();if(!Re)throw new Error("No response stream");const Xe=new TextDecoder;let Ue="";const le=ue=>{if(!ue.startsWith("data: "))return;const ye=ue.slice(6).trim();if(ye)try{const Me=JSON.parse(ye);Se(Ge=>[...Ge.slice(-39),Me]),re(Me.detail),Me.progress>=0&&K(Me.progress),Me.step==="done"&&J(!0),Me.step==="error"&&(ce=!0,be(!0),i({title:"Feil under generering",description:Me.detail,variant:"destructive"}))}catch{}};for(;;){const{done:ue,value:ye}=await Re.read();if(ue)break;Ue+=Xe.decode(ye,{stream:!0});let Me;for(;(Me=Ue.indexOf(` 484`))!==-1;){const Ge=Ue.slice(0,Me).trim();Ue=Ue.slice(Me+1),le(Ge)}}if(Ue.trim())for(const ue of Ue.split(` 485`))le(ue.trim());o.invalidateQueries({predicate:ue=>{const ye=Array.isArray(ue.queryKey)?String(ue.queryKey[0]):"";return Bk.has(ye)}})}catch(Pe){Pe.name!=="AbortError"&&(ce=!0,be(!0),i({title:"Feil",description:Pe.message,variant:"destructive"}))}finally{W(!1),ze.current=null}},Qe=(ne,xe,Ye,Je)=>t.jsxs("div",{className:"space-y-2",children:[ne.map((Oe,ce)=>t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(ge,{placeholder:Ye,value:Oe,onChange:Ce=>dt(ne,xe,ce,Ce.target.value),autoFocus:ce===ne.length-1,onKeyDown:Ce=>{Ce.key==="Enter"&&(Ce.preventDefault(),yt(ne,xe))}}),ne.length>1&&t.jsx(Be,{variant:"ghost",size:"icon",className:"shrink-0 h-8 w-8 text-muted-foreground hover:text-destructive",onClick:()=>wt(ne,xe,ce),children:t.jsx(Mt,{className:"h-4 w-4"})})]},ce)),t.jsxs(Be,{variant:"ghost",size:"sm",className:"text-muted-foreground",onClick:()=>yt(ne,xe),children:[t.jsx(Rt,{className:"h-4 w-4 mr-1"}),Je]})]}),Q=()=>s===1?t.jsxs(t.Fragment,{children:[t.jsx(Cn,{className:"h-5 w-5 text-primary"}),r.createCompany.title]}):s===1.5?t.jsxs(t.Fragment,{children:[t.jsx(Ps,{className:"h-5 w-5 text-primary"}),r.createCompany.languageAndCurrencyStep]}):s===2?t.jsxs(t.Fragment,{children:[t.jsx(Cn,{className:"h-5 w-5 text-primary"}),r.createCompany.chooseType]}):s===3&&u==="demo"?t.jsxs(t.Fragment,{children:[t.jsx(gn,{className:"h-5 w-5 text-primary"}),"Generer demodata"]}):t.jsxs(t.Fragment,{children:[t.jsx(Cn,{className:"h-5 w-5 text-primary"}),z===1?r.createCompany.whatProducts:z===2?r.createCompany.whatResourceTypes:r.createCompany.addPersonnel]}),it=()=>t.jsx("div",{className:"flex items-center gap-1.5 mb-1",children:[1,2,3].map(ne=>t.jsx("div",{className:`h-1.5 flex-1 rounded-full transition-colors ${ne<=z?"bg-primary":"bg-muted"}`},ne))});return t.jsx(yi,{open:e,onOpenChange:Ve,children:t.jsxs(Na,{className:"sm:max-w-lg max-h-[90vh] overflow-y-auto",children:[t.jsx(am,{children:t.jsx(Aa,{className:"flex items-center gap-2",children:Q()})}),s===1&&t.jsxs("div",{className:"space-y-4 py-2",children:[t.jsxs("div",{className:"space-y-1.5",children:[t.jsx(ga,{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:r.companyProfile.companyName}),t.jsx(ge,{placeholder:"Mitt opplevelsesselskap",value:g,onChange:ne=>f(ne.target.value),disabled:x,autoFocus:!0,onKeyDown:ne=>ne.key==="Enter"&&g.trim()&&Ke()})]}),t.jsxs("div",{className:"space-y-1.5",children:[t.jsx(ga,{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:r.createCompany.locationLabel}),t.jsx(gm,{latitude:p,longitude:b,initialQuery:v,onSelect:(ne,xe,Ye)=>{h(ne),y(xe),w(Ye)},placeholder:r.createCompany.locationPlaceholder}),t.jsx("p",{className:"text-xs text-muted-foreground",children:r.createCompany.locationHelp}
485)]})]}),s===1.5&&t.jsxs("div",{className:"space-y-5 py-2",children:[t.jsx("p",{className:"text-sm text-muted-foreground",children:r.companySettings.languageAndCurrencyHelp}),t.jsxs("div",{className:"space-y-1.5",children:[t.jsx(ga,{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:r.companySettings.primaryLanguage}),t.jsx("div",{className:"grid grid-cols-3 gap-2",children:fm.filter(ne=>ne.flag).map(ne=>t.jsxs("button",{type:"button",onClick:()=>{q(ne.code);const xe=ir[ne.code];xe&&D(xe)},className:`flex items-center gap-2 rounded-lg border p-2.5 text-left transition-colors ${A===ne.code?"border-primary bg-primary/5 text-foreground":"border-border bg-card text-muted-foreground hover:border-muted-foreground"}`,children:[t.jsx("img",{src:ne.flag,alt:"",className:"h-4 w-6 rounded-sm object-cover"}),t.jsx("span",{className:"text-sm font-medium",children:ne.name})]},ne.code))})]}),t.jsxs("div",{className:"space-y-1.5",children:[t.jsx(ga,{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:r.companySettings.defaultCurrency}),t.jsxs(Bt,{value:P,onValueChange:D,children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{})}),t.jsx(Lt,{children:Ok.map(ne=>t.jsxs(mt,{value:ne.code,children:[ne.code," â ",ne.name]},ne.code))})]})]})]}),s===2&&t.jsxs("div",{className:"grid grid-cols-2 gap-3 py-2",children:[t.jsxs("button",{className:"flex flex-col items-center gap-3 rounded-lg border-2 border-border bg-card p-5 text-center transition-all hover:border-primary hover:bg-accent cursor-pointer",onClick:()=>tt("production"),children:[t.jsx(Cn,{className:"h-8 w-8 text-primary"}),t.jsxs("div",{children:[t.jsx("p",{className:"font-semibold text-sm",children:r.createCompany.production}),t.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:r.createCompany.productionDesc})]})]}),t.jsxs("button",{className:"flex flex-col items-center gap-3 rounded-lg border-2 border-border bg-card p-5 text-center transition-all hover:border-primary hover:bg-accent cursor-pointer",onClick:()=>tt("demo"),children:[t.jsx(gn,{className:"h-8 w-8 text-primary"}),t.jsxs("div",{children:[t.jsx("p",{className:"font-semibold text-sm",children:r.createCompany.demo}),t.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:r.createCompany.demoDesc})]})]})]}),s===3&&u==="production"&&t.jsxs("div",{className:"space-y-4 py-2",children:[it(),z===1&&Qe(R,E,r.createCompany.productPlaceholder,r.createCompany.addProduct),z===2&&Qe(L,M,r.createCompany.resourceTypePlaceholder,r.createCompany.addResourceType),z===3&&Qe(j,I,r.createCompany.personPlaceholder,r.createCompany.addPerson)]}),s===3&&u==="demo"&&t.jsxs("div",{className:"space-y-5 py-2",children:[t.jsx("p",{className:"text-sm text-muted-foreground",children:"Beskriv bedriften for Ã¥ generere realistisk testdata, eller hopp over dette steget."}),t.jsxs("div",{className:"space-y-1.5",children:[t.jsx(ga,{className:"text-xs font-medium uppercase tracking-wide text-muted-foreground",children:"Beskriv kort hvilke aktiviteter dere tilbyr"}),t.jsx(Gn,{placeholder:"F.eks. havørnsafari med RIB, toppturer, kajakk, sauna, via ferrata, snøscootersafari",rows:3,value:X,onChange:ne=>_(ne.target.value),disabled:N})]}),N&&t.jsxs("div",{className:"space-y-3 rounded-lg bg-muted/50 p-3",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(kt,{className:"h-4 w-4 animate-spin text-primary"}),t.jsx("span",{className:"text-sm font-medium animate-pulse",children:H.replace(/[\p{Emoji_Presentation}\p{Extended_Pictographic}]/gu,"").trim()})]}),t.jsx(el,{value:$,className:"transition-all duration-500"})]}),oe&&!N&&t.jsxs("div",{className:"flex items-center gap-2 rounded-lg bg-primary/10 p-3 text-sm text-primary",children:[t.jsx(di,{className:"h-4 w-4 shrink-0"}),"All demodata er opprettet!"]}),Z&&!N&&t.jsxs("div",{className:"flex items-center gap-2 rounded-lg bg-destructive/10 p-3 text-sm text-destructive",children:[t.jsx(Vf,{className:"h-4 w-4 shrink-0"}),"Det oppsto en feil. Noe data kan ha blitt opprettet."]})]}),t.jsxs(im,{className:"gap-2",children:[s===1&&t.jsxs(t.Fragment,{children:[t.jsx(Be,{variant:"secondary",onClick:()=>Ve(!1),children:r.common.cancel}),t.jsxs(Be,{onClick:Ke,disabled:!g.trim()||x,children:[x?t.jsx(kt,{className:"h-4 w-4 animate-spin mr-2"}):t.jsx(Wn,{className:"h-4 w-4 mr-2"}),r.common.next]})]}),s===1.5&&t.jsxs(Be,{onClick:St,children:[t.jsx(Wn,{className:"h-4 w-4 mr-2"}),r.common.next]}),s===3&&u==="production"&&t.jsxs(t.Fragment,{children:[t.jsxs(Be,{variant:"secondary",onClick:ve,children:[t.jsx(Yl,{className:"h-4 w-4 mr-2"}),r.createCompany.skip]}),t.jsxs(Be,{onClick:bt,disabled:V,children:[V?t.jsx(kt,{className:"h-4 w-4 animate-spin mr-2"}):z===3?t.jsx(di,{className:"h-4 w-4 mr-2"}):t.jsx(Wn,{className:"h-4 w-4 mr-2"}),z===3?r.createCompany.finish:r.common.next]})]}),s===3&&u==="demo"&&!oe&&t.jsxs(t.Fragment,{children:[t.jsx(Be,{variant:"secondary",onClick:()=>{N&&ze.current?ze.current.abort():He()},children:N?r.common.cancel:t.jsxs(t.Fragment,{children:[t.jsx(Yl,{className:"h-4 w-4 mr-2"}),r.createCompany.skip]})}),t.jsx(Be,{onClick:We,disabled:N,children:N?t.jsxs(t.Fragment,{children:[t.jsx(kt,{className:"h-4 w-4 animate-spin mr-2"}),"Genererer..."]}
485):t.jsxs(t.Fragment,{children:[t.jsx(gn,{className:"h-4 w-4 mr-2"}),"Generer demodata"]})})]}),s===3&&u==="demo"&&oe&&t.jsxs(Be,{onClick:He,children:[t.jsx(di,{className:"h-4 w-4 mr-2"}),"Ferdig â gÃ¥ til firmaet"]})]})]})})}const Vk=zg,Kk=Mg,Wk=d.forwardRef(({className:e,inset:n,children:a,...i},r)=>t.jsxs(cd,{ref:r,className:B("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent focus:bg-accent",n&&"pl-8",e),...i,children:[a,t.jsx(Ns,{className:"ml-auto h-4 w-4"})]}));Wk.displayName=cd.displayName;const Uk=d.forwardRef(({className:e,...n},a)=>t.jsx(dd,{ref:a,className:B("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...n}));Uk.displayName=dd.displayName;const hm=d.forwardRef(({className:e,sideOffset:n=4,...a},i)=>t.jsx(Rg,{children:t.jsx(ud,{ref:i,sideOffset:n,className:B("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...a})}));hm.displayName=ud.displayName;const is=d.forwardRef(({className:e,inset:n,...a},i)=>t.jsx(md,{ref:i,className:B("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",n&&"pl-8",e),...a}));is.displayName=md.displayName;const Hk=d.forwardRef(({className:e,children:n,checked:a,...i},r)=>t.jsxs(pd,{ref:r,className:B("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",e),checked:a,...i,children:[t.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:t.jsx(gd,{children:t.jsx(Xt,{className:"h-4 w-4"})})}),n]}));Hk.displayName=pd.displayName;const Gk=d.forwardRef(({className:e,children:n,...a},i)=>t.jsxs(fd,{ref:i,className:B("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",e),...a,children:[t.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:t.jsx(gd,{children:t.jsx(Wf,{className:"h-2 w-2 fill-current"})})}),n]}));Gk.displayName=fd.displayName;const $k=d.forwardRef(({className:e,inset:n,...a},i)=>t.jsx(hd,{ref:i,className:B("px-2 py-1.5 text-sm font-semibold",n&&"pl-8",e),...a}));$k.displayName=hd.displayName;const vm=d.forwardRef(({className:e,...n},a)=>t.jsx(vd,{ref:a,className:B("-mx-1 my-1 h-px bg-muted",e),...n}));vm.displayName=vd.displayName;var ym={exports:{}},bm={};/** 486 * @license React 487 * use-sync-external-store-shim.production.js 488 * 489 * Copyright (c) Meta Platforms, Inc. and affiliates. 490 * 491 * This source code is licensed under the MIT license found in the 492 * LICENSE file in the root directory of this source tree. 493 */var Pa=d;function Yk(e,n){return e===n&&(e!==0||1/e===1/n)||e!==e&&n!==n}var Qk=typeof Object.is=="function"?Object.is:Yk,Jk=Pa.useState,Zk=Pa.useEffect,Xk=Pa.useLayoutEffect,ew=Pa.useDebugValue;function tw(e,n){var a=n(),i=Jk({inst:{value:a,getSnapshot:n}}),r=i[0].inst,o=i[1];return Xk(function(){r.value=a,r.getSnapshot=n,bo(r)&&o({inst:r})},[e,a,n]),Zk(function(){return bo(r)&&o({inst:r}),e(function(){bo(r)&&o({inst:r})})},[e]),ew(a),a}function bo(e){var n=e.getSnapshot;e=e.value;try{var a=n();return!Qk(e,a)}catch{return!0}}function nw(e,n){return n()}var aw=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?nw:tw;bm.useSyncExternalStore=Pa.useSyncExternalStore!==void 0?Pa.useSyncExternalStore:aw;ym.exports=bm;var iw=ym.exports;function rw(){return iw.useSyncExternalStore(ow,()=>!0,()=>!1)}function ow(){return()=>{}}var tl="Avatar",[sw,a_]=_a(tl),[lw,xm]=sw(tl),km=d.forwardRef((e,n
vendor: 1,083 bytes, line 493
493)=>{const{__scopeAvatar:a,...i}=e,[r,o]=d.useState("idle");return t.jsx(lw,{scope:a,imageLoadingStatus:r,onImageLoadingStatusChange:o,children:t.jsx(lt.span,{...i,ref:n})})});km.displayName=tl;var wm="AvatarImage",Sm=d.forwardRef((e,n)=>{const{__scopeAvatar:a,src:i,onLoadingStatusChange:r=()=>{},...o}=e,l=xm(wm,a),s=cw(i,o),c=mi(u=>{r(u),l.onImageLoadingStatusChange(u)});return pi(()=>{s!=="idle"&&c(s)},[s,c]),s==="loaded"?t.jsx(lt.img,{...o,ref:n,src:i}):null});Sm.displayName=wm;var Cm="AvatarFallback",Nm=d.forwardRef((e,n)=>{const{__scopeAvatar:a,delayMs:i,...r}=e,o=xm(Cm,a),[l,s]=d.useState(i===void 0);return d.useEffect(()=>{if(i!==void 0){const c=window.setTimeout(()=>s(!0),i);return()=>window.clearTimeout(c)}},[i]),l&&o.imageLoadingStatus!=="loaded"?t.jsx(lt.span,{...r,ref:n}):null});Nm.displayName=Cm;function bc(e,n){return e?n?(e.src!==n&&(e.src=n),e.complete&&e.naturalWidth>0?"loaded":"loading"):"error":"idle"}function cw(e,{referrerPolicy:n,crossOrigin:a}){const i=rw(),r=d.useRef(null),o=i?(r.current||(r.current=new window.Image),r.current):null,[l,s]=d.use
493State(()=>bc(o,e));return pi(()=>{s(bc(o,e))},[o,e]),pi(()=>{const c=g=>()=>{s(g)};if(!o)return;const u=c("loaded"),m=c("error");return o.addEventListener("load",u),o.addEventListener("error",m),n&&(o.referrerPolicy=n),typeof a=="string"&&(o.crossOrigin=a),()=>{o.removeEventListener("load",u),o.removeEventListener("error",m)}},[o,a,n]),l}var Am=km,Pm=Sm,jm=Nm;const zr=d.forwardRef(({className:e,...n},a)=>t.jsx(Am,{ref:a,className:B("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",e),...n}));zr.displayName=Am.displayName;const Mr=d.forwardRef(({className:e,...n},a)=>t.jsx(Pm,{ref:a,className:B("aspect-square h-full w-full",e),...n}));Mr.displayName=Pm.displayName;const Ir=d.forwardRef(({className:e,...n},a)=>t.jsx(jm,{ref:a,className:B("flex h-full w-full items-center justify-center rounded-full bg-muted",e),...n}));Ir.displayName=jm.displayName;const dw={"/app":"dashboard","/app/calendar":"calendar","/app/bookings":"bookings","/app/booking":"bookingScreens","/app/sales":"sales","/app/resources":"resources","/app/resource-types":"resourceTypes","/app/blockings":"resourceBlockings","/app/leaves":"leaves","/app/personnel":"personnel","/app/competences":"competences","/app/products":"products","/app/projects":"projects","/app/customers":"customers","/app/recurring":"recurring","/app/activities":"activities","/app/activity-categories":"activityCategories","/app/price-categories":"priceCategories","/app/gift-cards":"giftCards","/app/contacts":"contacts","/app/chat":"chat","/app/my-trips":"myTrips","/app/my-profile":"myProfile","/app/settings":"companySettings","/app/settings/inbox":"companyInbox","/app/finance":"finance","/app/finance/documents":"financeDocuments","/app/finance/journal":"financeJournal","/app/settings/accounts":"financeAccounts","/app/settings/tax-codes":"financeTaxCodes","/app/finance/register":"financeRegister","/app/finance/receivables":"financeReceivables","/app/finance/payables":"financePayables","/app/settings/income-profiles":"incomeProfiles","/app/settings/promo-codes":"promoCodes"},Tm=d.createContext(null);function uw(){const e=d.useContext(Tm);if(!e)throw new Error("usePageActions must be used within AppLayout");return e}function Lr({children:e}){const{setActions:n}=uw();return O.useEffect(()=>(n(e),()=>n(null)),[e,n]),null}function mw(){var m;const{isMobile:e}=Oa(),{memberships:n,currentMembership:a,setCurrentCompanyId:i}=he(),{data:r}=tm(),{t:o}=ke(),[l,s]=d.useState(!1),{profile:c}=Rn(),u=Jn();return t.jsxs(t.Fragment,{children:[t.jsxs("header",{className:"h-[56px] shrink-0 flex items-center justify-between pl-6 pr-4",style:{backdropFilter:"blur(16px)",background:"linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0.02)), hsl(var(--surface-app))"},children:[t.jsx("div",{className:"flex items-center h-full",children:t.jsxs(Vk,{children:[t.jsxs(Kk,{className:"flex items-center gap-2 outline-none hover:opacity-80 transition-opacity duration-150",children:[r?t.jsx("img",{src:r,alt:(a==null?void 0:a.companyName)??"Logo",className:"max-h-7 object-contain dark:brightness-100 brightness-0"}):t.jsx("span",{className:"text-base font-semibold text-foreground",children:(a==null?void 0:a.companyName)??"No company"}),t.jsx(hn,{className:"h-4 w-4 text-muted-foreground"})]}),t.jsxs(hm,{align:"start",className:"w-64",children:[n.map(g=>t.jsxs(is,{onClick:()=>i(g.companyId),className:"flex items-center justify-between gap-2",children:[t.jsxs("span",{className:"flex items-center gap-2 truncate",children:[t.jsx(Cn,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),t.jsx("span",{className:"truncate",children:g.companyName})]}),g.companyId===(a==null?void 0:a.companyId)&&t.jsx(Xt,{className:"h-4 w-4 shrink-0 text-primary"})]},g.companyId)),t.jsx(vm,{}),t.jsxs(is,{onClick:()=>s(!0),className:"flex items-center gap-2",children:[t.jsx(Rt,{className:"h-4 w-4 text-muted-foreground"}),t.jsx("span",{children:o.createCompany.title})]})]})]})}),t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("button",{type:"button",onClick:()=>u("/app/my-profile"),className:"shrink-0 rounded-full focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:t.jsxs(zr,{className:"h-10 w-10 cursor-pointer",children:[t.jsx(Mr,{src:(c==null?void 0:c.avatar_url)??void 0}),t.jsx(Ir,{className:"text-sm",children:((m=c==null?void 0:c.display_name)==null?void 0:m.charAt(0))||"?"})]})}),e&&t.jsx(Vu,{className:"text-muted-foreground h-8 w-8"})]})]}),t.jsx(qk,{open:l,onOpenChange:s})]})}
493const pw=new Set(["/app/products","/app/settings/tax-codes","/app/settings/income-profiles","/app/settings/promo-codes","/app/settings/accounts"]),gw=new Set(["/app/finance/documents","/app/finance/journal","/app/finance/register"]),fw=new Set(["/app","/app/calendar","/app/resource-planner","/app/activities"]),hw=new Set(["/app/personnel","/app/resources","/app/customers","/app/sales","/app/projects","/app/bookings","/app/products","/app/contacts","/app/settings/inbox","/app/my-trips","/app/settings/accounts","/app/settings/tax-codes"]);function vw({actions:e}){const n=Ni(),a=Jn(),{t:i}=ke(),r=dw[n.pathname],o=r?i.pageTitles[r]:null,l=pw.has(n.pathname),s=gw.has(n.pathname);return o?t.jsxs("div",{className:"px-6 pt-4 pb-3 shrink-0",children:[l&&t.jsxs("button",{onClick:()=>a("/app/settings"),className:"flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors mb-1",children:[t.jsx(Uo,{className:"h-4 w-4"}),t.jsx("span",{children:i.companySettings.title})]}),s&&t.jsxs("button",{onClick:()=>a("/app/finance"),className:"flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors mb-1",children:[t.jsx(Uo,{className:"h-4 w-4"}),t.jsx("span",{children:i.pageTitles.finance})]}),t.jsxs("div",{className:"flex h-11 items-center justify-between gap-2",children:[t.jsx("h1",{className:B("min-w-0 truncate text-[22px] font-semibold tracking-tight text-foreground",n.pathname==="/app/calendar"&&"hidden"),children:o}),e&&t.jsx("div",{className:B("flex shrink-0 items-center gap-2",n.pathname==="/app/calendar"&&"w-full"),children:e})]})]}):e?t.jsx("div",{className:"px-6 pt-4 pb-3 shrink-0",children:t.jsx("div",{className:"flex h-11 items-center justify-end gap-2",children:t.jsx("div",{className:"flex h-10 items-center gap-2",children:e})})}):null}function yw({children:e}){const[n,a]=O.useState(null),i=Ni(),r=fw.has(i.pathname),o=hw.has(i.pathname)||i.pathname.startsWith("/app/settings/inbox/");return t.jsx(Tm.Provider,{value:{actions:n,setActions:a},children:t.jsx(Bu,{children:t.jsxs("div",{className:"h-screen flex w-full overflow-hidden",children:[t.jsx(hk,{}),t.jsxs("div",{id:"sm-content-panel",className:"flex-1 flex flex-col min-w-0 h-full relative z-20 -ml-3 rounded-l-2xl overflow-hidden",style:{background:"var(--content-panel-bg)",border:"var(--content-panel-border)",borderRight:"none",borderLeftColor:"var(--content-panel-border-left)",boxShadow:"var(--content-panel-shadow)"},children:[t.jsx(mw,{}),t.jsx("main",{className:B("flex-1 min-h-0",r||o?"overflow-hidden":"overflow-auto"),style:{WebkitOverflowScrolling:"touch"},children:t.jsxs("div",{className:B("min-h-full",!r&&!o&&"max-w-6xl",(r||o)&&"h-full flex flex-col",o&&"max-w-6xl"),children:[t.jsx(vw,{actions:n}),r||o?t.jsx("div",{className:"flex-1 min-h-0 flex flex-col",children:e}):e]})})]})]})})})}const xo="last-route";function ko(e){return e==="/app"||e.startsWith("/app/")}function bw({children:e}){const{user:n,loading:a}=Rn(),{loading:i,memberships:r}=he(),o=Ni(),l=d.useRef(!1);if(d.useEffect(()=>{if(n&&!a&&!i&&r.length>0){const s=o.pathname+o.search+o.hash;ko(s)&&localStorage.setItem(xo,s)}},[o.pathname,o.search,o.hash,n,a,i,r]),a||i)return t.jsx("div",{className:"sm-login-page h-screen flex items-center justify-center",children:t.jsx(kt,{className:"h-8 w-8 animate-spin text-primary"})});if(!n)return t.jsx(ya,{to:"/",replace:!0});if(r.length===0)return t.jsx(ya,{to:"/create-company",replace:!0});if(!l.current&&o.pathname==="/app"){const s=localStorage.getItem(xo);if(s&&!ko(s)&&localStorage.removeItem(xo),s&&ko(s)&&s!=="/app"&&s!=="/app/")return l.current=!0,t.jsx(ya,{to:s,replace:!0})}return l.current=!0,t.jsx(t.Fragment,{children:e})}const xw=d.createContext(null);function kw({children:e}){const[n,a]=d.useState(null),[i,r]=d.useState(null),o=d.useCallback((s,c)=>{a(s),r(c)},[]),l=d.useCallback(()=>{a(null),r(null)},[]);return t.jsx(xw.Provider,{value:{draggedItem:n,dragType:i,isDragging:n!==null,startDrag:o,endDrag:l},children:e})}async function ww(e,n){const{data:a,error:i}=await T.from("events").select("*").eq("company_id",e).eq("id",n).maybeSingle();if(i)throw i;return a}
493async function Sw(e){const{data:n,error:a}=await T.from("events").insert(e).select().single();if(a)throw a;return n}async function Cw(e,n,a){const{data:i,error:r}=await T.from("events").update(a).eq("company_id",e).eq("id",n).select().single();if(r)throw r;return i}async function Nw(e){const{error:n}=await T.from("events").delete().eq("id",e);if(n)throw n}async function Aw(e,n){const{data:a,error:i}=await T.rpc("assign_personnel",{p_event_id:e,p_member_id:n});if(i)throw i;const r=a;if(!r.ok)throw new Error(r.message||"Assignment failed");return r}async function Pw(e,n){const{data:a,error:i}=await T.rpc("assign_resource",{p_event_id:e,p_resource_id:n});if(i)throw i;const r=a;if(!r.ok)throw new Error(r.message||"Assignment failed");return r}async function jw(e,n){const{error:a}=await T.from("event_personnel").delete().eq("event_id",e).eq("member_id",n);if(a)throw a}async function Tw(e,n){const{error:a}=await T.from("event_resources").delete().eq("event_id",e).eq("resource_id",n);if(a)throw a}const On={get:ww,create:Sw,update:Cw,remove:Nw,assignPersonnel:Aw,assignResource:Pw,unassignPersonnel:jw,unassignResource:Tw};function Fr(){const n=Math.floor(Date.now()/864e5)*864e5;return{from:new Date(n-90*864e5).toISOString(),to:new Date(n+90*864e5).toISOString()}}function Or(e){const{currentMembership:n}=he(),a=n==null?void 0:n.companyId;return Ee({queryKey:["events",a,(e==null?void 0:e.from)??null,(e==null?void 0:e.to)??null],queryFn:async()=>{if(!a)return[];let i=T.from("events").select(` 494 *, 495 activities(name, buffer_before_minutes, buffer_after_minutes, is_sellable, 496 activity_personnel_requirements(id, competence_id, count, competences(name, max_pax)), 497 activity_resource_requirements(id, resource_type_id, count, resource_types(name, max_pax)) 498 ), 499 500 sales(status), 501 event_personnel(id, member_id, company_members(user_id, personnel_c
501ompetences(competence_id))), 502 event_resources(id, resource_id, resources(name, resource_type_id)) 503 `).eq("company_id",a).order("start_at",{ascending:!0});e&&(i=i.gte("start_at",e.from).lt("start_at",e.to));const{data:r,error:o}=await i;if(o)throw o;return r},enabled:!!a})}function nl(e,n){const{currentMembership:a}=he(),i=a==null?void 0:a.companyId;return Ee({queryKey:["calendar-events",i,e,n],queryFn:async()=>{if(!i||!e||!n)return[];const{data:r,error:o}=await T.from("events").select(` 504 *, 505 activities(name, is_sellable), 506 sales(status), 507 event_personnel(id, member_id), 508 event_resources(id, resource_id) 509 `).eq("company_id",i).gte("start_at",`${e}T00:00:00`).lte("start_at",`${n}T23:59:59`).order("start_at",{ascending:!0});if(o)throw o;return r},enabled:!!i&&!!e&&!!n,staleTime:5e3})}function Ei(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=["events",n],o=["calendar-events",n],l=()=>{a.invalidateQueries({queryKey:r}),a.invalidateQueries({queryKey:o}),a.invalidateQueries({queryKey:["events-status",n]})},s=de({mutationFn:async h=>{if(!n)throw new Error("No company");return On.create({company_id:n,name:h.name,activity_id:h.activity_id??null,start_at:h.start_at,end_at:h.end_at,max_participants:h.max_participants,registered_participants:h.registered_participants??0,bookable:h.bookable??!0,cancelled:h.cancelled??!1,sale_id:h.sale_id??null,project_id:h.project_id??null,customer_id:h.customer_id??null,buffer_before_minutes:h.buffer_before_minutes??null,buffer_after_minutes:h.buffer_after_minutes??null,billing_mode_override:h.billing_mode_override??null,booking_status_override:h.booking_status_override??null,operational_status:h.operational_status??"confirmed"})},onSuccess:()=>{l(),a.invalidateQueries({queryKey:["project-events"]}),a.invalidateQueries({queryKey:["project-overview"]})},onError:h=>i({title:"Error",description:h.message,variant:"destructive"})}),c=de({mutationFn:async h=>{if(!n)throw new Error("No company");await On.update(n,h.id,{name:h.name,activity_id:h.activity_id??null,start_at:h.start_at,end_at:h.end_at,max_participants:h.max_participants,registered_participants:h.registered_participants??0,bookable:h.bookable??!0,cancelled:h.cancelled??!1,sale_id:h.sale_id??null,project_id:h.project_id??null,customer_id:h.customer_id??null,buffer_before_minutes:h.buffer_before_minutes,buffer_after_minutes:h.buffer_after_minutes,billing_mode_override:h.billing_mode_override!==void 0?h.billing_mode_override:null,booking_status_override:h.booking_status_override!==void 0?h.booking_status_override:null,operational_status:h.operational_status??"confirmed"})},onMutate:async h=>{await a.cancelQueries({queryKey:r});const b=a.getQueryData(r);return a.setQueryData(r,y=>y==null?void 0:y.map(v=>v.id===h.id?{...v,name:h.name,start_at:h.start_at,end_at:h.end_at,max_participants:h.max_participants,registered_participants:h.registered_participants??v.registered_participants,bookable:h.bookable??v.bookable,cancelled:h.cancelled??v.cancelled,sale_id:h.sale_id??v.sale_id,buffer_before_minutes:h.buffer_before_minutes!==void 0?h.buffer_before_minutes:v.buffer_before_minutes,buffer_after_minutes:h.buffer_after_minutes!==void 0?h.buffer_after_minutes:v.buffer_after_minutes}:v)),{previous:b}},onError:(h,b,y)=>{y!=null&&y.previous&&a.setQueryData(r,y.previous),i({title:"Feil",description:h.message,variant:"destructive"})},onSettled:()=>{l(),a.invalidateQueries({queryKey:["series-events",n]})}}),u=de({mutationFn:async h=>{await On.remove(h)},onSuccess:()=>{l(),a.invalidateQueries({queryKey:["project-events"]}),a.invalidateQueries({queryKey:["project-overview"]})},onError:h=>i({title:"Error",description:h.message,variant:"destructive"})}),m=de({mutationFn:async({eventId:h,memberId:b})=>On.assignPersonnel(h,b),onMutate:async({eventId:h,memberId:b})=>{await a.cancelQueries({queryKey:r});const y=a.getQueryData(r);return a.setQueryData(r,v=>v==null?void 0:v.map(w=>w.id===h?{...w,event_personnel:[...w.event_personnel,{id:"temp-"+b,member_id:b}]}:w)),{previous:y}},onError:(h,b,y)=>{y!=null&&y.previous&&a.setQueryData(r,y.previous),i({title:"Feil",description:h.message,variant:"destructive"})},onSettled:(h,b,y)=>{l(),a.invalidateQueries({queryKey:["event-status",y.eventId]})}}),g=de({mutationFn:async({eventId:h,resourceId:b})=>On.assignResource(h,b),onMutate:async({eventId:h,resourceId:b})=>{await a.cancelQueries({queryKey:r});const y=a.getQueryData(r);return a.setQueryData(r,v=>v==null?void 0:v.map(w=>w.id===h?{...w,event_resources:[...w.event_resources,{id:"temp-"+b,resource_id:b}]}:w)),{previous:y}},onError:(h,b,y)=>{y!=null&&y.previous&&a.setQueryData(r,y.previous),i({title:"Feil",description:h.message,variant:"destructive"})},onSettled:(h,b,y)=>{l(),a.invalidateQueries({queryKey:["event-status",y.eventId]})}}),f=de({mutationFn:async({eventId:h,memberId:b})=>{await On.unassignPersonnel(h,b)},onMutate:async({eventId:h,memberId:b})=>{await a.cancelQueries({queryKey:r});const y=a.getQueryData(r);return a.setQueryData(r,v=>v==null?void 0:v.map(w=>w.id===h?{...w,event_personnel:w.event_personnel.filter(x=>x.member_id!==b)}:w)),{previous:y}},onError:(h,b,y)=>{y!=null&&y.previous&&a.setQueryData(r,y.previous),i({title:"Feil",description:h.message,variant:"destructive"})},onSettled:(h,b,y)=>{l(),a.invalidateQueries({queryKey:["event-status",y.eventId]})}}),p=de({mutationFn:async({eventId:h,resourceId:b})=>{await On.unassignResource(h,b)},onMutate:async({eventId:h,resourceId:b})=>{await a.cancelQueries({queryKey:r});const y=a.getQueryData(r);return a.setQueryData(r,v=>v==null?void 0:v.map(w=>w.id===h?{...w,event_resources:w.event_resources.filter(x=>x.resource_id!==b)}:w)),{previous:y}},onError:(h,b,y)=>{y!=null&&y.previous&&a.setQueryData(r,y.previous),i({title:"Feil",description:h.message,variant:"destructive"})},onSettled:(h,b,y)=>{l(),a.invalidateQueries({queryKey:["event-status",y.eventId]})}});return{create:s,update:c,remove:u,assignPersonnel:m,assignResource:g,unassignPersonnel:f,unassignResource:p}}function Dw(e){return Ee({queryKey:["event-status",e],queryFn:async()=>
509{if(!e)return null;const{data:n,error:a}=await T.rpc("calculate_event_status",{p_event_id:e});if(a)throw a;return n},enabled:!!e})}function al(e,n,a){return Ee({queryKey:["events-status",e,n,a],queryFn:async()=>{var s;if(!e)return{};const{data:i,error:r}=await T.rpc("get_events_with_status_for_range",{p_company_id:e,p_start_date:n,p_end_date:a});if(r)throw console.error("[useEventsStatus] RPC error:",r),r;const o=i;if(!o.ok)return console.error("[useEventsStatus] RPC returned not ok:",o.code,o.message),{};const l={};if((s=o.data)!=null&&s.events)for(const c of o.data.events)l[c.id]={status:c.status,conflicts:c.conflicts||[],missing:c.missing||[]};return l},enabled:!!e&&!!n&&!!a,staleTime:1e4})}function Wt(e){var n;return((n=e==null?void 0:e.profiles)==null?void 0:n.display_name)||(e==null?void 0:e.display_name)||"?"}function An(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["company_members",n],queryFn:async()=>{if(!n)return[];const{data:a,error:i}=await T.from("company_members").select(` 510 id, 511 user_id, 512 role, 513 display_name, 514 invited_at, 515 accepted_at, 516 notify_new_leads,
517 personnel_competences(competence_id, competences(name)) 518 `).eq("company_id",n).order("created_at");if(i)throw i;const r=(a||[]).map(c=>c.user_id).filter(Boolean),{data:o}=r.length?await T.from("profiles").select("id, display_name, avatar_url").in("id",r):{data:[]},l=new Map((o||[]).map(c=>[c.id,c]));return(a||[]).map(c=>({...c,profiles:l.get(c.user_id)||null}))},enabled:!!n})}function i_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["company_invites_pending",n],queryFn:async()=>{if(!n)return[];const{data:a,error:i}=await T.from("company_invites").select("id, email, role, created_at, expires_at, member_id").eq("company_id",n).is("accepted_at",null).order("created_at",{ascending:!1});if(i)throw i;return a||[]},enabled:!!n})}function r_(e){return Ee({queryKey:["series-defaults",e],queryFn:async()=>{if(!e)return{personnel:[],resources:[]};const[{data:n},{data:a}]=await Promise.all([T.from("series_default_personnel").select("member_id").eq("series_id",e),T.from("series_default_resources").select("resource_id").eq("series_id",e)]);return{personnel:(n||[]).map(i=>i.member_id),resources:(a||[]).map(i=>i.resource_id)}},enabled:!!e})}function Br(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["recurring-series",n],queryFn:async()=>{if(!n)return[];const{data:a,error:i}=await T.from("recurring_series").select("*, activities(name, default_duration_minutes, buffer_before_minutes, buffer_after_minutes), recurrence_rules(id, rule)").eq("company_id",n).order("name");if(i)throw i;return a},enabled:!!n})}function o_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=["recurring-series",n],o=de({mutationFn:async m=>{if(!n)throw new Error("No company");const g={company_id:n,name:m.name,activity_id:m.activity_id,timezone:m.timezone,start_date:m.start_date,end_date:m.end_date,time_of_day:m.time_of_day,duration_minutes:m.duration_minutes,bookable:m.bookable,booking_status:m.booking_status,bookable_from_at:m.bookable_from_at,max_participants:m.max_participants,slot_mode:m.slot_mode,slot_start_time:m.slot_mode==="generated"?m.slot_start_time:null,slot_end_time:m.slot_mode==="generated"?m.slot_end_time:null,slot_duration_minutes:m.slot_mode==="generated"?m.slot_duration_minutes:null,slot_buffer_minutes:m.slot_mode==="generated"?m.slot_buffer_minutes:0,rule:m.rule,default_personnel_ids:m.default_personnel_ids||[],default_resource_ids:m.default_resource_ids||[]},{data:f,error:p}=await T.rpc("create_series",{p_payload:g});if(p)throw p;const h=f;if(!h.ok)throw new Error(h.message||h.code||"Failed to create series");return h.data},onSuccess:()=>{a.invalidateQueries({queryKey:r}),a.invalidateQueries({queryKey:["events",n]})},onError:m=>i({title:"Error",description:m.message,variant:"destructive"})}),l=de({mutationFn:async m=>{const g={...m.patch};m.default_personnel_ids!==void 0&&(g.default_personnel_ids=m.default_personnel_ids),m.default_resource_ids!==void 0&&(g.default_resource_ids=m.default_resource_ids);const{data:f,error:p}=await T.rpc("update_series",{p_series_id:m.id,p_patch:g,p_scope:m.scope,p_anchor_instance_date:m.anchorDate||null});if(p)throw p;const h=f;if(!h.ok)throw new Error(h.message||h.code||"Failed to update series");return h.data},onSuccess:m=>{a.invalidateQueries({queryKey:r}),a.invalidateQueries({queryKey:["events",n]}),a.invalidateQueries({queryKey:["series-events",n]}),a.invalidateQueries({queryKey:["events-status",n]}),(m==null?void 0:m.skipped_count)>0&&i({title:"Info",description:`${m.updated_count} oppdatert, ${m.skipped_count} hoppet over (booket/overstyrt)`})},onError:m=>i({title:"Error",description:m.message,variant:"destructive"})}),s=de({mutationFn:async m=>{const{data:g,error:f}=await T.rpc("delete_series",{p_series_id:m.id,p_delete_events:m.deleteEvents??!1});if(f)throw f;const p=g;if(!p.ok)throw new Error(p.message||p.code||"Failed to delete series");return p.data},onSuccess:()=>{a.invalidateQueries({queryKey:r}),a.invalidateQueries({queryKey:["events",n]})},onError:m=>i({title:"Error",description:m.message,variant:"destructive"})}),c=de({mutationFn:async m=>{const g=new Date;g.setMonth(g.getMonth()+6);const f=g.toISOString().split("T")[0],{data:p,error:h}=await T.rpc("generate_series_occurrences",{p_series_id:m,p_until:f});if(h)throw h;const b=p;if(!b.ok)throw new Error(b.message||"Generation failed");return b.data},onSuccess:m=>{a.invalidateQueries({queryKey:r}),a.invalidateQueries({queryKey:["events",n]}),i({title:"Generert",description:`${(m==null?void 0:m.generated_count)??0} nye hendelser opprettet`})},onError:m=>i({title:"Error",description:m.message,variant:"destructive"})}),u=de({mutationFn:async m=>{const{error:g}=await T.from("recurring_series").update({active:m.active}).eq("id",m.id);if(g)throw g},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:m=>i({title:"Error",description:m.message,variant:"destructive"})});return{create:o,update:l,remove:s,generate:c,toggleActive:u}}function s_(){const{toast:e}=Dt();return de({mutationFn:async n=>{var o;const{data:a,error:i}=await T.rpc("preview_series_occurrences",{p_payload:n,p_count:50});if(i)throw i;const r=a;if(!r.ok)throw new Error(r.message||"Preview failed");return((o=r.data)==null?void 0:o.dates)??[]},onError:n=>e({title:"Error",description:n.message,variant:"destructive"})})}async function _w(e){const{data:n,error:a}=await T.from("activities").select("*").eq("company_id",e).order("name");if(a)throw a;return n??[]}async function Ew(e){const{data:n,error:a}=await T.from("activities").select(` 519 *, 520 activity_personnel_requirements(id, competence_id, count, competences(name, max_pax)), 521 activity_resource_requirements(id, resource_type_id, count, resource_types(name, max_pax)) 522 `).eq("company_id",e).order("name");if(a)throw a;return n??[]}async function Rw(e,n){const{data:a,error:i}=await T.from("activities").select("*").eq("company_id",e).eq("id",n).maybeSingle();if(i)throw i;return a}
522async function zw(e){const{data:n,error:a}=await T.from("activities").insert(e).select().single();if(a)throw a;return n}async function Mw(e,n,a){const{data:i,error:r}=await T.from("activities").update(a).eq("company_id",e).eq("id",n).select().single();if(r)throw r;return i}async function Iw(e){const{error:n}=await T.from("activities").delete().eq("id",e);if(n)throw n}async function Lw(e,n,a){if(await T.from("activity_personnel_requirements").delete().eq("activity_id",n),a.length===0)return;const{error:i}=await T.from("activity_personnel_requirements").insert(a.map(r=>({...r,activity_id:n,company_id:e})));if(i)throw i}async function Fw(e,n,a){if(await T.from("activity_resource_requirements").delete().eq("activity_id",n),a.length===0)return;const{error:i}=await T.from("activity_resource_requirements").insert(a.map(r=>({...r,activity_id:n,company_id:e})));if(i)throw i}function Ow(e,n,a,i){T.functions.invoke("translate-activity-name",{body:{company_id:e,activity_id:n,name:a,source_language:i}}).catch(()=>{})}const un={list:_w,listWithRequirements:Ew,get:Rw,create:zw,update:Mw,remove:Iw,replacePersonnelRequirements:Lw,replaceResourceRequirements:Fw,translateName:Ow};function Ri(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["activities",n],queryFn:async()=>n?await un.listWithRequirements(n):[],enabled:!!n})}function xc(e,n){return{company_id:e,name:n.name,description:n.description??null,default_duration_minutes:n.default_duration_minutes,buffer_before_minutes:n.buffer_before_minutes,buffer_after_minutes:n.buffer_after_minutes,bookable_default:n.bookable_default,max_participants:n.max_participants,is_sellable:n.is_sellable,category_id:n.category_id??null,income_profile_id:n.income_profile_id??null}}function l_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=["activities",n],o=de({mutationFn:async c=>{if(!n)throw new Error("No company");const u=await un.create(xc(n,c));return await un.replacePersonnelRequirements(n,u.id,c.personnelReqs),await un.replaceResourceRequirements(n,u.id,c.resourceReqs),un.translateName(n,u.id,c.name,c.source_language),u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),l=de({mutationFn:async c=>{if(!n)throw new Error("No company");const{company_id:u,...m}=xc(n,c);await un.update(n,c.id,m),await un.replacePersonnelRequirements(n,c.id,c.personnelReqs),await un.replaceResourceRequirements(n,c.id,c.resourceReqs),un.translateName(n,c.id,c.name,c.source_language)},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),s=de({mutationFn:async c=>{await un.remove(c)},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})});return{create:o,update:l,remove:s}}function Ba(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["customers",n],queryFn:async()=>{if(!n)return[];const{data:a,error:i}=await T.from("customers").select("*").eq("company_id",n).order("name");if(i)throw i;return a},enabled:!!n})}function Bw(e){return Ee({queryKey:["customer-overview",e],queryFn:async()=>{if(!e)return null;const{data:n,error:a}=await T.rpc("get_customer_overview",{p_customer_id:e});if(a)throw a;const i=n;if(!i.ok)throw new Error(i.message||"Failed to load customer");return i.data},enabled:!!e})}function Dm(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=["customers",n],o=de({mutationFn:async c=>{if(!n)throw new Error("No company");const{data:u,error:m}=await T.rpc("create_customer",{p_company_id:n,p_payload:c});if(m)throw m;const g=u;if(!g.ok)throw new Error(g.message||"Failed to create customer");return g.data},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),l=de({mutationFn:async c=>{const{id:u,...m}=c,{data:g,error:f}=await T.rpc("update_customer",{p_customer_id:u,p_payload:m});if(f)throw f;const p=g;if(!p.ok)throw new Error(p.message||"Failed to update customer")},onSuccess:()=>{a.invalidateQueries({queryKey:r}),a.invalidateQueries({queryKey:["customer-overview"]})},onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),s=de({mutationFn:async c=>{const{data:u,error:m}=await T.rpc("delete_customer",{p_customer_id:c});if(m)throw m;const g=u;if(!g.ok)throw new Error(g.message||"Failed to delete customer")},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})});return{create:o,update:l,remove:s}}function qw(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["projects",n],queryFn:async()=>
522{if(!n)return[];const{data:a,error:i}=await T.from("projects").select("*").eq("company_id",n).order("updated_at",{ascending:!1});if(i)throw i;return a},enabled:!!n})}function c_(e){return Ee({queryKey:["project-overview",e],queryFn:async()=>{if(!e)return null;const{data:n,error:a}=await T.rpc("get_project_overview",{p_project_id:e});if(a)throw a;const i=n;if(!i.ok)throw new Error(i.message||"Failed to load project overview");return i.data},enabled:!!e})}function d_(e){return Ee({queryKey:["project-events",e],queryFn:async()=>{if(!e)return[];const{data:n,error:a}=await T.from("events").select("*, activities(name)").eq("project_id",e).order("start_at",{ascending:!0});if(a)throw a;return(n||[]).map(i=>{var r;return{...i,activity_name:((r=i.activities)==null?void 0:r.name)??null}})},enabled:!!e})}function u_(e){return Ee({queryKey:["project-sales",e],queryFn:async()=>{if(!e)return[];const{data:n,error:a}=await T.rpc("get_project_sales",{p_project_id:e});if(a)throw a;const i=n;if(!i.ok)throw new Error(i.message||"Failed to load project sales");return i.data||[]},enabled:!!e})}function m_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=["projects",n],o=de({mutationFn:async c=>{if(!n)throw new Error("No company");const{data:u,error:m}=await T.rpc("create_project",{p_payload:{company_id:n,name:c.name,description:c.description||null,start_date:c.start_date||null,end_date:c.end_date||null,status:c.status||"draft",budget_amount:c.budget_amount??null,customer_id:c.customer_id??null}});if(m)throw m;const g=u;if(!g.ok)throw new Error(g.message||"Failed to create project");return g.data},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),l=de({mutationFn:async c=>{const{data:u,error:m}=await T.rpc("update_project",{p_project_id:c.id,p_patch:{name:c.name,description:c.description??null,start_date:c.start_date??null,end_date:c.end_date??null,status:c.status,budget_amount:c.budget_amount??null,customer_id:c.customer_id??null}});if(m)throw m;const g=u;if(!g.ok)throw new Error(g.message||"Failed to update project")},onSuccess:()=>{a.invalidateQueries({queryKey:r}),a.invalidateQueries({queryKey:["project-overview"]})},onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),s=de({mutationFn:async c=>{const{error:u}=await T.from("projects").delete().eq("id",c);if(u)throw u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})});return{create:o,update:l,remove:s}}function xi(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["resources",n],queryFn:async()=>{if(!n)return[];const{data:a,error:i}=await T.from("resources").select("*, resource_types(name)").eq("company_id",n).order("name");if(i)throw i;return a},enabled:!!n})}function p_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=["resources",n],o=de({mutationFn:async c=>{if(!n)throw new Error("No company");const{data:u,error:m}=await T.from("resources").insert({...c,company_id:n}).select().single();if(m)throw m;return u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),l=de({mutationFn:async({id:c,...u})=>{const{error:m}=await T.from("resources").update(u).eq("id",c);if(m)throw m},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),s=de({mutationFn:async c=>{const{error:u}=await T.from("resources").delete().eq("id",c);if(u)throw u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})});return{create:o,update:l,remove:s}}function il(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["resource_types",n],queryFn:async()=>{if(!n)return[];const{data:a,error:i}=await T.from("resource_types").select("*").eq("company_id",n).order("name");if(i)throw i;return a},enabled:!!n})}function g_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}
522=Dt(),r=["resource_types",n],o=de({mutationFn:async c=>{if(!n)throw new Error("No company");const{data:u,error:m}=await T.from("resource_types").insert({name:c.name,company_id:n,max_pax:c.max_pax??1,exclusive_allowed:c.exclusive_allowed??!1}).select().single();if(m)throw m;return u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),l=de({mutationFn:async c=>{const{error:u}=await T.from("resource_types").update({name:c.name,max_pax:c.max_pax,exclusive_allowed:c.exclusive_allowed}).eq("id",c.id);if(u)throw u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),s=de({mutationFn:async c=>{const{error:u}=await T.from("resource_types").delete().eq("id",c);if(u)throw u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})});return{create:o,update:l,remove:s}}function Vw(e){return Ee({queryKey:["event-resource-allocations",e],queryFn:async()=>{if(!e)return[];const{data:n,error:a}=await T.from("bookings").select("id").eq("event_id",e).in("status",["confirmed","paid","draft"]);if(a)throw a;if(!n||n.length===0)return[];const i=n.map(l=>l.id),{data:r,error:o}=await T.from("booking_resource_allocations").select("*").in("booking_id",i);if(o)throw o;return r??[]},enabled:!!e})}function qr(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["leaves",n],queryFn:async()=>{if(!n)return[];const{data:a,error:i}=await T.from("leaves").select("*").eq("company_id",n).order("start_at",{ascending:!1});if(i)throw i;const r=[...new Set(a.map(m=>m.member_id))];if(r.length===0)return a.map(m=>({...m,member_name:"?"}));const{data:o}=await T.from("company_members").select("id, user_id, display_name").in("id",r),l=[...new Set((o||[]).filter(m=>m.user_id).map(m=>m.user_id))],{data:s}=l.length>0?await T.from("profiles").select("id, display_name").in("id",l):{data:[]},c=new Map;(s||[]).forEach(m=>{m.display_name&&c.set(m.id,m.display_name)});const u=new Map;return(o||[]).forEach(m=>{const g=m.user_id&&c.get(m.user_id)||m.display_name||"?";u.set(m.id,g)}),a.map(m=>({...m,member_name:u.get(m.member_id)||"?"}))},enabled:!!n})}function f_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=["leaves",n],o=de({mutationFn:async c=>{if(!n)throw new Error("No company");const{data:u,error:m}=await T.from("leaves").insert({...c,company_id:n}).select().single();if(m)throw m;return u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),l=de({mutationFn:async({id:c,...u})=>{const{error:m}=await T.from("leaves").update(u).eq("id",c);if(m)throw m},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),s=de({mutationFn:async c=>{const{error:u}=await T.from("leaves").delete().eq("id",c);if(u)throw u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})});return{create:o,update:l,remove:s}}function Vr(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["resource_blockings",n],queryFn:async()=>{if(!n)return[];const{data:a,error:i}=await T.from("resource_blockings").select("*, resources(name)").eq("company_id",n).order("start_at",{ascending:!1});if(i)throw i;return a},enabled:!!n})}function h_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=["resource_blockings",n],o=de({mutationFn:async c=>{if(!n)throw new Error("No company");const{data:u,error:m}=await T.from("resource_blockings").insert({...c,company_id:n}).select().single();if(m)throw m;return u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),l=de({mutationFn:async({id:c,...u})=>{const{error:m}=await T.from("resource_blockings").update(u).eq("id",c);if(m)throw m},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),s=de({mutationFn:async c=>{const{error:u}=await T.from("resource_blockings").delete().eq("id",c);if(u)throw u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})});return{create:o,update:l,remove:s}}function rl(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["competences",n],queryFn:async()=>
522{if(!n)return[];const{data:a,error:i}=await T.from("competences").select("*").eq("company_id",n).order("name");if(i)throw i;return a},enabled:!!n})}function v_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=["competences",n],o=de({mutationFn:async({name:c,max_pax:u})=>{if(!n)throw new Error("No company");const{data:m,error:g}=await T.from("competences").insert({name:c,company_id:n,max_pax:u}).select().single();if(g)throw g;return m},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),l=de({mutationFn:async({id:c,name:u,max_pax:m})=>{const{error:g}=await T.from("competences").update({name:u,max_pax:m}).eq("id",c);if(g)throw g},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})}),s=de({mutationFn:async c=>{const{error:u}=await T.from("competences").delete().eq("id",c);if(u)throw u},onSuccess:()=>a.invalidateQueries({queryKey:r}),onError:c=>i({title:"Error",description:c.message,variant:"destructive"})});return{create:o,update:l,remove:s}}function ol(e,n,a){return e.map(i=>{var l,s;const r=((l=i.competences)==null?void 0:l.max_pax)??((s=a==null?void 0:a.find(c=>c.id===i.competence_id))==null?void 0:s.max_pax),o=r&&r>0&&n>0?Math.ceil(n/r):i.count;return{...i,count:o}})}function sl(e,n,a){return e.map(i=>{var l,s;const r=((l=i.resource_types)==null?void 0:l.max_pax)??((s=a==null?void 0:a.find(c=>c.id===i.resource_type_id))==null?void 0:s.max_pax),o=r&&r>0&&n>0?Math.ceil(n/r):i.count;return{...i,count:o}})}function Kw(e){if(typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",n.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}const _m=O.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),qa=()=>{const e=O.useContext(_m);if(!e)throw new Error("useDrawerContext must be used within a Drawer.Root");return e};Kw(`[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,100%,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,-100%,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(-100%,0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(100%,0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not( 523[data-state=closed] 524){opacity:0}
524[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,100%,0)}}@keyframes slideFromTop{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,-100%,0)}}@keyframes slideFromLeft{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(-100%,0,0)}}@keyframes slideFromRight{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(100%,0,0)}}`);const Ww=24,Uw=typeof window<"u"?d.useLayoutEffect:d.useEffect;function kc(...e){return(...n)=>{for(let a of e)typeof a=="function"&&a(...n)}}function Hw(){return ll(/^Mac/)}function Gw(){return ll(/^iPhone/)}function wc(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function $w(){return ll(/^iPad/)||Hw()&&navigator.maxTouchPoints>1}function Em(){return Gw()||$w()}function ll(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.platform):void 0}const wo=typeof document<"u"&&window.visualViewport;function Sc(e){let n=window.getComputedStyle(e);return/(auto|scroll)/.test(n.overflow+n.overflowX+n.overflowY)}function Rm(e){for(Sc(e)&&(e=e.parentElement);e&&!Sc(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}const Yw=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let $i=0,So;function Qw(e={}){let{isDisabled:n}=e;Uw(()=>{if(!n)return $i++,$i===1&&Em()&&(So=Jw()),()=>{$i--,$i===0&&(So==null||So())}},[n])}function Jw(){let e,n=0,a=g=>{e=Rm(g.target),!(e===document.documentElement&&e===document.body)&&(n=g.changedTouches[0].pageY)},i=g=>{if(!e||e===document.documentElement||e===document.body){g.preventDefault();return}let f=g.changedTouches[0].pageY,p=e.scrollTop,h=e.scrollHeight-e.clientHeight;h!==0&&((p<=0&&f>n||p>=h&&f<n)&&g.preventDefault(),n=f)},r=g=>{let f=g.target;rs(f)&&f!==document.activeElement&&(g.preventDefault(),f.style.transform="translateY(-2000px)",f.focus(),requestAnimationFrame(()=>{f.style.transform=""}))},o=g=>{let f=g.target;rs(f)&&(f.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{f.style.transform="",wo&&(wo.height<window.innerHeight?requestAnimationFrame(()=>{Cc(f)}):wo.addEventListener("resize",()=>Cc(f),{once:!0}))}))},l=()=>{window.scrollTo(0,0)},s=window.pageXOffset,c=window.pageYOffset,u=kc(Zw(document.documentElement,"paddingRight",`${window.innerWidth-document.documentElement.clientWidth}px`));window.scrollTo(0,0);let m=kc(ii(document,"touchstart",a,{passive:!1,capture:!0}),ii(document,"touchmove",i,{passive:!1,capture:!0}),ii(document,"touchend",r,{passive:!1,capture:!0}),ii(document,"focus",o,!0),ii(window,"scroll",l));return()=>{u(),m(),window.scrollTo(s,c)}}function Zw(e,n,a){let i=e.style[n];return e.style[n]=a,()=>{e.style[n]=i}}function ii(e,n,a,i){return e.addEventListener(n,a,i),()=>{e.removeEventListener(n,a,i)}}function Cc(e){let n=document.scrollingElement||document.documentElement;for(;e&&e!==n;){let a=Rm(e);if(a!==document.documentElement&&a!==document.body&&a!==e){let i=a.getBoundingClientRect().top,r=e.getBoundingClientRect().top,o=e.getBoundingClientRect().bottom;const l=a.getBoundingClientRect().bottom+Ww;o>l&&(a.scrollTop+=r-i)}e=a.parentElement}}function rs(e){return e instanceof HTMLInputElement&&!Yw.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function Xw(e,n){typeof e=="function"?e(n):e!=null&&(e.current=n)}function e0(...e){return n=>e.forEach(a=>Xw(a,n))}function zm(...e){return d.useCallback(e0(...e),e)}const Mm=new WeakMap;function Pt(e,n,a=!1){if(!e||!(e instanceof HTMLElement))return;let i={};
524Object.entries(n).forEach(([r,o])=>{if(r.startsWith("--")){e.style.setProperty(r,o);return}i[r]=e.style[r],e.style[r]=o}),!a&&Mm.set(e,i)}function t0(e,n){if(!e||!(e instanceof HTMLElement))return;let a=Mm.get(e);a&&(e.style[n]=a[n])}const jt=e=>{switch(e){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return e}};function Yi(e,n){if(!e)return null;const a=window.getComputedStyle(e),i=a.transform||a.webkitTransform||a.mozTransform;let r=i.match(/^matrix3d\((.+)\)$/);return r?parseFloat(r[1].split(", ")[jt(n)?13:12]):(r=i.match(/^matrix\((.+)\)$/),r?parseFloat(r[1].split(", ")[jt(n)?5:4]):null)}function n0(e){return 8*(Math.log(e+1)-2)}function Co(e,n){if(!e)return()=>{};const a=e.style.cssText;return Object.assign(e.style,n),()=>{e.style.cssText=a}}function a0(...e){return(...n)=>{for(const a of e)typeof a=="function"&&a(...n)}}const vt={DURATION:.5,EASE:[.32,.72,0,1]},Im=.4,i0=.25,r0=100,Lm=8,Bn=16,os=26,No="vaul-dragging";function Fm(e){const n=O.useRef(e);return O.useEffect(()=>{n.current=e}),O.useMemo(()=>(...a)=>n.current==null?void 0:n.current.call(n,...a),[])}function o0({defaultProp:e,onChange:n}){const a=O.useState(e),[i]=a,r=O.useRef(i),o=Fm(n);return O.useEffect(()=>{r.current!==i&&(o(i),r.current=i)},[i,r,o]),a}function Om({prop:e,defaultProp:n,onChange:a=()=>{}}){const[i,r]=o0({defaultProp:n,onChange:a}),o=e!==void 0,l=o?e:i,s=Fm(a),c=O.useCallback(u=>{if(o){const g=typeof u=="function"?u(e):u;g!==e&&s(g)}else r(u)},[o,e,r,s]);return[l,c]}function s0({activeSnapPointProp:e,setActiveSnapPointProp:n,snapPoints:a,drawerRef:i,overlayRef:r,fadeFromIndex:o,onSnapPointChange:l,direction:s="bottom",container:c,snapToSequentialPoint:u}){const[m,g]=Om({prop:e,defaultProp:a==null?void 0:a[0],onChange:n}),[f,p]=O.useState(typeof window<"u"?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);O.useEffect(()=>{function A(){p({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",A),()=>window.removeEventListener("resize",A)},[]);const h=O.useMemo(()=>m===(a==null?void 0:a[a.length-1])||null,[a,m]),b=O.useMemo(()=>a==null?void 0:a.findIndex(A=>A===m),[a,m]),y=a&&a.length>0&&(o||o===0)&&!Number.isNaN(o)&&a[o]===m||!a,v=O.useMemo(()=>{const A=c?{width:c.getBoundingClientRect().width,height:c.getBoundingClientRect().height}:typeof window<"u"?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};var q;return(q=a==null?void 0:a.map(P=>{const D=typeof P=="string";let z=0;if(D&&(z=parseInt(P,10)),jt(s)){const R=D?z:f?P*A.height:0;return f?s==="bottom"?A.height-R:-A.height+R:R}const F=D?z:f?P*A.width:0;return f?s==="right"?A.width-F:-A.width+F:F}))!=null?q:[]},[a,f,c]),w=O.useMemo(()=>b!==null?v==null?void 0:v[b]:null,[v,b]),x=O.useCallback(A=>{var q;const P=(q=v==null?void 0:v.findIndex(D=>D===A))!=null?q:null;l(P),Pt(i.current,{transition:`transform ${vt.DURATION}s cubic-bezier(${vt.EASE.join(",")})`,transform:jt(s)?`translate3d(0, ${A}px, 0)`:`translate3d(${A}px, 0, 0)`}),v&&P!==v.length-1&&P!==o&&P<o?Pt(r.current,{transition:`opacity ${vt.DURATION}s cubic-bezier(${vt.EASE.join(",")})`,opacity:"0"}):Pt(r.current,{transition:`opacity ${vt.DURATION}s cubic-bezier(${vt.EASE.join(",")})`,opacity:"1"}),g(a==null?void 0:a[Math.max(P,0)])},[i.current,a,v,o,r,g]);O.useEffect(()=>{if(m||e){var A;const q=(A=a==null?void 0:a.findIndex(P=>P===e||P===m))!=null?A:-1;v&&q!==-1&&typeof v[q]=="number"&&x(v[q])}},[m,e,a,v,x]);function S({draggedDistance:A,closeDrawer:q,velocity:P,dismissible:D}){if(o===void 0)return;const z=s==="bottom"||s==="right"?(w??0)-A:(w??0)+A,F=b===o-1,R=b===0,E=A>0;if(F&&Pt(r.current,{transition:`opacity ${vt.DURATION}s cubic-bezier(${vt.EASE.join(",")})`}),!u&&P>2&&!E){D?q():x(v[0]);return}if(!u&&P>2&&E&&v&&a){x(v[a.length-1]);return}const L=v==null?void 0:v.reduce((j,I)=>typeof j!="number"||typeof I!="number"?j:Math.abs(I-z)<Math.abs(j-z)?I:j),M=jt(s)?window.innerHeight:window.innerWidth;if(P>Im&&Math.abs(A)<M*.4){const j=E?1:-1;if(j>0&&h){x(v[a.length-1]);return}if(R&&j<0&&D&&q(),b===null)return;x(v[b+j]);return}x(L)}function k({draggedDistance:A}){if(w===null)return;const q=s==="bottom"||s==="right"?w-A:w+A;(s==="bottom"||s==="right")&&q<v[v.length-1]||(s==="top"||s==="left")&&q>v[v.length-1]||Pt(i.current,{transform:jt(s)?`translate3d(0, ${q}px, 0)`:`translate3d(${q}px, 0, 0)`})}function C(A,q){if(!a||typeof b!="number"||!v||o===void 0)return null;const P=b===o-1;if(b>=o&&q)return 0;if(P&&!q)return 1;if(!y&&!P)return null;const z=P?b+1:b-1,F=P?v[z]-v[z-1]:v[z+1]-v[z],R=A/Math.abs(F);return P?1-R:R}return{isLastSnapPoint:h,activeSnapPoint:m,shouldFade:y,getPercentageDragged:C,setActiveSnapPoint:g,activeSnapPointIndex:b,onRelease:S,onDrag:k,snapPointsOffset:v}}const l0=()=>()=>{};
524function c0(){const{direction:e,isOpen:n,shouldScaleBackground:a,setBackgroundColorOnScale:i,noBodyStyles:r}=qa(),o=O.useRef(null),l=d.useMemo(()=>document.body.style.backgroundColor,[]);function s(){return(window.innerWidth-os)/window.innerWidth}O.useEffect(()=>{if(n&&a){o.current&&clearTimeout(o.current);const c=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!c)return;a0(i&&!r?Co(document.body,{background:"black"}):l0,Co(c,{transformOrigin:jt(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:`${vt.DURATION}s`,transitionTimingFunction:`cubic-bezier(${vt.EASE.join(",")})`}));const u=Co(c,{borderRadius:`${Lm}px`,overflow:"hidden",...jt(e)?{transform:`scale(${s()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${s()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{u(),o.current=window.setTimeout(()=>{l?document.body.style.background=l:document.body.style.removeProperty("background")},vt.DURATION*1e3)}}},[n,a,l])}let ri=null;function d0({isOpen:e,modal:n,nested:a,hasBeenOpened:i,preventScrollRestoration:r,noBodyStyles:o}){const[l,s]=O.useState(()=>typeof window<"u"?window.location.href:""),c=O.useRef(0),u=O.useCallback(()=>{if(wc()&&ri===null&&e&&!o){ri={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};const{scrollX:g,innerHeight:f}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-c.current}px`,left:`${-g}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{const p=f-window.innerHeight;p&&c.current>=f&&(document.body.style.top=`${-(c.current+p)}px`)}),300)}},[e]),m=O.useCallback(()=>{if(wc()&&ri!==null&&!o){const g=-parseInt(document.body.style.top,10),f=-parseInt(document.body.style.left,10);Object.assign(document.body.style,ri),window.requestAnimationFrame(()=>{if(r&&l!==window.location.href){s(window.location.href);return}window.scrollTo(f,g)}),ri=null}},[l]);return O.useEffect(()=>{function g(){c.current=window.scrollY}return g(),window.addEventListener("scroll",g),()=>{window.removeEventListener("scroll",g)}},[]),O.useEffect(()=>{a||!i||(e?(!window.matchMedia("(display-mode: standalone)").matches&&u(),n||window.setTimeout(()=>{m()},500)):m())},[e,i,l,n,a,u,m]),{restorePositionSetting:m}}function Bm({open:e,onOpenChange:n,children:a,onDrag:i,onRelease:r,snapPoints:o,shouldScaleBackground:l=!1,setBackgroundColorOnScale:s=!0,closeThreshold:c=i0,scrollLockTimeout:u=r0,dismissible:m=!0,handleOnly:g=!1,fadeFromIndex:f=o&&o.length-1,activeSnapPoint:p,setActiveSnapPoint:h,fixed:b,modal:y=!0,onClose:v,nested:w,noBodyStyles:x,direction:S="bottom",defaultOpen:k=!1,disablePreventScroll:C=!0,snapToSequentialPoint:A=!1,preventScrollRestoration:q=!1,repositionInputs:P=!0,onAnimationEnd:D,container:z,autoFocus:F=!1}){var R,E;const[L=!1,M]=Om({defaultProp:k,prop:e,onChange:ce=>{n==null||n(ce),!ce&&!w&&dt(),setTimeout(()=>{D==null||D(ce)},vt.DURATION*1e3),ce&&!y&&typeof window<"u"&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),ce||(document.body.style.pointerEvents="auto")}}),[j,I]=O.useState(!1),[V,Y]=O.useState(!1),[X,_]=O.useState(!1),N=O.useRef(null),W=O.useRef(null),$=O.useRef(null),K=O.useRef(null),H=O.useRef(null),re=O.useRef(!1),ie=O.useRef(null),Se=O.useRef(0),oe=O.useRef(!1),J=O.useRef(0),Z=O.useRef(null),be=O.useRef(((R=Z.current)==null?void 0:R.getBoundingClientRect().height)||0),ze=O.useRef(((E=Z.current)==null?void 0:E.getBoundingClientRect().width)||0),Fe=O.useRef(0),Le=O.useCallback(ce=>{o&&ce===Ze.length-1&&(W.current=new Date)},[]),{activeSnapPoint:Ve,activeSnapPointIndex:Ke,setActiveSnapPoint:St,onRelease:tt,snapPointsOffset:Ze,onDrag:He,shouldFade:yt,getPercentageDragged:wt}=s0({snapPoints:o,activeSnapPointProp:p,setActiveSnapPointProp:h,drawerRef:Z,fadeFromIndex:f,overlayRef:N,onSnapPointChange:Le,direction:S,container:z,snapToSequentialPoint:A});Qw({isDisabled:!L||V||!y||X||!j||!P||!C});const{restorePositionSetting:dt}=d0({isOpen:L,modal:y,nested:w,hasBeenOpened:j,preventScrollRestoration:q,noBodyStyles:x});function bt(){return(window.innerWidth-os)/window.innerWidth}
524function ve(ce){var Ce,Pe;!m&&!o||Z.current&&!Z.current.contains(ce.target)||(be.current=((Ce=Z.current)==null?void 0:Ce.getBoundingClientRect().height)||0,ze.current=((Pe=Z.current)==null?void 0:Pe.getBoundingClientRect().width)||0,Y(!0),$.current=new Date,Em()&&window.addEventListener("touchend",()=>re.current=!1,{once:!0}),ce.target.setPointerCapture(ce.pointerId),Se.current=jt(S)?ce.pageY:ce.pageX)}function We(ce,Ce){var Pe,Ne;let Re=ce;const Xe=(Pe=window.getSelection())==null?void 0:Pe.toString(),Ue=Z.current?Yi(Z.current,S):null,le=new Date;if(Re.hasAttribute("data-vaul-no-drag")||Re.closest("[data-vaul-no-drag]"))return!1;if(S==="right"||S==="left")return!0;if(W.current&&le.getTime()-W.current.getTime()<500)return!1;if(Ue!==null&&(S==="bottom"?Ue>0:Ue<0))return!0;if(Xe&&Xe.length>0)return!1;if(le.getTime()-((Ne=H.current)==null?void 0:Ne.getTime())<u&&Ue===0||Ce)return H.current=le,!1;for(;Re;){if(Re.scrollHeight>Re.clientHeight){if(Re.scrollTop!==0)return H.current=new Date,!1;if(Re.getAttribute("role")==="dialog")return!0}Re=Re.parentNode}return!0}function Qe(ce){if(Z.current&&V){const Ce=S==="bottom"||S==="right"?1:-1,Pe=(Se.current-(jt(S)?ce.pageY:ce.pageX))*Ce,Ne=Pe>0,Re=o&&!m&&!Ne;if(Re&&Ke===0)return;const Xe=Math.abs(Pe),Ue=document.querySelector("[data-vaul-drawer-wrapper]"),le=S==="bottom"||S==="top"?be.current:ze.current;let ue=Xe/le;const ye=wt(Xe,Ne);if(ye!==null&&(ue=ye),Re&&ue>=1||!re.current&&!We(ce.target,Ne))return;if(Z.current.classList.add(No),re.current=!0,Pt(Z.current,{transition:"none"}),Pt(N.current,{transition:"none"}),o&&He({draggedDistance:Pe}),Ne&&!o){const Ge=n0(Pe),nt=Math.min(Ge*-1,0)*Ce;Pt(Z.current,{transform:jt(S)?`translate3d(0, ${nt}px, 0)`:`translate3d(${nt}px, 0, 0)`});return}const Me=1-ue;if((yt||f&&Ke===f-1)&&(i==null||i(ce,ue),Pt(N.current,{opacity:`${Me}`,transition:"none"},!0)),Ue&&N.current&&l){const Ge=Math.min(bt()+ue*(1-bt()),1),nt=8-ue*8,Ct=Math.max(0,14-ue*14);Pt(Ue,{borderRadius:`${nt}px`,transform:jt(S)?`scale(${Ge}) translate3d(0, ${Ct}px, 0)`:`scale(${Ge}) translate3d(${Ct}px, 0, 0)`,transition:"none"},!0)}if(!o){const Ge=Xe*Ce;Pt(Z.current,{transform:jt(S)?`translate3d(0, ${Ge}px, 0)`:`translate3d(${Ge}px, 0, 0)`})}}}O.useEffect(()=>{var ce;function Ce(){if(!Z.current||!P)return;const Pe=document.activeElement;if(rs(Pe)||oe.current){var Ne;const Re=((Ne=window.visualViewport)==null?void 0:Ne.height)||0,Xe=window.innerHeight;let Ue=Xe-Re;const le=Z.current.getBoundingClientRect().height||0,ue=le>Xe*.8;Fe.current||(Fe.current=le);const ye=Z.current.getBoundingClientRect().top;if(Math.abs(J.current-Ue)>60&&(oe.current=!oe.current),o&&o.length>0&&Ze&&Ke){const Me=Ze[Ke]||0;Ue+=Me}if(J.current=Ue,le>Re||oe.current){const Me=Z.current.getBoundingClientRect().height;let Ge=Me;Me>Re&&(Ge=Re-(ue?ye:os)),b?Z.current.style.height=`${Me-Math.max(Ue,0)}px`:Z.current.style.height=`${Math.max(Ge,Re-ye)}px`}else Z.current.style.height=`${Fe.current}px`;o&&o.length>0&&!oe.current?Z.current.style.bottom="0px":Z.current.style.bottom=`${Math.max(Ue,0)}px`}}return(ce=window.visualViewport)==null||ce.addEventListener("resize",Ce),()=>{var Pe;return(Pe=window.visualViewport)==null?void 0:Pe.removeEventListener("resize",Ce)}},[Ke,o,Ze]);function Q(ce){ne(),v==null||v(),ce||M(!1),setTimeout(()=>{o&&St(o[0])},vt.DURATION*1e3)}function it(){if(!Z.current)return;const ce=document.querySelector("[data-vaul-drawer-wrapper]"),Ce=Yi(Z.current,S);Pt(Z.current,{transform:"translate3d(0, 0, 0)",transition:`transform ${vt.DURATION}s cubic-bezier(${vt.EASE.join(",")})`}),Pt(N.current,{transition:`opacity ${vt.DURATION}s cubic-bezier(${vt.EASE.join(",")})`,opacity:"1"}),l&&Ce&&Ce>0&&L&&Pt(ce,{borderRadius:`${Lm}px`,overflow:"hidden",...jt(S)?{transform:`scale(${bt()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${bt()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:`${vt.DURATION}s`,transitionTimingFunction:`cubic-bezier(${vt.EASE.join(",")})`},!0)}function ne(){!V||!Z.current||(Z.current.classList.remove(No),re.current=!1,Y(!1),K.current=ne
524w Date)}function xe(ce){if(!V||!Z.current)return;Z.current.classList.remove(No),re.current=!1,Y(!1),K.current=new Date;const Ce=Yi(Z.current,S);if(!We(ce.target,!1)||!Ce||Number.isNaN(Ce)||$.current===null)return;const Pe=K.current.getTime()-$.current.getTime(),Ne=Se.current-(jt(S)?ce.pageY:ce.pageX),Re=Math.abs(Ne)/Pe;if(Re>.05&&(_(!0),setTimeout(()=>{_(!1)},200)),o){tt({draggedDistance:Ne*(S==="bottom"||S==="right"?1:-1),closeDrawer:Q,velocity:Re,dismissible:m}),r==null||r(ce,!0);return}if(S==="bottom"||S==="right"?Ne>0:Ne<0){it(),r==null||r(ce,!0);return}if(Re>Im){Q(),r==null||r(ce,!1);return}var Xe;const Ue=Math.min((Xe=Z.current.getBoundingClientRect().height)!=null?Xe:0,window.innerHeight);var le;const ue=Math.min((le=Z.current.getBoundingClientRect().width)!=null?le:0,window.innerWidth),ye=S==="left"||S==="right";if(Math.abs(Ce)>=(ye?ue:Ue)*c){Q(),r==null||r(ce,!1);return}r==null||r(ce,!0),it()}O.useEffect(()=>(L&&(Pt(document.documentElement,{scrollBehavior:"auto"}),W.current=new Date),()=>{t0(document.documentElement,"scrollBehavior")}),[L]);function Ye(ce){const Ce=ce?(window.innerWidth-Bn)/window.innerWidth:1,Pe=ce?-Bn:0;ie.current&&window.clearTimeout(ie.current),Pt(Z.current,{transition:`transform ${vt.DURATION}s cubic-bezier(${vt.EASE.join(",")})`,transform:`scale(${Ce}) translate3d(0, ${Pe}px, 0)`}),!ce&&Z.current&&(ie.current=setTimeout(()=>{const Ne=Yi(Z.current,S);Pt(Z.current,{transition:"none",transform:jt(S)?`translate3d(0, ${Ne}px, 0)`:`translate3d(${Ne}px, 0, 0)`})},500))}function Je(ce,Ce){if(Ce<0)return;const Pe=(window.innerWidth-Bn)/window.innerWidth,Ne=Pe+Ce*(1-Pe),Re=-Bn+Ce*Bn;Pt(Z.current,{transform:jt(S)?`scale(${Ne}) translate3d(0, ${Re}px, 0)`:`scale(${Ne}) translate3d(${Re}px, 0, 0)`,transition:"none"})}function Oe(ce,Ce){const Pe=jt(S)?window.innerHeight:window.innerWidth,Ne=Ce?(Pe-Bn)/Pe:1,Re=Ce?-Bn:0;Ce&&Pt(Z.current,{transition:`transform ${vt.DURATION}s cubic-bezier(${vt.EASE.join(",")})`,transform:jt(S)?`scale(${Ne}) translate3d(0, ${Re}px, 0)`:`scale(${Ne}) translate3d(${Re}px, 0, 0)`})}return O.createElement(Pi,{defaultOpen:k,onOpenChange:ce=>{!m&&!ce||(ce?I(!0):Q(!0),M(ce))},open:L},O.createElement(_m.Provider,{value:{activeSnapPoint:Ve,snapPoints:o,setActiveSnapPoint:St,drawerRef:Z,overlayRef:N,onOpenChange:n,onPress:ve,onRelease:xe,onDrag:Qe,dismissible:m,handleOnly:g,isOpen:L,isDragging:V,shouldFade:yt,closeDrawer:Q,onNestedDrag:Je,onNestedOpenChange:Ye,onNestedRelease:Oe,keyboardIsOpen:oe,modal:y,snapPointsOffset:Ze,direction:S,shouldScaleBackground:l,setBackgroundColorOnScale:s,noBodyStyles:x,container:z,autoFocus:F}},a))}const qm=O.forwardRef(function({...e},n){const{overlayRef:a,snapPoints:i,onRelease:r,shouldFade:o,isOpen:l,modal:s}=qa(),c=zm(n,a),u=i&&i.length>0;return s?O.createElement(Xn,{onMouseUp:r,ref:c,"data-vaul-overlay":"","data-vaul-snap-points":l&&u?"true":"false","data-vaul-snap-points-overlay":l&&o?"true":"false",...e}):(typeof window<"u"&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),null)});qm.displayName="Drawer.Overlay";const Vm=O.forwardRef(function({onPointerDownOutside:e,style:n,onOpenAutoFocus:a,...i},r){const{drawerRef:o,onPress:l,onRelease:s,onDrag:c,keyboardIsOpen:u,snapPointsOffset:m,modal:g,isOpen:f,direction:p,snapPoints:h,container:b,handleOnly:y,autoFocus:v}=qa(),[w,x]=O.useState(!1),S=zm(r,o),k=O.useRef(null),C=O.useRef(null),A=O.useRef(!1),q=h&&h.length>0;c0();const P=(z,F,R=0)=>{if(A.current)return!0;const E=Math.abs(z.y),L=Math.abs(z.x),M=L>E,j=["bottom","right"].includes(F)?1:-1;if(F==="left"||F==="right"){if(!(z.x*j<0)&&L>=0&&L<=R)return M}else if(!(z.y*j<0)&&E>=0&&E<=R)return!M;return A.current=!0,!0};O.useEffect(()=>{q&&window.requestAnimationFrame(()=>{x(!0)})},[]);function D(z){k.current=null,A.current=!1,s(z)}return O.createElement(ea,{"data-vaul-drawer-direction":p,"data-vaul-drawer":"","data-vaul-delayed-snap-points":w?"true":"false","data-vaul-snap-points":f&&q?"true":"false","data-vaul-custom-container":b?"true":"false",...i,ref:S,style:m&&m.length>0?{"--snap-point-height":`${m[0]}px`,...n}:n,onPointerDown:z=>{y||(i.onPointerDown==null||i.onPointerDown.call(i,z),k.current={x:z.pageX,y:z.pageY},l(z))},onOpenAutoFocus:z=>{a==null||a(z),v||z.preventDefault()},onPointerDownOutside:z=>{if(e==null||e(z),!g||z.defaultPrevented){z.preventDefault();return}u.current&&(u.current=!1)},onFocusOutside:z=>{if(!g){z.preventDefault();return}},onPointerMove:z=>
524{if(C.current=z,y||(i.onPointerMove==null||i.onPointerMove.call(i,z),!k.current))return;const F=z.pageY-k.current.y,R=z.pageX-k.current.x,E=z.pointerType==="touch"?10:2;P({x:R,y:F},p,E)?c(z):(Math.abs(R)>E||Math.abs(F)>E)&&(k.current=null)},onPointerUp:z=>{i.onPointerUp==null||i.onPointerUp.call(i,z),k.current=null,A.current=!1,s(z)},onPointerOut:z=>{i.onPointerOut==null||i.onPointerOut.call(i,z),D(C.current)},onContextMenu:z=>{i.onContextMenu==null||i.onContextMenu.call(i,z),D(C.current)}})});Vm.displayName="Drawer.Content";const u0=250,m0=120,Km=O.forwardRef(function({preventCycle:e=!1,children:n,...a},i){const{closeDrawer:r,isDragging:o,snapPoints:l,activeSnapPoint:s,setActiveSnapPoint:c,dismissible:u,handleOnly:m,isOpen:g,onPress:f,onDrag:p}=qa(),h=O.useRef(null),b=O.useRef(!1);function y(){if(b.current){x();return}window.setTimeout(()=>{v()},m0)}function v(){if(o||e||b.current){x();return}if(x(),(!l||l.length===0)&&u){r();return}if(s===l[l.length-1]&&u){r();return}const k=l.findIndex(A=>A===s);if(k===-1)return;const C=l[k+1];c(C)}function w(){h.current=window.setTimeout(()=>{b.current=!0},u0)}function x(){window.clearTimeout(h.current),b.current=!1}return O.createElement("div",{onClick:y,onPointerCancel:x,onPointerDown:S=>{m&&f(S),w()},onPointerMove:S=>{m&&p(S)},ref:i,"data-vaul-drawer-visible":g?"true":"false","data-vaul-handle":"","aria-hidden":"true",...a},O.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},n))});Km.displayName="Drawer.Handle";function p0({onDrag:e,onOpenChange:n,...a}){const{onNestedDrag:i,onNestedOpenChange:r,onNestedRelease:o}=qa();if(!i)throw new Error("Drawer.NestedRoot must be placed in another drawer");return O.createElement(Bm,{nested:!0,onClose:()=>{r(!1)},onDrag:(l,s)=>{i(l,s),e==null||e(l,s)},onOpenChange:l=>{l&&r(l)},onRelease:o,...a})}function g0(e){const n=qa(),{container:a=n.container,...i}=e;return O.createElement(ji,{container:a,...i})}const Pn={Root:Bm,NestedRoot:p0,Content:Vm,Overlay:qm,Trigger:yd,Portal:g0,Handle:Km,Close:Ai,Title:Ra,Description:za},cl=({shouldScaleBackground:e=!0,...n})=>t.jsx(Pn.Root,{shouldScaleBackground:e,...n});cl.displayName="Drawer";const f0=Pn.Portal,Wm=d.forwardRef(({className:e,...n},a)=>t.jsx(Pn.Overlay,{ref:a,className:B("fixed inset-0 z-50 bg-black/80",e),...n}));Wm.displayName=Pn.Overlay.displayName;const dl=d.forwardRef(({className:e,children:n,...a},i)=>t.jsxs(f0,{children:[t.jsx(Wm,{}),t.jsxs(Pn.Content,{ref:i,className:B("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto max-h-[85vh] flex-col rounded-t-[10px] border bg-background overflow-hidden touch-pan-y",e),...a,children:[t.jsx("div",{className:"sticky top-0 z-10 bg-background pt-4 pb-2 shrink-0",children:t.jsx("div",{className:"mx-auto h-2 w-[100px] rounded-full bg-muted"})}),n]})]}));dl.displayName="DrawerContent";const h0=({className:e,...n})=>t.jsx("div",{className:B("grid gap-1.5 p-4 text-center sm:text-left",e),...n});h0.displayName="DrawerHeader";const v0=({className:e,...n})=>t.jsx("div",{className:B("mt-auto flex flex-col gap-2 p-4",e),...n});v0.displayName="DrawerFooter";const Um=d.forwardRef(({className:e,...n},a)=>t.jsx(Pn.Title,{ref:a,className:B("text-lg font-semibold leading-none tracking-tight",e),...n}));Um.displayName=Pn.Title.displayName;const Hm=d.forwardRef(({className:e,...n},a)=>t.jsx(Pn.Description,{ref:a,className:B("text-sm text-muted-foreground",e),...n}));Hm.displayName=Pn.Description.displayName;const Nc={sm:"max-w-lg",lg:"max-w-2xl",xl:"max-w-[792px]","2xl":"max-w-[900px]"};function y0({open:e,onOpenChange:n,title:a,children:i,footer:r,headerActions:o,ref:l}){const[s,c]=O.useState("95dvh");return O.useEffect(()=>{var u;if(e){const m=((u=window.visualViewport)==null?void 0:u.height)??window.innerHeight;c(`${Math.round(m*.95)}px`)}},[e]),t.jsx(cl,{open:e,onOpenChange:n,children:t.jsx(dl,{className:"sm-form-overlay-shell !rounded-t-[16px] !border-0",style:{height:s,maxHeight:s},ref:l,onOpenAutoFocus:u=>u.preventDefault(),children:t.jsxs("div",{className:"mx-auto w-full h-full flex flex-col",children:[t.jsxs("div",{className:"sm-form-overlay-header",children:[t.jsx(Um,{className:"sm-form-overlay-title flex-1 text-left",children:a}),t.jsx(Hm,{className:"sr-only",children:a}),o,t.jsx("button",{type:"button",onClick:()=>n(!1),className:"sm-form-overlay-close","aria-label":"Lukk",children:t.jsx(Mt,{className:"h-4 w-4"})})]}),t.jsx("div",{className:"flex-1 overflow-y-auto px-5 py-4",style:{scrollbarGutter:"stable"},children:i}),t.jsx("div",{className:"sm-form-overlay-footer",children:r})]})})})}const Tt=O.forwardRef(({open:e,onOpenChange:n,title:a,children:i,footer:r,size:o="sm",headerActions:l},s)=>{const c=_i(),u=Nc[o]||Nc.sm;return c?t.jsx(y0,{open:e,onOpenChange:n,title:a,footer:r,headerActions:l,ref:s,children:i}):t.jsx(yi,{open:e,onOpenChange:n,modal:!0,children:t.jsxs(Na,{ref:s,onOpenAutoFocus:m=>m.preventDefault(),className:`${u} max-h-[min(85vh,calc(100dvh-2rem))] flex flex-col overflow-hidden p-0 gap-0 border-0`,style:{"--radix-dialog-content-close-display":"none",background:"linear-gradient(180deg, hsl(var(--dialog-bg-from)), hsl(var(--dialog-bg-to)))",border:"1px solid hsl(var(--dialog-border))",boxShadow:` 525 inset 0 1px 0 hsl(var(--dialog-edge-highlight)),
526 0 20px 60px hsl(var(--dialog-shadow-primary)), 527 0 8px 24px hsl(var(--dialog-shadow-secondary)) 528 `},children:[t.jsx("div",{className:"absolute inset-0 pointer-events-none overflow-hidden rounded-[inherit]",style:{background:"radial-gradient(800px 400px at 50% -5%, var(--dialog-glow-top), transparent 70%), radial-gradient(600px 600px at 50% 50%, var(--dialog-glow-center), transparent 70%)"}}),t.jsxs("div",{className:"relative flex items-center px-5 py-4 shrink-0",style:{borderBottom:"1px solid hsl(var(--dialog-separator))"},children:[t.jsx(Aa,{className:"text-lg font-bold text-foreground",children:a}),t.jsx(bi,{className:"sr-only",children:a}),t.jsx("div",{className:"flex-1"}),l,t.jsx("button",{type:"button",onClick:()=>n(!1),className:"sm-form-overlay-close","aria-label":"Lukk",children:t.jsx(Mt,{className:"h-4 w-4"})})]}),t.jsx("div",{className:"relative flex-1 overflow-y-auto px-6 py-4",style:{scrollbarGutter:"stable"},children:i}),t.jsx("div",{className:"relative flex items-center gap-2 px-5 py-4 shrink-0",style:{borderTop:"1px solid hsl(var(--dialog-separator))"},children:r})]})})});Tt.displayName="FormOverlay";const tn=O.forwardRef(({onCancel:e,onSave:n,onDelete:a,saveLabel:i,cancelLabel:r="Avbryt",deleteLabel:o,disabled:l=!1},s)=>t.jsxs("div",{ref:s,className:"flex items-center justify-between w-full gap-2",children:[t.jsx("div",{children:a&&t.jsxs("button",{onClick:a,className:o?"flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-destructive hover:bg-destructive/10 transition-colors text-sm":"p-2 rounded-lg text-destructive hover:bg-destructive/10 transition-colors",type:"button","aria-label":"Slett",children:[t.jsx(La,{className:"h-4 w-4"}),o&&t.jsx("span",{children:o})]})}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx("button",{onClick:e,className:"sm-form-overlay-btn-cancel",type:"button",children:r}),t.jsx("button",{onClick:n,disabled:l,className:"sm-form-overlay-btn-save",type:"button",children:i})]})]}));tn.displayName="FormFooter";const b0=Ma("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function pn({className:e,variant:n,...a}){return t.jsx("div",{className:B(b0({variant:n}),e),...a})}function kn({options:e,value:n,onChange:a,placeholder:i="Velg...",noneLabel:r="Ingen",className:o,smStyle:l=!1,onCreateNew:s,createNewLabel:c="Create new",side:u="bottom"}){const[m,g]=d.useState(!1),[f,p]=d.useState(""),[h,b]=d.useState(-1),y=d.useRef(null),v=d.useRef(null),w=d.useRef(null),x=e.find(P=>P.value===n),S=e.filter(P=>P.label.toLowerCase().includes(f.toLowerCase())),k=[{value:"",label:r},...S];d.useEffect(()=>{m&&(p(""),b(-1),setTimeout(()=>{var P;return(P=v.current)==null?void 0:P.focus()},10))},[m]),d.useEffect(()=>{b(-1)},[f]),d.useEffect(()=>{const P=D=>{y.current&&!y.current.contains(D.target)&&g(!1)};return document.addEventListener("mousedown",P),()=>document.removeEventListener("mousedown",P)},[]),d.useEffect(()=>{if(h<0||!w.current)return;const D=w.current.querySelectorAll("[data-option]")[h];D==null||D.scrollIntoView({block:"nearest"})},[h]);const C=d.useCallback(P=>{a(P),g(!1)},[a]),A=P=>{if(!m){(P.key==="ArrowDown"||P.key==="Enter"||P.key===" ")&&(P.preventDefault(),g(!0));return}switch(P.key){case"ArrowDown":P.preventDefault(),b(D=>Math.min(D+1,k.length-1));break;case"ArrowUp":P.preventDefault(),b(D=>Math.max(D-1,0));break;case"Enter":P.preventDefault(),h>=0&&h<k.length&&C(k[h].value);break;case"Escape":P.preventDefault(),g(!1);break}},q=B("sm-select-trigger flex items-center justify-between w-full cursor-pointer",m&&"open",o);return t.jsxs("div",{ref:y,className:"relative w-full",onKeyDown:A,children:[t.jsxs("button",{type:"button",className:q,onClick:()=>g(P=>!P),"aria-expanded":m,children:[t.jsx("span",{className:B("truncate",!x&&"text-muted-foreground"),children:x?x.label:i}),t.jsxs("div",{className:"flex items-center gap-1 shrink-0 ml-2",children:[n&&t.jsx("span",{role:"button",tabIndex:0,className:"text-muted-foreground hover:text-foreground",onMouseDown:P=>{P.stopPropagation(),a("")},onKeyDown:P=>{P.key==="Enter"&&(P.stopPropagation(),a(""))},children:t.jsx(Mt,{className:"h-3 w-3"})}),t.jsx(hn,{className:B("h-3.5 w-3.5 text-muted-foreground transition-transform",m&&"rotate-180")}
528)]})]}),m&&t.jsxs("div",{className:B("absolute z-50 w-full rounded-md border border-border bg-popover text-popover-foreground shadow-md overflow-hidden",u==="top"?"bottom-full mb-1":"mt-1"),children:[t.jsxs("div",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[t.jsx(Dr,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),t.jsx("input",{ref:v,value:f,onChange:P=>p(P.target.value),placeholder:"Søk...",className:"flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground"})]}),t.jsxs("div",{ref:w,className:"max-h-52 overflow-y-auto py-1",children:[t.jsxs("button",{type:"button","data-option":!0,className:B("w-full text-left px-3 py-2 text-sm flex items-center gap-2 transition-colors text-muted-foreground italic",h===0?"bg-accent":"hover:bg-accent"),onMouseEnter:()=>b(0),onMouseDown:()=>{a(""),g(!1)},children:[t.jsx(Xt,{className:B("h-3.5 w-3.5 shrink-0",n?"opacity-0":"opacity-100")}),r]}),S.length===0?t.jsx("p",{className:"px-3 py-2 text-sm text-muted-foreground",children:"Ingen treff"}):(()=>{if(!S.some(R=>R.group))return S.map((R,E)=>t.jsxs("button",{type:"button","data-option":!0,className:B("w-full text-left px-3 py-2 text-sm flex items-center gap-2 transition-colors",h===E+1?"bg-accent":"hover:bg-accent"),onMouseEnter:()=>b(E+1),onMouseDown:()=>{a(R.value),g(!1)},children:[t.jsx(Xt,{className:B("h-3.5 w-3.5 shrink-0",n===R.value?"opacity-100 text-primary":"opacity-0")}),R.label]},R.value));const D=[],z={};for(const R of S){const E=R.group||"";z[E]||(z[E]=[],D.push(E)),z[E].push(R)}let F=0;return D.map(R=>t.jsxs("div",{children:[R&&t.jsx("div",{className:"px-3 pt-2.5 pb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground",children:R}),z[R].map(E=>{const L=++F;return t.jsxs("button",{type:"button","data-option":!0,className:B("w-full text-left px-3 py-2 text-sm flex items-center gap-2 transition-colors",h===L?"bg-accent":"hover:bg-accent"),onMouseEnter:()=>b(L),onMouseDown:()=>{a(E.value),g(!1)},children:[t.jsx(Xt,{className:B("h-3.5 w-3.5 shrink-0",n===E.value?"opacity-100 text-primary":"opacity-0")}),E.label]},E.value)})]},R))})()]}),s&&t.jsx("div",{className:"border-t border-border px-1 py-1",children:t.jsxs("button",{type:"button",className:"w-full text-left px-3 py-2 text-sm flex items-center gap-2 transition-colors hover:bg-accent text-primary font-medium",onMouseDown:()=>{s(),g(!1)},children:[t.jsx(Rt,{className:"h-3.5 w-3.5"}),c]})})]})]})}const Ac={lessThanXSeconds:{standalone:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"},withPreposition:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"}},xSeconds:{standalone:{one:"1 Sekunde",other:"{{count}} Sekunden"},withPreposition:{one:"1 Sekunde",other:"{{count}} Sekunden"}},halfAMinute:{standalone:"eine halbe Minute",withPreposition:"einer halben Minute"},lessThanXMinutes:{standalone:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"},withPreposition:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"}},xMinutes:{standalone:{one:"1 Minute",other:"{{count}} Minuten"},withPreposition:{one:"1 Minute",other:"{{count}} Minuten"}},aboutXHours:{standalone:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"},withPreposition:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"}},xHours:{standalone:{one:"1 Stunde",other:"{{count}} Stunden"},withPreposition:{one:"1 Stunde",other:"{{count}} Stunden"}},xDays:{standalone:{one:"1 Tag",other:"{{count}} Tage"},withPreposition:{one:"1 Tag",other:"{{count}} Tagen"}},aboutXWeeks:{standalone:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"},withPreposition:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"}},xWeeks:{standalone:{one:"1 Woche",other:"{{count}} Wochen"},withPreposition:{one:"1 Woche",other:"{{count}} Wochen"}},aboutXMonths:{standalone:{one:"etwa 1 Monat",other:"etwa {{count}} Monate"},withPreposition:{one:"etwa 1 Monat",other:"etwa {{count}} Monaten"}},xMonths:{standalone:{one:"1 Monat",other:"{{count}} Monate"},withPreposition:{one:"1 Monat",other:"{{count}} Monaten"}},aboutXYears:{standalone:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahre"},withPreposition:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahren"}},xYears:{standalone:{one:"1 Jahr",other:"{{count}} Jahre"},withPreposition:{one:"1 Jahr",other:"{{count}} Jahren"}},overXYears:{standalone:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahre"},withPreposition:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahren"}},almostXYears:{standalone:{one:"fast 1 Jahr",other:"fast {{count}} Jahre"},withPreposition:{one:"fast 1 Jahr",other:"fast {{count}} Jahren"}}},x0=(e,n,a)=>{let i;const r=a!=null&&a.addSuffix?Ac[e].withPreposition:Ac[e].standalone;return typeof r=="string"?i=r:n===1?i=r.one:i=r.other.replace("{{count}}",String(n)),a!=null&&a.addSuffix?a.comparison&&a.comparison>0?"in "+i:"vor "+i:i},k0={full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM y",short:"dd.MM.y"},w0={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},S0={full:"{{date}} 'um' {{time}}",long:"{{date}} 'um' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},C0={date:qt({formats:k0,defaultWidth:"full"}),time:qt({formats:w0,defaultWidth:"full"}),dateTime:qt({formats:S0,defaultWidth:"full"})},N0={lastWeek:"'letzten' eeee 'um' p",yesterday:"'gestern um' p",today:"'heute um' p",tomorrow:"'morgen um' p",nextWeek:"eeee 'um' p",other:"P"},A0=(e,n,a,i)=>N0[e],P0={narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},j0={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},ss={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],wide:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},T0={narrow:ss.narrow,abbreviated:["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],wide:ss.wide},D0={narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},_0={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nac
528hm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},E0={narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},R0=e=>Number(e)+".",z0={ordinalNumber:R0,era:pt({values:P0,defaultWidth:"wide"}),quarter:pt({values:j0,defaultWidth:"wide",argumentCallback:e=>e-1}),month:pt({values:ss,formattingValues:T0,defaultWidth:"wide"}),day:pt({values:D0,defaultWidth:"wide"}),dayPeriod:pt({values:_0,defaultWidth:"wide",formattingValues:E0,defaultFormattingWidth:"wide"})},M0=/^(\d+)(\.)?/i,I0=/\d+/i,L0={narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},F0={any:[/^v/i,/^n/i]},O0={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},B0={any:[/1/i,/2/i,/3/i,/4/i]},q0={narrow:/^[jfmasond]/i,abbreviated:/^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},V0={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[aä]/i,/^f/i,/^mär/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},K0={narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},W0={any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},U0={narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},H0={any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},G0={ordinalNumber:Ti({matchPattern:M0,parsePattern:I0,valueCallback:e=>parseInt(e)}),era:gt({matchPatterns:L0,defaultMatchWidth:"wide",parsePatterns:F0,defaultParseWidth:"any"}),quarter:gt({matchPatterns:O0,defaultMatchWidth:"wide",parsePatterns:B0,defaultParseWidth:"any",valueCallback:e=>e+1}),month:gt({matchPatterns:q0,defaultMatchWidth:"wide",parsePatterns:V0,defaultParseWidth:"any"}),day:gt({matchPatterns:K0,defaultMatchWidth:"wide",parsePatterns:W0,defaultParseWidth:"any"}),dayPeriod:gt({matchPatterns:U0,defaultMatchWidth:"wide",parsePatterns:H0,defaultParseWidth:"any"})},$0={code:"de",formatDistance:x0,formatLong:C0,formatRelative:A0,localize:z0,match:G0,options:{weekStartsOn:1,firstWeekContainsDate:4}},Y0={lessThanXSeconds:{one:"menos de un segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"medio minuto",lessThanXMinutes:{one:"menos de un minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"alrededor de 1 hora",other:"alrededor de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 dÃa",other:"{{count}} dÃas"},aboutXWeeks:{one:"alrededor de 1 semana",other:"alrededor de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"alrededor de 1 mes",other:"alrededor de {{count}} meses"},xMonths:{one:"1 mes",other:"{{count}} meses"},aboutXYears:{one:"alrededor de 1 año",other:"alrededor de {{count}} años"},xYears:{one:"1 año",other:"{{count}} años"},overXYears:{one:"más de 1 año",other:"más de {{count}} años"},almostXYears:{one:"casi 1 año",other:"casi {{count}} años"}},Q0=(e,n,a)=>{let i;const r=Y0[e];return typeof r=="string"?i=r:n===1?i=r.one:i=r.other.replace("{{count}}",n.toString()),a!=null&&a.addSuffix?a.comparison&&a.comparison>0?"en "+i:"hace "+i:i},J0={full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/y"},Z0={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},X0={full:"{{date}} 'a las' {{time}}",long:"{{date}} 'a las' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},eS={date:qt({formats:J0,defaultWidth:"full"}),time:qt({formats:Z0,defaultWidth:"full"}),dateTime:qt({formats:X0,defaultWidth:"full"})},tS={lastWeek:"'el' eeee 'pasado a la' p",yesterday:"'ayer a la' p",today:"'hoy a la' p",tomorrow:"'mañana a la' p",nextWeek:"eeee 'a la' p",other:"P"},nS={lastWeek:"'el' eeee 'pasado a las' p",yesterday:"'ayer a las' p",today:"'hoy a las' p",tomorrow:"'mañana a las' p",nextWeek:"eeee 'a las' p",other:"P"},aS=(e,n,a,i)=>n.getHours()!==1?nS[e]:tS[e],iS={narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","después de cristo"]},rS={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},oS={narrow:["e","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],wide:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},sS={narrow:["d","l","m","m","j","v","s"],short:["do","lu","ma","mi","ju","vi","sá"],abbreviated:["dom","lun","mar","mié","jue","vie","sáb"],wide:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"]}
528,lS={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"mañana",afternoon:"tarde",evening:"tarde",night:"noche"}},cS={narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"de la mañana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"}},dS=(e,n)=>Number(e)+"º",uS={ordinalNumber:dS,era:pt({values:iS,defaultWidth:"wide"}),quarter:pt({values:rS,defaultWidth:"wide",argumentCallback:e=>Number(e)-1}),month:pt({values:oS,defaultWidth:"wide"}),day:pt({values:sS,defaultWidth:"wide"}),dayPeriod:pt({values:lS,defaultWidth:"wide",formattingValues:cS,defaultFormattingWidth:"wide"})},mS=/^(\d+)(º)?/i,pS=/\d+/i,gS={narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes de la era com[uú]n|despu[eé]s de cristo|era com[uú]n)/i},fS={any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes de la era com[uú]n)/i,/^(despu[eé]s de cristo|era com[uú]n)/i]},hS={narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](º)? trimestre/i},vS={any:[/1/i,/2/i,/3/i,/4/i]},yS={narrow:/^[efmajsond]/i,abbreviated:/^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,wide:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i},bS={narrow:[/^e/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^en/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i]},xS={narrow:/^[dlmjvs]/i,short:/^(do|lu|ma|mi|ju|vi|s[áa])/i,abbreviated:/^(dom|lun|mar|mi[ée]|jue|vie|s[áa]b)/i,wide:/^(domingo|lunes|martes|mi[ée]rcoles|jueves|viernes|s[áa]bado)/i},kS={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^do/i,/^lu/i,/^ma/i,/^mi/i,/^ju/i,/^vi/i,/^sa/i]},wS={narrow:/^(a|p|mn|md|(de la|a las) (mañana|tarde|noche))/i,any:/^([ap]\.?\s?m\.?|medianoche|mediodia|(de la|a las) (mañana|tarde|noche))/i},SS={any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/^md/i,morning:/mañana/i,afternoon:/tarde/i,evening:/tarde/i,night:/noche/i}},CS={ordinalNumber:Ti({matchPattern:mS,parsePattern:pS,valueCallback:function(e){return parseInt(e,10)}}),era:gt({matchPatterns:gS,defaultMatchWidth:"wide",parsePatterns:fS,defaultParseWidth:"any"}),quarter:gt({matchPatterns:hS,defaultMatchWidth:"wide",parsePatterns:vS,defaultParseWidth:"any",valueCallback:e=>e+1}),month:gt({matchPatterns:yS,defaultMatchWidth:"wide",parsePatterns:bS,defaultParseWidth:"any"}),day:gt({matchPatterns:xS,defaultMatchWidth:"wide",parsePatterns:kS,defaultParseWidth:"any"}),dayPeriod:gt({matchPatterns:wS,defaultMatchWidth:"any",parsePatterns:SS,defaultParseWidth:"any"})},NS={code:"es",formatDistance:Q0,formatLong:eS,formatRelative:aS,localize:uS,match:CS,options:{weekStartsOn:1,firstWeekContainsDate:1}},AS={lessThanXSeconds:{one:"moins dâune seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins dâune minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus dâun an",other:"plus de {{count}} ans"},almostXYears:{one:"presquâun an",other:"presque {{count}} ans"}},PS=(e,n,a)=>{let i;const r=AS[e];return typeof r=="string"?i=r:n===1?i=r.one:i=r.other.replace("{{count}}",String(n)),a!=null&&a.addSuffix?a.comparison&&a.comparison>0?"dans "+i:"il y a "+i:i},jS={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},TS={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},DS={full:"{{date}} 'à ' {{time}}",long:"{{date}} 'à ' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},_S={date:qt({formats:jS,defaultWidth:"full"}),time:qt({formats:TS,defaultWidth:"full"}),dateTime:qt({formats:DS,defaultWidth:"full"})},ES={lastWeek:"eeee 'dernier à ' p",yesterday:"'hier à ' p",today:"'aujourdâhui à ' p",tomorrow:"'demain à ' p'",nextWeek:"eeee 'proch
528ain à ' p",other:"P"},RS=(e,n,a,i)=>ES[e],zS={narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant Jésus-Christ","après Jésus-Christ"]},MS={narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2ème trim.","3ème trim.","4ème trim."],wide:["1er trimestre","2ème trimestre","3ème trimestre","4ème trimestre"]},IS={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],wide:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"]},LS={narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},FS={narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"après-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de lâaprès-midi",evening:"du soir",night:"du matin"}},OS=(e,n)=>{const a=Number(e),i=n==null?void 0:n.unit;if(a===0)return"0";const r=["year","week","hour","minute","second"];let o;return a===1?o=i&&r.includes(i)?"ère":"er":o="ème",a+o},BS=["MMM","MMMM"],qS={preprocessor:(e,n)=>e.getDate()===1||!n.some(i=>i.isToken&&BS.includes(i.value))?n:n.map(i=>i.isToken&&i.value==="do"?{isToken:!0,value:"d"}:i),ordinalNumber:OS,era:pt({values:zS,defaultWidth:"wide"}),quarter:pt({values:MS,defaultWidth:"wide",argumentCallback:e=>e-1}),month:pt({values:IS,defaultWidth:"wide"}),day:pt({values:LS,defaultWidth:"wide"}),dayPeriod:pt({values:FS,defaultWidth:"wide"})},VS=/^(\d+)(ième|ère|ème|er|e)?/i,KS=/\d+/i,WS={narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant Jésus-Christ|après Jésus-Christ)/i},US={any:[/^av/i,/^ap/i]},HS={narrow:/^T?[1234]/i,abbreviated:/^[1234](er|ème|e)? trim\.?/i,wide:/^[1234](er|ème|e)? trimestre/i},GS={any:[/1/i,/2/i,/3/i,/4/i]},$S={narrow:/^[jfmasond]/i,abbreviated:/^(janv|févr|mars|avr|mai|juin|juill|juil|août|sept|oct|nov|déc)\.?/i,wide:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i},YS={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},QS={narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},JS={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},ZS={narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'après[-\s]midi|du soir|de la nuit)/i},XS={any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},eC={ordinalNumber:Ti({matchPattern:VS,parsePattern:KS,valueCallback:e=>parseInt(e)}),era:gt({matchPatterns:WS,defaultMatchWidth:"wide",parsePatterns:US,defaultParseWidth:"any"}),quarter:gt({matchPatterns:HS,defaultMatchWidth:"wide",parsePatterns:GS,defaultParseWidth:"any",valueCallback:e=>e+1}),month:gt({matchPatterns:$S,defaultMatchWidth:"wide",parsePatterns:YS,defaultParseWidth:"any"}),day:gt({matchPatterns:QS,defaultMatchWidth:"wide",parsePatterns:JS,defaultParseWidth:"any"}),dayPeriod:gt({matchPatterns:ZS,defaultMatchWidth:"any",parsePatterns:XS,defaultParseWidth:"any"})},tC={code:"fr",formatDistance:PS,formatLong:_S,formatRelative:RS,localize:qS,match:eC,options:{weekStartsOn:1,firstWeekContainsDate:4}},nC={lessThanXSeconds:{one:"meno di un secondo",other:"meno di {{count}} secondi"},xSeconds:{one:"un secondo",other:"{{count}} secondi"},halfAMinute:"alcuni secondi",lessThanXMinutes:{one:"meno di un minuto",other:"meno di {{count}} minuti"},xMinutes:{one:"un minuto",other:"{{count}} minuti"},aboutXHours:{one:"circa un'ora",other:"circa {{count}} ore"},xHours:{one:"un'ora",other:"{{count}} ore"},xDays:{one:"un giorno",other:"{{count}} giorni"},aboutXWeeks:{one:"circa una settimana",other:"circa {{count}} settimane"},xWeeks:{one:"una settimana",other:"{{count}} settimane"},aboutXMonths:{one:"circa un mese",other:"circa {{count}} mesi"},xMonths:{one:"un mese",other:"{{count}} mesi"},aboutXYears:{one:"circa un anno",other:"circa {{count}} anni"},xYears:{one:"un anno",other:"{{count}} anni"},overXYears:{one:"più di un anno",other:"più di {{count}} anni"},almostXYears:{one:"quasi un anno",other:"quasi {{count}} anni"}},aC=(e,n,a)=>{let i;const r=nC[e];return typeof r=="string"?i=r:n===1?i=r.one:i=r.other.replace("{{count}}",n.toString()),a!=null&&a.addSuffix?a.comparison&&a.comparison>0?"tra "+i:i+" fa":i},iC={full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},rC={full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},oC={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},sC={date:qt({formats:iC,defaultWidth:"full"}),time:qt({formats:rC,defaultWidth:"full"}),dateTime:qt({formats:oC,defaultWidth:"full"})},ul=["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"];function lC(e){switch(e){case 0:return"'domenica scorsa alle' p";default:return"'"+ul[e]+" scorso alle' p"}}function Pc(e){return"'"+ul[e]+" alle' p"}function cC(e){switch(e){case 0:return"'domenica prossima alle' p";default:return"'"+ul[e]+" prossimo alle' p"}}const dC={lastWeek:(e,n,a)=>{const i=e.getDay();return Il(e,n,a)?Pc(i):lC(i)},yesterday:"'ieri alle' p",today:"'oggi alle' p",tomorrow:"'domani alle' p",nextWeek:(e,n,a)=>{const i=e.getDay();return Il(e,n,a)?Pc(i):cC(i)},other:"P"},uC=(e,n,a,i)=>{const r=dC[e];return typeof r=="function"?r(n,a,i):r},mC={narrow:["aC","dC"],abbreviated:["a.C.","d.C."],wide:["avanti Cristo","dopo Cristo"]},pC={narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1º trimestre","2º trimestre","3º trimestre","4º trimestre"]},gC={narrow:["G","F","M","A","M","G","L","A","S","O","N","D"],abbreviated:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],wide:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"]},fC={narrow:["D","L","M","M","G","V","S"],short:["dom","lun","mar","mer","gio","ven","sab"],abbreviated:["dom","lun","mar","mer","gio","ven","sab"],wide:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"]},hC={narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"mattina",afternoon:"pomeriggio",evening:"sera",night:"notte"}}
528,vC={narrow:{am:"m.",pm:"p.",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},abbreviated:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"},wide:{am:"AM",pm:"PM",midnight:"mezzanotte",noon:"mezzogiorno",morning:"di mattina",afternoon:"del pomeriggio",evening:"di sera",night:"di notte"}},yC=(e,n)=>{const a=Number(e);return String(a)},bC={ordinalNumber:yC,era:pt({values:mC,defaultWidth:"wide"}),quarter:pt({values:pC,defaultWidth:"wide",argumentCallback:e=>e-1}),month:pt({values:gC,defaultWidth:"wide"}),day:pt({values:fC,defaultWidth:"wide"}),dayPeriod:pt({values:hC,defaultWidth:"wide",formattingValues:vC,defaultFormattingWidth:"wide"})},xC=/^(\d+)(º)?/i,kC=/\d+/i,wC={narrow:/^(aC|dC)/i,abbreviated:/^(a\.?\s?C\.?|a\.?\s?e\.?\s?v\.?|d\.?\s?C\.?|e\.?\s?v\.?)/i,wide:/^(avanti Cristo|avanti Era Volgare|dopo Cristo|Era Volgare)/i},SC={any:[/^a/i,/^(d|e)/i]},CC={narrow:/^[1234]/i,abbreviated:/^t[1234]/i,wide:/^[1234](º)? trimestre/i},NC={any:[/1/i,/2/i,/3/i,/4/i]},AC={narrow:/^[gfmalsond]/i,abbreviated:/^(gen|feb|mar|apr|mag|giu|lug|ago|set|ott|nov|dic)/i,wide:/^(gennaio|febbraio|marzo|aprile|maggio|giugno|luglio|agosto|settembre|ottobre|novembre|dicembre)/i},PC={narrow:[/^g/i,/^f/i,/^m/i,/^a/i,/^m/i,/^g/i,/^l/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ge/i,/^f/i,/^mar/i,/^ap/i,/^mag/i,/^gi/i,/^l/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},jC={narrow:/^[dlmgvs]/i,short:/^(do|lu|ma|me|gi|ve|sa)/i,abbreviated:/^(dom|lun|mar|mer|gio|ven|sab)/i,wide:/^(domenica|luned[i|ì]|marted[i|ì]|mercoled[i|ì]|gioved[i|ì]|venerd[i|ì]|sabato)/i},TC={narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^g/i,/^v/i,/^s/i],any:[/^d/i,/^l/i,/^ma/i,/^me/i,/^g/i,/^v/i,/^s/i]},DC={narrow:/^(a|m\.|p|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i,any:/^([ap]\.?\s?m\.?|mezzanotte|mezzogiorno|(di|del) (mattina|pomeriggio|sera|notte))/i},_C={any:{am:/^a/i,pm:/^p/i,midnight:/^mezza/i,noon:/^mezzo/i,morning:/mattina/i,afternoon:/pomeriggio/i,evening:/sera/i,night:/notte/i}},EC={ordinalNumber:Ti({matchPattern:xC,parsePattern:kC,valueCallback:e=>parseInt(e,10)}),era:gt({matchPatterns:wC,defaultMatchWidth:"wide",parsePatterns:SC,defaultParseWidth:"any"}),quarter:gt({matchPatterns:CC,defaultMatchWidth:"wide",parsePatterns:NC,defaultParseWidth:"any",valueCallback:e=>e+1}),month:gt({matchPatterns:AC,defaultMatchWidth:"wide",parsePatterns:PC,defaultParseWidth:"any"}),day:gt({matchPatterns:jC,defaultMatchWidth:"wide",parsePatterns:TC,defaultParseWidth:"any"}),dayPeriod:gt({matchPatterns:DC,defaultMatchWidth:"any",parsePatterns:_C,defaultParseWidth:"any"})},RC={code:"it",formatDistance:aC,formatLong:sC,formatRelative:uC,localize:bC,match:EC,options:{weekStartsOn:1,firstWeekContainsDate:4}},zC={lessThanXSeconds:{one:"mindre enn ett sekund",other:"mindre enn {{count}} sekunder"},xSeconds:{one:"ett sekund",other:"{{count}} sekunder"},halfAMinute:"et halvt minutt",lessThanXMinutes:{one:"mindre enn ett minutt",other:"mindre enn {{count}} minutter"},xMinutes:{one:"ett minutt",other:"{{count}} minutter"},aboutXHours:{one:"omtrent en time",other:"omtrent {{count}} timer"},xHours:{one:"en time",other:"{{count}} timer"},xDays:{one:"en dag",other:"{{count}} dager"},aboutXWeeks:{one:"omtrent en uke",other:"omtrent {{count}} uker"},xWeeks:{one:"en uke",other:"{{count}} uker"},aboutXMonths:{one:"omtrent en måned",other:"omtrent {{count}} måneder"},xMonths:{one:"en måned",other:"{{count}} måneder"},aboutXYears:{one:"omtrent ett år",other:"omtrent {{count}} år"},xYears:{one:"ett år",other:"{{count}} år"},overXYears:{one:"over ett år",other:"over {{count}} år"},almostXYears:{one:"nesten ett år",other:"nesten {{count}} år"}},MC=(e,n,a)=>{let i;const r=zC[e];return typeof r=="string"?i=r:n===1?i=r.one:i=r.other.replace("{{count}}",String(n)),a!=null&&a.addSuffix?a.comparison&&a.comparison>0?"om "+i:i+" siden":i},IC={full:"EEEE d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"dd.MM.y"},LC={full:"'kl'. HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},FC={full:"{{date}} 'kl.' {{time}}",long:"{{date}} 'kl.' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},OC={date:qt({formats:IC,defaultWidth:"full"}),time:qt({formats:LC,defaultWidth:"full"}),dateTime:qt({formats:FC,defaultWidth:"full"})},BC={lastWeek:"'forrige' eeee 'kl.' p",yesterday:"'i går kl.' p",today:"'i dag kl.' p",tomorrow:"'i morgen kl.' p",nextWeek:"EEEE 'kl.' p",other:"P"},qC=(e,n,a,i)=>BC[e],VC={narrow:["f.Kr.","e.Kr."],abbreviated:["f.Kr.","e.Kr."],wide:["før Kristus","etter Kristus"]},KC={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},WC={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],wide:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"]},UC={narrow:["S","M","T","O","T","F","L"],short:["sø","ma","ti","on","to","fr","lø"],abbreviated:["søn","man","tir","ons","tor","fre","lør"],wide:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},HC={narrow:{am:"a",pm:"p",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natten"},abbreviated:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natten"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morgenen",afternoon:"på ettermiddagen",evening:"på kvelden",night:"på natten"}},GC=(e,n)=>Number(e)+".",$C={ordinalNumber:GC,era:pt({values:VC,defaultWidth:"wide"}),quarter:pt({values:KC,defaultWidth:"wide",argumentCallback:e=>e-1}),month:pt({values:WC,defaultWidth:"wide"}),day:pt({values:UC,defaultWidth:"wide"}),dayPeriod:pt({values:HC,defaultWidth:"wide"})},YC=/^(\d+)\.?/i,QC=/\d+/i,JC={narrow:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,abbreviated:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,wide:/^(før Kristus|før vår tid|etter Kristus|vår tid)/i},ZC={any:[/^f/i,/^e/i]},XC={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? kvartal/i},eN={any:[/1/i,/2/i,/3/i,/4/i]},tN={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\.?/i,wide:/^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i},nN={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^aug/i,/^s/i,/^o/i,/^n/i,/^d/i]},aN={narrow:/^[smtofl]/i,short:/^(sø|ma|ti|on|to|fr|lø)/i,abbreviated:/^(søn|man|tir|ons|tor|fre|lør)/i,wide:/^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i},iN={any:[/^s/i,/^m/i,/^ti/i,/^o/i,/^to/i,/^f/i,/^l/i]},rN={narrow:/^(midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten)|[ap])/i,any:/^([ap]\.?\s?m\.?|midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten))/i},oN={any:{am:/^a(\.?\s?m\.?)?$/i,pm:/^p(\.?\s?m\.?)?$/i,midnight:/^midn/i,noon:/^midd/i,morning:/morgen/i,afternoon:/ettermiddag/i,evening:/kveld/i,night:/natt/i}},sN={ordinalNumber:Ti({matchPattern:YC,parsePattern:QC,valueCallback:e=>parseInt(e,10)}),era:gt({matchPatterns:JC,defaultMatchWidth:"wide",parsePatterns:ZC,defaultParseWidth:"any"}),quarter:gt({matchPatterns:XC,defaultMatchWidth:"wide",parsePatterns:eN,defaultParseWidth:"any",valueCallback:e=>e+1}),month:gt({matchPatterns:tN,defaultMatchWidth:"wide",parsePatterns:nN,defaultParseWidth:"any"}),day:gt({matchPatterns:aN,defaultMatchWidth:"wide",parsePatterns:iN,defaultParseWidth:"any"}),dayPeriod:gt({matchPatterns:rN,defaultMatchWidth:"any",parsePatterns:oN,defaultParseWidth:"any"})},lN={code:"nb",formatDistance:MC,formatLong:OC,formatRelative:qC,localize:$C,match:sN,options:{weekStartsOn:1,firstWeekContainsDate:4}};var Ae=function(){return Ae=Object.assign||function(n){for(var a,i=1,r=arguments.length;i<r;i++){a=arguments[i];for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])}return n},Ae.apply(this,arguments)};function cN(e,n){var a={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&n.indexOf(i)<0&&(a[i]=e[i]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,i=Object.getOwnPropertySymbols(e);r<i.length;r++)n.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(a[i[r]]=e[i[r]]);return a}function Gm(e,n,a){for(var i=0,r=n.length,o;i<r;
528i++)(o||!(i in n))&&(o||(o=Array.prototype.slice.call(n,0,i)),o[i]=n[i]);return e.concat(o||Array.prototype.slice.call(n))}function zi(e){return e.mode==="multiple"}function Mi(e){return e.mode==="range"}function Kr(e){return e.mode==="single"}var dN={root:"rdp",multiple_months:"rdp-multiple_months",with_weeknumber:"rdp-with_weeknumber",vhidden:"rdp-vhidden",button_reset:"rdp-button_reset",button:"rdp-button",caption:"rdp-caption",caption_start:"rdp-caption_start",caption_end:"rdp-caption_end",caption_between:"rdp-caption_between",caption_label:"rdp-caption_label",caption_dropdowns:"rdp-caption_dropdowns",dropdown:"rdp-dropdown",dropdown_month:"rdp-dropdown_month",dropdown_year:"rdp-dropdown_year",dropdown_icon:"rdp-dropdown_icon",months:"rdp-months",month:"rdp-month",table:"rdp-table",tbody:"rdp-tbody",tfoot:"rdp-tfoot",head:"rdp-head",head_row:"rdp-head_row",head_cell:"rdp-head_cell",nav:"rdp-nav",nav_button:"rdp-nav_button",nav_button_previous:"rdp-nav_button_previous",nav_button_next:"rdp-nav_button_next",nav_icon:"rdp-nav_icon",row:"rdp-row",weeknumber:"rdp-weeknumber",cell:"rdp-cell",day:"rdp-day",day_today:"rdp-day_today",day_outside:"rdp-day_outside",day_selected:"rdp-day_selected",day_disabled:"rdp-day_disabled",day_hidden:"rdp-day_hidden",day_range_start:"rdp-day_range_start",day_range_end:"rdp-day_range_end",day_range_middle:"rdp-day_range_middle"};function uN(e,n){return At(e,"LLLL y",n)}function mN(e,n){return At(e,"d",n)}function pN(e,n){return At(e,"LLLL",n)}function gN(e){return"".concat(e)}function fN(e,n){return At(e,"cccccc",n)}function hN(e,n){return At(e,"yyyy",n)}var vN=Object.freeze({__proto__:null,formatCaption:uN,formatDay:mN,formatMonthCaption:pN,formatWeekNumber:gN,formatWeekdayName:fN,formatYearCaption:hN}),yN=function(e,n,a){return At(e,"do MMMM (EEEE)",a)},bN=function(){return"Month: "},xN=function(){return"Go to next month"},kN=function(){return"Go to previous month"},wN=function(e,n){return At(e,"cccc",n)},SN=function(e){return"Week n. ".concat(e)},CN=function(){return"Year: "},NN=Object.freeze({__proto__:null,labelDay:yN,labelMonthDropdown:bN,labelNext:xN,labelPrevious:kN,labelWeekNumber:SN,labelWeekday:wN,labelYearDropdown:CN});function AN(){var e="buttons",n=dN,a=ys,i={},r={},o=1,l={},s=new Date;return{captionLayout:e,classNames:n,formatters:vN,labels:NN,locale:a,modifiersClassNames:i,modifiers:r,numberOfMonths:o,styles:l,today:s,mode:"default"}}function PN(e){var n=e.fromYear,a=e.toYear,i=e.fromMonth,r=e.toMonth,o=e.fromDate,l=e.toDate;return i?o=Zt(i):n&&(o=new Date(n,0,1)),r?l=hs(r):a&&(l=new Date(a,11,31)),{fromDate:o?Ll(o):void 0,toDate:l?Ll(l):void 0}}var $m=d.createContext(void 0);function jN(e){var n,a=e.initialProps,i=AN(),r=PN(a),o=r.fromDate,l=r.toDate,s=(n=a.captionLayout)!==null&&n!==void 0?n:i.captionLayout;s!=="buttons"&&(!o||!l)&&(s="buttons");var c;(Kr(a)||zi(a)||Mi(a))&&(c=a.onSelect);var u=Ae(Ae(Ae({},i),a),{captionLayout:s,classNames:Ae(Ae({},i.classNames),a.classNames),components:Ae({},a.components),formatters:Ae(Ae({},i.formatters),a.formatters),fromDate:o,labels:Ae(Ae({},i.labels),a.labels),mode:a.mode||i.mode,modifiers:Ae(Ae({},i.modifiers),a.modifiers),modifiersClassNames:Ae(Ae({},i.modifiersClassNames),a.modifiersClassNames),onSelect:c,styles:Ae(Ae({},i.styles),a.styles),toDate:l});return t.jsx($m.Provider,{value:u,children:e.children})}function ct(){var e=d.useContext($m);if(!e)throw new Error("useDayPicker must be used within a DayPickerProvider.");return e}function Ym(e){var n=ct(),a=n.locale,i=n.classNames,r=n.styles,o=n.formatters.formatCaption;return t.jsx("div",{className:i.caption_label,style:r.caption_label,"aria-live":"polite",role:"presentation",id:e.id,children:o(e.displayMonth,{locale:a})})}function TN(e){return t.jsx("svg",Ae({width:"8px",height:"8px",viewBox:"0 0 120 120","data-testid":"iconDropdown"},e,{children:t.jsx("path",{d:"M4.22182541,48.2218254 C8.44222828,44.0014225 15.2388494,43.9273804 19.5496459,47.9996989 L19.7781746,48.2218254 L60,88.443 L100.221825,48.2218254 C104.442228,44.0014225 111.238849,43.9273804 115.549646,47.9996989 L115.7
52878175,48.2218254 C119.998577,52.4422283 120.07262,59.2388494 116.000301,63.5496459 L115.778175,63.7781746 L67.7781746,111.778175 C63.5577717,115.998577 56.7611506,116.07262 52.4503541,112.000301 L52.2218254,111.778175 L4.22182541,63.7781746 C-0.0739418023,59.4824074 -0.0739418023,52.5175926 4.22182541,48.2218254 Z",fill:"currentColor",fillRule:"nonzero"})}))}function Qm(e){var n,a,i=e.onChange,r=e.value,o=e.children,l=e.caption,s=e.className,c=e.style,u=ct(),m=(a=(n=u.components)===null||n===void 0?void 0:n.IconDropdown)!==null&&a!==void 0?a:TN;return t.jsxs("div",{className:s,style:c,children:[t.jsx("span",{className:u.classNames.vhidden,children:e["aria-label"]}),t.jsx("select",{name:e.name,"aria-label":e["aria-label"],className:u.classNames.dropdown,style:u.styles.dropdown,value:r,onChange:i,children:o}),t.jsxs("div",{className:u.classNames.caption_label,style:u.styles.caption_label,"aria-hidden":"true",children:[l,t.jsx(m,{className:u.classNames.dropdown_icon,style:u.styles.dropdown_icon})]})]})}function DN(e){var n,a=ct(),i=a.fromDate,r=a.toDate,o=a.styles,l=a.locale,s=a.formatters.formatMonthCaption,c=a.classNames,u=a.components,m=a.labels.labelMonthDropdown;if(!i)return t.jsx(t.Fragment,{});if(!r)return t.jsx(t.Fragment,{});var g=[];if(Zg(i,r))for(var f=Zt(i),p=i.getMonth();p<=r.getMonth();p++)g.push(ao(f,p));else for(var f=Zt(new Date),p=0;p<=11;p++)g.push(ao(f,p));var h=function(y){var v=Number(y.target.value),w=ao(Zt(e.displayMonth),v);e.onChange(w)},b=(n=u==null?void 0:u.Dropdown)!==null&&n!==void 0?n:Qm;return t.jsx(b,{name:"months","aria-label":m(),className:c.dropdown_month,style:o.dropdown_month,onChange:h,value:e.displayMonth.getMonth(),caption:s(e.displayMonth,{locale:l}),children:g.map(function(y){return t.jsx("option",{value:y.getMonth(),children:s(y,{locale:l})},y.getMonth())})})}function _N(e){var n,a=e.displayMonth,i=ct(),r=i.fromDate,o=i.toDate,l=i.locale,s=i.styles,c=i.classNames,u=i.components,m=i.formatters.formatYearCaption,g=i.labels.labelYearDropdown,f=[];if(!r)return t.jsx(t.Fragment,{});if(!o)return t.jsx(t.Fragment,{});for(var p=r.getFullYear(),h=o.getFullYear(),b=p;b<=h;b++)f.push(Fl(Xg(new Date),b));var y=function(w){var x=Fl(Zt(a),Number(w.target.value));e.onChange(x)},v=(n=u==null?void 0:u.Dropdown)!==null&&n!==void 0?n:Qm;return t.jsx(v,{name:"years","aria-label":g(),className:c.dropdown_year,style:s.dropdown_year,onChange:y,value:a.getFullYear(),caption:m(a,{locale:l}),children:f.map(function(w){return t.jsx("option",{value:w.getFullYear(),children:m(w,{locale:l})},w.getFullYear())})})}function EN(e,n){var a=d.useState(e),i=a[0],r=a[1],o=n===void 0?i:n;return[o,r]}function RN(e){var n=e.month,a=e.defaultMonth,i=e.today,r=n||a||i||new Date,o=e.toDate,l=e.fromDate,s=e.numberOfMonths,c=s===void 0?1:s;if(o&&fi(o,r)<0){var u=-1*(c-1);r=fn(o,u)}return l&&fi(r,l)<0&&(r=l),Zt(r)}function zN(){var e=ct(),n=RN(e),a=EN(n,e.month),i=a[0],r=a[1],o=function(l){var s;if(!e.disableNavigation){var c=Zt(l);r(c),(s=e.onMonthChange)===null||s===void 0||s.call(e,c)}};return[i,o]}function MN(e,n){for(var a=n.reverseMonths,i=n.numberOfMonths,r=Zt(e),o=Zt(fn(r,i)),l=fi(o,r),s=[],c=0;c<l;c++){var u=fn(r,c);s.push(u)}return a&&(s=s.reverse()),s}function IN(e,n){if(!n.disableNavigation){var a=n.toDate,i=n.pagedNavigation,r=n.numberOfMonths,o=r===void 0?1:r,l=i?o:1,s=Zt(e);if(!a)return fn(s,l);var c=fi(a,e);if(!(c<o))return fn(s,l)}}function LN(e,n){if(!n.disableNavigation){var a=n.fromDate,i=n.pagedNavigation,r=n.numberOfMonths,o=r===void 0?1:r,l=i?o:1,s=Zt(e);if(!a)return fn(s,-l);var c=fi(s,a);if(!(c<=0))return fn(s,-l)}}var Jm=d.createContext(void 0);function FN(e){var n=ct(),a=zN(),i=a[0],r=a[1],o=MN(i,n),l=IN(i,n),s=LN(i,n),c=function(g){return o.some(function(f){return vs(g,f)})},u=function(g,f){c(g)||(f&&Nd(g,f)?r(fn(g,1+n.numberOfMonths*-1)):r(g))},m={currentMonth:i,displayMonths:o,goToMonth:r,goToDate:u,previousMonth:s,nextMonth:l,isDateDisplayed:c};return t.jsx(Jm.Provider,{value:m,children:e.children})}function Ii(){var e=d.useContext(Jm);if(!e)throw new Error("useNavigation must be used within a NavigationProvider");return e}function jc(e){var n,a=ct(),i=a.classNames,r=a.styles,o=a.components,l=Ii().goToMonth,s=function(m){l(fn(m,e.displayIndex?-e.dis
528playIndex:0))},c=(n=o==null?void 0:o.CaptionLabel)!==null&&n!==void 0?n:Ym,u=t.jsx(c,{id:e.id,displayMonth:e.displayMonth});return t.jsxs("div",{className:i.caption_dropdowns,style:r.caption_dropdowns,children:[t.jsx("div",{className:i.vhidden,children:u}),t.jsx(DN,{onChange:s,displayMonth:e.displayMonth}),t.jsx(_N,{onChange:s,displayMonth:e.displayMonth})]})}function ON(e){return t.jsx("svg",Ae({width:"16px",height:"16px",viewBox:"0 0 120 120"},e,{children:t.jsx("path",{d:"M69.490332,3.34314575 C72.6145263,0.218951416 77.6798462,0.218951416 80.8040405,3.34314575 C83.8617626,6.40086786 83.9268205,11.3179931 80.9992143,14.4548388 L80.8040405,14.6568542 L35.461,60 L80.8040405,105.343146 C83.8617626,108.400868 83.9268205,113.317993 80.9992143,116.454839 L80.8040405,116.656854 C77.7463184,119.714576 72.8291931,119.779634 69.6923475,116.852028 L69.490332,116.656854 L18.490332,65.6568542 C15.4326099,62.5991321 15.367552,57.6820069 18.2951583,54.5451612 L18.490332,54.3431458 L69.490332,3.34314575 Z",fill:"currentColor",fillRule:"nonzero"})}))}function BN(e){return t.jsx("svg",Ae({width:"16px",height:"16px",viewBox:"0 0 120 120"},e,{children:t.jsx("path",{d:"M49.8040405,3.34314575 C46.6798462,0.218951416 41.6145263,0.218951416 38.490332,3.34314575 C35.4326099,6.40086786 35.367552,11.3179931 38.2951583,14.4548388 L38.490332,14.6568542 L83.8333725,60 L38.490332,105.343146 C35.4326099,108.400868 35.367552,113.317993 38.2951583,116.454839 L38.490332,116.656854 C41.5480541,119.714576 46.4651794,119.779634 49.602025,116.852028 L49.8040405,116.656854 L100.804041,65.6568542 C103.861763,62.5991321 103.926821,57.6820069 100.999214,54.5451612 L100.804041,54.3431458 L49.8040405,3.34314575 Z",fill:"currentColor"})}))}var hr=d.forwardRef(function(e,n){var a=ct(),i=a.classNames,r=a.styles,o=[i.button_reset,i.button];e.className&&o.push(e.className);var l=o.join(" "),s=Ae(Ae({},r.button_reset),r.button);return e.style&&Object.assign(s,e.style),t.jsx("button",Ae({},e,{ref:n,type:"button",className:l,style:s}))});function qN(e){var n,a,i=ct(),r=i.dir,o=i.locale,l=i.classNames,s=i.styles,c=i.labels,u=c.labelPrevious,m=c.labelNext,g=i.components;if(!e.nextMonth&&!e.previousMonth)return t.jsx(t.Fragment,{});var f=u(e.previousMonth,{locale:o}),p=[l.nav_button,l.nav_button_previous].join(" "),h=m(e.nextMonth,{locale:o}),b=[l.nav_button,l.nav_button_next].join(" "),y=(n=g==null?void 0:g.IconRight)!==null&&n!==void 0?n:BN,v=(a=g==null?void 0:g.IconLeft)!==null&&a!==void 0?a:ON;return t.jsxs("div",{className:l.nav,style:s.nav,children:[!e.hidePrevious&&t.jsx(hr,{name:"previous-month","aria-label":f,className:p,style:s.nav_button_previous,disabled:!e.previousMonth,onClick:e.onPreviousClick,children:r==="rtl"?t.jsx(y,{className:l.nav_icon,style:s.nav_icon}):t.jsx(v,{className:l.nav_icon,style:s.nav_icon})}),!e.hideNext&&t.jsx(hr,{name:"next-month","aria-label":h,className:b,style:s.nav_button_next,disabled:!e.nextMonth,onClick:e.onNextClick,children:r==="rtl"?t.jsx(v,{className:l.nav_icon,style:s.nav_icon}):t.jsx(y,{className:l.nav_icon,style:s.nav_icon})})]})}function Tc(e){var n=ct().numberOfMonths,a=Ii(),i=a.previousMonth,r=a.nextMonth,o=a.goToMonth,l=a.displayMonths,s=l.findIndex(function(h){return vs(e.displayMonth,h)}),c=s===0,u=s===l.length-1,m=n>1&&(c||!u),g=n>1&&(u||!c),f=function(){i&&o(i)},p=function(){r&&o(r)};return t.jsx(qN,{displayMonth:e.displayMonth,hideNext:m,hidePrevious:g,nextMonth:r,previousMonth:i,onPreviousClick:f,onNextClick:p})}function VN(e){var n,a=ct(),i=a.classNames,r=a.disableNavigation,o=a.styles,l=a.captionLayout,s=a.components,c=(n=s==null?void 0:s.CaptionLabel)!==null&&n!==void 0?n:Ym,u;return r?u=t.jsx(c,{id:e.id,displayMonth:e.displayMonth}):l==="dropdown"?u=t.jsx(jc,{displayMonth:e.displayMonth,id:e.id}):l==="dropdown-buttons"?u=t.jsxs(t.Fragment,{children:[t.jsx(jc,{displayMonth:e.displayMonth,displayIndex:e.displayIndex,id:e.id}),t.jsx(Tc,{displayMonth:e.displayMonth,displayIndex:e.displayIndex,id:e.id})]}):u=t.jsxs(t.Fragment,{children:[t.jsx(c,{id:e.id,displayMonth:e.displayMonth,displayIndex:e.displayIndex}),t.jsx(Tc,{displayMonth:e.displayMonth,id:e.id})]}),t.jsx("div",{className:i.caption,style:o.caption,children:u})}function KN(e){var n=ct(),a=n.footer,i=n.styles,r=n.classNames.tfoot;return a?t.jsx("tfoot",{className:r,style:i.tfoot,children:t.jsx("tr",{children:t.jsx("td",{colSpan:8,children:a})})}):t.jsx(t.Fragment,{})}function WN(e,n,a){for(var i=a?bs(new Date):xs(new Date,{locale:e,weekStartsOn:n}),r=[],o=0;o<7;o++){var l=Yt(i,o);
528r.push(l)}return r}function UN(){var e=ct(),n=e.classNames,a=e.styles,i=e.showWeekNumber,r=e.locale,o=e.weekStartsOn,l=e.ISOWeek,s=e.formatters.formatWeekdayName,c=e.labels.labelWeekday,u=WN(r,o,l);return t.jsxs("tr",{style:a.head_row,className:n.head_row,children:[i&&t.jsx("td",{style:a.head_cell,className:n.head_cell}),u.map(function(m,g){return t.jsx("th",{scope:"col",className:n.head_cell,style:a.head_cell,"aria-label":c(m,{locale:r}),children:s(m,{locale:r})},g)})]})}function HN(){var e,n=ct(),a=n.classNames,i=n.styles,r=n.components,o=(e=r==null?void 0:r.HeadRow)!==null&&e!==void 0?e:UN;return t.jsx("thead",{style:i.head,className:a.head,children:t.jsx(o,{})})}function GN(e){var n=ct(),a=n.locale,i=n.formatters.formatDay;return t.jsx(t.Fragment,{children:i(e.date,{locale:a})})}var ml=d.createContext(void 0);function $N(e){if(!zi(e.initialProps)){var n={selected:void 0,modifiers:{disabled:[]}};return t.jsx(ml.Provider,{value:n,children:e.children})}return t.jsx(YN,{initialProps:e.initialProps,children:e.children})}function YN(e){var n=e.initialProps,a=e.children,i=n.selected,r=n.min,o=n.max,l=function(u,m,g){var f,p;(f=n.onDayClick)===null||f===void 0||f.call(n,u,m,g);var h=!!(m.selected&&r&&(i==null?void 0:i.length)===r);if(!h){var b=!!(!m.selected&&o&&(i==null?void 0:i.length)===o);if(!b){var y=i?Gm([],i):[];if(m.selected){var v=y.findIndex(function(w){return Kt(u,w)});y.splice(v,1)}else y.push(u);(p=n.onSelect)===null||p===void 0||p.call(n,y,u,m,g)}}},s={disabled:[]};i&&s.disabled.push(function(u){var m=o&&i.length>o-1,g=i.some(function(f){return Kt(f,u)});return!!(m&&!g)});var c={selected:i,onDayClick:l,modifiers:s};return t.jsx(ml.Provider,{value:c,children:a})}function pl(){var e=d.useContext(ml);if(!e)throw new Error("useSelectMultiple must be used within a SelectMultipleProvider");return e}function QN(e,n){var a=n||{},i=a.from,r=a.to;return i&&r?Kt(r,e)&&Kt(i,e)?void 0:Kt(r,e)?{from:r,to:void 0}:Kt(i,e)?void 0:Oo(i,e)?{from:e,to:r}:{from:i,to:e}:r?Oo(e,r)?{from:r,to:e}:{from:e,to:r}:i?Nd(e,i)?{from:e,to:i}:{from:i,to:e}:{from:e,to:void 0}}var gl=d.createContext(void 0);function JN(e){if(!Mi(e.initialProps)){var n={selected:void 0,modifiers:{range_start:[],range_end:[],range_middle:[],disabled:[]}};return t.jsx(gl.Provider,{value:n,children:e.children})}return t.jsx(ZN,{initialProps:e.initialProps,children:e.children})}function ZN(e){var n=e.initialProps,a=e.children,i=n.selected,r=i||{},o=r.from,l=r.to,s=n.min,c=n.max,u=function(p,h,b){var y,v;(y=n.onDayClick)===null||y===void 0||y.call(n,p,h,b);var w=QN(p,i);(v=n.onSelect)===null||v===void 0||v.call(n,w,p,h,b)},m={range_start:[],range_end:[],range_middle:[],disabled:[]};if(o?(m.range_start=[o],l?(m.range_end=[l],Kt(o,l)||(m.range_middle=[{after:o,before:l}])):m.range_end=[o]):l&&(m.range_start=[l],m.range_end=[l]),s&&(o&&!l&&m.disabled.push({after:no(o,s-1),before:Yt(o,s-1)}),o&&l&&m.disabled.push({after:o,before:Yt(o,s-1)}),!o&&l&&m.disabled.push({after:no(l,s-1),before:Yt(l,s-1)})),c){if(o&&!l&&(m.disabled.push({before:Yt(o,-c+1)}),m.disabled.push({after:Yt(o,c-1)})),o&&l){var g=mn(l,o)+1,f=c-g;m.disabled.push({before:no(o,f)}),m.disabled.push({after:Yt(l,f)})}!o&&l&&(m.disabled.push({before:Yt(l,-c+1)}),m.disabled.push({after:Yt(l,c-1)}))}return t.jsx(gl.Provider,{value:{selected:i,onDayClick:u,modifiers:m},children:a})}function fl(){var e=d.useContext(gl);if(!e)throw new Error("useSelectRange must be used within a SelectRangeProvider");return e}function or(e){return Array.isArray(e)?Gm([],e):e!==void 0?[e]:[]}function XN(e){var n={};return Object.entries(e).forEach(function(a){var i=a[0],r=a[1];n[i]=or(r)}),n}var cn;(function(e){e.Outside="outside",e.Disabled="disabled",e.Selected="selected",e.Hidden="hidden",e.Today="today",e.RangeStart="range_start",e.RangeEnd="range_end",e.RangeMiddle="range_middle"})(cn||(cn={}));var eA=cn.Selected,xn=cn.Disabled,tA=cn.Hidden,nA=cn.Today,Ao=cn.RangeEnd,Po=cn.RangeMiddle,jo=cn.RangeStart,aA=cn.Outside;function iA(e,n,a){var i,r=(i={},i[eA]=or(e.selected),i[xn]=or(e.disabled),i[tA]=or(e.hidden),i[nA]=[e.today],i[Ao]=[],i[Po]=[],i[jo]=[],i[aA]=[],i);return e.fromDate&&r[xn].push({before:e.fromDate}),e.toDate&&r[xn].push({after:e.toDate}),zi(e)?r[xn]=r[xn].concat(n.modifiers[xn]):Mi(e)&&(r[xn]=r[xn].concat(a.modifiers[xn]),r[jo]=a.modifiers[jo],r[Po]=a.modifiers[Po],r[Ao]=a.modifiers[Ao]),r}var Zm=d.createContext(void 0);function rA(e){var n=ct(),a=pl(),i=fl(),r=iA(n,a,i),o=XN(n.modifiers),l=Ae(Ae({},r),o);return t.jsx(Zm.Provider,{value:l,children:e.children})}function Xm(){var e=d.useContext(Zm);
528if(!e)throw new Error("useModifiers must be used within a ModifiersProvider");return e}function oA(e){return!!(e&&typeof e=="object"&&"before"in e&&"after"in e)}function sA(e){return!!(e&&typeof e=="object"&&"from"in e)}function lA(e){return!!(e&&typeof e=="object"&&"after"in e)}function cA(e){return!!(e&&typeof e=="object"&&"before"in e)}function dA(e){return!!(e&&typeof e=="object"&&"dayOfWeek"in e)}function uA(e,n){var a,i=n.from,r=n.to;if(i&&r){var o=mn(r,i)<0;o&&(a=[r,i],i=a[0],r=a[1]);var l=mn(e,i)>=0&&mn(r,e)>=0;return l}return r?Kt(r,e):i?Kt(i,e):!1}function mA(e){return jd(e)}function pA(e){return Array.isArray(e)&&e.every(jd)}function gA(e,n){return n.some(function(a){if(typeof a=="boolean")return a;if(mA(a))return Kt(e,a);if(pA(a))return a.includes(e);if(sA(a))return uA(e,a);if(dA(a))return a.dayOfWeek.includes(e.getDay());if(oA(a)){var i=mn(a.before,e),r=mn(a.after,e),o=i>0,l=r<0,s=Oo(a.before,a.after);return s?l&&o:o||l}return lA(a)?mn(e,a.after)>0:cA(a)?mn(a.before,e)>0:typeof a=="function"?a(e):!1})}function hl(e,n,a){var i=Object.keys(n).reduce(function(o,l){var s=n[l];return gA(e,s)&&o.push(l),o},[]),r={};return i.forEach(function(o){return r[o]=!0}),a&&!vs(e,a)&&(r.outside=!0),r}function fA(e,n){for(var a=Zt(e[0]),i=hs(e[e.length-1]),r,o,l=a;l<=i;){var s=hl(l,n),c=!s.disabled&&!s.hidden;if(!c){l=Yt(l,1);continue}if(s.selected)return l;s.today&&!o&&(o=l),r||(r=l),l=Yt(l,1)}return o||r}var hA=365;function ep(e,n){var a=n.moveBy,i=n.direction,r=n.context,o=n.modifiers,l=n.retry,s=l===void 0?{count:0,lastFocused:e}:l,c=r.weekStartsOn,u=r.fromDate,m=r.toDate,g=r.locale,f={day:Yt,week:Bo,month:fn,year:rf,startOfWeek:function(y){return r.ISOWeek?bs(y):xs(y,{locale:g,weekStartsOn:c})},endOfWeek:function(y){return r.ISOWeek?Ad(y):Pd(y,{locale:g,weekStartsOn:c})}},p=f[a](e,i==="after"?1:-1);i==="before"&&u?p=ef([u,p]):i==="after"&&m&&(p=tf([m,p]));var h=!0;if(o){var b=hl(p,o);h=!b.disabled&&!b.hidden}return h?p:s.count>hA?s.lastFocused:ep(p,{moveBy:a,direction:i,context:r,modifiers:o,retry:Ae(Ae({},s),{count:s.count+1})})}var tp=d.createContext(void 0);function vA(e){var n=Ii(),a=Xm(),i=d.useState(),r=i[0],o=i[1],l=d.useState(),s=l[0],c=l[1],u=fA(n.displayMonths,a),m=r??(s&&n.isDateDisplayed(s))?s:u,g=function(){c(r),o(void 0)},f=function(y){o(y)},p=ct(),h=function(y,v){if(r){var w=ep(r,{moveBy:y,direction:v,context:p,modifiers:a});Kt(r,w)||(n.goToDate(w,r),f(w))}},b={focusedDay:r,focusTarget:m,blur:g,focus:f,focusDayAfter:function(){return h("day","after")},focusDayBefore:function(){return h("day","before")},focusWeekAfter:function(){return h("week","after")},focusWeekBefore:function(){return h("week","before")},focusMonthBefore:function(){return h("month","before")},focusMonthAfter:function(){return h("month","after")},focusYearBefore:function(){return h("year","before")},focusYearAfter:function(){return h("year","after")},focusStartOfWeek:function(){return h("startOfWeek","before")},focusEndOfWeek:function(){return h("endOfWeek","after")}};return t.jsx(tp.Provider,{value:b,children:e.children})}function vl(){var e=d.useContext(tp);if(!e)throw new Error("useFocusContext must be used within a FocusProvider");return e}function yA(e,n){var a=Xm(),i=hl(e,a,n);return i}var yl=d.createContext(void 0);function bA(e){if(!Kr(e.initialProps)){var n={selected:void 0};return t.jsx(yl.Provider,{value:n,children:e.children})}return t.jsx(xA,{initialProps:e.initialProps,children:e.children})}function xA(e){var n=e.initialProps,a=e.children,i=function(o,l,s){var c,u,m;if((c=n.onDayClick)===null||c===void 0||c.call(n,o,l,s),l.selected&&!n.required){(u=n.onSelect)===null||u===void 0||u.call(n,void 0,o,l,s);return}(m=n.onSelect)===null||m===void 0||m.call(n,o,o,l,s)},r={selected:n.selected,onDayClick:i};return t.jsx(yl.Provider,{value:r,children:a})}function np(){var e=d.useContext(yl);if(!e)throw new Error("useSelectSingle must be used within a SelectSingleProvider");return e}function kA(e,n){var a=ct(),i=np(),r=pl(),o=fl(),l=vl(),s=l.focusDayAfter,c=l.focusDayBefore,u=l.focusWeekAfter,m=l.focusWeekBefore,g=l.blur,f=l.focus,p=l.focusMonthBefore,h=l.focusMonthAfter,b=l.focusYearBefore,y=l.focusYearAfter,v=l.focu
528sStartOfWeek,w=l.focusEndOfWeek,x=function(j){var I,V,Y,X;Kr(a)?(I=i.onDayClick)===null||I===void 0||I.call(i,e,n,j):zi(a)?(V=r.onDayClick)===null||V===void 0||V.call(r,e,n,j):Mi(a)?(Y=o.onDayClick)===null||Y===void 0||Y.call(o,e,n,j):(X=a.onDayClick)===null||X===void 0||X.call(a,e,n,j)},S=function(j){var I;f(e),(I=a.onDayFocus)===null||I===void 0||I.call(a,e,n,j)},k=function(j){var I;g(),(I=a.onDayBlur)===null||I===void 0||I.call(a,e,n,j)},C=function(j){var I;(I=a.onDayMouseEnter)===null||I===void 0||I.call(a,e,n,j)},A=function(j){var I;(I=a.onDayMouseLeave)===null||I===void 0||I.call(a,e,n,j)},q=function(j){var I;(I=a.onDayPointerEnter)===null||I===void 0||I.call(a,e,n,j)},P=function(j){var I;(I=a.onDayPointerLeave)===null||I===void 0||I.call(a,e,n,j)},D=function(j){var I;(I=a.onDayTouchCancel)===null||I===void 0||I.call(a,e,n,j)},z=function(j){var I;(I=a.onDayTouchEnd)===null||I===void 0||I.call(a,e,n,j)},F=function(j){var I;(I=a.onDayTouchMove)===null||I===void 0||I.call(a,e,n,j)},R=function(j){var I;(I=a.onDayTouchStart)===null||I===void 0||I.call(a,e,n,j)},E=function(j){var I;(I=a.onDayKeyUp)===null||I===void 0||I.call(a,e,n,j)},L=function(j){var I;switch(j.key){case"ArrowLeft":j.preventDefault(),j.stopPropagation(),a.dir==="rtl"?s():c();break;case"ArrowRight":j.preventDefault(),j.stopPropagation(),a.dir==="rtl"?c():s();break;case"ArrowDown":j.preventDefault(),j.stopPropagation(),u();break;case"ArrowUp":j.preventDefault(),j.stopPropagation(),m();break;case"PageUp":j.preventDefault(),j.stopPropagation(),j.shiftKey?b():p();break;case"PageDown":j.preventDefault(),j.stopPropagation(),j.shiftKey?y():h();break;case"Home":j.preventDefault(),j.stopPropagation(),v();break;case"End":j.preventDefault(),j.stopPropagation(),w();break}(I=a.onDayKeyDown)===null||I===void 0||I.call(a,e,n,j)},M={onClick:x,onFocus:S,onBlur:k,onKeyDown:L,onKeyUp:E,onMouseEnter:C,onMouseLeave:A,onPointerEnter:q,onPointerLeave:P,onTouchCancel:D,onTouchEnd:z,onTouchMove:F,onTouchStart:R};return M}function wA(){var e=ct(),n=np(),a=pl(),i=fl(),r=Kr(e)?n.selected:zi(e)?a.selected:Mi(e)?i.selected:void 0;return r}function SA(e){return Object.values(cn).includes(e)}function CA(e,n){var a=[e.classNames.day];return Object.keys(n).forEach(function(i){var r=e.modifiersClassNames[i];if(r)a.push(r);else if(SA(i)){var o=e.classNames["day_".concat(i)];o&&a.push(o)}}),a}function NA(e,n){var a=Ae({},e.styles.day);return Object.keys(n).forEach(function(i){var r;a=Ae(Ae({},a),(r=e.modifiersStyles)===null||r===void 0?void 0:r[i])}),a}function AA(e,n,a){var i,r,o,l=ct(),s=vl(),c=yA(e,n),u=kA(e,c),m=wA(),g=!!(l.onDayClick||l.mode!=="default");d.useEffect(function(){var C;c.outside||s.focusedDay&&g&&Kt(s.focusedDay,e)&&((C=a.current)===null||C===void 0||C.focus())},[s.focusedDay,e,a,g,c.outside]);var f=CA(l,c).join(" "),p=NA(l,c),h=!!(c.outside&&!l.showOutsideDays||c.hidden),b=(o=(r=l.components)===null||r===void 0?void 0:r.DayContent)!==null&&o!==void 0?o:GN,y=t.jsx(b,{date:e,displayMonth:n,activeModifiers:c}),v={style:p,className:f,children:y,role:"gridcell"},w=s.focusTarget&&Kt(s.focusTarget,e)&&!c.outside,x=s.focusedDay&&Kt(s.focusedDay,e),S=Ae(Ae(Ae({},v),(i={disabled:c.disabled,role:"gridcell"},i["aria-selected"]=c.selected,i.tabIndex=x||w?0:-1,i)),u),k={isButton:g,isHidden:h,activeModifiers:c,selectedDays:m,buttonProps:S,divProps:v};return k}function PA(e){var n=d.useRef(null),a=AA(e.date,e.displayMonth,n);return a.isHidden?t.jsx("div",{role:"gridcell"}):a.isButton?t.jsx(hr,Ae({name:"day",ref:n},a.buttonProps)):t.jsx("div",Ae({},a.divProps))}function jA(e){var n=e.number,a=e.dates,i=ct(),r=i.onWeekNumberClick,o=i.styles,l=i.classNames,s=i.locale,c=i.labels.labelWeekNumber,u=i.formatters.formatWeekNumber,m=u(Number(n),{locale:s});if(!r)return t.jsx("span",{className:l.weeknumber,style:o.weeknumber,children:m});var g=c(Number(n),{locale:s}),f=function(p){r(n,a,p)};return t.jsx(hr,{name:"week-number","aria-label":g,className:l.weeknumber,style:o.weeknumber,onClick:f,children:m})}function TA(e){var n,a,i=ct(),r=i.styles,o=i.classNames,l=i.showWeekNumber,s=i.components,c=(n=s==null?void 0:s.Day)!==null&&n!==void 0?n:PA,u=(a=s==null?void 0:s.WeekNumber)!==null&&a!==void 0?a:jA,m;return l&&(m=t.jsx("td",{className:o.cell,style:r.cell,children:t.jsx(u,{number:e.weekNumber,dates:e.dates})})),t.jsxs("tr",{className:o.row,style:r.row,children:[m,e.dates.map(function(g){return t.jsx("td",{className:o.cell,style:r.cell,role:"presentation",children:t.jsx(c,{displayMonth:e.displayMonth,date:g})},Qg(g))})]})}function Dc(e,n,a){for(var i=a!=null&&a.ISOWeek?Ad(n):Pd(n,a),r=a!=null&&a.ISOWeek?bs(e):xs(e,a),o=mn(i,r),l=[],s=0;s<=o;
528s++)l.push(Yt(r,s));var c=l.reduce(function(u,m){var g=a!=null&&a.ISOWeek?nf(m):af(m,a),f=u.find(function(p){return p.weekNumber===g});return f?(f.dates.push(m),u):(u.push({weekNumber:g,dates:[m]}),u)},[]);return c}function DA(e,n){var a=Dc(Zt(e),hs(e),n);if(n!=null&&n.useFixedWeeks){var i=Jg(e,n);if(i<6){var r=a[a.length-1],o=r.dates[r.dates.length-1],l=Bo(o,6-i),s=Dc(Bo(o,1),l,n);a.push.apply(a,s)}}return a}function _A(e){var n,a,i,r=ct(),o=r.locale,l=r.classNames,s=r.styles,c=r.hideHead,u=r.fixedWeeks,m=r.components,g=r.weekStartsOn,f=r.firstWeekContainsDate,p=r.ISOWeek,h=DA(e.displayMonth,{useFixedWeeks:!!u,ISOWeek:p,locale:o,weekStartsOn:g,firstWeekContainsDate:f}),b=(n=m==null?void 0:m.Head)!==null&&n!==void 0?n:HN,y=(a=m==null?void 0:m.Row)!==null&&a!==void 0?a:TA,v=(i=m==null?void 0:m.Footer)!==null&&i!==void 0?i:KN;return t.jsxs("table",{id:e.id,className:l.table,style:s.table,role:"grid","aria-labelledby":e["aria-labelledby"],children:[!c&&t.jsx(b,{}),t.jsx("tbody",{className:l.tbody,style:s.tbody,children:h.map(function(w){return t.jsx(y,{displayMonth:e.displayMonth,dates:w.dates,weekNumber:w.weekNumber},w.weekNumber)})}),t.jsx(v,{displayMonth:e.displayMonth})]})}function EA(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var RA=EA()?d.useLayoutEffect:d.useEffect,To=!1,zA=0;function _c(){return"react-day-picker-".concat(++zA)}function MA(e){var n,a=e??(To?_c():null),i=d.useState(a),r=i[0],o=i[1];return RA(function(){r===null&&o(_c())},[]),d.useEffect(function(){To===!1&&(To=!0)},[]),(n=e??r)!==null&&n!==void 0?n:void 0}function IA(e){var n,a,i=ct(),r=i.dir,o=i.classNames,l=i.styles,s=i.components,c=Ii().displayMonths,u=MA(i.id?"".concat(i.id,"-").concat(e.displayIndex):void 0),m=i.id?"".concat(i.id,"-grid-").concat(e.displayIndex):void 0,g=[o.month],f=l.month,p=e.displayIndex===0,h=e.displayIndex===c.length-1,b=!p&&!h;r==="rtl"&&(n=[p,h],h=n[0],p=n[1]),p&&(g.push(o.caption_start),f=Ae(Ae({},f),l.caption_start)),h&&(g.push(o.caption_end),f=Ae(Ae({},f),l.caption_end)),b&&(g.push(o.caption_between),f=Ae(Ae({},f),l.caption_between));var y=(a=s==null?void 0:s.Caption)!==null&&a!==void 0?a:VN;return t.jsxs("div",{className:g.join(" "),style:f,children:[t.jsx(y,{id:u,displayMonth:e.displayMonth,displayIndex:e.displayIndex}),t.jsx(_A,{id:m,"aria-labelledby":u,displayMonth:e.displayMonth})]},e.displayIndex)}function LA(e){var n=ct(),a=n.classNames,i=n.styles;return t.jsx("div",{className:a.months,style:i.months,children:e.children})}function FA(e){var n,a,i=e.initialProps,r=ct(),o=vl(),l=Ii(),s=d.useState(!1),c=s[0],u=s[1];d.useEffect(function(){r.initialFocus&&o.focusTarget&&(c||(o.focus(o.focusTarget),u(!0)))},[r.initialFocus,c,o.focus,o.focusTarget,o]);var m=[r.classNames.root,r.className];r.numberOfMonths>1&&m.push(r.classNames.multiple_months),r.showWeekNumber&&m.push(r.classNames.with_weeknumber);var g=Ae(Ae({},r.styles.root),r.style),f=Object.keys(i).filter(function(h){return h.startsWith("data-")}).reduce(function(h,b){var y;return Ae(Ae({},h),(y={},y[b]=i[b],y))},{}),p=(a=(n=i.components)===null||n===void 0?void 0:n.Months)!==null&&a!==void 0?a:LA;return t.jsx("div",Ae({className:m.join(" "),style:g,dir:r.dir,id:r.id,nonce:i.nonce,title:i.title,lang:i.lang},f,{children:t.jsx(p,{children:l.displayMonths.map(function(h,b){return t.jsx(IA,{displayIndex:b,displayMonth:h},b)})})}))}function OA(e){var n=e.children,a=cN(e,["children"]);return t.jsx(jN,{initialProps:a,children:t.jsx(FN,{children:t.jsx(bA,{initialProps:a,children:t.jsx($N,{initialProps:a,children:t.jsx(JN,{initialProps:a,children:t.jsx(rA,{children:t.jsx(vA,{children:n})})})})})})})}function BA(e){return t.jsx(OA,Ae({},e,{children:t.jsx(FA,{initialProps:e})}))}function bl({className:e,classNames:n,showOutsideDays:a=!0,...i}){return t.jsx(BA,{showOutsideDays:a,className:B("p-3",e),classNames:{months:"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",month:"space-y-4",caption:"flex justify-center pt-1 relative items-center",caption_label:"text-sm font-medium",nav:"space-x-1 flex items-center",nav_button:B(vi({variant:"outline"}),"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"),nav_button_previous:"absolute left-1",nav_button_next:"absolute right-1",table:"w-full border-collapse space-y-1",head_row:"flex",head_cell:"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]",row:"flex w-full mt-2",cell:"h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20",day:B(vi({variant:"ghost"}),"h-9 w-9 p-0 font-normal aria-selected:opacity-100"),day_range_end:"day-range-end",day_selected:"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",day_today:"bg-accent text-accent-foreground",day_outside:"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30",day_disabled:"text-muted-foreground opacity-50",day_range_middle:"aria-selected:bg-accent aria-selected:text-accent-foreground",day_hidden:"invisible",...n},components:{IconLeft:({...r})=>t.jsx(Uo,{className:"h-4 w-4"}),IconRight:({...r})=>t.jsx(Ns,{className:"h-4 w-4"})},...i})}
528bl.displayName="Calendar";const xl=Lg,kl=Fg,Wr=d.forwardRef(({className:e,align:n="center",sideOffset:a=4,...i},r)=>t.jsx(Ig,{children:t.jsx(bd,{ref:r,align:n,sideOffset:a,className:B("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...i})}));Wr.displayName=bd.displayName;const qA={en:ys,no:lN,de:$0,es:NS,fr:tC,it:RC},VA={en:"en-US",no:"nb-NO",de:"de-DE",es:"es-ES",fr:"fr-FR",it:"it-IT"};function vr(e){return qA[e]??ys}function $n(e,n,a){return e.toLocaleDateString(VA[n]??"en-US",a)}function KA(e){const n={en:["Week","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],no:["Uke","Man","Tir","Ons","Tor","Fre","Lør","Søn"],de:["Wo.","Mo","Di","Mi","Do","Fr","Sa","So"],es:["Sem","Lun","Mar","Mié","Jue","Vie","Sáb","Dom"],fr:["Sem","Lun","Mar","Mer","Jeu","Ven","Sam","Dim"],it:["Sett","Lun","Mar","Mer","Gio","Ven","Sab","Dom"]};return n[e]??n.en}function va({value:e,onChange:n,className:a,placeholder:i="Velg dato"}){const{language:r}=ke(),[o,l]=d.useState(!1),s=d.useMemo(()=>{if(e)try{return pa(e)}catch{return}},[e]),c=m=>{if(m){const g=m.getFullYear(),f=(m.getMonth()+1).toString().padStart(2,"0"),p=m.getDate().toString().padStart(2,"0");n(`${g}-${f}-${p}`)}l(!1)},u=s?At(s,"d. MMM yyyy",{locale:vr(r)}):i;return t.jsxs(xl,{open:o,onOpenChange:l,children:[t.jsx(kl,{asChild:!0,children:t.jsxs("button",{type:"button",className:B("sm-date-btn w-full justify-between",o&&"open",!e&&"text-muted-foreground",a),children:[t.jsx("span",{className:"truncate",children:u}),t.jsx(hn,{className:B("h-3.5 w-3.5 shrink-0 ml-2 text-muted-foreground transition-transform",o&&"rotate-180")})]})}),t.jsx(Wr,{className:"w-auto p-0",align:"start",children:t.jsx(bl,{mode:"single",selected:s,onSelect:c,initialFocus:!0,locale:vr(r),className:B("p-3 pointer-events-auto")})})]})}function yr({value:e,onChange:n,className:a}){const i=_i(),[r,o]=d.useState(e||"");d.useEffect(()=>{o(e||"")},[e]);const l=u=>{const m=u.replace(/\D/g,"").slice(0,4);return m.length<=2?m:`${m.slice(0,2)}:${m.slice(2)}`},s=u=>{if(i){const g=u.target.value;/^\d{2}:\d{2}$/.test(g)&&n(g);return}const m=l(u.target.value);if(o(m),/^\d{2}:\d{2}$/.test(m)){const[g,f]=m.split(":").map(Number);g>=0&&g<=23&&f>=0&&f<=59&&n(m)}},c=()=>{if(i)return;const u=r.replace(/\D/g,"");if(u.length>=3){const m=u.slice(0,2),g=u.slice(2,4).padEnd(2,"0"),f=parseInt(m),p=parseInt(g);if(f>=0&&f<=23&&p>=0&&p<=59){const h=`${m}:${g}`;o(h),n(h);return}}o(e||"")};return i?t.jsx(ge,{type:"time",value:e||"",onChange:s,className:B("sm-time-input text-foreground focus-visible:ring-0 focus-visible:ring-offset-0",a)}):t.jsx(ge,{value:r,onChange:s,onBlur:c,placeholder:"TT:MM",inputMode:"numeric",maxLength:5,className:B("sm-time-input text-foreground focus-visible:ring-0 focus-visible:ring-offset-0",a)})}function br(e,n,a,i){return e<i&&a<n}function xr(e,n,a,i){const r=new Date(new Date(e).getTime()-a*6e4).toISOString(),o=new Date(new Date(n).getTime()+i*6e4).toISOString();return[r,o]}function Va(e){var i,r;const n=e.buffer_before_minutes??((i=e.activities)==null?void 0:i.buffer_before_minutes)??0,a=e.buffer_after_minutes??((r=e.activities)==null?void 0:r.buffer_after_minutes)??0;return[n,a]}function ki(e,n,a,i,r,o,l,s){const c=l??0,u=s??0,[m,g]=xr(a,i,c,u);for(const f of o)if(f.member_id===e&&br(m,g,f.start_at,f.end_at))return"Fravær";for(const f of r){if(f.id===n)continue;const[p,h]=Va(f),[b,y]=xr(f.start_at,f.end_at,p,h);if(br(m,g,b,y)&&f.event_personnel.some(v=>v.member_id===e))return"Opptatt"}return null}function wi(e,n,a,i,r,o,l,s){const c=l??0,u=s??0,[m,g]=xr(a,i,c,u);for(const f of o)if(f.resource_id===e&&br(m,g,f.start_at,f.end_at))return"Blokkert";for(const f of r){if(f.id===n)continue;const[p,h]=Va(f),[b,y]=xr(f.start_at,f.end_at,p,h);if(br(m,g,b,y)&&f.event_resources.some(v=>v.resource_id===e))return"Opptatt"}return null}function Si({conflict:e}){if(!e)return null;const n=e==="Fravær"?"text-orange-500":"text-red-500";return t.jsxs("span",{className:`text-xs font-medium ${n} ml-1`,children:["(",e,")"]})}function wl(e){return[...e].sort((n,a)=>{const i=n.conflict?1:0,r=a.conflict?1:0;return i-r})}function kr({label:e,sublabel:n,onRemove:a}){return t.jsxs(rt.div,{layout:!0,initial:{opacity:0,scale:.8}
528,animate:{opacity:1,scale:1},exit:{opacity:0,scale:.8},transition:{type:"spring",stiffness:500,damping:30},className:"resource-chip inline-flex items-center gap-1.5 cursor-default",children:[n&&t.jsxs("span",{className:"text-muted-foreground",children:[n,":"]}),t.jsx("span",{children:e}),t.jsx("button",{onClick:a,className:"ml-0.5 rounded-full p-1.5 -m-1 hover:bg-destructive/20 hover:text-destructive transition-colors",children:t.jsx(Mt,{className:"h-3.5 w-3.5"})})]})}function Ci({open:e,onClose:n,title:a,children:i,anchorRef:r}){const o=d.useRef(null),[l,s]=d.useState({top:0,left:0,width:200}),c=d.useCallback(()=>{if(r!=null&&r.current){const u=r.current.getBoundingClientRect(),m=Math.max(u.width,220),g=window.innerWidth,f=window.innerHeight;let p=u.left;p+m>g-8&&(p=Math.max(8,u.right-m));const h=220;let b=u.bottom+4;b+h>f-8&&(b=Math.max(8,u.top-h-4)),s({top:b,left:p,width:m})}},[r]);return d.useLayoutEffect(()=>{e&&c()},[e,c]),d.useEffect(()=>{if(!e)return;const u=m=>{const g=m.target;o.current&&o.current.contains(g)||r!=null&&r.current&&r.current.contains(g)||n()};return document.addEventListener("mouseup",u),()=>document.removeEventListener("mouseup",u)},[e,n,r]),e?ps.createPortal(t.jsxs(rt.div,{ref:o,"data-floating-list":!0,initial:{opacity:0,y:-4,scale:.97},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-4,scale:.97},transition:{type:"spring",stiffness:400,damping:25},style:{position:"fixed",top:l.top,left:l.left,width:l.width,zIndex:99999,pointerEvents:"auto"},className:"rounded-lg border border-border bg-popover shadow-lg overflow-hidden",children:[t.jsx("div",{className:"px-3 py-1 border-b border-border bg-muted/50",children:t.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-wider text-muted-foreground leading-none",children:a})}),i]}),document.body):null}function wr({missingLabel:e,selectLabel:n,options:a,onAssign:i}){const{t:r}=ke(),[o,l]=d.useState(!1),s=d.useRef(null);return t.jsxs("div",{className:"relative",children:[t.jsx("button",{ref:s,onClick:()=>l(c=>!c),className:"drop-zone w-full text-left",children:e}),t.jsx(Ci,{open:o,onClose:()=>l(!1),title:n,anchorRef:s,children:a.length===0?t.jsx("p",{className:"text-sm text-muted-foreground px-3 py-3",children:r.common.noneAvailable}):t.jsx("div",{className:"py-1 max-h-48 overflow-y-auto",children:wl(a).map(c=>t.jsxs("button",{onClick:()=>{i(c.id),l(!1)},className:"w-full text-left text-sm px-3 py-2 hover:bg-accent transition-colors text-foreground",children:[c.label,t.jsx(Si,{conflict:c.conflict??null})]},c.id))})})]})}function WA({event:e,plusBtnRef:n,paxOverride:a}){var L;const{t:i}=ke(),{assignPersonnel:r,unassignPersonnel:o}=Ei(),{data:l}=An(),{data:s}=Or(Fr()),{data:c}=qr(),{data:u}=rl(),[m,g]=d.useState(!1),f=d.useRef(null),p=n??f,h=(s||[]).find(M=>M.id===e.id),[b,y]=Va(h||e),v=h==null?void 0:h.activities,w=(v==null?void 0:v.activity_personnel_requirements)||[],x=a??e.maxParticipants??0,S=ol(w,x,u||[]),k=h?h.event_personnel.map(M=>M.member_id):e.assignedPersonnelIds,C=(l||[]).filter(M=>M.accepted_at),A=new Map;
528for(const M of C)A.set(M.id,(M.personnel_competences||[]).map(j=>j.competence_id));const q=new Set,P=[],D=[];for(const M of S){const j=((L=M.competences)==null?void 0:L.name)||"?";let I=0;for(let Y=0;Y<M.count;Y++){const X=k.find(_=>!q.has(_)&&(A.get(_)||[]).includes(M.competence_id));if(X){q.add(X);const _=C.find(N=>N.id===X);P.push({competenceName:j,competenceId:M.competence_id,assignedMember:{id:X,name:Wt(_)}}),I++}}const V=M.count-I;V>0&&D.push({competenceName:j,competenceId:M.competence_id,missingCount:V})}const z=k.filter(M=>!q.has(M)),F=M=>r.mutate({eventId:e.id,memberId:M}),R=M=>o.mutate({eventId:e.id,memberId:M}),E=C.filter(M=>!k.includes(M.id));return d.useEffect(()=>{const M=n==null?void 0:n.current;if(!M)return;const j=()=>g(I=>!I);return M.addEventListener("click",j),()=>M.removeEventListener("click",j)},[n]),t.jsxs("section",{className:"space-y-2",children:[!n&&E.length>0&&t.jsx("div",{className:"flex justify-end",children:t.jsx("button",{ref:f,onClick:()=>g(M=>!M),className:"p-1 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent transition-colors",children:t.jsx(Rt,{className:"h-4 w-4"})})}),t.jsx("div",{className:"relative",children:t.jsx(Ci,{open:m,onClose:()=>g(!1),title:i.event.addPersonnel,anchorRef:p,children:t.jsx("div",{className:"py-1 max-h-48 overflow-y-auto",children:wl(E.map(M=>({m:M,conflict:ki(M.id,e.id,e.startAt,e.endAt,s||[],c||[],b,y)}))).map(({m:M,conflict:j})=>t.jsxs("button",{onClick:()=>{F(M.id),g(!1)},className:"w-full text-left text-sm px-3 py-2 hover:bg-accent transition-colors text-foreground",children:[Wt(M),t.jsx(Si,{conflict:j})]},M.id))})})}),S.length===0&&k.length===0&&t.jsx("p",{className:"text-sm text-muted-foreground",children:i.common.noRequirements}),t.jsx(en,{mode:"popLayout",children:(P.length>0||z.length>0)&&t.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[P.map((M,j)=>t.jsx(kr,{label:M.assignedMember.name,sublabel:M.competenceName,onRemove:()=>R(M.assignedMember.id)},`assigned-${M.competenceId}-${j}`)),z.map(M=>{const j=C.find(I=>I.id===M);return t.jsx(kr,{label:Wt(j),onRemove:()=>R(M)},M)})]})}),t.jsx("div",{className:"space-y-1.5",children:D.map((M,j)=>t.jsx(wr,{missingLabel:`${i.requirements.missingLower} ${M.missingCount>1?`${M.missingCount} `:""}${M.competenceName.toLowerCase()}`,selectLabel:`${i.common.select} ${M.competenceName.toLowerCase()}`,options:C.filter(I=>!k.includes(I.id)&&(A.get(I.id)||[]).includes(M.competenceId)).map(I=>({id:I.id,label:Wt(I),conflict:ki(I.id,e.id,e.startAt,e.endAt,s||[],c||[],b,y)})),onAssign:F},`missing-${M.competenceId}-${j}`))})]})}function UA({event:e,plusBtnRef:n,paxOverride:a}){var E;const{t:i}=ke(),{assignResource:r,unassignResource:o}=Ei(),{data:l}=xi(),{data:s}=il(),{data:c}=Or(Fr()),{data:u}=Vr(),[m,g]=d.useState(!1),f=d.useRef(null),p=n??f,h=(c||[]).find(L=>L.id===e.id),[b,y]=Va(h||e),v=h==null?void 0:h.activities,w=(v==null?void 0:v.activity_resource_requirements)||[],x=a??e.maxParticipants??0,S=sl(w,x,s||[]),k=h?h.event_resources.map(L=>L.resource_id):e.assignedResourceIds,C=l||[],A=new Set,q=[],P=[];for(const L of S){const M=((E=L.resource_types)==null?void 0:E.name)||"?";let j=0;for(let V=0;V<L.count;V++){const Y=k.find(X=>{var _;return!A.has(X)&&((_=C.find(N=>N.id===X))==null?void 0:_.resource_type_id)===L.resource_type_id});if(Y){A.add(Y);const X=C.find(_=>_.id===Y);q.push({resourceTypeName:M,resourceTypeId:L.resource_type_id,assignedResource:{id:Y,name:(X==null?void 0:X.name)||"?"}}),j++}}const I=L.count-j;I>0&&P.push({resourceTypeName:M,resourceTypeId:L.resource_type_id,missingCount:I})}const D=k.filter(L=>!A.has(L)),z=L=>r.mutate({eventId:e.id,resourceId:L}),F=L=>o.mutate({eventId:e.id,resourceId:L}),R=C.filter(L=>!k.includes(L.id));return d.useEffect(()=>{const L=n==null?void 0:n.current;if(!L)return;const M=()=>g(j=>!j);return L.addEventListener("click",M),()=>L.removeEventListener("click",M)},[n]),t.jsxs("section",{className:"space-y-2",children:[!n&&R.length>0&&t.jsx("div",{className:"flex justify-end",children:t.jsx("button",{ref:f,onClick:()=>g(L=>!L),className:"p-1 rounded-md text-muted-foreground hover:text-foreground hover:bg-accent transition-colors",children:t.jsx(Rt,{className:"h-4 w-4"})})}),t.jsx("div",{className:"relative",children:t.jsx(Ci,{open:m,onClose:()=>g(!1),title:i.event.addResource,anchorRef:p,children:t.jsx("div",{className:"py-1 max-h-48 overflow-y-auto",children:wl(R.map(L=>
528({r:L,conflict:wi(L.id,e.id,e.startAt,e.endAt,c||[],u||[],b,y)}))).map(({r:L,conflict:M})=>t.jsxs("button",{onClick:()=>{z(L.id),g(!1)},className:"w-full text-left text-sm px-3 py-2 hover:bg-accent transition-colors text-foreground",children:[L.name,t.jsx(Si,{conflict:M})]},L.id))})})}),S.length===0&&k.length===0&&t.jsx("p",{className:"text-sm text-muted-foreground",children:i.common.noRequirements}),t.jsx(en,{mode:"popLayout",children:(q.length>0||D.length>0)&&t.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[q.map((L,M)=>t.jsx(kr,{label:L.assignedResource.name,sublabel:L.resourceTypeName,onRemove:()=>F(L.assignedResource.id)},`assigned-${L.resourceTypeId}-${M}`)),D.map(L=>{const M=C.find(j=>j.id===L);return t.jsx(kr,{label:(M==null?void 0:M.name)||"?",onRemove:()=>F(L)},L)})]})}),t.jsx("div",{className:"space-y-1.5",children:P.map((L,M)=>t.jsx(wr,{missingLabel:`${i.requirements.missingLower} ${L.missingCount>1?`${L.missingCount} `:""}${L.resourceTypeName.toLowerCase()}`,selectLabel:`${i.common.select} ${L.resourceTypeName.toLowerCase()}`,options:C.filter(j=>!k.includes(j.id)&&j.resource_type_id===L.resourceTypeId).map(j=>({id:j.id,label:j.name,conflict:wi(j.id,e.id,e.startAt,e.endAt,c||[],u||[],b,y)})),onAssign:z},`missing-${L.resourceTypeId}-${M}`))})]})}var Ur="Switch",[HA,y_]=_a(Ur),[GA,$A]=HA(Ur),ap=d.forwardRef((e,n)=>{const{__scopeSwitch:a,name:i,checked:r,defaultChecked:o,required:l,disabled:s,value:c="on",onCheckedChange:u,form:m,...g}=e,[f,p]=d.useState(null),h=Zn(n,x=>p(x)),b=d.useRef(!1),y=f?m||!!f.closest("form"):!0,[v,w]=fs({prop:r,defaultProp:o??!1,onChange:u,caller:Ur});return t.jsxs(GA,{scope:a,checked:v,disabled:s,children:[t.jsx(lt.button,{type:"button",role:"switch","aria-checked":v,"aria-required":l,"data-state":sp(v),"data-disabled":s?"":void 0,disabled:s,value:c,...g,ref:h,onClick:Qt(e.onClick,x=>{w(S=>!S),y&&(b.current=x.isPropagationStopped(),b.current||x.stopPropagation())})}),y&&t.jsx(op,{control:f,bubbles:!b.current,name:i,value:c,checked:v,required:l,disabled:s,form:m,style:{transform:"translateX(-100%)"}})]})});ap.displayName=Ur;var ip="SwitchThumb",rp=d.forwardRef((e,n)=>{const{__scopeSwitch:a,...i}=e,r=$A(ip,a);return t.jsx(lt.span,{"data-state":sp(r.checked),"data-disabled":r.disabled?"":void 0,...i,ref:n})});rp.displayName=ip;var YA="SwitchBubbleInput",op=d.forwardRef(({__scopeSwitch:e,control:n,checked:a,bubbles:i=!0,...r},o)=>{const l=d.useRef(null),s=Zn(l,o),c=Og(a),u=Bg(n);return d.useEffect(()=>{const m=l.current;if(!m)return;const g=window.HTMLInputElement.prototype,p=Object.getOwnPropertyDescriptor(g,"checked").set;if(c!==a&&p){const h=new Event("click",{bubbles:i});p.call(m,a),m.dispatchEvent(h)}},[c,a,i]),t.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:a,...r,tabIndex:-1,ref:s,style:{...r.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});op.displayName=YA;function sp(e){return e?"checked":"unchecked"}var lp=ap,QA=rp;const Sr=d.forwardRef(({className:e,...n},a)=>t.jsx(lp,{className:B("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted-foreground/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50",e),...n,ref:a,children:t.jsx(QA,{className:B("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));Sr.displayName=lp.displayName;function JA(e){const{currentMembership:n}=he(),a=n==null?void 0:n.companyId;return Ee({queryKey:["event-bookings",e,a],enabled:!!e&&!!a,queryFn:async()=>{const{data:i,error:r}=await T.from("bookings").select("id, confirmation_code, customer_name, customer_email, customer_phone, customer_dob, customer_nationality, total_amount, currency, status, created_at, metadata, booking_lines(id, category_name, quantity, unit_amount, line_amount)").eq("event_id",e).eq("company_id",a).in("status",["confirmed","paid"]).order("created_at",{ascending:!0});if(r)throw r;return i||[]}})}function wa(e,n,a){const i=e/100;try{return new Intl.NumberFormat(a??void 0,{style:"currency",currency:n,minimumFractionDigits:0,maximumFractionDigits:2}).format(i)}catch{return`${i.toFixed(2)} ${n}`}}function ZA(e){try{const n=new Date(e);if(isNaN(n.getTime()))return null;const a=new Date;let i=a.getFullYear()-n.getFullYear();const r=a.getMonth()-n.getMonth();return(r<0||r===0&&a.getDate()<n.getDate())&&i--,i}catch{return null}}function Ec(e,n){return wa(e,n)}function XA(e,n){const a={en:"en-GB",no:"nb-NO",de:"de-DE",es:"es-ES",fr:"fr-FR",it:"it-IT"};return new Date(e).toLocaleDateString(a[n]||"en-GB",{day:"numeric",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit"})}function eP({booking:e,t:n,language:a}){const[i,r]=d.useState(!1),o=e.booking_lines.reduce((s,c)=>s+c.quantity,0),l=e.customer_dob?ZA(e.customer_dob):null;return t.jsxs("button",{type:"button",onClick:()=>r(s=>!s),className:"w-full text-left rounded-lg border border-border hover:border-primary/30 hover:bg-accent/30 transition-colors p-3 space-y-2 cursor-pointer",children:[t.jsxs("div",{className:"flex items-start justify-between gap-2",children:[t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("p",{className:"font-medium text-sm truncate",children:e.customer_name}),i?t.jsx(Pr,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}):t.jsx(hn,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 mt-1",children:[e.customer_email&&t.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-muted-foreground",children:[t.jsx(cr,{className:"h-3 w-3 shrink-0"}),t.jsx("span",{className:"truncate",children:e.customer_email})]}),e.customer_phone&&t.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-muted-foreground",children:[t.jsx(dr,{className:"h-3 w-3 shrink-0"}),e.customer_phone]})]})]}),t.jsxs(pn,{variant:"secondary",className:"shrink-0 text-xs",children:[o," ",o===1?n.participants.participant:n.participants.participants]})]}),!i&&e.booking_lines.length>0&&t.jsx("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:t.jsx("span",{className:"truncate",children:e.booking_lines.map(s=>`${s.quantity}Ã ${s.category_name}`).join(", ")})}),t.jsx(en,{initial:!1,children:i&&t.jsx(rt.div,{initial:{height:0,opacity:0}
528,animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:"easeInOut"},className:"overflow-hidden",children:t.jsxs("div",{className:"pt-2 space-y-3 border-t border-border/50",children:[t.jsxs("div",{className:"space-y-1.5",children:[t.jsx("p",{className:"text-xs font-medium text-foreground",children:n.participants.contactPerson}),t.jsxs("div",{className:"pl-1 space-y-1",children:[t.jsx("p",{className:"text-xs text-foreground",children:e.customer_name}),e.customer_email&&t.jsxs("p",{className:"text-xs text-muted-foreground flex items-center gap-1.5",children:[t.jsx(cr,{className:"h-3 w-3 shrink-0"})," ",e.customer_email]}),e.customer_phone&&t.jsxs("p",{className:"text-xs text-muted-foreground flex items-center gap-1.5",children:[t.jsx(dr,{className:"h-3 w-3 shrink-0"})," ",e.customer_phone]}),e.customer_dob&&t.jsxs("p",{className:"text-xs text-muted-foreground flex items-center gap-1.5",children:[t.jsx(Ff,{className:"h-3 w-3 shrink-0"}),e.customer_dob,l!==null&&t.jsxs("span",{className:"text-muted-foreground/60",children:["(",l," ",n.participants.years,")"]})]})]})]}),e.booking_lines.length>0&&t.jsxs("div",{className:"space-y-1.5",children:[t.jsxs("p",{className:"text-xs font-medium text-foreground flex items-center gap-1.5",children:[t.jsx(ph,{className:"h-3 w-3"}),n.participants.tickets]}),t.jsxs("div",{className:"pl-1 space-y-1",children:[e.booking_lines.map(s=>t.jsxs("div",{className:"flex items-center justify-between text-xs",children:[t.jsxs("span",{className:"text-muted-foreground",children:[s.quantity,"à ",s.category_name]}),t.jsx("span",{className:"text-foreground font-medium",children:Ec(s.line_amount,e.currency)})]},s.id)),t.jsxs("div",{className:"flex items-center justify-between text-xs pt-1 border-t border-border/50",children:[t.jsx("span",{className:"font-medium text-foreground",children:n.participants.total}),t.jsx("span",{className:"font-semibold text-foreground",children:Ec(e.total_amount,e.currency)})]})]})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-[11px] text-muted-foreground/60",children:[t.jsxs("span",{className:"flex items-center gap-1",children:[t.jsx(nu,{className:"h-3 w-3"}),e.status==="confirmed"?n.participants.confirmed:n.participants.paid]}),t.jsxs("span",{className:"flex items-center gap-1",children:[t.jsx(Ia,{className:"h-3 w-3"}),XA(e.created_at,a)]}),t.jsxs("span",{children:["Ref: ",e.confirmation_code]})]})]})})})]})}function tP({eventId:e,eventName:n,open:a,onOpenChange:i}){const{t:r,language:o}=ke(),{data:l=[],isLoading:s}=JA(a?e:null),c=l.reduce((g,f)=>g+f.booking_lines.reduce((p,h)=>p+h.quantity,0),0),u=`${r.participants.title} â ${n}`,m=t.jsx("div",{className:"flex justify-end w-full",children:t.jsx("button",{onClick:()=>i(!1),className:"sm-form-overlay-btn-cancel",type:"button",children:r.common.cancel})});return t.jsx(Tt,{open:a,onOpenChange:i,title:u,footer:m,size:"lg",children:t.jsx("div",{className:"space-y-4",children:s?t.jsxs("div",{className:"space-y-3",children:[t.jsx(Nn,{className:"h-16 w-full"}),t.jsx(Nn,{className:"h-16 w-full"})]}):l.length===0?t.jsx("p",{className:"text-sm text-muted-foreground text-center py-6",children:r.participants.noBookingsYet}):t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[t.jsx(_r,{className:"h-4 w-4"}),t.jsxs("span",{children:[l.length," ",l.length===1?r.participants.booking:r.participants.bookings," · ",c," ",c===1?r.participants.participant:r.participants.participants]})]}),t.jsx("div",{className:"space-y-2",children:l.map(g=>t.jsx(eP,{booking:g,t:r,language:o},g.id))})]})})})}const cp="__salesmate_pax_interaction_at",nP=450;function Qi(){typeof window>"u"||(window[cp]=Date.now())}function Sl(){if(typeof window>"u")return!1;const e=Number(window[cp]||0);return Date.now()-e<nP}function Rc({status:e,size:n="md"}){const a=n==="lg"?"w-4 h-4 shrink-0":n==="sm"?"w-3 h-3 shrink-0":"w-3.5 h-3.5 shrink-0";switch(e){case"open":return t.jsx(Ps,{className:a,style:{color:"#4CAF6A"}});case"private":return t.jsx(jr,{className:a,style:{color:"#C9A227"}});case"closed":return t.jsx(Hn,{className:a,style:{color:"#C05A5A"}});default:return null}}function Hr({eventId:e,eventName:n,registered:a,max:i,badgeClass:r,bookingStatus:o,size:l="md",clickable:s=!0}){const[c,u]=d.useState(!1),m=l==="lg"?"px-3.5 py-1.5 text-base gap-1.5 font-semibold":l==="sm"?"px-1.5 py-0.5 text-[10px] gap-1":"px-2 py-0.5 text-xs gap-1";return s?t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",onPointerDown:g=>{Qi(),g.stopPropagation()},onMouseDown:g=>{Qi(),g.stopPropagation()},onClick:g=>{Qi(),g.stopPropagation(),g.preventDefault(),u(!0)},className:B("pax-badge-btn inline-flex items-center rounded-full font-medium shrink-0 hover:ring-2 hover:ring-primary/30 transition-shadow cursor-pointer",m,r),children:[t.jsx("span",{className:a===0?"opacity-40":"",children:a}),o&&t.jsx(Rc,{status:o,size:l})]}),t.jsx(tP,{eventId:e,eventName:n,open:c,onOpenChange:g=>{Qi(),u(g)}})]}):t.jsxs("span",{className:B("pax-badge-btn inline-flex items-center rounded-full font-medium shrink-0",m,r),children:[t.jsx("span",{className:a===0?"opacity-40":"",children:a}),o&&t.jsx(Rc,{status:o,size:l})]})}function aP(e){const{currentMembership:n}=he(),a=n==null?void 0:n.companyId,i=st(),r=["event_notes",e],{data:o=[],isLoading:l}=Ee({queryKey:r,queryFn:async()=>
528{if(!e||!a)return[];const{data:g,error:f}=await T.from("event_notes").select("*, author:company_members!event_notes_author_member_id_fkey(display_name)").eq("event_id",e).eq("company_id",a).eq("is_archived",!1).order("is_pinned",{ascending:!1}).order("created_at",{ascending:!1});if(f)throw f;return(g||[]).map(p=>{var h;return{...p,author_name:((h=p.author)==null?void 0:h.display_name)||"Unknown"}})},enabled:!!e&&!!a}),s=de({mutationFn:async g=>{if(!e||!a||!n)throw new Error("Missing context");const{data:f,error:p}=await T.from("event_notes").insert({event_id:e,company_id:a,author_member_id:n.memberId,content:"",note_type:g}).select().single();if(p)throw p;return f},onSuccess:()=>i.invalidateQueries({queryKey:r})}),c=de({mutationFn:async({id:g,...f})=>{const{error:p}=await T.from("event_notes").update(f).eq("id",g);if(p)throw p},onSuccess:()=>i.invalidateQueries({queryKey:r})}),u=de({mutationFn:async g=>{const{error:f}=await T.from("event_notes").update({is_archived:!0}).eq("id",g);if(f)throw f},onSuccess:()=>i.invalidateQueries({queryKey:r})}),m=de({mutationFn:async({id:g,is_pinned:f})=>{const{error:p}=await T.from("event_notes").update({is_pinned:!f}).eq("id",g);if(p)throw p},onSuccess:()=>i.invalidateQueries({queryKey:r})});return{notes:o,isLoading:l,createNote:s,updateNote:c,archiveNote:u,togglePin:m}}function iP(){const{user:e}=Rn(),n=st(),{data:a=[],isLoading:i}=Ee({queryKey:["help-dismissals",e==null?void 0:e.id],enabled:!!e,queryFn:async()=>{const{data:o,error:l}=await T.from("help_dismissals").select("help_key").eq("user_id",e.id);if(l)throw l;return(o??[]).map(s=>s.help_key)},staleTime:1/0}),r=de({mutationFn:async o=>{const{error:l}=await T.from("help_dismissals").insert({user_id:e.id,help_key:o});if(l)throw l},onSuccess:()=>{n.invalidateQueries({queryKey:["help-dismissals",e==null?void 0:e.id]})}});return{isDismissed:o=>a.includes(o),dismiss:o=>r.mutate(o),isLoading:i}}function Gr({helpKey:e,children:n,toggleCount:a=0,onClose:i}){const{isDismissed:r,dismiss:o,isLoading:l}=iP(),{t:s}=ke(),[c,u]=d.useState(!1),[m,g]=d.useState(!1);if(d.useEffect(()=>{a>0&&(a%2===1?(g(!0),u(!1)):(g(!1),u(!0)))},[a]),l)return null;const f=r(e),p=typeof window<"u"&&localStorage.getItem("sm-hide-onboarding")==="1",h=m||!f&&!c&&!p,b=()=>{u(!0),g(!1),i==null||i()};return t.jsx(en,{mode:"wait",children:h&&t.jsx(rt.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.15,ease:"easeOut"},className:"overflow-hidden",children:t.jsxs("div",{className:"sm-help-overlay",children:[t.jsx("button",{onClick:b,className:"absolute top-2 right-2 p-0.5 rounded-full hover:bg-accent/50 transition-colors text-muted-foreground","aria-label":"Close",children:t.jsx(Mt,{className:"w-3.5 h-3.5"})}),t.jsx("div",{className:"sm-help-content",children:n}),!f&&t.jsx("button",{onClick:()=>{o(e),b()},className:"sm-help-dismiss-btn",children:s.help.dontShowAgain})]})},"help-overlay")})}function $r({onClick:e,active:n}){return t.jsx("button",{onClick:e,className:B("sm-help-trigger",n&&"sm-help-trigger-active"),"aria-label":"Help","aria-pressed":n,children:t.jsx(Kf,{className:"w-4 h-4"})})}function zt({icon:e,text:n}){return t.jsxs("div",{className:"flex items-start gap-2",children:[t.jsx("span",{className:"mt-0.5",children:e}),t.jsx("p",{className:"text-[13px] text-muted-foreground leading-snug",children:n})]})}function rP(){const{t:e}=ke(),n=e.help.eventDrawer;return t.jsxs("div",{className:"space-y-2.5",children:[t.jsx("p",{className:"text-[13px] font-semibold text-foreground",children:n.title}),t.jsx("p",{className:"text-[13px] text-muted-foreground leading-relaxed",children:n.intro}),t.jsxs("div",{className:"space-y-2 pt-1",children:[t.jsx(zt,{icon:t.jsx(Cs,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipActivity}),t.jsx(zt,{icon:t.jsx(Tr,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipSeries}),t.jsx(zt,{icon:t.jsx(_r,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipPersonnel}),t.jsx(zt,{icon:t.jsx(Zd,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipStatus}),t.jsx(zt,{icon:t.jsx(ch,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipBooking})]})]})}function pe({label:e,children:n,icon:a}){return t.jsxs("div",{className:"sm-prop-row",children:[t.jsxs("div",{className:"sm-prop-label",children:[a&&t.jsx("span",{className:"sm-prop-icon",children:a}),e]}),t.jsx("div",{className:"sm-prop-value",children:n})]})}function Te({title:e="",children:n,action:a,noBorder:i}){return t.jsxs("div",{className:i?"sm-section sm-section-no-border":"sm-section",children:[e!==""&&t.jsxs("div",{className:"sm-section-header",children:[t.jsx("span",{className:"sm-section-title",children:e}),a]}),e===""&&a&&t.jsxs("div",{className:"sm-section-header",children:[t.jsx("span",{}),a]}),t.jsx("div",{className:"sm-section-body",children:n})]})}function oP(e,n,a,i,r,o){const l=a??r??0,s=i??o??0,c=new Date(new Date(e).getTime()-l*6e4),u=new Date(new Date(n).getTime()+s*6e4);return{bufBefore:l,bufAfter:s,effectiveStart:c,effectiveEnd:u}}function ja({event:e,open:n,onOpenChange:a,date:i,readOnly:r}){var jl,Tl;const o=e===null,l=!o&&(e.registeredParticipants??0)>0,{create:s,update:c,remove:u,assignPersonnel:m,assignResource:g}=Ei(),{t:f,language:p}=ke(),{data:h=[]}=Br(),{data:b=[]}=Ri(),{data:y=[]}=Ba(),{data:v=[]}=qw(),{data:w=[]}=An(),{data:x=[]}=xi(),{data:S=[]}=Or(Fr()),{data:k=[]}=qr(),{data:C=[]}=Vr(),{data:A=[]}=An(),{data:q=[]}=xi(),P=i??new Date().toISOString().slice(0,10),[D,z]=d.useState({name:"",startDate:P,endDate:P,start:"",end:"",maxParticipants:0,customerId:"",projectId:"",activityId:""}),[F,R]=d.useState({before:null,after:null}
528),[E,L]=d.useState(!1),[M,j]=d.useState(null),[I,V]=d.useState(null),[Y,X]=d.useState("confirmed"),[_,N]=d.useState(!1),[W,$]=d.useState(!1),[K,H]=d.useState(!1),[re,ie]=d.useState(!1),[Se,oe]=d.useState(0),[J,Z]=d.useState(null),[be,ze]=d.useState([]),[Fe,Le]=d.useState([]),[Ve,Ke]=d.useState(!1),[St,tt]=d.useState(!1);d.useState(!0);const Ze=d.useRef(null),He=d.useRef(null),yt=d.useRef(null),wt=!o&&e?e.id:null,{notes:dt,createNote:bt,updateNote:ve}=aP(wt),[We,Qe]=d.useState(""),[Q,it]=d.useState(null),ne=d.useRef(),xe=dt[0]??null;d.useEffect(()=>{xe&&(it(xe.id),Qe(xe.content))},[xe==null?void 0:xe.id,xe==null?void 0:xe.content]),d.useEffect(()=>()=>clearTimeout(ne.current),[]);const Ye=async U=>{Qe(U);let ae=Q;!ae&&!xe&&(ae=(await bt.mutateAsync("internal")).id,it(ae)),ae&&(clearTimeout(ne.current),ne.current=setTimeout(()=>{ve.mutate({id:ae,content:U})},600))};d.useEffect(()=>{if(!o&&e){const U={name:e.name,startDate:e.startDate,endDate:e.endDate,start:e.start,end:e.end,maxParticipants:e.maxParticipants,customerId:e.customerId??"",projectId:e.projectId??"",activityId:e.activityId??""},ae=e,we={before:ae.buffer_before_minutes??null,after:ae.buffer_after_minutes??null};z(U),R(we),j(e.billingModeOverride??null),V(e.bookingStatusOverride??null),ie(e.bookable??!1),X(e.operationalStatus??"confirmed"),L(ae.buffer_before_minutes!=null||ae.buffer_after_minutes!=null),N(!1),$(!1)}},[e,o]);const Je=()=>{const U=new Date,ae=U.getMinutes(),we=ae<30?30:0,at=ae<30?U.getHours():U.getHours()+1,ot=`${String(at).padStart(2,"0")}:${String(we).padStart(2,"0")}`,ht=at+1,Nt=`${String(ht).padStart(2,"0")}:${String(we).padStart(2,"0")}`;return{start:ot,end:Nt}};d.useEffect(()=>{if(o&&n){const{start:U,end:ae}=Je();z({name:"",startDate:P,endDate:P,start:U,end:ae,maxParticipants:0,customerId:"",projectId:"",activityId:""}),ze([]),Le([]),R({before:null,after:null}),j(null),V(null),ie(!1),X("confirmed"),L(!1),N(!1),setTimeout(()=>{var we;return(we=yt.current)==null?void 0:we.focus()},150)}},[o,n]);const Oe=b.find(U=>U.id===D.activityId);D.customerId&&v.filter(U=>U.customer_id===D.customerId);const ce=`${D.startDate}T${D.start||"00:00"}:00`,Ce=`${D.endDate}T${D.end||"00:00"}:00`,Pe=oP(ce,Ce,F.before,F.after,Oe==null?void 0:Oe.buffer_before_minutes,Oe==null?void 0:Oe.buffer_after_minutes),Ne=async()=>{if(!K){if(!D.start||!D.end){Z(f.event.timeRequired);return}if(D.startDate===D.endDate&&D.end<=D.start){Z(f.event.endMustBeAfterStart);return}}if(Z(null),o){if(!D.activityId&&!D.name.trim())return;const U=D.name.trim()||(Oe==null?void 0:Oe.name)||"",ae=await s.mutateAsync({name:U,activity_id:D.activityId||null,start_at:ce,end_at:Ce,max_participants:D.maxParticipants,bookable:re,customer_id:D.customerId||null,project_id:D.projectId||null});ae!=null&&ae.id&&await Promise.all([...be.map(we=>m.mutateAsync({eventId:ae.id,memberId:we}).catch(()=>{})),...Fe.map(we=>g.mutateAsync({eventId:ae.id,resourceId:we}).catch(()=>{}))])}else{if(!e)return;c.mutate({id:e.id,name:D.name,activity_id:D.activityId||null,start_at:ce,end_at:Ce,max_participants:D.maxParticipants,registered_participants:e.registeredParticipants,bookable:re,cancelled:Y==="cancelled",sale_id:e.saleId,customer_id:D.customerId||null,project_id:D.projectId||null,buffer_before_minutes:F.before,buffer_after_minutes:F.after,billing_mode_override:M,booking_status_override:I,operational_status:Y})}a(!1)},Re=()=>{e&&(u.mutate(e.id),a(!1))},Xe=o?!!D.activityId||!!D.name.trim():!0,{data:Ue}=Dw(o?null:(e==null?void 0:e.id)??null),le=((jl=Ue==null?void 0:Ue.data)==null?void 0:jl.conflicts)??[],ue=o?null:S.find(U=>U.id===(e==null?void 0:e.id)),ye=ue?ue.event_personnel.map(U=>U.member_id):(e==null?void 0:e.assignedPersonnelIds)??[],Me=ue?ue.event_resources.map(U=>U.resource_id):(e==null?void 0:e.assignedResourceIds)??[],Ge=[];if(!o&&e){const[U,ae]=Va(ue||e);for(const we of ye){const at=ki(we,e.id,e.startAt,e.endAt,S,k,U,ae);if(at){const ot=A.find(Nt=>Nt.id===we),ht=ot&&(((Tl=ot.profiles)==null?void 0:Tl.display_name)||ot.display_name)||"Personell";Ge.push(`${ht}: ${at}`)}}for(const we of Me){const at=wi(we,e.id,e.startAt,e.endAt,S,C,U,ae);if(at){const ot=q.find(Nt=>Nt.id===we),ht=(ot==null?void 0:ot.name)||"Ressurs";Ge.push(`${ht}: ${at}`)}}}const nt=le.length>0?le:Ge,Ct=3,Ft=W?nt:nt.slice(0,Ct),Ht=nt.length-Ct,zn=!o&&(e!=null&&e.seriesId)?h.find(U=>U.id===e.seriesId):null,na=w.filter(U=>U.accepted_at),{data:aa=[]}=rl(),ft=(Oe==null?void 0:Oe.activity_personnel_requirements)||[],et=(Oe==null?void 0:Oe.activity_resource_requirements)||[],ia=d.useMemo(()=>ol(ft,D.maxParticipants,aa),[ft,D.maxParticipants,aa]),{data:Ga=[]}=il(),ra=d.useMemo(()=>sl(et,D.maxParticipants,Ga),[et,D.maxParticipants,Ga]),$a=new Map;
528for(const U of na)$a.set(U.id,(U.personnel_competences||[]).map(ae=>ae.competence_id));const Ya=na.filter(U=>!be.includes(U.id)),Fi=x.filter(U=>!Fe.includes(U.id)),Oi=t.jsxs(Te,{title:"",children:[t.jsx(pe,{label:f.event.description,children:t.jsx(ge,{ref:yt,value:D.name,onChange:U=>z({...D,name:U.target.value}),className:"sm-input"})}),t.jsx(pe,{label:f.calendar.activity,children:t.jsx(kn,{options:[...b.filter(U=>U.is_sellable).map(U=>({value:U.id,label:U.name,group:f.activities.commercialCategory})),...b.filter(U=>!U.is_sellable).map(U=>({value:U.id,label:U.name,group:f.activities.internalCategory}))],value:D.activityId,onChange:U=>{const ae=b.find(at=>at.id===U),we={...D,activityId:U,name:D.name||(ae==null?void 0:ae.name)||D.name};o&&ae&&(we.maxParticipants=ae.max_participants,ie(!1)),z(we)},placeholder:f.event.selectActivityOptional,noneLabel:l?void 0:f.common.none,smStyle:!0})})]}),Bi=t.jsx(Te,{title:"",noBorder:!0,children:t.jsx(pe,{label:f.event.customer,children:t.jsx(kn,{options:y.map(U=>({value:U.id,label:U.name})),value:D.customerId,onChange:U=>z({...D,customerId:U,projectId:""}),placeholder:f.event.selectCustomerOptional,noneLabel:f.common.none,smStyle:!0})})}),qi=t.jsxs(Te,{title:"",noBorder:!0,children:[t.jsx(pe,{label:f.event.allDay,children:t.jsx(Sr,{checked:K,onCheckedChange:H})}),t.jsx(pe,{label:f.event.starts,children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(va,{value:D.startDate,onChange:U=>z({...D,startDate:U}),className:"sm-date-btn flex-1"}),!K&&t.jsx(yr,{value:D.start,onChange:U=>{Z(null),z({...D,start:U})},className:"w-[80px] sm-time-input"})]})}),t.jsx(pe,{label:f.event.ends,children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(va,{value:D.endDate,onChange:U=>z({...D,endDate:U}),className:"sm-date-btn flex-1"}),!K&&t.jsx(yr,{value:D.end,onChange:U=>{Z(null),z({...D,end:U})},className:"w-[80px] sm-time-input"})]})}),J&&t.jsx("p",{className:"text-[11px] text-destructive px-1 -mt-1",children:J})]}),Mn=(zn==null?void 0:zn.booking_status)??"open",In=I??Mn,Zr=U=>{switch(U){case"open":return f.event.openForBooking;case"private":return f.event.privateStatus;case"closed":default:return f.event.closed}},oa=(U,ae="w-4 h-4 shrink-0")=>{switch(U){case"open":return t.jsx(Ps,{className:ae,style:{color:"#4CAF6A"}});case"private":return t.jsx(jr,{className:ae,style:{color:"#C9A227"}});case"closed":default:return t.jsx(Hn,{className:ae,style:{color:"#C05A5A"}})}},Qa=(Oe==null?void 0:Oe.is_sellable)===!0?t.jsxs(Te,{title:"",children:[t.jsx(pe,{label:f.event.bookable,children:t.jsxs("div",{children:[t.jsx(Sr,{checked:re,onCheckedChange:ie,disabled:re&&((e==null?void 0:e.registeredParticipants)??0)>0}),re&&((e==null?void 0:e.registeredParticipants)??0)>0&&t.jsx("p",{className:"text-[11px] text-muted-foreground mt-1",children:f.event.cannotDisableBooking})]})}),t.jsxs("div",{className:`space-y-2 ${re?"":"opacity-50 pointer-events-none"}`,children:[t.jsx(pe,{label:f.event.bookingStatus,children:t.jsxs(Bt,{value:I??"inherit",onValueChange:U=>V(U==="inherit"?null:U),children:[t.jsx(It,{className:"sm-input [&>span]:!flex [&>span]:!items-center",children:t.jsxs("span",{className:"flex items-center gap-2 min-w-0",children:[oa(In),t.jsx("span",{className:"truncate",children:Zr(In)})]})}),t.jsxs(Lt,{children:[t.jsx(mt,{value:"inherit",children:t.jsxs("span",{className:"flex items-center gap-2",children:[t.jsx(ah,{className:"w-4 h-4 shrink-0",style:{color:"#7C8DA6"}}),f.event.inheritFromSeries]})}),t.jsx(mt,{value:"open",children:t.jsxs("span",{className:"flex items-center gap-2",children:[oa("open"),f.event.openForBooking]})}),t.jsx(mt,{value:"private",children:t.jsxs("span",{className:"flex items-center gap-2",children:[oa("private"),f.event.privateStatus]})}),t.jsx(mt,{value:"closed",children:t.jsxs("span",{className:"flex items-center gap-2",children:[oa("closed"),f.event.closed]})})]})]})}),t.jsx(pe,{label:f.event.maxParticipants,children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(ge,{type:"number",value:D.maxParticipants,onChange:U=>z({...D,maxParticipants:parseInt(U.target.value)||0}),className:"sm-input"}),re&&D.maxParticipants>0&&e&&t.jsx(Hr,{eventId:e.id,eventName:e.name||"",registered:e.registeredParticipants??0,max:D.maxParticipants,badgeClass:"bg-muted text-muted-foreground h-[35px] px-3 text-[13px]",bookingStatus:I??Mn})]})})]})]}):null,{data:Ja=[]}=Vw((e==null?void 0:e.id)??null),G=Ga,me=!o&&Ja.length>0?(()=>{const U={};for(const ae of Ja)U[ae.resource_type_id]||(U[ae.resource_type_id]={exclusive:0,shared:0,total:0}),U[ae.resource_type_id].total+=ae.units_reserved,ae.mode==="exclusive"?U[ae.resource_type_id].exclusive+=ae.units_reserved:U[ae.resource_type_id].shared+=ae.units_reserved;return t.jsx(Te,{title:f.resourceTypes.resourceUnits,children:Object.entries(U).map(([ae,we])=>{var ht;const at=((ht=G.find(Nt=>Nt.id===ae))==null?void 0:ht.name)??f.resourceTypes.unknownType,ot=e==null?void 0:e.resource_units_total;return t.jsxs("div",{className:"space-y-1 py-1",children:[t.jsx("p",{className:"text-xs font-medium text-foreground",children:at}),t.jsxs("div",{className:"flex flex-wrap gap-x-4 gap-y-0.5 text-xs text-muted-foreground",children:[t.jsxs("span",{children:[f.resourceTypes.unitsUsed,": ",t.jsx("strong",{className:"text-foreground",children:we.total}),ot!=null?` / ${ot}`:""]}),we.exclusive>0&&t.jsxs("span",{children:[f.resourceTypes.soloUnits,": ",we.exclusive]}),we.shared>0&&t.jsxs("span",{children:[f.resourceTypes.sharedUnits,": ",we.shared]}),ot!=null&&t.jsxs("span",{children:[f.resourceTypes.unitsRemaining,": ",Math.max(0,ot-we.total)]})]})]},ae)})})})():null,te=(U,ae="w-4 h-4 shrink-0")=>{switch(U){case"confirmed":return t.jsx(Zd,{className:ae,style:{color:"#4CAF6A"}});case"tentative":return t.jsx(Ia,{className:ae,style:{color:"#8B6FCF"}});case"cancelled":default:return t.jsx(Hn,{className:ae,style:{color:"#C05A5A"}})}},De=U=>{switch(U){case"confirmed":return f.event.confirmed;case"tentative":return f.event.tentative;case"cancelled":return f.event.cancelledStatus}},je=t.jsx(Te,{title:"",children:t.jsx(pe,{label:f.event.operationalStatus,children:t.jsxs(Bt,{value:Y,onValueChange:U=>X(U),children:[t.jsx(It,{className:"sm-input [&>span]:!flex [&>span]:!items-center",children:t.jsxs("span",{className:"flex items-center gap-2 min-w-0",children:[te(Y),t.jsx("span",{className:"truncate",children:De(Y)})]})}),t.jsxs(Lt,{children:[t.jsx(mt,{value:"confirmed",children:t.jsxs("span",{className:"flex items-center gap-2",children:[te("confirmed"),f.event.confirmed]})}),t.jsx(mt,{value:"tentative",children:t.jsxs("span",{className:"flex items-center gap-2",children:[te("tentative"),f.event.tentative]})}),t.jsx(mt,{value:"cancelled",children:t.jsxs("span",{className:"flex items-center gap-2",children:[te("cancelled"),f.event.cancelledStatus]})})]})]})})}),$e=t.jsx(en,{initial:!1,children:nt.length>0&&t.jsx(rt.div,{initial:{opacity:0,height:0,marginBottom:0}
528,animate:{opacity:1,height:"auto",marginBottom:4},exit:{opacity:0,height:0,marginBottom:0},transition:{duration:.22,ease:"easeInOut"},className:"overflow-hidden",children:t.jsxs("div",{className:"sm-conflict-banner",children:[t.jsxs("div",{className:"flex items-center gap-1.5 mb-1",children:[t.jsx(ur,{className:"h-3.5 w-3.5 text-destructive shrink-0"}),t.jsx("span",{className:"text-xs font-semibold text-destructive",children:f.event.conflicts})]}),t.jsx("ul",{className:"space-y-0.5",children:Ft.map((U,ae)=>t.jsx("li",{className:"text-xs text-destructive/80",children:U},ae))}),!W&&Ht>0&&t.jsx("button",{type:"button",onClick:()=>$(!0),className:"mt-1 text-xs text-destructive/60 hover:text-destructive transition-colors",children:`+ ${Ht} ${f.event.moreConflicts}`})]})},"conflicts")}),_t=o?t.jsx(Te,{title:f.tooltip.personnel,noBorder:!0,action:Ya.length>0?t.jsxs("div",{className:"relative",children:[t.jsxs("button",{ref:Ze,className:"sm-add-btn","aria-label":"Add personnel",onClick:()=>Ke(U=>!U),children:[t.jsx(Rt,{className:"h-3 w-3"}),f.common.add]}),t.jsx(Ci,{open:Ve,onClose:()=>Ke(!1),title:f.event.addPersonnel,anchorRef:Ze,className:"right-0 min-w-[200px]",children:t.jsx("div",{className:"py-1 max-h-48 overflow-y-auto",children:Ya.map(U=>{const ae=ki(U.id,"",ce,Ce,S,k,Pe.bufBefore,Pe.bufAfter);return t.jsxs("button",{onClick:()=>{ze(we=>[...we,U.id]),Ke(!1)},className:"w-full text-left text-sm px-3 py-2 hover:bg-accent transition-colors text-foreground",children:[Wt(U),t.jsx(Si,{conflict:ae})]},U.id)})})})]}):void 0,children:t.jsxs("div",{className:"sm-chips-area",children:[ia.length>0&&t.jsx("div",{className:"space-y-1.5",children:ia.flatMap(U=>{var ot;const ae=((ot=U.competences)==null?void 0:ot.name)||"?",we=[],at=new Set;for(let ht=0;ht<U.count;ht++){const Nt=be.find(Gt=>!at.has(Gt)&&($a.get(Gt)||[]).includes(U.competence_id));if(Nt){at.add(Nt);const Gt=na.find(dn=>dn.id===Nt);we.push(t.jsxs(pn,{variant:"secondary",className:"cursor-pointer hover:bg-destructive hover:text-destructive-foreground gap-1",onClick:()=>ze(dn=>dn.filter(Za=>Za!==Nt)),children:[t.jsxs("span",{className:"text-muted-foreground text-xs",children:[ae,":"]})," ",Wt(Gt),t.jsx(Mt,{className:"h-3 w-3"})]},`req-${U.competence_id}-${ht}`))}else we.push(t.jsxs("button",{onClick:()=>Ke(!0),className:"drop-zone w-full text-left",children:[f.event.missingCompetence," ",ae.toLowerCase()]},`missing-${U.competence_id}-${ht}`))}return we})}),be.filter(U=>{const ae=new Set;for(const we of ia)for(let at=0;at<we.count;at++){const ot=be.find(ht=>!ae.has(ht)&&($a.get(ht)||[]).includes(we.competence_id));ot&&ae.add(ot)}return!ae.has(U)}).map(U=>{const ae=na.find(we=>we.id===U);return t.jsxs(pn,{variant:"secondary",className:"cursor-pointer hover:bg-destructive hover:text-destructive-foreground gap-1",onClick:()=>ze(we=>we.filter(at=>at!==U)),children:[Wt(ae)," ",t.jsx(Mt,{className:"h-3 w-3"})]},U)}),be.length===0&&ia.length===0&&t.jsx("p",{className:"text-sm text-muted-foreground",children:f.event.noneAssigned})]})}):t.jsx(Te,{title:f.tooltip.personnel,noBorder:!0,action:t.jsxs("button",{ref:Ze,className:"sm-add-btn","aria-label":"Add personnel",children:[t.jsx(Rt,{className:"h-3 w-3"}),f.common.add]}),children:t.jsx("div",{className:"sm-chips-area",children:t.jsx(WA,{event:e,plusBtnRef:Ze,paxOverride:D.maxParticipants})})}),_e=o?t.jsx(Te,{title:f.tooltip.resources,action:Fi.length>0?t.jsxs("div",{className:"relative",children:[t.jsxs("button",{ref:He,className:"sm-add-btn","aria-label":"Add resource",onClick:()=>tt(U=>!U),children:[t.jsx(Rt,{className:"h-3 w-3"}),f.common.add]}),t.jsx(Ci,{open:St,onClose:()=>tt(!1),title:f.event.addResource,anchorRef:He,className:"right-0 min-w-[200px]",children:t.jsx("div",{className:"py-1 max-h-48 overflow-y-auto",children:Fi.map(U=>{const ae=wi(U.id,"",ce,Ce,S,C,Pe.bufBefore,Pe.bufAfter);return t.jsxs("button",{onClick:()=>{Le(we=>[...we,U.id]),tt(!1)},className:"w-full text-left text-sm px-3 py-2 hover:bg-accent transition-colors text-foreground",children:[U.name,t.jsx(Si,{conflict:ae})]},U.id)})})})]}):void 0,children:t.jsxs("div",{className:"sm-chips-area",children:[ra.length>0&&t.jsx("div",{className:"space-y-1.5",children:ra.flatMap(U=>{var ot;const ae=((ot=U.resource_types)==null?void 0:ot.name)||"?",we=[],at=new Set;for(let ht=0;ht<U.count;ht++){const Nt=Fe.find(Gt=>{var dn;return!at.has(Gt)&&((dn=x.find(Za=>Za.id===Gt))==null?void 0:dn.resource_type_id)===U.resource_type_id});if(Nt){at.add(Nt);const Gt=x.find(dn=>dn.id===Nt);we.push(t.jsxs(pn,{variant:"secondary",className:"cursor-pointer hover:bg-destructive hover:text-destructive-foreground gap-1",onClick:()=>Le(dn=>dn.filter(Za=>Za!==Nt)),children:[t.jsxs("span",{className:"text-muted-foreground text-xs",children:[ae,":"]})," ",(Gt==null?void 0:Gt.name)||"?",t.jsx(Mt,{className:"h-3 w-3"})]},`req-res-${U.resource_type_id}-${ht}`))}
528else we.push(t.jsxs("button",{onClick:()=>tt(!0),className:"drop-zone w-full text-left",children:[f.event.missingCompetence," ",ae.toLowerCase()]},`missing-res-${U.resource_type_id}-${ht}`))}return we})}),Fe.filter(U=>{const ae=new Set;for(const we of ra)for(let at=0;at<we.count;at++){const ot=Fe.find(ht=>{var Nt;return!ae.has(ht)&&((Nt=x.find(Gt=>Gt.id===ht))==null?void 0:Nt.resource_type_id)===we.resource_type_id});ot&&ae.add(ot)}return!ae.has(U)}).map(U=>{const ae=x.find(we=>we.id===U);return t.jsxs(pn,{variant:"secondary",className:"cursor-pointer hover:bg-destructive hover:text-destructive-foreground gap-1",onClick:()=>Le(we=>we.filter(at=>at!==U)),children:[(ae==null?void 0:ae.name)||"?"," ",t.jsx(Mt,{className:"h-3 w-3"})]},U)}),Fe.length===0&&ra.length===0&&t.jsx("p",{className:"text-sm text-muted-foreground",children:f.event.noneAssigned})]})}):t.jsx(Te,{title:f.tooltip.resources,action:t.jsxs("button",{ref:He,className:"sm-add-btn","aria-label":"Add resource",children:[t.jsx(Rt,{className:"h-3 w-3"}),f.common.add]}),children:t.jsx("div",{className:"sm-chips-area",children:t.jsx(UA,{event:e,plusBtnRef:He,paxOverride:D.maxParticipants})})}),Et=o?f.activities.newActivity:D.name||(e==null?void 0:e.name)||f.activities.editActivity,xt=_i(),sa=!o&&zn&&t.jsxs("div",{className:"sm-series-banner",children:[t.jsx(Tr,{className:"h-3.5 w-3.5 shrink-0 text-primary"}),t.jsxs("span",{className:"text-xs text-muted-foreground",children:[f.event.partOfSeries," ",t.jsx("span",{className:"font-medium text-foreground",children:zn.name})]}),(e==null?void 0:e.isOverride)&&t.jsx("span",{className:"sm-badge ml-auto",children:f.event.override})]}),Vi=t.jsx("div",{className:"flex items-center gap-1",children:t.jsx($r,{onClick:()=>oe(U=>U+1),active:Se%2===1})}),Pl=o?null:t.jsx(Te,{title:"",noBorder:!0,children:t.jsx(pe,{label:f.notes.title,children:t.jsx(Gn,{value:We,onChange:U=>Ye(U.target.value),placeholder:f.notes.writeNote,className:"sm-input min-h-[120px] flex-1 resize-none",style:{fontSize:16}})})}),mg=r?t.jsx("div",{className:"flex items-center justify-end w-full",children:t.jsx("button",{onClick:()=>a(!1),className:"sm-form-overlay-btn-cancel",type:"button",children:f.common.cancel})}):t.jsx(tn,{onCancel:()=>a(!1),onSave:Ne,onDelete:o?void 0:Re,saveLabel:o?f.common.create:f.common.save,cancelLabel:f.common.cancel,disabled:!Xe});return t.jsxs(Tt,{open:n,onOpenChange:a,size:"xl",title:Et,footer
528:mg,headerActions:Vi,children:[t.jsx(Gr,{helpKey:"event-drawer",toggleCount:Se,onClose:()=>oe(U=>U%2===1?U+1:U),children:t.jsx(rP,{})}),sa,xt?t.jsxs(t.Fragment,{children:[$e&&t.jsx("div",{className:"pt-3",children:$e}),Oi,t.jsx("div",{className:"pt-1",children:je}),qi,Qa,me,Bi,_t,_e,Pl]}):t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"grid grid-cols-2 gap-x-6",children:[t.jsxs("div",{className:"space-y-0",children:[Oi,je,qi,Bi]}),t.jsxs("div",{className:"space-y-0",children:[$e,Qa,me,_t,_e]})]}),Pl]})]})}const ta={gentle:{type:"spring",stiffness:200,damping:20},snappy:{type:"spring",stiffness:400,damping:25},bouncy:{type:"spring",stiffness:300,damping:15},smooth:{type:"spring",stiffness:150,damping:20}},sP={hidden:{opacity:0,y:10},visible:{opacity:1,y:0,transition:ta.gentle},exit:{opacity:0,y:10,transition:{duration:.2}}},lP={hidden:{opacity:0,scale:.95},visible:{opacity:1,scale:1,transition:ta.snappy},exit:{opacity:0,scale:.95,transition:{duration:.15}}},cP={hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:.05,delayChildren:.1}}},dP={hidden:{opacity:0,y:8},visible:{opacity:1,y:0,transition:ta.gentle}},uP={rest:{scale:1},hover:{scale:1.02},tap:{scale:.98}},mP={rest:{scale:1,boxShadow:"0 1px 3px rgba(0,0,0,0.1)"},hover:{scale:1.02,boxShadow:"0 4px 12px rgba(0,0,0,0.15)",transition:ta.snappy},tap:{scale:.98,transition:{duration:.1}}},pP=d.forwardRef(({children:e,delay:n=0,className:a,...i},r)=>t.jsx(rt.div,{ref:r,initial:"hidden",animate:"visible",exit:"exit",variants:sP,transition:{delay:n},className:a,...i,children:e}));pP.displayName="FadeIn";const gP=d.forwardRef(({children:e,delay:n=0,className:a,...i},r)=>t.jsx(rt.div,{ref:r,initial:"hidden",animate:"visible",exit:"exit",variants:lP,transition:{delay:n},className:a,...i,children:e}));gP.displayName="ScaleIn";const fP=d.forwardRef(({children:e,className:n,...a},i)=>t.jsx(rt.div,{ref:i,initial:"hidden",animate:"visible",variants:cP,className:n,...a,children:e}));fP.displayName="StaggerContainer";const hP=d.forwardRef(({children:e,className:n,...a},i)=>t.jsx(rt.div,{ref:i,variants:dP,className:n,...a,children:e}));hP.displayName="StaggerItem";const vP=d.forwardRef(({children:e,lift:n=!1,className:a,...i},r)=>t.jsx(rt.div,{ref:r,initial:"rest",whileHover:"hover",whileTap:"tap",variants:n?mP:uP,className:B("cursor-pointer",a),...i,children:e}));vP.displayName="HoverCard";function dp(e){var L,M;const{data:n}=Or(Fr()),{data:a}=Ri(),{data:i}=An(),{data:r}=xi(),{data:o}=qr(),{data:l}=Vr(),{data:s}=rl(),{data:c}=il(),{assignPersonnel:u,assignResource:m}=Ei(),g=(n||[]).find(j=>j.id===e.id),[f,p]=Va(g||{}),h=e.activityId?(a||[]).find(j=>j.id===e.activityId):null,b=e.maxParticipants??0,y=(h==null?void 0:h.activity_personnel_requirements)||[],v=(h==null?void 0:h.activity_resource_requirements)||[],w=ol(y,b,s||[]),x=sl(v,b,c||[]),S=(i||[]).filter(j=>j.accepted_at),k=r||[],C=new Map;
528for(const j of S)C.set(j.id,(j.personnel_competences||[]).map(I=>I.competence_id));const A=new Set,q=[];for(const j of w){const I=((L=j.competences)==null?void 0:L.name)||"?",V=S.filter(_=>!e.assignedPersonnelIds.includes(_.id)&&(C.get(_.id)||[]).includes(j.competence_id));let Y=0;for(let _=0;_<j.count;_++){const N=e.assignedPersonnelIds.find(W=>!A.has(W)&&(C.get(W)||[]).includes(j.competence_id));N&&(A.add(N),Y++)}const X=j.count-Y;X>0&&V.length>0&&q.push({competenceName:I,competenceId:j.competence_id,missingCount:X})}const P=new Set,D=[];for(const j of x){const I=((M=j.resource_types)==null?void 0:M.name)||"?",V=k.filter(_=>!e.assignedResourceIds.includes(_.id)&&_.resource_type_id===j.resource_type_id);let Y=0;for(let _=0;_<j.count;_++){const N=e.assignedResourceIds.find(W=>{var $;return!P.has(W)&&(($=k.find(K=>K.id===W))==null?void 0:$.resource_type_id)===j.resource_type_id});N&&(P.add(N),Y++)}const X=j.count-Y;X>0&&V.length>0&&D.push({resourceTypeName:I,resourceTypeId:j.resource_type_id,missingCount:X})}return{missingPersonnelSlots:q,missingResourceSlots:D,getPersonnelOptions:j=>S.filter(I=>!e.assignedPersonnelIds.includes(I.id)&&(C.get(I.id)||[]).includes(j.competenceId)).map(I=>({id:I.id,label:Wt(I),conflict:ki(I.id,e.id,e.startAt,e.endAt,n||[],o||[],f,p)})),getResourceOptions:j=>k.filter(I=>!e.assignedResourceIds.includes(I.id)&&I.resource_type_id===j.resourceTypeId).map(I=>({id:I.id,label:I.name,conflict:wi(I.id,e.id,e.startAt,e.endAt,n||[],l||[],f,p)})),handleAssignPersonnel:j=>u.mutate({eventId:e.id,memberId:j}),handleAssignResource:j=>m.mutate({eventId:e.id,resourceId:j})}}function up({event:e,children:n}){var v,w;const{data:a=[]}=An(),{data:i=[]}=xi(),{data:r=[]}=Ri(),{t:o}=ke(),l=e.activityId?r.find(x=>x.id===e.activityId):null,s=(l==null?void 0:l.activity_personnel_requirements)||[],c=(l==null?void 0:l.activity_resource_requirements)||[],u=e.assignedPersonnelIds.map(x=>{const S=a.find(k=>k.id===x);return S?Wt(S):"?"}),m=e.assignedResourceIds.map(x=>{const S=i.find(k=>k.id===x);return(S==null?void 0:S.name)||"?"}),g=a.filter(x=>x.accepted_at),f=new Map;
528for(const x of g)f.set(x.id,(x.personnel_competences||[]).map(S=>S.competence_id));const p=new Set,h=[];for(const x of s){const S=((v=x.competences)==null?void 0:v.name)||"?";for(let k=0;k<x.count;k++){const C=e.assignedPersonnelIds.find(A=>!p.has(A)&&(f.get(A)||[]).includes(x.competence_id));C?p.add(C):h.push(S)}}const b=new Set,y=[];for(const x of c){const S=((w=x.resource_types)==null?void 0:w.name)||"?";for(let k=0;k<x.count;k++){const C=e.assignedResourceIds.find(A=>{var q;return!b.has(A)&&((q=i.find(P=>P.id===A))==null?void 0:q.resource_type_id)===x.resource_type_id});C?b.add(C):y.push(S)}}return t.jsx(Iu,{delayDuration:300,children:t.jsxs(Lu,{children:[t.jsx(Fu,{asChild:!0,children:n}),t.jsxs(Hs,{side:"bottom",align:"start",className:"max-w-[320px] p-3 space-y-1.5",children:[t.jsx("p",{className:"font-semibold text-sm",children:e.name}),t.jsxs("p",{className:"text-xs text-muted-foreground",children:[e.start,"â",e.end," · ",e.activityName||e.name]}),e.maxParticipants>0&&t.jsxs("p",{className:"text-xs text-muted-foreground",children:[e.registeredParticipants??0," / ",e.maxParticipants," ",o.participants.participants]}),u.length>0&&t.jsxs("div",{children:[t.jsx("p",{className:"text-xs font-medium",children:o.tooltip.personnel}),u.map((x,S)=>t.jsx("p",{className:"text-xs text-muted-foreground pl-2",children:x},S))]}),m.length>0&&t.jsxs("div",{children:[t.jsx("p",{className:"text-xs font-medium",children:o.tooltip.resources}),m.map((x,S)=>t.jsx("p",{className:"text-xs text-muted-foreground pl-2",children:x},S))]}),(h.length>0||y.length>0)&&t.jsxs("div",{children:[t.jsx("p",{className:"text-xs font-medium text-destructive",children:o.tooltip.missing}),h.map((x,S)=>t.jsx("p",{className:"text-xs text-destructive/80 pl-2",children:x},`mp-${S}`)),y.map((x,S)=>t.jsx("p",{className:"text-xs text-destructive/80 pl-2",children:x},`mr-${S}`))]}),e.status==="CONFLICT"&&e.conflictItems.length>0&&t.jsxs("div",{children:[t.jsx("p",{className:"text-xs font-medium text-destructive",children:o.tooltip.conflicts}),e.conflictItems.map((x,S)=>t.jsx("p",{className:"text-xs text-destructive/80 pl-2",children:x},S))]})]})]})})}function yP({event:e,memberNames:n,readOnly:a}){const[i,r]=d.useState(!1),{t:o}=ke(),{data:l=[]}=Br(),{missingPersonnelSlots:s,missingResourceSlots:c,getPersonnelOptions:u,getResourceOptions:m,handleAssignPersonnel:g,handleAssignResource:f}=dp(e),{status:p,isClosed:h,isCommercial:b}=Ls(e,l),y=()=>`${e.start}â${e.end}`,v=S=>{S.target.closest(".drop-zone-popover, .drop-zone, .floating-list, .pax-badge-btn")||Sl()||r(!0)},w=e.operationalStatus==="tentative",x=e.operationalStatus==="cancelled";return t.jsxs(t.Fragment,{children:[t.jsx(up,{event:e,children:t.jsxs(rt.div,{className:`rounded p-1.5 mb-1 last:mb-0 cursor-pointer ${x||h?"status-cancelled":w?"":Ms(e)} ${Fs(e.operationalStatus)}`,onClick:v,initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},whileHover:{scale:1.02,boxShadow:"0 2px 8px rgba(0,0,0,0.12)"},whileTap:{scale:.98},transition:ta.snappy,children:[t.jsxs("div",{className:"flex items-center gap-1",children:[w&&t.jsx(Ia,{className:"h-3 w-3 text-muted-foreground shrink-0"}),x&&t.jsx(Hn,{className:"h-3 w-3 text-muted-foreground shrink-0"}),t.jsx("h4",{className:`font-medium text-xs truncate leading-tight flex-1 ${x?"text-muted-foreground line-through":"text-foreground"}`,children:e.name})]}),t.jsxs("div",{className:"flex items-center justify-between mt-0.5",children:[t.jsx("span",{className:"text-[10px] text-muted-foreground",children:y()}),t.jsxs("div",{className:"flex items-center gap-1",children:[e.seriesId&&t.jsx(Tr,{className:"h-3 w-3 text-muted-foreground"}),e.bookable&&e.maxParticipants>0&&t.jsx(Hr,{eventId:e.id,eventName:e.name,registered:e.registeredParticipants??0,max:e.maxParticipants,badgeClass:Is(e.status),bookingStatus:b?p:void 0,clickable:!1})]})]}),e.status==="CONFLICT"&&e.conflictItems.length>0&&t.jsx("div",{className:"flex flex-wrap gap-1 mt-1.5",children:e.conflictItems.map((S,k)=>t.jsx(pn,{variant:"destructive",className:"text-[10px] px-1.5 py-0 leading-4 animate-pulse-subtle bg-status-conflict text-destructive-foreground border-none",children:S},k))}),!a&&s.length>0&&!w&&!x&&!h&&t.jsx("div",{className:"mt-1.5 space-y-1 drop-zone-popover",onClick:S=>S.stopPropagation(),children:s.map((S,k)=>t.jsx(wr,{missingLabel:`${o.requirements.missingLower} ${S.missingCount>1?`${S.missingCount} `:""}${S.competenceName.toLowerCase()}`,selectLabel:`${o.common.select} ${S.competenceName.toLowerCase()}`,options:u(S),onAssign:g},`p-${S.competenceId}-${k}`))}),!a&&c.length>0&&!w&&!x&&!h&&t.jsx("div",{className:"mt-1.5 space-y-1 drop-zone-popover",onClick:S=>S.stopPropagation(),children:c.map((S,k)=>t.jsx(wr,{missingLabel:`${o.requirements.missingLower} ${S.missingCount>1?`${S.missingCount} `:""}${S.resourceTypeName.toLowerCase()}`,selectLabel:`${o.common.select} ${S.resourceTypeName.toLowerCase()}`,options:m(S),onAssign:f},`r-${S.resourceTypeId}-${k}`))})]})}),t.jsx(ja,{event:e,open:i,onOpenChange:r,readOnly:a})]})}function bP({date:e,triggerClassName:n,triggerIconClassName:a}){const[i,r]=d.useState(!1);return t.jsxs(t.Fragment,{children:[t.jsx(Be,{variant:"ghost",size:"icon",className:n||"h-6
528w-6 text-muted-foreground hover:text-foreground",onClick:()=>r(!0),children:t.jsx(Rt,{className:a||"w-3.5 h-3.5"})}),t.jsx(ja,{event:null,date:e,open:i,onOpenChange:r})]})}function xP(e){return e>=24.5?"red":e>=17.2?"orange":e>=13.9?"yellow":null}async function kP(e,n){const{data:a,error:i}=await T.functions.invoke("weather-forecast",{body:{lat:e,lon:n,days:10}});if(i)throw i;if(!(a!=null&&a.ok))throw new Error((a==null?void 0:a.message)||"Weather fetch failed");return a.data}function wP(e){const[n,a]=d.useState(null);return d.useEffect(()=>{let i=!1;return(async()=>{let o="",l=59.91,s=10.75;if(e){const{data:c}=await T.from("companies").select("city, latitude, longitude, location_name").eq("id",e).single();c!=null&&c.location_name?o=c.location_name.split(",")[0].trim():c!=null&&c.city&&(o=c.city),(c==null?void 0:c.latitude)!=null&&(c==null?void 0:c.longitude)!=null&&(l=c.latitude,s=c.longitude)}i||a({lat:l,lon:s,city:o||"Oslo"})})(),()=>{i=!0}},[e]),n}function SP(){const{currentMembership:e}=he(),n=wP(e==null?void 0:e.companyId),{data:a,isLoading:i}=Ee({queryKey:["weather-forecast",n==null?void 0:n.lat,n==null?void 0:n.lon],queryFn:()=>kP(n.lat,n.lon),enabled:!!n,staleTime:30*60*1e3,retry:1});return{forecast:a??[],isLoading:i,location:n}}function mp(e){var a;const n=e.periods.find(i=>new Date(i.time).getUTCHours()===12);return(n==null?void 0:n.symbol)||((a=e.periods[0])==null?void 0:a.symbol)||"cloudy"}const Cr=d.forwardRef(({symbol:e,className:n="h-3.5 w-3.5",...a},i)=>{const r=e.replace(/_day|_night|_polartwilight/g,""),o=`${n} shrink-0`;return r.startsWith("clearsky")?t.jsx(yh,{ref:i,className:o,...a}):r.startsWith("fair")||r.startsWith("partlycloudy")?t.jsx(eu,{ref:i,className:o,...a}):r.startsWith("cloudy")||r==="overcast"?t.jsx(Ul,{ref:i,className:o,...a}):r.includes("thunder")?t.jsx($f,{ref:i,className:o,...a}):r.includes("sleet")||r.includes("hail")?t.jsx(Gf,{ref:i,className:o,...a}):r.includes("snow")||r.includes("blizzard")?t.jsx(Qf,{ref:i,className:o,...a}):r.includes("heavyrain")||r.includes("heavyshower")?t.jsx(Yf,{ref:i,className:o,...a}):r.includes("rain")||r.includes("shower")||r.includes("drizzle")?t.jsx(Uf,{ref:i,className:o,...a}):r.includes("fog")?t.jsx(Hf,{ref:i,className:o,...a}):t.jsx(Ul,{ref:i,className:o,...a})});Cr.displayName="WeatherDayIcon";const CP={yellow:"bg-yellow-400/20 text-yellow-700 dark:text-yellow-400 border-yellow-400/40",orange:"bg-orange-400/20 text-orange-700 dark:text-orange-400 border-orange-400/40",red:"bg-red-500/20 text-red-700 dark:text-red-400 border-red-500/40"},NP={yellow:"bg-yellow-500",orange:"bg-orange-500",red:"bg-red-500"};function AP({level:e,label:n,compact:a,className:i}){return a?t.jsx("span",{className:B("inline-flex items-center gap-0.5",i),title:n,children:t.jsx("span",{className:B("h-1.5 w-1.5 rounded-full shrink-0",NP[e])})}):t.jsxs("span",{className:B("inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium",CP[e],i),children:[t.jsx(Nh,{className:"h-3 w-3 shrink-0"}),n]})}function PP(e){return new Date(e).getHours()}function jP(e){const n=(e+6)%24,a=String(e).padStart(2,"0"),i=String(n).padStart(2,"0");return`${a}â${i}`}function TP(e,n){return e>=0&&e<6?n.calendar.weatherNight:e>=6&&e<12?n.calendar.weatherMorning:e>=12&&e<18?n.calendar.weatherMidday:n.calendar.weatherEvening}function DP({open:e,onOpenChange:n,day:a,cityName:i}){const{t:r,language:o}=ke();if(!a)return null;const l=new Date(a.date),s=$n(l,o,{weekday:"long"}),c=$n(l,o,{day:"numeric",month:"long"}),u=mp(a),m=a.periods.find(v=>new Date(v.time).getUTCHours()===12),g=(m==null?void 0:m.temp)??Math.round((a.temp_min+a.temp_max)/2),f=a.periods.reduce((v,w)=>v+(w.precipitation||0),0),p=a.periods.length>0?Math.round(a.periods.reduce((v,w)=>v+w.wind,0)/a.periods.length):0,h=Math.max(...a.periods.map(v=>v.wind),0),b=`${s} ${c}${i?` â ${i}`:""}`,y=[...a.periods].sort((v,w)=>new Date(v.time).getUTCHours()-new Date(w.time).getUTCHours());return t.jsxs(Tt,{open:e,onOpenChange:n,title:r.calendar.weatherDetails,footer:null,size:"sm",children:[t.jsxs("div",{className:"flex flex-col items-center gap-1 py-4",children:[t.jsx(Cr,{symbol:u,className:"h-12 w-12 text-foreground"}),t.jsxs("div",{className:"text-3xl font-bold text-foreground",children:[g,"°"]}),t.jsx("div",{className:"text-sm text-muted-foreground capitalize",children:b}),t.jsxs("div",{className:"text-xs text-muted-foreground",children:[a.temp_min,"° / ",a.temp_max,"°"]}),(()=>
528{const v=xP(a.wind_max??h);if(!v)return null;const w={yellow:r.calendar.windWarningYellow,orange:r.calendar.windWarningOrange,red:r.calendar.windWarningRed};return t.jsx("div",{className:"mt-2",children:t.jsx(AP,{level:v,label:`${w[v]} â ${r.calendar.weatherWind} ${a.wind_max??h} m/s`})})})()]}),t.jsx(Te,{title:r.calendar.weatherTemperature,children:t.jsx("div",{className:"space-y-0",children:y.map(v=>{const w=PP(v.time),x=TP(w,r),S=jP(w);return t.jsxs("div",{className:"flex items-center py-2 px-1 border-b border-border/40 last:border-0",children:[t.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[t.jsx(Cr,{symbol:v.symbol,className:"h-5 w-5 text-foreground shrink-0"}),t.jsx("span",{className:"text-sm font-medium text-foreground",children:x}),t.jsx("span",{className:"text-[11px] text-muted-foreground/60",children:S})]}),t.jsxs("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:[t.jsxs("span",{className:`w-11 flex items-center justify-end gap-1 ${v.temp>=0?"text-red-400":"text-blue-400"}`,children:[t.jsx(xh,{className:"h-3.5 w-3.5 shrink-0"}),v.temp,"°"]}),t.jsx("span",{className:"w-16 flex items-center justify-end gap-1 text-blue-400",children:v.precipitation>0?t.jsxs(t.Fragment,{children:[t.jsx(Hl,{className:"h-3.5 w-3.5 shrink-0"}),v.precipitation," mm"]}):null}),t.jsxs("span",{className:"w-[4.5rem] flex items-center justify-end gap-1 text-foreground font-medium",children:[t.jsx(Wo,{className:"h-3.5 w-3.5 shrink-0",style:{transform:`rotate(${(v.windDir??0)+180}deg)`}}),Math.round(v.wind)," m/s"]})]})]},v.time)})})}),t.jsx(Te,{children:t.jsxs("div",{className:"grid grid-cols-2 gap-3 py-1",children:[t.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[t.jsx(Wo,{className:"h-4 w-4 shrink-0"}),t.jsxs("span",{children:[r.calendar.weatherWind,": ",p,"â",h," m/s"]})]}),t.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[t.jsx(Hl,{className:"h-4 w-4 shrink-0"}),t.jsxs("span",{children:[r.calendar.weatherTotalPrecipitation,": ",f.toFixed(1)," mm"]})]})]})}),t.jsx("div",{className:"text-[11px] text-muted-foreground/50 text-center pt-2 pb-1",children:r.calendar.weatherDataSource})]})}function _P(){const{weekDates:e,personnelFilter:n}=vn(),{currentMembership:a}=he(),i=a==null?void 0:a.companyId,r=["guide","gjest","partner"],o=(a==null?void 0:a.role)&&r.includes(a.role),{data:l=[]}=nl(e[0],e[6]),{data:s=[]}=An(),{t:c}=ke(),u=Rs(l),{data:m={}}=al(i,e[0],e[6]),{forecast:g,location:f}=SP(),[p,h]=d.useState(null),b=new Map;g.forEach(x=>b.set(x.date,x));const y=new Map;s.forEach(x=>{y.set(x.id,Wt(x))});const v={allRequirementsMet:c.calendar.allRequirementsMet,eventCancelled:c.calendar.eventCancelled,isDoubleBooked:c.calendar.isDoubleBooked,hasLeave:c.calendar.hasLeave,isBlocked:c.calendar.isBlocked},w=Os(zs(u,m,v),{personnelFilter:n});return t.jsxs("div",{className:"h-full min-h-0 flex flex-col overflow-hidden",children:[t.jsx("div",{className:"flex-1 min-h-0 overflow-auto scrollbar-minimal -mx-6 px-6 pb-4 touch-auto overscroll-contain",style:{WebkitOverflowScrolling:"touch"},children:t.jsxs("div",{className:"rounded-2xl sm-card-surface min-h-full flex flex-col",style:{background:"hsl(var(--background))"},children:[t.jsx("div",{className:"grid flex-1 min-h-0",style:{gridTemplateColumns:"repeat(7, minmax(152px, 1fr))"},children:e.map((x,S)=>t.jsx(EP,{date:x,events:w.filter(k=>Es(k,x)),memberNames:y,isFirst:S===0,isLast:S===6,weatherDay:b.get(x),onWeatherClick:h,isGuideRole:!!o},x))}),t.jsx(RP,{weekDates:e,memberNames:y})]})}),t.jsx(DP,{open:!!p,onOpenChange:x=>{x||h(null)},day:p,cityName:f==null?void 0:f.city})]})}function EP({date:e,events:n,memberNames:a,isFirst:i,isLast:r,weatherDay:o,onWeatherClick:l,isGuideRole:s}){const{t:c,language:u}=ke(),{goToDay:m,setViewMode:g}=vn(),f=new Date(e),p=$n(f,u,{weekday:"long"}),h=f.getDate().toString(),b=o?mp(o):null,y=(o==null?void 0:o.periods.find(k=>new Date(k.time).getUTCHours()===12))??(o==null?void 0:o.periods[0]),v=y==null?void 0:y.wind,w=y==null?void 0:y.windDir,x=()=>{m(f),g("day")},S=i?"rounded-tl-2xl":r?"rounded-tr-2xl":"";return t.jsxs("div",{className:"flex flex-col min-w-0 relative",children:[t.jsxs("div",{className:`sticky top-0 z-10 shrink-0 px-2 py-1.5 ${S}`,style:{background:"linear-gradient(180deg, hsl(var(--surface-card-highlight-top
528)), hsl(var(--surface-card-highlight-bottom))), hsl(var(--surface-card-base))"},children:[t.jsxs("div",{className:"flex flex-col items-center relative",children:[t.jsxs("button",{type:"button",onClick:x,className:"flex flex-col items-center cursor-pointer rounded-lg px-2 py-0.5 hover:bg-accent/50 transition-colors",children:[t.jsx("div",{className:"text-[11px] font-medium text-muted-foreground capitalize",children:p}),t.jsx("span",{className:"text-[20px] font-semibold text-foreground leading-tight",children:h})]}),b&&t.jsxs("button",{type:"button",onClick:()=>l(o),className:"absolute left-0.5 bottom-0 flex items-center gap-0.5 p-0.5 rounded-md hover:bg-accent/50 transition-colors cursor-pointer",title:c.calendar.weatherDetails,children:[t.jsx(Cr,{symbol:b,className:"h-3.5 w-3.5 text-muted-foreground"}),v!=null&&t.jsxs("span",{className:"flex items-center gap-0.5 text-[10px] text-muted-foreground leading-none",children:[w!=null&&t.jsx(Wo,{className:"h-2.5 w-2.5 shrink-0",style:{transform:`rotate(${w+180}deg)`}}),Math.round(v)]})]})]}),!s&&t.jsx("div",{className:"absolute bottom-0 right-0.5",children:t.jsx(bP,{date:e})})]}),t.jsx("div",{className:"px-1.5 py-1 flex-1",style:{backgroundColor:"hsl(var(--background))"},children:n.length===0?t.jsx("p",{className:"text-[10px] text-muted-foreground italic",children:c.calendar.noEvents}):t.jsx("div",{className:"space-y-1",children:n.map(k=>t.jsx(yP,{event:k,memberNames:a,readOnly:s},k.id))})})]})}function RP({weekDates:e}){const{t:n}=ke(),{data:a=[]}=qr(),{data:i=[]}=Vr(),[r,o]=d.useState(!1),l=e[0],s=d.useMemo(()=>{const v=new Date(e[6]);return v.setDate(v.getDate()+1),v.toISOString().slice(0,10)},[e]),c=d.useMemo(()=>a.filter(v=>v.start_at.slice(0,10)<s&&v.end_at.slice(0,10)>=l),[a,l,s]),u=d.useMemo(()=>i.filter(v=>v.start_at.slice(0,10)<s&&v.end_at.slice(0,10)>=l),[i,l,s]);if(c.length===0&&u.length===0)return null;const m=v=>({vacation:n.leaves.vacation,sick:n.leaves.sick,personal:n.leaves.personal,other:n.leaves.other})[v]||v,g=v=>v.slice(11,16),f=(v,w)=>{const x=v.slice(11,16),S=w.slice(11,16);return x==="00:00"&&(S==="00:00"||S==="23:59")},p=new Map;e.forEach((v,w)=>p.set(v,w));const h=(v,w)=>
528v<l?0:v>e[6]?w?7:6:p.get(v)??0,b=[];c.forEach(v=>{const w=f(v.start_at,v.end_at),x=v.start_at.slice(0,10),S=v.end_at.slice(0,10),k=h(x,!1)+1,C=h(S,!0)+1+1;b.push({id:`l-${v.id}`,kind:"leave",label:v.member_name,sublabel:m(v.leave_type)+(w?"":` · ${g(v.start_at)}â${g(v.end_at)}`),startCol:Math.max(1,k),endCol:Math.min(8,C),allDay:w})}),u.forEach(v=>{var A;const w=f(v.start_at,v.end_at),x=v.start_at.slice(0,10),S=v.end_at.slice(0,10),k=h(x,!1)+1,C=h(S,!0)+1+1;b.push({id:`b-${v.id}`,kind:"blocking",label:((A=v.resources)==null?void 0:A.name)||"?",sublabel:(v.reason||"â")+(w?"":` · ${g(v.start_at)}â${g(v.end_at)}`),startCol:Math.max(1,k),endCol:Math.min(8,C),allDay:w})}),b.sort((v,w)=>v.startCol-w.startCol||w.endCol-w.startCol-(v.endCol-v.startCol));const y=[];for(const v of b){let w=!1;for(const x of y)if(!x.some(k=>k.startCol<v.endCol&&v.startCol<k.endCol)){x.push(v),w=!0;break}w||y.push([v])}return t.jsxs(Zu,{open:r,onOpenChange:o,children:[t.jsx(Xu,{asChild:!0,children:t.jsxs("button",{type:"button",className:"w-full flex items-center gap-1.5 px-3 py-2 text-[11px] font-medium text-muted-foreground hover:text-foreground transition-colors cursor-pointer bg-gradient-to-b from-blue-500/10 via-blue-500/5 to-transparent border-t border-blue-500/20",children:[r?t.jsx(hn,{className:"h-3 w-3"}):t.jsx(Pr,{className:"h-3 w-3"}),n.calendar.leavesAndBlockings,t.jsxs("span",{className:"text-[10px] opacity-60",children:["(",c.length+u.length,")"]})]})}),t.jsx(em,{children:t.jsx("div",{className:"border-t border-border/30 px-1.5 py-1.5",children:y.map((v,w)=>t.jsx("div",{className:"grid mb-1 last:mb-0",style:{gridTemplateColumns:"repeat(7, minmax(152px, 1fr))"},children:v.map(x=>t.jsxs("div",{className:`rounded p-1.5 text-[10px] leading-tight border-l-4 mx-0.5 ${x.kind==="leave","border-blue-400 bg-blue-500/10"}`,style:{gridColumn:`${x.startCol} / ${x.endCol}`},children:[t.jsx("div",{className:"font-medium text-foreground truncate",children:x.label}),t.jsx("div",{className:"text-muted-foreground truncate",children:x.sublabel})]},x.id))},w))})})]})}function zP(){const{currentMonth:e,personnelFilter:n,goToWeek:a,goToDay:i}=vn(),{currentMembership:r}=he(),o=r==null?void 0:r.companyId,l=["guide","gjest","partner"],s=(r==null?void 0:r.role)&&l.includes(r.role),{language:c,t:u}=ke(),m=IP(e),g=(()=>{const q=m[0];return`${q.getFullYear()}-${String(q.getMonth()+1).padStart(2,"0")}-${String(q.getDate()).padStart(2,"0")}`})(),f=(()=>{const q=m[m.length-1];return`${q.getFullYear()}-${String(q.getMonth()+1).padStart(2,"0")}-${String(q.getDate()).padStart(2,"0")}`})(),{data:p=[]}=nl(g,f),h=Rs(p),b=new Date(e.getFullYear(),e.getMonth(),1),y=new Date(e.getFullYear(),e.getMonth()+1,0),v=`${b.getFullYear()}-${String(b.getMonth()+1).padStart(2,"0")}-01`,w=`${y.getFullYear()}-${String(y.getMonth()+1).padStart(2,"0")}-${String(y.getDate()).padStart(2,"0")}`,{data:x={}}=al(o,v,w),S={allRequirementsMet:u.calendar.allRequirementsMet,eventCancelled:u.calendar.eventCancelled,isDoubleBooked:u.calendar.isDoubleBooked,hasLeave:u.calendar.hasLeave,isBlocked:u.calendar.isBlocked},k=Os(zs(h,x,S),{personnelFilter:n}),C=KA(c),A=[];for(let q=0;q<m.length;q+=7){const P=m.slice(q,q+7),D=LP(P[0]);A.push({weekNumber:D,dates:P})}return t.jsx("div",{className:"h-full flex flex-col overflow-hidden -mx-6 px-6 pb-4",children:t.jsx("div",{className:"flex-1 overflow-auto scrollbar-minimal touch-auto overscroll-contain",style:{WebkitOverflowScrolling:"touch"},children:t.jsxs("div",{className:"rounded-2xl min-h-full",style:{minWidth:"1090px",background:"hsl(var(--background))"},children:[t.jsx("div",{className:"sticky top-0 z-10 rounded-t-2xl",style:{background:"linear-gradient(180deg, hsl(var(--surface-card-highlight-top)), hsl(var(--surface-card-highlight-bottom))), hsl(var(--surface-card-base))"},children:t.jsxs("div",{className:"grid",style:{gridTemplateColumns:"40px repeat(7, minmax(150px, 1fr))"},children:[t.jsx("div",{className:"p-2 text-center text-[11px] font-medium text-muted-foreground",children:C[0]}),C.slice(1).map(q=>t.jsx("div",{className:"p-2 text-center text-[11px] font-medium text-muted-foreground",children:q},q))]})}),A.map((q,P)=>t.jsxs("div",{className:"grid",style:{gridTemplateColumns:"40px repeat(7, minmax(150px, 1fr))"},children:[t.jsx("button",{onClick:()=>a(q.dates[0]),className:"p-1 flex items-start justify-center pt-2 hover:bg-accent cursor-pointer transition-colors",children:t.jsx("span",{className:"text-xs font-medium text-muted-foreground hover:text-foreground",children:q.weekNumber})}),q.dates.map((D,z)=>{const F=`${D.getFullYear()}
528-${String(D.getMonth()+1).padStart(2,"0")}-${String(D.getDate()).padStart(2,"0")}`;return t.jsx(MP,{date:D,dateStr:F,isCurrentMonth:D.getMonth()===e.getMonth(),events:k.filter(R=>Es(R,F)),onDayClick:()=>i(D),isFirstCol:z===0,isFirstRow:P===0,isGuideRole:!!s},F)})]},P))]})})})}function MP({date:e,dateStr:n,isCurrentMonth:a,events:i,onDayClick:r,isFirstCol:o,isFirstRow:l,isGuideRole:s}){const[c,u]=d.useState(null),[m,g]=d.useState(!1),f=FP(e,new Date),{data:p=[]}=Br(),h=y=>{y.target.closest(".event-chip")||y.target.closest(".add-event-button")||r()},b=y=>{y.stopPropagation(),g(!0)};return t.jsxs(t.Fragment,{children:[t.jsxs("div",{onClick:h,className:`p-1 cursor-pointer ${a?"":"opacity-40"}`,style:{minHeight:"100px",backgroundColor:"hsl(var(--background))",borderTop:l?"none":"1px solid hsl(var(--border-card))",borderLeft:o?"none":"1px solid hsl(var(--border-card))"},children:[t.jsxs("div",{className:"flex items-center justify-between mb-1",children:[t.jsx("span",{className:`text-xs font-medium w-5 h-5 flex items-center justify-center rounded-full ${f?"bg-primary text-primary-foreground":a?"text-foreground":"text-muted-foreground"}`,children:e.getDate()}),!s&&t.jsx("button",{onClick:b,className:"add-event-button w-5 h-5 rounded-full border border-dashed border-muted-foreground/40 flex items-center justify-center text-muted-foreground/60 hover:bg-primary/10 hover:border-primary hover:text-primary transition-colors",children:t.jsx(Rt,{className:"w-3 h-3"})})]}),t.jsx("div",{className:"space-y-0.5",children:t.jsx(en,{mode:"popLayout",children:i.map((y,v)=>{const{status:w,isClosed:x,isCommercial:S}=Ls(y,p),k=x?"bg-muted/60":Ms(y),C=y.operationalStatus==="tentative",A=y.operationalStatus==="cancelled";return t.jsx(up,{event:y,children:t.jsxs(rt.button,{layout:!0,initial:{opacity:0,scale:.9},animate:{opacity:C?.65:1,scale:1},exit:{opacity:0,scale:.9},whileHover:{scale:1.02,boxShadow:"0 2px 8px rgba(0,0,0,0.12)"},whileTap:{scale:.98},transition:{...ta.snappy,delay:v*.02},onClick:q=>{q.stopPropagation(),!Sl()&&u(y)},className:`event-chip w-full flex items-center gap-1 px-1.5 py-0.5 rounded text-xs font-medium cursor-pointer min-h-[25px] ${k} ${Fs(y.operationalStatus)}`,children:[C&&t.jsx(Ia,{className:"h-3 w-3 text-muted-foreground shrink-0"}),A&&t.jsx(Hn,{className:"h-3 w-3 text-muted-foreground shrink-0"}),t.jsxs("span",{className:`truncate flex-1 text-left ${x?"text-muted-foreground":""} ${A?"line-through":""}`,children:[t.jsx("span",{className:"text-[10px] font-normal text-muted-foreground mr-1",children:y.start}),y.name]}),t.jsx("div",{className:"flex items-center gap-1 shrink-0",children:y.bookable&&y.maxParticipants>0&&t.jsx(Hr,{eventId:y.id,eventName:y.name,registered:y.registeredParticipants??0,max:y.maxParticipants,badgeClass:Is(y.status),bookingStatus:S?w:void 0,size:"sm",clickable:!1})})]})},y.id)})})})]}),c&&t.jsx(ja,{event:c,open:!!c,onOpenChange:y=>!y&&u(null),readOnly:s}),!s&&t.jsx(ja,{event:null,date:n,open:m,onOpenChange:g})]})}function IP(e){const n=[],a=new Date(e.getFullYear(),e.getMonth(),1),i=new Date(e.getFullYear(),e.getMonth()+1,0);let r=a.getDay();r=r===0?6:r-1;for(let l=r-1;l>=0;l--){const s=new Date(a);s.setDate(s.getDate()-l-1),n.push(s)}for(let l=1;l<=i.getDate();l++)n.push(new Date(e.getFullYear(),e.getMonth(),l));const o=42-n.length;for(let l=1;l<=o;l++)n.push(new Date(e.getFullYear(),e.getMonth()+1,l));return n}function LP(e){const n=new Date(e.valueOf()),a=(e.getDay()+6)%7;n.setDate(n.getDate()-a+3);const i=new Date(n.getFullYear(),0,4),r=(i.getDay()+6)%7;i.setDate(i.getDate()-r+3);const o=n.getTime()-i.getTime();return 1+Math.round(o/(7*24*60*60*1e3))}function FP(e,n){return e.getFullYear()===n.getFullYear()&&e.getMonth()===n.getMonth()&&e.getDate()===n.getDate()}const _n=60,Ta=0,pp=23,OP=7,zc=Array.from({length:pp-Ta+1},(e,n)=>Ta+n);function Nr(e){const[n,a]=e.split(":").map(Number);return{hours:n,minutes:a}}function Ji(e,n){return`${e.toString().padStart(2,"0")}:${n.toString().padStart(2,"0")}`}function Mc(e){const n=Math.round(e/_n*60),a=Math.floor(n/60),i=Math.round(n%60/15)*15;return{hours:Math.max(0,Math.min(23,a)),minutes:i%60}}function BP(e){const n=Nr(e.start),a=Nr(e.end),i=(n.hours-Ta)*60+n.minutes,r=(a.hours-Ta)*60+a.minutes,o=Math.max(0,i/60*_n),l=Math.max(30,(r-i)/60*_n);return{top:o,height:l}}function qP(e){if(e.length===0)return[];const n=e.map(i=>({...i,...BP(i),column:0,totalColumns:1}));n.sort((i,r)=>i.top-r.top);const a=[];for(const i of n){let r=!1;for(const o of a)if(o.some(s=>i.top<s.top+s.height&&i.top+i.height>s.top)){i.column=o.length,o.push(i),r=!0;break}r||a.push([i])}for(const i of a)for(const r of i)r.totalColumns=i.length;return n}function VP(){const{currentDate:e,personnelFilter:n}
528=vn(),{currentMembership:a}=he(),i=a==null?void 0:a.companyId,r=["guide","gjest","partner"],o=(a==null?void 0:a.role)&&r.includes(a.role),{update:l}=Ei(),s=(()=>{const V=new Date(e);return V.setDate(V.getDate()-1),V.toISOString().slice(0,10)})(),c=(()=>{const V=new Date(e);return V.setDate(V.getDate()+1),V.toISOString().slice(0,10)})(),{data:u=[]}=nl(s,c),g=Rs(u).filter(V=>Es(V,e)),{data:f={}}=al(i,e,e),[p,h]=d.useState(null);d.useState(!1);const[b,y]=d.useState(null);d.useState(!1);const[v,w]=d.useState(!1),x=d.useRef(null),S=d.useRef(null),{t:k,language:C}=ke(),A=new Date(e),q=$n(A,C,{weekday:"long"}),P=A.getDate().toString(),D=$n(A,C,{month:"short"}),z={allRequirementsMet:k.calendar.allRequirementsMet,eventCancelled:k.calendar.eventCancelled,isDoubleBooked:k.calendar.isDoubleBooked,hasLeave:k.calendar.hasLeave,isBlocked:k.calendar.isBlocked},F=Os(zs(g,f,z),{personnelFilter:n}),R=qP(F),E=(pp-Ta+1)*_n,L=d.useCallback(V=>{if(!b||!x.current)return;const Y=V.clientY-b.startY;let X=b.originalTop+Y;X=Math.max(0,Math.min(X,E-30)),y(_=>_?{..._,currentTop:X}:null)},[b,E]),M=d.useCallback(()=>{if(!b)return;if(Math.abs(b.currentTop-b.originalTop)>5){const{hours:Y,minutes:X}=Mc(b.currentTop),_=Y*60+X+b.durationMinutes,N=Math.min(23,Math.floor(_/60)),W=_%60,$=Ji(Y,X),K=Ji(N,W),H=F.find(re=>re.id===b.eventId);if(H){const re=`${H.startDate}T${$}:00`,ie=`${H.endDate}T${K}:00`;l.mutate({id:H.id,name:H.name,start_at:re,end_at:ie,max_participants:H.maxParticipants,registered_participants:H.registeredParticipants,bookable:H.bookable,cancelled:H.cancelled,sale_id:H.saleId})}w(!0),setTimeout(()=>w(!1),100)}y(null)},[b,l,F]);d.useEffect(()=>{S.current&&(S.current.scrollTop=OP*_n)},[e]),d.useEffect(()=>{if(b)return window.addEventListener("mousemove",L),window.addEventListener("mouseup",M),()=>{window.removeEventListener("mousemove",L),window.removeEventListener("mouseup",M)}},[b,L,M]);const j=(V,Y)=>{if(o)return;if(V.pointerType==="mouse")V.preventDefault();else return;const X=Nr(Y.start),_=Nr(Y.end),N=_.hours*60+_.minutes-(X.hours*60+X.minutes);y({eventId:Y.id,originalTop:Y.top,currentTop:Y.top,startY:V.clientY,durationMinutes:N})},I=V=>{if(!b||b.eventId!==V)return null;const{hours:Y,minutes:X}=Mc(b.currentTop),_=Y*60+X+b.durationMinutes,N=Math.min(23,Math.floor(_/60)),W=_%60;return{start:Ji(Y,X),end:Ji(N,W)}};return t.jsxs(t.Fragment,{children:[t.jsxs("div",{ref:S,className:"flex-1 overflow-auto scrollbar-minimal rounded-2xl touch-auto overscroll-contain -mx-6 mx-6 mb-4",style:{WebkitOverflowScrolling:"touch",background:"hsl(var(--background))"},children:[t.jsx("div",{className:"sticky top-0 z-10 px-3 py-2.5",style:{background:"hsl(var(--surface-card-base))"},children:t.jsxs("div",{className:"flex flex-col items-center",children:[t.jsx("div",{className:"text-[11px] font-medium text-muted-foreground capitalize",children:q}),t.jsxs("div",{className:"text-[20px] font-semibold text-foreground leading-tight",children:[P,". ",D]})]})}),t.jsxs("div",{className:"flex min-h-full",children:[t.jsx("div",{className:"flex-shrink-0 w-16",style:{backgroundColor:"hsl(var(--background))"},children:zc.map(V=>t.jsx("div",{className:"flex items-start justify-end pr-2 text-xs text-muted-foreground",style:{height:_n},children:t.jsxs("span",{className:"-translate-y-2",children:[V.toString().padStart(2,"0"),":00"]})},V))}),t.jsxs("div",{ref:x,className:"flex-1 relative",style:{height:E,backgroundColor:"hsl(var(--background))"},children:[zc.map(V=>t.jsx("div",{className:"absolute left-0 right-0 pointer-events-none",style:{top:(V-Ta)*_n,height:_n,borderTop:"1px solid hsl(var(--border) / 0.3)"}},V)),R.map(V=>{const Y=(b==null?void 0:b.eventId)===V.id,X=Y?b.currentTop:V.top,_=I(V.id);return t.jsx(KP,{event:V,isDragging:Y,dragTop:X,previewTime:_,onDragStart:j,onClick:()=>!b&&!v&&!Sl()&&h(V)},V.id)}),F.length===0&&t.jsx("div",{className:"absolute inset-0 flex items-center justify-center text-muted-foreground",children:k.calendar.noEventsThisDay})]})]})]}),t.jsx(ja,{event:p,open:p!==null,onOpenChange:V=>!V&&h(null),readOnly:!!o})]})}function KP({event:e,isDragging:n,dragTop:a,previewTime:i,onDragStart:r,onClick:o}){const{t:l}=ke(),{data:s=[]}=Br(),{missingPersonnelSlots:c,missingResourceSlots:u}=dp(e),{status:m,isClosed:g,isCommercial:f}=Ls(e,s),p=`calc(${100/e.totalColumns}% - 8px)`,h=`calc(${e.column/e.totalColumns*100}% + 4px)`,b=(i==null?void 0:i.start)||e.start,y=(i==null?void 0:i.end)||e.end,v=e.operationalStatus==="tentative",w=e.operationalStatus==="cancelled",x=!v&&!w&&!g,S=c.reduce((k,C)=>k+C.missingCount,0)+u.reduce((k,C)=>k+C.missingCount,0);return t.jsxs(rt.div,{onPointerDown:k=>r(k,e),onClick:o,initial:{opacity:0,scale:.95}
528,animate:{opacity:v?.65:1,scale:n?1.02:1,boxShadow:n?"0 8px 24px rgba(0,0,0,0.2)":"0 1px 3px rgba(0,0,0,0.1)",zIndex:n?50:1},whileHover:{scale:n?1.02:1.01,boxShadow:"0 4px 12px rgba(0,0,0,0.15)"},transition:ta.snappy,className:B("absolute rounded-md p-2 cursor-grab active:cursor-grabbing overflow-hidden flex flex-col select-none",Ms(e),Fs(e.operationalStatus)),style:{top:a,height:e.height,width:p,left:h},children:[t.jsxs("div",{className:"flex items-center gap-1",children:[v&&t.jsx(Ia,{className:"h-3 w-3 text-muted-foreground shrink-0"}),w&&t.jsx(Hn,{className:"h-3 w-3 text-muted-foreground shrink-0"}),t.jsx("h4",{className:`font-medium text-xs truncate leading-tight flex-1 ${w?"text-muted-foreground line-through":"text-foreground"}`,children:e.name})]}),t.jsxs("div",{className:"flex items-center justify-between mt-0.5 flex-shrink-0",children:[t.jsxs("span",{className:"text-[10px] text-muted-foreground",children:[b,"â",y]}),t.jsxs("div",{className:"flex items-center gap-1",children:[e.seriesId&&t.jsx(Tr,{className:"h-3 w-3 text-muted-foreground"}),e.bookable&&e.maxParticipants>0&&t.jsx(Hr,{eventId:e.id,eventName:e.name,registered:e.registeredParticipants??0,max:e.maxParticipants,badgeClass:Is(e.status),bookingStatus:f?m:void 0,clickable:!1})]})]}),e.status==="CONFLICT"&&e.conflictItems.length>0&&t.jsx("div",{className:"flex flex-wrap gap-1 mt-1.5",children:e.conflictItems.map((k,C)=>t.jsx(pn,{variant:"destructive",className:"text-[10px] px-1.5 py-0 leading-4 animate-pulse-subtle bg-status-conflict text-destructive-foreground border-none",children:k},C))}),x&&S>0&&t.jsx("div",{className:"flex items-center gap-1 mt-1",children:t.jsxs(pn,{variant:"outline",className:"text-[10px] px-1.5 py-0 leading-4 border-amber-500/40 text-amber-600 dark:text-amber-400 bg-amber-500/10 gap-1",children:[t.jsx(ur,{className:"h-2.5 w-2.5"}),l.requirements.missingRequirements," ",S]})})]})}function WP(){const{viewMode:e}=vn();return t.jsx(kw,{children:t.jsx("div",{className:"h-full flex flex-col bg-background px-6 pt-2 overflow-hidden",children:e==="day"?t.jsx("div",{className:"flex-1 min-h-0 flex flex-col overflow-hidden",children:t.jsx(VP,{})}):t.jsx("div",{className:"flex-1 min-h-0 overflow-auto",style:{WebkitOverflowScrolling:"touch"},children:e==="week"?t.jsx(_P,{}):t.jsx(zP,{})})})})}function UP(){const{viewMode:e,setViewMode:n}=vn(),{t:a}=ke();return t.jsxs("div",{className:"flex items-center gap-0.5",children:[t.jsx("button",{onClick:()=>n("day"),className:B("flex items-center justify-center h-8 w-8 rounded-md transition-colors",e==="day"?"bg-primary text-primary-foreground shadow-sm":"bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground"),title:a.calendar.dayView,children:t.jsx(Of,{size:16})}),t.jsx("button",{onClick:()=>n("week"),className:B("flex items-center justify-center h-8 w-8 rounded-md transition-colors",e==="week"?"bg-primary text-primary-foreground shadow-sm":"bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground"),title:a.calendar.weekView,children:t.jsx(Cs,{size:16})}),t.jsx("button",{onClick:()=>n("month"),className:B("flex items-center justify-center h-8 w-8 rounded-md transition-colors",e==="month"?"bg-primary text-primary-foreground shadow-sm":"bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground"),title:a.calendar.monthView,children:t.jsx(lr,{size:16})})]})}var Ic=1,HP=.9,GP=.8,$P=.17,Do=.1,_o=.999,YP=.9999,QP=.99,JP=/[\\\/_+.#"@\[\(\{&]/,ZP=/[\\\/_+.#"@\[\(\{&]/g,XP=/[\s-]/,gp=/[\s-]/g;function ls(e,n,a,i,r,o,l){if(o===n.length)return r===e.length?Ic:QP;var s=`${r},${o}`;if(l[s]!==void 0)return l[s];for(var c=i.charAt(o),u=a.indexOf(c,r),m=0,g,f,p,h;u>=0;)g=ls(e,n,a,i,u+1,o+1,l),g>m&&(u===r?g*=Ic:JP.test(e.charAt(u-1))?(g*=GP,p=e.slice(r,u-1).match(ZP),p&&r>0&&(g*=Math.pow(_o,p.length))):XP.test(e.charAt(u-1))?(g*=HP,h=e.slice(r,u-1).match(gp),h&&r>0&&(g*=Math.pow(_o,h.length))):(g*=$P,r>0&&(g*=Math.pow(_o,u-r))),e.charAt(u)!==n.charAt(o)&&(g*=YP)),(g<Do&&a.charAt(u-1)===i.charAt(o+1)||i.charAt(o+1)===i.charAt(o)&&a.charAt(u-1)!==i.charAt(o))&&(f=ls(e,n,a,i,u+1,o+2,l),f*Do>
vendor: 10,544 bytes, line 528
528g&&(g=f*Do)),g>m&&(m=g),u=a.indexOf(c,u+1);return l[s]=m,m}function Lc(e){return e.toLowerCase().replace(gp," ")}function ej(e,n,a){return e=a&&a.length>0?`${e+" "+a.join(" ")}`:e,ls(e,n,Lc(e),Lc(n),0,0,{})}var oi='[cmdk-group=""]',Eo='[cmdk-group-items=""]',tj='[cmdk-group-heading=""]',fp='[cmdk-item=""]',Fc=`${fp}:not([aria-disabled="true"])`,cs="cmdk-item-select",fa="data-value",nj=(e,n,a)=>ej(e,n,a),hp=d.createContext(void 0),Li=()=>d.useContext(hp),vp=d.createContext(void 0),Cl=()=>d.useContext(vp),yp=d.createContext(void 0),bp=d.forwardRef((e,n)=>{let a=ha(()=>{var _,N;return{search:"",value:(N=(_=e.value)!=null?_:e.defaultValue)!=null?N:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),i=ha(()=>new Set),r=ha(()=>new Map),o=ha(()=>new Map),l=ha(()=>new Set),s=xp(e),{label:c,children:u,value:m,onValueChange:g,filter:f,shouldFilter:p,loop:h,disablePointerSelection:b=!1,vimBindings:y=!0,...v}=e,w=Kn(),x=Kn(),S=Kn(),k=d.useRef(null),C=pj();Yn(()=>{if(m!==void 0){let _=m.trim();a.current.value=_,A.emit()}},[m]),Yn(()=>{C(6,R)},[]);let A=d.useMemo(()=>({subscribe:_=>(l.current.add(_),()=>l.current.delete(_)),snapshot:()=>a.current,setState:(_,N,W)=>{var $,K,H,re;if(!Object.is(a.current[_],N)){if(a.current[_]=N,_==="search")F(),D(),C(1,z);else if(_==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let ie=document.getElementById(S);ie?ie.focus():($=document.getElementById(w))==null||$.focus()}if(C(7,()=>{var ie;a.current.selectedItemId=(ie=E())==null?void 0:ie.id,A.emit()}),W||C(5,R),((K=s.current)==null?void 0:K.value)!==void 0){let ie=N??"";(re=(H=s.current).onValueChange)==null||re.call(H,ie);return}}A.emit()}},emit:()=>{l.current.forEach(_=>_())}}),[]),q=d.useMemo(()=>({value:(_,N,W)=>{var $;N!==(($=o.current.get(_))==null?void 0:$.value)&&(o.current.set(_,{value:N,keywords:W}),a.current.filtered.items.set(_,P(N,W)),C(2,()=>{D(),A.emit()}))},item:(_,N)=>(i.current.add(_),N&&(r.current.has(N)?r.current.get(N).add(_):r.current.set(N,new Set([_]))),C(3,()=>{F(),D(),a.current.value||z(),A.emit()}),()=>{o.current.delete(_),i.current.delete(_),a.current.filtered.items.delete(_);let W=E();C(4,()=>{F(),(W==null?void 0:W.getAttribute("id"))===_&&z(),A.emit()})}),group:_=>(r.current.has(_)||r.current.set(_,new Set),()=>{o.current.delete(_),r.current.delete(_)}),filter:()=>s.current.shouldFilter,label:c||e["aria-label"],getDisablePointerSelection:()=>s.current.disablePointerSelection,listId:w,inputId:S,labelId:x,listInnerRef:k}),[]);function P(_,N){var W,$;let K=($=(W=s.current)==null?void 0:W.filter)!=null?$:nj;return _?K(_,a.current.search,N):0}function D(){if(!a.current.search||s.current.shouldFilter===!1)return;let _=a.current.filtered.items,N=[];a.current.filtered.groups.forEach($=>{let K=r.current.get($),H=0;K.forEach(re=>{let ie=_.get(re);H=Math.max(ie,H)}),N.push([$,H])});let W=k.current;L().sort(($,K)=>{var H,re;let ie=$.getAttribute("id"),Se=K.getAttribute("id");return((H=_.get(Se))!=null?H:0)-((re=_.get(ie))!=null?re:0)}).forEach($=>{let K=$.closest(Eo);K?K.appendChild($.parentElement===K?$:$.closest(`${Eo} > *`)):W.appendChild($.parentElement===W?$:$.closest(`${Eo} > *`))}),N.sort(($,K)=>K[1]-$[1]).forEach($=>{var K;let H=(K=k.current)==null?void 0:K.querySelector(`${oi}[${fa}="${encodeURIComponent($[0])}"]`);H==null||H.parentElement.appendChild(H)})}function z(){let _=L().find(W=>W.getAttribute("aria-disabled")!=="true"),N=_==null?void 0:_.getAttribute(fa);A.setState("value",N||void 0)}function F(){var _,N,W,$;if(!a.current.search||s.current.shouldFilter===!1){a.current.filtered.count=i.current.size;return}a.current.filtered.groups=new Set;let K=0;for(let H of i.current){let re=(N=(_=o.current.get(H))==null?void 0:_.value)!=null?N:"",ie=($=(W=o.current.get(H))==null?void 0:W.keywords)!=null?$:[],Se=P(re,ie);a.current.filtered.items.set(H,Se),Se>0&&K++}for(let[H,re]of r.current)for(let ie of re)if(a.current.filtered.items.get(ie)>0){a.current.filtered.groups.add(H);break}a.current.filtered.count=K}function R(){var _,N,W;let $=E();$&&(((_=$.parentElement)==null?void 0:_.firstChild)===$&&((W=(N=$.closest(oi))==null?void 0:N.querySelector(tj))==null||W.scrollIntoView({block:"nearest"})),$.scrollIntoView({block:"nearest"}))}function E(){var _;return(_=k.current)==null?void 0:_.querySelector(`${fp}[aria-selected="true"]`)}function L(){var _;return Array.from(((_=k.current)==null?void 0:_.querySelectorAll(Fc))||[])}function M(_){let N=L()[_];N&&A.setState("value",N.getAttribute(fa))}function j(_){var N;let W=E(),$=L(),K=$.findIndex(re=>re===W),H=$[K+_];(N=s.current)!=null&&N.loop&&(H=K+_<0?$[$.length-1]:K+_===$.length?$[0]:$[K+_]),H&&A.setState("value",H.getAttribute(fa))}function I(_){let N=E(),W=N==null?void 0:N.closest(oi),$;for(;W&&!$;)W=_>0?uj(W,oi):mj(W,oi),$=W==null?void 0:W.querySelector(Fc);$?A.setState("value",$.getAttribute(fa)):j(_)}let V=()=>M(L().length-1),Y=_=>{_.preventDefault(),_.metaKey?V():_.altKey?I(1):j(1)},X=_=>{_.preventDefault(),_.metaKey?M(0):_.altKey?I(-1):j(-1)};return d.createElement(lt.div,{ref:n,tabIndex:-1,...v,"cmdk-root":"",onKeyDown:_=>{var N;(N=v.onKeyDown)==null||N.call(v,_);let W=_.nativeEvent.isComposing||_.keyCode===229;if(!(_.defaultPrevented||W))switch(_.key){case"n":case"j":{y&&_.ctrlKey&&Y(_);break}case"ArrowDown":{Y(_);break}case"p":case"k":{y&&_.ctrlKey&&X(_);break}case"ArrowUp":{X(_);break}case"Home":{_.preventDefault(),M(0);break}case"End":{_.preventDefault(),V();break}case"Enter":{_.preventDefault();let $=E();if($){let K=new Event(cs);$.dispatchEvent(K)}}}}},d.createElement("label",{"cmdk-label":"",htmlFor:q.inputId,id:q.labelId,style:fj},c),Yr(e,_=>d.createElement(vp.Provider,{value:A},d.createElement(hp.Provider,{value:q},_))))}),aj=d.forwardRef((e,n)=>{var a,i;let r=Kn(),o=d.useRef(null),l=d.useContext(yp),s=Li(),c=xp(e),u=(i=(a=c.current)==null?void 0:a.forceMount)!=null?i:l==null?void 0:l.forceMount;Yn(()=>{if(!u)return s.item(r,l==null?void 0:l.id)},[u]);let m=kp(r,o,[e.value,e.children,o],e.keywords),g=Cl(),f=En(C=>C.value&&C.value===m.current),p=En(C=>u||s.filter()===!1?!0:C.search?C.filtered.items.get(r)>0:!0);d.useEffect(()=>{let C=o.current;if(!(!C||e.disabled))return C.addEventListener(cs,h),()=>C.removeEventListener(cs,h)},[p,e.onSelect,e.disabled]);function h(){var C,A;b(),(A=(C=c.current).onSelect)==null||A.call(C,m.current)}function b(){g.setState("value",m.current,!0)}if(!p)return null;let{disabled:y,value:v,onSelect:w,forceMount:x,keywords:S,...k}=e;return d.createElement(lt.div,{ref:gi(o,n),...k,id:r,"cmdk-item":"",role:"option","aria-disabled":!!y,"aria-selected":!!f,"data-disabled":!!y,"data-selected":!!f,onPointerMove:y||s.getDisablePointerSelection()?void 0:b,onClick:y?void 0:h},e.children)}),ij=d.forwardRef((e,n)=>{let{heading:a,children:i,forceMount:r,...o}=e,l=Kn(),s=d.useRef(null),c=d.useRef(null),u=Kn(),m=Li(),g=En(p=>r||m.filter()===!1?!0:p.search?p.filtered.groups.has(l):!0);Yn(()=>m.group(l),[]),kp(l,s,[e.value,e.heading,c]);let f=d.useMemo(()=>({id:l,forceMount:r}),[r]);return d.createElement(lt.div,{ref:gi(s,n),...o,"cmdk-group":"",role:"presentation",hidden:g?void 0:!0},a&&d.createElement("div",{ref:c,"cmdk-group-heading":"","aria-hidden":!0,id:u},a),Yr(e,p=>d.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":a?u:void 0},d.createElement(yp.Provider,{value:f},p))))}),rj=d.forwardRef((e,n)=>{let{alwaysRender:a,...i}=e,r=d.useRef(null),o=En(l=>!l.search);return!a&&!o?null:d.createElement(lt.div,{ref:gi(r,n),...i,"cmdk-separator":"",role:"separator"})}),oj=d.forwardRef((e,n)=>{let{onValueChange:a,...i}=e,r=e.value!=null,o=Cl(),l=En(u=>u.search),s=En(u=>u.selectedItemId),c=Li();return d.useEffect(()=>{e.value!=null&&o.setState("search",e.value)},[e.value]),d.createElement(lt.input,{ref:n,...i,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":s,id:c.inputId,type:"text",value:r?e.value:l,onChange:u=>{r||o.setState("search",u.target.value),a==null||a(u.target.value)}})}),sj=d.forwardRef((e,n)=>{let{children:a,label:i="Suggestions",...r}=e,o=d.useRef(null),l=d.useRef(null),s=En(u=>u.selectedItemId),c=Li();return d.useEffect(()=>{if(l.current&&o.current){let u=l.current,m=o.current,g,f=new ResizeObserver(()=>{g=requestAnimationFrame(()=>{let p=u.offsetHeight;m.style.setProperty("--cmdk-list-height",p.toFixed(1)+"px")})});return f.observe(u),()=>{cancelAnimationFrame(g),f.unobserve(u)}}},[]),d.createElement(lt.div,{ref:gi(o,n),...r,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":s,"aria-label":i,id:c.listId},Yr(e,u=>d.createElement("div",{ref:gi(l,c.listInnerRef),"cmdk-list-sizer":""},u)))}),lj=d.forwardRef((e,n)=>{let{open:a,onOpenChange:i,overlayClassName:r,contentClassName:o,container:l,...s}=e;return d.createElement(Pi,{open:a,onOpenChange:i},d.createElement(ji,{container:l},d.createElement(Xn,{"cmdk-overlay":"",className:r}),d.createElement(ea,{"aria-label":e.label,"cmdk-dialog":"",className:o},d.createElement(bp,{ref:n,...s}))))}),cj=d.forwardRef((e,n)=>En(a=>a.filtered.count===0)?d.createElement(lt.div,{ref:n,...e,"cmdk-empty":"",role:"presentation"}):null),dj=d.forwardRef((e,n)=>{let{progress:a,children:i,label:r="Loading...",...o}=e;return d.createElement(lt.div,{ref:n,...o,"cmdk-loading":"",role:"progressbar","aria-valuenow":a,"aria-valuemin":0,"aria-valuemax":100,"aria-label":r},Yr(e,l=>d.createElement("div",{"aria-hidden":!0},l)))}),Ut=Object.assign(bp,{List:sj,Item:aj,Input:oj,Group:ij,Separator:rj,Dialog:lj,Empty:cj,Loading:dj});function uj(e,n){let a=e.nextElementSibling;for(;a;){if(a.matches(n))return a;a=a.nextElementSibling}}function mj(e,n){let a=e.previousElementSibling;for(;a;){if(a.matches(n))return a;a=a.previousElementSibling}}function xp(e){let n=d.useRef(e);return Yn(()=>{n.current=e}),n}var Yn=typeof window>"u"?d.useEffect:d.useLayoutEffect;function ha(e){let n=d.useRef();return n.current===void 0&&(n.current=e()),n}function En(e){let n=Cl(),a=()=>e(n.snapshot());return d.useSyncExternalStore(n.subscribe,a,a)}function kp(e,n,a,i=[]){let r=d.useRef(),o=Li();return Yn(()=>{var l;let s=(()=>{var u;for(let m of a){if(typeof m=="string")return m.trim();if(typeof m=="object"&&"current"in m)return m.current?(u=m.current.textContent)==null?void 0:u.trim():r.current}})(),c=i.map(u=>u.trim());o.value(e,s,c),(l=n.current)==null||l.setAttribute(fa,s),r.current=s}),r}var pj=()=>
528{let[e,n]=d.useState(),a=ha(()=>new Map);return Yn(()=>{a.current.forEach(i=>i()),a.current=new Map},[e]),(i,r)=>{a.current.set(i,r),n({})}};function gj(e){let n=e.type;return typeof n=="function"?n(e.props):"render"in n?n.render(e.props):e}function Yr({asChild:e,children:n},a){return e&&d.isValidElement(n)?d.cloneElement(gj(n),{ref:n.ref},a(n.props.children)):a(n)}var fj={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const wp=d.forwardRef(({className:e,...n},a)=>t.jsx(Ut,{ref:a,className:B("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",e),...n}));wp.displayName=Ut.displayName;const Sp=d.forwardRef(({className:e,...n},a)=>t.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[t.jsx(Dr,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),t.jsx(Ut.Input,{ref:a,className:B("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",e),...n})]}));Sp.displayName=Ut.Input.displayName;const Cp=d.forwardRef(({className:e,...n},a)=>t.jsx(Ut.List,{ref:a,className:B("max-h-[300px] overflow-y-auto overflow-x-hidden",e),...n}));Cp.displayName=Ut.List.displayName;const Np=d.forwardRef((e,n)=>t.jsx(Ut.Empty,{ref:n,className:"py-6 text-center text-sm",...e}));Np.displayName=Ut.Empty.displayName;const Ap=d.forwardRef(({className:e,...n},a)=>t.jsx(Ut.Group,{ref:a,className:B("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",e),...n}));Ap.displayName=Ut.Group.displayName;const hj=d.forwardRef(({className:e,...n},a)=>t.jsx(Ut.Separator,{ref:a,className:B("-mx-1 h-px bg-border",e),...n}));hj.displayName=Ut.Separator.displayName;const Pp=d.forwardRef(({className:e,...n},a)=>t.jsx(Ut.Item,{ref:a,className:B("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50",e),...n}));Pp.displayName=Ut.Item.displayName;function vj(){const{personnelFilter:e,addPersonnelFilter:n,removePersonnelFilter:a}=vn(),{data:i=[]}=An(),[r,o]=d.useState(!1),{t:l}=ke(),s=i.filter(m=>!e.includes(m.id)),c=i.filter(m=>e.includes(m.id)),u=e.length>0;return t.jsxs(t.Fragment,{children:[t.jsxs(xl,{open:r,onOpenChange:o,children:[t.jsx(kl,{asChild:!0,children:t.jsx(Be,{variant:u?"default":"ghost",size:"icon",className:B("h-8 w-8",u&&"shadow-sm"),children:t.jsx(th,{className:"h-4 w-4"})})}),t.jsx(Wr,{className:"w-56 p-0",align:"start",children:t.jsxs(wp,{children:[t.jsx(Sp,{placeholder:l.calendar.searchPersonnel,className:"h-9"}),t.jsxs(Cp,{children:[t.jsx(Np,{children:l.calendar.noResults}),t.jsx(Ap,{children:s.map(m=>t.jsx(Pp,{value:Wt(m),onSelect:()=>{n(m.id),o(!1)},children:Wt(m)},m.id))})]})]})})]}),t.jsx("div",{className:"hidden sm:flex items-center gap-1.5",children:c.length>0&&t.jsx(jp,{members:c,onRemove:a})})]})}function jp({members:e,onRemove:n}){return t.jsx(en,{mode:"popLayout",children:e.map(a=>t.jsx(rt.div,{initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.8},transition:{type:"spring",stiffness:400,damping:25},children:t.jsxs(pn,{variant:"secondary",className:"gap-1 cursor-pointer hover:bg-destructive/10 pr-1 whitespace-nowrap",onClick:()=>n(a.id),children:[t.jsx("span",{className:"text-xs",children:Wt(a)}),t.jsx(Mt,{className:"h-3 w-3"})]})},a.id))})}function yj(){const{weekStart:e,currentMonth:n,currentDate:a,viewMode:i,goToPreviousWeek:r,goToNextWeek:o,goToPreviousMonth:l,goToNextMonth:s,goToPreviousDay:c,goToNextDay:u,goToDay:m,goToWeek:g,goToToday:f}=vn(),{t:p,language:h}=ke(),[b,y]=d.useState(!1),v=z=>$n(z,h,{month:"long",year:"numeric"}),w=z=>{const F=new Date(z);return $n(F,h,{weekday:"long",day:"numeric",month:"long",year:"numeric"})},x=z=>{const F=new Date(z.valueOf()),R=(z.getDay()+6)%7;F.setDate(F.getDate()-R+3);const E=new Date(F.getFullYear(),0,4),L=(E.getDay()+6)%7;E.setDate(E.getDate()-L+3);const M=F.getTime()-E.getTime();return 1+Math.round(M/(7*24*60*60*1e3))},S=z=>{const F=new Date(z),R=x(F),E=F.getFullYear();return`${p.calendar.week} ${R} · ${E}`},k=()=>{i==="day"?c():i==="week"?r():l()},C=()=>{i==="day"?u():i==="week"?o():s()},A=()=>i==="day"?w(a):i==="week"?S(e):v(n),q=()=>i==="day"?new Date(a+"T00:00:00"):i==="week"?new Date(e+"T00:00:00"):n,P=z=>{z&&(i==="day"?m(z):i==="week"?g(z):m(z),y(!1))},D=()=>{f(),y(!1)};return t.jsxs("div",{className:"flex items-center gap-0.5",children:[t.jsxs(Be,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:k,children:[t.jsx("span",{className:"sr-only",children:p.common.previous}),t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:t.jsx("path",{d:"m15 18-6-6 6-6"})})]}),t.jsxs(xl,{open:b,onOpenChange:y,children:[t.jsx(kl,{asChild:!0,children:t.jsx("button",{className:"text-sm font-semibold text-foreground capitalize min-w-[140px] text-center hover:bg-accent/50 rounded-md px-2 py-1 transition-colors cursor-pointer",children:A()})}),t.jsx(Wr,{className:"w-auto p-0",align:"center",children:t.jsxs("div",{className:"flex flex-col",children:[t.jsx(bl,{mode:"single",selected:q(),onSelect:P,locale:vr(h),className:B("p-3 pointer-events-auto")}),t.jsx("div",{className:"border-t border-border px-3 py-2",children:t.jsx(Be,{variant:"ghost",size:"sm",className:"w-full text-xs",onClick:D,children:p.common.today})})]})})]}),t.jsxs(Be,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:C,children:[t.jsx("span",{className:"sr-only",children:p.common.next}),t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:t.jsx("path",{d:"m9 18 6-6-6-6"})})]})]})}function bj(){const{t:e}=ke(),n=e.help.calendar;return t.jsxs("div",{className:"space-y-2.5",children:[t.jsx("p",{className:"text-[13px] font-semibold text-foreground",children:n.title}),t.jsx("p",{className:"text-[13px] text-muted-foreground leading-relaxed",children:n.intro}),t.jsxs("div",{className:"space-y-2 pt-1",children:[t.jsx(zt,{icon:t.jsx(As,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipViews}
528),t.jsx(zt,{icon:t.jsx(Cs,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipNavigate}),t.jsx(zt,{icon:t.jsx(Rt,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipCreate}),t.jsx(zt,{icon:t.jsx(fh,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipRecurring}),t.jsx(zt,{icon:t.jsx(ui,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipDetails}),t.jsx(zt,{icon:t.jsx(eu,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipWeather})]})]})}function xj(){const{personnelFilter:e,removePersonnelFilter:n}=vn(),{data:a=[]}=An(),i=a.filter(r=>e.includes(r.id));return i.length===0?null:t.jsx("div",{className:"w-full flex flex-wrap gap-1.5 sm:hidden px-6 -mt-2 pb-2",children:t.jsx(jp,{members:i,onRemove:n})})}const kj=["guide","gjest","partner"],wj=()=>{const{t:e}=ke(),{currentDate:n}=vn(),{currentMembership:a}=he(),i=(a==null?void 0:a.role)&&kj.includes(a.role),[r,o]=d.useState(!1),[l,s]=d.useState(0);return t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-6",children:t.jsx(Gr,{helpKey:"calendar",toggleCount:l,onClose:()=>s(c=>c%2===1?c+1:c),children:t.jsx(bj,{})})}),t.jsx(Lr,{children:t.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 w-full sm:grid sm:grid-cols-[1fr_auto_1fr] sm:items-center sm:gap-2",children:[t.jsx("h1",{className:"text-[22px] font-semibold tracking-tight text-foreground sm:hidden",children:e.pageTitles.calendar}),t.jsx("h1",{className:"hidden sm:block text-[22px] font-semibold tracking-tight text-foreground",children:e.pageTitles.calendar}),t.jsxs("div",{className:"flex items-center gap-1 order-3 sm:order-none w-full sm:w-auto sm:justify-center",children:[t.jsx(yj,{}),!i&&t.jsxs(Be,{size:"sm",className:"h-8 ml-auto sm:hidden",onClick:()=>o(!0),children:[t.jsx(Rt,{className:"w-4 h-4"}),e.event.addEvent]})]}),t.jsxs("div",{className:"flex items-center gap-1 ml-auto sm:ml-0 sm:justify-end",children:[t.jsx(UP,{}),t.jsx(vj,{}),t.jsx($r,{onClick:()=>s(c=>c+1),active:l%2===1}),!i&&t.jsxs(Be,{size:"sm",className:"h-8 ml-1 hidden sm:inline-flex",onClick:()=>o(!0),children:[t.jsx(Rt,{className:"w-4 h-4"}),e.event.addEvent]})]})]})}),t.jsx(xj,{}),t.jsx(WP,{}),!i&&t.jsx(ja,{event:null,date:n,open:r,onOpenChange:o})]})};function Sj(){var a;const{t:e}=ke(),n=(a=e.help2)==null?void 0:a.sales;return n?t.jsxs("div",{className:"space-y-2.5",children:[t.jsx("p",{className:"text-[13px] font-semibold text-foreground",children:n.title}),t.jsx("p",{className:"text-[13px] text-muted-foreground leading-relaxed",children:n.intro}),t.jsxs("div",{className:"space-y-2 pt-1",children:[t.jsx(zt,{icon:t.jsx(Jf,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipColumns}),t.jsx(zt,{icon:t.jsx(Rt,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipCreate}),t.jsx(zt,{icon:t.jsx(ih,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipDrag})]})]}):null}function Tp({provider:e,query:n,mode:a,limit:i=10}){const[r,o]=d.useState(n);d.useEffect(()=>{const c=setTimeout(()=>o(n),350);return()=>clearTimeout(c)},[n]);const l=a==="id"?9:2,s=r.trim().length>=l;return Ee({queryKey:["registry-search",e,a,r,i],queryFn:async()=>{const{data:c,error:u}=await T.functions.invoke("company-registry-search",{body:{provider:e,query:r.trim(),mode:a,limit:i}});if(u)throw u;if(!(c!=null&&c.ok))throw new Error((c==null?void 0:c.message)||"Search failed");return c.data.results},enabled:s,staleTime:10*60*1e3,retry:!1})}function Dp({open:e,onOpenChange:n,onCreated:a}){const{t:i}=ke(),r=i.customers,{data:o=[]}=Ba(),{create:l}=Dm(),[s,c]=d.useState(""),[u,m]=d.useState(""),[g,f]=d.useState(""),[p,h]=d.useState(""),[b,y]=d.useState(""),[v,w]=d.useState(""),[x,S]=d.useState(""),[k,C]=d.use
528State(""),[A,q]=d.useState(""),[P,D]=d.useState(""),[z,F]=d.useState(),[R,E]=d.useState(),[L,M]=d.useState(""),[j,I]=d.useState(-1),V=d.useRef(null),[Y,X]=d.useState(""),{data:_=[],isFetching:N,isError:W}=Tp({provider:"NO_BRREG",query:Y,mode:"name"});d.useEffect(()=>{I(-1)},[_]);const $=d.useCallback(J=>{_.length&&(J.key==="ArrowDown"?(J.preventDefault(),I(Z=>Math.min(Z+1,_.length-1))):J.key==="ArrowUp"?(J.preventDefault(),I(Z=>Math.max(Z-1,0))):J.key==="Enter"&&j>=0&&(J.preventDefault(),ie(_[j])))},[_,j]),K=()=>{c(""),m(""),f(""),h(""),y(""),w(""),S(""),C(""),q(""),D(""),F(void 0),E(void 0),X(""),M("")},H=J=>{if(!J.trim()){M("");return}const Z=o.find(be=>be.organization_number===J.trim());M(Z?`${r.duplicateOrgNumber} "${Z.name}"`:"")},re=J=>{m(J),H(J)},ie=J=>{var Z;c(J.name),m(J.organization_number),H(J.organization_number),S(((Z=J.address_lines)==null?void 0:Z.join(` 529`))||""),C(J.postal_code||""),q(J.city||""),h(J.email||p),y(J.phone||b),D(J.managing_director||""),F(J.provider),E(J.provider_id),X("")},Se=()=>{if(L)return;const J=x.trim()?x.split(` 530`).map(be=>be.trim()).filter(Boolean):void 0,Z={name:s,organization_number:u||void 0,contact_name:g||void 0,email:p||void 0,phone:b||void 0,notes:v||void 0,address_lines:J,postal_code:k||void 0,city:A||void 0,managing_director:P||void 0,registry_provider:z,registry_id:R};n(!1),K(),l.mutateAsync(Z).then(be=>{be!=null&&be.customer_id&&(a==null||a(be.customer_id))}).catch(()=>qe.error(i.common.saveFailed))},oe=J=>{J||K(),n(J)};return t.jsxs(Tt,{open:e,onOpenChange:oe,title:r.newCustomer,size:"sm",footer:t.jsx(tn,{onCancel:()=>oe(!1),onSave:Se,saveLabel:i.common.add,cancelLabel:i.common.cancel,disabled:!s.trim()||!!L}),children:[t.jsx(Te,{title:r.findCompany,noBorder:!0,children:t.jsxs("div",{className:"space-y-2 rounded-lg border border-border p-3 bg-muted/30",children:[t.jsx(ge,{value:Y,onChange:J=>X(J.target.value),onKeyDown:$,className:"sm-input",placeholder:r.findCompany}),N&&t.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:t.jsx(kt,{className:"w-3 h-3 animate-spin"})}),W&&t.jsx("p",{className:"text-xs text-destructive",children:r.registryUnavailable}),!N&&Y.trim().length>=2&&_.length===0&&!W&&t.jsx("p",{className:"text-xs text-muted-foreground",children:r.noResultsFound}),_.length>0&&t.jsx("ul",{ref:V,className:"space-y-1 max-h-48 overflow-y-auto",children:_.map((J,Z)=>t.jsx("li",{ref:be=>{Z===j&&be&&be.scrollIntoView({block:"nearest"})},className:`flex items-center justify-between gap-2 p-2 rounded cursor-pointer hover:bg-accent text-sm ${Z===j?"bg-accent":""}`,onClick:()=>ie(J),children:t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("p",{className:"font-medium truncate",children:J.name}),t.jsxs("p",{className:"text-xs text-muted-foreground truncate",children:[J.organization_number,J.city?` · ${J.city}`:""]})]})},J.provider_id))})]})}),t.jsxs(Te,{children:[t.jsx(pe,{label:i.common.name+" *",children:t.jsx(ge,{value:s,onChange:J=>c(J.target.value),className:"sm-input"})}),t.jsxs(pe,{label:r.organizationNumber,children:[t.jsx(ge,{value:u,onChange:J=>re(J.target.value),className:"sm-input"}),L&&t.jsx("p",{className:"text-xs text-destructive mt-1",children:L})]}),t.jsx(pe,{label:r.contactName,children:t.jsx(ge,{value:g,onChange:J=>f(J.target.value),className:"sm-input"})}),t.jsx(pe,{label:i.sales.customerEmail,children:t.jsx(ge,{type:"email",value:p,onChange:J=>h(J.target.value),className:"sm-input"})}),t.jsx(pe,{label:i.sales.customerPhone,children:t.jsx(ge,{type:"tel",value:b,onChange:J=>y(J.target.value),className:"sm-input"})})]}),t.jsxs(Te,{children:[t.jsx(pe,{label:r.address,children:t.jsx(Gn,{value:x,onChange:J=>S(J.target.value),className:"sm-input min-h-[60px] resize-none !h-auto"})}),t.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[t.jsx(pe,{label:r.postalCode,children:t.jsx(ge,{value:k,onChange:J=>C(J.target.value),className:"sm-input"})}),t.jsx(pe,{label:r.city,children:t.jsx(ge,{value:A,onChange:J=>q(J.target.value),className:"sm-input"})})]}),t.jsx(pe,{label:r.managingDirector,children:t.jsx(ge,{value:P,onChange:J=>D(J.target.value),className:"sm-input"})})]}),t.jsx(Te,{children:t.jsx(pe,{label:i.event.notes,children:t.jsx(Gn,{value:v,onCh
530ange:J=>w(J.target.value),className:"sm-input min-h-[80px] resize-none !h-auto"})})})]})}var _p="AlertDialog",[Cj,b_]=_a(_p,[xd]),jn=xd(),Ep=e=>{const{__scopeAlertDialog:n,...a}=e,i=jn(n);return t.jsx(Pi,{...i,...a,modal:!0})};Ep.displayName=_p;var Nj="AlertDialogTrigger",Aj=d.forwardRef((e,n)=>{const{__scopeAlertDialog:a,...i}=e,r=jn(a);return t.jsx(yd,{...r,...i,ref:n})});Aj.displayName=Nj;var Pj="AlertDialogPortal",Rp=e=>{const{__scopeAlertDialog:n,...a}=e,i=jn(n);return t.jsx(ji,{...i,...a})};Rp.displayName=Pj;var jj="AlertDialogOverlay",zp=d.forwardRef((e,n)=>{const{__scopeAlertDialog:a,...i}=e,r=jn(a);return t.jsx(Xn,{...r,...i,ref:n})});zp.displayName=jj;var Sa="AlertDialogContent",[Tj,Dj]=Cj(Sa),_j=Vg("AlertDialogContent"),Mp=d.forwardRef((e,n)=>{const{__scopeAlertDialog:a,children:i,...r}=e,o=jn(a),l=d.useRef(null),s=Zn(n,l),c=d.useRef(null);return t.jsx(qg,{contentName:Sa,titleName:Ip,docsSlug:"alert-dialog",children:t.jsx(Tj,{scope:a,cancelRef:c,children:t.jsxs(ea,{role:"alertdialog",...o,...r,ref:s,onOpenAutoFocus:Qt(r.onOpenAutoFocus,u=>{var m;u.preventDefault(),(m=c.current)==null||m.focus({preventScroll:!0})}),onPointerDownOutside:u=>u.preventDefault(),onInteractOutside:u=>u.preventDefault(),children:[t.jsx(_j,{children:i}),t.jsx(Rj,{contentRef:l})]})})})});Mp.displayName=Sa;var Ip="AlertDialogTitle",Lp=d.forwardRef((e,n)=>{const{__scopeAlertDialog:a,...i}=e,r=jn(a);return t.jsx(Ra,{...r,...i,ref:n})});Lp.displayName=Ip;var Fp="AlertDialogDescription",Op=d.forwardRef((e,n)=>{const{__scopeAlertDialog:a,...i}=e,r=jn(a);return t.jsx(za,{...r,...i,ref:n})});Op.displayName=Fp;var Ej="AlertDialogAction",Bp=d.forwardRef((e,n)=>{const{__scopeAlertDialog:a,...i}=e,r=jn(a);return t.jsx(Ai,{...r,...i,ref:n})});Bp.displayName=Ej;var qp="AlertDialogCancel",Vp=d.forwardRef((e,n)=>{const{__scopeAlertDialog:a,...i}=e,{cancelRef:r}=Dj(qp,a),o=jn(a),l=Zn(n,r);return t.jsx(Ai,{...o,...i,ref:l})});Vp.displayName=qp;var Rj=({contentRef:e})=>{const n=`\`${Sa}\` requires a description for the component to be accessible for screen reader users. 531 532You can add a description to the \`${Sa}\` by passing a \`${Fp}\` component as a child, which also benefits sighted users by adding visible context to the dialog. 533 534Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${Sa}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. 535 536For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return d.useEffect(()=>{var i;document.getElementById((i=e.current)==null?void 0:i.getAttribute("aria-describedby"))||console.warn(n)},[n,e]),null},zj=Ep,Mj=Rp,Kp=zp,Wp=Mp,Up=Bp,Hp=Vp,Gp=Lp,$p=Op;const Ij=zj,Lj=Mj,Yp=d.forwardRef(({className:e,...n},a)=>t.jsx(Kp,{className:B("fixed inset-0 z-50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),style:{background:"rgba(5,7,11,0.55)",backdropFilter:"blur(6px)"},...n,ref:a}));Yp.displayName=Kp.displayName;const Qp=d.forwardRef(({className:e,...n},a)=>t.jsxs(Lj,{children:[t.jsx(Yp,{}),t.jsx(Wp,{ref:a,className:B("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 p-6 duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-[0.96] data-[state=open]:zoom-in-[0.96] data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",e),style:{borderRadius:18,background:"radial-gradient(900px 500px at 50% -10%, rgba(255,255,255,0.06), transparent 60%), linear-gradient(180deg, rgba(255,255,255,0.035), rgba(255,255,255,0.01)), hsl(var(--surface-modal))",border:"1px solid rgba(255,255,255,0.08)",boxShadow:"inset 0 1px 0 rgba(255,255,255,0.06), 0 30px 80px rgba(0,0,0,0.65), 0 0 0 1px rgba(255,255,255,0.02)"},...n})]}));Qp.displayName=Wp.displayName;const Jp=({className:e,...n})=>t.jsx("div",{className:B("flex flex-col space-y-2 text-center sm:text-left border-b border-[rgba(255,255,255,0.06)] pb-4",e),...n});Jp.displayName="AlertDialogHeader";const Zp=({className:e,...n})=>t.jsx("div",{className:B("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 border-t border-[rgba(255,255,255,0.06)] pt-4",e),style:{background:"linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.00))"},...n});Zp.displayName="AlertDialogFooter";const Xp=d.forwardRef(({className:e,...n},a)=>t.jsx(Gp,{ref:a,className:B("text-lg font-semibold",e),...n}));Xp.displayName=Gp.displayName;const eg=d.forwardRef(({className:e,...n},a)=>t.jsx($p,{ref:a,className:B("text-sm text-muted-foreground",e),...n}));
536eg.displayName=$p.displayName;const tg=d.forwardRef(({className:e,...n},a)=>t.jsx(Up,{ref:a,className:B(vi(),e),...n}));tg.displayName=Up.displayName;const ng=d.forwardRef(({className:e,...n},a)=>t.jsx(Hp,{ref:a,className:B(vi({variant:"outline"}),"mt-2 sm:mt-0",e),...n}));ng.displayName=Hp.displayName;async function Fj(e,n={}){const a=n.limit??500;let i=T.from("contacts").select("*, contact_customer_links(*, customers(name))").eq("company_id",e).order("first_name").limit(a);if(n.search){const l=n.search.replace(/[%,]/g,"");i=i.or(`first_name.ilike.%${l}%,last_name.ilike.%${l}%,primary_email.ilike.%${l}%`)}const{data:r,error:o}=await i;if(o)throw o;return(r??[]).map(l=>{const{contact_customer_links:s,...c}=l,u=(s??[]).map(m=>{const{customers:g,...f}=m;return{...f,customer_name:g==null?void 0:g.name}});return{...c,links:u}})}async function Oj(e,n){const{data:a,error:i}=await T.from("contacts").select("*").eq("company_id",e).eq("id",n).maybeSingle();if(i)throw i;return a}async function Bj(e){const{data:n,error:a}=await T.from("contacts").insert(e).select().single();if(a)throw a;return n}async function qj(e,n,a){const{data:i,error:r}=await T.from("contacts").update(a).eq("company_id",e).eq("id",n).select().single();if(r)throw r;return i}async function Vj(e,n){const{error:a}=await T.from("contacts").delete().eq("company_id",e).eq("id",n);if(a)throw a}async function Kj(e,n){const{data:a,error:i}=await T.from("contact_customer_links").select("*, customers(name)").eq("contact_id",n).eq("company_id",e);if(i)throw i;return(a??[]).map(r=>{const{customers:o,...l}=r;return{...l,customer_name:o==null?void 0:o.name}})}async function Wj(e,n){const{data:a,error:i}=await T.from("contact_customer_links").select("*, contacts(*)").eq("customer_id",n).eq("company_id",e);if(i)throw i;return(a??[]).map(r=>{const{contacts:o,...l}=r;return{...l,contact:o}})}async function Uj(e){const{error:n}=await T.from("contact_customer_links").insert(e);if(n)throw n}async function Hj(e,n){const{error:a}=await T.from("contact_customer_links").update(n).eq("id",e);if(a)throw a}async function Gj(e){const{error:n}=await T.from("contact_customer_links").delete().eq("id",e);if(n)throw n}async function $j(e,n,a){const i=a.name.split(".").pop()||"jpg",r=`${e}/${n}.${i}`,{error:o}=await T.storage.from("contact-photos").upload(r,a,{upsert:!0,contentType:a.type});if(o)throw o;const{error:l}=await T.from("contacts").update({photo_url:r}).eq("id",n);if(l)throw l;return r}async function Yj(e,n){for(const i of["jpg","jpeg","png","webp"])await T.storage.from("contact-photos").remove([`${e}/${n}.${i}`]);const{error:a}=await T.from("contacts").update({photo_url:null}).eq("id",n);if(a)throw a}const sn={list:Fj,get:Oj,create:Bj,update:qj,remove:Vj,listLinksByContact:Kj,listLinksByCustomer:Wj,addLink:Uj,updateLink:Hj,removeLink:Gj,uploadPhoto:$j,removePhoto:Yj};function ag(e){const{currentMembership:n}=he(),a=n==null?void 0:n.companyId,i=500,r=null;return Ee({queryKey:["contacts",a,i,r],queryFn:async()=>a?await sn.list(a,{limit:i,search:r}):[],enabled:!!a})}function Qj(e){const{currentMembership:n}=he(),a=n==null?void 0:n.companyId;return Ee({queryKey:["contact-links",e,a],queryFn:async()=>!e||!a?[]:await sn.listLinksByContact(a,e),enabled:!!e&&!!a})}function Jj(e){const{currentMembership:n}=he(),a=n==null?void 0:n.companyId;return Ee({queryKey:["customer-contacts",e,a],queryFn:async()=>!e||!a?[]:await sn.listLinksByCustomer(a,e),enabled:!!e&&!!a})}function ig(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=()=>{a.invalidateQueries({queryKey:["contacts",n]}),a.invalidateQueries({queryKey:["contact-links"]}),a.invalidateQueries({queryKey:["customer-contacts"]})},o=de({mutationFn:async p=>{if(!n)throw new Error("No company");return sn.create({company_id:n,first_name:p.first_name,last_name:p.last_name,primary_email:p.primary_email||null,primary_phone:p.primary_phone||null,notes:p.notes||null,photo_url:p.photo_url||null})},onSuccess:r,onError:p=>i({title:"Error",description:p.message,variant:"destructive"})}),l=de({mutationFn:async p=>{if(!n)throw new Error("No company");const{id:h,...b}=p;await sn.update(n,h,{first_name:b.first_name,last_name:b.last_name,primary_email:b.primary_email||null,primary_phone:b.primary_phone||null,notes:b.notes||null,photo_url:b.photo_url!==void 0?b.photo_url:void 0})},onSuccess:r,onError:p=>i({title:"Error",description:p.message,variant:"destructive"})}),s=de({mutationFn:async p=>{if(!n)throw new Error("No company");await sn.remove(n,p)},onSuccess:r,onError:p=>i({title:"Error",description:p.message,variant:"destructive"})}),c=de({mutationFn:async p=>{if(!n)throw new Error("No company");await sn.addLink({company_id:n,contact_id:p.contact_id,customer_id:p.customer_id,role_title:p.role_title||null,is_primary:p.is_primary||!1})},onSuccess:r,onError:p=>i({title:"Error",description:p.message,variant:"destructive"})}),u=de({mutationFn:async({id:p,role_title:h,is_primary:b})=>{const y={};h!==void 0&&(y.role_title=h||null),b!==void 0&&(y.is_primary=b),await sn.updateLink(p,y)},onSuccess:r,onError:p=>i({title:"Error",description:p.message,variant:"destructive"})}),m=de({mutationFn:async p=>{await sn.removeLink(p)},onSuccess:r,onError:p=>i({title:"Error",description:p.message,variant:"destructive"})}),g=de({mutationFn:async({contactId:p,file:h})=>{if(!n)throw new Error("No company");const b=Js(h,{allowed:Qs,maxBytes:xk});if(b)throw new Error(b);return sn.uploadPhoto(n,p,h)},onSuccess:r,onError:p=>i({title:"Error",description:p.message,variant:"destructive"})}),f=de({mutationFn:async p=>{if(!n)throw new Error("No company");await sn.removePhoto(n,p)},onSuccess:r,onError:p=>i({title:"Error",description:p.message,variant:"destructive"})});return{create:o,update:l,remove:s,addLink:c,updateLink:u,removeLink:m,uploadPhoto:g,removePhoto:f}}const Zj=60*60*24*7;function Xj(e){return e.includes("/contact-photos/")?e.replace(/^.*\/object\/(?:public|sign)\/contact-photos\//,"").replace(/\?.*$/,""):e}function rg(e){const n=e?Xj(e):null,{data:a}=Ee({queryKey:["contact-photo-signed",n],queryFn:async()=>
536{if(!n)return null;const{data:i,error:r}=await T.storage.from("contact-photos").createSignedUrl(n,Zj);return r||!(i!=null&&i.signedUrl)?null:i.signedUrl},enabled:!!n,staleTime:1e3*60*60*6});return a??null}const Oc=["ceo","cfo","coo","cto","sales_manager","marketing_manager","project_manager","booking_manager","operations_manager","account_manager","administrator","other"];function og({open:e,onOpenChange:n,contact:a,presetCustomerId:i,prefill:r,onSuccess:o}){const{t:l}=ke(),s=l.contacts,{create:c,update:u,remove:m,addLink:g,updateLink:f,removeLink:p,uploadPhoto:h,removePhoto:b}=ig(),{data:y=[]}=Qj(a==null?void 0:a.id),{data:v=[]}=Ba(),w=!!a,x=d.useRef(null),[S,k]=d.useState(""),[C,A]=d.useState(""),[q,P]=d.useState(""),[D,z]=d.useState(""),[F,R]=d.useState(null),[E,L]=d.useState(null),[M,j]=d.useState(null),[I,V]=d.useState(!1),[Y,X]=d.useState(!1),[_,N]=d.useState(!1),[W,$]=d.useState(""),[K,H]=d.useState(""),[re,ie]=d.useState(!1),Se={ceo:s.roleCeo,cfo:s.roleCfo,coo:s.roleCoo,cto:s.roleCto,sales_manager:s.roleSalesManager,marketing_manager:s.roleMarketingManager,project_manager:s.roleProjectManager,booking_manager:s.roleBookingManager,operations_manager:s.roleOperationsManager,account_manager:s.roleAccountManager,administrator:s.roleAdministrator,other:s.roleOther};d.useEffect(()=>{e&&(a?(k(a.first_name),A(a.last_name),P(a.primary_email||""),z(a.primary_phone||""),R(a.photo_url)):(k((r==null?void 0:r.firstName)||""),A((r==null?void 0:r.lastName)||""),P((r==null?void 0:r.email)||""),z(""),R(null)),L(null),j(null),oe())},[e,a,i,r]),d.useEffect(()=>()=>{M&&URL.revokeObjectURL(M)},[M]);const oe=()=>{N(!1),$(""),H("")},J=ve=>{var Qe;const We=(Qe=ve.target.files)==null?void 0:Qe[0];We&&(ve.target.value="",w&&(a!=null&&a.id)?(V(!0),h.mutateAsync({contactId:a.id,file:We}).then(Q=>R(Q)).finally(()=>V(!1))):(M&&URL.revokeObjectURL(M),L(We),j(URL.createObjectURL(We))))},Z=async()=>{if(w&&(a!=null&&a.id)){V(!0);try{await b.mutateAsync(a.id),R(null)}finally{V(!1)}}else M&&URL.revokeObjectURL(M),L(null),j(null)},be=()=>{const ve={first_name:S.trim(),last_name:C.trim(),primary_email:q.trim()||void 0,primary_phone:D.trim()||void 0};n(!1),w||o==null||o(),w&&a?u.mutateAsync({...ve,id:a.id}).catch(()=>qe.error(l.common.saveFailed)):c.mutateAsync(ve).then(We=>{E&&(We!=null&&We.id)&&h.mutateAsync({contactId:We.id,file:E}).catch(()=>qe.error(l.common.saveFailed)),i&&(We!=null&&We.id)&&g.mutateAsync({contact_id:We.id,customer_id:i}).catch(()=>qe.error(l.common.saveFailed))}).catch(()=>qe.error(l.common.saveFailed))},ze=()=>{a&&(n(!1),m.mutateAsync(a.id).catch(()=>qe.error(l.common.saveFailed)))},Fe=new Set(y.map(ve=>ve.customer_id)),Le=async()=>{if(!(!(a!=null&&a.id)||!W)){if(Fe.has(W)){qe.error(s.duplicateLink);return}await g.mutateAsync({contact_id:a.id,customer_id:W,role_title:K||void 0}),oe()}},Ve=async(ve,We)=>{await f.mutateAsync({id:ve,role_title:We})},Ke=async ve=>{await p.mutateAsync(ve)},St=ve=>{$(ve)},tt=`${S.charAt(0)}${C.charAt(0)}`.toUpperCase()||"?",Ze=rg(F),He=M||Ze,wt=v.map(ve=>({value:ve.id,label:ve.name})).filter(ve=>!Fe.has(ve.value)),dt=S.trim().length>0&&C.trim().length>0,bt=ve=>{const We=v.find(Qe=>Qe.id===ve);return(We==null?void 0:We.organization_number)||null};return t.jsxs(t.Fragment,{children:[t.jsxs(Tt,{open:e,onOpenChange:n,title:w?s.editContact:s.newContact,size:"sm",footer:t.jsx(tn,{onCancel:()=>n(!1),onSave:be,onDelete:w?()=>X(!0):void 0,saveLabel:w?l.common.save:l.common.add,cancelLabel:l.common.cancel,disabled:!dt}),children:[t.jsxs("div",{className:"space-y-0",children:[t.jsx(Te,{noBorder:!0,children:t.jsxs("div",{className:"flex flex-col items-center gap-2",children:[t.jsxs("div",{className:"relative group",children:[t.jsxs(zr,{className:"h-20 w-20",children:[t.jsx(Mr,{src:He??void 0}),t.jsx(Ir,{className:"text-lg font-semibold bg-primary/10 text-primary",children:tt})]}),t.jsx("button",{type:"button",onClick:()=>{var ve;return(ve=x.current)==null?void 0:ve.click()},className:"absolute inset-0 flex items-center justify-center rounded-full bg-black/40 opacity-0 group-hover:opacity-100 transition-opacity",children:I?t.jsx(kt,{className:"h-5 w-5 text-white animate-spin"}):t.jsx(Qd,{className:"h-5 w-5 text-white"})})]}),He&&t.jsx("button",{type:"button",onClick:Z,className:"text-xs text-muted-foreground hover:text-destructive transition-colors",children:s.removePhoto}),t.jsx("input",{ref:x,type:"file",accept:"image/*",className:"hidden",onChange:J})]})}),t.jsxs(Te,{children:[t.jsx(pe,{label:s.firstName+" *",children:t.jsx(ge,{value:S,onChange:ve=>k(ve.target.value),className:"sm-input"})}),t.jsx(pe,{label:s.lastName+" *",children:t.jsx(ge,{value:C,onChange:ve=>A(ve.target.value),className:"sm-input"})}),t.jsx(pe,{label:l.sales.customerEmail,children:t.jsx(ge,{type:"email",value:q,onChange:ve=>P(ve.target.value),className:"sm-input"})}),t.jsx(pe,{label:l.sales.customerPhone,children:t.jsx(ge,{type:"tel",value:D,onChange:ve=>z(ve.target.value),className:"sm-input"})})]}),w&&t.jsxs(Te,{title:s.companyLinks,action:t.jsx("button",{type:"button",onClick:()=>N(!0),className:"sm-add-btn",children:s.addCompanyLink}),children:[y.length===0&&!_&&t.jsx("p",{className:"text-xs text-muted-foreground px-1 py-3",children:s.noLinksYet}),y.map(ve=>{const We=bt(ve.customer_id);return t.jsxs("div",{className:"rounded-lg border border-border bg-muted/30 p-3 space-y-2",children:[t.jsxs("div",{className:"flex items-start justify-between gap-2",children:[t.jsxs("div",{className:"min-w-0",children:[t.jsx("p",{className:"text-sm font-medium truncate",children:ve.customer_name}),We&&t.jsxs("p",{className:"text-[10px] text-muted-foreground truncate",children:["Org. ",We]})]}),t.jsx("button",{type:"button",onClick:()=>Ke(ve.id),className:"p-1 rounded hover:bg-destructive/10 text-muted-foreground hover:text-destructive transition-colors shrink-0",children:t.jsx(La,{className:"h-3.5 w-3.5"})})]}),t.jsxs(Bt,{value:ve.role_title||"",onValueChange:Qe=>Ve(ve.id,Qe),children:[t.jsx(It,{className:"sm-select-trigger h-7 text-xs",children:t.jsx(Jt,{placeholder:s.role})}),t.jsx(Lt,{children:Oc.map(Qe=>t.jsx(mt,{value:Qe,children:Se[Qe]},Qe))})]})]},ve.id)}),_&&t.jsxs("div",{className:"border border-border rounded-md p-3 mt-2 space-y-2 bg-muted/30",children:[t.jsx(kn,{options:wt,value:W,onChange:$,placeholder:s.selectCustomer,onCreateNew:()=>ie(!0),createNewLabel:s.createNewCompany,side:"top"}),t.jsxs(Bt,{value:K,onValueChange:H,children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{placeholder:s.roleTitlePlaceholder})}),t.jsx(Lt,{children:Oc.map(ve=>t.jsx(mt,{value:ve,children:Se[ve]},ve))})]}),t.jsxs("div",{className:"flex justify-end gap-2 pt-1",children:[t.jsx(Be,{variant:"ghost",size:"sm",onClick:oe,children:l.common.cancel}),t.jsx(Be,{size:"sm",onClick:Le,disabled:!W||g.isPending,children:l.common.add})]})]})]})]}),t.jsx(Ij,{open:Y,onOpenChange:X,children:t.jsxs(Qp,{children:[t.jsxs(Jp,{children:[t.jsx(Xp,{children:s.deleteContact}),t.jsx(eg,{children:s.deleteConfirm})]}),t.jsxs(Zp,{children:[t.jsx(ng,{children:l.common.cancel}),t.jsx(tg,{onClick:ze,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:l.common.delete})]})]})})]}),t.jsx(Dp,{open:re,onOpenChange:ie,onCreated:St})]})}const sg=d.createContext(!1),Qr=d.forwardRef(({fixedHeight:e=!1,...n},a)=>t.jsx(sg.Provider,{value:e,children:t.jsx(Kg,{ref:a,...n})}));Qr.displayName="Tabs";const Jr=d.forwardRef(({className:e,variant:n="underline",...a},i)=>t.jsx(kd,{ref:i,className:B(n==="pill"?"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground":"w-full inline-flex items-center justify-start bg-transparent border-b border-border rounded-none h-auto p-0 gap-0 text-muted-foreground flex-wrap",e),...a}));Jr.displayName=kd.displayName;const wn=d.forwardRef(({className:e,variant:n="underline",...a},i)=>t.jsx(wd,{ref:i,className:B("inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",n==="pill"?"rounded-sm px-3 py-1.5 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm":"rounded-none border-b-2 border-transparent data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:shadow-none px-4 py-2.5",e),...a}));wn.displayName=wd.displayName;const Sn=d.forwardRef(({className:e,style:n,...a},i)=>{const r=d.useContext(sg);return t.jsx(Sd,{ref:i,...r?{forceMount:!0}:{},className:B("ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",r?"col-start-1 row-start-1 data-[state=inactive]:invisible data-[state=inactive]:pointer-events-none":"mt-2",e),style:n,...a})});Sn.displayName=Sd.displayName;function x_({className:e,children:n,...a}){return t.jsx("div",{className:B("grid",e),...a,children:n})}const e1=["lead","qualified","proposal","closed_won"],t1={lead:{order:1,colorClass:"text-muted-foreground",bgClass:"bg-muted",borderClass:"border-muted-foreground"}
536,qualified:{order:2,colorClass:"text-blue-600 dark:text-blue-400",bgClass:"bg-blue-50 dark:bg-blue-950",borderClass:"border-blue-500"},proposal:{order:3,colorClass:"text-fuchsia-600 dark:text-fuchsia-400",bgClass:"bg-fuchsia-50 dark:bg-fuchsia-950",borderClass:"border-fuchsia-500"},closed_won:{order:4,colorClass:"text-status-ready",bgClass:"bg-status-ready-bg",borderClass:"border-status-ready"},closed_lost:{order:5,colorClass:"text-muted-foreground",bgClass:"bg-muted/50",borderClass:"border-muted-foreground"}};function Nl(){const{t:e}=ke();return n=>{switch(n){case"lead":return e.sales.lead;case"qualified":return e.sales.qualified;case"proposal":return e.sales.proposal;case"closed_won":return e.sales.closedWon;case"closed_lost":return e.sales.closedLost}}}function n1({status:e,className:n}){const a=Nl(),i=t1[e];return t.jsx("span",{className:B("inline-flex items-center px-2 py-0.5 rounded text-xs font-medium",i.bgClass,i.colorClass,n),children:a(e)})}function k_(e){return Ee({queryKey:["activity-pricing",e],queryFn:async()=>{if(!e)return null;const{data:n,error:a}=await T.rpc("get_activity_pricing",{p_activity_id:e});if(a)throw a;const i=n;if(!i.ok)throw new Error(i.message||"Failed to load pricing");return i.data},enabled:!!e})}function a1(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["activity-current-prices",n],queryFn:async()=>{var l,s;if(!n)return{};const{data:a,error:i}=await T.from("activity_price_periods").select("activity_id, amount_cents, currency, valid_from, valid_to, price_category_id, price_categories(name, is_active)").eq("company_id",n).lte("valid_from",new Date().toISOString().split("T")[0]).order("valid_from",{ascending:!1});if(i)throw i;const r=new Date().toISOString().split("T")[0],o={};for(const c of a){if(c.valid_to&&c.valid_to<=r||((l=c.price_categories)==null?void 0:l.is_active)===!1)continue;const u=c.activity_id;o[u]||(o[u]=[]);const m=((s=c.price_categories)==null?void 0:s.name)||"?";o[u].some(g=>g.category_name===m)||o[u].push({price_category_id:c.price_category_id,category_name:m,amount_cents:c.amount_cents,currency:c.currency})}return o},enabled:!!n})}function w_(e){const n=st(),{toast:a}=Dt(),i=de({mutationFn:async o=>{if(!e)throw new Error("No activity");const{data:l,error:s}=await T.rpc("set_activity_price_from_date",{p_activity_id:e,p_price_category_id:o.price_category_id,p_valid_from:o.valid_from,p_amount_cents:o.amount_cents});if(s)throw s;const c=l;if(!c.ok)throw new Error(c.message||"Failed to set price");return c},onSuccess:()=>{n.invalidateQueries({queryKey:["activity-pricing",e]}),n.invalidateQueries({queryKey:["activity-current-prices"]})},onError:o=>a({title:"Feil",description:o.message,variant:"destructive"})}),r=de({mutationFn:async o=>{const{error:l}=await T.from("activity_price_periods").delete().eq("id",o);if(l)throw l},onSuccess:()=>{n.invalidateQueries({queryKey:["activity-pricing",e]}),n.invalidateQueries({queryKey:["activity-current-prices"]})},onError:o=>a({title:"Feil",description:o.message,variant:"destructive"})});return{setPrice:i,deletePeriod:r}}function S_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=de({mutationFn:async s=>{if(!n)throw new Error("No company");const{data:c,error:u}=await T.from("price_categories").insert({company_id:n,name:s.name,sort_order:s.sort_order??100,description:s.description??null,require_dob:s.require_dob??!1,min_age:s.min_age??null,max_age:s.max_age??null,resource_mode:s.resource_mode??null,resource_type_id:s.resource_type_id??null}).select().single();if(u)throw u;return{...c,_originalName:s.name,_sourceLanguage:s.source_language}},onSuccess:s=>{a.invalidateQueries({queryKey:["activity-pricing"]}),a.invalidateQueries({queryKey:["price-categories"]}),s!=null&&s.id&&n&&T.functions.invoke("translate-category-name",{body:{company_id:n,category_id:s.id,name:s._originalName||s.name,source_language:s._sourceLanguage}}).catch(c=>console.error("Category translation failed:",c))},onError:s=>i({title:"Feil",description:s.message,variant:"destructive"})}),o=de({mutationFn:async s=>{const c={};s.name!==void 0&&(c.name=s.name),s.description!==void 0&&(c.description=s.description),s.sort_order!==void 0&&(c.sort_order=s.sort_order),s.is_active!==void 0&&(c.is_active=s.is_active),s.require_dob!==void 0&&(c.require_dob=s.require_dob),s.min_age!==void 0&&(c.min_age=s.min_age),s.max_age!==void 0&&(c.max_age=s.max_age),s.resource_mode!==void 0&&(c.resource_mode=s.resource_mode),s.resource_type_id!==void 0&&(c.resource_type_id=s.resource_type_id);const{error:u}=await T.from("price_categories").update(c).eq("id",s.id);if(u)throw u;return s},onSuccess:s=>{a.invalidateQueries({queryKey:["activity-pricing"]}),a.invalidateQueries({queryKey:["price-categories"]}),s.description!==void 0&&n&&T.from("price_categories").select("name, description").eq("id",s.id).single().then(({data:c})=>{c&&T.functions.invoke("translate-category-name",{body:{company_id:n,category_id:s.id,name:c.name,description:c.description,source_language:s.source_language}}
536).catch(u=>console.error("Description translation failed:",u))})},onError:s=>i({title:"Feil",description:s.message,variant:"destructive"})}),l=de({mutationFn:async s=>{const{error:c}=await T.from("price_categories").delete().eq("id",s);if(c)throw c},onSuccess:()=>{a.invalidateQueries({queryKey:["activity-pricing"]}),a.invalidateQueries({queryKey:["price-categories"]})},onError:s=>{const c=s.message||"";c.includes("violates foreign key constraint")?i({title:"Kan ikke slette",description:"Denne priskategorien er i bruk og kan ikke slettes. Fjern den fra alle aktiviteter først.",variant:"destructive"}):i({title:"Feil",description:c,variant:"destructive"})}});return{create:r,update:o,remove:l}}function C_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["price-categories",n],queryFn:async()=>{if(!n)return[];const{data:a,error:i}=await T.from("price_categories").select("*").eq("company_id",n).order("sort_order").order("name");if(i)throw i;return a},enabled:!!n})}function N_(e){return Ee({queryKey:["activity-excluded-categories",e],queryFn:async()=>{if(!e)return[];const{data:n,error:a}=await T.from("activity_excluded_price_categories").select("price_category_id").eq("activity_id",e);if(a)throw a;return n.map(i=>i.price_category_id)},enabled:!!e})}function A_(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["activity-excluded-categories-all",n],queryFn:async()=>{if(!n)return{};const{data:a,error:i}=await T.from("activity_excluded_price_categories").select("activity_id, price_category_id").eq("company_id",n);if(i)throw i;const r={};for(const o of a)r[o.activity_id]||(r[o.activity_id]=[]),r[o.activity_id].push(o.price_category_id);return r},enabled:!!n})}function P_(e){const{currentMembership:n}=he(),a=(n==null?void 0:n.companyId)??"",i=st(),{toast:r}=Dt();return{toggle:de({mutationFn:async({priceCategoryId:l,excluded:s})=>{if(s){const{error:c}=await T.from("activity_excluded_price_categories").insert({activity_id:e,price_category_id:l,company_id:a});if(c)throw c}else{const{error:c}=await T.from("activity_excluded_price_categories").delete().eq("activity_id",e).eq("price_category_id",l);if(c)throw c}},onSuccess:()=>{i.invalidateQueries({queryKey:["activity-excluded-categories",e]}),i.invalidateQueries({queryKey:["activity-excluded-categories-all"]}),i.invalidateQueries({queryKey:["activity-current-prices"]})},onError:l=>r({title:"Feil",description:l.message,variant:"destructive"})})}}function Al(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,{data:a,isLoading:i}=Ee({queryKey:["company-locale",n],queryFn:async()=>{if(!n)return{primaryLanguage:"en",defaultCurrency:"EUR"};const{data:r,error:o}=await T.from("companies").select("primary_language, default_currency").eq("id",n).single();if(o)throw o;return{primaryLanguage:r.primary_language??"en",defaultCurrency:r.default_currency??"EUR"}},enabled:!!n,staleTime:5*60*1e3});return{primaryLanguage:(a==null?void 0:a.primaryLanguage)??"en",defaultCurrency:(a==null?void 0:a.defaultCurrency)??"EUR",isLoading:i}}async function i1(e,n={}){let a=T.from("sales").select("*, sale_items(*)").eq("company_id",e).order("updated_at",{ascending:!1});n.updatedSince&&(a=a.gte("updated_at",n.updatedSince)),n.limit&&n.limit>0&&(a=a.limit(n.limit));const{data:i,error:r}=await a;if(r)throw r;return i??[]}async function r1(e,n){const{data:a,error:i}=await T.from("sales").select("*, sale_items(*)").eq("company_id",e).eq("id",n).maybeSingle();if(i)throw i;return a}async function o1(e){const{data:n,error:a}=await T.from("sales").insert(e).select().single();if(a)throw a;return n}async function s1(e,n,a){const{data:i,error:r}=await T.from("sales").update(a).eq("company_id",e).eq("id",n).select().single();if(r)throw r;return i}async function l1(e,n,a){const{error:i}=await T.from("sales").update({status:a}).eq("id",n).eq("company_id",e);if(i)throw i;return{id:n,status:a}}async function c1(e,n){await T.from("sale_items").update({event_id:null}).eq("sale_id",n).eq("company_id",e),await T.from("events").delete().eq("sale_id",n).eq("company_id",e);const{error:a}=await T.from("sales").delete().eq("id",n).eq("company_id",e);if(a)throw a}async function d1(e,n,a){if(await T.from("sale_items").delete().eq("sale_id",n).eq("company_id",e),a.length===0)return;const{error:i}=await T.from("sale_items").insert(a.map(r=>({activity_id:r.activity_id??null,quantity:r.quantity,start_at:r.start_at,end_at:r.end_at,participants:r.participants??null,line_total_cents:r.line_total_cents??null,currency:r.currency??null,note:r.note??null,sale_id:n,company_id:e})));if(i)throw i}async function u1(e,n){const{data:a,error:i}=await T.from("events").select("id, name, start_at, end_at, operational_status, activity_id, activities(name)").eq("sale_id",n).eq("company_id",e).order("start_at");if(i)throw i;return a??[]}async function m1(e,n){await T.from("sale_items").update({event_id:null}).eq("sale_id",n).eq("company_id",e);const{error:a}=await T.from("events").delete().eq("sale_id",n).eq("company_id",e);if(a)throw a}async function p1(e){const{data:n,error:a}=await T.rpc("upsert_tentative_events_for_sale",{p_sale_id:e});if(a)throw a;const i=n;
536if(!i.ok)throw new Error(i.message||i.code);return i}async function g1(e){const{data:n,error:a}=await T.rpc("set_sale_confirmed",{p_sale_id:e});if(a)throw a;const i=n;if(!i.ok)throw new Error(i.message||i.code);return i}async function f1(e){const{data:n,error:a}=await T.rpc("create_sale_from_inbound_email",{p_inbound_email_id:e});if(a)throw a;const i=n;if(!i.ok)throw new Error(i.message||i.code);return i.data}async function h1(e,n){T.functions.invoke("send-new-lead-notification",{body:{sale_id:e,company_id:n}}).catch(a=>console.error("Lead notification failed:",a))}const Ot={list:i1,get:r1,create:o1,update:s1,updateStatus:l1,remove:c1,replaceItems:d1,listEventsForSale:u1,deleteEventsForSale:m1,upsertTentativeEvents:p1,setConfirmed:g1,createFromInboundEmail:f1,notifyNewLead:h1};function v1(e){const{currentMembership:n}=he(),a=n==null?void 0:n.companyId,i=500,r=null;return Ee({queryKey:["sales",a,i,r],queryFn:async()=>a?await Ot.list(a,{limit:i,updatedSince:r}):[],enabled:!!a})}const y1=["sales","sale-events","project-sales","project-overview","events"];function Bc(e,n){return{company_id:e,customer_name:n.customer_name,customer_email:n.customer_email||null,customer_phone:n.customer_phone||null,customer_id:n.customer_id||null,contact_id:n.contact_id||null,contact_name:n.contact_name||null,status:n.status,description:n.description||"",notes:n.notes||null,project_id:n.project_id||null,person_count:n.person_count??0,assigned_to_member_id:n.assigned_to_member_id??null,day_notes:n.day_notes??{},program_summary:n.program_summary||null,program_start_date:n.program_start_date||null,program_end_date:n.program_end_date||null}}function lg(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId,a=st(),{toast:i}=Dt(),r=()=>{y1.forEach(f=>a.invalidateQueries({queryKey:[f]}))},o=de({mutationFn:async f=>{if(!n)throw new Error("No company");const p=await Ot.create(Bc(n,f));return f.items.length>0&&await Ot.replaceItems(n,p.id,f.items),f.status==="lead"&&Ot.notifyNewLead(p.id,n),p},onSuccess:r,onError:f=>i({title:"Error",description:f.message,variant:"destructive"})}),l=de({mutationFn:async f=>{if(!n)throw new Error("No company");const{id:p,items:h,project_id:b,...y}=Bc(n,f);delete y.company_id,await Ot.update(n,f.id,y),await Ot.replaceItems(n,f.id,f.items)},onSuccess:r,onError:f=>i({title:"Error",description:f.message,variant:"destructive"})}),s=de({mutationFn:async({id:f,status:p})=>{if(!n)throw new Error("No company");return Ot.updateStatus(n,f,p)},onMutate:async({id:f,status:p})=>{await a.cancelQueries({queryKey:["sales",n]});const h=a.getQueryData(["sales",n]);return h&&a.setQueryData(["sales",n],b=>(b||[]).map(y=>y.id===f?{...y,status:p,updated_at:new Date().toISOString()}:y)),{prev:h}},onSuccess:async f=>{if(n)try{f.status==="proposal"?await Ot.upsertTentativeEvents(f.id):["lead","qualified","closed_lost"].includes(f.status)?await Ot.deleteEventsForSale(n,f.id):f.status==="closed_won"&&(await Ot.upsertTentativeEvents(f.id),await Ot.setConfirmed(f.id))}catch(p){console.error("Sale status side-effect failed:",p)}},onError:(f,p,h)=>{h!=null&&h.prev&&a.setQueryData(["sales",n],h.prev),i({title:"Error",description:f.message,variant:"destructive"})},onSettled:()=>r()}),c=de({mutationFn:async f=>{if(!n)throw new Error("No company");await Ot.remove(n,f)},onSuccess:r,onError:f=>i({title:"Error",description:f.message,variant:"destructive"})}),u=de({mutationFn:async f=>Ot.setConfirmed(f),onSuccess:r,onError:f=>i({title:"Error",description:f.message,variant:"destructive"})}),m=de({mutationFn:async f=>Ot.upsertTentativeEvents(f),onSuccess:r,onError:f=>i({title:"Error",description:f.message,variant:"destructive"})}),g=de({mutationFn:async f=>Ot.createFromInboundEmail(f),onSuccess:r,onError:f=>i({title:"Error",description:f.message,variant:"destructive"})});return{create:o,update:l,updateStatus:s,remove:c,confirmSale:u,upsertTentativeEvents:m,createFromEmail:g}}let qc=0;function si(e,n){const[a,i]=e.split(":").map(Number),r=a*60+i+n,o=Math.floor(r/60)%24,l=r%60;return`${o.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")}`}function Vc({open:e,onOpenChange:n,editSale:a,emailPrefill:i}){var Xr,Qa,Ja;const{t:r,language:o}=ke(),l=st(),s=Nl(),c=r.sales,{data:u=[]}=Ba(),{data:m=[]}=ag(),{data:g=[]}=Ri();a1();const{data:f=[]}=An(),{defaultCurrency:p,primaryLanguage:h}=Al(),{currentMembership:b}=he(),y=b==null?void 0:b.companyId,{create:v,update:w,remove:x}=lg(),S=!!a,k=d.useRef(null),[C,A]=d.useState("overview"),[q,P]=d.useState(!1),[D,z]=d.useState(""),[F,R]=d.useState(!1),[E,L]=d.use
536State(""),[M,j]=d.useState(""),[I,V]=d.useState(""),[Y,X]=d.useState(""),[_,N]=d.useState(""),[W,$]=d.useState(""),[K,H]=d.useState(""),[re,ie]=d.useState([]),[Se,oe]=d.useState(!1),[J,Z]=d.useState(!1),[be,ze]=d.useState(""),[Fe,Le]=d.useState(0),[Ve,Ke]=d.useState(0),[St,tt]=d.useState(!1),[Ze,He]=d.useState([]),[yt,wt]=d.useState(null),[dt,bt]=d.useState(""),[ve,We]=d.useState(""),[Qe,Q]=d.useState(""),[it,ne]=d.useState("10:00"),[xe,Ye]=d.useState("11:00"),[Je,Oe]=d.useState([]),[ce,Ce]=d.useState(!1),[Pe,Ne]=d.useState(0),[Re,Xe]=d.useState({}),Ue=g.find(G=>G.id===dt);d.useEffect(()=>{if(!e||!a)return;L(a.description||""),j(a.customer_id||""),V(a.contact_id||""),X(a.notes||""),N(a.program_summary||""),$(a.program_start_date||""),H(a.program_end_date||""),ze(a.assigned_to_member_id||""),Ke(a.person_count||0),Xe(a.day_notes||{});const G=a.sale_items.find(te=>!te.activity_id);Le(G?G.line_total_cents??0:0);const me=a.sale_items.filter(te=>!!te.activity_id).map(te=>{const De=new Date(te.start_at),je=new Date(te.end_at),$e=g.find(_e=>_e.id===te.activity_id),_t=($e==null?void 0:$e.default_duration_minutes)??60;return{id:te.id,activityId:te.activity_id||"",activityName:($e==null?void 0:$e.name)||c.activity,date:At(De,"yyyy-MM-dd"),endDate:At(je,"yyyy-MM-dd"),startTime:At(De,"HH:mm"),endTime:At(je,"HH:mm"),durationMinutes:_t,totalCents:te.line_total_cents??0,currency:te.currency||p,note:te.note||""}});He(me),A("overview")},[e,a==null?void 0:a.id]),d.useEffect(()=>{!e||!i||a||(z(i.bodyText||""),L(i.subject||""),P(!0))},[e,i==null?void 0:i.emailId]);const le=d.useMemo(()=>u.map(G=>({value:G.id,label:G.name})),[u]),ue=d.useMemo(()=>{if(M){const G=m.filter(me=>{var te;return(te=me.links)==null?void 0:te.some(De=>De.customer_id===M)});if(G.length>0)return G.map(me=>({value:me.id,label:me.display_name}))}return m.map(G=>({value:G.id,label:G.display_name}))},[m,M]),ye=d.useMemo(()=>f.map(G=>({value:G.id,label:Wt(G)})),[f]),Me=d.useMemo(()=>g.filter(G=>G.is_sellable).map(G=>({value:G.id,label:G.name})),[g]),Ge=(Ue==null?void 0:Ue.default_duration_minutes)??60,nt=d.useCallback(G=>{if(!G)return;const me=g.find(Et=>Et.id===G);if(!me)return;const te=me.default_duration_minutes??60,De=it,je=si(De,te),$e=ve||At(new Date,"yyyy-MM-dd"),_t=Qe||$e,_e={id:`item-${++qc}`,activityId:G,activityName:me.name,date:$e,endDate:_t,startTime:De,endTime:je,durationMinutes:te,totalCents:0,currency:p,note:""};He(Et=>[...Et,_e]),wt(_e.id)},[g,it,ve,Qe,p]);d.useCallback(G=>{ne(G),Ye(si(G,Ge))},[Ge]),d.useCallback(G=>{(!Qe||Qe===ve)&&Q(G),We(G)},[Qe,ve]),d.useMemo(()=>Je.reduce((G,me)=>G+me.unitPriceCents*me.count,0),[Je]),(Xr=Je[0])!=null&&Xr.currency;const Ct=d.useCallback((G,me)=>{He(te=>te.map(De=>De.id===G?{...De,...me}:De))},[]),Ft=d.useCallback((G,me)=>{const te=g.find(De=>De.id===me);te&&He(De=>De.map(je=>{if(je.id!==G)return je;const $e=te.default_duration_minutes??60;return{...je,activityId:me,activityName:te.name,durationMinutes:$e,endTime:si(je.startTime,$e),totalCents:0,currency:p}}))},[g,p]),Ht=d.useCallback((G,me)=>{He(te=>te.map(De=>De.id!==G?De:{...De,startTime:me,endTime:si(me,De.durationMinutes)}))},[]),zn=d.useCallback((G,me)=>{He(te=>te.map(De=>{if(De.id!==G)return De;const je=De.endDate===De.date?me:De.endDate;return{...De,date:me,endDate:je}}))},[]),na=G=>{He(me=>me.filter(te=>te.id!==G)),yt===G&&wt(null)},aa=G=>G.totalCents,ft=u.find(G=>G.id===M),et=m.find(G=>G.id===I),ia=!!E.trim(),Ga=d.useCallback(G=>{G.preventDefault(),tt(!1);const me=Array.from(G.dataTransfer.files);ie(te=>[...te,...me.map(De=>({file:De,id:`file-${Date.now()}-${Math.random()}`}))])},[]),ra=d.useCallback(G=>{const me=Array.from(G.target.files||[]);ie(te=>[...te,...me.map(De=>({file:De,id:`file-${Date.now()}-${Math.random()}`}))]),k.current&&(k.current.value="")},[]),$a=d.useCallback(G=>{ie(me=>me.filter(te=>te.id!==G))},[]),Ya=async G=>{if(!y||re.length===0)return;const me=re.map(async({file:te})=>{const De=Js(te,{allowed:yk,maxBytes:kk});if(De){console.error("Skipped invalid attachment:",te.name,De);return}const je=`${y}/${G}/${Date.now()}-${te.name}`,{error:$e}=await T.storage.from("sale-attachments").upload(je,te,{contentType:te.type});if($e){console.error("Upload failed:",$e);return}await T.from("sale_attachments").insert({company_id:y,sale_id:G,file_name:te.name,file_size:te.size,mime_type:te.type||"application/octet-stream",storage_path:je})});await Promise.all(me)}
536,Fi=(G,me,te,De,je)=>{if(!G){const Vi=new Date;return{start_at:Vi.toISOString(),end_at:Ol(Vi,je).toISOString()}}const[$e,_t]=te.split(":").map(Number),_e=pa(G);_e.setHours($e,_t,0,0);const[Et,xt]=De.split(":").map(Number),sa=pa(me||G);return sa.setHours(Et,xt,0,0),{start_at:_e.toISOString(),end_at:sa.toISOString()}},Oi=async()=>{if(!D.trim()){qe.error(c.analyzeEmpty);return}if(y){R(!0);try{const{data:G,error:me}=await T.functions.invoke("analyze-inquiry",{body:{text:D.trim(),company_id:y}});if(me)throw me;if(!(G!=null&&G.ok)||!(G!=null&&G.data))throw new Error("No data");const te=G.data;if(te.title&&L(te.title),te.notes&&X(te.notes),te.person_count&&Ke(te.person_count),te.customer_id&&j(te.customer_id),te.contact_id&&V(te.contact_id),l.invalidateQueries({queryKey:["customers",y]}),l.invalidateQueries({queryKey:["contacts",y]}),te.activities&&te.activities.length>0){const De=te.activities.map(je=>{const $e=je.activity_id?g.find(sa=>sa.id===je.activity_id):null,_t=($e==null?void 0:$e.default_duration_minutes)??(je.duration_hours?je.duration_hours*60:60),_e=je.start_time||"10:00",Et=si(_e,_t),xt=je.date||"";return{id:`item-${++qc}`,activityId:je.activity_id||"",activityName:($e==null?void 0:$e.name)||je.activity_name||c.activity,date:xt,endDate:xt,startTime:_e,endTime:Et,durationMinutes:_t,totalCents:0,currency:p}});He(De)}P(!1),qe.success(c.analyzeStep+" â")}catch(G){console.error("Analyze error:",G),qe.error(c.analyzeFailed),P(!1)}finally{R(!1)}}},Bi=d.useCallback(G=>{a&&w.mutate({id:a.id,status:G,customer_name:a.customer_name,items:a.sale_items.map(me=>({activity_id:me.activity_id,quantity:me.quantity||1,start_at:me.start_at,end_at:me.end_at,participants:null,line_total_cents:me.line_total_cents,currency:me.currency}))})},[a,w]),qi=()=>{if(!E.trim())return;const G=(ft==null?void 0:ft.name)||(et==null?void 0:et.display_name)||(a==null?void 0:a.customer_name)||E.trim(),me=Ze.map(te=>{const{start_at:De,end_at:je}=Fi(te.date,te.endDate,te.startTime,te.endTime,te.durationMinutes);return{activity_id:te.activityId,quantity:1,start_at:De,end_at:je,participants:null,line_total_cents:te.totalCents||null,currency:te.currency||null,note:te.note||null}});if(Fe>0){const te=new Date;me.push({activity_id:null,quantity:Ve||1,start_at:te.toISOString(),end_at:Ol(te,60).toISOString(),participants:null,line_total_cents:Fe,currency:p||null,note:null})}Mn(),S&&a?w.mutateAsync({id:a.id,customer_name:G,customer_email:(ft==null?void 0:ft.email)||(et==null?void 0:et.primary_email)||a.customer_email||void 0,customer_phone:(ft==null?void 0:ft.phone)||(et==null?void 0:et.primary_phone)||a.customer_phone||void 0,customer_id:(ft==null?void 0:ft.id)||a.customer_id||void 0,contact_id:(et==null?void 0:et.id)||void 0,contact_name:(et==null?void 0:et.display_name)||void 0,status:a.status,description:E.trim(),notes:Y||void 0,person_count:Ve,assigned_to_member_id:be||null,day_notes:Re,program_summary:_||null,program_start_date:W||null,program_end_date:K||null,items:me}).then(()=>Ya(a.id)).catch(()=>qe.error(r.common.saveFailed)):v.mutateAsync({customer_name:G,customer_email:(ft==null?void 0:ft.email)||(et==null?void 0:et.primary_email)||void 0,customer_phone:(ft==null?void 0:ft.phone)||(et==null?void 0:et.primary_phone)||void 0,customer_id:(ft==null?void 0:ft.id)||void 0,contact_id:(et==null?void 0:et.id)||void 0,contact_name:(et==null?void 0:et.display_name)||void 0,status:"lead",description:E.trim(),notes:Y||void 0,person_count:Ve,assigned_to_member_id:be||null,day_notes:Re,program_summary:_||null,program_start_date:W||null,program_end_date:K||null,items:me}).then(async te=>{te!=null&&te.id&&(await Ya(te.id),i!=null&&i.emailId&&(await T.from("inbound_emails").update({converted_sale_id:te.id}).eq("id",i.emailId),l.invalidateQueries({queryKey:["inbound-emails",y]}),l.invalidateQueries({queryKey:["unread-inbox-count",y]})))}).catch(()=>qe.error(r.common.saveFailed))},Mn=()=>{n(!1),setTimeout(()=>{A("overview"),P(!1),z(""),L(""),j(""),V(""),X(""),N(""),$(""),H(""),ie([]),ze(""),Le(0),Ke(0),bt(""),We(""),Q(""),ne("10:00"),Ye("11:00"),Oe([]),Ce(!1),Ne(0),He([]),wt(null)},300)},In=Ze.reduce((G,me)=>G+aa(me),0)+Fe,Zr=!S&&!q?t.jsxs(Be,{variant:"ghost",size:"sm",className:"shrink-0 text-primary gap-1.5",onClick:()=>P(!0),children:[t.jsx(gn,{className:"w-3.5 h-3.5"}),c.analyzeStep]}):void 0,oa=t.jsx(tn,{onCancel:Mn,onSave:qi,onDelete:S&&a?()=>{window.confirm(c.deleteConfirm)&&(Mn(),x.mutateAsync(a.id).catch(()=>qe.error(r.common.saveFailed)))}:void 0,saveLabel:S?r.common.save:c.createLead,cancelLabel:r.common.cancel,disabled:!ia});return t.jsxs(t.Fragment,{children:[t.jsx(Tt,{open:e,onOpenChange:G=>{G||Mn()},title:S?E||c.editSale:c.newLead,size:"2xl",footer:oa,headerActions:Zr,children:t.jsxs("div",{className:"-mx-6 -my-4 flex flex-col min-h-0",style:{height:"calc(85vh - 140px)"},children:[t.jsx(en,{children:q&&t.jsx(rt.div,{initial:{height:0,opacity:0}
536,animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.15},className:"overflow-hidden shrink-0",children:t.jsxs("div",{className:"px-6 py-4 space-y-3",style:{borderBottom:"1px solid hsl(var(--dialog-separator))"},children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(gn,{className:"w-4 h-4 text-primary"}),t.jsx("span",{className:"text-sm text-muted-foreground",children:c.analyzeHint})]}),t.jsx("textarea",{value:D,onChange:G=>z(G.target.value),placeholder:c.analyzePlaceholder,className:"w-full resize-none text-[13px] py-3 px-3 rounded-xl bg-muted/50 border border-border/40 placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary/30",style:{minHeight:"120px"},disabled:F}),t.jsxs("div",{className:"flex justify-end gap-2",children:[t.jsx(Be,{variant:"ghost",size:"sm",onClick:()=>P(!1),children:r.common.cancel}),t.jsx(Be,{size:"sm",onClick:Oi,disabled:!D.trim()||F,children:F?t.jsxs(t.Fragment,{children:[t.jsx(kt,{className:"w-4 h-4 mr-1 animate-spin"}),c.analyzing]}):t.jsxs(t.Fragment,{children:[t.jsx(gn,{className:"w-4 h-4 mr-1"}),c.analyzeStep]})})]})]})})}),t.jsx("div",{className:"flex-1 min-h-0 flex flex-col",children:t.jsxs(Qr,{value:C,onValueChange:A,className:"flex-1 min-h-0 flex flex-col",children:[t.jsx("div",{className:"px-6 shrink-0",children:t.jsxs(Jr,{variant:"underline",children:[t.jsx(wn,{value:"overview",variant:"underline",children:c.overview}),t.jsxs(wn,{value:"activities",variant:"underline",children:[c.customerProgram,Ze.length>0&&t.jsxs("span",{className:"ml-1.5 text-xs text-muted-foreground",children:["(",Ze.length,")"]})]})]})}),t.jsx(Sn,{value:"overview",className:"flex-1 min-h-0 overflow-y-auto",children:t.jsxs("div",{className:"px-6 py-5 space-y-4",children:[t.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.customerSingular}),t.jsx(kn,{options:le,value:M,onChange:j,placeholder:r.customers.selectCustomer,noneLabel:r.customers.noCustomer,onCreateNew:()=>oe(!0),createNewLabel:r.customers.newCustomer})]}),t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.contactSingular}),t.jsx(kn,{options:ue,value:I,onChange:V,placeholder:c.selectContact,noneLabel:c.noContact,onCreateNew:()=>Z(!0),createNewLabel:r.contacts.newContact})]})]}),S&&a&&t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.status}),t.jsxs(Bt,{value:a.status,onValueChange:G=>Bi(G),children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{})}),t.jsx(Lt,{children:[...e1,"closed_lost"].map(G=>t.jsx(mt,{value:G,children:s(G)},G))})]})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.programStartDate}),t.jsx(va,{value:W,onChange:$})]}),t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.programEndDate}),t.jsx(va,{value:K,onChange:H})]})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.numberOfPersons}),t.jsx(ge,{type:"number",value:Ve||"",onChange:G=>Ke(Math.max(0,parseInt(G.target.value)||0)),className:"sm-input",placeholder:"0",min:0})]}),t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.priceEstimate}),t.jsx(ge,{type:"number",value:Fe/100||"",onChange:G=>Le(Math.round(Number(G.target.value)*100)),className:"sm-input",placeholder:c.directPricePlaceholder})]})]}),t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.responsible}),t.jsx(kn,{options:ye,value:be,onChange:ze,placeholder:c.selectResponsible,noneLabel:c.noResponsible})]}),t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.noteSingular}),t.jsxs("div",{className:B("sm-input flex flex-col !h-auto !p-0 transition-colors relative overflow-hidden",St&&"ring-2 ring-primary/40"),onDragOver:G=>{G.preventDefault(),tt(!0)},onDragLeave:()=>tt(!1),onDrop:Ga,children:[St&&t.jsx("div",{className:"absolute inset-0 z-20 flex items-center justify-center rounded-xl border-2 border-dashed border-primary/40 bg-accent/20 pointer-events-none",children:t.jsx("span",{className:"text-xs font-medium text-primary/70",children:c.dropFilesHere})}),t.jsx("textarea",{value:Y,onChange:G=>X(G.target.value),placeholder:c.notesPlaceholder,className:"w-full resize-none text-[13px] py-3 px-3 bg-transparent text-foreground placeholder:text-muted-foreground focus-visible:outline-none",style:{minHeight:"120px"}}),re.length>0&&t.jsx("div",{className:"flex flex-wrap gap-1.5 px-3 pb-1.5",children:re.map(G=>t.jsxs("div",{className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-muted/60 text-xs text-muted-foreground group max-w-[180px]",children:[t.jsx(eh,{className:"h-3 w-3 shrink-0"}),t.jsx("span",{className:"truncate",children:G.file.name}),t.jsx("button",{type:"button",onClick:me=>{me.stopPropagation(),$a(G.id)},className:"ml-auto shrink-0 opacity-0 group-hover:opacity-100 transition-opacity p-0.5 rounded hover:bg-accent",children:t.jsx(Mt,{className:"h-3 w-3"})})]},G.id))}),t.jsx("div",{className:"flex items-center justify-between px-1.5 pb-1.5 shrink-0",children:t.jsx("div",{className:"flex items-center gap-0.5",children:t.jsxs("div",{className:"relative",children:[t.jsx(Be,{size:"icon",variant:"ghost",className:"h-8 w-8 shrink-0 text-muted-foreground hover:text-foreground transition-colors",onClick:()=>{var G;return(G=k.current)==null?void 0:G.click()},type:"button",children:t.jsx(au,{className:"h-4 w-4"})}),re.length>0&&t.jsx("span",{className:"absolute -top-1 -right-1 h-4 min-w-[16px] px-1 rounded-full bg-primary text-primary-foreground text-[9px] font-bold flex items-center justify-center",children:re.length})]})})}),t.jsx("input",{ref:k,type:"file",multiple:!0,className:"hidden",onChange:ra})]})]}),In>0&&t.jsxs("div",{className:"flex items-center justify-between rounded-xl p-3",style:{background:"hsl(var(--surface-card-base))",border:"1px solid hsl(var(--border-card))"},children:[t.jsx("span",{className:"text-sm font-medium text-foreground",children:c.totalAmount}),t.jsx("span",{className:"text-base font-bold tabular-nums text-foreground",children:wa(In,((Qa=Ze[0])==null?void 0:Qa.currency)||p,h)})]})]})}),t.jsx(Sn,{value:"activities",className:"flex-1 min-h-0 overflow-y-auto",children:t.jsxs("div",{className:"px-6 py-5 space-y-4",children:[t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.leadTitle}),t.jsx(ge,{value:E,onChange:G=>L(G.target.value),placeholder:c.leadTitlePlaceholder,className:"sm-input",required:!0})]}),t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.programSummary}
536),t.jsx("textarea",{value:_,onChange:G=>N(G.target.value),placeholder:c.programSummaryPlaceholder,className:"sm-input w-full resize-none !h-auto text-foreground placeholder:text-muted-foreground",style:{minHeight:"70px",paddingTop:10,paddingBottom:10}})]}),Ze.length>0&&(()=>{var De;const G=[...Ze].sort((je,$e)=>(je.date||"").localeCompare($e.date||"")),me=[];for(const je of G){const $e=je.date||"",_t=me[me.length-1];_t&&_t.date===$e?_t.items.push(je):me.push({date:$e,items:[je]})}const te=(De=me[0])!=null&&De.date?pa(me[0].date):null;return t.jsx("div",{className:"space-y-4",children:me.map(je=>{const $e=te&&je.date?mn(pa(je.date),te)+1:null,_t=je.date?At(pa(je.date),"d. MMMM yy",{locale:vr(o)}):"";return t.jsxs("div",{className:"space-y-2",children:[je.date&&t.jsxs("div",{className:"space-y-1",children:[t.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:$e!=null?`${c.programDay} ${$e} â ${_t}`:_t}),t.jsx("input",{type:"text",value:Re[je.date]||"",onChange:_e=>Xe(Et=>({...Et,[je.date]:_e.target.value})),placeholder:c.dayNotePlaceholder,className:"sm-input w-full text-[12px] h-7"})]}),je.items.map(_e=>{const Et=yt===_e.id;return t.jsxs("div",{className:B("rounded-xl transition-colors",Et?"ring-1 ring-primary/30":""),style:{background:"hsl(var(--surface-card-base))",border:"1px solid hsl(var(--border-card))"},children:[t.jsxs("div",{className:"flex items-start gap-3 p-3",children:[t.jsx("button",{type:"button",onClick:()=>wt(Et?null:_e.id),className:"mt-0.5 p-0.5 rounded hover:bg-accent text-muted-foreground hover:text-foreground transition-colors shrink-0",children:Et?t.jsx(Pr,{className:"w-4 h-4"}):t.jsx(hn,{className:"w-4 h-4"})}),t.jsxs("div",{className:"flex-1 min-w-0 space-y-1 cursor-pointer",onClick:()=>wt(Et?null:_e.id),children:[t.jsx("p",{className:"text-sm font-semibold truncate text-foreground",children:_e.activityName}),t.jsx("div",{className:"flex items-center gap-3 text-sm text-muted-foreground",children:_e.startTime&&_e.endTime&&t.jsxs("span",{children:[_e.startTime,"â",_e.endTime]})}),_e.note&&!Et&&t.jsx("p",{className:"text-xs text-muted-foreground line-clamp-1",children:_e.note})]}),t.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[aa(_e)>0&&t.jsx("p",{className:"text-lg font-extrabold tabular-nums tracking-tight text-foreground",children:wa(aa(_e),_e.currency,h)}),t.jsx("button",{type:"button",onClick:xt=>{xt.stopPropagation(),na(_e.id)},className:"p-1.5 rounded hover:bg-destructive/10 text-muted-foreground hover:text-destructive transition-colors",children:t.jsx(La,{className:"w-4 h-4"})})]})]}),t.jsx(en,{children:Et&&t.jsx(rt.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.15},className:"overflow-hidden",children:t.jsxs("div",{className:"px-3 pb-3 space-y-4 pt-3",style:{borderTop:"1px solid hsl(var(--dialog-separator))"},children:[t.jsx(Te,{title:c.activity,children:t.jsx(kn,{options:Me,value:_e.activityId,onChange:xt=>Ft(_e.id,xt),placeholder:c.selectActivity})}),t.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.startDate}),t.jsx(va,{value:_e.date,onChange:xt=>zn(_e.id,xt)})]}),t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.startTime}),t.jsx(yr,{value:_e.startTime,onChange:xt=>Ht(_e.id,xt)})]})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.endDate}),t.jsx(va,{value:_e.endDate,onChange:xt=>Ct(_e.id,{endDate:xt})})]}),t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.endTime}),t.jsx(yr,{value:_e.endTime,onChange:xt=>Ct(_e.id,{endTime:xt})})]})]}),t.jsx(Te,{title:c.directPrice,children:t.jsx(ge,{type:"number",value:_e.totalCents/100||"",onChange:xt=>Ct(_e.id,{totalCents:Math.round(Number(xt.target.value)*100)}),className:"sm-input",placeholder:c.directPricePlaceholder})}),t.jsxs("div",{children:[t.jsx("label",{className:"sm-prop-label mb-1 block",children:c.activityNote}),t.jsx("textarea",{value:_e.note,onChange:xt=>Ct(_e.id,{note:xt.target.value}),placeholder:c.activityNotePlaceholder,className:"sm-input w-full resize-none !h-auto text-foreground placeholder:text-muted-foreground",style:{minHeight:"60px"}})]})]})})})]},_e.id)})]},je.date)})})})(),t.jsx("div",{className:"rounded-xl border border-dashed border-border p-4",children:t.jsx(Te,{title:c.addActivity,children:t.jsx(kn,{options:Me,value:"",onChange:nt,placeholder:c.selectActivity})})}),In>0&&t.jsxs("div",{className:"flex items-center justify-between rounded-xl p-3",style:{background:"hsl(var(--surface-card-base))",border:"1px solid hsl(var(--border-card))"},children:[t.jsx("span",{className:"text-sm font-medium text-foreground",children:c.totalAmount}),t.jsx("span",{className:"text-base font-bold tabular-nums text-foreground",children:wa(In,((Ja=Ze[0])==null?void 0:Ja.currency)||p,h)})]})]})})]})})]})}),t.jsx(Dp,{open:Se,onOpenChange:oe,onCreated:G=>j(G)}),t.jsx(og,{open:J,onOpenChange:Z,contact:null,presetCustomerId:M||void 0,onSuccess:()=>{}})]})}const cg=["lead","qualified","proposal","closed_won"];function b1(e){const{currentMembership:n}=he(),a=n==null?void 0:n.companyId,i=d.useMemo(()=>{const r=new Set;for(const o of e)for(const l of o.sale_items)l.event_id&&r.add(l.event_id);return[...r]},[e]);return Ee({queryKey:["sale-events",a,i],queryFn:async()=>
536{if(!a||i.length===0)return{};const{data:r,error:o}=await T.from("events").select("id, name, start_at, operational_status, cancelled").eq("company_id",a).in("id",i);if(o)throw o;const l={};for(const c of r||[])l[c.id]=c;const s={};for(const c of e){const u=[];for(const m of c.sale_items)m.event_id&&l[m.event_id]&&u.push(l[m.event_id]);u.length>0&&(s[c.id]=u)}return s},enabled:!!a&&i.length>0,staleTime:3e4})}function x1(e){const{currentMembership:n}=he(),a=n==null?void 0:n.companyId,i=d.useMemo(()=>e.map(r=>r.id),[e]);return Ee({queryKey:["sale-attachment-flags",a,i],queryFn:async()=>{if(!a||i.length===0)return{};const{data:r,error:o}=await T.from("sale_attachments").select("sale_id").eq("company_id",a).in("sale_id",i);if(o)throw o;const l={};for(const s of r||[])l[s.sale_id]=!0;return l},enabled:!!a&&i.length>0,staleTime:3e4})}const k1={lead:{gradient:"from-[hsl(220_14%_75%/0.55)] to-[hsl(220_14%_80%/0.30)]",titleColor:"text-foreground",border:"hsl(var(--muted-foreground) / 0.35)"},qualified:{gradient:"from-primary/25 to-primary/10",titleColor:"text-primary",border:"hsl(var(--primary))"},proposal:{gradient:"from-[hsl(280_70%_55%/0.28)] to-[hsl(280_70%_55%/0.10)]",titleColor:"text-[hsl(280_70%_45%)] dark:text-[hsl(280_70%_75%)]",border:"hsl(292, 84%, 61%)"},closed_won:{gradient:"from-[hsl(var(--status-ready)/0.32)] to-[hsl(var(--status-ready)/0.12)]",titleColor:"text-[hsl(var(--status-ready))]",border:"hsl(var(--status-ready))"},closed_lost:{gradient:"from-[hsl(220_10%_65%/0.40)] to-[hsl(220_10%_70%/0.20)]",titleColor:"text-muted-foreground",border:"hsl(var(--muted-foreground) / 0.25)"}},w1={lead:"colDescLead",qualified:"colDescQualified",proposal:"colDescProposal",closed_won:"colDescClosedWon",closed_lost:""};function S1(){const{t:e}=ke(),{data:n=[],isLoading:a}=v1(),{data:i=[]}=Ri();Ba();const{create:r,updateStatus:o}
536=lg(),l=e.sales,s=d.useMemo(()=>new Map(i.map(x=>[x.id,x.name])),[i]),[c,u]=d.useState(!1),[m,g]=d.useState(null),f=Nl(),p=d.useMemo(()=>n.filter(x=>x.status!=="closed_lost"),[n]),h=d.useMemo(()=>cg.reduce((x,S)=>(x[S]=p.filter(k=>k.status===S).sort((k,C)=>new Date(C.updated_at).getTime()-new Date(k.updated_at).getTime()),x),{}),[p]),b=x=>{const S=of(new Date,new Date(x));return S===0?l.today:S===1?l.yesterday:`${S}${l.daysAgo}`},y=d.useCallback(x=>{const S=n.find(k=>k.id===x);S&&g(S)},[n]),[v,w]=d.useState(0);return a?t.jsx("div",{className:"flex items-center justify-center h-64",children:t.jsx(kt,{className:"w-6 h-6 animate-spin text-muted-foreground"})}):t.jsxs("div",{className:"flex h-full overflow-hidden",children:[t.jsxs("div",{className:"flex flex-col overflow-hidden w-full px-6 pb-6",children:[t.jsx(Gr,{helpKey:"sales",toggleCount:v,onClose:()=>w(x=>x%2===1?x+1:x),children:t.jsx(Sj,{})}),t.jsxs(Lr,{children:[t.jsx($r,{onClick:()=>w(x=>x+1),active:v%2===1}),t.jsx(Be,{onClick:()=>u(!0),size:"sm",className:"h-9 px-3.5 rounded-lg",children:l.newLead})]}),t.jsx("div",{className:"flex-1 min-h-0 overflow-auto",children:p.length===0?t.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-center",children:[t.jsx("div",{className:"w-16 h-16 rounded-2xl bg-muted flex items-center justify-center mb-4",children:t.jsx(Wn,{className:"w-7 h-7 text-muted-foreground"})}),t.jsx("p",{className:"text-muted-foreground text-sm",children:l.noSalesYet}),t.jsx(Be,{variant:"outline",size:"sm",className:"mt-4",onClick:()=>u(!0),children:l.newLead})]}):t.jsx(C1,{salesByStatus:h,getStatusLabel:f,getRelativeTime:b,onSelect:y,onStatusChange:(x,S)=>o.mutate({id:x,status:S}),st:l,activityMap:s})})]}),t.jsx(Vc,{open:c,onOpenChange:u}),t.jsx(Vc,{open:!!m,onOpenChange:x=>{x||g(null)},editSale:m})]})}function C1({salesByStatus:e,getStatusLabel:n,getRelativeTime:a,onSelect:i,onStatusChange:r,st:o,activityMap:l}){const[s,c]=d.useState(null),u=d.useMemo(()=>Object.values(e).flat(),[e]),{data:m={}}=b1(u),{data:g={}}=x1(u),f=d.useCallback((v,w)=>{v.preventDefault(),v.dataTransfer.dropEffect="move",c(w)},[]),p=d.useCallback(()=>{c(null)},[]),h=d.useCallback((v,w)=>{v.preventDefault(),c(null);const x=v.dataTransfer.getData("text/plain"),S=v.dataTransfer.getData("application/x-status");x&&S!==w&&r(x,w)},[r]),{defaultCurrency:b,primaryLanguage:y}=Al();return t.jsx("div",{className:"flex h-full pb-2 overflow-x-auto gap-6",children:cg.map(v=>{const w=e[v],x=s===v,S=k1[v],k=w.reduce((C,A)=>C+A.sale_items.reduce((q,P)=>q+(P.line_total_cents??0),0),0);return t.jsxs("div",{className:B("flex flex-col flex-1 min-w-[260px] transition-colors duration-[120ms]",x&&"ring-1 ring-primary/20 rounded-xl"),onDragOver:C=>f(C,v),onDragLeave:p,onDrop:C=>h(C,v),children:[t.jsx("div",{className:B("sticky top-0 z-10 bg-gradient-to-br rounded-xl p-4 mb-3 flex flex-col justify-center",S.gradient),style:{height:72},children:t.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[t.jsxs("div",{className:"min-w-0",children:[t.jsx("h3",{className:B("font-semibold tracking-tight leading-tight text-[16px]",S.titleColor),children:n(v)}),t.jsx("p",{className:"text-muted-foreground leading-tight mt-0.5 truncate text-[13px]",children:o[w1[v]]||""})]}),t.jsx("p",{className:"font-semibold tabular-nums whitespace-nowrap shrink-0 text-[22px] text-foreground",children:wa(k,b,y)})]})}),t.jsx("div",{className:"flex-1 overflow-y-auto px-0.5 pb-2 flex flex-col gap-3",children:t.jsx(en,{children:w.length===0?t.jsx("div",{className:B("flex-1 flex items-center justify-center border border-dashed text-muted-foreground transition-colors rounded-xl text-[13px]",x?"border-primary/40 bg-primary/5":"border-border/40"),style:{minHeight:80},children:o[`empty${v.charAt(0).toUpperCase()}${v.slice(1)}`]||o.emptyPipeline}):w.map(C=>t.jsx(rt.div,{layout:!0,initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0,scale:.95},transition:{duration:.15},children:t.jsx(A1,{sale:C,onClick:()=>i(C.id),st:o,activityMap:l,linkedEvents:m[C.id]||[],accentBorder:S.border,hasAttachments:!!g[C.id],defaultCurrency:b,primaryLanguage:y})},C.id))})})]},v)})})}function N1(e){return d.useMemo(()=>{var c;const n=e.sale_items,a=n.reduce((u,m)=>u+(m.line_total_cents??0),0),i=n.some(u=>u.line_total_cents!=null&&u.line_total_cents>0),r=((c=n.find(u=>u.currency))==null?void 0:c.currency)??null,o=e.person_count||0,l=n.length>0?n.reduce((u,m)=>m.start_at<u?m.start_at:u,n[0].start_at):null,s=[...new Set(n.map(u=>
536u.activity_id).filter(Boolean))];return{totalCents:a,hasAmount:i,currency:r,totalParticipants:o,itemCount:n.length,firstDate:l,activityIds:s}},[e.sale_items,e.person_count])}const A1=d.memo(function({sale:n,onClick:a,st:i,activityMap:r,linkedEvents:o,accentBorder:l,hasAttachments:s,defaultCurrency:c,primaryLanguage:u}){const[m,g]=d.useState(!1),{totalCents:f,hasAmount:p,currency:h,totalParticipants:b,firstDate:y}=N1(n),v=C=>{C.dataTransfer.setData("text/plain",n.id),C.dataTransfer.setData("application/x-status",n.status),C.dataTransfer.effectAllowed="move",g(!0)},w=()=>g(!1),x=y?At(new Date(y),"d MMM"):null,S=h||c,k=d.useMemo(()=>n.sale_items.map(C=>C.activity_id?r.get(C.activity_id):null).filter(Boolean),[n.sale_items,r]);return t.jsxs("button",{draggable:!0,onDragStart:v,onDragEnd:w,onClick:a,className:B("w-full text-left cursor-grab active:cursor-grabbing group overflow-hidden transition-all duration-[120ms] ease-out rounded-xl","hover:brightness-110",m&&"opacity-40 scale-[1.02] shadow-lg"),style:{background:"linear-gradient(180deg, hsl(var(--surface-card-highlight-top)), hsl(var(--surface-card-highlight-bottom))), hsl(var(--surface-card-base))",border:"1px solid hsl(var(--border-card))",borderLeft:`3px solid ${l}`,boxShadow:"inset 0 1px 0 var(--edge-highlight-soft)"},children:[t.jsxs("div",{className:"px-3 pt-2.5 pb-2",children:[t.jsx("p",{className:B("font-semibold leading-tight text-[14px]",n.description||n.customer_name?"text-foreground":"text-muted-foreground italic"),children:n.description||n.customer_name||i.leadTitlePlaceholder}),n.customer_name&&n.description&&t.jsx("p",{className:"text-[13px] text-muted-foreground truncate mt-0.5",children:n.customer_name}),n.contact_name&&n.contact_name!==n.customer_name&&t.jsx("p",{className:"text-[13px] text-muted-foreground truncate mt-0.5",children:n.contact_name}),k.length>0&&t.jsxs("div",{className:"flex flex-wrap gap-1 mt-1.5",children:[k.slice(0,2).map((C,A)=>t.jsx("span",{className:"text-[11px] px-1.5 py-0.5 rounded-md bg-muted text-muted-foreground truncate max-w-[140px]",children:C},A)),k.length>2&&t.jsxs("span",{className:"text-[11px] px-1.5 py-0.5 rounded-md bg-muted text-muted-foreground",children:["+",k.length-2]})]}),n.notes&&t.jsx("p",{className:"text-[12px] text-muted-foreground/70 italic break-words mt-1 overflow-hidden",style:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical"},children:n.notes})]}),t.jsxs("div",{className:"flex items-center justify-between gap-2 px-3 pb-2 pt-0.5",children:[t.jsxs("div",{className:"flex items-center flex-wrap gap-x-2.5 gap-y-0.5 text-muted-foreground text-[13px]",children:[n.sale_items.length>1&&t.jsxs("span",{className:"inline-flex items-center gap-0.5",children:[t.jsx(ui,{className:"w-3.5 h-3.5"}),n.sale_items.length]}),b>0&&t.jsxs("span",{className:"inline-flex items-center gap-0.5",children:[t.jsx(_r,{className:"w-3.5 h-3.5"}),b]}),x&&t.jsxs("span",{className:"inline-flex items-center gap-0.5",children:[t.jsx(lr,{className:"w-3.5 h-3.5"}),x]}),s&&t.jsx(au,{className:"w-3.5 h-3.5"})]}),p&&t.jsx("span",{className:"font-bold tabular-nums tracking-tight text-foreground text-[18px] leading-tight shrink-0",children:wa(f,S,u)})]}),n.public_token&&t.jsx("div",{className:"px-3 pb-2 pt-1",children:t.jsxs("button",{type:"button",className:"w-full flex items-center justify-center gap-1.5 px-3 py-1.5 text-[12px] font-medium rounded-md bg-primary/10 text-primary hover:bg-primary/20 transition-colors",onClick:C=>{C.stopPropagation(),window.open(`/public/itinerary/${n.public_token}`,"_blank")},children:[t.jsx("span",{children:i.shareItinerary}),t.jsx(Xf,{className:"w-3.5 h-3.5 shrink-0"})]})}),o.length>0&&t.jsx("div",{className:"space-y-0.5 px-3 pb-2 pt-0.5",children:o.map(C=>{const A=C.operational_status==="tentative",q=C.cancelled||C.operational_status==="cancelled",P=q?"status-cancelled":A?"status-tentative":"status-ready",D=C.start_at?At(new Date(C.start_at),"HH:mm"):"";return t.jsxs("div",{className:B("flex items-center gap-1 rounded text-[13px] font-medium h-[22px] px-1.5",P),children:[A&&t.jsx(Ia,{className:"h-2.5 w-2.5 text-muted-foreground shrink-0"}),q&&t.jsx(Hn,{className:"h-2.5 w-2.5 text-muted-foreground shrink-0"}),t.jsxs("span",{className:B("truncate flex-1 text-left",q&&"line-through text-muted-foreground"),children:[t.jsx("span",{className:"text-[11px] font-normal text-muted-foreground mr-1",children:D}),C.name]})]},C.id)})})]})});function P1(){var a;const{t:e}=ke(),n=(a=e.help2)==null?void 0:a.customers;return n?t.jsxs("div",{className:"space-y-2.5",children:[t.jsx("p",{className:"text-[13px] font-semibold text-foreground",children:n.title}),t.jsx("p",{className:"text-[13px] text-muted-foreground leading-relaxed",children:n.intro}),t.jsxs("div",{className:"space-y-2 pt-1",children:[t.jsx(zt,{icon:t.jsx(Dr,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipSearch}),t.jsx(zt,{icon:t.jsx(Cn,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipRegistry}),t.jsx(zt,{icon:t.jsx(Jd,{className:"w-3.5 h-3.5 text-primary shrink-0"}),text:n.tipFinance})]})]}):null}
536function j1({value:e,onChange:n,placeholder:a}){return t.jsxs("div",{className:"sm-search-wrapper",children:[t.jsx(Dr,{className:"sm-search-icon"}),t.jsx(ge,{value:e,onChange:i=>n(i.target.value),placeholder:a,className:"pl-9 focus-visible:ring-inset"})]})}const Ka=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,className:B("rounded-2xl overflow-hidden divide-y divide-[hsl(var(--border-list-row))] gap-0.5 flex flex-col",e),style:{background:"linear-gradient(180deg, hsl(var(--surface-list-highlight-top)), hsl(var(--surface-list-highlight-bottom))), radial-gradient(900px 420px at 20% -10%, hsl(var(--surface-list-radial-highlight)), transparent 60%), hsl(var(--surface-list-base))",border:"1px solid hsl(var(--border-list-container))",boxShadow:"inset 0 1px 0 var(--edge-highlight-medium)"},...n}));Ka.displayName="ListCard";const Wa=d.forwardRef(({className:e,interactive:n=!0,...a},i)=>t.jsx("div",{ref:i,className:B("sm-list-card-item px-5 py-3.5 min-h-[52px] flex flex-col justify-center transition-[background] duration-[120ms] ease-in-out",n&&"cursor-pointer",e),...a}));Wa.displayName="ListCardItem";const Ua=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,className:B("font-semibold text-[15px] text-foreground",e),...n}));Ua.displayName="ListCardTitle";const Ha=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,className:B("text-[14px] text-muted-foreground",e),...n}));Ha.displayName="ListCardDescription";function T1(e){const n=(e==null?void 0:e.replace(/\s/g,""))||"",a=/^\d{9}$/.test(n);return Ee({queryKey:["customer-finance-all",n],queryFn:async()=>{const{data:i,error:r}=await T.functions.invoke("customer-finance-provider",{body:{provider:"NO_REGNSKAP_BRREG",organization_number:n,mode:"all"}});if(r)throw r;if(!(i!=null&&i.ok)){if((i==null?void 0:i.code)==="NOT_FOUND")return[];throw new Error((i==null?void 0:i.message)||"Failed")}return i.data},enabled:a,staleTime:24*60*60*1e3,retry:!1})}const D1={draft:{label:"draft",color:"bg-muted text-muted-foreground",order:0},active:{label:"active",color:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300",order:1},completed:{label:"completed",color:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300",order:2},cancelled:{label:"cancelled",color:"bg-destructive/10 text-destructive",order:3}};function _1({path:e,initials:n}){const a=rg(e);return t.jsxs(zr,{className:"h-8 w-8",children:[a?t.jsx(Mr,{src:a}):null,t.jsx(Ir,{className:"text-xs",children:n})]})}function E1({customerId:e}){const{t:n}=ke(),a=n.contacts,{data:i=[],isLoading:r}=Jj(e),{data:o=[]}=ag(),{addLink:l,removeLink:s}=ig(),[c,u]=d.useState(!1),[m,g]=d.useState(null),[f,p]=d.useState(!1),[h,b]=d.useState(""),y=new Set(i.map(k=>k.contact_id)),v=o.filter(k=>!y.has(k.id)).map(k=>({value:k.id,label:k.display_name})),w=async()=>{h&&(await l.mutateAsync({contact_id:h,customer_id:e}),b(""),p(!1))},x=()=>{g(null),u(!0),p(!1)},S=k=>{const C=o.find(A=>A.id===k.id);C&&(g(C),u(!0))};return t.jsxs("div",{className:"space-y-3",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("h3",{className:"text-sm font-semibold text-foreground",children:a.title}),t.jsx(Be,{variant:"ghost",size:"sm",className:"sm-add-btn",onClick:()=>
536p(!f),children:a.addContact})]}),f&&t.jsxs("div",{className:"space-y-2 p-3 rounded-lg border border-border bg-muted/30",children:[t.jsx(kn,{options:v,value:h,onChange:b,placeholder:a.selectContact}),t.jsxs("div",{className:"flex gap-2",children:[t.jsxs(Be,{size:"sm",onClick:w,disabled:!h||l.isPending,children:[l.isPending&&t.jsx(kt,{className:"h-3 w-3 mr-1 animate-spin"}),a.linkToCompany]}),t.jsx(Be,{size:"sm",variant:"outline",onClick:x,children:a.newContact})]})]}),r?t.jsx("div",{className:"flex justify-center py-4",children:t.jsx(kt,{className:"h-4 w-4 animate-spin text-muted-foreground"})}):i.length===0?t.jsx("p",{className:"text-sm text-muted-foreground",children:a.noContactsLinked}):t.jsx(Ka,{children:i.map(k=>{const C=k.contact,A=`${C.first_name.charAt(0)}${C.last_name.charAt(0)}`.toUpperCase();return t.jsx(Wa,{className:"cursor-pointer hover:bg-accent/50",onClick:()=>S(C),children:t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(_1,{path:C.photo_url??null,initials:A}),t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx(Ua,{className:"text-sm",children:C.display_name}),t.jsx(Ha,{className:"truncate text-xs",children:[k.role_title,C.primary_email,C.primary_phone].filter(Boolean).join(" · ")})]}),t.jsx("button",{type:"button",onClick:q=>{q.stopPropagation(),s.mutate(k.id)},className:"p-1 rounded hover:bg-destructive/10 text-muted-foreground hover:text-destructive transition-colors",children:t.jsx(Mt,{className:"h-3.5 w-3.5"})})]})},k.id)})}),t.jsx(og,{open:c,onOpenChange:u,contact:m,presetCustomerId:e})]})}const Qn=d.forwardRef(({className:e,selected:n,style:a,...i},r)=>t.jsx("div",{ref:r,className:B("rounded-2xl text-card-foreground overflow-hidden transition-[background] duration-[120ms] ease-in-out","sm-card-surface",n&&"sm-card-selected",e),style:{background:"hsl(var(--surface-card-base))",border:"1px solid hsl(var(--border-card))",...a},...i}));Qn.displayName="Card";const ds=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,className:B("flex flex-col space-y-1.5 p-6",e),...n}));ds.displayName="CardHeader";const us=d.forwardRef(({className:e,...n},a)=>t.jsx("h3",{ref:a,className:B("text-2xl font-semibold leading-none tracking-tight",e),...n}));us.displayName="CardTitle";const R1=d.forwardRef(({className:e,...n},a)=>t.jsx("p",{ref:a,className:B("text-sm text-muted-foreground",e),...n}));R1.displayName="CardDescription";const Da=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,className:B("p-6 pt-0",e),...n}));Da.displayName="CardContent";const z1=d.forwardRef(({className:e,...n},a)=>t.jsx("div",{ref:a,className:B("flex items-center p-6 pt-0",e),...n}));z1.displayName="CardFooter";function M1(e){return e===null?"â":`${(e/1e6).toFixed(1)} MNOK`}function I1(e,n){if(e===null||n===null||n===0)return null;const a=(e-n)/Math.abs(n)*100;return`${a>=0?"+":""}${a.toFixed(1)}%`}function L1({allYears:e}){var s;const{t:n}=ke(),a=n.customers;if(e.length===0)return null;const i=e[0],r=e.length>1?e[1]:null;(s=i.period.to_date)!=null&&s.substring(0,4);const o=[...e].reverse(),l=[{label:a.revenue,value:i.kpis.revenue,prevValue:(r==null?void 0:r.kpis.revenue)??null,dataKey:"revenue"},{label:a.operatingProfit,value:i.kpis.operating_profit,prevValue:(r==null?void 0:r.kpis.operating_profit)??null,dataKey:"operating_profit"},{label:a.totalAssets,value:i.kpis.assets_total,prevValue:(r==null?void 0:r.kpis.assets_total)??null,dataKey:"assets_total"},{label:a.equityLabel,value:i.kpis.equity_total,prevValue:(r==null?void 0:r.kpis.equity_total)??null,dataKey:"equity_total"},{label:a.debtLabel,value:i.kpis.debt_total,prevValue:(r==null?void 0:r.kpis.debt_total)??null,dataKey:"debt_total"},{label:a.netProfit,value:i.kpis.net_profit,prevValue:(r==null?void 0:r.kpis.net_profit)??null,dataKey:"net_profit"}];return t.jsx("div",{className:"grid grid-cols-2 gap-3",children:l.map(c=>{const u=I1(c.value,c.prevValue),m=o.map(g=>({v:g.kpis[c.dataKey]??0}));return t.jsx(Qn,{children:t.jsxs(Da,{className:"p-4 space-y-1",children:[t.jsx("p",{className:"text-xs text-muted-foreground",children:c.label}),t.jsxs("div",{className:"flex items-end justify-between gap-2",children:[t.jsxs("div",{children:[t.jsx("p",{className:"text-xl font-bold",children:M1(c.value)}),t.jsx("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:u&&t.jsx("span",{className:u.startsWith("+")?"text-emerald-500":"text-red-500",children:u})})]}),m.length>1&&t.jsx("div",{className:"w-16 h-8 flex-shrink-0",children:t.jsx(Fo,{width:"100%",height:"100%",children:t.jsxs(Wg,{data:m,children:[t.jsx("defs",{children:t.jsxs("linearGradient",{id:`spark-${c.dataKey}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{offset:"0%",stopColor:"hsl(var(--primary))",stopOpacity:.3}),t.jsx("stop",{offset:"100%",stopColor:"hsl(var(--primary))",stopOpacity:0})]})}),t.jsx(Ug,{type:"monotone",dataKey:"v",stroke:"hsl(var(--primary))",strokeWidth:1.5,fill:`url(#spark-${c.dataKey})`,dot:!1,isAnimationActive:!1})]})})})]})]})},c.dataKey)})})}function F1({allYears:e}){const{t:n}=ke(),a=n.customers;if(e.length<2)return null;const i=[...e].reverse(),r=i.map(l=>{var s;return{year:((s=l.period.to_date)==null?void 0:s.substring(0,4))||"",revenue:l.kpis.revenue?l.kpis.revenue/1e6:null,netProfit:l.kpis.net_profit?l.kpis.net_profit/1e6:null}}),o=i.map(l=>{var s;return{year:((s=l.period.to_date)==null?void 0:s.substring(0,4))||"",equityRatio:l.ratios.equity_ratio}});return t.jsxs("div",{className:"space-y-4",children:[t.jsx("h3",{className:"text-lg font-semibold",children:a.financialDevelopment}),t.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[t.jsxs(Qn,{children:[t.jsx(ds,{className:"pb-2 pt-4 px-4",children:t.jsx(us,{className:"text-sm font-medium",children:a.revenue})}),t.jsx(Da,{className:"px-4 pb-4",children:t.jsx("div",{className:"h-48",children:t.jsx(Fo,{width:"100%",height:"100%",children:t.jsxs(_l,{data:r,children:[t.jsx(El,{strokeDasharray:"3 3",stroke:"hsl(var(--border))"}),t.jsx(Rl,{dataKey:"year",tick:{fontSize:11},stroke:"hsl(var(--muted-foreground))"}),t.jsx(zl,{tick:{fontSize:11},stroke:"hsl(var(--muted-foreground))",tickFormatter:l=>`${l}M`}),t.jsx(Ml,{contentStyle:{backgroundColor:"hsl(var(--card))",border:"1px solid hsl(var(--border))",borderRadius:"var(--radius)",fontSize:12},formatter:l=>[`${l==null?void 0:l.toFixed(1)} MNOK`]}),t.jsx(to,{type:"monotone",dataKey:"revenue",name:a.revenue,stroke:"hsl(var(--primary))",strokeWidth:2,dot:{r:3}}),t.jsx(to,{type:"monotone",dataKey:"netProfit",name:a.netProfit,stroke:"hsl(var(--status-ready))",strokeWidth:2,dot:{r:3}})]})})})})]}),t.jsxs(Qn,{children:[t.jsx(ds,{className:"pb-2 pt-4 px-4",children:t.jsxs(us,{className:"text-sm font-medium",children:[a.equityRatio," (%)"]})}),t.jsx(Da,{className:"px-4 pb-4",children:t.jsx("div",{className:"h-48",children:t.jsx(Fo,{width:"100%",height:"100%",children:t.jsxs(_l,{data:o,children:[t.jsx(El,{strokeDasharray:"3 3",stroke:"hsl(var(--border))"}),t.jsx(Rl,{dataKey:"year",tick:{fontSize:11},stroke:"hsl(var(--muted-foreground))"}),t.jsx(zl,{tick:{fontSize:11},stroke:"hsl(var(--muted-foreground))",unit:"%"}),t.jsx(Ml,{contentStyle:{backgroundColor:"hsl(var(--card))",border:"1px solid hsl(var(--border))",borderRadius:"var(--radius)",fontSize:12},formatter:l=>[`${l==null?void 0:l.toFixed(1)}%`]}),t.jsx(to,{type:"monotone",dataKey:"equityRatio",name:a.equityRatio,stroke:"hsl(var(--primary))",strokeWidth:2,dot:{r:3}})]})})})})]})]})]})}const Ro={unsatisfactory:"hsl(0, 72%, 51%)",weak:"hsl(25, 95%, 53%)",satisfactory:"hsl(48, 96%, 53%)",good:"hsl(142, 71%, 45%)",veryGood:"hsl(142, 76%, 36%)"};function O1({open:e,onOpenChange:n,defaultTab:a,figures:i,allYears:r,customerName:o,orgNumber:l}){const{t:s,language:c}=ke(),u=s.customers,m=o?`${o}${l?` · ${l}`:""}`:void 0,g=m?`${u.kfDialogTitle} â ${m}`:u.kfDialogTitle,f=t.jsx("div",{className:"flex justify-end w-full",children:t.jsx("button",{onClick:()=>n(!1),className:"sm-form-overlay-btn-cancel",type:"button",children:s.common.cancel})});
536return t.jsx(Tt,{open:e,onOpenChange:n,title:g,footer:f,size:"sm",children:t.jsx(B1,{defaultTab:a,figures:i,allYears:r,ct:u,language:c})})}function B1({defaultTab:e,figures:n,allYears:a,ct:i,language:r}){const o={unsatisfactory:i.kfUnsatisfactory,weak:i.kfWeak,satisfactory:i.kfSatisfactory,good:i.kfGood,veryGood:i.kfVeryGood},l=[{key:"liquidity",label:i.kfLiquidityFull,formula:i.kfLiquidityFormula,comment:i.kfLiquidityComment,scales:[{label:i.kfVeryGood,range:"> 2.0",assessment:"veryGood"},{label:i.kfGood,range:"1.5 â 2.0",assessment:"good"},{label:i.kfSatisfactory,range:"1.0 â 1.49",assessment:"satisfactory"},{label:i.kfWeak,range:"0.5 â 0.99",assessment:"weak"},{label:i.kfUnsatisfactory,range:"< 0.5",assessment:"unsatisfactory"}]},{key:"profitability",label:i.kfProfitabilityFull,formula:i.kfProfitabilityFormula,comment:i.kfProfitabilityComment,scales:[{label:i.kfVeryGood,range:"> 15%",assessment:"veryGood"},{label:i.kfGood,range:"10 â 15%",assessment:"good"},{label:i.kfSatisfactory,range:"6 â 9.9%",assessment:"satisfactory"},{label:i.kfWeak,range:"1 â 5.9%",assessment:"weak"},{label:i.kfUnsatisfactory,range:"< 1%",assessment:"unsatisfactory"}]},{key:"equity",label:i.kfEquityFull,formula:i.kfEquityFormula,comment:i.kfEquityComment,scales:[{label:i.kfVeryGood,range:"> 40%",assessment:"veryGood"},{label:i.kfGood,range:"18 â 40%",assessment:"good"},{label:i.kfSatisfactory,range:"10 â 17%",assessment:"satisfactory"},{label:i.kfWeak,range:"3 â 9%",assessment:"weak"},{label:i.kfUnsatisfactory,range:"< 3%",assessment:"unsatisfactory"}]}],s=["liquidity","profitability","equity"],c={liquidity:i.kfLiquidity,profitability:i.kfProfitability,equity:i.kfEquity};return t.jsxs(Qr,{defaultValue:e,children:[t.jsx(Jr,{variant:"pill",className:"w-full",children:s.map(u=>t.jsx(wn,{value:u,variant:"pill",className:"flex-1 text-xs",children:c[u]},u))}),l.map(u=>{var g;const m=n.find(f=>f.key===u.key);return t.jsxs(Sn,{value:u.key,className:"space-y-4 mt-4",children:[(m==null?void 0:m.value)!==null&&(m==null?void 0:m.assessment)!==null&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"text-center space-y-1",children:[t.jsx("span",{className:"text-2xl font-bold",children:u.key==="liquidity"?m.value.toFixed(2):`${m.value.toFixed(1)}%`}),t.jsx("span",{className:"ml-2 text-sm font-semibold px-2 py-0.5 rounded-full",style:{backgroundColor:Ro[m.assessment]+"20",color:Ro[m.assessment]},children:o[m.assessment]})]}),t.jsx(q1,{figureKey:u.key,value:m.value,assessment:m.assessment,kpis:(g=a[0])==null?void 0:g.kpis,language:r})]}),t.jsxs("div",{className:"bg-muted/50 rounded-lg p-3",children:[t.jsx("p",{className:"text-sm text-muted-foreground",children:u.comment}),u.key==="profitability"&&a.length<2&&t.jsx("p",{className:"text-sm text-muted-foreground mt-2 italic",children:i.kfProfitabilityFallbackNote})]}),t.jsxs("div",{children:[t.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-1",children:i.kfFormulaLabel}),t.jsx("div",{className:"bg-muted/50 rounded-lg p-3",children:t.jsx("code",{className:"text-sm",children:u.formula})})]}),t.jsxs("div",{children:[t.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-2",children:i.kfScaleLabel}),t.jsx("div",{className:"space-y-1",children:u.scales.map((f,p)=>t.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[t.jsx("div",{className:"w-3 h-3 rounded-full flex-shrink-0",style:{backgroundColor:Ro[f.assessment]}}),t.jsx("span",{className:"font-medium min-w-[100px]",children:f.label}),t.jsx("span",{className:"text-muted-foreground",children:f.range})]},p))})]})]},u.key)})]},e)}function q1({figureKey:e,value:n,assessment:a,kpis:i,language:r}){const[o,l]=d.useState(null),[s,c]=d.useState(!0);return d.useEffect(()=>{let u=!1;return c(!0),l(null),T.functions.invoke("explain-key-figure",{body:{figureKey:e,value:n,assessment:a,kpis:i,language:r}}).then(({data:m,error:g})=>{u||(g||!(m!=null&&m.ok)?l(null):l(m.explanation),c(!1))}),()=>{u=!0}},[e,n,a,r]),s?t.jsxs("div",{className:"bg-primary/5 rounded-lg p-3 space-y-2",children:[t.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-medium text-primary",children:[t.jsx(gn,{className:"h-3.5 w-3.5"}),t.jsx("span",{children:"Automatisk analyse"})]}),t.jsx(Nn,{className:"h-4 w-full"}),t.jsx(Nn,{className:"h-4 w-3/4"})]}):o?t.jsxs("div",{className:"bg-primary/5 rounded-lg p-3 space-y-1.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-medium text-primary",children:[t.jsx(gn,{className:"h-3.5 w-3.5"}),t.jsx("span",{children:"Automatisk analyse"})]}),t.jsx("p",{className:"text-sm text-foreground leading-relaxed",children:o})]}):null}function V1(e){return e===null?0:e>50?100:e>=35?80:e>=20?60:e>=10?40:e>=0?20:0}function K1(e){return e===null?0:e>15?100:e>=10?80:e>=6?60:e>=1?40:10}
536function W1(e,n){return n===null||n<=0||e===null?0:e<1?100:e<=2?80:e<=3?60:e<=5?40:20}function U1(e,n){return e&&n?100:e||n?60:20}function H1(e){return e>=90?5:e>=75?4:e>=60?3:e>=45?2:1}function G1(e,n){return{5:n.levelElite??"Elite",4:n.levelStrong??"Strong",3:n.levelStable??"Stable",2:n.levelVulnerable??"Vulnerable",1:n.levelCritical??"Critical"}[e]??""}function dg(e,n,a){const{equity_total:i,debt_total:r,assets_total:o,pre_tax_profit:l,financial_costs:s,net_profit:c}=e.kpis,u=o!==null&&o!==0?(i??0)/o*100:null,m=V1(u),g=(n==null?void 0:n.kpis.assets_total)??null,f=g===null,p=o!==null?g!==null?(o+g)/2:o:null;let h=null;l!==null&&p!==null&&p!==0&&(h=(l+(s??0))*100/p);const b=K1(h);let y=null;i!==null&&i>0&&r!==null&&(y=r/i);const v=W1(y,i),w=(i??0)>0,x=(c??0)>0,S=U1(w,x),k=Math.round(.35*m+.3*b+.2*v+.15*S),C=H1(k),A=G1(C,a);return{soliditet:{equityRatio:u,score:m,rawValues:{equity:i,totalAssets:o}},lonnsomhet:{roa:h,score:b,singleYear:f,rawValues:{preTaxProfit:l,financialCosts:s,avgCapital:p}},risiko:{debtToEquity:y,score:v,rawValues:{debt:r,equity:i}},stabilitet:{positiveEquity:w,positiveProfit:x,score:S},totalScore:k,level:C,label:A}}const zo="gold-star-gradient",ms={5:"hsl(43, 96%, 56%)",4:"hsl(142, 71%, 45%)",3:"hsl(82, 60%, 45%)",2:"hsl(25, 95%, 53%)",1:"hsl(0, 72%, 51%)"};function $1({level:e,color:n}){const a=e===5;return t.jsxs("div",{className:"flex items-center justify-center gap-1",children:[a&&t.jsx("svg",{width:"0",height:"0",className:"absolute",children:t.jsx("defs",{children:t.jsxs("linearGradient",{id:zo,x1:"0%",y1:"0%",x2:"100%",y2:"100%",children:[t.jsx("stop",{offset:"0%",stopColor:"hsl(43, 96%, 56%)"}),t.jsx("stop",{offset:"50%",stopColor:"hsl(48, 96%, 65%)"}),t.jsx("stop",{offset:"100%",stopColor:"hsl(36, 90%, 50%)"})]})})}),[1,2,3,4,5].map(i=>{const r=i<=e,o=r?a?`url(#${zo})`:n:"transparent",l=r?a?`url(#${zo})`:n:"hsl(var(--muted-foreground))";return t.jsx(ru,{className:"h-6 w-6 transition-all",fill:o,stroke:l,strokeWidth:1.5,style:r?{filter:`drop-shadow(0 0 4px ${a?"hsl(43,96%,56%)":n}40)`}:{opacity:.3}},i)})]})}function Y1({summary:e,previous:n,onCalculationClick:a}){const{t:i}=ke(),r=i.customers,o=dg(e,n??null,r),{totalScore:l,level:s,label:c}=o,u=ms[s];return t.jsx(Qn,{className:a?"cursor-pointer hover:bg-muted/50 transition-colors":"",onClick:a,children:t.jsxs(Da,{className:"p-3 space-y-2",children:[t.jsx("p",{className:"text-sm font-medium",children:r.fhiTitle}),t.jsx($1,{level:s,color:u}),t.jsx("div",{className:"text-center",children:t.jsx("p",{className:"text-base font-semibold tracking-wide uppercase",style:{color:u},children:c})}),t.jsxs("div",{className:"text-center",children:[t.jsx("span",{className:"text-lg font-bold",children:l}),t.jsx("span",{className:"text-sm text-muted-foreground",children:" / 100"})]}),a&&t.jsx("div",{className:"text-center",children:t.jsx("span",{className:"text-xs text-primary",children:r.fhiExplanation})})]})})}function Mo(e,n=1){return e===null?"â":e.toLocaleString("nb-NO",{minimumFractionDigits:n,maximumFractionDigits:n})}function qn(e){return e===null?"â":e.toLocaleString("nb-NO",{maximumFractionDigits:0})}function Q1({open:e,onOpenChange:n,current:a,previous:i}){const{t:r,language:o}=ke(),l=r.customers,s=dg(a,i,l),c=t.jsx("div",{className:"flex justify-end w-full",children:t.jsx("button",{onClick:()=>n(!1),className:"sm-form-overlay-btn-cancel",type:"button",children:r.common.cancel})});return t.jsx(Tt,{open:e,onOpenChange:n,title:l.reModalTitle,footer:c,size:"lg",children:t.jsx(X1,{breakdown:s,ct:l,language:o})})}function J1({count:e,color:n}){return t.jsx("span",{className:"inline-flex items-center gap-0.5",children:[1,2,3,4,5].map(a=>t.jsx(ru,{className:"h-3.5 w-3.5",fill:a<=e?n:"transparent",stroke:a<=e?n:"hsl(var(--muted-foreground))",strokeWidth:1.5,style:a>e?{opacity:.3}:void 0},a))})}function Z1({breakdown:e,language:n}){const[a,i]=d.useState(null),[r,o]=d.useState(!0);return d.useEffect(()=>{let l=!1;return o(!0),i(null),T.functions.invoke("explain-financial-score",{body:{breakdown:e,language:n}}).then(({data:s,error:c})=>{l||(c||!(s!=null&&s.ok)?i(null):i(s.explanation),o(!1))}),()=>{l=!0}},[e.totalScore,e.level,n]),r?t.jsxs("div",{className:"bg-primary/5 rounded-lg p-3 space-y-2",children:[t.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-medium text-primary",children:[t.jsx(gn,{className:"h-3.5 w-3.5"}),t.jsx("span",{children:"Automatisk analyse"})]}),t.jsx(Nn,{className:"h-4 w-full"}),t.jsx(Nn,{className:"h-4 w-3/4"})]}):a?t.jsxs("div",{className:"bg-primary/5 rounded-lg p-3 space-y-1.5",children:[t.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-medium text-primary",children:[t.jsx(gn,{className:"h-3.5 w-3.5"}),t.jsx("span",{children:"Automatisk analyse"})]}),t.jsx("p",{className:"text-sm text-foreground leading-relaxed",children:a})]}):null}function X1({breakdown:e,ct:n,language:a}){const{soliditet:i,lonnsomhet:r,risiko:o,stabilitet:l,totalScore:s,level:c}=e,u=ms[c],m=[{stars:5,range:"90 â 100",label:"ELITE",interpretation:n.levelElite},{stars:4,range:"75 â 89",label:"STRONG",interpretation:n.levelStrong},{stars:3,range:"60 â 74",label:"STABLE",interpretation:n.levelStable},{stars:2,range:"45 â 59",label:"VULNERABLE",interpretation:n.levelVulnerable},{stars:1,range:"< 45",label:"CRITICAL",interpretation:n.levelCritical}];return t.jsxs("div",{className:"space-y-5 text-sm",children:[t.jsx(Z1,{breakdown:e,language:a}),t.jsx("p",{className:"text-muted-foreground",children:n.reIntro}),t.jsxs("section",{className:"space-y-2",children:[t.jsx("h4",{className:"font-semibold",children:n.reTotalFormula}),t.jsxs("div",{className:"bg-muted/50 rounded-lg p-3 space-y-1 font-mono text-xs",children:[t.jsx("p",{children:"Total (0â100) ="}),t.jsxs("p",{className:"pl-4",children:["0.35 Ã ",n.reSoliditet]}),t.jsxs("p",{className:"pl-4",children:["+ 0.30 Ã ",n.reLonnsomhet]}),t.jsxs("p",{className:"pl-4",children:["+ 0.20 Ã ",n.reRisiko]}),t.jsxs("p",{className:"pl-4",children:["+ 0.15 Ã ",n.reStabilitet]})]}),t.jsx("p",{className:"text-muted-foreground text-xs",children:n.reFormulaExplain}),t.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[t.jsxs("div",{className:"bg-muted/30 rounded p-2",children:[t.jsx("span",{className:"text-muted-foreground",children:n.reSoliditet}),t.jsxs("span",{className:"float-right font-semibold",children:[i.score,"/100"]})]}),t.jsxs("div",{className:"bg-muted/30 rounded p-2",children:[t.jsx("span",{className:"text-muted-foreground",children:n.reLonnsomhet}),t.jsxs("span",{className:"float-right font-semibold",children:[r.score,"/100"]})]}),t.jsxs("div",{className:"bg-muted/30 rounded p-2",children:[t.jsx("span",{className:"text-muted-foreground",children:n.reRisiko}),t.jsxs("span",{className:"float-right font-semibold",children:[o.score,"/100"]})]}),t.jsxs("div",{className:"bg-muted/30 rounded p-2",children:[t.jsx("span",{className:"text-muted-foreground",children:n.reStabilitet}),t.jsxs("span",{className:"float-right font-semibold",children:[l.score,"/100"]})]})]}),t.jsxs("div",{className:"text-center",children:[t.jsx("span",{className:"text-lg font-bold",children:s}),t.jsx("span",{className:"text-muted-foreground",children:" / 100"}),t.jsxs("span",{className:"ml-2 text-xs font-bold tracking-wide px-2 py-0.5 rounded",style:{backgroundColor:u+"20",color:u},children:["LEVEL ",c]})]})]}),t.jsxs("section",{className:"space-y-2",children:[t.jsx("h4",{className:"font-semibold",children:n.reStarLevelTitle}),t.jsx("p",{className:"text-xs text-muted-foreground",children:n.reStarLevelIntro}),t.jsx("div",{className:"space-y-1",children:m.map(g=>t.jsxs("div",{className:`flex items-center gap-2 text-xs px-2 py-1.5 rounded ${g.stars===c?"bg-muted":""}`,children:[t.jsx(J1,{count:g.stars,color:ms[g.stars]}),t.jsxs("span",{className:"font-bold min-w-[56px] tracking-wide",children:["LEVEL ",g.stars]}),t.jsx("span",{className:"text-muted-foreground min-w-[60px]",children:g.range}),t.jsx("span",{className:"text-muted-foreground",children:g.interpretation})]},g.stars))}),t.jsx("p",{className:"text-xs text-muted-foreground italic",children:n.reStarLevelNote})]}),t.jsx(Zi,{title:`${n.reSoliditet} (35%)`,definition:n.reSoliditetDef,rows:[{label:n.equityLabel,value:qn(i.rawValues.equity)},{label:n.totalAssets,value:qn(i.rawValues.totalAssets)},{label:n.equityRatio,value:i.equityRatio!==null?`${Mo(i.equityRatio)}%`:"â"}],score:i.score,scale:[{range:"> 50%",score:"100"},{range:"35 â 50%",score:"80"},{range:"20 â 35%",score:"60"},{range:"10 â 20%",score:"40"},{range:"0 â 10%",score:"20"},{range:"< 0%",score:"0"}]}),t.jsx(Zi,{title:`${n.reLonnsomhet} (30%)`,definition:n.reLonnsomhetDef,note:r.singleYear?n.reLonnsomhetFallback:void 0,rows:[{label:n.rePreTaxProfit,value:qn(r.rawValues.preTaxProfit)},{label:n.reFinancialCosts,value:qn(r.rawValues.financialCosts)},{label:n.reAvgCapital,value:qn(r.rawValues.avgCapital)},{label:"ROA",value:r.roa!==null?`${Mo(r.roa)}%`:"â"}],score:r.score,scale:[{range:"> 15%",score:"100"},{range:"10 â 15%",score:"80"},{range:"6 â 9.9%",score:"60"},{range:"1 â 5.9%",score:"40"},{range:"< 1%",score:"10"}]}),t.jsx(Zi,{title:`${n.reRisiko} (20%)`,definition:n.reRisikoDef,rows:[{label:n.debtLabel,value:qn(o.rawValues.debt)},{label:n.equityLabel,value:qn(o.rawValues.equity)},{label:n.reDebtToEquity,value:o.debtToEquity!==null?Mo(o.debtToEquity,2):"â"}],score:o.score,scale:[{range:"< 1",score:"100"},{range:"1 â 2",score:"80"},{range:"2 â 3",score:"60"},{range:"3 â 5",score:"40"},{range:"> 5",score:"20"}],footnote:n.reRisikoFootnote}),t.jsx(Zi,{title:`${n.reStabilitet} (15%)`,definition:n.reStabilitetDef,rows:[{label:n.rePositiveEquity,value:l.positiveEquity?n.reYes:n.reNo},{label:n.rePositiveProfit,value:l.positiveProfit?n.reYes:n.reNo}],score:l.score,scale:[{range:n.reStabBothPositive,score:"100"},{range:n.reStabOnePositive,score:"60"},{range:n.reStabBothNegative,score:"20"}]}),t.jsx("p",{className:"text-xs text-muted-foreground border-t pt-3",children:n.reDisclaimer})]})}function Zi({title:e,definition:n,note:a,rows:i,score:r,scale:o,footnote:l}){return t.jsxs("section",{className:"space-y-2",children:[t.jsx("h4",{className:"font-semibold",children:e}),t.jsx("p",{className:"text-xs text-muted-foreground",children:n}),a&&t.jsx("p",{className:"text-xs text-muted-foreground italic",children:a}),t.jsxs("div",{className:"space-y-1",children:[i.map(s=>t.jsxs("div",{className:"flex justify-between text-xs",children:[t.jsx("span",{className:"text-muted-foreground",children:s.label}),t.jsx("span",{className:"font-medium",children:s.value})]},s.label)),t.jsxs("div",{className:"flex justify-between text-xs font-semibold border-t pt-1",children:[t.jsx("span",{children:"Score"}),t.jsxs("span",{children:[r," / 100"]})]})]}),t.jsx("div",{className:"bg-muted/30 rounded p-2 space-y-0.5",children:o.map((s,c)=>t.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[t.jsx("span",{children:s.range}),t.jsxs("span",{children:["= ",s.score]})]},c))}),l&&t.jsx("p",{className:"text-xs text-muted-foreground italic",children:l})]})}function Kc(e){const{current_assets:n,current_liabilities:a}=e.kpis;return n===null||a===null||a===0?null:n/a}
536function Wc(e,n){const{pre_tax_profit:a,financial_costs:i,assets_total:r}=e.kpis,o=(n==null?void 0:n.kpis.assets_total)??null;if(a===null||r===null)return null;const l=i??0,s=o!==null?(r+o)/2:r;return s===0?null:(a+l)*100/s}function Uc(e){const{equity_total:n,debt_total:a}=e.kpis;if(n===null||a===null)return null;const i=n+a;return i===0?null:n*100/i}function eT(e){return e<.5?"unsatisfactory":e<1?"weak":e<1.5?"satisfactory":e<=2?"good":"veryGood"}function tT(e){return e<1?"unsatisfactory":e<6?"weak":e<10?"satisfactory":e<=15?"good":"veryGood"}function nT(e,n){return n!==null&&n<1e5?"weak":e<3?"unsatisfactory":e<10?"weak":e<18?"satisfactory":e<=40?"good":"veryGood"}const aT={unsatisfactory:"hsl(0, 72%, 51%)",weak:"hsl(25, 95%, 53%)",satisfactory:"hsl(48, 96%, 53%)",good:"hsl(142, 71%, 45%)",veryGood:"hsl(142, 76%, 36%)"};function iT({value:e,maxValue:n,assessment:a}){const l=(180-Math.min(Math.max(e,0),n)/n*180)*Math.PI/180,s=100,c=90,u=70,m=s+u*.82*Math.cos(l),g=c-u*.82*Math.sin(l),f=[{start:0,end:.2,color:"hsl(0, 72%, 51%)"},{start:.2,end:.4,color:"hsl(25, 95%, 53%)"},{start:.4,end:.6,color:"hsl(48, 96%, 53%)"},{start:.6,end:.8,color:"hsl(142, 71%, 45%)"},{start:.8,end:1,color:"hsl(142, 76%, 36%)"}];return t.jsxs("svg",{viewBox:"0 0 200 120",className:"w-full max-w-[160px] mx-auto",children:[t.jsx("path",{d:Hc(s,c,u,180,0),fill:"none",stroke:"hsl(var(--muted))",strokeWidth:14,strokeLinecap:"round"}),f.map((p,h)=>{const b=180-p.start*180,y=180-p.end*180;return t.jsx("path",{d:Hc(s,c,u,b,y),fill:"none",stroke:p.color,strokeWidth:14,strokeLinecap:"butt"},h)}),t.jsx("line",{x1:s,y1:c,x2:m,y2:g,stroke:"hsl(var(--foreground))",strokeWidth:2.5,strokeLinecap:"round"}),t.jsx("circle",{cx:s,cy:c,r:5,fill:"hsl(var(--foreground))"})]})}function Hc(e,n,a,i,r){const o=i*Math.PI/180,l=r*Math.PI/180,s=e+a*Math.cos(o),c=n-a*Math.sin(o),u=e+a*Math.cos(l),m=n-a*Math.sin(l),g=i-r>180?1:0;return`M ${s} ${c} A ${a} ${a} 0 ${g} 1 ${u} ${m}`}const rT={liquidity:3,profitability:25,equity:60};function oT({allYears:e,customerName:n,orgNumber:a}){const{t:i}=ke(),r=i.customers,[o,l]=d.useState(!1),[s,c]=d.useState("liquidity"),[u,m]=d.useState(!1);if(e.length===0)return null;const g=e[0],f=e.length>1?e[1]:null,p=Kc(g),h=f?Kc(f):null,b=Wc(g,f),y=e.length>2?Wc(e[1],e[2]):null,v=Uc(g),w=f?Uc(f):null,x=[{key:"liquidity",value:p,prevValue:h,assessment:p!==null?eT(p):null},{key:"profitability",value:b,prevValue:y,assessment:b!==null?tT(b):null},{key:"equity",value:v,prevValue:w,assessment:v!==null?nT(v,g.kpis.equity_total):null}],S={unsatisfactory:r.kfUnsatisfactory,weak:r.kfWeak,satisfactory:r.kfSatisfactory,good:r.kfGood,veryGood:r.kfVeryGood},k={liquidity:r.kfLiquidity,profitability:r.kfProfitability,equity:r.kfEquity},C=A=>{c(A),l(!0)};return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:[t.jsx(Y1,{summary:g,previous:f,onCalculationClick:()=>m(!0)}),x.map(A=>t.jsx(Qn,{className:"cursor-pointer hover:bg-muted/50 transition-colors",onClick:()=>C(A.key),children:t.jsxs(Da,{className:"p-3 space-y-1",children:[t.jsx("p",{className:"text-sm font-medium",children:k[A.key]}),A.value!==null&&A.assessment!==null?t.jsxs(t.Fragment,{children:[t.jsx(iT,{value:A.value,maxValue:rT[A.key],assessment:A.assessment}),t.jsxs("div",{className:"text-center space-y-0.5",children:[t.jsx("span",{className:"inline-block text-xs font-semibold px-2 py-0.5 rounded-full",style:{backgroundColor:aT[A.assessment],color:"white"},children:S[A.assessment]}),t.jsxs("div",{className:"flex items-center justify-center gap-2",children:[t.jsx("span",{className:"text-lg font-bold",children:A.key==="liquidity"?A.value.toFixed(2):`${A.value.toFixed(1)}%`}),A.prevValue!==null&&(A.value>A.prevValue?t.jsx(Ch,{className:"h-4 w-4 text-emerald-500"}):A.value<A.prevValue?t.jsx(Sh,{className:"h-4 w-4 text-red-500"}):null)]}),A.prevValue!==null&&t.jsxs("p",{className:"text-xs text-muted-foreground",children:[r.kfPreviousYear,": ",A.key==="liquidity"?A.prevValue.toFixed(2):`${A.prevValue.toFixed(1)}%`]})]})]}):t.jsx("p",{className:"text-sm text-muted-foreground text-center py-6",children:r.kfNoD
536ata}),t.jsx("div",{className:"text-center",children:t.jsx("span",{className:"text-xs text-primary",children:r.kfCalculation})})]})},A.key))]}),t.jsx(O1,{open:o,onOpenChange:l,defaultTab:s,figures:x,allYears:e,customerName:n,orgNumber:a}),t.jsx(Q1,{open:u,onOpenChange:m,current:g,previous:f})]})}function sT({customer:e,onClose:n,onEdit:a}){const{t:i}=ke(),r=Jn(),o=i.customers,{data:l,isLoading:s}=Bw(e.id),[c,u]=d.useState("overview"),m=[...e.address_lines||[],[e.postal_code,e.city].filter(Boolean).join(" ")].filter(Boolean),g=m.join(", ")+(e.country_code?`, ${e.country_code}`:"");return t.jsxs("div",{className:"flex flex-col h-full bg-background border-l border-border",children:[t.jsxs("div",{className:"flex-shrink-0 px-4 pt-4 pb-3",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("h2",{className:"text-base font-semibold flex-1 min-w-0 truncate",children:e.name}),t.jsx("button",{onClick:()=>a(e),className:"flex-shrink-0 p-1.5 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:t.jsx(uh,{className:"h-4 w-4"})}),t.jsx("button",{onClick:n,className:"flex-shrink-0 p-1.5 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:t.jsx(Mt,{className:"h-4 w-4"})})]}),t.jsxs("div",{className:"space-y-0.5 mt-2 text-xs text-muted-foreground",children:[m.length>0&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(hi,{className:"h-3 w-3 flex-shrink-0"}),t.jsx("span",{className:"truncate",children:g})]}),e.phone&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(dr,{className:"h-3 w-3 flex-shrink-0"}),t.jsx("span",{children:e.phone})]}),e.email&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(cr,{className:"h-3 w-3 flex-shrink-0"}),t.jsx("span",{children:e.email})]}),e.organization_number&&t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx(Cn,{className:"h-3 w-3 flex-shrink-0"}),t.jsxs("span",{children:["Org: ",e.organization_number]})]})]}),!e.organization_number&&t.jsx("p",{className:"text-xs text-muted-foreground italic mt-1",children:o.addOrgNumberForAccounts})]}),t.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto",children:t.jsx("div",{className:"px-4 pt-3",children:t.jsxs(Qr,{value:c,onValueChange:u,children:[t.jsxs(Jr,{children:[t.jsx(wn,{value:"overview",children:o.overview}),t.jsx(wn,{value:"contacts",children:i.contacts.title}),t.jsx(wn,{value:"projects",children:i.projects.title}),t.jsx(wn,{value:"sales",children:i.sales.title}),t.jsx(wn,{value:"activities",children:o.activities})]}),s?t.jsx("div",{className:"flex items-center justify-center py-12",children:t.jsx(kt,{className:"w-5 h-5 animate-spin text-muted-foreground"})}):l?t.jsxs(t.Fragment,{children:[t.jsx(Sn,{value:"overview",className:"mt-4",children:t.jsx(lT,{orgnr:e.organization_number,ct:o,customerName:e.name})}),t.jsx(Sn,{value:"contacts",className:"mt-4",children:t.jsx(E1,{customerId:e.id})}),t.jsx(Sn,{value:"projects",className:"mt-4",children:t.jsx(cT,{projects:l.projects,navigate:r,t:i})}),t.jsx(Sn,{value:"sales",className:"mt-4",children:t.jsx(dT,{sales:l.sales,t:i})}),t.jsx(Sn,{value:"activities",className:"mt-4 pb-4",children:t.jsx(uT,{events:l.events,t:i,ct:o})})]}):t.jsx("p",{className:"text-sm text-muted-foreground py-4",children:o.notFound})]})})})]})}function lT({orgnr:e,ct:n,customerName:a}){var c;const{data:i,isLoading:r,isError:o}=T1(e);if(!e)return t.jsx("p",{className:"text-sm text-muted-foreground",children:n.addOrgNumberForAccounts});if(r)return t.jsxs("div",{className:"space-y-4",children:[t.jsx("h3",{className:"text-sm font-semibold",children:n.financialOverview}),t.jsx(Nn,{className:"h-40 rounded-lg"})]});if(o)return t.jsxs("div",{className:"space-y-3",children:[t.jsx("h3",{className:"text-sm font-semibold",children:n.financialOverview}),t.jsx("p",{className:"text-sm text-muted-foreground",children:n.financeServiceUnavailable})]});if(!i||i.length===0)return t.jsxs("div",{className:"space-y-3",children:[t.jsx("h3",{className:"text-sm font-semibold",children:n.financialOverview}),t.jsx("p",{className:"text-sm text-muted-foreground",children:n.noAccountsFound})]});const s=((c=i[0].period.to_date)==null?void 0:c.substring(0,4))||"";return t.jsxs("div",{className:"space-y-5 pb-4",children:[t.jsxs("h3",{className:"text-sm font-semibold",children:[n.keyFigures," ",s]}),t.jsx(oT,{allYears:i,customerName:a,orgNumber:e||void 0}),t.jsx(L1,{allYears:i}),t.jsx(F1,{allYears:i})]})}function cT({projects:e,navigate:n,t:a}){return e.length===0?t.jsx("p",{className:"text-sm text-muted-foreground",children:a.customers.noProjectsLinked}):t.jsx(Ka,{children:e.map(i=>{var r;return t.jsx(Wa,{onClick:()=>n(`/projects/${i.id}`),className:"cursor-pointer hover:bg-accent/50",children:t.jsxs("div",{className:"flex items-start justify-between gap-2",children:[t.jsxs("div",{children:[t.jsx(Ua,{children:i.name}),(i.start_date||i.end_date)&&t.jsxs(Ha,{children:[i.start_date&&At(ne
536w Date(i.start_date),"dd.MM.yyyy"),i.start_date&&i.end_date&&" â ",i.end_date&&At(new Date(i.end_date),"dd.MM.yyyy")]})]}),t.jsx(pn,{className:((r=D1[i.status])==null?void 0:r.color)||"",children:i.status})]})},i.id)})})}function dT({sales:e,t:n}){return e.length===0?t.jsx("p",{className:"text-sm text-muted-foreground",children:n.customers.noSalesLinked}):t.jsx(Ka,{children:e.map(a=>t.jsx(Wa,{className:"hover:bg-accent/50",children:t.jsxs("div",{className:"flex items-start justify-between gap-2",children:[t.jsxs("div",{children:[t.jsx(Ua,{children:a.customer_name}),t.jsx(Ha,{children:At(new Date(a.created_at),"dd.MM.yyyy")})]}),t.jsx(n1,{status:a.status})]})},a.id))})}function uT({events:e,t:n,ct:a}){return e.length===0?t.jsx("p",{className:"text-sm text-muted-foreground",children:a.noActivitiesLinked}):t.jsx(Ka,{children:e.map(i=>t.jsxs(Wa,{className:"hover:bg-accent/50",children:[t.jsx(Ua,{children:i.name}),t.jsx(Ha,{children:At(new Date(i.start_at),"dd.MM.yyyy HH:mm")})]},i.id))})}function mT(e=35,n=12,a=50){const[i,r]=d.useState(e),o=d.useRef(!1),l=d.useRef(null),s=d.useCallback(c=>{c.preventDefault(),o.current=!0,document.body.style.cursor="col-resize",document.body.style.userSelect="none"},[]);return d.useEffect(()=>{const c=m=>{if(!o.current||!l.current)return;const g=l.current.getBoundingClientRect(),f=(m.clientX-g.left)/g.width*100;r(Math.min(a,Math.max(n,f)))},u=()=>{o.current&&(o.current=!1,document.body.style.cursor="",document.body.style.userSelect="")};return window.addEventListener("mousemove",c),window.addEventListener("mouseup",u),()=>{window.removeEventListener("mousemove",c),window.removeEventListener("mouseup",u)}},[n,a]),{leftPercent:i,containerRef:l,onMouseDown:s}}function pT(){const{t:e}=ke(),n=_i(),{data:a=[],isLoading:i}=Ba(),{create:r,update:o,remove:l}=Dm(),s=e.customers,[c,u]=d.useState(!1),[m,g]=d.useState(null),[f,p]=d.useState(""),[h,b]=d.useState(""),[y,v]=d.useState(null),[w,x]=d.useState(""),[S,k]=d.useState(""),[C,A]=d.useState(""),[q,P]=d.useState(""),[D,z]=d.useState(""),[F,R]=d.useState(""),[E,L]=d.useState(""),[M,j]=d.useState(""),[I,V]=d.useState(""),[Y,X]=d.useState(""),[_,N]=d.useState(),[W,$]=d.useState(),[K,H]=d.useState(""),{data:re=[],isFetching:ie,isError:Se}=Tp({provider:"NO_BRREG",query:K,mode:"name"}),oe=d.useMemo(()=>a.find(Q=>Q.id===y)??null,[a,y]),{leftPercent:J,containerRef:Z,onMouseDown:be}=mT(35,12,50),ze=d.useCallback(Q=>{if(!Q.trim()){b("");return}const it=a.find(ne=>ne.organization_number===Q.trim()&&ne.id!==m);b(it?`${s.duplicateOrgNumber} "${it.name}"`:"")},[a,m,s.duplicateOrgNumber]),Fe=d.useCallback(Q=>{k(Q),ze(Q)},[ze]),Le=d.useCallback(()=>{x(""),k(""),A(""),P(""),z(""),R(""),L(""),j(""),V(""),X(""),N(void 0),$(void 0),g(null),H(""),b("")},[]),Ve=d.useCallback(()=>{Le(),u(!0)},[Le]),Ke=d.useCallback(Q=>{var it;g(Q.id),x(Q.name),k(Q.organization_number||""),A(Q.contact_name||""),P(Q.email||""),z(Q.phone||""),R(Q.notes||""),L(((it=Q.address_lines)==null?void 0:it.join(` 537`))||""),j(Q.postal_code||""),V(Q.city||""),X(Q.managing_director||""),N(Q.registry_provider||void 0),$(Q.registry_id||void 0),H(""),b(""),u(!0)},[]),St=d.useCallback(Q=>{v(it=>it===Q.id?null:Q.id)},[]),tt=d.useCallback(()=>{v(null)},[]),Ze=d.useCallback(Q=>{var it;x(Q.name),k(Q.organization_number),ze(Q.organization_number),L(((it=Q.address_lines)==null?void 0:it.join(` 538`))||""),j(Q.postal_code||""),V(Q.city||""),P(ne=>Q.email||ne),z(ne=>Q.phone||ne),X(Q.managing_director||""),N(Q.provider),$(Q.provider_id),H("")},[ze]),He=d.useCallback(()=>{if(h)return;const Q=E.trim()?E.split(` 539`).map(xe=>xe.trim()).filter(Boolean):void 0,it={name:w,organization_number:S||void 0,contact_name:C||void 0,email:q||void 0,phone:D||void 0,notes:F||void 0,address_lines:Q,postal_code:M||void 0,city:I||void 0,managing_director:Y||void 0,registry_provider:_,registry_id:W};u(!1),Le(),(m?o.mutateAsync({...it,id:m}):r.mutateAsync(it)).catch(()=>qe.error(e.common.saveFailed))},[h,E,w,S,C,q,D,F,M,I,Y,_,W,m,o,r,Le,e]),yt=d.useCallback(()=>{if(!m)return;const Q=m;u(!1),Le(),y===Q&&v(null),l.mutateAsync(Q).catch(()=>qe.error(e.common.saveFailed))},[m,l,Le,y,e]),wt=d.useMemo(()=>f.toLowerCase(),[f]),dt=d.useMemo(()=>wt?a.filter(Q=>Q.name.toLowerCase().includes(wt)||Q.contact_name&&Q.contact_name.toLowerCase().includes(wt)||Q.email&&Q.email.toLowerCase().includes(wt)):a,[a,wt]),[bt,ve]=d.useState(0);if(i)return t.jsx("div",{className:"flex items-center justify-center h-64",children:t.jsx(kt,{className:"w-6 h-6 animate-spin text-muted-foreground"})});const We=oe?t.jsx("div",{className:"h-full",children:t.jsx(sT,{customer:oe,onClose:tt,onEdit:Ke})},oe.id):null,Qe=t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"px-6",children:t.jsx(Gr,{helpKey:"customers",toggleCount:bt,onClose:()=>ve(Q=>Q%2===1?Q+1:Q),children:t.jsx(P1,{})})}),t.jsxs(Lr,{children:[t.jsx($r,{onClick:()=>ve(Q=>Q+1),active:bt%2===1}),t.jsx(Be,{onClick:Ve,size:"sm",children:s.newCustomer})]}),t.jsx("div",{className:"flex-shrink-0 px-6",children:t.jsx(j1,{value:f,onChange:p,placeholder:s.searchCustomer})}),t.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto px-6 pb-6",children:dt.length===0?t.jsxs("div",{className:"bg-card rounded-lg border border-border p-12 flex flex-col items-center justify-center gap-4",children:[t.jsx("p",{className:"text-muted-foreground",children:s.noCustomersYet}),t.jsx(Be,{onClick:Ve,size:"lg",children:s.newCustomer})]}):t.jsx(Ka,{children:dt.map(Q=>t.jsx(gT,{customer:Q,isSelected:y===Q.id,onClick:St},Q.id))})})]});return t.jsxs("div",{ref:Z,className:"flex h-full overflow-hidden relative",children:[t.jsx(rt.div,{animate:{width:!n&&oe?`${J}%`:"100%"},transition:{duration:.25,ease:"easeOut"},className:"flex flex-col h-full overflow-hidden shrink-0",style:{minWidth:!n&&oe?220:void 0},children:Qe}),t.jsx(en,{children:oe&&!n&&t.jsxs(rt.div,{initial:{width:0,opacity:0}
539,animate:{width:`${100-J}%`,opacity:1},exit:{width:0,opacity:0},transition:{duration:.25,ease:"easeOut"},className:"h-full overflow-hidden flex shrink-0",children:[t.jsxs("div",{className:"relative shrink-0 flex items-center justify-center",style:{width:1},children:[t.jsx("div",{className:"absolute inset-y-0 -left-3 -right-3 z-30 cursor-col-resize",onMouseDown:be}),t.jsx("div",{className:"absolute inset-y-0 w-px bg-border"})]}),t.jsx("div",{className:"flex-1 h-full overflow-hidden",children:We})]},"detail")}),n&&t.jsx(cl,{open:!!oe&&n,onOpenChange:Q=>{Q||tt()},children:t.jsx(dl,{className:"max-h-[85vh] h-[85vh] border-none",children:We})}),t.jsxs(Tt,{open:c,onOpenChange:u,title:m?s.editCustomer:s.newCustomer,size:"sm",footer:t.jsx(tn,{onCancel:()=>u(!1),onSave:He,onDelete:m?yt:void 0,saveLabel:m?e.common.save:e.common.add,cancelLabel:e.common.cancel,disabled:!w.trim()||!!h}),children:[!m&&t.jsx(Te,{title:s.findCompany,noBorder:!0,children:t.jsxs("div",{className:"space-y-2 rounded-lg border border-border p-3 bg-muted/30",children:[t.jsx(ge,{value:K,onChange:Q=>H(Q.target.value),className:"sm-input",placeholder:s.findCompany}),ie&&t.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:t.jsx(kt,{className:"w-3 h-3 animate-spin"})}),Se&&t.jsx("p",{className:"text-xs text-destructive",children:s.registryUnavailable}),!ie&&K.trim().length>=2&&re.length===0&&!Se&&t.jsx("p",{className:"text-xs text-muted-foreground",children:s.noResultsFound}),re.length>0&&t.jsx("ul",{className:"space-y-1 max-h-48 overflow-y-auto",children:re.map(Q=>t.jsx("li",{className:"flex items-center justify-between gap-2 p-2 rounded cursor-pointer hover:bg-accent text-sm",onClick:()=>Ze(Q),children:t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("p",{className:"font-medium truncate",children:Q.name}),t.jsxs("p",{className:"text-xs text-muted-foreground truncate",children:[Q.organization_number,Q.city?` · ${Q.city}`:""]})]})},Q.provider_id))})]})}),t.jsxs(Te,{children:[t.jsx(pe,{label:e.common.name+" *",children:t.jsx(ge,{value:w,onChange:Q=>x(Q.target.value),className:"sm-input"})}),t.jsxs(pe,{label:s.organizationNumber,children:[t.jsx(ge,{value:S,onChange:Q=>Fe(Q.target.value),className:"sm-input"}),h&&t.jsx("p",{className:"text-xs text-destructive mt-1",children:h})]}),t.jsx(pe,{label:s.contactName,children:t.jsx(ge,{value:C,onChange:Q=>A(Q.target.value),className:"sm-input"})}),t.jsx(pe,{label:e.sales.customerEmail,children:t.jsx(ge,{type:"email",value:q,onChange:Q=>P(Q.target.value),className:"sm-input"})}),t.jsx(pe,{label:e.sales.customerPhone,children:t.jsx(ge,{type:"tel",value:D,onChange:Q=>z(Q.target.value),className:"sm-input"})})]}),t.jsxs(Te,{children:[t.jsx(pe,{label:s.address,children:t.jsx(Gn,{value:E,onChange:Q=>L(Q.target.value),className:"sm-input min-h-[60px] resize-none !h-auto"})}),t.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[t.jsx(pe,{label:s.postalCode,children:t.jsx(ge,{value:M,onChange:Q=>j(Q.target.value),className:"sm-input"})}),t.jsx(pe,{label:s.city,children:t.jsx(ge,{value:I,onChange:Q=>V(Q.target.value),className:"sm-input"})})]}),t.jsx(pe,{label:s.managingDirector,children:t.jsx(ge,{value:Y,onChange:Q=>X(Q.target.value),className:"sm-input"})})]}),t.jsx(Te,{children:t.jsx(pe,{label:e.event.notes,children:t.jsx(Gn,{value:F,onChange:Q=>R(Q.target.value),className:"sm-input min-h-[80px] resize-none !h-auto"})})})]})]})}const gT=d.memo(function({customer:n,isSelected:a,onClick:i}){return t.jsx(Wa,{onClick:()=>i(n),className:B("cursor-pointer relative",a&&"sm-list-card-item-selected"),children:t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx(Ua,{className:"truncate",children:n.name}),t.jsx(Ha,{className:"truncate",children:[n.contact_name,n.email,n.phone].filter(Boolean).join(" · ")})]}),t.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[n.email&&t.jsx("a",{href:`mailto:${n.email}`,onClick:r=>r.stopPropagation(),className:"p-1.5 rounded-md sm-list-icon transition-colors",title:n.email,children:t.jsx(cr,{className:"h-4 w-4"})}),n.phone&&t.jsx("a",{href:`tel:${n.phone}`,onClick:r=>r.stopPropagation(),className:"p-1.5 rounded-md sm-list-icon transition-colors",title:n.phone,children:t.jsx(dr,{className:"h-4 w-4"})})]})]})})});function fT(){const{currentMembership:e}=he(),n=e==null?void 0:e.companyId;return Ee({queryKey:["company-inbox",n],enabled:!!n,queryFn:async()=>{const{data:a,error:i}=await T.from("company_inboxes").select("*").eq("company_id",n).maybeSingle();if(i)throw i;return a}})}function hT(){const{currentMembership:e}=he(),{t:n}=ke(),a=st(),i=e==null?void 0:e.companyId;return de({mutationFn:async r=>{var l,s,c,u;if(!i)throw new Error("No company");const{data:o}=await T.from("company_inboxes").select("id").eq("company_id",i).maybeSingle();if(o){const{error:m}=await T.from("company_inboxes").update({inbox_alias:((l=r.inbox_alias)==null?void 0:l.toLowerCase().trim())||null,is_enabled:r.is_enabled,booking_reply_to:((s=r.booking_reply_to)==null?void 0:s.trim())||null,updated_at:new Date().toISOString()}).eq("company_id",i);if(m)throw m}else{const{error:m}=await T.from("company_inboxes").insert({company_id:i,inbox_alias:((c=r.inbox_alias)==null?void 0:c.toLowerCase().trim())||null,is_enabled:r.is_enabled,booking_reply_to:((u=r.booking_reply_to)==null?void 0:u.trim())||null});if(m)throw m}},onSuccess:()=>{a.invalidateQueries({queryKey:["company-inbox",i]})},onError:r=>{var o;(r==null?void 0:r.code)==="23505"?qe.error(n.companyInbox.aliasNotAvailable):(o=r==null?void 0:r.message)!=null&&o.includes("company_inboxes_alias_not_reserved")?qe.error(n.companyInbox.aliasReserved):qe.error(r.message||"Error")}})}function vT(e=!0){var r,o;const{currentMembership:n}=he(),a=n==null?void 0:n.companyId,i=Ee({queryKey:["terminal-readers",a],queryFn:async()=>{const{data:l,error:s}=await T.functions.invoke("terminal-list-readers",{body:{company_id:a}});if(s)throw s;if(!(l!=null&&l.ok))throw new Error((l==null?void 0:l.message)||"Failed to fetch terminal readers");return l.data},enabled:!!a&&e,staleTime:3e4});return{readers:((r=i.data)==null?void 0:r.readers)||[],locations:((o=i.data)==null?void 0:o.locations)||[],isLoading:i.isLoading,refetch:i.refetch}}const ma={publishable_key:"",secret_key:"",webhook_secret:"",checkout_key:""}
539,yT=[{value:"stripe",label:"Stripe"},{value:"nexi",label:"Nets / Nexi"}];function bT({open:e,onOpenChange:n,companyId:a}){const{t:i}=ke(),r=i.companySettings.payments,[o,l]=d.useState("stripe"),s=o==="nexi",[c,u]=d.useState(!0),[m,g]=d.useState(!1),[f,p]=d.useState("test"),[h,b]=d.useState(ma),[y,v]=d.useState(ma),[w,x]=d.useState(ma),[S,k]=d.useState({}),[C,A]=d.useState({}),[q,P]=d.useState({}),[D,z]=d.useState({}),[F,R]=d.useState(null),[E,L]=d.useState(null),M=s?"https://ofonhoptrjclgvirmyal.supabase.co/functions/v1/nexi-webhook":"https://ofonhoptrjclgvirmyal.supabase.co/functions/v1/stripe-webhook",j=(K,H)=>`${K}_${H}`,I=K=>{const H=C[K];return H?s?H.has_secret_key||H.has_checkout_key:H.has_secret_key||!!H.publishable_key:!1};d.useEffect(()=>{if(!e)return;let K=!0;return(async()=>{const{data:re}=await T.from("payment_provider_settings").select("provider, is_enabled, active_mode, updated_at").eq("company_id",a).order("updated_at",{ascending:!1}).limit(1);K&&(re&&re.length>0?l(re[0].provider):l("stripe"))})(),()=>{K=!1}},[e,a]),d.useEffect(()=>{if(!e)return;let K=!0;return(async()=>{var re,ie,Se,oe,J,Z,be;u(!0),k({}),P({}),z({}),R(null);try{const{data:ze}=await T.auth.getSession();if(!((re=ze==null?void 0:ze.session)==null?void 0:re.access_token)){R("Ikke autentisert."),u(!1);return}const Le=await T.functions.invoke("payment-settings-fetch",{body:{company_id:a,provider:o}});if(!K)return;const Ve=Le.data;if(!(Ve!=null&&Ve.ok)){R((Ve==null?void 0:Ve.message)||(Ve==null?void 0:Ve.code)||"Kunne ikke laste innstillinger."),u(!1);return}if(!Ve.data)p("test"),b(ma),v(ma),x(ma),A({});else{p(Ve.data.active_mode||"test");const Ke=Ve.data.config||{};A(Ke),b({publishable_key:((ie=Ke.test)==null?void 0:ie.publishable_key)||"",secret_key:"",webhook_secret:"",checkout_key:((Se=Ke.test)==null?void 0:Se.checkout_key)||""}),v({publishable_key:((oe=Ke.sandbox)==null?void 0:oe.publishable_key)||"",secret_key:"",webhook_secret:"",checkout_key:((J=Ke.sandbox)==null?void 0:J.checkout_key)||""}),x({publishable_key:((Z=Ke.live)==null?void 0:Z.publishable_key)||"",secret_key:"",webhook_secret:"",checkout_key:((be=Ke.live)==null?void 0:be.checkout_key)||""})}}catch(ze){K&&R((ze==null?void 0:ze.message)||"Nettverksfeil.")}K&&u(!1)})(),()=>{K=!1}},[e,a,o]);const V=d.useCallback(K=>{k(H=>({...H,[K]:!H[K]}))},[]),Y=(K,H)=>{P(ie=>({...ie,[j(K,H)]:!1})),z(ie=>({...ie,[j(K,H)]:!0})),(K==="sandbox"?v:x)(ie=>({...ie,[H]:""}))},X=d.useCallback(async()=>{try{await navigator.clipboard.writeText(M),qe.success(r.webhookEndpointCopied)}catch{}},[M,r.webhookEndpointCopied]),_=async()=>{if(F){qe.error("Kunne ikke laste innstillinger. Lukk og åpne på nytt.");return}g(!0);const K=(oe,J)=>{const Z={};let be=!1;const ze=oe.publishable_key.trim();ze!==""&&(Z.publishable_key=ze,be=!0);const Fe=s?["secret_key","checkout_key"]:["secret_key","webhook_secret"];for(const Le of Fe){const Ve=j(J,Le),Ke=D[Ve],St=q[Ve],tt=oe[Le].trim();Ke?(Z[Le]="",be=!0):St&&tt!==""?(Z[Le]=tt,be=!0):Z[Le]=null}return be||Object.values(Z).some(Le=>Le!==null)?Z:null},H={},re=K(h,"test");re&&(H.test=re);const ie=K(y,"sandbox");ie&&(H.sandbox=ie);const Se=K(w,"live");Se&&(H.live=Se);try{const J=(await T.functions.invoke("payment-settings-save",{body:{company_id:a,provider:o,active_mode:f,is_enabled:s?!0:f!=="test",config:H}})).data;J!=null&&J.ok?n(!1):qe.error((J==null?void 0:J.message)||"Kunne ikke lagre.")}catch(oe){qe.error((oe==null?void 0:oe.message)||"Nettverksfeil ved lagring.")}g(!1)},N=async K=>{g(!0);const H=K==="test"?h:K==="sandbox"?y:w,re=()=>{const Se={},oe=H.publishable_key.trim();oe!==""&&(Se.publishable_key=oe);const J=s?["secret_key","checkout_key"]:["secret_key","webhook_secret"];for(const Z of J){const be=j(K,Z),ze=D[be],Fe=q[be],Le=H[Z].trim();ze?Se[Z]="":Fe&&Le!==""?Se[Z]=Le:Se[Z]=null}return Se},ie={};ie[K]=re();try{const oe=(await T.functions.invoke("payment-settings-save",{body:{company_id:a,provider:o,active_mode:f,is_enabled:s?!0:f!=="test",config:ie}})).data;if(!(oe!=null&&oe.ok))qe.error((oe==null?void 0:oe.message)||"Kunne ikke lagre.");else{L(null);const Z=(await T.functions.invoke("payment-settings-fetch",{body:{company_id:a,provider:o}})).data;if(Z!=null&&Z.ok&&Z.data){const be=Z.data.config||{};A(be),p(Z.data.active_mode||f)}}}catch(Se){qe.error((Se==null?void 0:Se.message)||"Nettverksfeil ved lagring.")}g(!1),P({}),z({}),k({})},W=s?[{value:"test",label:r.testMode,desc:r.netsTestDesc},{value:"live",label:r.liveMode,desc:r.netsLiveDesc}
539]:[{value:"test",label:r.testMode,desc:r.testModeDesc},{value:"sandbox",label:r.sandboxMode,desc:r.stripeSandboxDesc},{value:"live",label:r.liveMode,desc:r.stripeLiveDesc}];d.useEffect(()=>{s&&f==="sandbox"&&p("test")},[s,f]);const $=K=>{const H=K==="test"?h:K==="sandbox"?y:w,re=K==="test"?b:K==="sandbox"?v:x,ie=C[K],Se=s?[{key:"checkout_key",label:"Checkout Key",placeholder:K==="live"?"live-checkout-key-...":"test-checkout-key-...",isSecret:!1},{key:"secret_key",label:"Secret Key",placeholder:K==="live"?"live-secret-key-...":"test-secret-key-...",isSecret:!0}]:[{key:"publishable_key",label:r.publishableKey,placeholder:K==="live"?"pk_live_...":"pk_test_...",isSecret:!1},{key:"secret_key",label:r.secretKey,placeholder:K==="live"?"sk_live_...":"sk_test_...",isSecret:!0},{key:"webhook_secret",label:r.webhookSecret,placeholder:"whsec_...",isSecret:!0,optional:!0}];return t.jsx(Te,{children:Se.map(({key:oe,label:J,placeholder:Z,isSecret:be,optional:ze})=>{const Fe=j(K,oe),Le=!be||S[Fe],Ve=q[Fe],Ke=D[Fe],St=be&&ie&&!Ke&&(oe==="secret_key"?ie.has_secret_key:oe==="webhook_secret"?ie.has_webhook_secret:oe==="checkout_key"?ie.has_checkout_key:!1),tt=be&&ie&&!Ke?oe==="secret_key"?ie.secret_key_display:oe==="webhook_secret"?ie.webhook_secret_display:oe==="checkout_key"?ie.checkout_key_display:null:null;return be&&St&&!Ve?t.jsxs(pe,{label:`${J}${ze?" (optional)":""}`,children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsxs("div",{className:"flex-1 flex items-center gap-2 rounded-md bg-muted px-3 h-[35px]",children:[t.jsx("code",{className:"text-[13px] text-foreground font-mono",children:tt||"â¢â¢â¢â¢â¢â¢â¢â¢"}),t.jsx(Xt,{className:"h-3.5 w-3.5 text-primary ml-auto shrink-0"})]}),t.jsx("button",{type:"button",onClick:()=>Y(K,oe),className:"shrink-0 p-2 rounded-md hover:bg-destructive/10 text-muted-foreground hover:text-destructive transition-colors",children:t.jsx(La,{className:"h-3.5 w-3.5"})})]}),oe==="webhook_secret"&&t.jsx(Gc,{url:M,optionalText:r.webhookSecretOptional,label:r.webhookEndpointLabel,onCopy:X})]},oe):t.jsxs(pe,{label:`${J}${ze?" (optional)":""}`,children:[t.jsxs("div",{className:"relative",children:[t.jsx(ge,{type:Le?"text":"password",placeholder:Z,value:H[oe],onChange:Ze=>{const He=Ze.target.value;re(yt=>({...yt,[oe]:He})),be&&(P(yt=>({...yt,[Fe]:!0})),z(yt=>({...yt,[Fe]:!1})))},className:B("sm-input",be?"pr-10":"")}
539),be&&t.jsx("button",{type:"button",onClick:()=>V(Fe),className:"absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground transition-colors",children:Le?t.jsx(jr,{className:"h-3.5 w-3.5"}):t.jsx(As,{className:"h-3.5 w-3.5"})})]}),oe==="webhook_secret"&&t.jsx(Gc,{url:M,optionalText:r.webhookSecretOptional,label:r.webhookEndpointLabel,onCopy:X})]},oe)})})};return c?t.jsx(Tt,{open:e,onOpenChange:n,title:r.paymentProvider,footer:t.jsx("div",{}),children:t.jsx("div",{className:"flex items-center justify-center py-12 text-muted-foreground text-[13px]",children:t.jsx(kt,{className:"h-4 w-4 animate-spin mr-2"})})}):t.jsxs(t.Fragment,{children:[t.jsxs(Tt,{open:e,onOpenChange:n,title:r.paymentProvider,footer:t.jsx(tn,{onCancel:()=>n(!1),onSave:_,saveLabel:m?"â¦":i.common.save,disabled:m||!!F}),children:[F&&t.jsx("div",{className:"rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-[13px] text-destructive",children:F}),t.jsx(Te,{children:t.jsx(pe,{label:r.paymentProviderLabel,children:t.jsxs(Bt,{value:o,onValueChange:K=>l(K),children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{})}),t.jsx(Lt,{children:yT.map(K=>t.jsx(mt,{value:K.value,children:K.label},K.value))})]})})}),t.jsx(Te,{title:r.paymentMode,children:t.jsx("div",{className:"space-y-1.5",children:W.map(({value:K,label:H,desc:re})=>{const ie=f===K,Se=s?K==="test"||K==="live":K==="sandbox"||K==="live",oe=Se&&I(K);return t.jsxs("button",{type:"button",onClick:()=>p(K),className:B("w-full flex items-start gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",ie?"border-primary bg-primary/5":"border-border hover:border-muted-foreground/30"),children:[t.jsx("div",{className:B("mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border-2 transition-colors",ie?"border-primary bg-primary":"border-muted-foreground/40"),children:ie&&t.jsx(Xt,{className:"h-2.5 w-2.5 text-primary-foreground"})}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("p",{className:"text-[13px] font-medium text-foreground",children:H}),t.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:re}),Se&&ie&&t.jsx("button",{type:"button",onClick:J=>{J.stopPropagation(),L(K)},className:B("mt-2 inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium transition-colors",oe?"border-primary/30 bg-primary/10 text-primary":"border-border bg-muted hover:bg-accent text-foreground"),children:oe?t.jsxs(t.Fragment,{children:[t.jsx(Xt,{className:"h-3 w-3"}),r.keysConfigured]}):t.jsxs(t.Fragment,{children:[t.jsx(iu,{className:"h-3 w-3"}),r.setupKeys]})})]})]},K)})})}),!s&&t.jsx(xT,{companyId:a})]}),t.jsx(yi,{open:!!E,onOpenChange:K=>{K||L(null)},children:t.jsxs(Na,{className:"max-w-lg",children:[t.jsxs(Aa,{className:"text-[13px] font-semibold",children:[r.setupKeys," â ",E==="test"?r.testMode:E==="sandbox"?r.sandboxMode:r.liveMode]}),t.jsx(bi,{className:"sr-only",children:r.setupKeys}),E&&$(E),t.jsxs("div",{className:"flex justify-end gap-2 mt-2",children:[t.jsx("button",{type:"button",onClick:()=>L(null),className:"sm-form-overlay-cancel",children:i.common.cancel}),t.jsx("button",{type:"button",onClick:()=>E&&N(E),disabled:m,className:"sm-form-overlay-save disabled:opacity-50",children:m?"â¦":i.common.save})]})]})})]})}function xT({companyId:e}){const{t:n}=ke(),a=n.companySettings.payments,{readers:i,locations:r,isLoading:o,refetch:l}=vT(),[s,c]=d.useState(!1),[u,m]=d.useState(!1),[g,f]=d.useState(""),[p,h]=d.useState(""),[b,y]=d.useState(""),[v,w]=d.useState(""),[x,S]=d.useState("NO"),[k,C]=d.use
539State(""),[A,q]=d.useState(""),[P,D]=d.useState(""),[z,F]=d.useState(!1),[R,E]=d.useState(!1),[L,M]=d.useState(null),[j,I]=d.useState(null),V=N=>{const W=N.toLowerCase();return W.includes("postal code")?a.locationErrorPostalCode:W.includes("address")||W.includes("line1")?a.locationErrorAddress:W.includes("city")?a.locationErrorCity:W.includes("country")?a.locationErrorCountry:a.locationErrorGeneric},Y=async()=>{var N,W,$;if(!(!g.trim()||!p.trim()||!b.trim())){I(null),F(!0);try{const K=await T.functions.invoke("terminal-register-location",{body:{company_id:e,display_name:g.trim(),address:{line1:p.trim(),city:b.trim(),postal_code:v.trim(),country:x.trim()||"NO"}}});if(K.error){const H=K.data,re=(H==null?void 0:H.message)||((N=K.error)==null?void 0:N.message)||"";throw new Error(re)}if(!((W=K.data)!=null&&W.ok))throw new Error((($=K.data)==null?void 0:$.message)||"Failed");c(!1),f(""),h(""),y(""),w(""),I(null),l()}catch(K){I(V((K==null?void 0:K.message)||""))}F(!1)}},X=async()=>{if(!(!k.trim()||!P)){E(!0);try{const{data:N,error:W}=await T.functions.invoke("terminal-register-reader",{body:{company_id:e,registration_code:k.trim(),label:A.trim()||void 0,location_id:P}});if(W)throw W;if(!(N!=null&&N.ok))throw new Error((N==null?void 0:N.message)||"Failed");m(!1),C(""),q(""),D(""),l()}catch(N){qe.error((N==null?void 0:N.message)||"Error adding reader")}E(!1)}},_=async N=>{M(N);try{const{error:W}=await T.from("terminal_readers").delete().eq("id",N).eq("company_id",e);if(W)throw W;l()}catch(W){qe.error((W==null?void 0:W.message)||"Error deleting reader")}M(null)};return o?null:t.jsxs(t.Fragment,{children:[t.jsx(Te,{title:a.terminalTitle,children:t.jsx("p",{className:"text-xs text-muted-foreground -mt-1",children:a.terminalDesc})}),t.jsx(Te,{title:a.locationName,action:t.jsxs("button",{type:"button",className:"sm-add-btn",onClick:()=>c(!0),children:[t.jsx(Rt,{className:"h-3 w-3"})," ",a.addLocation]}),children:r.length===0?t.jsx("p",{className:"text-xs text-muted-foreground py-1",children:a.noLocations}):t.jsx("div",{className:"space-y-0.5",children:r.map(N=>t.jsxs("div",{className:"flex items-center gap-2 py-1.5 text-[13px]",children:[t.jsx(hi,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),t.jsx("span",{className:"text-foreground",children:N.display_name})]},N.id))})}),t.jsx(Te,{title:a.readerLabel,action:t.jsxs("button",{type:"button",className:"sm-add-btn",onClick:()=>{r.length>0&&D(r[0].id),m(!0)},children:[t.jsx(Rt,{className:"h-3 w-3"})," ",a.addReader]}),children:i.length===0?t.jsx("p",{className:"text-xs text-muted-foreground py-1",children:a.noReaders}):t.jsx("div",{className:"space-y-0.5",children:i.map(N=>t.jsxs("div",{className:"flex items-center justify-between gap-2 py-1.5",children:[t.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[t.jsx(nu,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),t.jsxs("div",{className:"min-w-0",children:[t.jsx("span",{className:"text-[13px] text-foreground",children:N.label||N.device_type||"Reader"}),N.device_type&&N.label&&t.jsx("span",{className:"text-xs text-muted-foreground ml-1.5",children:N.device_type})]})]}),t.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[t.jsxs("span",{className:"flex items-center gap-1 text-xs",children:[t.jsx("span",{className:B("h-1.5 w-1.5 rounded-full",N.status==="online"?"bg-emerald-500":"bg-muted-foreground/40")}),N.status==="online"?a.readerOnline:a.readerOffline]}),t.jsx("button",{type:"button",onClick:()=>_(N.id),disabled:L===N.id,className:"p-1 rounded hover:bg-destructive/10 text-muted-foreground hover:text-destructive transition-colors",children:t.jsx(La,{className:"h-3.5 w-3.5"})})]})]},N.id))})}),t.jsx(yi,{open:s,onOpenChange:N=>{N||I(null),c(N)},children:t.jsxs(Na,{className:"max-w-sm z-[60]",children:[t.jsx(Aa,{className:"text-[13px] font-semibold",children:a.addLocation}),t.jsx(bi,{className:"sr-only",children:a.addLocation}),t.jsxs(Te,{children:[t.jsx(pe,{label:a.locationName,children:t.jsx(ge,{value:g,onChange:N=>f(N.target.value),placeholder:a.locationName,className:"sm-input"})}),t.jsx(pe,{label:a.locationAddress,children:t.jsx(ge,{value:p,onChange:N=>h(N.target.value),placeholder:a.locationAddress,className:"sm-input"})}),t.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[t.jsx(pe,{label:a.locationCity,children:t.jsx(ge,{value:b,onChange:N=>y(N.target.value),placeholder:a.locationCity,className:"sm-input"})}),t.jsx(pe,{label:a.locationPostalCode,children:t.jsx(ge,{value:v,onCh
539ange:N=>w(N.target.value),placeholder:a.locationPostalCode,className:"sm-input"})})]}),t.jsx(pe,{label:a.locationCountry,children:t.jsx(ge,{value:x,onChange:N=>S(N.target.value),placeholder:a.locationCountry,className:"sm-input"})})]}),j&&t.jsx("div",{className:"rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-[13px] text-destructive",children:j}),t.jsxs("div",{className:"flex justify-end gap-2 mt-2",children:[t.jsx("button",{type:"button",onClick:()=>c(!1),className:"sm-form-overlay-cancel",children:n.common.cancel}),t.jsx("button",{type:"button",onClick:Y,disabled:z||!g.trim()||!p.trim()||!b.trim(),className:"sm-form-overlay-save disabled:opacity-50",children:z?t.jsx(kt,{className:"h-4 w-4 animate-spin"}):n.common.save})]})]})}),t.jsx(yi,{open:u,onOpenChange:m,children:t.jsxs(Na,{className:"max-w-sm z-[60]",children:[t.jsx(Aa,{className:"text-[13px] font-semibold",children:a.addReader}),t.jsx(bi,{className:"sr-only",children:a.addReader}),t.jsxs(Te,{children:[t.jsx(pe,{label:a.pairingCode,children:t.jsx(ge,{value:k,onChange:N=>C(N.target.value),placeholder:a.pairingCode,className:"sm-input"})}),t.jsx(pe,{label:a.readerLabel,children:t.jsx(ge,{value:A,onChange:N=>q(N.target.value),placeholder:a.readerLabel,className:"sm-input"})}),t.jsxs(pe,{label:a.selectLocation,children:[t.jsxs(Bt,{value:P,onValueChange:D,children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{placeholder:a.selectLocation})}),t.jsx(Lt,{children:r.map(N=>t.jsx(mt,{value:N.id,children:N.display_name},N.id))})]}),r.length===0&&t.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:a.noLocations})]})]}),t.jsxs("div",{className:"flex justify-end gap-2 mt-2",children:[t.jsx("button",{type:"button",onClick:()=>m(!1),className:"sm-form-overlay-cancel",children:n.common.cancel}),t.jsx("button",{type:"button",onClick:X,disabled:R||!k.trim()||!P,className:"sm-form-overlay-save disabled:opacity-50",children:R?t.jsx(kt,{className:"h-4 w-4 animate-spin"}):n.common.save})]})]})})]})}function Gc({url:e,optionalText:n,label:a,onCopy:i}){return t.jsxs("div",{className:"space-y-1.5 mt-1",children:[t.jsx("p",{className:"text-xs text-muted-foreground",children:n}),t.jsxs("div",{className:"space-y-1",children:[t.jsx("label",{className:"text-xs font-medium text-muted-foreground",children:a}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("code",{className:"flex-1 text-xs bg-muted rounded-md px-3 py-2 text-foreground break-all select-all",children:e}),t.jsx("button",{type:"button",onClick:i,className:"shrink-0 p-1.5 rounded-md hover:bg-accent text-muted-foreground hover:text-foreground transition-colors",title:"Copy",children:t.jsx(tu,{className:"h-3.5 w-3.5"})})]})]})]})}const kT=[{code:"en",name:"English",flag:Bs},{code:"no",name:"Norsk",flag:qs},{code:"de",name:"Deutsch",flag:Vs},{code:"fr",name:"Français",flag:Ws},{code:"es",name:"Español",flag:Ks},{code:"it",name:"Italiano",flag:Us},{code:"nl",name:"Nederlands",flag:null}],wT=[{code:"NOK",name:"Norwegian Krone",symbol:"kr"},{code:"EUR",name:"Euro",symbol:"â¬"},{code:"USD",name:"US Dollar",symbol:"$"},{code:"GBP",name:"British Pound",symbol:"£"}],ST=["image/png","image/jpeg","image/webp"],CT=2*1024*1024,NT={name:"",addressLine1:"",addressLine2:"",postalCode:"",city:"",country:"",latitude:null,longitude:null,locationName:"",primaryLanguage:"en"};function AT({open:e,onOpenChange:n}){const a=Jn(),{t:i}=ke(),{currentMembership:r,refreshMemberships:o}=he(),{defaultCurrency:l,primaryLanguage:s}=Al(),{data:c}=tm(),u=Sk(),m=Ck(),g=d.useRef(null),f=st(),p=i.companyProfile,h=r==null?void 0:r.companyId,b=r==null?void 0:r.logoPath,y=(r==null?void 0:r.role)==="administrator"||(r==null?void 0:r.role)==="ledelse",[v,w]=d.useState(NT),[x,S]=d.useState(!1),[k,C]=d.use
539State(!1),[A,q]=d.useState(""),[P,D]=d.useState(!1),z=u.isPending||m.isPending;d.useEffect(()=>{!e||!h||T.from("companies").select("name, address_line1, address_line2, postal_code, city, country, latitude, longitude, location_name, primary_language").eq("id",h).single().then(({data:N})=>{N&&w({name:N.name||"",addressLine1:N.address_line1||"",addressLine2:N.address_line2||"",postalCode:N.postal_code||"",city:N.city||"",country:N.country||"",latitude:N.latitude??null,longitude:N.longitude??null,locationName:N.location_name||"",primaryLanguage:N.primary_language||"en"})})},[e,h]);const F=d.useCallback((N,W)=>{w($=>({...$,[N]:W}))},[]),R=async()=>{if(!h||!y)return;S(!0);const{error:N}=await T.from("companies").update({name:v.name.trim(),address_line1:v.addressLine1.trim()||null,address_line2:v.addressLine2.trim()||null,postal_code:v.postalCode.trim()||null,city:v.city.trim()||null,country:v.country.trim()||null,latitude:v.latitude,longitude:v.longitude,location_name:v.locationName.trim()||null,primary_language:v.primaryLanguage}).eq("id",h);S(!1),N?qe.error(N.message):(o(),f.invalidateQueries({queryKey:["company-locale",h]}),n(!1))},E=d.useMemo(()=>[p.deletingStage1,p.deletingStage2,p.deletingStage3,p.deletingStage4,p.deletingStage5,p.deletingStage6],[p]),[L,M]=d.useState(-1),[j,I]=d.useState(0),V=async()=>{if(!h||A!==(r==null?void 0:r.companyName))return;D(!0),M(0),I(5);const N=E.length;let W=0;const $=setInterval(()=>{W++,W<N&&(M(W),I(Math.min(10+W/N*80,90)))},2500);try{const{data:{session:K}}=await T.auth.getSession(),H=await fetch("https://ofonhoptrjclgvirmyal.supabase.co/functions/v1/delete-company",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${K==null?void 0:K.access_token}`},body:JSON.stringify({company_id:h})});clearInterval($);const re=await H.json();if(!H.ok||!re.ok){D(!1),M(-1),I(0),qe.error(re.message||p.deleteFailed);return}M(N-1),I(100),await new Promise(ie=>setTimeout(ie,800)),C(!1),n(!1),f.clear(),localStorage.removeItem("selected-company-id"),o(),a("/app")}catch{clearInterval($),D(!1),M(-1),I(0),qe.error(p.deleteFailed)}},Y=async N=>{var $;const W=($=N.target.files)==null?void 0:$[0];if(!(!W||!h)){if(!ST.includes(W.type)){qe.error(i.companySettings.invalidFileType);return}if(W.size>CT){qe.error(i.companySettings.fileTooLarge);return}u.mutate({companyId:h,file:W},{onSettled:()=>{g.current&&(g.current.value="")}})}},X=()=>{!h||!b||m.mutate({companyId:h,logoPath:b})},_=d.useCallback((N,W,$)=>{w(K=>({...K,latitude:N,longitude:W,locationName:$}))},[]);return t.jsxs(t.Fragment,{children:[t.jsxs(Tt,{open:e,onOpenChange:n,title:p.title,footer:y?t.jsx(tn,{onCancel:()=>n(!1),onSave:R,onDelete:()=>C(!0),deleteLabel:p.deleteCompany,saveLabel:x?"â¦":i.common.save,disabled:x||!v.name.trim()}):void 0,children:[t.jsx(Te,{title:i.companySettings.logo,children:t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsx("input",{ref:g,type:"file",accept:"image/png,image/jpeg,image/webp",className:"hidden",onChange:Y}),t.jsxs("button",{onClick:()=>{var N;return y&&((N=g.current)==null?void 0:N.click())},disabled:!y||z,className:"relative group rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-ring shrink-0",children:[t.jsx("div",{className:"w-16 h-16 rounded-lg border border-border bg-muted flex items-center justify-center overflow-hidden",children:c?t.jsx("img",{src:c,alt:(r==null?void 0:r.companyName)??"Logo",className:"w-full h-full object-contain"}):t.jsx(Cn,{className:"h-8 w-8 text-muted-foreground"})}),y&&t.jsx("div",{className:"absolute inset-0 rounded-lg bg-black/50 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity",children:z?t.jsx(kt,{className:"h-5 w-5 text-white animate-spin"}):t.jsx(Qd,{className:"h-5 w-5 text-white"})})]}),t.jsxs("div",{className:"space-y-1 min-w-0",children:[t.jsx("p",{className:"text-sm text-muted-foreground",children:i.companySettings.logoHelp}),y&&t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("button",{onClick:()=>{var N;return(N=g.current)==null?void 0:N.click()},disabled:z,className:"text-xs text-primary hover:underline",children:i.companySettings.uploadLogo}),b&&t.jsx("button",{onClick:X,disabled:z,className:"text-xs text-destructive hover:underline",children:i.companySettings.removeLogo})]})]})]})}),t.jsx(Te,{children:t.jsx(pe,{label:p.companyName,children:t.jsx(ge,{className:"sm-input",value:v.name,onChange:N=>F("name",N.target.value),disabled:!y})})}),t.jsxs(Te,{title:p.address,children:[t.jsx(ge,{className:"sm-input",placeholder:p.addressLine1,value:v.addressLine1,onChange:N=>F("addressLine1",N.target.value),disabled:!y}),t.jsx(ge,{className:"sm-input",placeholder:p.addressLine2,value:v.addressLine2,onChange:N=>F("addressLine2",N.target.value),disabled:!y}),t.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[t.jsx(ge,{className:"sm-input",placeholder:p.postalCode,value:v.postalCode,onChange:N=>F("postalCode",N.target.value),disabled:!y}),t.jsx(ge,{className:"sm-input",placeholder:p.city,value:v.city,onChange:N=>F("city",N.target.value),disabled:!y})]}
539),t.jsx(ge,{className:"sm-input",placeholder:p.country,value:v.country,onChange:N=>F("country",N.target.value),disabled:!y})]}),y&&t.jsxs(Te,{title:p.location,children:[t.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:p.locationHelp}),t.jsx(gm,{latitude:v.latitude,longitude:v.longitude,initialQuery:v.locationName,onSelect:_})]}),t.jsxs(Te,{title:i.companySettings.languageAndCurrency,children:[t.jsx(pe,{label:p.primaryLanguage,children:t.jsxs(Bt,{value:v.primaryLanguage,onValueChange:N=>F("primaryLanguage",N),disabled:!y,children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{})}),t.jsx(Lt,{children:kT.map(N=>t.jsx(mt,{value:N.code,children:t.jsxs("span",{className:"flex items-center gap-2",children:[N.flag&&t.jsx("img",{src:N.flag,alt:"",className:"h-4 w-5 object-cover rounded-sm"}),N.name]})},N.code))})]})}),v.primaryLanguage!==s&&t.jsxs("div",{className:"flex items-start gap-2 rounded-md bg-warning/10 border border-warning/30 p-3 text-sm text-warning-foreground",children:[t.jsx(ur,{className:"h-4 w-4 mt-0.5 shrink-0 text-warning"}),t.jsx("span",{children:p.languageChangeWarning})]}),t.jsx(pe,{label:p.defaultCurrency,children:t.jsx("div",{className:"sm-input flex items-center text-muted-foreground",children:(()=>{const N=wT.find(W=>W.code===l);return N?`${N.code} â ${N.name} (${N.symbol})`:l})()})})]})]}),t.jsx(Tt,{open:k,onOpenChange:N=>{P||C(N)},title:p.deleteCompany,footer:P?void 0:t.jsx(tn,{onCancel:()=>C(!1),onSave:V,saveLabel:p.deleteCompany,disabled:A!==(r==null?void 0:r.companyName)}),children:P?t.jsxs("div",{className:"space-y-4 py-4",children:[t.jsx(el,{value:j,className:"h-2"}),t.jsx("p",{className:"text-sm text-muted-foreground text-center animate-pulse",children:E[L]??E[0]})]}):t.jsxs("div",{className:"space-y-4",children:[t.jsxs("div",{className:"flex items-start gap-2 rounded-md bg-destructive/10 border border-destructive/30 p-3 text-sm text-foreground",children:[t.jsx(ur,{className:"h-4 w-4 mt-0.5 shrink-0 text-destructive"}),t.jsx("span",{children:p.deleteCompanyConfirm})]}),t.jsx("p",{className:"text-sm text-muted-foreground",children:p.deleteCompanyWarning}),t.jsx(ge,{className:"sm-input",value:A,onChange:N=>q(N.target.value),placeholder:p.typeToConfirm})]})})]})}function PT({value:e,onChange:n,placeholder:a,visibleChars:i=8}){const[r,o]=d.useState(!1),l=e.length>i?e.slice(0,i)+"â¢".repeat(e.length-i):e;return r?t.jsxs("div",{className:"relative",children:[t.jsx(ge,{className:"sm-input pr-8",value:e,onChange:s=>n(s.target.value),placeholder:a,autoFocus:!0,onBlur:()=>o(!1)}),t.jsx("button",{type:"button",className:"absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",onClick:()=>o(!1),children:t.jsx(jr,{className:"h-3.5 w-3.5"})})]}):t.jsxs("div",{className:"relative",children:[t.jsx(ge,{className:"sm-input pr-8",value:l,readOnly:!0,onClick:()=>o(!0),placeholder:a}),t.jsx("button",{type:"button",className:"absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",onClick:()=>o(!0),children:t.jsx(As,{className:"h-3.5 w-3.5"})})]})}const jT={mode:"none",legalName:"",organizationNumber:"",vatNumber:"",fiscalYearStartMonth:1,taxRegimeCode:"NO",baseCurrencyCode:"NOK",clientKey:"",advanceAccountNo:"2900",giftCardAccountNo:"2902",postingFrequency:"daily"},TT=[{code:"NO",label:"Norway"},{code:"SE",label:"Sweden"},{code:"DK",label:"Denmark"},{code:"DE",label:"Germany"},{code:"GB",label:"United Kingdom"},{code:"FR",label:"France"},{code:"ES",label:"Spain"},{code:"IT",label:"Italy"}];function DT(e,n){return e?n==="poweroffice"?"poweroffice":"internal":"none"}function _T({open:e,onOpenChange:n}){const{t:a}=ke(),i=a.accounting,r=a.companySettings.powerOffice,{currentMembership:o}=he(),l=o==null?void 0:o.companyId,[s,c]=d.useState(jT),[u,m]=d.useState(!1),[g,f]=d.useState(!1),[p,h]=d.useState(null);d.useEffect(()=>{!e||!l||(h(null),Promise.all([T.from("companies").select("accounting_enabled, legal_name, organization_number, vat_number, fiscal_year_start_month, tax_regime_code, base_currency_code, default_currency, accounting_system, advance_account_no, gift_card_account_no, posting_frequency").eq("id",l).single(),T.from("poweroffice_connections").select("client_key").eq("company_id",l).eq("is_active",!0).limit(1).single()]).then(([x,S])=>{var C;const k=x.data;if(k){const A=DT(k.accounting_enabled??!1,k.accounting_system);c({mode:A,legalName:k.legal_name??"",organizationNumber:k.organization_number??"",vatNumber:k.vat_number??"",fiscalYearStartMonth:k.fiscal_year_start_month??1,taxRegimeCode:k.tax_regime_code??"NO",baseCurrencyCode:k.base_currency_code??k.default_currency??"NOK",clientKey:((C=S.data)==null?void 0:C.client_key)??"",advanceAccountNo:k.advance_account_no??"2900",giftCardAccountNo:k.gift_card_account_no??"2902",postingFrequency:k.posting_frequency??"daily"})}}))},[e,l]);const b=async()=>
539{if(!(!s.clientKey.trim()||!l)){f(!0),h(null);try{const{data:x,error:S}=await T.functions.invoke("poweroffice-test",{body:{clientKey:s.clientKey.trim(),companyId:l}});h(S?{ok:!1,message:r.connectionFailed}:{ok:x.ok,message:x.ok?r.connectionSuccess:x.message||r.connectionFailed,clientName:x.clientName})}catch{h({ok:!1,message:r.connectionFailed})}f(!1)}},y=async()=>{if(!l)return;m(!0);const x=s.mode!=="none",S=s.mode==="poweroffice"?"poweroffice":null,{error:k}=await T.from("companies").update({accounting_enabled:x,legal_name:s.mode!=="none"&&s.legalName.trim()||null,organization_number:s.mode!=="none"&&s.organizationNumber.trim()||null,vat_number:s.mode!=="none"&&s.vatNumber.trim()||null,fiscal_year_start_month:s.mode!=="none"?s.fiscalYearStartMonth:null,tax_regime_code:s.mode!=="none"?s.taxRegimeCode:null,base_currency_code:s.mode!=="none"&&s.baseCurrencyCode||null,accounting_system:S,advance_account_no:s.mode!=="none"?s.advanceAccountNo:null,gift_card_account_no:s.mode!=="none"?s.giftCardAccountNo:null,posting_frequency:s.mode!=="none"?s.postingFrequency:null}).eq("id",l);!k&&s.mode==="poweroffice"&&s.clientKey.trim()&&await T.from("poweroffice_connections").upsert({company_id:l,client_key:s.clientKey.trim(),is_active:!0},{onConflict:"company_id,client_organization_number"}),m(!1),k?qe.error(k.message):n(!1)},v=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],w=s.mode==="poweroffice";return t.jsx(Tt,{open:e,onOpenChange:n,title:i.title,footer:t.jsx(tn,{onCancel:()=>n(!1),onSave:y,saveLabel:u?"â¦":a.common.save,disabled:u}),children:t.jsxs("div",{className:"space-y-6",children:[t.jsxs("div",{children:[t.jsx(pe,{label:i.accountingMode,children:t.jsxs(Bt,{value:s.mode,onValueChange:x=>{c(S=>({...S,mode:x})),h(null)},children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{})}),t.jsxs(Lt,{children:[t.jsx(mt,{value:"none",children:i.modeNone}),t.jsx(mt,{value:"internal",children:i.modeInternal}),t.jsx(mt,{value:"poweroffice",children:"PowerOffice Go"})]})]})}),t.jsxs("p",{className:"text-xs text-muted-foreground px-1 mt-1.5",children:[s.mode==="none"&&i.modeNoneDesc,s.mode==="internal"&&i.modeInternalDesc,s.mode==="poweroffice"&&i.modeExternalDesc]})]}),s.mode==="internal"&&t.jsxs(t.Fragment,{children:[t.jsxs(Te,{title:i.generalSection,children:[t.jsx(pe,{label:i.legalName,children:t.jsx(ge,{className:"sm-input",value:s.legalName,onChange:x=>c(S=>({...S,legalName:x.target.value})),placeholder:i.legalName})}),t.jsx(pe,{label:i.organizationNumber,children:t.jsx(ge,{className:"sm-input",value:s.organizationNumber,onChange:x=>c(S=>({...S,organizationNumber:x.target.value})),placeholder:"123 456 789"})}),t.jsx(pe,{label:i.baseCurrency,children:t.jsx(ge,{className:"sm-input",value:s.baseCurrencyCode,readOnly:!0,disabled:!0})})]}),t.jsxs(Te,{title:i.taxSection,children:[t.jsx(pe,{label:i.vatNumber,children:t.jsx(ge,{className:"sm-input",value:s.vatNumber,onChange:x=>c(S=>({...S,vatNumber:x.target.value})),placeholder:"NO123456789MVA"})}),t.jsx(pe,{label:i.taxRegime,children:t.jsxs(Bt,{value:s.taxRegimeCode,onValueChange:x=>c(S=>({...S,taxRegimeCode:x})),children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{})}),t.jsx(Lt,{children:TT.map(x=>t.jsxs(mt,{value:x.code,children:[x.label," (",x.code,")"]},x.code))})]})}),t.jsx(pe,{label:i.fiscalYearStart,children:t.jsxs(Bt,{value:String(s.fiscalYearStartMonth),onValueChange:x=>c(S=>({...S,fiscalYearStartMonth:Number(x)})),children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{})}),t.jsx(Lt,{children:v.map((x,S)=>t.jsx(mt,{value:String(S+1),children:i.months[x]},S+1))})]})})]}),t.jsxs(Te,{title:i.prepaymentAccount,children:[t.jsx(pe,{label:i.advanceAccount,children:t.jsx(ge,{className:"sm-input",value:s.advanceAccountNo,onChange:x=>c(S=>({...S,advanceAccountNo:x.target.value})),placeholder:"2900"})}),t.jsx("p",{className:"text-xs text-muted-foreground px-1 -mt-1",children:i.advanceAccountDesc}),t.jsx(pe,{label:i.giftCardAccount,children:t.jsx(ge,{className:"sm-input",value:s.giftCardAccountNo,onChange:x=>c(S=>({...S,giftCardAccountNo:x.target.value})),placeholder:"2902"})}),t.jsx("p",{className:"text-xs text-muted-foreground px-1 -mt-1",children:i.giftCardAccountDesc}),t.jsx(pe,{label:i.postingFrequency,children:t.jsxs(Bt,{value:s.postingFrequency,onValueChange:x=>c(S=>({...S,postingFrequency:x})),children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{})}),t.jsxs(Lt,{children:[t.jsx(mt,{value:"daily",children:i.freqDaily}),t.jsx(mt,{value:"weekly",children:i.freqWeekly}),t.jsx(mt,{value:"monthly",children:i.freqMonthly})]})]})}),t.jsx("p",{className:"text-xs text-muted-foreground px-1 -mt-1",children:i.postingFrequencyDesc})]})]}),w&&t.jsxs("div",{className:"space-y-3",children:[t.jsx(pe,{label:r.clientKey,children:t.jsx(PT,{value:s.clientKey,onChange:x=>{c(S=>({...S,clientKey:x})),h(null)},placeholder:r.clientKeyPlaceholder,visibleChars:8})}),t.jsxs("div",{className:"flex items-center gap-3 px-1",children:[t.jsxs(Be,{variant:"outline",size:"sm",onClick:b,disabled:g||!s.clientKey.trim(),className:"text-xs",children:[g&&t.jsx(kt,{className:"h-3 w-3 animate-spin mr-1.5"}),r.testConnection]}),p&&t.jsxs("span",{className:`flex items-center gap-1 text-xs ${p.ok?"text-green-500":"text-destructive"}`,children:[p.ok?t.jsx(di,{className:"h-3.5 w-3.5"}):t.jsx(Xd,{className:"h-3.5 w-3.5"}),p.message,p.clientName&&` â ${p.clientName}`]})]})]})]})})}function ET({open:e,onOpenChange:n}){const{t:a}=ke(),i=a.companySettings.powerOffice,{currentMembership:r}
539=he(),o=r==null?void 0:r.companyId,[l,s]=d.useState(!1),[c,u]=d.useState(!1),[m,g]=d.useState(!1),[f,p]=d.useState(null),[h,b]=d.useState(null),[y,v]=d.useState(null),w=async()=>{var C;if(o){s(!0),p(null);try{const{data:A,error:q}=await T.functions.invoke("poweroffice-sync-customers",{body:{companyId:o}});if(q)p({ok:!1,message:i.syncFailed});else if(A!=null&&A.ok){const P=((C=A.errors)==null?void 0:C.length)||0,D=i.syncDone.replace("{pushed}",String(A.pushed||0)).replace("{pulled}",String(A.pulled||0));p({ok:P===0,message:P>0?`${D} (${P} feil)`:D})}else p({ok:!1,message:(A==null?void 0:A.error)||i.syncFailed})}catch{p({ok:!1,message:i.syncFailed})}s(!1)}},x=async C=>{var F;if(!o)return;const A=C==="tax_codes",q=A?u:g,P=A?b:v,D=A?i.syncTaxCodesFailed:i.syncAccountsFailed,z=A?i.syncTaxCodesDone:i.syncAccountsDone;q(!0),P(null);try{const{data:R,error:E}=await T.functions.invoke("poweroffice-sync-finance",{body:{companyId:o,syncType:C}});if(E)P({ok:!1,message:D});else if(R!=null&&R.ok){const L=A?R.taxCodes||0:R.accounts||0,M=((F=R.errors)==null?void 0:F.length)||0,j=z.replace("{count}",String(L));P({ok:M===0,message:M>0?`${j} (${M} feil)`:j})}else P({ok:!1,message:(R==null?void 0:R.error)||D})}catch{P({ok:!1,message:D})}q(!1)},S=C=>C?t.jsx("div",{className:"flex items-center gap-1.5 text-sm",children:C.ok?t.jsxs(t.Fragment,{children:[t.jsx(di,{className:"h-4 w-4 text-primary"}),t.jsx("span",{className:"text-primary",children:C.message})]}):t.jsxs(t.Fragment,{children:[t.jsx(Xd,{className:"h-4 w-4 text-destructive"}),t.jsx("span",{className:"text-destructive",children:C.message})]})}):null,k=(C,A,q,P)=>t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsxs(Be,{variant:"outline",size:"sm",onClick:q,disabled:A,children:[A?t.jsx(kt,{className:"h-4 w-4 animate-spin mr-2"}):t.jsx(gh,{className:"h-4 w-4 mr-2"}),A?i.syncing:C]}),S(P)]});return t.jsx(Tt,{open:e,onOpenChange:n,title:i.title,footer:null,children:t.jsxs("div",{className:"space-y-6",children:[t.jsxs(Te,{title:i.syncCustomers,children:[t.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:i.syncCustomersDesc}),k(i.syncCustomers,l,w,f)]}),t.jsxs(Te,{title:i.syncTaxCodes,children:[t.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:i.syncTaxCodesDesc}),k(i.syncTaxCodes,c,()=>x("tax_codes"),h)]}),t.jsxs(Te,{title:i.syncAccounts,children:[t.jsx("p",{className:"text-sm text-muted-foreground mb-3",children:i.syncAccountsDesc}),k(i.syncAccounts,m,()=>x("accounts"),y)]})]})})}const $c=["stripe","nexi","vipps","getyourguide","viator","gift_card","manual","distributor"];function RT({open:e,onOpenChange:n}){const{t:a}=ke(),i=a.accounting,{currentMembership:r}=he(),o=r==null?void 0:r.companyId,[l,s]=d.useState([]),[c,u]=d.useState([]),[m,g]=d.useState(!1),[f,p]=d.useState([]);d.useEffect(()=>{!e||!o||Promise.all([T.from("payment_settlement_accounts").select("id, payment_method, gl_account_id").eq("company_id",o),T.from("gl_accounts").select("id, account_no, account_name").eq("company_id",o).eq("is_active",!0).order("account_no")]).then(([k,C])=>{const A=(k.data||[]).map(q=>({id:q.id,payment_method:q.payment_method,gl_account_id:q.gl_account_id}));s(A),p(A),u(C.data||[])})},[e,o]);const h=k=>({stripe:i.providerStripe,nexi:i.providerNexi,vipps:i.providerVipps,getyourguide:i.providerGYG,viator:i.providerViator,gift_card:i.providerGiftCard,manual:i.providerManual,distributor:i.providerDistributor})[k]||k,b=new Set(l.map(k=>k.payment_method)),y=$c.filter(k=>!b.has(k)),v=()=>{y.length!==0&&s(k=>[...k,{payment_method:y[0],gl_account_id:""}])},w=k=>{s(C=>C.filter((A,q)=>q!==k))},x=(k,C,A)=>{s(q=>q.map((P,D)=>D===k?{...P,[C]:A}:P))},S=async()=>{if(!o)return;g(!0);const k=new Set(f.map(P=>P.id).filter(Boolean)),C=new Set(l.map(P=>P.id).filter(Boolean)),A=[...k].filter(P=>!C.has(P));A.length>0&&await T.from("payment_settlement_accounts").delete().in("id",A);const q=l.filter(P=>P.gl_account_id);for(const P of q)P.id?await T.from("payment_settlement_accounts").update({payment_method:P.payment_method,gl_account_id:P.gl_account_id}).eq("id",P.id):await T.from("payment_settlement_accounts").insert({company_id:o,payment_method:P.payment_method,gl_account_id:P.gl_account_id});g(!1),n(!1),qe.success(a.common.save)};return t.jsx(Tt,{open:e,onOpenChange:n,title:i.settlementAccounts,footer:t.jsx(tn,{onCancel:()=>n(!1),onSave:S,saveLabel:m?"â¦":a.common.save,disabled:m}),children:t.jsxs("div",{className:"space-y-4",children:[t.jsx("p",{className:"text-xs text-muted-foreground",children:i.settlementAccountsDesc}),l.length===0&&t.jsx("p",{className:"text-sm text-muted-foreground py-4 text-center",children:i.noSettlementAccounts}),l.map((k,C)=>t.jsxs("div",{className:"flex items-end gap-2 p-3 rounded-lg bg-muted/30",children:[t.jsxs("div",{className:"flex-1 space-y-2",children:[t.jsx(pe,{label:i.paymentProvider,children:t.jsxs(Bt,{value:k.payment_method,onValueChange:A=>x(C,"payment_method",A),children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{})}),t.jsx(Lt,{children:$c.filter(A=>A===k.payment_method||!b.has(A)).map(A=>t.jsx(mt,{value:A,children:h(A)},A))})]})}),t.jsx(pe,{label:i.glAccount,children:t.jsxs(Bt,{value:k.gl_account_id,onValueChange:A=>x(C,"gl_account_id",A),children:[t.jsx(It,{className:"sm-select-trigger",children:t.jsx(Jt,{placeholder:i.glAccount})}),t.jsx(Lt,{children:c.map(A=>t.jsxs(mt,{value:A.id,children:[A.account_no," â ",A.account_name]},A.id))})]})})]}),t.jsx(Be,{variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0 text-muted-foreground hover:text-destructive",onClick:()=>w(C),children:t.jsx(La,{className:"h-3.5 w-3.5"})})]},C)),y.length>0&&t.jsxs(Be,{variant:"outline",size:"sm",className:"sm-add-btn",onClick:v,children:[t.jsx(Rt,{className:"h-3.5 w-3.5 mr-1"}),i.addSettlementAccount]})]})})}function nn({title:e,description:n,onClick:a,disabled:i}){return t.jsxs(Qn,{className:`group cursor-pointer p-4 flex items-start gap-3 transition-all ${i?"opacity-60 cursor-not-allowed":"hover:brightness-[1.04]"}`,onClick:i?void 0:a,children:[t.jsxs("div",{className:"flex-1 min-w-0",children:[t.jsx("div",{className:"font-medium text-sm text-foreground leading-tight",children:e}),t.jsx("p",{className:"text-[13px] text-muted-foreground mt-0.5 leading-snug",children:n})]}
539),t.jsx(Ns,{className:"h-4 w-4 text-muted-foreground/50 shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"})]})}function Io({title:e,children:n}){return t.jsxs("div",{children:[t.jsx("h2",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground mb-3",children:e}),t.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3",children:n})]})}function zT(){const e=Jn(),{t:n}=ke(),{currentMembership:a}=he();st();const i=a==null?void 0:a.companyId,r=(a==null?void 0:a.role)==="administrator"||(a==null?void 0:a.role)==="ledelse",o=n.companySettings.sections,l=n.companySettings.cards,[s,c]=d.useState(!1),[u,m]=d.useState(!1),[g,f]=d.useState(!1),[p,h]=d.useState(!1),[b,y]=d.useState(!1),[v,w]=d.useState(""),[x,S]=d.useState(""),[k,C]=d.useState(!1),[A,q]=d.useState(!1),[P,D]=d.useState(!1),[z,F]=d.useState(""),[R,E]=d.useState(""),[L,M]=d.useState(!1),[j,I]=d.useState(null);d.useEffect(()=>{i&&T.from("companies").select("privacy_policy_url, terms_url, accounting_system, accounting_enabled").eq("id",i).single().then(({data:N})=>{N&&(w(N.privacy_policy_url||""),S(N.terms_url||""),I(N.accounting_system||null),M(N.accounting_enabled??!1)),q(!0)})},[i]);const V=N=>{m(N),!N&&i&&T.from("companies").select("accounting_system, accounting_enabled").eq("id",i).single().then(({data:W})=>{W&&(I(W.accounting_system||null),M(W.accounting_enabled??!1))})},Y=async()=>{if(!i)return;C(!0);const{error:N}=await T.from("companies").update({privacy_policy_url:z.trim()||null,terms_url:R.trim()||null}).eq("id",i);C(!1),N?qe.error(N.message):(w(z.trim()),S(R.trim()),D(!1))},[X,_]=d.useState(!1);return t.jsxs("div",{className:"h-full overflow-auto pt-1 px-6 pb-6",children:[t.jsx(Lr,{children:null}),t.jsxs("div",{className:"space-y-8 max-w-5xl",children:[t.jsxs(Io,{title:o.business,children:[t.jsx(nn,{title:n.companyProfile.title,description:l.companyProfileDesc,onClick:()=>c(!0)}),t.jsx(nn,{title:n.companyInbox.inbox,description:l.emailDesc,onClick:()=>r&&_(!0),disabled:!r})]}),t.jsxs(Io,{title:o.salesBooking,children:[t.jsx(nn,{title:l.discountCodes,description:l.discountCodesDesc,onClick:()=>e("/app/settings/promo-codes")}),t.jsx(nn,{title:n.companySettings.salesTerms,description:l.salesTermsDesc,onClick:()=>{r&&(F(v),E(x),D(!0))},disabled:!r}),t.jsx(nn,{title:n.nav.distributors,description:l.distributorsDesc,onClick:()=>e("/app/settings/distributors")})]}),t.jsxs(Io,{title:o.paymentsAccounting,children:[t.jsx(nn,{title:l.paymentProviders,description:l.paymentProvidersDesc,onClick:()=>r&&h(!0),disabled:!r}),t.jsx(nn,{title:n.accounting.title,description:l.accountingDesc,onClick:()=>r&&V(!0),disabled:!r}),t.jsx(nn,{title:l.revenueProfiles,description:l.revenueProfilesDesc,onClick:()=>e("/app/settings/income-profiles")}),t.jsx(nn,{title:l.vatCodes,description:l.vatCodesDesc,onClick:()=>e("/app/settings/tax-codes")}),t.jsx(nn,{title:n.pageTitles.financeAccounts,description:l.chartOfAccountsDesc,onClick:()=>e("/app/settings/accounts")}),L&&t.jsx(nn,{title:n.accounting.settlementAccounts,description:n.accounting.settlementAccountsDesc,onClick:()=>r&&y(!0),disabled:!r}),L&&j==="poweroffice"&&t.jsx(nn,{title:n.companySettings.powerOffice.title,description:l.powerOfficeDesc,onClick:()=>r&&f(!0),disabled:!r})]})]}),t.jsx(Tt,{open:P,onOpenChange:D,title:n.companySettings.salesTerms,footer:t.jsx(tn,{onCancel:()=>D(!1),onSave:Y,saveLabel:k?"â¦":n.common.save,disabled:k}),children:t.jsxs("div",{className:"space-y-5",children:[t.jsx("p",{className:"text-sm text-muted-foreground",children:n.companySettings.salesTermsHelp}),t.jsxs("div",{className:"space-y-1.5",children:[t.jsx("label",{className:"text-sm font-medium text-foreground",children:n.companySettings.privacyPolicyUrl}),t.jsx(ge,{type:"url",placeholder:"https://...",value:z,onChange:N=>F(N.target.value)})]}),t.jsxs("div",{className:"space-y-1.5",children:[t.jsx("label",{className:"text-sm font-medium text-foreground",children:n.companySettings.termsUrl}),t.jsx(ge,{type:"url",placeholder:"https://...",value:R,onChange:N=>E(N.target.value)})]})]})}),t.jsx(AT,{open:s,onOpenChange:c}),t.jsx(_T,{open:u,onOpenChange:V}),t.jsx(ET,{open:g,onOpenChange:f}),i&&t.jsx(bT,{open:p,onOpenChange:h,companyId:i}),t.jsx(RT,{open:b,onOpenChange:y}),t.jsx(IT,{open:X,onOpenChange:_,companyId:i})]})}const MT=/^[a-z0-9-]{3,40}$/;function IT({open:e,onOpenChange:n,companyId:a}){const{t:i}=ke(),r=i.companyInbox,{data:o}
539=fT(),l=hT(),[s,c]=d.useState(""),[u,m]=d.useState(!0),[g,f]=d.useState(!1),[p,h]=d.useState("");d.useEffect(()=>{e&&o?(c(o.inbox_alias||""),m(o.is_enabled),h(o.booking_reply_to||"")):e&&!o&&(c(""),m(!0),h(""))},[e,o]);const b=!s||MT.test(s),y=s?`${s}@salesmate.net`:"",v=()=>{n(!1),l.mutateAsync({inbox_alias:s||null,is_enabled:u,booking_reply_to:p||null}).catch(()=>qe.error(i.common.saveFailed))},w=()=>{y&&(navigator.clipboard.writeText(y),f(!0),qe.success(r.addressCopied),setTimeout(()=>f(!1),2e3))};return t.jsx(Tt,{open:e,onOpenChange:n,title:r.inbox,footer:t.jsx(tn,{onCancel:()=>n(!1),onSave:v,saveLabel:i.common.save,disabled:!!s&&!b}),children:t.jsxs("div",{className:"space-y-5",children:[t.jsx("p",{className:"text-sm text-muted-foreground",children:r.inboxHelperText}),t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("label",{className:"text-sm font-medium text-foreground",children:r.inboxEnabled}),t.jsx(Sr,{checked:u,onCheckedChange:m})]}),t.jsxs("div",{className:"space-y-1.5",children:[t.jsx("label",{className:"text-sm font-medium text-foreground",children:r.inboxAlias}),t.jsx(ge,{value:s,onChange:x=>c(x.target.value.toLowerCase().replace(/[^a-z0-9-]/g,"")),placeholder:r.aliasPlaceholder,maxLength:40,className:"sm-input"}),s&&!b&&t.jsx("p",{className:"text-xs text-destructive",children:r.aliasFormatError})]}),y&&t.jsxs("div",{className:"space-y-1.5",children:[t.jsx("label",{className:"text-sm font-medium text-foreground",children:r.inboxAddress}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("code",{className:"flex-1 text-xs bg-muted rounded-md px-3 py-2 truncate",children:y}),t.jsx(Be,{size:"icon",variant:"ghost",className:"h-8 w-8 shrink-0",onClick:w,children:g?t.jsx(Xt,{className:"h-4 w-4 text-green-500"}):t.jsx(tu,{className:"h-4 w-4"})})]})]})]})})}const LT=d.lazy(()=>fe(()=>import("./Dashboard-ofLh_z8d.js"),__vite__mapDeps([17,1,2,18,5,8,19,7,20,21,22,23,24,25,26,27,28,16,4,6,29]))),FT=d.lazy(()=>fe(()=>import("./SalesTerms-CFkOiUnd.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),OT=d.lazy(()=>fe(()=>import("./PrivacyPolicy-MMMlpxb9.js"),__vite__mapDeps([9,1,2,3,4,5,6,7,8]))),BT=d.lazy(()=>fe(()=>import("./CookiePolicy-BWZ9pE8D.js"),__vite__mapDeps([10,1,2,3,4,5,6,7,8]))),qT=d.lazy(()=>fe(()=>import("./CreateCompany-DUcwrYkN.js"),__vite__mapDeps([30,1,2,4,5,6,7,8]))),VT=d.lazy(()=>fe(()=>import("./AcceptInvite-DgYtiEfw.js"),__vite__mapDeps([31,1,2,4,5,6,7,8]))),KT=d.lazy(()=>fe(()=>import("./AcceptPartnerInvite-BYPZXm0L.js"),__vite__mapDeps([32,1,2,33,4,5,6,7,8]))),Yc=d.lazy(()=>fe(()=>import("./PublicInfoScreen-DMZ1gfX2.js"),__vite__mapDeps([34,1,2,35,36,37,38,12,13,8,16,39,4,5,6,7,14,15,40,41,42,43,44,45,46]))),WT=d.lazy(()=>fe(()=>import("./PublicBookingConfirmation-DDrnDaOm.js"),__vite__mapDeps([47,1,2,12,13,8,44,4,5,6,7]))),UT=d.lazy(()=>fe(()=>import("./PublicWidget-GtjFXCuN.js"),__vite__mapDeps([48,1,2,35,36,37,38,12,13,8,16,39,4,5,6,7,14,15,40,41,42,43,44,45,46]))),HT=d.lazy(()=>fe(()=>import("./PublicMinimalWidget-DObDOlGX.js"),__vite__mapDeps([11,1,2,12,13,8,14,15,5,16,4,6,7]))),GT=d.lazy(()=>fe(()=>import("./PublicCheckout-lv0qp216.js"),__vite__mapDeps([49,1,2,12,14,15,5,40,46,4,6,7,8,41,42,13,43,44,45]))),$T=d.lazy(()=>fe(()=>import("./PublicItinerary-DFB6dunF.js"),__vite__mapDeps([50,1,2,13,8,12,37,7,3,51,26,52,4,5,6]))),YT=d.lazy(()=>fe(()=>import("./PublicGallery-FQqnSiVD.js"),__vite__mapDeps([53,1,2,37,12,54,43,4,5,6,7,8]))),QT=d.lazy(()=>fe(()=>import("./CheckoutSuccess-BROsK-rS.js"),__vite__mapDeps([55,1,2,44,8,4,5,6,7]))),JT=d.lazy(()=>fe(()=>import("./CheckoutCancel-DSIbVrf9.js"),__vite__mapDeps([56,1,2,12,4,5,6,7,8]))),ZT=d.lazy(()=>fe(()=>import("./Contacts-d2GiQvt0.js"),__vite__mapDeps([57,1,2,43,22,7,54,8,4,5,6]))),XT=d.lazy(()=>fe(()=>import("./Projects-BYnfeM4W.js"),__vite__mapDeps([58,1,2,4,5,6,7,8]))),eD=d.lazy(()=>fe(()=>import("./ProjectDetail-CVacNjfA.js"),__vite__mapDeps([59,1,2,7,3,8,4,5,6]))),tD=d.lazy(()=>fe(()=>import("./Resources-uSTDMeoG.js"),__vite__mapDeps([60,1,2,4,5,6,7,8]))),nD=d.lazy(()=>fe(()=>import("./ResourceTypes-C1sPO8A0.js"),__vite__mapDeps([61,1,2,62,16,4,5,6,7,8]))),aD=d.lazy(()=>fe(()=>import("./Blockings-qso3m7AP.js"),__vite__mapDeps([63,1,2,7,4,5,6,8]))),iD=d.lazy(()=>fe(()=>import("./Leaves-DkyLE200.js"),__vite__mapDeps([64,1,2,19,7,4,5,6,8]))),rD=d.lazy(()=>fe(()=>import("./Personnel-BZO2T4Mg.js"),__vite__mapDeps([65,1,2,66,8,4,5,6,7]))),oD=d.lazy(()=>fe(()=>import("./Competences-bKxHD9EE.js"),__vite__mapDeps([67,1,2,16,4,5,6,7,8]))),sD=d.lazy(()=>fe(()=>import("./Activities-Bp9yZu89.js"),__vite__mapDeps([68,1,2,69,70,71,33,4,7,36,72,73,74,62,75,76,77,54,5,6,8]))),lD=d.lazy(()=>fe(()=>import("./PriceCategories-D-Hoct5J.js"),__vite__mapDeps([78,1,2,69,70,7,4,5,6,8]))),cD=d.lazy(()=>fe(()=>import("./ActivityCategories-B9o3Y8Mw.js"),__vite__mapDeps([79,1,2,75,4,5,6,7,8]))),dD=d.lazy(()=>fe(()=>import("./RecurringSeriesDetail-BSOe11zJ.js"),__vite__mapDeps([80,1,2,71,33,4,7,3,8,5,6]))),uD=d.lazy(()=>fe(()=>import("./Booking-CmblAHvI.js"),__vite__mapDeps([81,1,2,23,82,83,74,4,5,6,7,8]))),mD=d.lazy(()=>fe(()=>import("./Bookings-D8gTOogY.js"),__vite__mapDeps([84,1,2,4,38,12,13,8,16,39,5,6,7,70]))),pD=d.lazy(()=>fe(()=>import("./Chat-BDN8d9lX.js"),__vite__mapDeps([85,1,2,21,25,22,7,4,5,6,8]))),gD=d.lazy(()=>fe(()=>import("./PaymentLogs-Jv0jR1s-.js"),__vite__mapDeps([86,1,2,3,51,4,5,6,7,8]))),Qc=d.lazy(()=>fe(()=>import("./PaymentTransactions-KLnTP3Pr.js"),__vite__mapDeps([87,1,2,73,4,88,5,6,7,8]))),fD=d.lazy(()=>fe(()=>import("./PromoCodes-iI8fc44-.js"),__vite__mapDeps([89,1,2,82,8,4,5,6,7]))),hD=d.lazy(()=>fe(()=>import("./CompanyInbox-BWU0_rSm.js"),__vite__mapDeps([90,1,2,91,43,66,4,5,6,7,8]))),vD=d.lazy(()=>fe(()=>import("./InboundEmailDetail-lxVATPOC.js"),__vite__mapDeps([92,1,2,91,8,4,5,6,7]))),yD=d.lazy(()=>fe(()=>import("./GiftCards-BI-nmPjC.js"),__vite__mapDeps([93,1,2,88,8,4,5,6,7]))),bD=d.lazy(()=>fe(()=>import("./Partners-DOOxzfU1.js"),__vite__mapDeps([94,1,2,83,87,73,4,88,5,6,7,8,27]))),xD=d.lazy(()=>fe(()=>import("./Distributors-Ci_i6SfT.js"),__vite__mapDeps([95,1,2,8,4,5,6,7]))),kD=d.lazy(()=>fe(()=>import("./IncomeProfiles-BFaAIjXB.js"),__vite__mapDeps([96,1,2,76,77,33,4,8,5,6,7]))),wD=d.lazy(()=>fe(()=>import("./ResourcePlanner-ngpa8HnK.js"),__vite__mapDeps([97,1,2,73,4,19,7,8,5,6]))),SD=d.lazy(()=>fe(()=>import("./MyTrips-CnQhpOvb.js"),__vite__mapDeps([98,1,2,73,4,37,45,43,7,72,8,3,52,20,5,6]))),CD=d.lazy(()=>fe(()=>import("./MyProfile-BCaTBoJq.js"),__vite__mapDeps([99,1,2,24,23,7,4,5,6,8]))),ND=d.lazy(()=>fe(()=>
539import("./Finance-t4XVWrhp.js"),__vite__mapDeps([100,1,2,28,4,5,6,7,8]))),AD=d.lazy(()=>fe(()=>import("./FinanceRegister-CRtrNUai.js"),__vite__mapDeps([101,1,2,72,54,4,5,6,7,8]))),PD=d.lazy(()=>fe(()=>import("./FinanceAccounts-JtsECdEd.js"),__vite__mapDeps([102,1,2,77,4,5,6,7,8]))),jD=d.lazy(()=>fe(()=>import("./FinanceJournal-Dr19XCqd.js"),__vite__mapDeps([103,1,2,77,8,4,5,6,7]))),TD=d.lazy(()=>fe(()=>import("./FinanceDocuments-CmjfGesu.js"),__vite__mapDeps([104,1,2,77,8,4,5,6,7]))),DD=d.lazy(()=>fe(()=>import("./FinanceTaxCodes-C0LEPu-H.js"),__vite__mapDeps([105,1,2,77,4,5,6,7,8]))),_D=d.lazy(()=>fe(()=>import("./FinanceReceivables-BD5T1u_b.js"),__vite__mapDeps([106,1,2,8,4,5,6,7]))),ED=d.lazy(()=>fe(()=>import("./FinancePayables-DqUzEtxQ.js"),__vite__mapDeps([107,1,2,8,4,5,6,7]))),Jc=()=>t.jsx("div",{className:"flex items-center justify-center w-full h-full min-h-[40vh]",children:t.jsx("div",{className:"h-6 w-6 animate-spin rounded-full border-2 border-muted-foreground/30 border-t-foreground"})});function RD(){d.useEffect(()=>{const e=()=>{fe(()=>import("./Dashboard-ofLh_z8d.js"),__vite__mapDeps([17,1,2,18,5,8,19,7,20,21,22,23,24,25,26,27,28,16,4,6,29])),fe(()=>import("./Activities-Bp9yZu89.js"),__vite__mapDeps([68,1,2,69,70,71,33,4,7,36,72,73,74,62,75,76,77,54,5,6,8])),fe(()=>import("./Bookings-D8gTOogY.js"),__vite__mapDeps([84,1,2,4,38,12,13,8,16,39,5,6,7,70])),fe(()=>import("./Resources-uSTDMeoG.js"),__vite__mapDeps([60,1,2,4,5,6,7,8])),fe(()=>import("./Personnel-BZO2T4Mg.js"),__vite__mapDeps([65,1,2,66,8,4,5,6,7])),fe(()=>import("./MyProfile-BCaTBoJq.js"),__vite__mapDeps([99,1,2,24,23,7,4,5,6,8]))};if(typeof window<"u"){const n=window.requestIdleCallback;typeof n=="function"?n(e):setTimeout(e,1500)}},[])}function zD({children:e}){return RD(),t.jsx(t.Fragment,{children:e})}function MD(){return t.jsx(d.Suspense,{fallback:t.jsx(Jc,{}),children:t.jsxs(sr,{children:[t.jsx(se,{path:"/",element:t.jsx(Du,{})}),t.jsx(se,{path:"/terms",element:t.jsx(FT,{})}),t.jsx(se,{path:"/privacy",element:t.jsx(OT,{})}),t.jsx(se,{path:"/cookies",element:t.jsx(BT,{})}),t.jsx(se,{path:"/login",element:t.jsx(Ix,{})}),t.jsx(se,{path:"/create-company",element:t.jsx(qT,{})}),t.jsx(se,{path:"/invite",element:t.jsx(VT,{})}),t.jsx(se,{path:"/partner-invite",element:t.jsx(KT,{})}),t.jsx(se,{path:"/public/booking/:publicSlug",element:t.jsx(Yc,{})}),t.jsx(se,{path:"/public/booking/:publicSlug/confirmation",element:t.jsx(WT,{})}),t.jsx(se,{path:"/embed/widget/:slug",element:t.jsx(UT,{})}),t.jsx(se,{path:"/embed/widget-minimal/:slug",element:t.jsx(HT,{})}),t.jsx(se,{path:"/public/itinerary/:token",element:t.jsx($T,{})}),t.jsx(se,{path:"/public/gallery/:token",element:t.jsx(YT,{})}),t.jsx(se,{path:"/public/checkout/:cartToken",element:t.jsx(GT,{})}),t.jsx(se,{path:"/public/checkout/success",element:t.jsx(QT,{})}),t.jsx(se,{path:"/public/checkout/cancel",element:t.jsx(JT,{})}),t.jsx(se,{path:"/app/*",element:t.jsx(bw,{children:t.jsx(yw,{children:t.jsx(zD,{children:t.jsx(d.Suspense,{fallback:t.jsx(Jc,{}),children:t.jsxs(sr,{children:[t.jsx(se,{path:"/",element:t.jsx(LT,{})}),t.jsx(se,{path:"/calendar",element:t.jsx(wj,{})}),t.jsx(se,{path:"/sales",element:t.jsx(S1,{})}),t.jsx(se,{path:"/customers",element:t.jsx(pT,{})}),t.jsx(se,{path:"/customers/:customerId",element:t.jsx(ya,{to:"/app/customers",replace:!0})}),t.jsx(se,{path:"/contacts",element:t.jsx(ZT,{})}),t.jsx(se,{path:"/projects",element:t.jsx(XT,{})}),t.jsx(se,{path:"/projects/:projectId",element:t.jsx(eD,{})}),t.jsx(se,{path:"/resources",element:t.jsx(tD,{})}),t.jsx(se,{path:"/resource-types",element:t.jsx(nD,{})}),t.jsx(se,{path:"/blockings",element:t.jsx(aD,{})}),t.jsx(se,{path:"/leaves",element:t.jsx(iD,{})}),t.jsx(se,{path:"/personnel",element:t.jsx(rD,{})}),t.jsx(se,{path:"/competences",element:t.jsx(oD,{})}),t.jsx(se,{path:"/activities",element:t.jsx(sD,{})}),t.jsx(se,{path:"/price-categories",element:t.jsx(lD,{})}),t.jsx(se,{path:"/activity-categories",element:t.jsx(cD,{})}),t.jsx(se,{path:"/activities/series/:seriesId",element:t.jsx(dD,{})}),t.jsx(se,{path:"/booking",element:t.jsx(uD,{})}),t.jsx(se,{path:"/bookings",element:t.jsx(mD,{})}),t.jsx(se,{path:"/booking/:publicSlug",element:t.jsx(Yc,{})}),t.jsx(se,{path:"/chat",element:t.jsx(pD,{})}),t.jsx(se,{path:"/settings",element:t.jsx(zT,{})}),t.jsx(se,{path:"/settings/payment-logs",element:t.jsx(gD,{})}),t.jsx(se,{path:"/settings/payment-transactions",element:t.jsx(Qc,{})}),t.jsx(se,{path:"/partner-ledger",element:t.jsx(Qc,{})}),t.jsx(se,{path:"/settings/promo-codes",element:t.jsx(fD,{})}),t.jsx(se,{path:"/settings/inbox",element:t.jsx(hD,{})}),t.jsx(se,{path:"/settings/inbox/:emailId",element:t.jsx(vD,{})}),t.jsx(se,{path:"/gift-cards",element:t.jsx(yD,{})}),t.jsx(se,{path:"/partners",element:t.jsx(bD,{})}),t.jsx(se,{path:"/settings/distributors",element:t.jsx(xD,{})}),t.jsx(se,{path:"/settings/income-profiles",element:t.jsx(kD,{})}),t.jsx(se,{path:"/resource-planner",element:t.jsx(wD,{})}),t.jsx(se,{path:"/my-trips",element:t.jsx(SD,{})}),t.jsx(se,{path:"/my-profile",element:t.jsx(CD,{})}),t.jsx(se,{path:"/finance",element:t.jsx(ND,{})}),t.jsx(se,{path:"/finance/register",element:t.jsx(AD,{})}),t.jsx(se,{path:"/settings/accounts",element:t.jsx(PD,{})}),t.jsx(se,{path:"/finance/journal",element:t.jsx(jD,{})}),t.jsx(se,{path:"/finance/documents",element:t.jsx(TD,{})}),t.jsx(se,{path:"/settings/tax-codes",element:t.jsx(DD,{})}),t.jsx(se,{path:"/finance/receivables",element:t.jsx(_D,{})}),t.jsx(se,{path:"/finance/payables",element:t.jsx(ED,{})}),t.jsx(se,{path:"*",element:t.jsx(Lx,{})})]})})})})})})]})})}const Zc=new fg({defaultOptions:{queries:{staleTime:5*60*1e3,gcTime:30*60*1e3,refetchOnWindowFocus:!1,refetchOnReconnect:!1,retry:1},mutations:{retry:0}}}),ID=["/","/terms","/privacy","/cookies"],LD=()=>{const e=typeof window<"u"?window.location.pathname:"",n=e.startsWith("/embed/widget-minimal/"),a=ID.includes(e);return n?t.jsx(ho,{children:t.jsxs(eo,{children:[t.jsx(lo,{}),t.jsx(yx,{})]})}):a?t.jsx(ho,{children:t.jsx(Zo,{children:t.jsx(Dl,{client:Zc,children:t.jsx(Zl,{attribute:"class",defaultTheme:"light",enableSystem:!1,children:t.jsxs(uc,{children:[t.jsx(lo,{}),t.jsx(eo,{children:t.jsx(hx,{})})]})})})})}):t.jsx(ho,{children:t.jsx(Zo,{children:t.jsx(Dl,{client:Zc,children:t.jsx(Zl,{attribute:"class",defaultTheme:"light",enableSystem:!1,children:t.jsx(uc,{children:t.jsx(Qb,{children:t.jsxs(Jb,{children:[t.jsx(sv,{}),t.jsx(lo,{}),t.jsx(Zb,{}),t.jsx(ky,{children:t.jsx(eo,{children:t.jsx(MD,{})})})]})})})})})})})},ug=document.getElementById("root"),FD=window.location.pathname.startsWith("/embed/widget-minimal/");FD&&(document.documentElement.classList.remove("dark"),document.documentElement.style.colorScheme="light",document.documentElement.style.backgroundColor="transparent",document.body.style.backgroundColor="transparent",ug.style.backgroundColor="transparent");Td(ug).render(t.jsx(LD,{}));export{mp as $,Ua as A,Ha as B,Cs as C,ur as D,pn as E,Be as F,nh as G,zt as H,wh as I,ja as J,vr as K,kt as L,hi as M,Ch as N,Sh as O,Rt as P,_i as Q,B as R,iu as S,bh as T,_r as U,gn as V,Ps as W,Mt as X,Wn as Y,SP as Z,fe as _,hn as a,rg as a$,Qn as a0,Da as a1,Cr as a2,Wo as a3,xP as a4,AP as a5,DP as a6,$n as a7,Nh as a8,xh as a9,ga as aA,ge as aB,Un as aC,di as aD,zx as aE,rh as aF,La as aG,Bs as aH,qs as aI,Vs as aJ,Ks as aK,Ws as aL,Us as aM,vh as aN,nu as aO,bl as aP,xl as aQ,kl as aR,Wr as aS,t_ as aT,yh as aU,Of as aV,$l as aW,ru as aX,Xf as aY,lN as aZ,Dr as a_,Hl as aa,eu as ab,Ri as ac,yi as ad,Na as ae,am as af,Aa as ag,Br as ah,ds as ai,us as aj,Ls as ak,Ms as al,up as am,Sl as an,Tr as ao,Hr as ap,Is as aq,Rn as ar,An as as,Gr as at,Lr as au,$r as av,ih as aw,ta as ax,Cn as ay,R1 as az,Xd as b,x_ as b$,zr as b0,Mr as b1,Ir as b2,uh as b3,cr as b4,sh as b5,dr as b6,lr as b7,Bt as b8,It as b9,u_ as bA,Qr as bB,Jr as bC,wn as bD,Sn as bE,Zd as bF,n1 as bG,yr as bH,Vc as bI,ui as bJ,Lf as bK,xi as bL,il as bM,p_ as bN,g_ as bO,Sr as bP,Mf as bQ,h_ as bR,Vr as bS,zf as bT,rl as bU,i_ as bV,Al as bW,v_ as bX,Lk as bY,n_ as bZ,tu as b_,Lt as ba,mt as bb,au as bc,eh as bd,Iu as be,Lu as bf,Fu as bg,Hs as bh,ag as bi,mT as bj,j1 as bk,cl as bl,dl as bm,og as bn,qw as bo,m_ as bp,D1 as bq,Tt as br,tn as bs,Te as bt,pe as bu,Gn as bv,va as bw,Jt as bx,c_ as by,d_ as bz,ee as c,dp as c$,bi as c0,fh as c1,l_ as c2,a1 as c3,A_ as c4,C_ as c5,ol as c6,sl as c7,Js as c8,Qs as c9,Ij as cA,Qp as cB,Jp as cC,Xp as cD,eg as cE,Zp as cF,ng as cG,tg as cH,h0 as c
539I,Um as cJ,f_ as cK,Wf as cL,Zu as cM,Xu as cN,em as cO,im as cP,Vk as cQ,Kk as cR,hm as cS,is as cT,vm as cU,t1 as cV,hh as cW,mh as cX,th as cY,Fr as cZ,bP as c_,ZD as ca,S_ as cb,k_ as cc,w_ as cd,N_ as ce,P_ as cf,Es as cg,Fs as ch,Hn as ci,$0 as cj,NS as ck,tC as cl,RC as cm,o_ as cn,s_ as co,r_ as cp,kn as cq,jr as cr,Ci as cs,Wt as ct,kr as cu,dh as cv,vT as cw,Pr as cx,Ff as cy,If as cz,Uo as d,wr as d0,JD as d1,XD as d2,JA as d3,el as d4,Vf as d5,hu as d6,Qd as d7,v0 as d8,xk as d9,yk as da,kk as db,YD as dc,Ia as e,Xt as f,wa as g,Ns as h,kh as i,qe as j,Gl as k,Ca as l,Jd as m,he as n,Dt as o,Or as p,qr as q,al as r,T as s,Ei as t,ke as u,$D as v,zs as w,Nn as x,Ka as y,Wa as z};
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.