PageSourceSearch

https://tesana.com/assets/GameStudiosPage-CWayLehQ.js

js tesana.com collected 2026-10-09 22:41:15 UTC 19,297 bytes, 1 lines download raw bytes

1import{j as e,A as G,m as N}from"./vendor-motion-hRg_q8lq.js";import{r}from"./vendor-react-E98sgxjj.js";import{u as L,c as _,l as A,m as F,L as P,R as T,T as K,b as D,n as H,H as V,P as R}from"./index-BKzE8EQ8.js";import{P as Y,L as Q}from"./LandingFooter-DjCjfhwD.js";import{A as J}from"./index-BxtVm1Yj.js";import{du as v}from"./vendor-fa-Bn2dnpnC.js";import{G as X}from"./GameFrame-COJWxWBt.js";import{C as Z}from"./CoinTopUpModal-CAwRJTIr.js";import{P as ee,R as te}from"./index-B_kJqugV.js";import{u as se}from"./useFullscreen-Cs7diftf.js";import{u as ae}from"./vendor-query-bOUN_gKe.js";import{u as ie}from"./usePlayFeatures-C6KNVcgO.js";import"./PlayPanelHost-DZaYs6Qz.js";import"./useLocaleNavigate-BNriJdRU.js";import"./UserAvatarMenu-BoKKInby.js";import"./Tooltip-C8AvPGtA.js";import"./Avatar-B60wpoS5.js";import"./MediaImage-DKgx-nW4.js";import"./tabBarStore-624ukDKJ.js";import"./socialLinks-DmmZmq5v.js";import"./exploreHandoff-RQymaHkp.js";import"./AuthShell-DPeun0C_.js";import"./AuthPanel-B4zt6SJ5.js";import"./pendingReferral-B4JPXhl_.js";import"./LaunchPromoClips-eRoWsyBt.js";import"./ShareModal-YOmfr9ti.js";import"./SubmitVideoModal-DzX5MAqQ.js";import"./earnProgram-B9pqjKbP.js";import"./trailerShare-BGlMG0RV.js";import"./usePublishingFeatures-C8zY31rs.js";import"./planPerks-uEcgEuVc.js";import"./plans-CbMJY2XS.js";import"./useIsStaff-DZf24Ivp.js";import"./usePlayingNow-D0BSBy1C.js";import"./playingNowApi-CB_pr25U.js";import"./vanitySite-BtpHcDVO.js";import"./useChatUnread-BF3F7z48.js";import"./useGameChatSocket-Ca57ylO8.js";import"./chatRoomStore-oLAeRb02.js";import"./playIntent-BFBGkqRe.js";import"./chatReturn-BikAGK6w.js";import"./PlayingNowBadge-CH2HUoBo.js";import"./useFocusTrap-BzqZufCW.js";const C="game-preview-modal-muted";function re(n){const{playerShell:t,ready:d}=ie();return t?e.jsx(ne,{...n}):!d&&n.isOpen?null:e.jsx(z,{...n})}function ne(n){const{isOpen:t,onClose:d,game:s}=n,{t:a}=L("game"),{isLight:x}=_(),u=s?s.public_id??String(s.id):null,{data:m,isError:g}=ae({queryKey:["game-public",u],queryFn:()=>A.getPublic(u),enabled:t&&!!u,staleTime:6e4});return r.useEffect(()=>{if(t)return document.body.style.overflow="hidden",()=>{document.body.style.overflow=""}},[t]),t&&s&&(g||m&&(!F(m)||m.platform_tier==="desktop"))?e.jsx(z,{...n}):e.jsx(G,{children:t&&s&&e.jsxs(e.Fragment,{children:[e.jsx(N.div,{initial:{opacity:0}
1,animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:`fixed inset-0 z-[100] ${x?"bg-black/70":"bg-black/80"}`,onClick:d}),e.jsxs(N.div,{initial:{opacity:0,scale:.97},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.97},transition:{duration:.25,ease:[.16,1,.3,1]},className:"fixed inset-x-4 top-4 bottom-5 md:inset-x-16 lg:inset-x-32 [@media(max-width:639px),(max-height:520px)]:!inset-0 z-[101] flex flex-col",children:[e.jsxs("div",{className:"flex [@media(max-width:639px),(max-height:520px)]:hidden items-center justify-between mb-4",children:[e.jsxs("h2",{className:"text-lg text-white",children:[s.name,e.jsxs("span",{className:"text-sm text-white/60 ml-2",children:["by @",s.user]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(P,{to:T(s),target:"_blank",className:"flex h-9 px-3 text-sm transition-colors rounded-md items-center justify-center cursor-pointer bg-white/6 hover:bg-white/10 text-white/70 hover:text-white",children:a("gamePreview.openFullPage")}),e.jsx("button",{onClick:d,className:"w-9 h-9 bg-white/6 hover:bg-white/10 text-white/70 hover:text-white flex items-center justify-center transition-colors rounded-md cursor-pointer","aria-label":a("gamePreview.close"),children:e.jsx(v,{icon:["far","xmark"]})})]})]}),e.jsx("div",{className:"relative min-h-0 flex-1 overflow-hidden rounded-lg bg-black [@media(max-width:639px),(max-height:520px)]:rounded-none",children:m?e.jsx(ee,{game:m,surface:"preview",onClose:d},m.id):e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsx(K,{size:"lg",overlay:!1,text:a("gamePreview.loading",{name:s.name})})})})]})]})})}function z({isOpen:n,onClose:t,onSignup:d,game:s}){const{t:a}=L("game"),{isLight:x}=_(),{isAuthenticated:u}=D(),[m,g]=r.useState(!0),[y,h]=r.useState(!1),[b,j]=r.useState(0),[c,i]=r.useState(()=>typeof window>"u"?!1:window.sessionStorage.getItem(C)==="1"),o=r.useRef(null),p=r.useRef(null),w=r.useRef(null),[U,M]=r.useState(!1),I=r.useCallback(()=>M(!0),[]),q=r.useCallback(l=>{if(M(!1),typeof l=="number"){w.current?.completeTopUp(!0,l);return}H.getWallet().then(S=>w.current?.completeTopUp(!0,S.balance)).catch(()=>w.current?.completeTopUp(!1))},[]),{isFullscreen:E,toggleFullscreen:$}=se(o);r.useEffect(()=>{s&&(g(!0),h(!1),j(l=>l+1))},[s]),r.useEffect(()=>{const l=S=>{S.key==="Escape"&&t()};return n&&(window.addEventListener("keydown",l),document.body.style.overflow="hidden"),()=>{window.removeEventListener("keydown",l),document.body.style.overflow=""}},[n,t]);const f=s?F(s):null,k=r.useCallback(()=>{const l=p.current?.contentWindow;l&&l.postMessage({type:"set-muted",muted:c},"*")},[c]),W=r.useCallback(()=>{i(l=>!l)},[]);r.useEffect(()=>{typeof window>"u"||window.sessionStorage.setItem(C,c?"1":"0")},[c]),r.useEffect(()=>{!n||!f||k()},[n,f,b,c,k]);const B=()=>{g(!1),k()},O=()=>{g(!1),h(!0)};return e.jsxs(e.Fragment,{children:[e.jsx(G,{children:n&&s&&e.jsxs(e.Fragment,{children:[e.jsx(N.div,{initial:{opacity:0}
1,animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:`fixed inset-0 z-[100] ${x?"bg-black/70":"bg-black/80"}`,onClick:t}),e.jsxs(N.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},transition:{duration:.3,ease:[.16,1,.3,1]},className:"fixed inset-x-4 top-4 bottom-5 md:inset-x-16 lg:inset-x-32 [@media(max-width:639px),(max-height:520px)]:!inset-x-2 [@media(max-width:639px),(max-height:520px)]:!top-2 [@media(max-width:639px),(max-height:520px)]:!bottom-2 z-[101] flex flex-col",children:[e.jsxs("div",{className:"flex [@media(max-width:639px),(max-height:520px)]:hidden items-center justify-between mb-4",children:[e.jsxs("h2",{className:"text-lg text-white",children:[s.name,e.jsx("br",{className:"md:hidden"}),e.jsxs("span",{className:"text-sm text-white/60 md:ml-2",children:["by @",s.user]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(P,{to:T(s),target:"_blank",className:"hidden md:flex h-9 px-3 text-sm transition-colors rounded-md items-center justify-center cursor-pointer bg-white/6 hover:bg-white/10 text-white/70 hover:text-white",children:a("gamePreview.openFullPage")}),e.jsx("button",{onClick:t,className:"w-9 h-9 bg-white/6 hover:bg-white/10 text-white/70 hover:text-white flex items-center justify-center transition-colors rounded-md cursor-pointer","aria-label":a("gamePreview.close"),children:e.jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]})]}),e.jsxs("div",{ref:o,className:`flex-1 relative rounded-lg overflow-hidden ${x?" shadow-xl":""}`,children:[e.jsx("button",{onClick:t,"aria-label":a("gamePreview.close"),title:a("gamePreview.close"),className:"hidden [@media(max-width:639px),(max-height:520px)]:flex absolute top-3 right-3 h-8 w-8 items-center justify-center bg-black/60 hover:bg-black/75 rounded-md transition-colors z-40 cursor-pointer",children:e.jsx(v,{icon:["far","xmark"],className:"text-xs text-white"})}),e.jsxs("div",{className:"relative bg-black",style:{height:"calc(100% - 0px)"},children:[m&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-background z-10",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"spinner spinner-lg mx-auto mb-4"}),e.jsx("p",{className:"text-muted-foreground",children:a("gamePreview.loading",{name:s.name})})]})}),y?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-background",children:e.jsxs("div",{className:"text-center",children:[e.jsx("span",{className:"text-5xl block mb-4",children:"⚠️"}),e.jsx("h3",{className:"text-lg text-foreground mb-2",children:a("gamePreview.failedToLoad")}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:a("gamePreview.couldntLoad")}),e.jsx("button",{onClick:()=>{h(!1),g(!0),j(l=>l+1)},className:"px-4 py-2 bg-accent text-accent-foreground rounded-lg text-sm hover:bg-accent/90 transition-colors",children:a("gamePreview.tryAgain")})]})}):f?e.jsxs(e.Fragment,{children:[e.jsx(X,{ref:w,frameRef:p,gameId:s?.id??null,playGameId:s?.public_id??null,onTopUpRequest:I,src:f,className:"absolute inset-0 w-full h-full border-none",onLoad:B,onError:O,title:s.name,sandbox:"allow-scripts allow-same-origin allow-popups allow-forms allow-pointer-lock",allow:"fullscreen"},`${f}-${b}`),e.jsx("button",{onClick:W,"aria-label":a(c?"gamePreview.unmuteGame":"gamePreview.muteGame"),"aria-pressed":c,title:a(c?"gamePreview.unmuteGame":"gamePreview.muteGame"),className:"absolute top-3 right-13 h-8 w-8 flex items-center justify-center bg-black/60 hover:bg-black/75 rounded-md transition-colors z-40 cursor-pointer",children:e.jsxs("span",{className:"relative flex items-center justify-center text-white",children:[e.jsx(v,{icon:["far","volume"],className:"text-xs"}),c&&e.jsx("span",{"aria-hidden":"true",className:"absolute h-0.5 w-3.5 rotate-45 rounded-full bg-current"})]})}),e.jsx("button",{onClick:$,className:"absolute top-3 right-3 h-8 w-8 flex [@media(max-width:639px),(max-height:520px)]:hidden items-center justify-center bg-black/60 hover:bg-black/75 rounded-md transition-colors z-40 cursor-pointer",title:a(E?"gamePreview.exitFullscreen":"gamePreview.fullscreen"),children:e.jsx(v,{icon:["far",E?"minimize":"maximize"],className:"text-xs text-white"})}),e.jsx(te,{orientation:s.orientation})]}):e.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-background",children:e.jsxs("div",{className:"text-center",children:[e.jsx("span",{className:"text-5xl block mb-4",children:"🔨"}),e.jsx("h3",{className:"text-lg text-foreground mb-2",children:a("gamePreview.notReady")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:a("gamePreview.stillBuilding")})]})})]})]}),e.jsx("div",{className:"flex [@media(max-width:639px),(max-height:520px)]:hidden items-center justify-end mt-4",children:u?e.jsx(P,{to:"/dashboard",onClick:t,className:"h-9 px-3 bg-foreground text-background rounded-md text-sm hover:opacity-80 transition-all flex items-center justify-center cursor-pointer",children:a("gamePreview.openTesana")}):e.jsx("button",{onClick:()=>{t(),d?.()},className:"h-9 px-3 bg-foreground text-background rounded-md text-sm hover:opacity-80 transition-all flex items-center justify-center cursor-pointer",children:a("gamePreview.createYourOwn")})})]})]})}),e.jsx(Z,{isOpen:U,onClose:q,returnUrl:typeof window>"u"?"":window.location.href})]})}const oe=[{id:595,image:"/game-screenshots/game-7.png",author:"@noahcraft",time:"2d ago"},{id:378,image:"/game-screenshots/doom-screenshot.png",author:"@pixelrider",time:"5d ago"},{id:272,image:"/game-screenshots/game-9.png",author:"@maradev",time:"1w ago"},{id:503,image:"/game-screenshots/game-6.png",author:"@lunaforge",time:"3d ago"},{id:407,image:"/game-screenshots/game-8.png",author:"@kaibuilds",time:"6d ago"},{id:287,image:"/game-screenshots/game-10.png",author:"@stellaworks",time:"1w ago"}];function le({title:n,description:t,imagePosition:d,image:s,isLight:a}){const x=e.jsxs("div",{className:"flex flex-col justify-start pt-2 pb-6 p-4 md:pb-10 md:pt-10 md:p-10",children:[e.jsx("h3",{className:"text-lg-sm md:text-lg text-foreground",children:n}),e.jsx("p",{className:"mt-3 text-sm md:text-base text-muted-foreground",children:t})]}),u=e.jsx("div",{className:"rounded-md overflow-hidden aspect-[16/10]",children:e.jsx(R,{src:s,alt:"",className:"w-full h-full object-cover scale-[1.4]"})});return e.jsx("div",{className:`rounded-md overflow-hidden grid grid-cols-1 md:grid-cols-2 gap-0 ${a?"bg-surface":"bg-card"}`,children:d==="left"?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"p-4 md:p-8",children:u}),x]}):e.jsxs(e.Fragment,{children:[x,e.jsx("div",{className:"p-4 md:p-8 order-first md:order-last",children:u})]})})}function Xe(){const{isLight:n}=_(),{t}=L(["marketing","nav"]),[d,s]=r.useState(!1),[a,x]=r.useState("signup"),[u,m]=r.useState(!1),[g,y]=r.useState(null),h=i=>{x(i||"signup"),s(!0)},b=async i=>{try{const o=await A.getPublic(i);y({id:o.id,public_id:o.public_id,name:o.name,user:o.user,engine_game_name:o.engine_game_name,engine_version:o.engine_version,download_url:o.download_url,platform_tier:o.platform_tier}),m(!0)}catch{window.open(`/play/${i}`,"_blank")}},j=[{heading:t("gameStudios.features.0.heading"),subtext:t("gameStudios.features.0.subtext"),cards:[{title:t("gameStudios.features.0.cards.0.title"),description:t("gameStudios.features.0.cards.0.description"),imagePosition:"right",image:"/game-screenshots/game-4.png"}]},{heading:t("gameStudios.features.1.heading"),subtext:t("gameStudios.features.1.subtext"),cards:[{title:t("gameStudios.features.1.cards.0.title"),description:t("gameStudios.features.1.cards.0.description"),imagePosition:"left",image:"/game-screenshots/game-7.png"}]},{heading:t("gameStudios.features.2.heading"),subtext:t("gameStudios.features.2.subtext"),cards:[{title:t("gameStudios.features.2.cards.0.title"),description:t("gameStudios.features.2.cards.0.description"),imagePosition:"right",image:"/research-page/realt
1ime-iteration.png"}]},{heading:t("gameStudios.features.3.heading"),subtext:"",cards:[{title:t("gameStudios.features.3.cards.0.title"),description:t("gameStudios.features.3.cards.0.description"),imagePosition:"left",image:"/game-screenshots-community/531_game.png"}]}],c=[{name:t("gameStudios.testimonials.0.name"),quote:t("gameStudios.testimonials.0.quote"),cta:t("gameStudios.testimonials.0.cta")},{name:t("gameStudios.testimonials.1.name"),quote:t("gameStudios.testimonials.1.quote"),cta:t("gameStudios.testimonials.1.cta")},{name:t("gameStudios.testimonials.2.name"),quote:t("gameStudios.testimonials.2.quote"),cta:t("gameStudios.testimonials.2.cta")}];return e.jsxs("div",{className:"min-h-screen bg-background text-foreground",children:[e.jsxs(V,{children:[e.jsx("title",{children:t("gameStudios.meta.title")}),e.jsx("meta",{name:"description",content:t("gameStudios.meta.description")})]}),e.jsx(Y,{onAuthClick:h,skipScrolled:!0}),e.jsx(J,{isOpen:d,onClose:()=>s(!1),initialMode:a}),e.jsxs("section",{className:"relative min-h-screen flex flex-col items-center justify-center overflow-hidden bg-background pt-20",children:[e.jsx("div",{className:"absolute inset-0 pointer-events-none",style:{opacity:n?.7:.45,backgroundImage:n?"radial-gradient(circle, #161616 1.5px, transparent 1.5px)":"radial-gradient(circle, #f2f2f2 1.5px, transparent 1.5px)",backgroundSize:"48px 48px"}}),e.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-[216px] pointer-events-none",style:{background:n?"linear-gradient(180deg, rgba(255,255,255,0) 0%, rgb(255,255,255) 92%)":"linear-gradient(180deg, rgba(22,22,22,0) 0%, rgb(22,22,22) 92%)"}}),e.jsx("div",{"aria-hidden":!0,className:"hero-text-glow absolute top-[-23px] left-1/2 -translate-x-1/2 w-[min(1035px,100vw)] h-[710px] pointer-events-none"}),e.jsxs("div",{className:"relative z-10 text-center px-4 max-w-[900px]",children:[e.jsx("p",{className:"text-tag-sm md:text-tag uppercase mb-6 text-foreground",children:t("gameStudios.hero.tag")}),e.jsxs("h1",{className:"text-h1-sm md:text-h1 mb-8 text-foreground",children:[t("gameStudios.hero.titleLine1"),e.jsx("br",{}),t("gameStudios.hero.titleLine2")]}),e.jsx("p",{className:"text-base md:text-lg text-muted-foreground max-w-[744px] mx-auto mb-10",children:t("gameStudios.hero.subtitle")}),e.jsx("button",{onClick:()=>h("signup"),className:"inline-flex items-center justify-center h-9 px-3 rounded-md text-sm bg-foreground text-background hover:opacity-80 transition-all cursor-pointer",children:t("signUp",{ns:"nav"})})]})]}),e.jsx("section",{className:"py-8 md:py-16 px-4 md:px-6",children:e.jsxs("div",{className:"max-w-[1200px] mx-auto",children:[e.jsxs("div",{className:"flex items-end justify-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-h3-sm md:text-h3 text-foreground",children:t("gameStudios.exploreGames.title")}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:t("gameStudios.exploreGames.subtitle")})]}),e.jsx("a",{href:"/play",className:"text-sm text-muted-foreground hover:text-foreground transition-colors whitespace-nowrap",children:t("gameStudios.exploreGames.viewAll")})]}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2 md:gap-6",children:oe.map(i=>e.jsxs("div",{className:"group cursor-pointer",onClick:()=>b(i.id),children:[e.jsxs("div",{className:"relative rounded-md overflow-hidden aspect-[4/3]",children:[e.jsx(R,{src:i.image,alt:"Game world",className:"w-full h-full object-cover scale-[1.4] transition-transform duration-500 group-hover:scale-[1.45]"}),e.jsx("div",{className:"absolute inset-0 bg-black/0 group-hover:bg-black/30 transition-colors duration-300 flex items-center justify-center",children:e.jsxs("div",{className:"opacity-0 group-hover:opacity-100 hover:opacity-80 transition-opacity duration-200 flex items-center gap-1.5 bg-white text-black px-3 h-9 rounded-md shadow-lg",children:[e.jsx("svg",{className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20",children:e.jsx("path",{d:"M6.3 2.841A1.5 1.5 0 004 4.11V15.89a1.5 1.5 0 002.3 1.269l9.344-5.89a1.5 1.5 0 000-2.538L6.3 2.84z"})}),e.jsx("span",{className:"text-sm",children:t("gameStudios.exploreGames.play")})]})})]}),e.jsxs("div",{className:"flex items-center gap-2 mt-3",children:[e.jsx("div",{className:"w-5 h-5 rounded-full bg-muted"}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[i.author," · ",i.time]})]})]},i.id))})]})}),j.map((i,o)=>e.jsx("section",{className:"py-8 md:py-16 px-4 md:px-6",children:e.jsxs("div",{className:"max-w-[1200px] mx-auto",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-h3-sm md:text-h3 text-foreground",children:i.heading}),i.subtext&&e.jsx("p",{className:"mt-3 text-sm md:text-base text-muted-foreground max-w-[600px]",children:i.subtext})]}),e.jsx("div",{className:"mt-8 md:mt-12 flex flex-col gap-4 md:gap-12",children:i.cards.map(p=>e.jsx(le,{...p,isLight:n},p.title+o))})]})},o)),e.jsx("section",{className:"py-8 md:py-16 px-4 md:px-6",children:e.jsxs("div",{className:"max-w-[1200px] mx-auto",children:[e.jsx("h2",{className:"text-h3-sm md:text-h3 text-foreground mb-8 md:mb-12",children:t("gameStudios.testimonials.title")}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 md:gap-8",children:c.map(i=>e.jsxs("div",{className:`rounded-md p-6 md:p-8 flex flex-col justify-between ${n?"bg-surface":"bg-card"}`,children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg-sm md:text-lg text-foreground",children:i.name}),e.jsx("p",{className:"mt-4 text-sm text-muted-foreground",children:i.quote})]}),e.jsx("div",{className:"mt-8",children:e.jsx("span",{className:"text-sm text-foreground",children:i.cta})})]},i.name))})]})}),e.jsx(Q,{handleAuthClick:h}),e.jsx(re,{isOpen:u,onClose:()=>m(!1),game:g,onSignup:()=>h("signup")})]})}export{Xe as default};

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.