PageSourceSearch

https://storybookrpg.com/_next/static/chunks/114-b19f7e777a89c8d1.js

js storybookrpg.com collected 2026-10-09 22:59:21 UTC 17,382 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[114],{17908:(e,t,r)=>{let a=r(45529);function n(e){return String(null!=e?e:"").normalize("NFKC").trim().toLowerCase().replace(/&/g," and ").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-+/g,"-")}let s=a.categories.map(e=>Object.freeze({...e,aliases:Object.freeze([...e.aliases])})),i=new Map,o=new Map;for(let e of s){let t=n(e.slug);if(!t||t!==e.slug)throw Error("Invalid canonical category slug: ".concat(e.slug));if(i.has(t))throw Error("Duplicate canonical category slug: ".concat(t));for(let r of(i.set(t,e),[e.slug,e.label,...e.aliases])){let t=n(r),a=o.get(t);if(a&&a.slug!==e.slug)throw Error('Category alias collision for "'.concat(r,'": ').concat(a.slug," and ").concat(e.slug));o.set(t,e)}}function l(e){let t=n(e);return t&&o.get(t)||null}function c(e){var t;return(null==(t=l(e))?void 0:t.slug)||null}e.exports=Object.freeze({CATEGORY_REGISTRY_VERSION:a.version,CATEGORY_REGISTRY:Object.freeze(s),normalizeCategoryKey:n,resolveCategory:l,getCategoryBySlug:function(e){return i.get(String(null!=e?e:""))||null},canonicalCategorySlug:c,canonicalizeCategoryList:function(e){if(!Array.isArray(e))return[];let t=new Set,r=[];for(let a of e){let e=c(a);e&&!t.has(e)&&(t.add(e),r.push(e))}return r},categoryHref:function(e){let t=c(e);return t?"/discover/".concat(t):null}})},19993:(e,t,r)=>{r.d(t,{AK:()=>c,Xk:()=>i,mu:()=>h,nf:()=>l});let a=["all","stories","storybooks","characters"],n=["trending","popular","top_rated","new","recent"],s="trending",i=["grid","list"],o=(e,t)=>null!==t&&e.includes(t);function l(e){var t,r;let l=Number.parseInt(e.get("page")||"1",10),c=e.get("type"),h=e.get("sort"),g=e.get("view"),u=(null==(t=e.get("genre"))?void 0:t.trim())||null;return{search:(null==(r=e.get("search"))?void 0:r.trim())||"",tab:o(a,c)?c:"all",genre:u,sort:o(n,h)?h:s,page:Number.isFinite(l)&&l>0?l:1,view:o(i,g)?g:"grid"}}function c(e){let t=new URLSearchParams;return e.search&&t.set("search",e.search),"all"!==e.tab&&t.set("type",e.tab),e.genre&&t.set("genre",e.genre),e.sort!==s&&t.set("sort",e.sort),e.page>1&&t.set("page",String(e.page)),"grid"!==e.view&&t.set("view",e.view),t.toString()}function h(e){return"all"===e.tab&&!e.search&&!e.genre&&e.sort===s&&1===e.page}},30114:(e,t,r)=>{r.d(t,{$f:()=>h,Ay:()=>f,FT:()=>g,JU:()=>d,WF:()=>u,cG:()=>p});var a=r(95155),n=r(52619),s=r.n(n),i=r(52177),o=r(17908),l=r(63548);let c={compass:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("circle",{cx:"12",cy:"12",r:"9"}),(0,a.jsx)("path",{d:"m15.5 8.5-2 5-5 2 2-5 5-2z"})]}),bookOpen:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"}),(0,a.jsx)("path",{d:"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"})]}),library:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"m16 6 4 14"}),(0,a.jsx)("path",{d:"M12 6v14"}),(0,a.jsx)("path",{d:"M8 8v12"}),(0,a.jsx)("path",{d:"M4 4v16"})]}),user:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),(0,a.jsx)("circle",{cx:"12",cy:"7",r:"4"})]}),wand:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5l6.74-6.76z"}),(0,a.jsx)("path",{d:"M16 8 2 22"})]}),rocket:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"M4.5 16.5c-1.5 1.3-2 5-2 5s3.7-.5 5-2c.7-.8.7-2 0-2.8-.8-.7-2.2-.7-3 .8z"}),(0,a.jsx)("path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"}),(0,a.jsx)("path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"}),(0,a.jsx)("path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"})]}),search:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("circle",{cx:"11",cy:"11",r:"7"}),(0,a.jsx)("path",{d:"m20 20-3.5-3.5"})]}),heart:(0,a.jsx)("path",{d:"M19 14c1.5-1.5 2-3.2 2-4.5A4.5 4.5 0 0 0 12 6.3 4.5 4.5 0 0 0 3 9.5c0 1.3.5 3 2 4.5l7 7 7-7z"}),mountain:(0,a.jsx)("path",{d:"m8 3 4 8 5-5 5 15H2L8 3z"}),drama:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"M3 5c2-1 4-1 6 0v14c-2-1-4-1-6 0V5z"}),(0,a.jsx)("path",{d:"M15 5c2-1 4-1 6 0v14c-2-1-4-1-6 0V5z"}),(0,a.jsx)("path",{d:"M9 6.5c2 .8 4 .8 6 0"}),(0,a.jsx)("path",{d:"M9 17.5c2-.8 4-.8 6 0"})]}),ghost:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"M12 3a7 7 0 0 0-7 7v11l2.5-2 2.5 2 2-2 2 2 2.5-2 2.5 2V10a7 7 0 0 0-7-7z"}),(0,a.jsx)("path",{d:"M9.5 11h.01"}),(0,a.jsx)("path",{d:"M14.5 11h.01"})]}),sparkle:(0,a.jsx)(a.Fragment,{children:(0,a.jsx)("path",{d:"M12 3l1.9 5.7a2 2 0 0 0 1.3 1.3L21 12l-5.8 2a2 2 0 0 0-1.3 1.3L12 21l-1.9-5.7a2 2 0 0 0-1.3-1.3L3 12l5.8-2a2 2 0 0 0 1.3-1.3L12 3z"})}),flame:(0,a.jsx)("path",{d:"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.4-.5-2-1-3-1.1-2.2-.2-4.2 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.2.5-2.4 1.5-3.5.6 1.2 1 2 2 3z"}),grid:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("rect",{x:"4",y:"4",width:"6",height:"6",rx:"1"}),(0,a.jsx)("rect",{x:"14",y:"4",width:"6",height:"6",rx:"1"}),(0,a.jsx)("rect",{x:"4",y:"14",width:"6",height:"6",rx:"1"}),(0,a.jsx)("rect",{x:"14",y:"14",width:"6",height:"6",rx:"1"})]}
1),bolt:(0,a.jsx)("path",{d:"M13 2 3 14h7l-1 8 10-12h-7l1-8z"}),bookmark:(0,a.jsx)("path",{d:"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z"}),history:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),(0,a.jsx)("path",{d:"M3 3v5h5"}),(0,a.jsx)("path",{d:"M12 7v5l3 3"})]}),tag:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("path",{d:"M12 2H2v10l9.3 9.3a2 2 0 0 0 2.8 0l7-7a2 2 0 0 0 0-2.8L12 2z"}),(0,a.jsx)("path",{d:"M7 7h.01"})]})},h=Object.fromEntries(o.CATEGORY_REGISTRY.flatMap(e=>[[e.label,e.icon],[e.slug,e.icon]])),g=e=>{let{name:t}=e;return(0,a.jsx)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round",className:"h-[18px] w-[18px] shrink-0",children:c[t]})},u=e=>"flex w-full items-center gap-3 rounded-[10px] px-3 py-[7px] text-left text-sm font-medium transition-colors ".concat(e?"bg-brown-active text-gold-bright":"text-[#a3a2a0] hover:bg-white/[0.04] hover:text-parchment"),d=e=>{let{children:t}=e;return(0,a.jsx)("span",{className:"mb-2 block px-2.5 text-[11px] font-semibold uppercase tracking-[0.12em] text-faded",children:t})},p=()=>(0,a.jsx)("div",{className:"mx-1 my-3 h-px bg-white/[0.06]"}),m=[{tab:"stories",label:"Stories",icon:"bookOpen"},{tab:"storybooks",label:"Storybooks",icon:"library"},{tab:"characters",label:"Characters",icon:"user"}];function f(e){let{activeTab:t="all",onTabChange:r,onTabPrefetch:n,onExploreAll:c,activeCategory:h=null}=e;return(0,a.jsx)("aside",{id:l.oV,className:"".concat(l.T8," hidden w-[244px] shrink-0 self-stretch lg:block"),"aria-label":"Discover navigation",children:(0,a.jsxs)("div",{className:"sticky top-[62px] max-h-[calc(100vh-86px)] overflow-y-auto overscroll-y-contain rounded-[14px] border border-white/5 bg-[#171719] px-3.5 py-[18px]",children:[(0,a.jsxs)("nav",{"aria-label":"Discover views",children:[(0,a.jsx)(d,{children:"Discover"}),c?(0,a.jsxs)("button",{type:"button",onClick:c,className:u("all"===t&&!h),"aria-pressed":!h&&"all"===t,children:[(0,a.jsx)(g,{name:"compass"}),"Explore All"]}):(0,a.jsxs)(s(),{href:"/discover",className:u("all"===t&&!h),"aria-current":h||"all"!==t?void 0:"page",children:[(0,a.jsx)(g,{name:"compass"}),"Explore All"]}),m.map(e=>{let{tab:i,label:o,icon:l}=e;return r?(0,a.jsxs)("button",{onClick:()=>r(i),onMouseEnter:n?()=>n(i):void 0,onFocus:n?()=>n(i):void 0,className:u(t===i&&!h),"aria-pressed":t===i&&!h,children:[(0,a.jsx)(g,{name:l}),o]},i):(0,a.jsxs)(s(),{href:"/discover?type=".concat(i),className:u(!1),children:[(0,a.jsx)(g,{name:l}),o]},i)})]}),(0,a.jsx)(p,{}),(0,a.jsxs)("nav",{"aria-label":"Story categories",children:[(0,a.jsx)(d,{children:"Categories"}),o.CATEGORY_REGISTRY.map(e=>(0,a.jsxs)(i.A,{categorySlug:e.slug,className:u(h===e.slug),"aria-current":h===e.slug?"page":void 0,children:[(0,a.jsx)(g,{name:e.icon}),e.label]},e.slug))]}),(0,a.jsx)(p,{}),(0,a.jsxs)("nav",{"aria-label":"Library",children:[(0,a.jsx)(d,{children:"Library"}),(0,a.jsxs)(s(),{href:"/library/favorites",className:u(!1),children:[(0,a.jsx)(g,{name:"bookmark"}),"Favorites"]}),(0,a.jsxs)(s(),{href:"/library/history",className:u(!1),children:[(0,a.jsx)(g,{name:"history"}),"History"]})]})]})})}},45529:e=>{e.exports=JSON.parse('{"version":"taxonomy-2026-07-12.v1","categories":[{"slug":"fantasy","label":"Fantasy","aliases":["fantasy fiction"],"intro":"Magic has a price here. Find old bargains and impossible creatures in worlds with rules worth learning.","heroImage":"/images/genres/fantasy.png","heroPosition":"center 42%","accent":"#c6a15b","wash":"#3a2f22","icon":"wand"},{"slug":"adventure","label":"Adventure","aliases":["adventure fiction"],"intro":"The road changes everyone who takes it. Cross dangerous country with characters who have a reason to keep moving.","heroImage":"/images/genres/adventure.png","heroPosition":"center 48%","accent":"#d0a566","wash":"#43311f","icon":"mountain"},{"slug":"sci-fi","label":"Sci-Fi","aliases":["sci fi","scifi","science fiction","science-fiction","sf"],"intro":"A distant signal changes the terms. Read stories about strange machines and the people asked to trust them.","heroImage":"/images/genres/scifi.png","heroPosition":"center 46%","accent":"#78a7bf","wash":"#1f3441","icon":"rocket"},{"slug":"mystery","label":"Mystery","aliases":["mysteries","mystery fiction"],"intro":"Every clue changes the shape of the case. Follow vanished names and investigators who know they missed something.","heroImage":"/images/genres/mystery.png","heroPosition":"center 44%","accent":"#b8aa88","wash":"#2f312f","icon":"search"},{"slug":"romance","label":"Romance","aliases":["romantic fiction"],"intro":"Two people meet with something real to lose. Stay for slow burns and second chances that take work.","heroImage":"/images/genres/romance.png","heroPosition":"center 38%","accent":"#c58a8d","wash":"#462c33","icon":"heart"},{"slug":"horror","label":"Horror","aliases":["horror fiction"],"intro":"Something is wrong before anyone can name it. Enter haunted places and nights that refuse to end.","heroImage":"/images/genres/horror.png","heroPosition":"center 40%","accent":"#a78373","wash":"#302321","icon":"ghost"},{"slug":"comedy","label":"Comedy","aliases":["comic fiction","humor","humour"],"intro":"Bad plans meet perfect timing. Find quick dialogue and characters who keep making a bad plan worse.","heroImage":"/images/genres/comic.png","heroPosition":"center 42%","accent":"#d1b56f","wash":"#40351f","icon":"drama"},{"slug":"drama","label":"Drama","aliases":["dramatic fiction"],"intro":"The hardest turns happen between people. These stories stay close to loyalty and the cost of a choice.","heroImage":"/images/genres/drama.png","heroPosition":"center 40%","accent":"#b58f72","wash":"#382921","icon":"drama"},{"slug":"thriller","label":"Thriller","aliases":["thrillers","suspense thriller"],"intro":"The clock is already running. Follow compromised plans and choices made under pressure.","heroImage":"/images/genres/thriller.png","heroPosition":"center 44%","accent":"#9ca07d","wash":"#2a3025","icon":"search"},{"slug":"historical","label":"Historical","aliases":["historical fiction","history"],"intro":"The past is lived one decision at a time. Read stories shaped by their period without losing sight of the people inside it.","heroImage":"/images/genres/historical.png","heroPosition":"center 46%","accent":"#bd9c6c","wash":"#3b3022","icon":"bookOpen"},{"slug":"magic","label":"Magic","aliases":["magical","wizardry"],"intro":"A spell always leaves a mark. Meet practitioners learning what their power can change and what it cannot repair.","heroImage":"/images/genres/fairytale.png","heroPosition":"center 42%","accent":"#ad8dcc","wash":"#332844","icon":"sparkle"},{"slug":"dragons","label":"Dragons","aliases":["dragon","dragon fiction"],"intro":"Dragons remember longer than kingdoms do. Find uneasy alliances and fire with a point of view.","heroImage":"/images/genres/fantasy_story.png","heroPosition":"center 40%","accent":"#d18b55","wash":"#43281e","icon":"flame"},{"slug":"space","label":"Space","aliases":["outer space","space fiction","space opera"],"intro":"Distance makes every promise harder to keep. Travel between quiet stations and places no map has named.","heroImage":"/images/genres/scifi_story.png","heroPosition":"center 45%","accent":"#769bc9","wash":"#202c43","icon":"rocket"},{"slug":"dystopian","label":"Dystopian","aliases":["dystopia","dystopian fiction"],"intro":"The system works exactly as designed. Read about the people who notice the cost and decide what resistance demands.","heroImage":"/images/genres/dystopian.png","heroPosition":"center 42%","accent":"#9f8b75","wash":"#302c2a","icon":"grid"},{"slug":"cyberpunk","label":"Cyberpunk","aliases":["cyber punk","cyber-punk"],"intro":"The city knows your name because someone sold it. Follow street-level lives under corporate light.","heroImage":"/images/genres/cyberpunk.png","heroPosition":"center 44%","accent":"#be78a9","wash":"#3d2340","icon":"bolt"}]}')},52177:(e,t,r)=>{r.d(t,{A:()=>l});var a=r(95155),n=r(12115),s=r(52619),i=r.n(s),o=r(71529);function l(e){let{categorySlug:t,scroll:r,...s}
1=e,[l,c]=(0,n.useState)(null),[h,g]=(0,n.useState)(!1),u=(0,n.useCallback)(()=>{let e=(0,o.CZ)(t);c(e),g(null!==e&&null!==(0,o.t_)(t,e))},[t]);return(0,n.useEffect)(()=>(u(),window.addEventListener(o.JC,u),()=>window.removeEventListener(o.JC,u)),[u]),(0,a.jsx)(i(),{...s,href:null!=l?l:"/discover/".concat(t),scroll:!h&&r})}},71529:(e,t,r)=>{r.d(t,{CZ:()=>p,JC:()=>i,Qy:()=>x,fq:()=>f,lL:()=>v,t_:()=>m});var a=r(17908),n=r(78584);let s="storybookai:discover-category-navigation:v1",i="storybookai:discover-category-navigation-change";function o(){return{version:1,categories:{}}}function l(){try{return window.sessionStorage}catch(e){return null}}function c(e,t){let r=function(e){let t=(0,a.resolveCategory)(e);return(null==t?void 0:t.slug)===e?e:null}(e);if(!r||"string"!=typeof t||0===t.length||t.length>4096)return null;try{let e=new URL("https://storybookai.local"),a=new URL(t,e);if(a.origin!==e.origin||a.pathname!=="/discover/".concat(encodeURIComponent(r)))return null;return(0,n.oW)(r,(0,n.yu)(a.searchParams))}catch(e){return null}}function h(e){return"number"!=typeof e||!Number.isFinite(e)||e<0?null:Math.min(1e7,e)}function g(e){if(!e)return o();try{let t=e.getItem(s);if(!t||t.length>256e3)return o();let r=JSON.parse(t);if(1!==r.version||!r.categories||"object"!=typeof r.categories)return o();let n={};for(let e of a.CATEGORY_REGISTRY){let t=r.categories[e.slug];if(!t||"object"!=typeof t)continue;let a=c(e.slug,t.lastHref);if(!a)continue;let s=Array.isArray(t.positions)?t.positions.flatMap(t=>{if(!t||"object"!=typeof t)return[];let r=c(e.slug,t.href),a=h(t.scrollY);return r&&null!==a?[{href:r,scrollY:a}]:[]}).slice(-8):[];n[e.slug]={lastHref:a,positions:s}}return{version:1,categories:n}}catch(e){return o()}}function u(e,t){if(!e)return!1;try{return e.setItem(s,JSON.stringify(t)),!0}catch(e){return!1}}function d(){window.dispatchEvent(new Event(i))}function p(e){var t,r;let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l();return null!=(r=null==(t=g(a).categories[e])?void 0:t.lastHref)?r:null}function m(e,t){var r,a;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l(),s=c(e,t);if(!s)return null;let i=g(n).categories[e];return null!=(a=null==i||null==(r=i.positions.find(e=>e.href===s))?void 0:r.scrollY)?a:null}function f(e,t){var r;let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l(),n=c(e,t);if(!n||!a)return null;let s=g(a),i=s.categories[e];return(s.categories[e]={lastHref:n,positions:null!=(r=null==i?void 0:i.positions)?r:[]},u(a,s))?((null==i?void 0:i.lastHref)!==n&&d(),n):null}function x(e,t,r){var a;let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:l(),s=c(e,t),i=h(r);if(!s||null===i||!n)return!1;let o=g(n),p=o.categories[e],m=(null!=(a=null==p?void 0:p.positions)?a:[]).filter(e=>e.href!==s).concat({href:s,scrollY:i}).slice(-8);o.categories[e]={lastHref:s,positions:m};let f=u(n,o);return f&&d(),f}function v(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l(),a=c(e,t);if(!a||!r)return!1;let n=g(r),s=n.categories[e];if(!s)return!0;let i=s.positions.filter(e=>e.href!==a),o=i.length!==s.positions.length,h=s.lastHref===a;if(!o&&!h)return!0;if(h){let t=i.at(-1);t?n.categories[e]={lastHref:t.href,positions:i}:delete n.categories[e]}else n.categories[e]={...s,positions:i};let p=u(r,n);return p&&d(),p}},78584:(e,t,r)=>{r.d(t,{oW:()=>o,yu:()=>i});var a=r(19993);let n=["recent","popular"],s=(e,t)=>null!==t&&e.includes(t);function i(e){var t,r;let i=Number.parseInt(e.get("page")||"1",10),o=Number.isFinite(i)&&i>0?i:1,l=e.get("sort"),c=e.get("view"),h=(null==(t=e.get("search"))?void 0:t.trim())||"",g=(null==(r=e.get("cursor"))?void 0:r.trim())||null,u=!h&&o>1&&g&&g.length<=2048?g:null,d=h||!(o>1)||u?o:1;return{search:h,sort:s(n,l)?l:"recent",page:d,view:s(a.Xk,c)?c:"grid",cursor:d>1?u:null}}function o(e,t){let r=function(e){let t=new URLSearchParams;return e.search&&t.set("search",e.search),"recent"!==e.sort&&t.set("sort",e.sort),e.page>1&&t.set("page",String(e.page)),"grid"!==e.view&&t.set("view",e.view),!e.search&&e.page>1&&e.cursor&&t.set("cursor",e.cursor),t.toString()}(t),a="/discover/".concat(encodeURIComponent(e));return r?"".concat(a,"?").concat(r):a}}}]);

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.