PageSourceSearch

https://www.sagopelatset.se/assets/index-BeFO8qQB.js

js sagopelatset.se collected 2026-10-10 01:25:23 UTC 65,503 bytes, 259 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/toaster-DG0vgMkJ.js","assets/query-CCllGbTQ.js","assets/vendor-D4vDED6K.js","assets/use-toast-CZeoTZrX.js","assets/supabase-BX9gqKp5.js","assets/sonner-DqIC8yNG.js","assets/StoriesPage-C1FlRY6b.js","assets/useInfiniteScroll-d1lwLC1b.js","assets/proxy-DrcAhyIh.js","assets/GhostStoriesPage-DC1UOgot.js","assets/StoryDetailPage-j7-mgmGd.js","assets/imageUtils-BZ6VZiMY.js","assets/AboutPage-Z6yYCuHF.js","assets/ContactPage-DYh9BXos.js","assets/PrivacyPolicyPage-Bc4zF1wi.js","assets/AdminLoginPage-BNTigycY.js","assets/AdminPage-t2Vwk6X9.js","assets/eye-CGhL8bfV.js","assets/Top15Page-vRaPm0WD.js","assets/AudiobooksPage-DafBBgL5.js","assets/NotFound-Dt0OKJeJ.js"])))=>i.map(i=>d[i]);
2var Ke=Object.defineProperty;var Ge=(e,t,n)=>t in e?Ke(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var D=(e,t,n)=>Ge(e,typeof t!="symbol"?t+"":t,n);import{j as r,Q as We,a as Je}from"./query-CCllGbTQ.js";import{a as Ze,g as ve,o as v,r as m,u as Ce,L as S,O as Ye,B as Xe,R as Qe,b as T}from"./vendor-D4vDED6K.js";import{c as et}from"./supabase-BX9gqKp5.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))a(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const d of o.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&a(d)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function a(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();var He,ke=Ze;He=ke.createRoot,ke.hydrateRoot;var tt=typeof Element<"u",rt=typeof Map=="function",nt=typeof Set=="function",at=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Q(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var n,a,s;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(a=n;a--!==0;)if(!Q(e[a],t[a]))return!1;return!0}var o;if(rt&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(o=e.entries();!(a=o.next()).done;)if(!t.has(a.value[0]))return!1;for(o=e.entries();!(a=o.next()).done;)if(!Q(a.value[1],t.get(a.value[0])))return!1;return!0}if(nt&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(o=e.entries();!(a=o.next()).done;)if(!t.has(a.value[0]))return!1;return!0}if(at&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(a=n;a--!==0;)if(e[a]!==t[a])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")return e.toString()===t.toString();if(s=Object.keys(e),n=s.length,n!==Object.keys(t).length)return!1;for(a=n;a--!==0;)if(!Object.prototype.hasOwnProperty.call(t,s[a]))return!1;if(tt&&e instanceof Element)return!1;for(a=n;a--!==0;)if(!((s[a]==="_owner"||s[a]==="__v"||s[a]==="__o")&&e.$$typeof)&&!Q(e[s[a]],t[s[a]]))return!1;return!0}return e!==e&&t!==t}var st=function(t,n){try{return Q(t,n)}catch(a){if((a.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw a}};const ot=ve(st);var it=function(e,t,n,a,s,o,d,i){if(!e){var l;if(t===void 0)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,a,s,o,d,i],u=0;l=new Error(t.replace(/%s/g,function(){return c[u++]})),l.name="Invariant Violation"}throw l.framesToPop=1,l}},lt=it;const be=ve(lt);var dt=function(t,n,a,s){var o=a?a.call(s,t,n):void 0;if(o!==void 0)return!!o;if(t===n)return!0;
2if(typeof t!="object"||!t||typeof n!="object"||!n)return!1;var d=Object.keys(t),i=Object.keys(n);if(d.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(n),c=0;c<d.length;c++){var u=d[c];if(!l(u))return!1;var p=t[u],x=n[u];if(o=a?a.call(s,p,x,u):void 0,o===!1||o===void 0&&p!==x)return!1}return!0};const ct=ve(dt);var Re=(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))(Re||{}),ne={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"]}},je=Object.values(Re),re={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},Le=Object.entries(re).reduce((e,[t,n])=>(e[n]=t,e),{}),O="data-rh",U={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},F=(e,t)=>{for(let n=e.length-1;n>=0;n-=1){const a=e[n];if(Object.prototype.hasOwnProperty.call(a,t))return a[t]}return null},mt=e=>{let t=F(e,"title");const n=F(e,U.TITLE_TEMPLATE);if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,()=>t);const a=F(e,U.DEFAULT_TITLE);return t||a||void 0},ut=e=>F(e,U.ON_CHANGE_CLIENT_STATE)||(()=>{}),ae=(e,t)=>t.filter(n=>typeof n[e]<"u").map(n=>n[e]).reduce((n,a)=>({...n,...a}),{}),gt=(e,t)=>t.filter(n=>typeof n.base<"u").map(n=>n.base).reverse().reduce((n,a)=>{if(!n.length){const s=Object.keys(a);for(let o=0;o<s.length;o+=1){const i=s[o].toLowerCase();if(e.indexOf(i)!==-1&&a[i])return n.concat(a)}}return n},[]),pt=e=>console&&typeof console.warn=="function"&&console.warn(e),q=(e,t,n)=>{const a={};return n.filter(s=>Array.isArray(s[e])?!0:(typeof s[e]<"u"&&pt(`Helmet: ${e} should be of type "Array". Instead found type "${typeof s[e]}"`),!1)).map(s=>s[e]).reverse().reduce((s,o)=>{const d={};o.filter(l=>{let c;const u=Object.keys(l);for(let x=0;x<u.length;x+=1){const f=u[x],_=f.toLowerCase();t.indexOf(_)!==-1&&!(c==="rel"&&l[c].toLowerCase()==="canonical")&&!(_==="rel"&&l[_].toLowerCase()==="stylesheet")&&(c=_),t.indexOf(f)!==-1&&(f==="innerHTML"||f==="cssText"||f==="itemprop")&&(c=f)}if(!c||!l[c])return!1;const p=l[c].toLowerCase();return a[c]||(a[c]={}),d[c]||(d[c]={}),a[c][p]?!1:(d[c][p]=!0,!0)}).reverse().forEach(l=>s.push(l));const i=Object.keys(d);for(let l=0;l<i.length;l+=1){const c=i[l],u={...a[c],...d[c]};a[c]=u}return s},[]).reverse()},ht=(e,t)=>{if(Array.isArray(e)&&e.length){for(let n=0;n<e.length;n+=1)if(e[n][t])return!0}return!1},ft=e=>({baseTag:gt(["href"],e),bodyAttributes:ae("bodyAttributes",e),defer:F(e,U.DEFER),encode:F(e,U.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:ae("htmlAttributes",e),linkTags:q("link",["rel","href"],e),metaTags:q("meta",["name","charset","http-equiv","property","itemprop"],e),noscriptTags:q("noscript",["innerHTML"],e),onChangeClientState:ut(e),scriptTags:q("script",["src","innerHTML"],e),styleTags:q("style",["cssText"],e),title:mt(e),titleAttributes:ae("titleAttributes",e),prioritizeSeoTags:ht(e,U.PRIORITIZE_SEO_TAGS)}),Pe=e=>Array.isArray(e)?e.join(""):e,vt=(e,t)=>{const n=Object.keys(e);for(let a=0;a<n.length;a+=1)if(t[n[a]]&&t[n[a]].includes(e[n[a]]))return!0;return!1},se=(e,t)=>Array.isArray(e)?e.reduce((n,a)=>(vt(a,t)?n.priority.push(a):n.default.push(a),n),{priority:[],default:[]}):{default:e,priority:[]},we=(e,t)=>({...e,[t]:void 0}),xt=["noscript","script","style"],de=(e,t=!0)=>t===!1?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;"),ze=e=>Object.keys(e).reduce((t,n)=>{const a=typeof e[n]<"u"?`${n}="${e[n]}"`:`${n}`;return t?`${t} ${a}`:a},""),yt=(e,t,n,a)=>{const s=ze(n),o=Pe(t);return s?`<${e} ${O}="true" ${s}>${de(o,a)}</${e}>`:`<${e} ${O}="true">${de(o,a)}</${e}>`},kt=(e,t,n=!0)=>t.reduce((a,s)=>{const o=s,d=Object.keys(o).filter(c=>!(c==="innerHTML"||c==="cssText")).reduce((c,u)=>{const p=typeof o[u]>"u"?u:`${u}="${de(o[u],n)}"`;return c?`${c} ${p}`:p},""),i=o.innerHTML||o.cssText||"",l=xt.indexOf(e)===-1;return`${a}<${e} ${O}="true" ${d}${l?"/>":`>${i}</${e}>`}`},""),$e=(e,t={})=>Object.keys(e).reduce((n,a)=>{const s=re[a];return n[s||a]=e[a],n},t),bt=(e,t,n)=>{const a={key:t,[O]:!0},s=$e(n,a);return[v.createElement("title",s,t)]},ee=(e,t)=>
2t.map((n,a)=>{const s={key:a,[O]:!0};return Object.keys(n).forEach(o=>{const i=re[o]||o;if(i==="innerHTML"||i==="cssText"){const l=n.innerHTML||n.cssText;s.dangerouslySetInnerHTML={__html:l}}else s[i]=n[o]}),v.createElement(e,s)}),N=(e,t,n=!0)=>{switch(e){case"title":return{toComponent:()=>bt(e,t.title,t.titleAttributes),toString:()=>yt(e,t.title,t.titleAttributes,n)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>$e(t),toString:()=>ze(t)};default:return{toComponent:()=>ee(e,t),toString:()=>kt(e,t,n)}}},jt=({metaTags:e,linkTags:t,scriptTags:n,encode:a})=>{const s=se(e,ne.meta),o=se(t,ne.link),d=se(n,ne.script);return{priorityMethods:{toComponent:()=>[...ee("meta",s.priority),...ee("link",o.priority),...ee("script",d.priority)],toString:()=>`${N("meta",s.priority,a)} ${N("link",o.priority,a)} ${N("script",d.priority,a)}`},metaTags:s.default,linkTags:o.default,scriptTags:d.default}},wt=e=>{const{baseTag:t,bodyAttributes:n,encode:a=!0,htmlAttributes:s,noscriptTags:o,styleTags:d,title:i="",titleAttributes:l,prioritizeSeoTags:c}=e;let{linkTags:u,metaTags:p,scriptTags:x}=e,f={toComponent:()=>[],toString:()=>""};return c&&({priorityMethods:f,linkTags:u,metaTags:p,scriptTags:x}=jt(e)),{priority:f,base:N("base",t,a),bodyAttributes:N("bodyAttributes",n,a),htmlAttributes:N("htmlAttributes",s,a),link:N("link",u,a),meta:N("meta",p,a),noscript:N("noscript",o,a),script:N("script",x,a),style:N("style",d,a),title:N("title",{title:i,titleAttributes:l},a)}},ce=wt,Y=[],xe=!!(typeof window<"u"&&window.document&&window.document.createElement),me=class{constructor(e,t){D(this,"instances",[]);D(this,"canUseDOM",xe);D(this,"context");D(this,"value",{setHelmet:e=>{this.context.helmet=e},helmetInstances:{get:()=>this.canUseDOM?Y:this.instances,add:e=>{(this.canUseDOM?Y:this.instances).push(e)},remove:e=>{const t=(this.canUseDOM?Y:this.instances).indexOf(e);(this.canUseDOM?Y:this.instances).splice(t,1)}}});this.context=e,this.canUseDOM=t||!1,t||(e.helmet=ce({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},Tt=parseInt(v.version.split(".")[0],10),ue=Tt>=19,St={},Ve=v.createContext(St),P,Ue=(P=class extends m.Component{constructor(n){super(n);D(this,"helmetData");ue?this.helmetData=null:this.helmetData=new me(this.props.context||{},P.canUseDOM)}render(){return ue?v.createElement(v.Fragment,null,this.props.children):v.createElement(Ve.Provider,{value:this.helmetData.value},this.props.children)}},D(P,"canUseDOM",xe),P),V=(e,t)=>{const n=document.head||document.querySelector("head"),a=n.querySelectorAll(`${e}[${O}]`),s=[].slice.call(a),o=[];let d;return t&&t.length&&t.forEach(i=>{const l=document.createElement(e);for(const c in i)if(Object.prototype.hasOwnProperty.call(i,c))if(c==="innerHTML")l.innerHTML=i.innerHTML;else if(c==="cssText"){const u=i.cssText;l.appendChild(document.createTextNode(u))}else{const u=c,p=typeof i[u]>"u"?"":i[u];l.setAttribute(c,p)}l.setAttribute(O,"true"),s.some((c,u)=>(d=u,l.isEqualNode(c)))?s.splice(d,1):o.push(l)}),s.forEach(i=>i.parentNode?.removeChild(i)),o.forEach(i=>n.appendChild(i)),{oldTags:s,newTags:o}},ge=(e,t)=>{const n=document.getElementsByTagName(e)[0];if(!n)return;const a=n.getAttribute(O),s=a?a.split(","):[],o=[...s],d=Object.keys(t);for(const i of d){const l=t[i]||"";n.getAttribute(i)!==l&&n.setAttribute(i,l),s.indexOf(i)===-1&&s.push(i);const c=o.indexOf(i);c!==-1&&o.splice(c,1)}for(let i=o.length-1;i>=0;i-=1)n.removeAttribute(o[i]);s.length===o.length?n.removeAttribute(O):n.getAttribute(O)!==d.join(",")&&n.setAttribute(O,d.join(","))},Et=(e,t)=>{typeof e<"u"&&document.title!==e&&(document.title=Pe(e)),ge("title",t)},Te=(e,t)=>{const{baseTag:n,bodyAttributes:a,htmlAttributes:s,linkTags:o,metaTags:d,noscriptTags:i,onChangeClientState:l,scriptTags:c,styleTags:u,title:p,titleAttributes:x}=e;ge("body",a),ge("html",s),Et(p,x);const f={baseTag:V("base",n),linkTags:V("link",o),metaTags:V("meta",d),noscriptTags:V("noscript",i),scriptTags:V("script",c),styleTags:V("style",u)},_={},R={};Object.keys(f).forEach(g=>{const{newTags:y,oldTags:k}=f[g];y.length&&(_[g]=y),k.length&&(R[g]=f[g].oldTags)}),t&&t(),l(e,_,R)},K=null,At=e=>{K&&cancelAnimationFrame(K),e.defer?K=requestAnimationFrame(()=>{Te(e,()=>{K=null})}):(Te(e),K=null)},_t=At,Se=class extends m.Component{constructor(){super(...arguments);D(this,"rendered",!1)}shouldComponentUpdate(t){return!ct(t,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:t}=this.props.context;t.remove(this),this.emitChange()}emitChange(){const{helmetInstances:t,setHelmet:n}=this.props.context;let a=null;const s=ft(t.get().map(o=>{const{context:d,...i}=o.props;return i}));Ue.canUseDOM?_t(s):ce&&(a=ce(s)),n(a)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:t}=this.props.context;t.add(this),this.emitChange()}render(){return this.init(),null}},te=[],Ee=e=>{const t={};for(const n of Object.keys(e))t[Le[n]||n]=e[n];return t},L=e=>{const t={};for(const n of Object.keys(e)){const a=re[n];t[a||n]=e[n]}return t},Ae=(e,t)=>
2{if(!xe)return;const n=document.getElementsByTagName(e)[0];if(!n)return;const a="data-rh-managed",s=n.getAttribute(a),o=s?s.split(","):[],d=Object.keys(t);for(const i of o)d.includes(i)||n.removeAttribute(i);for(const i of d){const l=t[i];l==null||l===!1?n.removeAttribute(i):l===!0?n.setAttribute(i,""):n.setAttribute(i,String(l))}d.length>0?n.setAttribute(a,d.join(",")):n.removeAttribute(a)},oe=()=>{const e={},t={};for(const n of te){const{htmlAttributes:a,bodyAttributes:s}=n.props;a&&Object.assign(e,Ee(a)),s&&Object.assign(t,Ee(s))}Ae("html",e),Ae("body",t)},Nt=class extends m.Component{componentDidMount(){te.push(this),oe()}componentDidUpdate(){oe()}componentWillUnmount(){const e=te.indexOf(this);e!==-1&&te.splice(e,1),oe()}resolveTitle(){const{title:e,titleTemplate:t,defaultTitle:n}=this.props;return e&&t?t.replace(/%s/g,()=>Array.isArray(e)?e.join(""):e):e||n||void 0}renderTitle(){const e=this.resolveTitle();if(e===void 0)return null;const t=this.props.titleAttributes||{};return v.createElement("title",L(t),e)}renderBase(){const{base:e}=this.props;return e?v.createElement("base",L(e)):null}renderMeta(){const{meta:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,n)=>v.createElement("meta",{key:n,...L(t)}))}renderLink(){const{link:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,n)=>v.createElement("link",{key:n,...L(t)}))}renderScript(){const{script:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,n)=>{const{innerHTML:a,...s}=t,o=L(s);return a&&(o.dangerouslySetInnerHTML={__html:a}),v.createElement("script",{key:n,...o})})}renderStyle(){const{style:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,n)=>{const{cssText:a,...s}=t,o=L(s);return a&&(o.dangerouslySetInnerHTML={__html:a}),v.createElement("style",{key:n,...o})})}renderNoscript(){const{noscript:e}=this.props;return!e||!Array.isArray(e)?null:e.map((t,n)=>{const{innerHTML:a,...s}=t,o=L(s);return a&&(o.dangerouslySetInnerHTML={__html:a}),v.createElement("noscript",{key:n,...o})})}render(){return v.createElement(v.Fragment,null,this.renderTitle(),this.renderBase(),this.renderMeta(),this.renderLink(),this.renderScript(),this.renderStyle(),this.renderNoscript())}},le,Mt=(le=class extends m.Component{shouldComponentUpdate(e){return!ot(we(this.props,"helmetData"),we(e,"helmetData"))}mapNestedChildrenToProps(e,t){if(!t)return null;switch(e.type){case"script":case"noscript":return{innerHTML:t};case"style":return{cssText:t};default:throw new Error(`<${e.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(e,t,n,a){return{...t,[e.type]:[...t[e.type]||[],{...n,...this.mapNestedChildrenToProps(e,a)}]}}mapObjectTypeChildren(e,t,n,a){switch(e.type){case"title":return{...t,[e.type]:a,titleAttributes:{...n}};case"body":return{...t,bodyAttributes:{...n}};case"html":return{...t,htmlAttributes:{...n}};default:return{...t,[e.type]:{...n}}}}mapArrayTypeChildrenToProps(e,t){let n={...t};return Object.keys(e).forEach(a=>{n={...n,[a]:e[a]}}),n}warnOnInvalidChildren(e,t){return be(je.some(n=>e.type===n),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 ${je.join(", ")} are allowed. Helmet does not support rendering <${e.type}> elements. Refer to our API for more information.`),be(!t||typeof t=="string"||Array.isArray(t)&&!t.some(n=>typeof n!="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,t){let n={};return v.Children.forEach(e,a=>{if(!a||!a.props)return;const{children:s,...o}=a.props,d=Object.keys(o).reduce((l,c)=>(l[Le[c]||c]=o[c],l),{});let{type:i}=a;
2switch(typeof i=="symbol"?i=i.toString():this.warnOnInvalidChildren(a,s),i){case"Symbol(react.fragment)":t=this.mapChildrenToProps(s,t);break;case"link":case"meta":case"noscript":case"script":case"style":n=this.flattenArrayTypeChildren(a,n,d,s);break;default:t=this.mapObjectTypeChildren(a,t,d,s);break}}),this.mapArrayTypeChildrenToProps(n,t)}render(){const{children:e,...t}=this.props;let n={...t},{helmetData:a}=t;if(e&&(n=this.mapChildrenToProps(e,n)),a&&!(a instanceof me)){const s=a;a=new me(s.context,!0),delete n.helmetData}return ue?v.createElement(Nt,{...n}):a?v.createElement(Se,{...n,context:a.value}):v.createElement(Ve.Consumer,null,s=>v.createElement(Se,{...n,context:s}))}},D(le,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),le);const Ot="modulepreload",It=function(e){return"/"+e},_e={},E=function(t,n,a){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const d=document.querySelector("meta[property=csp-nonce]"),i=d?.nonce||d?.getAttribute("nonce");s=Promise.allSettled(n.map(l=>{if(l=It(l),l in _e)return;_e[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const p=document.createElement("link");if(p.rel=c?"stylesheet":Ot,c||(p.as="script"),p.crossOrigin="",p.href=l,i&&p.setAttribute("nonce",i),document.head.appendChild(p),c)return new Promise((x,f)=>{p.addEventListener("load",x),p.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${l}`)))})}))}function o(d){const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=d,window.dispatchEvent(i),!i.defaultPrevented)throw d}return s.then(d=>{for(const i of d||[])i.status==="rejected"&&o(i.reason);return t().catch(o)})};/**
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 Dt=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),Fe=(...e)=>e.filter((t,n,a)=>!!t&&t.trim()!==""&&a.indexOf(t)===n).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 Ct={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 Ht=m.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:a,className:s="",children:o,iconNode:d,...i},l)=>m.createElement("svg",{ref:l,...Ct,width:t,height:t,stroke:e,strokeWidth:a?Number(n)*24/Number(t):n,className:Fe("lucide",s),...i},[...d.map(([c,u])=>m.createElement(c,u)),...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 A=(e,t)=>{const n=m.forwardRef(({className:a,...s},o)=>m.createElement(Ht,{ref:o,iconNode:t,className:Fe(`lucide-${Dt(e)}`,a),...s}));return n.displayName=`${e}`,n};/**
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 G=A("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/**
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 Rt=A("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"}]]);/**
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 J=A("Book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]);/**
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 Lt=A("BriefcaseBusiness",[["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M16 6V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2",key:"1ksdt3"}],["path",{d:"M22 13a18.15 18.15 0 0 1-20 0",key:"12hx5q"}],["rect",{width:"20",height:"14",x:"2",y:"6",rx:"2",key:"i6l2r4"}]]);/**
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 Pt=A("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/**
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 zt=A("Film",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M7 3v18",key:"bbkbws"}],["path",{d:"M3 7.5h4",key:"zfgn84"}],["path",{d:"M3 12h18",key:"1i2n21"}],["path",{d:"M3 16.5h4",key:"1230mu"}],["path",{d:"M17 3v18",key:"in4fa5"}],["path",{d:"M17 7.5h4",key:"myr1c1"}],["path",{d:"M17 16.5h4",key:"go4c1d"}]]);/**
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 pe=A("Ghost",[["path",{d:"M9 10h.01",key:"qbtxuw"}],["path",{d:"M15 10h.01",key:"1qmjsl"}],["path",{d:"M12 2a8 8 0 0 0-8 8v12l3-3 2.5 2.5L12 19l2.5 2.5L17 19l3 3V10a8 8 0 0 0-8-8z",key:"uwwb07"}]]);/**
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 Be=A("Headphones",[["path",{d:"M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 18 0v7a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3",key:"1xhozi"}]]);/**
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 $t=A("Heart",[["path",{d:"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z",key:"c3ymky"}]]);/**
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 Vt=A("House",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);/**
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 Ut=A("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"}]]);/**
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 ye=A("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"}]]);/**
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 Ft=A("Trophy",[["path",{d:"M6 9H4.5a2.5 2.5 0 0 1 0-5H6",key:"17hqa7"}],["path",{d:"M18 9h1.5a2.5 2.5 0 0 0 0-5H18",key:"lmptdp"}],["path",{d:"M4 22h16",key:"57wxv0"}
87],["path",{d:"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22",key:"1nw9bq"}],["path",{d:"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22",key:"1np0yb"}],["path",{d:"M18 2H6v7a6 6 0 0 0 12 0V2Z",key:"u46fv3"}]]),Ne=[{to:"/",label:"Hem",icon:Vt},{to:"/sagor",label:"Sagor",icon:J},{to:"/spokhistorier",label:"Spökhistorier",icon:pe},{to:"/top15",label:"Topplistan",icon:Ft},{to:"/ljudbocker",label:"Ljudböcker",icon:Be},{to:"/kontakt",label:"Kontakt",icon:Ut},{to:"/om-oss",label:"Om Oss",icon:ye}],Bt=()=>{const e=Ce(),[t,n]=m.useState(!1);return r.jsxs("nav",{className:"sticky top-0 z-50 border-b border-border bg-background/90 backdrop-blur-md",children:[r.jsxs("div",{className:"container mx-auto flex items-center justify-between px-4 py-3",children:[r.jsxs(S,{to:"/",className:"flex items-center gap-2",children:[r.jsx(ye,{className:"h-6 w-6 text-primary"}),r.jsx("span",{className:"font-display text-xl font-bold text-foreground",children:"Sagopelatset"})]}),r.jsx("div",{className:"hidden items-center gap-1 md:flex",children:Ne.map(a=>{const s=a.icon,o=e.pathname===a.to;return r.jsxs(S,{to:a.to,className:`flex items-center gap-1.5 rounded-lg px-3 py-2 text-sm font-medium transition-colors ${o?"bg-primary text-primary-foreground":"text-muted-foreground hover:bg-muted hover:text-foreground"}`,children:[r.jsx(s,{className:"h-4 w-4"}),a.label]},a.to)})}),r.jsx("button",{onClick:()=>n(!t),"aria-label":t?"Stäng meny":"Öppna meny",className:"rounded-lg p-2 text-foreground hover:bg-muted md:hidden",children:r.jsx("svg",{className:"h-5 w-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:t?r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"}):r.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})})})]}),t&&r.jsx("div",{className:"border-t border-border px-4 pb-3 md:hidden",children:Ne.map(a=>{const s=a.icon,o=e.pathname===a.to;return r.jsxs(S,{to:a.to,onClick:()=>n(!1),className:`flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium transition-colors ${o?"bg-primary text-primary-foreground":"text-muted-foreground hover:bg-muted hover:text-foreground"}`,children:[r.jsx(s,{className:"h-4 w-4"}),a.label]},a.to)})})]})},qt=()=>{const e=window;e.googlefc&&e.googlefc.showRevocationMessage?e.googlefc.showRevocationMessage():e.__tcfapi?e.__tcfapi("displayConsentUi",2,()=>{}):alert("Samtyckeshanteraren laddas fortfarande. Försök igen om en stund.")},Kt=()=>r.jsx("footer",{className:"border-t border-border bg-muted/50 py-8",children:r.jsxs("div",{className:"container mx-auto px-4 text-center",children:[r.jsxs("div",{className:"flex items-center justify-center gap-2 text-muted-foreground h-5",children:[r.jsx(J,{className:"h-4 w-4"}),r.jsx("span",{className:"text-sm font-semibold",children:"Sagopelatset"})]}),r.jsxs("p",{className:"mt-2 text-xs text-muted-foreground",children:["Skapad med ",r.jsx($t,{className:"inline h-3 w-3 text-primary"})," för alla som älskar sagor"]}),r.jsxs("div",{className:"mt-4 flex flex-wrap justify-center gap-x-4 gap-y-2 text-xs text-muted-foreground",children:[r.jsx(S,{to:"/sagor",className:"hover:text-foreground transition-colors",children:"Sagor"}),r.jsx(S,{to:"/spokhistorier",className:"hover:text-foreground transition-colors",children:"Spökhistorier"}),r.jsx(S,{to:"/kontakt",className:"hover:text-foreground transition-colors",children:"Kontakt"}),r.jsx(S,{to:"/om-oss",className:"hover:text-foreground transition-colors",children:"Om Oss"}),r.jsx(S,{to:"/integritetspolicy",className:"hover:text-foreground transition-colors",children:"Integritetspolicy"}),r.jsx("button",{type:"button",onClick:qt,className:"hover:text-foreground transition-colors underline-offset-2 hover:underline",children:"Hantera annonsval"})]})]})}),Gt=()=>{const{pathname:e}=Ce();return m.useEffect(()=>{window.scrollTo(0,0)},[e]),null},Wt=()=>r.jsxs("div",{className:"flex min-h-screen flex-col",children:[r.jsx(Gt,{}),r.jsx(Bt,{}),r.jsx("main",{className:"flex-1",children:r.jsx(Ye,{})}),r.jsx(Kt,{})]}),Me=({story:e,index:t=0})=>{const[n,a]=m.useState(!1),[s,o]=m.useState(!1),d=t<3;return r.jsx("div",{children:r.jsxs(S,{to:`/saga/${e.id}`,className:"story-card-hover group block overflow-hidden rounded-xl border border-border bg-card shadow-sm",children:[r.jsxs("div",{className:"relative aspect-[3/4] overflow-hidden bg-muted",children:[n?r.jsx("div",{className:"flex h-full w-full items-center justify-center bg-muted",children:r.jsx(Rt,{className:"h-16 w-16 text-muted-foreground
87/40"})}):r.jsx("img",{src:e.coverImage,alt:e.title,className:`h-full w-full object-cover transition-all duration-500 group-hover:scale-105 ${s?"opacity-100":"opacity-0"}`,loading:d?"eager":"lazy",decoding:"async",fetchPriority:d?"high":"low",width:"416",height:"555",sizes:"(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw",onError:()=>a(!0),onLoad:()=>o(!0)}),r.jsx("div",{className:"absolute inset-x-0 bottom-0 bg-gradient-to-t from-foreground/80 to-transparent p-4 pt-12",children:r.jsx("span",{className:"inline-block rounded-full bg-background/20 px-2 py-0.5 text-xs font-medium text-primary-foreground backdrop-blur-sm",children:e.category==="saga"?"Saga":"Spökhistoria"})})]}),r.jsxs("div",{className:"p-4",children:[r.jsx("h3",{className:"font-display text-lg font-bold text-foreground line-clamp-2 group-hover:text-primary transition-colors",children:e.title}),r.jsx("p",{className:"mt-1.5 text-sm text-muted-foreground line-clamp-2",children:e.excerpt}),r.jsxs("div",{className:"mt-3 flex items-center gap-3 text-xs text-muted-foreground",children:[r.jsxs("span",{className:"flex items-center gap-1",children:[r.jsx(Pt,{className:"h-3 w-3"}),e.readTime]}),r.jsx("span",{children:new Date(e.date).toLocaleDateString("sv-SE")})]})]})]})})};function Jt(){if(typeof window>"u")return;const e=location.hostname,n=["lovableproject.com","lovableproject-dev.com","lovable.app","gpt-eng.com","gptengineer.run"].some(g=>e===g||e.endsWith("."+g)),a="[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}",s=n?e.match(new RegExp("^(?:id-preview(?:-[a-z0-9]+)?|project)--("+a+")(?:-dev)?(?=\\.|$)","i"))?.[1]??e.match(new RegExp("^("+a+")(?=[.-])","i"))?.[1]:void 0,o=window.parent&&window.parent!==window;if(!s||!o)return localStorage;const d=e.endsWith(".lovableproject-dev.com")||e.endsWith(".gpt-eng.com"),i=d?/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$|^http:\/\/localhost:3000$/:/^https:\/\/([a-z0-9-]+\.)*(lovable\.dev|gptengineer\.app)$/,l=location.ancestorOrigins&&location.ancestorOrigins[0]||(document.referrer?new URL(document.referrer).origin:""),c=l&&i.test(l)?[l]:d?["https://lovable.dev","http://localhost:3000"]:["https://lovable.dev"],u="lovable-preview-auth:result",p=2e3,x=()=>Math.random().toString(36).slice(2)+Date.now().toString(36),f=(g,y,k)=>new Promise(z=>{const j=x();let C=!1,I;const B=h=>{C||(C=!0,clearTimeout(I),window.removeEventListener("message",$),z(h))},$=h=>{if(c.indexOf(h.origin)<0)return;const w=h.data;w&&w.type===u&&w.requestId===j&&B(w)};window.addEventListener("message",$);const b={type:g,requestId:j,projectId:s,key:y};k!==void 0&&(b.value=k);for(const h of c)window.parent.postMessage(b,h);I=setTimeout(()=>B(null),p)});let _=!0;const R=250;return{getItem:async g=>{let y=await f("lovable-preview-auth:get",g);return!y&&_&&(await new Promise(k=>setTimeout(k,R)),y=await f("lovable-preview-auth:get",g)),_=!1,y&&y.ok&&typeof y.value=="string"?y.value===""?(localStorage.removeItem(g),null):y.value:localStorage.getItem(g)},setItem:(g,y)=>(localStorage.setItem(g,y),f("lovable-preview-auth:set",g,y).then(k=>{k&&k.ok&&typeof k.value=="string"&&localStorage.getItem(g)===y&&(k.value===""?localStorage.removeItem(g):localStorage.setItem(g,k.value))})),removeItem:g=>(localStorage.removeItem(g),f("lovable-preview-auth:remove",g).then(()=>{}))}}const Zt="https://obowtqmoitnrjquptsrk.supabase.co",Yt="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9ib3d0cW1vaXRucmpxdXB0c3JrIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzI5Njc3MzIsImV4cCI6MjA4ODU0MzczMn0.i3bJSG7jiO9s9rHjki2wDrbednZrbAu9YiL6vnHBBX4",Xt=et(Zt,Yt,{auth:{storage:Jt(),persistSession:!0,autoRefreshToken:!0}}),Qt="/assets/story-cover-1-DW9WSyDX.webp",er="/assets/story-cover-2-BvaNhNQ8.webp",tr="/assets/story-cover-3-CRpkascv.webp",rr="/assets/ghost-cover-1-CETp4NhP.webp",nr="/assets/ghost-cover-2-DsKvn1Ea.webp",ar="/assets/ghost-cover-3-B7IPcnii.webp",qe=[{id:"raven-och-stjarnbron",title:"Räven och Stjärnbron",excerpt:"En modig liten räv ger sig ut på ett äventyr genom den förtrollade skogen för att hitta den legendariska stjärnbron.",content:`Det var en gång en liten räv vid namn Rufus som bodde i en mysig håla vid kanten av den Förtrollade Skogen. Varje kväll tittade han upp mot himlen och undrade vart stjärnorna tog vägen när morgonen kom.
88
89"De går över Stjärnbron," sa hans mormor en kväll. "En bro g
89jord av rent stjärnljus som bara visar sig för den som är modig nog att söka den."
90
91Rufus bestämde sig. Han skulle hitta Stjärnbron.
92
93Han vandrade genom skogen, förbi svamparna som lyste i mörkret och förbi den sjungande bäcken. Han mötte en uggla som satt på en gammal ek.
94
95"Vart ska du, lilla räv?" frågade ugglan.
96
97"Jag söker Stjärnbron," svarade Rufus.
98
99"Följ eldflugornas dans," viskade ugglan. "De vet vägen."
100
101Rufus följde de blinkande ljusen djupare in i skogen. Snart kom han till en glänta där hundratals eldfluggor dansade i en spiral uppåt mot himlen. Och där, högt ovanför trädtopparna, glimmade den — Stjärnbron.
102
103Den var gjord av tusen och åter tusen små stjärnor, sammanlänkade i ett skimrande båge över nattskyn. Rufus tog sitt första steg ut på bron och kände hur hela världen öppnade sig under honom.
104
105Från bron kunde han se allt — sin håla, skogen, havet bortom bergen. Han förstod att världen var mycket större och vackrare än han någonsin hade trott.
106
107När han kom hem igen den natten, kröp han ner i sin varma håla med ett leende. Han visste nu att äventyren alltid väntade på den som vågade söka dem.
108
109Och eldflugorna? De dansade fortfarande i gläntan, väntande på nästa modiga själ.`,coverImage:Qt,category:"saga",date:"2026-03-01",readTime:"5 min"},{id:"hemliga-dorren-i-eken",title:"Den Hemliga Dörren i Eken",excerpt:"Lilla Maja hittar en hemlig dörr i det gamla ekträdet och upptäcker en värld full av magiska varelser.",content:`Maja var en nyfiken flicka med eldrödt hår som alltid letade efter äventyr. En solig eftermiddag, när hon lekte i trädgården, upptäckte hon något märkligt med det gamla ekträdet.
110
111Där, halvt gömd bakom mossa och murgröna, fanns en liten dörr. Den var inte större än en katt, med ett handtag format som ett löv.
112
113"Hallå?" viskade Maja och knackade försiktigt.
114
115Dörren öppnades av sig själv, och inifrån strömmade ett gyllene ljus. Maja kröp in och befann sig plötsligt i en helt annan värld.
116
117Träden var gjorda av kristall, blommorna sjöng melodier, och små varelser med vingar av regnbågsfärger fladdrade runt henne.
118
119"Välkommen till Ekariket!" sa en liten varelse som liknade en ekorre med ametistfärgade ögon. "Vi har väntat på dig."
120
121"Väntat på mig?" sa Maja förvånat.
122
123"Ja, det är bara barn med riktigt stora hjärtan som kan se dörren. Och vi behöver din hjälp. Vår magiska ek håller på att tyna bort."
124
125Maja fick veta att ekens magi kunde räddas om någon sjöng den gamla sången — sången som bara barn kunde höra i vinden. Maja lyssnade noga, och där, i vindens viskningar, hörde hon melodin.
126
127Hon sjöng, och hela Ekariket blommade upp i tusen färger. Kristallträden glödde, blommorna jublade, och de små varelserna dansade av glädje.
128
129"Tack, Maja! Du räddade vårt hem."
130
131Maja kröp tillbaka ut genom dörren med ett löfte att komma tillbaka. Och varje gång hon sjöng den gamla sången kunde hon höra Ekariket sjunga tillbaka.`,coverImage:er,category:"saga",date:"2026-02-22",readTime:"6 min"},{id:"draken-och-riddaren",title:"Draken och Riddarens Tekalas",excerpt:"En ung riddare upptäcker att den fruktade draken egentligen bara vill ha en vän att dela kakor med.",content:`I kungariket Solglänta berättade alla om den fruktade draken som bodde på Molnberget. Ingen vågade gå dit, för alla visste att drakar var farliga.
132
133Men den unga riddaren Hugo var inte som andra riddare. Han tyckte inte om svärd, och han var mycket bättre på att baka kakor än att slåss.
134
135"Jag ska besegra draken!" sa Hugo en dag, fast han egentligen var ganska nervös.
136
137Han packade sin ryggsäck — inte med vapen, utan med sina bästa chokladkakor och en termos varm choklad.
138
139När han klättrade upp på Molnberget hörde han ett ljud. Det var inte ett skrämmande vrål. Det var... gråt?
140
141Hugo smög fram och såg den gröna draken sitta ensam vid en liten eld. Stora tårar rann nerför hans fjälliga kinder.
142
143"Hej," sa Hugo försiktigt. "Varför gråter du?"
144
145Draken hoppade till. "Å! En riddare! Ska du slåss med mig?"
146
147"Nej," sa Hugo och satte sig ner. "Jag tänkte bjuda på kakor."
148
149Drakens ögon blev stora som tefat. "Ka-kakor? Ingen har bjudit mig på kakor förut. Alla springer ifrån mig."
150
151"Varför det?" frågade Hugo.
152
153"För att jag nyser eld," sa draken sorgset. "Men jag vill inte skrämma någon. Jag vill bara ha en vän."
154
155Hugo skrattade. "Du kan nysa eld? Det är ju perfekt! Du kan hjälpa mig att grädda kakor!"
156
157Och så blev det. Hugo och draken — som hette Gull — startade det bästa bageriet i hela kungariket. Gull värmde ugnen med sina nysningar, och Hugo bakade de godaste kakorna.
158
159Snart kom alla i byn för att köpa kakor och klappa Gull på nosen. Och Gull? Han grät aldrig mer av ensamhet.`,coverImage:tr,category:"saga",date:"2026-02-15",readTime:"5 min"},{id:"spoket-i-slottet",title:"Spöket i Gamla Slottet",excerpt:"Tre modiga barn utforskar det övergivna slottet och upptäcker att spöket bara vill ha hjälp att hitta hem.",content:`Det gamla slottet hade stått tomt i hu
159ndra år. Alla i byn sa att det spökade där. På nätterna kunde man se ett blåaktigt ljus i tornfönstret.
160
161"Vi borde undersöka saken," sa Astrid, som var den modigaste av de tre vännerna.
162
163"Jag vet inte..." sa Emil och bet sig i läppen.
164
165"Kom igen! Det blir kul!" sa Siri och tog fram sin ficklampa.
166
167De tre vännerna smög in genom den knarrande porten precis när klockan slog midnatt. Inne i slottet var det kallt och mörkt. Spindelnät hängde som gardiner och damm virvlade i ficklampans sken.
168
169BANG!
170
171En dörr slog igen någonstans ovanför dem. Emil grep tag i Astrids arm.
172
173De gick uppför den vindlande trappan, steg för steg. Vid varje trappsteg knarrade golvet, och skuggorna dansade på väggarna.
174
175Överst i tornet fann de det — ett litet blåaktigt ljus som svävade framför ett gammalt porträtt.
176
177"Hej?" viskade Astrid.
178
179Ljuset pulserade och formades långsamt till en liten flicka i gammaldags kläder.
180
181"Å! Ni kan se mig!" sa spökflickan förvånat. "Ingen har kunnat se mig på hundra år!"
182
183"Vem är du?" frågade Siri.
184
185"Jag heter Elsa. Jag bodde här en gång. Men jag har gått vilse. Jag kan inte hitta vägen till stjärnorna."
186
187"Till stjärnorna?" sa Emil.
188
189"Det är dit spöken går när de är redo. Men jag har inte hittat vägen."
190
191De tre barnen hjälpte Elsa att leta. De hittade en hemlig trappa som ledde upp till slottets allra högsta torn. Där uppe, under den öppna himlen, badade allt i stjärnljus.
192
193"Där!" sa Elsa med ett strålande leende. En stig av ljus sträckte sig uppåt bland stjärnorna. "Nu ser jag den! Tack, kära vänner."
194
195Elsa vinkade och steg ut på ljusstigen. Med varje steg bleknade hon, tills hon blev en del av stjärnhimlen.
196
197De tre vännerna stod kvar och tittade uppåt. Och om du tittar noga på himlen en klar natt, kanske du kan se en stjärna som blinkar lite extra — det är Elsa som vinkar.`,coverImage:rr,category:"spokhistoria",date:"2026-03-05",readTime:"7 min"},{id:"skogen-som-viskade",title:"Skogen Som Viskade",excerpt:"När mörkret faller i den gamla skogen börjar träden viska hemligheter som ingen borde höra.",content:`Det fanns en skog utanför byn som alla kallade Viskerskogen. De gamla sa att man aldrig skulle gå dit efter solnedgången. Men Nils och Freja var nyfikna.
198
199"Det är bara dumma historier," sa Nils medan de vandrade in bland de mörka stammarna.
200
201Men så fort solen försvann bakom horisonten, hände det. Träden började viska.
202
203"Vännnnd tillllbaka..." väste en gammal ek.
204
205"Hörde du det?" viskade Freja och stannade tvärt.
206
207"Det är bara vinden," sa Nils, men hans röst darrade.
208
209De gick djupare in. Viskningarna blev starkare. De hörde röster som berättade historier — om barn som gått vilse, om skatter som gömts, om en tid då skogen var ung.
210
211Plötsligt såg de ljus mellan träden. Gröna, blå och lila lyktor som flöt i luften.
212
213"Kom nääärmare..." viskade rösterna.
214
215"Vi borde gå tillbaka," sa Freja.
216
217Men Nils hade redan gått mot ljusen. Freja följde efter.
218
219I en glänta mitt i skogen stod ett träd som var äldre än alla andra. Dess stam var bred som ett hus, och i barken kunde man se ansikten — hundratals ansikten, alla med slutna ögon.
220
221"Det här är Minnesträdet," viskade en röst som var mjukare än de andra. En gammal kvinna trädde fram ur skuggorna. Hon var genomskinlig som dimma.
222
223"Vem är du?" frågade Nils.
224
225"Jag är skogen. Och jag har en historia att berätta er."
226
227Hon berättade om hur skogen en gång räddats av modiga barn som planterade det första fröet. Varje viskning var minnet av en berättelse, bevarad i trädens ringar.
228
229"Nu har ni hört skogen," sa kvinnan. "Och nu är ni en del av den."
230
231Nils och Freja sprang hem genom mörkret, hjärtana bultande. Men de var aldrig rädda för skogen igen. För nu visste de — viskningarna var inte hotfulla. De var bara gamla historier som väntade på att berättas.`,coverImage:nr,category:"spokhistoria",date:"2026-02-28",readTime:"6 min"},{id:"huset-pa-kullen",title:"Huset På Kullen",excerpt:"Det gamla huset på kullen har stått tomt i åratal, men varje natt tänds ett ljus i fönstret...",content:`Alla 
231i byn kände till huset på kullen. Det hade stått tomt sedan gamla fru Bergström försvunnit en vinternatt för tjugo år sedan. Men varje kväll, precis när klockan slog nio, tändes ett ljus i övervåningens fönster.
232
233"Det är fru Bergströms spöke," sa barnen i byn och rös.
234
235Men en regnig oktoberkväll bestämde sig Lovisa för att ta reda på sanningen. Hon tog sin katt Katten (som var väldigt uppfinningsrikt döpt) och gick uppför den branta kullen.
236
237Grinden gnisslade när hon öppnade den. Trädgården var övervuxen med vildrosor och ogräs. En ensam katt — svart som natten — satt på staketet och betraktade henne med gula ögon.
238
239"Miau," sa Katten.
240
241"Miau," svarade den svarta katten.
242
243Lovisa klev upp på verandan. Trappstegen knarrade under hennes fötter. Hon tryckte ner handtaget, och dörren öppnades med ett lååångt gnyyyyyyy.
244
245Inne var det mörkt och tyst. Damm dansade i ljuset från hennes ficklampa. Möblerna stod kvar, täckta med vita lakan som spökklädnader.
246
247Hon gick uppför trappan. Steg för steg. Knarr för knarr.
248
249Och där, i rummet med det tända ljuset, fann hon sanningen.
250
251Det var inte ett spöke. Det var en liten fågel — en liten rödhake — som hade byggt sitt bo bredvid en gammal oljelampa. Och varje kväll, när fågeln flaxade med vingarna, slog den mot lampans gamla tändmekanism. Klick! Och ljuset tändes.
252
253Lovisa skrattade högt. "Det var alltså du som skrämde hela byn!"
254
255Rödhaken tittade på henne och kvittrade glatt.
256
257Lovisa berättade sanningen för alla i byn. Några var lättade. Några var besvikna — de tyckte det var roligare med spöken.
258
259Men fru Bergströms hus stod inte tomt längre. Byborna fixade upp det och gjorde det till ett bibliotek. Och rödhaken? Den fick bo kvar, och varje kväll tändes ljuset i fönstret — inte av ett spöke, utan av en liten fågel som tyckte om att läsa.`,coverImage:ar,category:"spokhistoria",date:"2026-02-20",readTime:"6 min"}],sr=()=>{const[e,t]=m.useState([]),[n,a]=m.useState(!0);return m.useEffect(()=>{(async()=>{const{data:d,error:i}=await Xt.from("stories").select("*").eq("published",!0).order("created_at",{ascending:!1});if(!i&&d){const l=d.map(c=>({id:c.slug,title:c.title,excerpt:c.excerpt,content:c.content,coverImage:c.cover_image_url,category:c.category,date:c.created_at.split("T")[0],readTime:c.read_time,audioUrl:c.audio_url||void 0}));t(l)}a(!1)})()},[]),{stories:[...e,...qe],loading:n}},Rr=e=>qe.find(t=>t.id===e),or="23349075145",ir={header:{adUnit:"sagopelatset_header",sizes:[[728,90],[970,90],[970,250],[320,100],[320,50],"fluid"],sizeMapping:[[[990,0],[[970,250],[970,90],[728,90],"fluid"]],[[768,0],[[728,90],"fluid"]],[[0,0],[[320,100],[320,50],"fluid"]]],reserveClass:"ad-header-reserve"},inline_top:{adUnit:"sagopelatset_inline_top",sizes:[[300,250],[336,280],[728,90],[970,250],[970,90],[300,600],"fluid"],sizeMapping:[[[990,0],[[970,250],[970,90],[728,90],[336,280],[300,250],[300,600],"fluid"]],[[768,0],[[728,90],[336,280],[300,250],"fluid"]],[[0,0],[[336,280],[300,250],"fluid"]]],reserveClass:"ad-inline-reserve"},inline_mid:{adUnit:"sagopelatset_inline_mid",sizes:[[300,250],[336,280],[728,90],[970,250],[970,90],[300,600],"fluid"],sizeMapping:[[[990,0],[[970,250],[970,90],[728,90],[336,280],[300,250],[300,600],"fluid"]],[[768,0],[[728,90],[336,280],[300,250],"fluid"]],[[0,0],[[336,280],[300,250],"fluid"]]],reserveClass:"ad-inline-reserve"},inline_bottom:{adUnit:"sagopelatset_inline_bottom",sizes:[[300,250],[336,280],[728,90],[970,250],[970,90],"fluid"],sizeMapping:[[[990,0],[[970,250],[970,90],[728,90],[336,280],[300,250],"fluid"]],[[768,0],[[728,90],[336,280],[300,250],"fluid"]],[[0,0],[[336,280],[300,250],"fluid"]]],reserveClass:"ad-inline-reserve"},sidebar:{adUnit:"sagopelatset_sidebar",sizes:[[300,250],[300,600],[160,600],[120,600]],sizeMapping:[[[1280,0],[[300,600],[300,250],[160,600]]],[[1024,0],[[300,250],[160,600]]],[[0,0],[[300,250]]]],reserveClass:"ad-sidebar-reserve"}},W=window.__lastRenderMap||(window.__lastRenderMap=new Map),ie=window.__lastRefreshMap||(window.__lastRefreshMap=new Map),Oe=6e4,lr=8e3,dr=1500,he={header:100,inline_top:250,inline_mid:250,inline_bottom:250,sidebar:250},cr=(e,t)=>
259{const n=he[e];if(typeof window>"u")return n;const a=window.innerWidth;let s=[];for(const[[l],c]of t.sizeMapping)if(a>=l){s=c;break}if(!s.length)return n;const o=fe(t);let d=n;e==="header"?d=a>=990?250:a>=768?90:100:e==="sidebar"?d=a>=1280?600:250:d=250;const i=s.filter(l=>Array.isArray(l)&&typeof l[1]=="number").map(l=>l[1]);if(i.length&&!i.includes(d)){const l=i.filter(c=>c<=d).sort((c,u)=>u-c);d=l.length?l[0]:Math.min(...i)}return Math.min(d,o)},mr=()=>{if(typeof window>"u")return"mobile";const e=window.innerWidth;return e>=1280?"xl":e>=990?"lg":e>=768?"md":"mobile"},fe=e=>{if(typeof window>"u")return he.inline_top;const t=window.innerWidth;let n=0;for(const[[a],s]of e.sizeMapping)if(t>=a){for(const o of s)Array.isArray(o)&&typeof o[1]=="number"&&o[1]>n&&(n=o[1]);break}return n||he.inline_top},ur=()=>typeof window>"u"?!1:new URLSearchParams(window.location.search).has("adsdebug"),H=(...e)=>{ur()&&console.log("[GAM]",...e)};let gr=0;const pr=()=>`gam-${++gr}-${Date.now().toString(36)}`,X=({type:e,slotKey:t,className:n="",usePredefHeader:a=!1})=>{const s=ir[e],o=m.useMemo(()=>a?"div-gpt-predef-header":`div-gpt-${t}-${pr()}`,[t,a]),d=m.useMemo(()=>mr(),[]),i=`${t}::${d}`,l=m.useMemo(()=>fe(s),[s]),[c,u]=m.useState(()=>{if(a&&typeof window<"u"&&window._predefHeaderRendered)return H("predef-header hydrate filled",window._predefHeaderHeight),"filled";const g=W.get(i);if(g){Date.now()-g.timestamp;const y=ie.get(i)||0;if(Date.now()-y<Oe)return H("cache-hit",i,g),g.isEmpty?"empty":"filled"}return"idle"}),[p,x]=m.useState(()=>{if(a&&typeof window<"u"&&window._predefHeaderHeight)return window._predefHeaderHeight;const g=W.get(i);return g&&!g.isEmpty&&g.height?Math.min(g.height,fe(s)):null}),f=m.useRef(null);m.useEffect(()=>{if(typeof window>"u")return;if((!window.googletag||!window.googletag.cmd)&&(window.googletag=window.googletag||{cmd:[]}),a){const b=()=>{window._predefHeaderRendered&&(u("filled"),window._predefHeaderHeight&&x(window._predefHeaderHeight))};b();const h=setInterval(b,200),w=setTimeout(()=>clearInterval(h),5e3);return()=>{clearInterval(h),clearTimeout(w)}}const g=ie.get(i)||0;if(Date.now()-g<Oe){const b=W.get(i);b?(H("guard-block hydrate from cache",i,b),u(b.isEmpty?"empty":"filled"),b.isEmpty||x(Math.min(b.height,l))):(H("guard-block no cache → idle",i),u("idle"));return}u("loading"),ie.set(i,Date.now());let k,z,j=null,C,I,B=!1;const $=()=>{B||window.googletag.cmd.push(()=>{try{const b=`/${or}/${s.adUnit}`;if(j=window.googletag.defineSlot(b,s.sizes,o),!j){H("defineSlot returned null",o),u("empty");return}try{const h=window.googletag.sizeMapping();for(const[w,Z]of s.sizeMapping)h.addSize(w,Z);j.defineSizeMapping(h.build())}catch{}try{const h=window.location.pathname,w=h==="/"?"home":h.startsWith("/saga/")?"story":h.startsWith("/spokhistoria/")?"ghost_story":h==="/sagor"?"stories_list":h==="/spokhistorier"?"ghosts_list":h==="/ljudbocker"?"audiobooks":h.startsWith("/topp")?"toplist":"other";j.setTargeting("page_type",w),j.setTargeting("slot_pos",e),j.setTargeting("ad_unit_name",s.adUnit)}catch{}j.addService(window.googletag.pubads()),f.current=j,z=h=>
259{if(h.slot!==j)return;const w=h.size&&h.size[1]?h.size[1]:0,Z={isEmpty:h.isEmpty,size:h.size,height:w,timestamp:Date.now()};W.set(i,Z),H("slotRenderEnded",i,Z),k&&window.clearTimeout(k),h.isEmpty?u("empty"):(u("filled"),w&&x(w))},window.googletag.pubads().addEventListener("slotRenderEnded",z),window.googletag.display(o),window.googletag.pubads().refresh([j]),H("refresh issued",t,o)}catch(b){console.warn("[GAM] define/refresh error",b),u("empty")}})};return window._gamConsentReady?$():(I=()=>{C&&window.clearTimeout(C),$()},window.addEventListener("gam:consent-ready",I,{once:!0}),C=window.setTimeout(()=>{I&&window.removeEventListener("gam:consent-ready",I),$()},dr)),k=window.setTimeout(()=>{u(b=>b==="loading"?(H("timeout → empty",i),W.set(i,{isEmpty:!0,size:null,height:0,timestamp:Date.now()}),"empty"):b)},lr),()=>{if(B=!0,C&&window.clearTimeout(C),I&&window.removeEventListener("gam:consent-ready",I),k&&window.clearTimeout(k),z&&window.googletag&&window.googletag.pubads)try{window.googletag.pubads().removeEventListener("slotRenderEnded",z)}catch{}if(j&&window.googletag&&window.googletag.destroySlots)try{window.googletag.destroySlots([j])}catch{}}},[o,i,a]);const _=m.useMemo(()=>cr(e,s),[e,s]);if(c==="empty")return null;const R=p?Math.min(p,l):_;return r.jsxs("div",{className:`gam-ad-wrapper ${n}`,children:[r.jsx("div",{className:"gam-ad-label","aria-hidden":"true",children:"Annons"}),r.jsx("div",{className:"gam-ad",style:p?{height:R}:{minHeight:R},children:r.jsx("div",{id:o,style:{margin:"0 auto"}})})]})},Ie="https://www.sagopelatset.se",hr=({title:e,description:t,path:n,image:a,type:s="website"})=>{const o=`${Ie}${n}`,d=a||`${Ie}/og-image.jpg`;return r.jsxs(Mt,{children:[r.jsx("title",{children:e}),r.jsx("meta",{name:"description",content:t}),r.jsx("link",{rel:"canonical",href:o}),r.jsx("meta",{property:"og:title",content:e}),r.jsx("meta",{property:"og:description",content:t}),r.jsx("meta",{property:"og:url",content:o}),r.jsx("meta",{property:"og:type",content:s}),r.jsx("meta",{property:"og:image",content:d}),r.jsx("meta",{name:"twitter:title",content:e}),r.jsx("meta",{name:"twitter:description",content:t}),r.jsx("meta",{name:"twitter:image",content:d})]})},De=()=>r.jsxs("div",{className:"overflow-hidden rounded-xl border border-border bg-card shadow-sm animate-pulse",children:[r.jsx("div",{className:"aspect-[3/4] bg-muted"}),r.jsxs("div",{className:"p-4 space-y-3",children:[r.jsx("div",{className:"h-5 bg-muted rounded w-3/4"}),r.jsx("div",{className:"h-4 bg-muted rounded w-full"}),r.jsx("div",{className:"h-3 bg-muted rounded w-1/3"})]})]}),fr=()=>{const{stories:e,loading:t}=sr(),n=e.filter(i=>i.category==="saga"),a=e.filter(i=>i.category==="spokhistoria"),s=e.filter(i=>i.audioUrl),o=n.slice(0,3),d=a.slice(0,3);return r.jsxs("div",{className:"min-h-screen",children:[r.jsx(hr,{title:"Sagopelatset – Barnsagor & Spökhistorier att läsa för barnen",description:"Svensk sagosamling för föräldrar och morföräldrar – magiska barnsagor och spökhistorier att läsa högt för barnen. Nya berättelser varje vecka, gratis.",path:"/"}),r.jsxs("section",{className:"relative overflow-hidden min-h-[480px] md:min-h-[540px]",children:[r.jsxs("div",{className:"absolute inset-0",children:[r.jsxs("picture",{children:[r.jsx("source",{media:"(min-width: 768px)",srcSet:"/hero-bg.webp",type:"image/webp"}),r.jsx("img",{src:"/hero-bg-mobile.webp",alt:"Magisk sagobok",className:"h-full w-full object-cover",loading:"eager",decoding:"async",width:"768",height:"480",fetchpriority:"high"})]}),r.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-background/40 via-background/70 to-background"})]}),r.jsxs("div",{className:"relative container mx-auto px-4 py-24 md:py-36 text-center",children:[r.jsx(ye,{className:"mx-auto mb-4 h-10 w-10 text-story-gold"}),r.jsx("h1",{className:"font-display text-4xl font-extrabold tracking-tight text-foreground drop-shadow-sm md:text-6xl",children:"Sagopelatset – Barnsagor & Spökhistorier att läsa för barnen"}),r.jsx("p",{className:"mx-auto mt-4 max-w-xl text-lg font-semibold text-foreground/90 md:text-xl",children:"För föräldrar och morföräldrar som vill läsa magiska sagor och spökhistorier högt för barnen. Nya berättelser varje vecka."}),r.jsxs("div",{className:"mt-8 flex flex-wrap items-center justify-center gap-3",children:[r.jsxs(S,{to:"/sagor",className:"inline-flex items-center gap-2 rounded-lg bg-primary px-5 py-3 font-semibold text-primary-foreground transition-colors hover:bg-primary/90",children:[r.jsx(J,{className:"h-4 w-4"}),"Läs Sagor"]}),r.jsxs(S,{to:"/spokhistorier",className:"inline-flex items-center gap-2 rounded-lg bg-accent px-5 py-3 font-semibold text-accent-foreground transition-colors hover:bg-accent/90",children:[r.jsx(pe,{className:"h-4 w-4"}),"Spökhistorier"]})]})]})]}),r.jsx("section",{className:"border-y border-border bg-card/60",children:r.jsx("div",{className:"container mx-auto px-4 py-10",children:r.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4 text-center",children:[r.jsxs("div",{children:[r.jsx("p",{className:"font-display text-3xl font-extrabold text-primary md:text-4xl min-h-[40px]",children:t?" ":e.length}),r.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Berättelser totalt"})]}),r.jsxs("div",{children:[r.jsx("div",{className:"flex items-center justify-center gap-1.5 mb-1",children:r.jsx(J,{className:"h-5 w-5 text-primary"})}),r.jsx("p",{className:"font-display text-3xl font-extrabold text-foreground md:text-4xl min-h-[40px]",children:t?" ":n.length}),r.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Sagor"})]}),r.jsxs("div",{children:[r.jsx("div",{className:"flex items-center justify-center gap-1.5 mb-1",children:r.jsx(pe,{className:"h-5 w-5 text-accent"})}),r.jsx("p",{className:"font-display text-3xl font-extrabold text-foreground md:text-4xl min-h-[40px]",children:t?" ":a.length}),r.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Spökhistorier"})]}),r.jsxs("div",{children:[r.jsx("div",{className:"flex items-center justify-center gap-1.5 mb-1",children:r.jsx(Be,{className:"h-5 w-5 text-primary"})}),r.jsx("p",{className:"font-display text-3xl font-extrabold text-foreground md:text-4xl min-h-[40px]",children:t?" ":s.length}),r.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Ljudböcker"})]})]})})}),r.jsx("div",{className:"container mx-auto px-4 py-4",children:r.jsx(X,{type:"header",slotKey:"home-header",usePredefHeader:!0})}),r.jsxs("section",{className:"container mx-auto px-4 py-12",style:{contentVisibility:"auto",containIntrinsicSize:"0 600px"},children:[r.jsxs("div",{className:"flex items-center justify-between mb-8",children:[r.jsx("h2",{className:"font-display text-2xl font-bold text-foreground md:text-3xl",children:"Senaste Sagorna"}),r.jsxs(S,{to:"/sagor",className:"flex items-center gap-1 text-sm font-medium text-primary hover:underline",children:["Alla sagor ",r.jsx(G,{className:"h-4 w-4"})]})]}),r.jsx("div",{className:"grid gap-6 sm:grid-cols-2 lg:grid-cols-3",children:t?Array.from({length:3}).map((i,l)=>r.jsx(De,{},l)):o.map((i,l)=>r.jsx(Me,{story:i,index:l},i.id))})]}),r.jsx("div",{className:"container mx-auto px-4 py-4",children:r.jsx(X,{type:"inline_top",slotKey:"home-inline-top"})}),r.jsx("div",{className:"container mx-auto px-4 py-4",children:r.jsx(X,{type:"inline_mid",slotKey:"home-inline-mid"})}),r.jsx("section",{className:"ghost-gradient py-12",style:{contentVisibility:"auto",containIntrinsicSize:"0 600px"},children:r.jsxs("div",{className:"container mx-auto px-4",children:[r.jsxs("div",{className:"flex items-center justify-between mb-8",children:[r.jsx("h2",{className:"font-display text-2xl font-bold text-accent-foreground md:text-3xl",children:"Spökhistorier"}),r.jsxs(S,{to:"/spokhistorier",className:"flex items-center gap-1 text-sm font-medium text-accent-foreground
259/80 hover:text-accent-foreground",children:["Alla spökhistorier ",r.jsx(G,{className:"h-4 w-4"})]})]}),r.jsx("div",{className:"grid gap-6 sm:grid-cols-2 lg:grid-cols-3",children:t?Array.from({length:3}).map((i,l)=>r.jsx(De,{},l)):d.map((i,l)=>r.jsx(Me,{story:i,index:l},i.id))})]})}),r.jsx("section",{className:"border-t border-border bg-card/40",children:r.jsxs("div",{className:"container mx-auto px-4 py-10",children:[r.jsx("h2",{className:"font-display text-center text-xl font-bold text-foreground md:text-2xl mb-8",children:"Upptäck mer"}),r.jsxs("div",{className:"grid gap-6 sm:grid-cols-3",children:[r.jsxs("div",{className:"flex flex-col items-center text-center rounded-xl border border-border bg-card p-6",children:[r.jsx(J,{className:"mb-3 h-8 w-8 text-primary"}),r.jsx("h3",{className:"font-display text-lg font-bold text-foreground",children:"Läs böcker i rätt ordning"}),r.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:"Hitta rätt läsordning för dina favoritbokserier."}),r.jsxs("a",{href:"https://bokordning.se",target:"_blank",rel:"noopener",className:"mt-4 inline-flex items-center gap-2 rounded-lg bg-primary px-4 py-2 text-sm font-semibold text-primary-foreground transition-colors hover:bg-primary/90",children:["Bokordning.se ",r.jsx(G,{className:"h-4 w-4"})]})]}),r.jsxs("div",{className:"flex flex-col items-center text-center rounded-xl border border-border bg-card p-6",children:[r.jsx(zt,{className:"mb-3 h-8 w-8 text-accent"}),r.jsx("h3",{className:"font-display text-lg font-bold text-foreground",children:"Se filmer i rätt ordning"}),r.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:"Kolla filmserier i kronologisk eller utgivningsordning."}),r.jsxs("a",{href:"https://filmordning.nu",target:"_blank",rel:"noopener",className:"mt-4 inline-flex items-center gap-2 rounded-lg bg-accent px-4 py-2 text-sm font-semibold text-accent-foreground transition-colors hover:bg-accent/90",children:["Filmordning.nu ",r.jsx(G,{className:"h-4 w-4"})]})]}),r.jsxs("div",{className:"flex flex-col items-center text-center rounded-xl border border-border bg-card p-6",children:[r.jsx(Lt,{className:"mb-3 h-8 w-8 text-secondary"}),r.jsx("h3",{className:"font-display text-lg font-bold text-foreground",children:"AI Portföljkampen"}),r.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:"Följ tävlingen där AI-modeller investerar på börsen."}),r.jsxs("a",{href:"https://aiportfoljkampen.se",target:"_blank",rel:"noopener",className:"mt-4 inline-flex items-center gap-2 rounded-lg bg-secondary px-4 py-2 text-sm font-semibold text-secondary-foreground transition-colors hover:bg-secondary/90",children:["Aiportfoljkampen.se ",r.jsx(G,{className:"h-4 w-4"})]})]})]})]})}),r.jsx("div",{className:"container mx-auto px-4 py-6",children:r.jsx(X,{type:"inline_bottom",slotKey:"home-inline-bottom"})})]})},vr=m.lazy(()=>E(()=>import("./toaster-DG0vgMkJ.js"),__vite__mapDeps([0,1,2,3,4])).then(e=>({default:e.Toaster}))),xr=m.lazy(()=>E(()=>import("./sonner-DqIC8yNG.js"),__vite__mapDeps([5,1,2])).then(e=>({default:e.Toaster}))),yr=m.lazy(()=>E(()=>import("./StoriesPage-C1FlRY6b.js"),__vite__mapDeps([6,1,2,7,8,4]))),kr=m.lazy(()=>E(()=>import("./GhostStoriesPage-DC1UOgot.js"),__vite__mapDeps([9,1,2,7,8,4]))),br=m.lazy(()=>E(()=>import("./StoryDetailPage-j7-mgmGd.js"),__vite__mapDeps([10,1,2,11,8,4]))),jr=m.lazy(()=>E(()=>import("./AboutPage-Z6yYCuHF.js"),__vite__mapDeps([12,1,2,8,4]))),wr=m.lazy(()=>E(()=>import("./ContactPage-DYh9BXos.js"),__vite__mapDeps([13,1,2,3,8,4]))),Tr=m.lazy(()=>E(()=>import("./PrivacyPolicyPage-Bc4zF1wi.js"),__vite__mapDeps([14,1,2,8,4]))),Sr=m.lazy(()=>E(()=>import("./AdminLoginPage-BNTigycY.js"),__vite__mapDeps([15,1,2,3,8,4]))),Er=m.lazy(()=>E(()=>import("./AdminPage-t2Vwk6X9.js"),__vite__mapDeps([16,1,2,3,8,17,4]))),Ar=m.lazy(()=>E(()=>import("./Top15Page-vRaPm0WD.js"),__vite__mapDeps([18,1,2,8,17,4]))),_r=m.lazy(()=>E(()=>import("./AudiobooksPage-DafBBgL5.js"),__vite__mapDeps([19,1,2,11,8,4]))),Nr=m.lazy(()=>E(()=>import("./NotFound-Dt0OKJeJ.js"),__vite__mapDeps([20,1,2]))),Mr=new We({defaultOptions:{queries:{staleTime:5*60*1e3,gcTime:10*60*1e3}}}),M=()=>r.jsx("div",{className:"flex min-h-[80vh] items-center justify-center",children:r.jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),Or=()=>r.jsxs(Je,{client:Mr,children:[r.jsxs(m.Suspense,{fallback:null,children:[r.jsx(vr,{}),r.jsx(xr,{})]}),r.jsx(Xe,{children:r.jsx(Qe,{children:r.jsxs(T,{element:r.jsx(Wt,{}),children:[r.jsx(T,{path:"/",element:r.jsx(fr,{})}
259),r.jsx(T,{path:"/sagor",element:r.jsx(m.Suspense,{fallback:r.jsx(M,{}),children:r.jsx(yr,{})})}),r.jsx(T,{path:"/spokhistorier",element:r.jsx(m.Suspense,{fallback:r.jsx(M,{}),children:r.jsx(kr,{})})}),r.jsx(T,{path:"/saga/:id",element:r.jsx(m.Suspense,{fallback:r.jsx(M,{}),children:r.jsx(br,{})})}),r.jsx(T,{path:"/top15",element:r.jsx(m.Suspense,{fallback:r.jsx(M,{}),children:r.jsx(Ar,{})})}),r.jsx(T,{path:"/ljudbocker",element:r.jsx(m.Suspense,{fallback:r.jsx(M,{}),children:r.jsx(_r,{})})}),r.jsx(T,{path:"/integritetspolicy",element:r.jsx(m.Suspense,{fallback:r.jsx(M,{}),children:r.jsx(Tr,{})})}),r.jsx(T,{path:"/kontakt",element:r.jsx(m.Suspense,{fallback:r.jsx(M,{}),children:r.jsx(wr,{})})}),r.jsx(T,{path:"/om-oss",element:r.jsx(m.Suspense,{fallback:r.jsx(M,{}),children:r.jsx(jr,{})})}),r.jsx(T,{path:"/admin/login",element:r.jsx(m.Suspense,{fallback:r.jsx(M,{}),children:r.jsx(Sr,{})})}),r.jsx(T,{path:"/admin",element:r.jsx(m.Suspense,{fallback:r.jsx(M,{}),children:r.jsx(Er,{})})}),r.jsx(T,{path:"*",element:r.jsx(m.Suspense,{fallback:r.jsx(M,{}),children:r.jsx(Nr,{})})})]})})})]});He(document.getElementById("root")).render(r.jsx(Ue,{children:r.jsx(Or,{})}));export{J as B,Pt as C,X as G,Be as H,Ut as M,Me as S,Ft as T,pe as a,hr as b,A as c,$t as d,Rr as g,Xt as s,sr as u};

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.