1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8362],{3998:(e,t,n)=>{n.d(t,{$:()=>c});var r=n(5155),i=n(2115),l=n(2467),a=n(3101),s=n(4269);let o=(0,a.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full text-sm font-medium ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 active:scale-[0.98] [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90 hover:shadow-md",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-5 py-2",sm:"h-9 px-4",lg:"h-11 px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),c=i.forwardRef((e,t)=>{let{className:n,variant:i,size:a,asChild:c=!1,...u}=e,d=c?l.DX:"button";return(0,r.jsx)(d,{className:(0,s.cn)(o({variant:i,size:a,className:n})),ref:t,...u})});c.displayName="Button"},4269:(e,t,n)=>{n.d(t,{cn:()=>l});var r=n(2821),i=n(5889);function l(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,i.QP)((0,r.$)(t))}},6588:(e,t,n)=>{n.d(t,{YA:()=>u,Me:()=>f,BN:()=>g,cd:()=>k,uh:()=>h,Ml:()=>p});let r="bc_attribution",i="^[A-Za-z0-9._~-]{1,512}$",l=new RegExp(i);function a(e,t,n,r,i){var l,a,s,o,c,u,d,g,f,h,m,p,k,w;let _=["gclid","gbraid","wbraid"],y=new URLSearchParams(e.location.search),b=e=>e&&new RegExp(r).test(e)?e:null,v=e=>{try{let n=t.cookie.split(";").map(e=>e.trim()).find(t=>t.startsWith(e+"="));return n?decodeURIComponent(n.slice(e.length+1)):null}catch(e){return null}},x=(n,r)=>{try{t.cookie="".concat(n,"=").concat(encodeURIComponent(null!=r?r:""),";path=/;max-age=").concat(r?i:0,";samesite=lax").concat("https:"===e.location.protocol?";secure":"")}catch(e){}},S=null!=(s=e.__bcAttribution)?s:{};try{let t=e.localStorage.getItem(n),r=t?JSON.parse(t):null;r&&"object"==typeof r&&!Array.isArray(r)&&(!S.clickTs||r.clickTs&&Date.parse(r.clickTs)>=Date.parse(S.clickTs))&&(S=r)}catch(e){}let N=e.location.pathname+e.location.search,I=_.find(e=>b(y.get(e)));if(I){if(!_.every(e=>{var t;return(null!=(t=S[e])?t:null)===b(y.get(e))})||!S.clickTs){let e=v("__click_type")===I&&_.every(e=>b(v("__"+e))===b(y.get(e)));S.clickTs=e&&v("__click_ts")||new Date().toISOString()}for(let e of _)S[e]=b(y.get(e));for(let e of(S.clickType=I,S.landing=N,_))x("__"+e,null!=(o=S[e])?o:null);x("__click_type",I),x("__click_ts",null!=(c=S.clickTs)?c:null),x("__landing_page",N)}else{let t=v("__click_ts"),n=v("__click_type");if(t&&_.includes(n)&&b(v("__"+n))&&(!S.clickTs||Date.parse(t)>Date.parse(S.clickTs))){for(let e of _)S[e]=b(v("__"+e));S.clickType=n,S.clickTs=t,S.landing=null!=(u=v("__landing_page"))?u:S.landing}if(!_.some(e=>{var t;return b(null!=(t=S[e])?t:null)})){let t={};try{for(let n of[S.landing,v("__landing_page"),v("__gtm_campaign_url")]){let r;if(n){try{r=new URL(n,e.location.origin)}catch(e){continue}for(let e of _)t[e]=b(r.searchParams.get(e));if(_.some(e=>t[e])){t.landing=r.href;break}}}}catch(e){}if(!_.some(e=>t[e])){for(let e of _)t[e]=b(v("__"+e));t.landing=null!=(d=v("__landing_page"))?d:S.landing}if(!_.some(e=>t[e])){let e=null==(g=v("_gcl_aw"))?void 0:g.match(/^GCL\.(\d+)\.(.+)$/),n=e?1e3*Number(e[1]):NaN;e&&b(e[2])&&Number.isFinite(n)&&n<=Date.now()+3e5&&Date.now()-n<=1e3*i&&(t.gclid=e[2],t.clickTs=new Date(n).toISOString())}let n=_.find(e=>t[e]);if(n){for(let e of _)S[e]=null!=(f=t[e])?f:null;S.clickType=n,S.clickTs=null!=(h=t.clickTs)?h:null,S.landing=null!=(m=t.landing)?m:S.landing}}}if(S.msclkid=null!=(k=null!=(p=b(y.get("msclkid")))?p:S.msclkid)?k:b(v("__msclkid")),null!=(l=S).landing||(l.landing=null!=(w=v("__landing_page"))?w:N),null!=(a=S).referer||(a.referer=v("__original_referrer")),!S.referer)try{let n=new URL(t.referrer),r=e=>e.toLowerCase().replace(/^www\./,"");r(n.hostname)!==r(e.location.hostname)&&(S.referer=n.href)}catch(e){}e.__bcAttribution=S;try{e.localStorage.setItem(n,JSON.stringify(S))}catch(e){}}function s(e){let t;if("undefined"==typeof document)return null;try{t=document.cookie.split(";")}catch(e){return null}for(let n=0;n<t.length;n++){let r=t[n].trim();if(r.startsWith(e+"=")){let t=r.substring(e.length+1);try{return decodeURIComponent(t)}catch(e){return t}}}return null}function o(e){return e&&l.test(e)?e:null}function c(){var e,t;let n=window.__bcAttribution;if(n)return n;try{let t=window.localStorage.getItem(r),n=t?JSON.parse(t):null;return n&&"object"==typeof n?n:null!=(e=window.__bcAttribution)?e:{}}catch(e){return null!=(t=window.__bcAttribution)?t:{}}}function u(){a(window,document,r,l.source,7776e3)}function d(){return u(),c()}"(".concat(a.toString(),")(window,document,").concat(JSON.stringify(r),",").concat(JSON.stringify(i),",").concat(7776e3,");");let g=()=>{var e;return o(null!=(e=d().gclid)?e:null)},f=()=>{var e;return o(null!=(e=d().gbraid)?e:null)},h=()=>{var e;return o(null!=(e=d().wbraid)?e:null)};function m(){var e,t,n,r,i,l,a,u;let g=d(),f=null!=(e=g.clickType)?e:null;return{gclid:o(null!=(t=g.gclid)?t:null),gbraid:o(null!=(n=g.gbraid)?n:null),wbraid:o(null!=(r=g.wbraid)?r:null),msclkid:(()=>{let e=s("__msclkid");if(e)return e;let t=new URLSearchParams(window.location.search).get("msclkid");if(t)return t;let n=c().msclkid;if(n)return n;let r=s("_uetmsclkid");return r?r.startsWith("_uet")?r.substring(4):r:null})(),referer:null!=(u=null!=(a=null!=(l=s("__original_referrer"))?l:s("__gtm_referrer"))?a:c().referer)?u:null,signupurl:(()=>{var e;let t=null!=(e=c().landing)?e:s("__landing_page");try{return new URL(t||window.location.href,window.location.origin).href}catch(e){return null!=t?t:null}})(),clickType:"gclid"===f||"gbraid"===f||"wbraid"===f?f:null,clickTs:null!=(i=g.clickTs)?i:null}}async function p(e){let{userId:t,email:n,retries:r=3}=e;if(!t&&!n)return!1;let i=m();if(!(i.gclid||i.gbraid||i.wbraid||i.msclkid||i.referer||i.signupurl))return!1;let l={};
1t&&(l.userId=t),n&&(l.email=n),i.gclid&&(l.gclid=i.gclid),i.gbraid&&(l.gbraid=i.gbraid),i.wbraid&&(l.wbraid=i.wbraid),i.msclkid&&(l.msclkid=i.msclkid),i.referer&&(l.referer=i.referer),i.signupurl&&(l.signupurl=i.signupurl),i.clickType&&(l.clickType=i.clickType),i.clickTs&&(l.clickTs=i.clickTs);for(let e=0;e<r;e++){try{let e=await fetch("/api/user/update-profile",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l),keepalive:!0});if(e.ok)return!0;if(e.status>=400&&e.status<500&&409!==e.status)return console.error("Attribution save rejected:",e.status),!1}catch(e){console.error("Attribution save failed:",e)}e<r-1&&await new Promise(t=>setTimeout(t,300*2**e))}return console.error("Attribution save exhausted retries",{hasGclid:!!i.gclid,hasGbraid:!!i.gbraid}),!1}function k(){return{attribution:m(),attribution_capture:{version:2,signup_path:window.location.pathname,click_on_signup_url:["gclid","gbraid","wbraid"].some(e=>!!o(new URLSearchParams(window.location.search).get(e)))}}}},7727:(e,t,n)=>{n.d(t,{E:()=>u,default:()=>f});var r=n(5155),i=n(2115),l=n(2619),a=n.n(l),s=n(3998);let o="__consent",c="consent:open";function u(){window.dispatchEvent(new CustomEvent(c))}function d(){if("undefined"==typeof document)return null;let e=document.cookie.split(";").map(e=>e.trim()).find(e=>e.startsWith("".concat(o,"="))),t=null==e?void 0:e.substring(o.length+1);return"granted"===t||"denied"===t?t:null}function g(e){var t,n,r,i,l;let a="granted"===e;null==(t=(n=window).gtag)||t.call(n,"consent","update",{ad_storage:a?"granted":"denied",ad_user_data:a?"granted":"denied",ad_personalization:a?"granted":"denied",analytics_storage:a?"granted":"denied"}),null==(r=(i=window).gtag)||r.call(i,"set","ads_data_redaction",!a),null==(l=window.dataLayer)||l.push({event:a?"consent_granted":"consent_denied"})}function f(){let[e,t]=(0,i.useState)(!1),[n,l]=(0,i.useState)(null);(0,i.useEffect)(()=>{let e=d();if(e){g(e),l(e);return}t(!0)},[]),(0,i.useEffect)(()=>{let e=()=>{l(d()),t(!0)};return window.addEventListener(c,e),()=>window.removeEventListener(c,e)},[]);let u=e=>{let n="https:"===window.location.protocol?"; Secure":"";document.cookie="".concat(o,"=").concat(e,"; path=/; max-age=").concat(15552e3,"; SameSite=Lax").concat(n),g(e),l(e),t(!1)};return e?(0,r.jsx)("div",{role:"dialog","aria-live":"polite","aria-label":"Samtycke till cookies",className:"fixed inset-x-0 bottom-0 z-50 p-3 sm:p-4",children:(0,r.jsxs)("div",{className:"mx-auto flex max-w-3xl flex-col gap-3 rounded-2xl border border-gray-200 bg-white p-4 shadow-lg sm:flex-row sm:items-center sm:gap-4 sm:p-5",children:[(0,r.jsxs)("div",{className:"flex-1",children:[(0,r.jsxs)("p",{className:"text-sm leading-relaxed text-gray-700",children:["Vi anv\xe4nder cookies f\xf6r att m\xe4ta hur v\xe5r marknadsf\xf6ring fungerar. Du kan v\xe4lja att acceptera eller bara anv\xe4nda n\xf6dv\xe4ndiga cookies."," ",(0,r.jsx)(a(),{href:"/cookies",className:"font-medium text-gray-900 underline underline-offset-2",children:"L\xe4s mer"})]}),n&&(0,r.jsxs)("p",{className:"mt-1 text-xs text-gray-500",children:["Ditt nuvarande val:"," ","granted"===n?"Alla cookies accepterade":"Endast n\xf6dv\xe4ndiga cookies"]})]}),(0,r.jsxs)("div",{className:"flex shrink-0 gap-2",children:[n&&(0,r.jsx)(s.$,{variant:"ghost",size:"sm",onClick:()=>t(!1),className:"flex-1 sm:flex-none",children:"Avbryt"}),(0,r.jsx)(s.$,{variant:"outline",size:"sm",onClick:()=>u("denied"),className:"flex-1 sm:flex-none",children:"Endast n\xf6dv\xe4ndiga"}),(0,r.jsx)(s.$,{size:"sm",onClick:()=>u("granted"),className:"flex-1 sm:flex-none",children:"Acceptera"})]})]})}):null}},9156:(e,t,n)=>{n.d(t,{N:()=>a});var r=n(2131);let i="https://gmykjkfkwplygdhbvctp.supabase.co",l="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImdteWtqa2Zrd3BseWdkaGJ2Y3RwIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDEzNTQ2MzEsImV4cCI6MjA1NjkzMDYzMX0.CT7z4Di8DtJUL1V-2VN5hFIgkFk7NPhaeUtQzdxpzd8";if(!i||!l)throw Error("Missing Supabase environment variables");let a=(0,r.UU)(i,l)},9300:(e,t,n)=>{n.d(t,{A:()=>u,O:()=>c});var r=n(5155),i=n(2115),l=n(9156),a=n(6588),s=n(8720);let o=(0,i.createContext)(void 0),c=e=>{let{children:t}=e,[n,c]=(0,i.useState)(null),[u,d]=(0,i.useState)(null),[g,f]=(0,i.useState)(null),[h,m]=(0,i.useState)(!1),[p,k]=(0,i.useState)(!1),[w,_]=(0,i.useState)(null),[y,b]=(0,i.useState)(!1);(0,i.useEffect)(()=>{"true"===localStorage.getItem("userSignedOut")&&b(!0)},[]);let v=(0,i.useCallback)(async()=>
1{if(!n){f(null),_(null);return}try{let{data:e,error:t}=await l.N.from("profiles").select("*").eq("id",n.id).single();if(t)return;e&&(f(e),_("true"===e.paid))}catch(e){}},[n]);(0,i.useEffect)(()=>{v()},[v]),(0,i.useEffect)(()=>{(async()=>{if(y)return k(!0);try{let{data:{session:e}}=await l.N.auth.getSession();e&&(c(e.user),d(e))}catch(e){}finally{k(!0)}})()},[y]),(0,i.useEffect)(()=>{let{data:{subscription:e}}=l.N.auth.onAuthStateChange(async(e,t)=>{"SIGNED_OUT"===e?(c(null),d(null),f(null),_(null)):"SIGNED_IN"===e&&t&&(c(t.user),d(t))});return()=>{e.unsubscribe()}},[]);let x=async(e,t)=>{m(!0);try{let{data:n,error:r}=await l.N.auth.signInWithPassword({email:e,password:t});if(r)throw r;n.session&&d(n.session),localStorage.removeItem("userSignedOut"),b(!1),s.oR.success("Inloggning lyckades!")}catch(e){throw s.oR.error("Inloggning misslyckades",{description:e.message||"Kontrollera dina uppgifter och f\xf6rs\xf6k igen"}),e}finally{m(!1)}},S=async e=>{m(!0);try{let{data:t,error:n}=await l.N.auth.signInWithOtp({email:e,options:{emailRedirectTo:"".concat(window.location.origin,"/auth/callback"),shouldCreateUser:!1}});if(n)throw n;localStorage.removeItem("userSignedOut"),b(!1),s.oR.success("Kolla din e-post!",{description:"Vi har skickat en inloggningsl\xe4nk till din e-postadress."})}catch(e){throw s.oR.error("Kunde inte skicka l\xe4nk",{description:e.message||"Kontrollera din e-postadress och f\xf6rs\xf6k igen"}),e}finally{m(!1)}},N=async(e,t,n)=>{m(!0);try{let{data:r,error:i}=await l.N.auth.signUp({email:e,password:t,options:{data:(0,a.cd)()}});if(i)throw i;let o=r.user;if(r.session&&d(r.session),!o||!o.id)throw Error("User creation failed");let{error:c}=await l.N.from("profiles").insert({id:o.id,email:e,name:n,paid:"false",checkout_status:"none"});if(c&&"23505"!==c.code)throw c;await (0,a.Ml)({userId:o.id,email:e}),localStorage.removeItem("userSignedOut"),b(!1),s.oR.success("Registrering lyckades!")}catch(e){throw s.oR.error("Registrering misslyckades",{description:e.message||"Kontrollera dina uppgifter och f\xf6rs\xf6k igen"}),e}finally{m(!1)}},I=async()=>{m(!0);try{await l.N.auth.signOut(),localStorage.setItem("userSignedOut","true"),b(!0),s.oR.success("Du har loggat ut")}catch(e){s.oR.error("Utloggning misslyckades",{description:e.message||"F\xf6rs\xf6k igen"})}finally{m(!1)}},T=async e=>{m(!0);try{let{error:t}=await l.N.auth.resetPasswordForEmail(e,{redirectTo:"".concat(window.location.origin,"/login?reset=true")});if(t)throw t;s.oR.success("\xc5terst\xe4llningsl\xe4nk skickad",{description:"Kolla din e-post f\xf6r instruktioner"})}catch(e){throw s.oR.error("Kunde inte skicka \xe5terst\xe4llningsl\xe4nk",{description:e.message||"Kontrollera e-postadressen och f\xf6rs\xf6k igen"}),e}finally{m(!1)}};return(0,r.jsx)(o.Provider,{value:{user:n,session:u,profile:g,isLoading:h,hasCheckedSession:p,hasActiveSubscription:w,refreshProfile:v,signIn:x,signInWithOtp:S,signUp:N,signOut:I,resetPassword:T},children:t})},u=()=>{let e=(0,i.useContext)(o);if(void 0===e)throw Error("useAuth must be used within an AuthProvider");return e}}}]);
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.