PageSourceSearch

https://boardspace.ai/assets/index-oNwIZiHT.js

js boardspace.ai collected 2026-10-05 11:51:05 UTC 1,856,881 bytes, 604 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/FloorplanEditor-BSRd8yaP.js","assets/ui-DKb32DiD.js","assets/vendor-DCFBENKy.js","assets/r3f-BN6X73lm.js","assets/three-Dv4K_qkO.js","assets/konva-L1CHpTsF.js","assets/blenderImport-BZvr9lWN.js","assets/useSubscriptionAccess-BNHCMZSj.js","assets/pencil-DUmInc3t.js","assets/useMyFloorTextures-Bbofh8VT.js","assets/minimize-2-COuWOHHN.js","assets/useSystemFurniture-DsShbL-i.js","assets/meshy3dClient-B24NeEwy.js","assets/sofa-D3dBjIFo.js","assets/bot-BcJDFjeG.js","assets/move-D7VyDvJr.js","assets/rotate-ccw-hUuExNCy.js","assets/minus-Bs132Pro.js","assets/arrow-down-DGHAAABk.js","assets/save-elU05o7Y.js","assets/maximize-2-DZ41IwX_.js","assets/book-open-B9QzYANu.js","assets/door-open-DD1dOZq5.js","assets/bath-B7OoUnyQ.js","assets/house-DHu8AHIy.js","assets/useTokenGuard-0fj-tWV0.js","assets/generationFailure-C4el59cC.js","assets/image-jYsTE5eT.js","assets/gem-DUIt9yJk.js","assets/upload-C8djh6xk.js","assets/package-Cs2TzaVy.js","assets/download-BpYWTfzd.js","assets/paintbrush-2vVP907W.js","assets/contextMenuViewport-8_ElpN4s.js","assets/triangle-alert-DTJwGi0l.js","assets/boxes-DRoLSX17.js","assets/undo-2-BxAkZh0W.js","assets/square-CcUF8c_D.js","assets/shield-check-DECexS1w.js","assets/collapsible-BgSvoJyU.js","assets/panel-right-open-C3w0KbMN.js","assets/lightbulb-XyckiZoQ.js","assets/image-plus-BSlRWsdz.js","assets/hand-B8XweHat.js","assets/motion-BrksToHf.js","assets/FloorplanEditor-DSx1keGi.css","assets/Kling3Workspace-CKmunxrP.js","assets/VideoReadySheet-B3AdYwGK.js","assets/circle-play-BuMUN5y3.js","assets/InsufficientTokensModal-Ds_BJk5Y.js","assets/context-menu-BZvLipDk.js","assets/ratio-Bg9l6Mkr.js","assets/message-square-C98XYPav.js","assets/music-Dr8OgtBe.js","assets/CanvasPage-BoYY9twN.js","assets/shapes-CfoJt0Ot.js","assets/presentation-wTJ4v_36.js","assets/workflow-DwN2oAsC.js","assets/flame-BqaMAswp.js","assets/useTrackEvent-CSpUpjJh.js","assets/wrench-DOVHc9PH.js","assets/circle-dot-DU2tgv5S.js","assets/sliders-horizontal-CkbKZQsF.js","assets/useVoiceRecorder-oJe5Lo56.js","assets/use-user-materials-D7rlCsZj.js","assets/textarea-C797MVEe.js","assets/target-MBmAgTL1.js","assets/megaphone-HqH7jaBQ.js","assets/monitor-play-DDuBVBoe.js","assets/file-text-Coa48xVg.js","assets/circle-x-TpjG2wwu.js","assets/type-DAj4j20b.js","assets/map-D1yW95Hk.js","assets/share-2-D4bA6ZbZ.js","assets/arrow-up-right-BG_yeSF_.js","assets/CanvasPage-BZV40eAE.css","assets/InspirationBoards-CdPzKB5w.js","assets/boardspace-logo-light-D-ssk9si.js","assets/PinterestCallback-CSBqawZg.js","assets/TermsOfService-BNzutHmn.js","assets/Trans-BC68iAA5.js","assets/PrivacyPolicy-28AyA6A6.js","assets/BuyerTerms-Ba7P1JlF.js","assets/CreatorAgreement-BU9POpke.js","assets/Accessibility-CWhq8M2h.js","assets/OurStory-CSSqYOOF.js","assets/rocket-CQnHk7Kc.js","assets/PaymentSuccess-DsfVofuH.js","assets/PaymentCancelled-sNWUAKdA.js","assets/HelpCenter-KFmdA0RM.js","assets/SupportCenter-gm9ReBoO.js","assets/CreateTicket-C-_JldYS.js","assets/FAQ-BChbfZKK.js","assets/Careers-C_6sl0-E.js","assets/BlogListing-DS-X8_SC.js","assets/blogArticles-DnaR4aU8.js","assets/BreadcrumbSchema-BGMIAKqo.js","assets/calendar-BZrE-J_b.js","assets/BlogArticle-CNoYQD5k.js","assets/ArticleSchema-GD6Bjqn3.js","assets/BlogListingHe-CIn7xnD0.js","assets/blogArticlesHe-D8ClTFQW.js","assets/BlogArticleHe-Cqw5mxYU.js","assets/AuthorPage-DDZbqjk7.js","assets/ComparisonPage-BbzJHWAL.js","assets/SEOLandingPage-Dht6iCSn.js","assets/HowToSchema-BJt7kIX2.js","assets/DroneLandingPage-wZtqdYMF.js","assets/compass-B-BeZPah.js","assets/AcademyVideos-DwZZiJ2l.js","assets/Roadmap-BH9ZqMIw.js","assets/Documentation-D_N2l_92.js","assets/PromptGuide-DiE_zhoV.js","assets/usePromptGuideHebrewRedirect-CSP_XWwu.js","assets/square-split-horizontal-D8AHKfyZ.js","assets/snowflake-CFXWNwDi.js","assets/focus-CQmRlBkA.js","assets/PromptGuidesHub-C6ZF-gX-.js","assets/VideoPromptGuide-VAnP5iuh.js","assets/PromptGuideScaffold-BIJy6GrP.js","assets/GPTImagePromptGuide-Bxw1L611.js","assets/building-x6d4pgho.js","assets/VeoPromptGuide-SS3V-bRm.js","assets/SoraPromptGuide-Fv0vwt3Z.js","assets/wind-DtKDKKnp.js","assets/GrokPromptGuide-3okkzHs9.js","assets/GPTImage2PromptGuide-M6OIBWNi.js","assets/SeedancePromptGuide-Epwc6Tyz.js","assets/GeminiOmniPromptGuide-BoW1-N_E.js","assets/Kling3PromptGuide-DG0m_87f.js","assets/VideoEditorGuide
1-D03MNYLD.js","assets/analytics-3IAohMj1.js","assets/BoardstylerLive-BL_jHTbo.js","assets/clock-3-Cnk_EQsg.js","assets/FloorPlanTo3D-CBnbzvd2.js","assets/file-image-BmbwBsqv.js","assets/TrimbleCallback-B_sozuN5.js","assets/trimbleAuth-C9WB8K_k.js","assets/AdminLibrary-Bbn8Gyr1.js","assets/Partners-DubytQVp.js","assets/Shops-1e6Zj2wj.js","assets/Schools-r_5IbY9G.js","assets/Unsubscribe-Cxs_dbfD.js","assets/StudioVideo2-CbAL6O3T.js","assets/Sketch3DLab-CK_B2geF.js","assets/tag-BVfBxF19.js","assets/CreatorsMarketplace-jTFa_3Sv.js","assets/creatorCategories-WfjQuV2W.js","assets/LazyMediaThumb-yuK510pg.js","assets/CreatorProfile-C1UVObbd.js","assets/skeleton-CXLlnrI6.js","assets/badge-check-D-2HILFa.js","assets/shopping-cart-dtxL9Tv8.js","assets/OrderPage-BhTf3zYf.js","assets/wallet-BnGgg5jY.js","assets/mic-CoWWajYw.js","assets/OrderSuccess-D0hTAUDQ.js","assets/CreatorMessages-DD1zRsQd.js","assets/CreatorRegister-BD4ng9NX.js","assets/CreatorDashboard-Dd04fN6Z.js","assets/SamplePage-WSzDSvF9.js","assets/Unsubscribed-BIZTtl-I.js","assets/WebinarRegistration-DjOBoNxd.js","assets/WebinarLive-CtgnlJHs.js","assets/CreatorsAcademy-D2kp9Bsy.js","assets/Exelerator-CBu6Jq81.js","assets/Billing-DF1QcMYg.js","assets/WorkflowsLandingPage-DdiRdAHq.js","assets/PremiumLanding-DyWYR2FQ.js","assets/AcceptInvite-C5E17vpN.js"])))=>i.map(i=>d[i]);
2var gx=Object.defineProperty;var xm=t=>{throw TypeError(t)};var fx=(t,e,a)=>e in t?gx(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var ft=(t,e,a)=>fx(t,typeof e!="symbol"?e+"":e,a),Yl=(t,e,a)=>e.has(t)||xm("Cannot "+a);var T=(t,e,a)=>(Yl(t,e,"read from private field"),a?a.call(t):e.get(t)),me=(t,e,a)=>e.has(t)?xm("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,a),X=(t,e,a,i)=>(Yl(t,e,"write to private field"),i?i.call(t,a):e.set(t,a),a),Te=(t,e,a)=>(Yl(t,e,"access private method"),a);var Xn=(t,e,a,i)=>({set _(r){X(t,e,r,a)},get _(){return T(t,e,i)}});import{j as o,V as Bg,R as Fg,A as $g,C as Vg,T as Ug,D as qg,P as bx,c as so,a as In,b as nu,d as hr,e as su,f as lu,g as Gg,h as vx,u as mt,i as Dn,k as tr,l as cu,m as gl,n as Xe,o as Le,p as du,_ as de,t as yx,q as fl,S as xx,r as Wg,s as Hg,v as wx,w as Kg,I as Yg,x as Qg,y as Jg,z as Xg,L as Zg,B as ef,E as kx,F as _x,G as tf,H as _a,O as Rn,J as uu,K as lo,M as bl,N as gr,Q as fr,U as mu,W as af,X as of,Y as rf,Z as nf,$ as sf,a0 as lf,a1 as cf,a2 as Sx,a3 as df,a4 as Cx,a5 as Tx,a6 as jx}from"./ui-DKb32DiD.js";import{_ as H,s as uf,c as Nx,p as Px,a as Ax}from"./r3f-BN6X73lm.js";import{g as pu,r as m,R as U,v as Ex,b as Ix,c as mf,a as Fi}from"./vendor-DCFBENKy.js";import{m as pe,A as Ts}from"./motion-BrksToHf.js";import"./three-Dv4K_qkO.js";import"./konva-L1CHpTsF.js";function Dx(t,e){for(var a=0;a<e.length;a++){const i=e[a];if(typeof i!="string"&&!Array.isArray(i)){for(const r in i)if(r!=="default"&&!(r in t)){const n=Object.getOwnPropertyDescriptor(i,r);n&&Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>i[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const n of r)if(n.type==="childList")for(const s of n.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&i(s)}).observe(document,{childList:!0,subtree:!0});function a(r){const n={};return r.integrity&&(n.integrity=r.integrity),r.referrerPolicy&&(n.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?n.credentials="include":r.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function i(r){if(r.ep)return;r.ep=!0;const n=a(r);fetch(r.href,n)}})();var Rx=typeof Element<"u",Lx=typeof Map=="function",Ox=typeof Set=="function",Mx=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function js(t,e){if(t===e)return!0;if(t&&e&&typeof t=="object"&&typeof e=="object"){if(t.constructor!==e.constructor)return!1;var a,i,r;if(Array.isArray(t)){if(a=t.length,a!=e.length)return!1;for(i=a;i--!==0;)if(!js(t[i],e[i]))return!1;return!0}var n;if(Lx&&t instanceof Map&&e instanceof Map){if(t.size!==e.size)return!1;for(n=t.entries();!(i=n.next()).done;)if(!e.has(i.value[0]))return!1;for(n=t.entries();!(i=n.next()).done;)if(!js(i.value[1],e.get(i.value[0])))return!1;return!0}if(Ox&&t instanceof Set&&e instanceof Set){if(t.size!==e.size)return!1;for(n=t.entries();!(i=n.next()).done;)if(!e.has(i.value[0]))return!1;return!0}if(Mx&&ArrayBuffer.isView(t)&&ArrayBuffer.isView(e)){if(a=t.length,a!=e.length)return!1;for(i=a;i--!==0;)if(t[i]!==e[i])return!1;return!0}if(t.constructor===RegExp)return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf&&typeof t.valueOf=="function"&&typeof e.valueOf=="function")return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString&&typeof t.toString=="function"&&typeof e.toString=="function")return t.toString()===e.toString();if(r=Object.keys(t),a=r.length,a!==Object.keys(e).length)return!1;for(i=a;i--!==0;)if(!Object.prototype.hasOwnProperty.call(e,r[i]))return!1;if(Rx&&t instanceof Element)return!1;for(i=a;i--!==0;)if(!((r[i]==="_owner"||r[i]==="__v"||r[i]==="__o")&&t.$$typeof)&&!js(t[r[i]],e[r[i]]))return!1;return!0}return t!==t&&e!==e}var zx=function(e,a){try{return js(e,a)}catch(i){if((i.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw i}};const Bx=pu(zx);var Fx=function(t,e,a,i,r,n,s,l){if(!t){var c;if(e===void 0)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var d=[a,i,r,n,s,l],u=0;c=new Error(e.replace(/%s/g,function(){return d[u++]})),c.name="Invariant Violation"}throw c.framesToPop=1,c}},$x=Fx;const wm=pu($x);var Vx=function(e,a,i,r){var n=i?i.call(r,e,a):void 0;if(n!==void 0)return!!n;
2if(e===a)return!0;if(typeof e!="object"||!e||typeof a!="object"||!a)return!1;var s=Object.keys(e),l=Object.keys(a);if(s.length!==l.length)return!1;for(var c=Object.prototype.hasOwnProperty.bind(a),d=0;d<s.length;d++){var u=s[d];if(!c(u))return!1;var p=e[u],f=a[u];if(n=i?i.call(r,p,f,u):void 0,n===!1||n===void 0&&p!==f)return!1}return!0};const Ux=pu(Vx);var pf=(t=>(t.BASE="base",t.BODY="body",t.HEAD="head",t.HTML="html",t.LINK="link",t.META="meta",t.NOSCRIPT="noscript",t.SCRIPT="script",t.STYLE="style",t.TITLE="title",t.FRAGMENT="Symbol(react.fragment)",t))(pf||{}),Ql={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"]}},km=Object.values(pf),hu={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},qx=Object.entries(hu).reduce((t,[e,a])=>(t[a]=e,t),{}),ka="data-rh",Eo={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},Io=(t,e)=>{for(let a=t.length-1;a>=0;a-=1){const i=t[a];if(Object.prototype.hasOwnProperty.call(i,e))return i[e]}return null},Gx=t=>{let e=Io(t,"title");const a=Io(t,Eo.TITLE_TEMPLATE);if(Array.isArray(e)&&(e=e.join("")),a&&e)return a.replace(/%s/g,()=>e);const i=Io(t,Eo.DEFAULT_TITLE);return e||i||void 0},Wx=t=>Io(t,Eo.ON_CHANGE_CLIENT_STATE)||(()=>{}),Jl=(t,e)=>e.filter(a=>typeof a[t]<"u").map(a=>a[t]).reduce((a,i)=>({...a,...i}),{}),Hx=(t,e)=>e.filter(a=>typeof a.base<"u").map(a=>a.base).reverse().reduce((a,i)=>{if(!a.length){const r=Object.keys(i);for(let n=0;n<r.length;n+=1){const l=r[n].toLowerCase();if(t.indexOf(l)!==-1&&i[l])return a.concat(i)}}return a},[]),Kx=t=>console&&typeof console.warn=="function"&&console.warn(t),Pr=(t,e,a)=>{const i={};return a.filter(r=>Array.isArray(r[t])?!0:(typeof r[t]<"u"&&Kx(`Helmet: ${t} should be of type "Array". Instead found type "${typeof r[t]}"`),!1)).map(r=>r[t]).reverse().reduce((r,n)=>{const s={};n.filter(c=>{let d;const u=Object.keys(c);for(let f=0;f<u.length;f+=1){const h=u[f],v=h.toLowerCase();e.indexOf(v)!==-1&&!(d==="rel"&&c[d].toLowerCase()==="canonical")&&!(v==="rel"&&c[v].toLowerCase()==="stylesheet")&&(d=v),e.indexOf(h)!==-1&&(h==="innerHTML"||h==="cssText"||h==="itemprop")&&(d=h)}if(!d||!c[d])return!1;const p=c[d].toLowerCase();return i[d]||(i[d]={}),s[d]||(s[d]={}),i[d][p]?!1:(s[d][p]=!0,!0)}).reverse().forEach(c=>r.push(c));const l=Object.keys(s);for(let c=0;c<l.length;c+=1){const d=l[c],u={...i[d],...s[d]};i[d]=u}return r},[]).reverse()},Yx=(t,e)=>{if(Array.isArray(t)&&t.length){for(let a=0;a<t.length;a+=1)if(t[a][e])return!0}return!1},Qx=t=>({baseTag:Hx(["href"],t),bodyAttributes:Jl("bodyAttributes",t),defer:Io(t,Eo.DEFER),encode:Io(t,Eo.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:Jl("htmlAttributes",t),linkTags:Pr("link",["rel","href"],t),metaTags:Pr("meta",["name","charset","http-equiv","property","itemprop"],t),noscriptTags:Pr("noscript",["innerHTML"],t),onChangeClientState:Wx(t),scriptTags:Pr("script",["src","innerHTML"],t),styleTags:Pr("style",["cssText"],t),title:Gx(t),titleAttributes:Jl("titleAttributes",t),prioritizeSeoTags:Yx(t,Eo.PRIORITIZE_SEO_TAGS)}),hf=t=>Array.isArray(t)?t.join(""):t,Jx=(t,e)=>{const a=Object.keys(t);for(let i=0;i<a.length;i+=1)if(e[a[i]]&&e[a[i]].includes(t[a[i]]))return!0;return!1},Xl=(t,e)=>Array.isArray(t)?t.reduce((a,i)=>(Jx(i,e)?a.priority.push(i):a.default.push(i),a),{priority:[],default:[]}):{default:t,priority:[]},_m=(t,e)=>({...t,[e]:void 0}),Xx=["noscript","script","style"],$c=(t,e=!0)=>e===!1?String(t):String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;"),gf=t=>Object.keys(t).reduce((e,a)=>{const i=typeof t[a]<"u"?`${a}="${t[a]}"`:`${a}`;return e?`${e} ${i}`:i},""),Zx=(t,e,a,i)=>{const r=gf(a),n=hf(e);return r?`<${t} ${ka}="true" ${r}>${$c(n,i)}</${t}>`:`<${t} ${ka}="true">${$c(n,i)}</${t}>`},ew=(t,e,a=!0)=>e.reduce((i,r)=>{const n=r,s=Object.keys(n).filter(d=>!(d==="innerHTML"||d==="cssText")).reduce((d,u)=>{const p=typeof n[u]>"u"?u:`${u}="${$c(n[u],a)}"`;return d?`${d} ${p}`:p},""),l=n.innerHTML||n.cssText||"",c=Xx.indexOf(t)===-1;return`${i}<${t} ${ka}="true" ${s}${c?"/>":`>${l}</${t}>`}`},""),ff=(t,e={})=>Object.keys(t).reduce((a,i)=>{const r=hu[i];return a[r||i]=t[i],a},e),tw=(t,e,a)=>{const i={key:e,[ka]:!0},r=ff(a,i);return[U.createElement("title",r,e)]},Ns=(t,e)=>e.map((a,i)=>{const r={key:i,[ka]:!0};
2return Object.keys(a).forEach(n=>{const l=hu[n]||n;if(l==="innerHTML"||l==="cssText"){const c=a.innerHTML||a.cssText;r.dangerouslySetInnerHTML={__html:c}}else r[l]=a[n]}),U.createElement(t,r)}),na=(t,e,a=!0)=>{switch(t){case"title":return{toComponent:()=>tw(t,e.title,e.titleAttributes),toString:()=>Zx(t,e.title,e.titleAttributes,a)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>ff(e),toString:()=>gf(e)};default:return{toComponent:()=>Ns(t,e),toString:()=>ew(t,e,a)}}},aw=({metaTags:t,linkTags:e,scriptTags:a,encode:i})=>{const r=Xl(t,Ql.meta),n=Xl(e,Ql.link),s=Xl(a,Ql.script);return{priorityMethods:{toComponent:()=>[...Ns("meta",r.priority),...Ns("link",n.priority),...Ns("script",s.priority)],toString:()=>`${na("meta",r.priority,i)} ${na("link",n.priority,i)} ${na("script",s.priority,i)}`},metaTags:r.default,linkTags:n.default,scriptTags:s.default}},iw=t=>{const{baseTag:e,bodyAttributes:a,encode:i=!0,htmlAttributes:r,noscriptTags:n,styleTags:s,title:l="",titleAttributes:c,prioritizeSeoTags:d}=t;let{linkTags:u,metaTags:p,scriptTags:f}=t,h={toComponent:()=>{},toString:()=>""};return d&&({priorityMethods:h,linkTags:u,metaTags:p,scriptTags:f}=aw(t)),{priority:h,base:na("base",e,i),bodyAttributes:na("bodyAttributes",a,i),htmlAttributes:na("htmlAttributes",r,i),link:na("link",u,i),meta:na("meta",p,i),noscript:na("noscript",n,i),script:na("script",f,i),style:na("style",s,i),title:na("title",{title:l,titleAttributes:c},i)}},Vc=iw,Zn=[],bf=!!(typeof window<"u"&&window.document&&window.document.createElement),Uc=class{constructor(t,e){ft(this,"instances",[]);ft(this,"canUseDOM",bf);ft(this,"context");ft(this,"value",{setHelmet:t=>{this.context.helmet=t},helmetInstances:{get:()=>this.canUseDOM?Zn:this.instances,add:t=>{(this.canUseDOM?Zn:this.instances).push(t)},remove:t=>{const e=(this.canUseDOM?Zn:this.instances).indexOf(t);(this.canUseDOM?Zn:this.instances).splice(e,1)}}});this.context=t,this.canUseDOM=e||!1,e||(t.helmet=Vc({baseTag:[],bodyAttributes:{},htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},ow={},vf=U.createContext(ow),qi,yf=(qi=class extends m.Component{constructor(a){super(a);ft(this,"helmetData");this.helmetData=new Uc(this.props.context||{},qi.canUseDOM)}render(){return U.createElement(vf.Provider,{value:this.helmetData.value},this.props.children)}},ft(qi,"canUseDOM",bf),qi),ho=(t,e)=>{const a=document.head||document.querySelector("head"),i=a.querySelectorAll(`${t}[${ka}]`),r=[].slice.call(i),n=[];let s;return e&&e.length&&e.forEach(l=>{const c=document.createElement(t);for(const d in l)if(Object.prototype.hasOwnProperty.call(l,d))if(d==="innerHTML")c.innerHTML=l.innerHTML;else if(d==="cssText")c.styleSheet?c.styleSheet.cssText=l.cssText:c.appendChild(document.createTextNode(l.cssText));else{const u=d,p=typeof l[u]>"u"?"":l[u];c.setAttribute(d,p)}c.setAttribute(ka,"true"),r.some((d,u)=>(s=u,c.isEqualNode(d)))?r.splice(s,1):n.push(c)}),r.forEach(l=>{var c;return(c=l.parentNode)==null?void 0:c.removeChild(l)}),n.forEach(l=>a.appendChild(l)),{oldTags:r,newTags:n}},qc=(t,e)=>{const a=document.getElementsByTagName(t)[0];if(!a)return;const i=a.getAttribute(ka),r=i?i.split(","):[],n=[...r],s=Object.keys(e);for(const l of s){const c=e[l]||"";a.getAttribute(l)!==c&&a.setAttribute(l,c),r.indexOf(l)===-1&&r.push(l);const d=n.indexOf(l);d!==-1&&n.splice(d,1)}for(let l=n.length-1;l>=0;l-=1)a.removeAttribute(n[l]);r.length===n.length?a.removeAttribute(ka):a.getAttribute(ka)!==s.join(",")&&a.setAttribute(ka,s.join(","))},rw=(t,e)=>{typeof t<"u"&&document.title!==t&&(document.title=hf(t)),qc("title",e)},Sm=(t,e)=>{const{baseTag:a,bodyAttributes:i,htmlAttributes:r,linkTags:n,metaTags:s,noscriptTags:l,onChangeClientState:c,scriptTags:d,styleTags:u,title:p,titleAttributes:f}=t;qc("body",i),qc("html",r),rw(p,f);const h={baseTag:ho("base",a),linkTags:ho("link",n),metaTags:ho("meta",s),noscriptTags:ho("noscript",l),scriptTags:ho("script",d),styleTags:ho("style",u)},v={},g={};Object.keys(h).forEach(b=>{const{newTags:x,oldTags:w}=h[b];x.length&&(v[b]=x),w.length&&(g[b]=h[b].oldTags)}),e&&e(),c(t,v,g)},Ar=null,nw=t=>{Ar&&cancelAnimationFrame(Ar),t.defer?Ar=requestAnimationFrame(()=>{Sm(t,()=>{Ar=null})}):(Sm(t),Ar=null)},sw=nw,Cm=class extends m.Component{constructor(){super(...arguments);ft(this,"rendered",!1)}shouldComponentUpdate(e){return!Ux(e,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:e}=this.props.context;e.remove(this),this.emitChange()}emitChange(){const{helmetInstances:e,setHelmet:a}=this.props.context;let i=null;const r=Qx(e.get().map(n=>{const s={...n.props};return delete s.context,s}));yf.canUseDOM?sw(r):Vc&&(i=Vc(r)),a(i)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:e}=this.props.context;e.add(this),this.emitChange()}render(){return this.init(),null}},Fc,Ln=(Fc=class extends m.Component{shouldComponentUpdate(t){return!Bx(_m(this.props,"helmetData"),_m(t,"helmetData"))}mapNestedChildrenToProps(t,e){if(!e)return null;switch(t.type){case"script":case"noscript":return{innerHTML:e};case"style":return{cssText:e};default:throw new Error(`<${t.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(t,e,a,i){return{...e,[t.type]:[...e[t.type]||[],{...a,...this.mapNestedChildrenToProps(t,i)}]}}mapObjectTypeChildren(t,e,a,i){switch(t.type){case"title":return{...e,[t.type]:i,titleAttributes:{...a}};case"body":return{...e,bodyAttributes:{...a}};case"html":return{...e,htmlAttributes:{...a}};default:return{...e,[t.type]:{...a}}}}mapArrayTypeChildrenToProps(t,e){let a={...e};return Object.keys(t).forEach(i=>
2{a={...a,[i]:t[i]}}),a}warnOnInvalidChildren(t,e){return wm(km.some(a=>t.type===a),typeof t.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 ${km.join(", ")} are allowed. Helmet does not support rendering <${t.type}> elements. Refer to our API for more information.`),wm(!e||typeof e=="string"||Array.isArray(e)&&!e.some(a=>typeof a!="string"),`Helmet expects a string as a child of <${t.type}>. Did you forget to wrap your children in braces? ( <${t.type}>{\`\`}</${t.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(t,e){let a={};return U.Children.forEach(t,i=>{if(!i||!i.props)return;const{children:r,...n}=i.props,s=Object.keys(n).reduce((c,d)=>(c[qx[d]||d]=n[d],c),{});let{type:l}=i;switch(typeof l=="symbol"?l=l.toString():this.warnOnInvalidChildren(i,r),l){case"Symbol(react.fragment)":e=this.mapChildrenToProps(r,e);break;case"link":case"meta":case"noscript":case"script":case"style":a=this.flattenArrayTypeChildren(i,a,s,r);break;default:e=this.mapObjectTypeChildren(i,e,s,r);break}}),this.mapArrayTypeChildrenToProps(a,e)}render(){const{children:t,...e}=this.props;let a={...e},{helmetData:i}=e;if(t&&(a=this.mapChildrenToProps(t,a)),i&&!(i instanceof Uc)){const r=i;i=new Uc(r.context,!0),delete a.helmetData}return i?U.createElement(Cm,{...a,context:i.value}):U.createElement(vf.Consumer,null,r=>U.createElement(Cm,{...a,context:r}))}},ft(Fc,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),Fc);const lw=1,cw=1e6;let Zl=0;function dw(){return Zl=(Zl+1)%Number.MAX_SAFE_INTEGER,Zl.toString()}const ec=new Map,Tm=t=>{if(ec.has(t))return;const e=setTimeout(()=>{ec.delete(t),Wr({type:"REMOVE_TOAST",toastId:t})},cw);ec.set(t,e)},uw=(t,e)=>{switch(e.type){case"ADD_TOAST":return{...t,toasts:[e.toast,...t.toasts].slice(0,lw)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(a=>a.id===e.toast.id?{...a,...e.toast}:a)};case"DISMISS_TOAST":{const{toastId:a}=e;return a?Tm(a):t.toasts.forEach(i=>{Tm(i.id)}),{...t,toasts:t.toasts.map(i=>i.id===a||a===void 0?{...i,open:!1}:i)}}case"REMOVE_TOAST":return e.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(a=>a.id!==e.toastId)}}},Ps=[];let As={toasts:[]};function Wr(t){As=uw(As,t),Ps.forEach(e=>{e(As)})}function mw({...t}){const e=dw(),a=r=>Wr({type:"UPDATE_TOAST",toast:{...r,id:e}}),i=()=>Wr({type:"DISMISS_TOAST",toastId:e});return Wr({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:r=>{r||i()}}}),{id:e,dismiss:i,update:a}}function On(){const[t,e]=m.useState(As);return m.useEffect(()=>(Ps.push(e),()=>{const a=Ps.indexOf(e);a>-1&&Ps.splice(a,1)}),[t]),{...t,toast:mw,dismiss:a=>Wr({type:"DISMISS_TOAST",toastId:a})}}function xf(t){var e,a,i="";if(typeof t=="string"||typeof t=="number")i+=t;else if(typeof t=="object")if(Array.isArray(t)){var r=t.length;for(e=0;e<r;e++)t[e]&&(a=xf(t[e]))&&(i&&(i+=" "),i+=a)}else for(a in t)t[a]&&(i&&(i+=" "),i+=a);return i}function wf(){for(var t,e,a=0,i="",r=arguments.length;a<r;a++)(t=arguments[a])&&(e=xf(t))&&(i&&(i+=" "),i+=e);return i}const jm=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,Nm=wf,Mn=(t,e)=>a=>{var i;if((e==null?void 0:e.variants)==null)return Nm(t,a==null?void 0:a.class,a==null?void 0:a.className);const{variants:r,defaultVariants:n}=e,s=Object.keys(r).map(d=>{const u=a==null?void 0:a[d],p=n==null?void 0:n[d];if(u===null)return null;const f=jm(u)||jm(p);return r[d][f]}),l=a&&Object.entries(a).reduce((d,u)=>{let[p,f]=u;return f===void 0||(d[p]=f),d},{}),c=e==null||(i=e.compoundVariants)===null||i===void 0?void 0:i.reduce((d,u)=>{let{class:p,className:f,...h}=u;return Object.entries(h).every(v=>{let[g,b]=v;return Array.isArray(b)?b.includes({...n,...l}[g]):{...n,...l}[g]===b})?[...d,p,f]:d},[]);return Nm(t,s,c,a==null?void 0:a.class,a==null?void 0:a.className)};/**
3 * @license lucide-react v0.462.0 - ISC
4 *
5 * This source code is licensed under the ISC license.
6 * See the LICENSE file in the root directory of this source tree.
7 */const pw=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),kf=(...t)=>t.filter((e,a,i)=>!!e&&e.trim()!==""&&i.indexOf(e)===a).join(" ").trim();/**
8 * @license lucide-react v0.462.0 - ISC
9 *
10 * This source code is licensed under the ISC license.
11 * See the LICENSE file in the root directory of this source tree.
12 */var hw={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 gw=m.forwardRef(({color:t="currentColor",size:e=24,strokeWidth:a=2,absoluteStrokeWidth:i,className:r="",children:n,iconNode:s,...l},c)=>m.createElement("svg",{ref:c,...hw,width:e,height:e,stroke:t,strokeWidth:i?Number(a)*24/Number(e):a,className:kf("lucide",r),...l},[...s.map(([d,u])=>m.createElement(d,u)),...Array.isArray(n)?n:[n]]));/**
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 q=(t,e)=>{const a=m.forwardRef(({className:i,...r},n)=>m.createElement(gw,{ref:n,iconNode:e,className:kf(`lucide-${pw(t)}`,i),...r}));return a.displayName=`${t}`,a};/**
23 * @license lucide-react v0.462.0 - ISC
24 *
25 * This source code is licensed under the ISC license.
26 * See the LICENSE file in the root directory of this source tree.
27 */const Pm=q("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l
27-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]);/**
28 * @license lucide-react v0.462.0 - ISC
29 *
30 * This source code is licensed under the ISC license.
31 * See the LICENSE file in the root directory of this source tree.
32 */const es=q("ArrowLeftRight",[["path",{d:"M8 3 4 7l4 4",key:"9rb6wj"}],["path",{d:"M4 7h16",key:"6tx8e3"}],["path",{d:"m16 21 4-4-4-4",key:"siv7j2"}],["path",{d:"M20 17H4",key:"h6l3hr"}]]);/**
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 eo=q("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/**
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 Ga=q("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/**
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 tc=q("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);/**
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 fw=q("AudioLines",[["path",{d:"M2 10v3",key:"1fnikh"}],["path",{d:"M6 6v11",key:"11sgs0"}],["path",{d:"M10 3v18",key:"yhl04a"}],["path",{d:"M14 8v7",key:"3a1oy3"}],["path",{d:"M18 5v13",key:"123xd1"}],["path",{d:"M22 10v3",key:"154ddg"}]]);/**
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 _f=q("Award",[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]]);/**
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 bw=q("Bell",[["path",{d:"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9",key:"1qo2s2"}],["path",{d:"M10.3 21a1.94 1.94 0 0 0 3.4 0",key:"qgo35s"}]]);/**
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 Sf=q("Box",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);/**
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 ts=q("Building2",[["path",{d:"M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z",key:"1b4qmf"}],["path",{d:"M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2",key:"i71pzd"}],["path",{d:"M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2",key:"10jefs"}],["path",{d:"M10 6h4",key:"1itunk"}],["path",{d:"M10 10h4",key:"tcdvrf"}],["path",{d:"M10 14h4",key:"kelpxr"}],["path",{d:"M10 18h4",key:"1ulq68"}]]);/**
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 as=q("Camera",[["path",{d:"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z",key:"1tc9qg"}],["circle",{cx:"12",cy:"13",r:"3",key:"1vg3eu"}]]);/**
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 vl=q("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/**
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 Cf=q("ChefHat",[["path",{d:"M17 21a1 1 0 0 0 1-1v-5.35c0-.457.316-.844.727-1.041a4 4 0 0 0-2.134-7.589 5 5 0 0 0-9.186 0 4 4 0 0 0-2.134 7.588c.411.198.727.585.727 1.041V20a1 1 0 0 0 1 1Z",key:"1qvrer"}],["path",{d:"M6 17h12",key:"1jwigz"}]]);/**
88 * @license lucide-react v0.462.0 - ISC
89 *
90 * This source code is licensed under the ISC license.
91 * See the LICENSE file in the root directory of this source tree.
92 */const ar=q("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/**
93 * @license lucide-react v0.462.0 - ISC
94 *
95 * This source code is licensed under the ISC license.
96 * See the LICENSE file in the root directory of this source tree.
97 */const zs=q("ChevronLeft",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);/**
98 * @license lucide-react v0.462.0 - ISC
99 *
100 * This source code is licensed under the ISC license.
101 * See the LICENSE file in the root directory of this source tree.
102 */const an=q("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/**
103 * @license lucide-react v0.462.0 - ISC
104 *
105 * This source code is licensed under the ISC license.
106 * See the LICENSE file in the root directory of this source tree.
107 */const vw=q("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/**
108 * @license lucide-react v0.462.0 - ISC
109 *
110 * This source code is licensed under the ISC license.
111 * See the LICENSE file in the root directory of this source tree.
112 */const yw=q("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);/**
113 * @license lucide-react v0.462.0 - ISC
114 *
115 * This source code is licensed under the ISC license.
116 * See the LICENSE file in the root directory of this source tree.
117 */const Es=q("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/**
118 * @license lucide-react v0.462.0 - ISC
119 *
120 * This source code is licensed under the ISC license.
121 * See the LICENSE file in the root directory of this source tree.
122 */const Hr=q("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
123 * @license lucide-react v0.462.0 - ISC
124 *
125 * This source code is licensed under the ISC license.
126 * See the LICENSE file in the root directory of this source tree.
127 */const Bs=q("CircleHelp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/**
128 * @license lucide-react v0.462.0 - ISC
129 *
130 * This source code is licensed under the ISC license.
131 * See the LICENSE file in the root directory of this source tree.
132 */const xw=q("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/**
133 * @license lucide-react v0.462.0 - ISC
134 *
135 * This source code is licensed under the ISC license.
136 * See the LICENSE file in the root directory of this source tree.
137 */const gu=q("Clapperboard",[["path",{d:"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3Z",key:"1tn4o7"}],["path",{d:"m6.2 5.3 3.1 3.9",key:"iuk76l"}],["path",{d:"m12.4 3.4 3.1 4",key:"6hsd6n"}],["path",{d:"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z",key:"ltgou9"}]]);/**
138 * @license lucide-react v0.462.0 - ISC
139 *
140 * This source code is licensed under the ISC license.
141 * See the LICENSE file in the root directory of this source tree.
142 */const Fs=q("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/**
143 * @license lucide-react v0.462.0 - ISC
144 *
145 * This source code is licensed under the ISC license.
146 * See the LICENSE file in the root directory of this source tree.
147 */const $s=q("Coins",[["circle",{cx:"8",cy:"8",r:"6",key:"3yglwk"}],["path",{d:"M18.09 10.37A6 6 0 1 1 10.34 18",key:"t5s6rm"}],["path",{d:"M7 6h1v4",key:"1obek4"}],["path",{d:"m16.71 13.88.7.71-2.82 2.82",key:"1rbuyh"}]]);/**
148 * @license lucide-react v0.462.0 - ISC
149 *
150 * This source code is licensed under the ISC license.
151 * See the LICENSE file in the root directory of this source tree.
152 */const ww=q("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);/**
153 * @license lucide-react v0.462.0 - ISC
154 *
155 * This source code is licensed under the ISC license.
156 * See the LICENSE file in the root directory of this source tree.
157 */const Am=q("CreditCard",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]);/**
158 * @license lucide-react v0.462.0 - ISC
159 *
160 * This source code is licensed under the ISC license.
161 * See the LICENSE file in the root directory of this source tree.
162 */const kw=q("Crown",[["path",{d:"M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z",key:"1vdc57"}],["path",{d:"M5 21h14",key:"11awu3"}]]);/**
163 * @license lucide-react v0.462.0 - ISC
164 *
165 * This source code is licensed under the ISC license.
166 * See the LICENSE file in the root directory of this source tree.
167 */const fu=q("DollarSign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]);/**
168 * @license lucide-react v0.462.0 - ISC
169 *
170 * This source code is licensed under the ISC license.
171 * See the LICENSE file in the root directory of this source tree.
172 */const Em=q("EllipsisVertical",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]]);/**
173 * @license lucide-react v0.462.0 - ISC
174 *
175 * This source code is licensed under the ISC license.
176 * See the LICENSE file in the root directory of this source tree.
177 */const Co=q("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/**
178 * @license lucide-react v0.462.0 - ISC
179 *
180 * This source code is licensed under the ISC license.
181 * See the LICENSE file in the root directory of this source tree.
182 */const Im=q("EyeOff",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/**
183 * @license lucide-react v0.462.0 - ISC
184 *
185 * This source code is licensed under the ISC license.
186 * See the LICENSE file in the root directory of this source tree.
187 */const Dm=q("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
188 * @license lucide-react v0.462.0 - ISC
189 *
190 * This source code is licensed under the ISC license.
191 * See the LICENSE file in the root directory of this source tree.
192 */const $i=q("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"}]]);/**
193 * @license lucide-react v0.462.0 - ISC
194 *
195 * This source code is licensed under the ISC license.
196 * See the LICENSE file in the root directory of this source tree.
197 */const Vs=q("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);/**
198 * @license lucide-react v0.462.0 - ISC
199 *
200 * This source code is licensed under the ISC license.
201 * See the LICENSE file in the root directory of this source tree.
202 */const _w=q("Gift",[["rect",{x:"3",y:"8",width:"18",height:"4",rx:"1",key:"bkv52"}],["path",{d:"M12 8v13",key:"1c76mn"}],["path",{d:"M19 12v7a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-7",key:"6wjy6b"}],["path",{d:"M7.5 8a2.5 2.5 0 0 1 0-5A4.8 8 0 0 1 12 8a4.8 8 0 0 1 4.5-5 2.5 2.5 0 0 1 0 5",key:"1ihvrl"}]]);/**
203 * @license lucide-react v0.462.0 - ISC
204 *
205 * This source code is licensed under the ISC license.
206 * See the LICENSE file in the root directory of this source tree.
207 */const Tf=q("GitMerge",[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M6 21V9a9 9 0 0 0 9 9",key:"7kw0sc"}]]);/**
208 * @license lucide-react v0.462.0 - ISC
209 *
210 * This source code is licensed under the ISC license.
211 * See the LICENSE file in the root directory of this source tree.
212 */const Sw=q("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/**
213 * @license lucide-react v0.462.0 - ISC
214 *
215 * This source code is licensed under the ISC license.
216 * See the LICENSE file in the root directory of this source tree.
217 */const zn=q("GraduationCap",[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]]);/**
218 * @license lucide-react v0.462.0 - ISC
219 *
220 * This source code is licensed under the ISC license.
221 * See the LICENSE file in the root directory of this source tree.
222 */const yl=q("Grid3x3",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]]);/**
223 * @license lucide-react v0.462.0 - ISC
224 *
225 * This source code is licensed under the ISC license.
226 * See the LICENSE file in the root directory of this source tree.
227 */const Rm=q("GripVertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]);/**
228 * @license lucide-react v0.462.0 - ISC
229 *
230 * This source code is licensed under the ISC license.
231 * See the LICENSE file in the root directory of this source tree.
232 */const Cw=q("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"}]]);/**
233 * @license lucide-react v0.462.0 - ISC
234 *
235 * This source code is licensed under the ISC license.
236 * See the LICENSE file in the root directory of this source tree.
237 */const Is=q("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);/**
238 * @license lucide-react v0.462.0 - ISC
239 *
240 * This source code is licensed under the ISC license.
241 * See the LICENSE file in the root directory of this source tree.
242 */const jf=q("Instagram",[["rect",{width:"20",height:"20",x:"2",y:"2",rx:"5",ry:"5",key:"2e1cvw"}],["path",{d:"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z",key:"9exkf1"}],["line",{x1:"17.5",x2:"17.51",y1:"6.5",y2:"6.5",key:"r4j83e"}]]);/**
243 * @license lucide-react v0.462.0 - ISC
244 *
245 * This source code is licensed under the ISC license.
246 * See the LICENSE file in the root directory of this source tree.
247 */const Nf=q("Layers3",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m6.08 9.5-3.5 1.6a1 1 0 0 0 0 1.81l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9a1 1 0 0 0 0-1.83l-3.5-1.59",key:"1e5n1m"}],["path",{d:"m6.08 14.5-3.5 1.6a1 1 0 0 0 0 1.81l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9a1 1 0 0 0 0-1.83l-3.5-1.59",key:"1iwflc"}]]);/**
248 * @license lucide-react v0.462.0 - ISC
249 *
250 * This source code is licensed under the ISC license.
251 * See the LICENSE file in the root directory of this source tree.
252 */const on=q("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]);/**
253 * @license lucide-react v0.462.0 - ISC
254 *
255 * This source code is licensed under the ISC license.
256 * See the LICENSE file in the root directory of this source tree.
257 */const Tw=q("LayoutDashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);/**
258 * @license lucide-react v0.462.0 - ISC
259 *
260 * This source code is licensed under the ISC license.
261 * See the LICENSE file in the root directory of this source tree.
262 */const jw=q("Linkedin",[["path",{d:"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z",key:"c2jq9f"}],["rect",{width:"4",height:"12",x:"2",y:"9",key:"mk3on5"}],["circle",{cx:"4",cy:"4",r:"2",key:"bt5ra8"}]]);/**
263 * @license lucide-react v0.462.0 - ISC
264 *
265 * This source code is licensed under the ISC license.
266 * See the LICENSE file in the root directory of this source tree.
267 */const Lm=q("List",[["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 18h.01",key:"1tta3j"}],["path",{d:"M3 6h.01",key:"1rqtza"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 18h13",key:"1lx6n3"}],["path",{d:"M8 6h13",key:"ik3vkj"}]]);/**
268 * @license lucide-react v0.462.0 - ISC
269 *
270 * This source code is licensed under the ISC license.
271 * See the LICENSE file in the root directory of this source tree.
272 */const to=q("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/**
273 * @license lucide-react v0.462.0 - ISC
274 *
275 * This source code is licensed under the ISC license.
276 * See the LICENSE file in the root directory of this source tree.
277 */const Gc=q("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);/**
278 * @license lucide-react v0.462.0 - ISC
279 *
280 * This source code is licensed under the ISC license.
281 * See the LICENSE file in the root directory of this source tree.
282 */const Wa=q("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"}]]);/**
283 * @license lucide-react v0.462.0 - ISC
284 *
285 * This source code is licensed under the ISC license.
286 * See the LICENSE file in the root directory of this source tree.
287 */const Us=q("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/**
288 * @license lucide-react v0.462.0 - ISC
289 *
290 * This source code is licensed under the ISC license.
291 * See the LICENSE file in the root directory of this source tree.
292 */const Nw=q("MessageCircle",[["path",{d:"M7.9 20A9 9 0 1 0 4 16.1L2 22Z",key:"vv11sd"}]]);/**
293 * @license lucide-react v0.462.0 - ISC
294 *
295 * This source code is licensed under the ISC license.
296 * See the LICENSE file in the root directory of this source tree.
297 */const Wc=q("Monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);/**
298 * @license lucide-react v0.462.0 - ISC
299 *
300 * This source code is licensed under the ISC license.
301 * See the LICENSE file in the root directory of this source tree.
302 */const rn=q("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/**
303 * @license lucide-react v0.462.0 - ISC
304 *
305 * This source code is licensed under the ISC license.
306 * See the LICENSE file in the root directory of this source tree.
307 */const Pw=q("MousePointer2",[["path",{d:"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z",key:"edeuup"}]]);/**
308 * @license lucide-react v0.462.0 - ISC
309 *
310 * This source code is licensed under the ISC license.
311 * See the LICENSE file in the root directory of this source tree.
312 */const qs=q("Palette",[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]]);/**
313 * @license lucide-react v0.462.0 - ISC
314 *
315 * This source code is licensed under the ISC license.
316 * See the LICENSE file in the root directory of this source tree.
317 */const Aw=q("PanelsTopLeft",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]]);/**
318 * @license lucide-react v0.462.0 - ISC
319 *
320 * This source code is licensed under the ISC license.
321 * See the LICENSE file in the root directory of this source tree.
322 */const Om=q("PenLine",[["path",{d:"M12 20h9",key:"t2du7b"}],["path",{d:"M16.376 3.622a1 1 0 0 1 3.002 3.002L7.368 18.635a2 2 0 0 1-.855.506l-2.872.838a.5.5 0 0 1-.62-.62l.838-2.872a2 2 0 0 1 .506-.854z",key:"1ykcvy"}]]);/**
323 * @license lucide-react v0.462.0 - ISC
324 *
325 * This source code is licensed under the ISC license.
326 * See the LICENSE file in the root directory of this source tree.
327 */const Mm=q("PenTool",[["path",{d:"M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z",key:"nt11vn"}],["path",{d:"m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18",key:"15qc1e"}],["path",{d:"m2.3 2.3 7.286 7.286",key:"1wuzzi"}],["circle",{cx:"11",cy:"11",r:"2",key:"xmgehs"}]]);/**
328 * @license lucide-react v0.462.0 - ISC
329 *
330 * This source code is licensed under the ISC license.
331 * See the LICENSE file in the root directory of this source tree.
332 */const Bn=q("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/**
333 * @license lucide-react v0.462.0 - ISC
334 *
335 * This source code is licensed under the ISC license.
336 * See the LICENSE file in the root directory of this source tree.
337 */const nn=q("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);/**
338 * @license lucide-react v0.462.0 - ISC
339 *
340 * This source code is licensed under the ISC license.
341 * See the LICENSE file in the root directory of this source tree.
342 */const ac=q("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/**
343 * @license lucide-react v0.462.0 - ISC
344 *
345 * This source code is licensed under the ISC license.
346 * See the LICENSE file in the root directory of this source tree.
347 */const zm=q("Ruler",[["path",{d:"M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z",key:"icamh8"}
347],["path",{d:"m14.5 12.5 2-2",key:"inckbg"}],["path",{d:"m11.5 9.5 2-2",key:"fmmyf7"}],["path",{d:"m8.5 6.5 2-2",key:"vc6u1g"}],["path",{d:"m17.5 15.5 2-2",key:"wo5hmg"}]]);/**
348 * @license lucide-react v0.462.0 - ISC
349 *
350 * This source code is licensed under the ISC license.
351 * See the LICENSE file in the root directory of this source tree.
352 */const Ew=q("Scissors",[["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M8.12 8.12 12 12",key:"1alkpv"}],["path",{d:"M20 4 8.12 15.88",key:"xgtan2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M14.8 14.8 20 20",key:"ptml3r"}]]);/**
353 * @license lucide-react v0.462.0 - ISC
354 *
355 * This source code is licensed under the ISC license.
356 * See the LICENSE file in the root directory of this source tree.
357 */const Bm=q("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/**
358 * @license lucide-react v0.462.0 - ISC
359 *
360 * This source code is licensed under the ISC license.
361 * See the LICENSE file in the root directory of this source tree.
362 */const ic=q("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]]);/**
363 * @license lucide-react v0.462.0 - ISC
364 *
365 * This source code is licensed under the ISC license.
366 * See the LICENSE file in the root directory of this source tree.
367 */const sn=q("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
368 * @license lucide-react v0.462.0 - ISC
369 *
370 * This source code is licensed under the ISC license.
371 * See the LICENSE file in the root directory of this source tree.
372 */const Iw=q("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);/**
373 * @license lucide-react v0.462.0 - ISC
374 *
375 * This source code is licensed under the ISC license.
376 * See the LICENSE file in the root directory of this source tree.
377 */const Dw=q("ShoppingBag",[["path",{d:"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4Z",key:"hou9p0"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M16 10a4 4 0 0 1-8 0",key:"1ltviw"}]]);/**
378 * @license lucide-react v0.462.0 - ISC
379 *
380 * This source code is licensed under the ISC license.
381 * See the LICENSE file in the root directory of this source tree.
382 */const oi=q("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"}]]);/**
383 * @license lucide-react v0.462.0 - ISC
384 *
385 * This source code is licensed under the ISC license.
386 * See the LICENSE file in the root directory of this source tree.
387 */const Fm=q("SquareCheckBig",[["path",{d:"M21 10.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.5",key:"1uzm8b"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/**
388 * @license lucide-react v0.462.0 - ISC
389 *
390 * This source code is licensed under the ISC license.
391 * See the LICENSE file in the root directory of this source tree.
392 */const Rw=q("Star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);/**
393 * @license lucide-react v0.462.0 - ISC
394 *
395 * This source code is licensed under the ISC license.
396 * See the LICENSE file in the root directory of this source tree.
397 */const Lw=q("Store",[["path",{d:"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7",key:"ztvudi"}],["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}],["path",{d:"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4",key:"2ebpfo"}],["path",{d:"M2 7h20",key:"1fcdvo"}],["path",{d:"M22 7v3a2 2 0 0 1-2 2a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12a2 2 0 0 1-2-2V7",key:"6c3vgh"}]]);/**
398 * @license lucide-react v0.462.0 - ISC
399 *
400 * This source code is licensed under the ISC license.
401 * See the LICENSE file in the root directory of this source tree.
402 */const ln=q("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/**
403 * @license lucide-react v0.462.0 - ISC
404 *
405 * This source code is licensed under the ISC license.
406 * See the LICENSE file in the root directory of this source tree.
407 */const cn=q("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/**
408 * @license lucide-react v0.462.0 - ISC
409 *
410 * This source code is licensed under the ISC license.
411 * See the LICENSE file in the root directory of this source tree.
412 */const Ow=q("TrendingDown",[["polyline",{points:"22 17 13.5 8.5 8.5 13.5 2 7",key:"1r2t7k"}],["polyline",{points:"16 17 22 17 22 11",key:"11uiuu"}]]);/**
413 * @license lucide-react v0.462.0 - ISC
414 *
415 * This source code is licensed under the ISC license.
416 * See the LICENSE file in the root directory of this source tree.
417 */const Mw=q("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);/**
418 * @license lucide-react v0.462.0 - ISC
419 *
420 * This source code is licensed under the ISC license.
421 * See the LICENSE file in the root directory of this source tree.
422 */const zw=q("Twitter",[["path",{d:"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z",key:"pff0z6"}]]);/**
423 * @license lucide-react v0.462.0 - ISC
424 *
425 * This source code is licensed under the ISC license.
426 * See the LICENSE file in the root directory of this source tree.
427 */const Bw=q("UserPlus",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]);/**
428 * @license lucide-react v0.462.0 - ISC
429 *
430 * This source code is licensed under the ISC license.
431 * See the LICENSE file in the root directory of this source tree.
432 */const bu=q("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);/**
433 * @license lucide-react v0.462.0 - ISC
434 *
435 * This source code is licensed under the ISC license.
436 * See the LICENSE file in the root directory of this source tree.
437 */const ir=q("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]);/**
438 * @license lucide-react v0.462.0 - ISC
439 *
440 * This source code is licensed under the ISC license.
441 * See the LICENSE file in the root directory of this source tree.
442 */const oc=q("Video",[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]]);/**
443 * @license lucide-react v0.462.0 - ISC
444 *
445 * This source code is licensed under the ISC license.
446 * See the LICENSE file in the root directory of this source tree.
447 */const Fw=q("Volume2",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]]);/**
448 * @license lucide-react v0.462.0 - ISC
449 *
450 * This source code is licensed under the ISC license.
451 * See the LICENSE file in the root directory of this source tree.
452 */const $w=q("VolumeX",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["line",{x1:"22",x2:"16",y1:"9",y2:"15",key:"1ewh16"}],["line",{x1:"16",x2:"22",y1:"9",y2:"15",key:"5ykzw1"}]]);/**
453 * @license lucide-react v0.462.0 - ISC
454 *
455 * This source code is licensed under the ISC license.
456 * See the LICENSE file in the root directory of this source tree.
457 */const dn=q("WandSparkles",[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]]);/**
458 * @license lucide-react v0.462.0 - ISC
459 *
460 * This source code is licensed under the ISC license.
461 * See the LICENSE file in the root directory of this source tree.
462 */const Et=q("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}
vendor: 6,290 bytes, lines 462-467
462],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/**
463 * @license lucide-react v0.462.0 - ISC
464 *
465 * This source code is licensed under the ISC license.
466 * See the LICENSE file in the root directory of this source tree.
467 */const xl=q("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),vu="-",Vw=t=>{const e=qw(t),{conflictingClassGroups:a,conflictingClassGroupModifiers:i}=t;return{getClassGroupId:s=>{const l=s.split(vu);return l[0]===""&&l.length!==1&&l.shift(),Pf(l,e)||Uw(s)},getConflictingClassGroupIds:(s,l)=>{const c=a[s]||[];return l&&i[s]?[...c,...i[s]]:c}}},Pf=(t,e)=>{var s;if(t.length===0)return e.classGroupId;const a=t[0],i=e.nextPart.get(a),r=i?Pf(t.slice(1),i):void 0;if(r)return r;if(e.validators.length===0)return;const n=t.join(vu);return(s=e.validators.find(({validator:l})=>l(n)))==null?void 0:s.classGroupId},$m=/^\[(.+)\]$/,Uw=t=>{if($m.test(t)){const e=$m.exec(t)[1],a=e==null?void 0:e.substring(0,e.indexOf(":"));if(a)return"arbitrary.."+a}},qw=t=>{const{theme:e,prefix:a}=t,i={nextPart:new Map,validators:[]};return Ww(Object.entries(t.classGroups),a).forEach(([n,s])=>{Hc(s,i,n,e)}),i},Hc=(t,e,a,i)=>{t.forEach(r=>{if(typeof r=="string"){const n=r===""?e:Vm(e,r);n.classGroupId=a;return}if(typeof r=="function"){if(Gw(r)){Hc(r(i),e,a,i);return}e.validators.push({validator:r,classGroupId:a});return}Object.entries(r).forEach(([n,s])=>{Hc(s,Vm(e,n),a,i)})})},Vm=(t,e)=>{let a=t;return e.split(vu).forEach(i=>{a.nextPart.has(i)||a.nextPart.set(i,{nextPart:new Map,validators:[]}),a=a.nextPart.get(i)}),a},Gw=t=>t.isThemeGetter,Ww=(t,e)=>e?t.map(([a,i])=>{const r=i.map(n=>typeof n=="string"?e+n:typeof n=="object"?Object.fromEntries(Object.entries(n).map(([s,l])=>[e+s,l])):n);return[a,r]}):t,Hw=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,a=new Map,i=new Map;const r=(n,s)=>{a.set(n,s),e++,e>t&&(e=0,i=a,a=new Map)};return{get(n){let s=a.get(n);if(s!==void 0)return s;if((s=i.get(n))!==void 0)return r(n,s),s},set(n,s){a.has(n)?a.set(n,s):r(n,s)}}},Af="!",Kw=t=>{const{separator:e,experimentalParseClassName:a}=t,i=e.length===1,r=e[0],n=e.length,s=l=>{const c=[];let d=0,u=0,p;for(let b=0;b<l.length;b++){let x=l[b];if(d===0){if(x===r&&(i||l.slice(b,b+n)===e)){c.push(l.slice(u,b)),u=b+n;continue}if(x==="/"){p=b;continue}}x==="["?d++:x==="]"&&d--}const f=c.length===0?l:l.substring(u),h=f.startsWith(Af),v=h?f.substring(1):f,g=p&&p>u?p-u:void 0;return{modifiers:c,hasImportantModifier:h,baseClassName:v,maybePostfixModifierPosition:g}};return a?l=>a({className:l,parseClassName:s}):s},Yw=t=>{if(t.length<=1)return t;const e=[];let a=[];return t.forEach(i=>{i[0]==="["?(e.push(...a.sort(),i),a=[]):a.push(i)}),e.push(...a.sort()),e},Qw=t=>({cache:Hw(t.cacheSize),parseClassName:Kw(t),...Vw(t)}),Jw=/\s+/,Xw=(t,e)=>{const{parseClassName:a,getClassGroupId:i,getConflictingClassGroupIds:r}=e,n=[],s=t.trim().split(Jw);let l="";for(let c=s.length-1;c>=0;c-=1){const d=s[c],{modifiers:u,hasImportantModifier:p,baseClassName:f,maybePostfixModifierPosition:h}=a(d);let v=!!h,g=i(v?f.substring(0,h):f);if(!g){if(!v){l=d+(l.length>0?" "+l:l);continue}if(g=i(f),!g){l=d+(l.length>0?" "+l:l);continue}v=!1}const b=Yw(u).join(":"),x=p?b+Af:b,w=x+g;if(n.includes(w))continue;n.push(w);const k=r(g,v);for(let _=0;_<k.length;++_){const j=k[_];n.push(x+j)}l=d+(l.length>0?" "+l:l)}return l};function Zw(){let t=0,e,a,i="";for(;t<arguments.length;)(e=arguments[t++])&&(a=Ef(e))&&(i&&(i+=" "),i+=a);return i}const Ef=t=>{if(typeof t=="string")return t;let e,a="";for(let i=0;i<t.length;i++)t[i]&&(e=Ef(t[i]))&&(a&&(a+=" "),a+=e);return a};function ek(t,...e){let a,i,r,n=s;function s(c){const d=e.reduce((u,p)=>p(u),t());return a=Qw(d),i=a.cache.get,r=a.cache.set,n=l,l(c)}function l(c){const d=i(c);if(d)return d;const u=Xw(c,a);return r(c,u),u}return function(){return n(Zw.apply(null,arguments))}}const et=t=>{const e=a=>a[t]||[];return e.isThemeGetter=!0,e},If=/^\[(?:([a-z-]+):)?(.+)\]$/i,tk=/^\d+\/\d+$/,ak=new Set(["px","full","screen"]),ik=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ok=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,rk=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,nk=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,sk=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,La=t=>Do(t)||ak.has(t)||tk.test(t),Xa=t=>br(t,"length",gk),Do=t=>!!t&&!Number.isNaN(Number(t)),rc=t=>br(t,"number",Do),Er=t=>!!t&&Number.isInteger(Number(t)),lk=t=>t.endsWith("%")&&Do(t.slice(0,-1)),Ce=t=>If.test(t),Za=t=>ik.test(t),ck=new Set(["length","size","percentage"]),dk=t=>br(t,ck,Df),uk=t=>br(t,"position",Df),mk=new Set(["image","url"]),pk=t=>br(t,mk,bk),hk=t=>br(t,"",fk),Ir=()=>!0,br=(t,e,a)=>{const i=If.exec(t);return i?i[1]?typeof e=="string"?i[1]===e:e.has(i[1]):a(i[2]):!1},gk=t=>ok.test(t)&&!rk.test(t),Df=()=>!1,fk=t=>nk.test(t),bk=t=>sk.test(t),vk=()=>{const t=et("colors"),e=et("spacing"),a=et("blur"),i=et("brightness"),r=et("borderColor"),n=et("borderRadius"),s=et("borderSpacing"),l=et("borderWidth"),c=et("contrast"),d=et("grayscale"),u=et("hueRotate"),p=et("invert"),f=et("gap"),h=et("gradientColorStops"),v=et("gradientColorStopPositions"),g=et("inset"),b=et("margin"),x=et("opacity"),w=et("padding"),k=et("saturate"),_=et("scale"),j=et("sepia"),S=et("skew"),C=et("space"),N=et("translate"),P=()=>["auto","contain","none"],E=()=>["auto","hidden","clip","visible","scroll"],L=()=>["auto",Ce,e],A=()=>[Ce,e],I=()=>["",La,Xa],R=()=>["auto",Do,Ce],B=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],z=()=>["solid","dashed","dotted","double","none"],Z=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],fe=()=>["start","end","center","between","around","evenly","stretch"],O=()=>["","0",Ce],Q=()=>["auto","avoid","all","avoid-page","page","left","right","column"],Y=()=>[Do,Ce];return{cacheSize:500,separator:":",theme:{colors:[Ir],spacing:[La,Xa],blur:["none","",Za,Ce],brightness:Y(),borderColor:[t],borderRadius:["n
467one","","full",Za,Ce],borderSpacing:A(),borderWidth:I(),contrast:Y(),grayscale:O(),hueRotate:Y(),invert:O(),gap:A(),gradientColorStops:[t],gradientColorStopPositions:[lk,Xa],inset:L(),margin:L(),opacity:Y(),padding:A(),saturate:Y(),scale:Y(),sepia:O(),skew:Y(),space:A(),translate:A()},classGroups:{aspect:[{aspect:["auto","square","video",Ce]}],container:["container"],columns:[{columns:[Za]}],"break-after":[{"break-after":Q()}],"break-before":[{"break-before":Q()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...B(),Ce]}],overflow:[{overflow:E()}],"overflow-x":[{"overflow-x":E()}],"overflow-y":[{"overflow-y":E()}],overscroll:[{overscroll:P()}],"overscroll-x":[{"overscroll-x":P()}],"overscroll-y":[{"overscroll-y":P()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[g]}],"inset-x":[{"inset-x":[g]}],"inset-y":[{"inset-y":[g]}],start:[{start:[g]}],end:[{end:[g]}],top:[{top:[g]}],right:[{right:[g]}],bottom:[{bottom:[g]}],left:[{left:[g]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Er,Ce]}],basis:[{basis:L()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",Ce]}],grow:[{grow:O()}],shrink:[{shrink:O()}],order:[{order:["first","last","none",Er,Ce]}],"grid-cols":[{"grid-cols":[Ir]}],"col-start-end":[{col:["auto",{span:["full",Er,Ce]},Ce]}],"col-start":[{"col-start":R()}],"col-end":[{"col-end":R()}],"grid-rows":[{"grid-rows":[Ir]}],"row-start-end":[{row:["auto",{span:[Er,Ce]},Ce]}],"row-start":[{"row-start":R()}],"row-end":[{"row-end":R()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",Ce]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",Ce]}],gap:[{gap:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:["normal",...fe()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...fe(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...fe(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[w]}],px:[{px:[w]}],py:[{py:[w]}],ps:[{ps:[w]}],pe:[{pe:[w]}],pt:[{pt:[w]}],pr:[{pr:[w]}],pb:[{pb:[w]}],pl:[{pl:[w]}],m:[{m:[b]}],mx:[{mx:[b]}],my:[{my:[b]}],ms:[{ms:[b]}],me:[{me:[b]}],mt:[{mt:[b]}],mr:[{mr:[b]}],mb:[{mb:[b]}],ml:[{ml:[b]}],"space-x":[{"space-x":[C]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[C]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",Ce,e]}],"min-w":[{"min-w":[Ce,e,"min","max","fit"]}],"max-w":[{"max-w":[Ce,e,"none","full","min","max","fit","prose",{screen:[Za]},Za]}],h:[{h:[Ce,e,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[Ce,e,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[Ce,e,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[Ce,e,"auto","min","max","fit"]}],"font-size":[{text:["base",Za,Xa]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",rc]}],"font-family":[{font:[Ir]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",Ce]}],"line-clamp":[{"line-clamp":["none",Do,rc]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",La,Ce]}],"list-image":[{"list-image":["none",Ce]}],"list-style-type":[{list:["none","disc","decimal",Ce]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[t]}],"placeholder-opacity":[{"placeholder-opacity":[x]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[t]}],"text-opacity":[{"text-opacity":[x]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...z(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",La,Xa]}],"underline-offset":[{"underline-offset":["auto",La,Ce]}],"text-decoration-color":[{decoration:[t]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:A()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ce]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ce]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[x]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...B(),uk]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",dk]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},pk]}],"bg-color":[{bg:[t]}],"gradient-from-pos":[{from:[v]}
vendor: 5,180 bytes, line 467
467],"gradient-via-pos":[{via:[v]}],"gradient-to-pos":[{to:[v]}],"gradient-from":[{from:[h]}],"gradient-via":[{via:[h]}],"gradient-to":[{to:[h]}],rounded:[{rounded:[n]}],"rounded-s":[{"rounded-s":[n]}],"rounded-e":[{"rounded-e":[n]}],"rounded-t":[{"rounded-t":[n]}],"rounded-r":[{"rounded-r":[n]}],"rounded-b":[{"rounded-b":[n]}],"rounded-l":[{"rounded-l":[n]}],"rounded-ss":[{"rounded-ss":[n]}],"rounded-se":[{"rounded-se":[n]}],"rounded-ee":[{"rounded-ee":[n]}],"rounded-es":[{"rounded-es":[n]}],"rounded-tl":[{"rounded-tl":[n]}],"rounded-tr":[{"rounded-tr":[n]}],"rounded-br":[{"rounded-br":[n]}],"rounded-bl":[{"rounded-bl":[n]}],"border-w":[{border:[l]}],"border-w-x":[{"border-x":[l]}],"border-w-y":[{"border-y":[l]}],"border-w-s":[{"border-s":[l]}],"border-w-e":[{"border-e":[l]}],"border-w-t":[{"border-t":[l]}],"border-w-r":[{"border-r":[l]}],"border-w-b":[{"border-b":[l]}],"border-w-l":[{"border-l":[l]}],"border-opacity":[{"border-opacity":[x]}],"border-style":[{border:[...z(),"hidden"]}],"divide-x":[{"divide-x":[l]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[l]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[x]}],"divide-style":[{divide:z()}],"border-color":[{border:[r]}],"border-color-x":[{"border-x":[r]}],"border-color-y":[{"border-y":[r]}],"border-color-s":[{"border-s":[r]}],"border-color-e":[{"border-e":[r]}],"border-color-t":[{"border-t":[r]}],"border-color-r":[{"border-r":[r]}],"border-color-b":[{"border-b":[r]}],"border-color-l":[{"border-l":[r]}],"divide-color":[{divide:[r]}],"outline-style":[{outline:["",...z()]}],"outline-offset":[{"outline-offset":[La,Ce]}],"outline-w":[{outline:[La,Xa]}],"outline-color":[{outline:[t]}],"ring-w":[{ring:I()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[t]}],"ring-opacity":[{"ring-opacity":[x]}],"ring-offset-w":[{"ring-offset":[La,Xa]}],"ring-offset-color":[{"ring-offset":[t]}],shadow:[{shadow:["","inner","none",Za,hk]}],"shadow-color":[{shadow:[Ir]}],opacity:[{opacity:[x]}],"mix-blend":[{"mix-blend":[...Z(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":Z()}],filter:[{filter:["","none"]}],blur:[{blur:[a]}],brightness:[{brightness:[i]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":["","none",Za,Ce]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[u]}],invert:[{invert:[p]}],saturate:[{saturate:[k]}],sepia:[{sepia:[j]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[a]}],"backdrop-brightness":[{"backdrop-brightness":[i]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u]}],"backdrop-invert":[{"backdrop-invert":[p]}],"backdrop-opacity":[{"backdrop-opacity":[x]}],"backdrop-saturate":[{"backdrop-saturate":[k]}],"backdrop-sepia":[{"backdrop-sepia":[j]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[s]}],"border-spacing-x":[{"border-spacing-x":[s]}],"border-spacing-y":[{"border-spacing-y":[s]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",Ce]}],duration:[{duration:Y()}],ease:[{ease:["linear","in","out","in-out",Ce]}],delay:[{delay:Y()}],animate:[{animate:["none","spin","ping","pulse","bounce",Ce]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[_]}],"scale-x":[{"scale-x":[_]}],"scale-y":[{"scale-y":[_]}],rotate:[{rotate:[Er,Ce]}],"translate-x":[{"translate-x":[N]}],"translate-y":[{"translate-y":[N]}],"skew-x":[{"skew-x":[S]}],"skew-y":[{"skew-y":[S]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",Ce]}],accent:[{accent:["auto",t]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ce]}],"caret-color":[{caret:[t]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":A()}],"scroll-mx":[{"scroll-mx":A()}],"scroll-my":[{"scroll-my":A()}],"scroll-ms":[{"scroll-ms":A()}],"scroll-me":[{"scroll-me":A()}],"scroll-mt":[{"scroll-mt":A()}],"scroll-mr":[{"scroll-mr":A()}],"scroll-mb":[{"scroll-mb":A()}],"scroll-ml":[{"scroll-ml":A()}],"scroll-p":[{"scroll-p":A()}],"scroll-px":[{"scroll-px":A()}],"scroll-py":[{"scroll-py":A()}],"scroll-ps":[{"scroll-ps":A()}],"scroll-pe":[{"scroll-pe":A()}],"scroll-pt":[{"scroll-pt":A()}],"scroll-pr":[{"scroll-pr":A()}],"scroll-pb":[{"scroll-pb":A()}],"scroll-pl":[{"scroll-pl":A()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}
467],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ce]}],fill:[{fill:[t,"none"]}],"stroke-w":[{stroke:[La,Xa,rc]}],stroke:[{stroke:[t,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},yk=ek(vk);function y(...t){return yk(wf(t))}const xk=bx,Rf=m.forwardRef(({className:t,...e},a)=>o.jsx(Bg,{ref:a,className:y("fixed inset-x-0 top-0 z-[210] box-border flex max-h-screen w-auto max-w-[100dvw] flex-col-reverse p-4 md:bottom-0 md:left-auto md:right-0 md:top-auto md:w-full md:max-w-[420px] md:flex-col",t),...e}));Rf.displayName=Bg.displayName;const wk=Mn("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),Lf=m.forwardRef(({className:t,variant:e,...a},i)=>o.jsx(Fg,{ref:i,className:y(wk({variant:e}),t),...a}));Lf.displayName=Fg.displayName;const kk=m.forwardRef(({className:t,...e},a)=>o.jsx($g,{ref:a,className:y("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive disabled:pointer-events-none disabled:opacity-50",t),...e}));kk.displayName=$g.displayName;const Of=m.forwardRef(({className:t,...e},a)=>o.jsx(Vg,{ref:a,className:y("absolute right-2 top-2 rounded-md p-1 text-foreground
467/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...e,children:o.jsx(Et,{className:"h-4 w-4"})}));Of.displayName=Vg.displayName;const Mf=m.forwardRef(({className:t,...e},a)=>o.jsx(Ug,{ref:a,className:y("text-sm font-semibold",t),...e}));Mf.displayName=Ug.displayName;const zf=m.forwardRef(({className:t,...e},a)=>o.jsx(qg,{ref:a,className:y("text-sm opacity-90",t),...e}));zf.displayName=qg.displayName;function _k(){const{toasts:t}=On();return o.jsxs(xk,{children:[t.map(function({id:e,title:a,description:i,action:r,...n}){return o.jsxs(Lf,{...n,children:[o.jsxs("div",{className:"grid gap-1",children:[a&&o.jsx(Mf,{children:a}),i&&o.jsx(zf,{children:i})]}),r,o.jsx(Of,{})]},e)}),o.jsx(Rf,{})]})}var Sk=(t,e,a,i,r,n,s,l)=>{let c=document.documentElement,d=["light","dark"];function u(h){(Array.isArray(t)?t:[t]).forEach(v=>{let g=v==="class",b=g&&n?r.map(x=>n[x]||x):r;g?(c.classList.remove(...b),c.classList.add(n&&n[h]?n[h]:h)):c.setAttribute(v,h)}),p(h)}function p(h){l&&d.includes(h)&&(c.style.colorScheme=h)}function f(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(i)u(i);else try{let h=localStorage.getItem(e)||a,v=s&&h==="system"?f():h;u(v)}catch{}},Ck=m.createContext(void 0),Tk={setTheme:t=>{},themes:[]},jk=()=>{var t;return(t=m.useContext(Ck))!=null?t:Tk};m.memo(({forcedTheme:t,storageKey:e,attribute:a,enableSystem:i,enableColorScheme:r,defaultTheme:n,value:s,themes:l,nonce:c,scriptProps:d})=>{let u=JSON.stringify([a,e,n,t,l,s,i,r]).slice(1,-1);return m.createElement("script",{...d,suppressHydrationWarning:!0,nonce:typeof window>"u"?c:"",dangerouslySetInnerHTML:{__html:`(${Sk.toString()})(${u})`}})});var Nk=t=>{switch(t){case"success":return Ek;case"info":return Dk;case"warning":return Ik;case"error":return Rk;default:return null}},Pk=Array(12).fill(0),Ak=({visible:t,className:e})=>U.createElement("div",{className:["sonner-loading-wrapper",e].filter(Boolean).join(" "),"data-visible":t},U.createElement("div",{className:"sonner-spinner"},Pk.map((a,i)=>U.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${i}`})))),Ek=U.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},U.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),Ik=U.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},U.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),Dk=U.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},U.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),Rk=U.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},U.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),Lk=U.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},U.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),U.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),Ok=()=>{let[t,e]=U.useState(document.hidden);return U.useEffect(()=>{let a=()=>{e(document.hidden)};return document.addEventListener("visibilitychange",a),()=>window.removeEventListener("visibilitychange",a)},[]),t},Kc=1,Mk=class{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{let e=this.subscribers.indexOf(t);this.subscribers.splice(e,1)}),this.publish=t=>
467{this.subscribers.forEach(e=>e(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var e;let{message:a,...i}=t,r=typeof(t==null?void 0:t.id)=="number"||((e=t.id)==null?void 0:e.length)>0?t.id:Kc++,n=this.toasts.find(l=>l.id===r),s=t.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),n?this.toasts=this.toasts.map(l=>l.id===r?(this.publish({...l,...t,id:r,title:a}),{...l,...t,id:r,dismissible:s,title:a}):l):this.addToast({title:a,...i,dismissible:s,id:r}),r},this.dismiss=t=>(this.dismissedToasts.add(t),t||this.toasts.forEach(e=>{this.subscribers.forEach(a=>a({id:e.id,dismiss:!0}))}),this.subscribers.forEach(e=>e({id:t,dismiss:!0})),t),this.message=(t,e)=>this.create({...e,message:t}),this.error=(t,e)=>this.create({...e,message:t,type:"error"}),this.success=(t,e)=>this.create({...e,type:"success",message:t}),this.info=(t,e)=>this.create({...e,type:"info",message:t}),this.warning=(t,e)=>this.create({...e,type:"warning",message:t}),this.loading=(t,e)=>this.create({...e,type:"loading",message:t}),this.promise=(t,e)=>{if(!e)return;let a;e.loading!==void 0&&(a=this.create({...e,promise:t,type:"loading",message:e.loading,description:typeof e.description!="function"?e.description:void 0}));let i=t instanceof Promise?t:t(),r=a!==void 0,n,s=i.then(async c=>{if(n=["resolve",c],U.isValidElement(c))r=!1,this.create({id:a,type:"default",message:c});else if(Bk(c)&&!c.ok){r=!1;let d=typeof e.error=="function"?await e.error(`HTTP error! status: ${c.status}`):e.error,u=typeof e.description=="function"?await e.description(`HTTP error! status: ${c.status}`):e.description;this.create({id:a,type:"error",message:d,description:u})}else if(e.success!==void 0){r=!1;let d=typeof e.success=="function"?await e.success(c):e.success,u=typeof e.description=="function"?await e.description(c):e.description;this.create({id:a,type:"success",message:d,description:u})}}).catch(async c=>{if(n=["reject",c],e.error!==void 0){r=!1;let d=typeof e.error=="function"?await e.error(c):e.error,u=typeof e.description=="function"?await e.description(c):e.description;this.create({id:a,type:"error",message:d,description:u})}}).finally(()=>{var c;r&&(this.dismiss(a),a=void 0),(c=e.finally)==null||c.call(e)}),l=()=>new Promise((c,d)=>s.then(()=>n[0]==="reject"?d(n[1]):c(n[1])).catch(d));return typeof a!="string"&&typeof a!="number"?{unwrap:l}:Object.assign(a,{unwrap:l})},this.custom=(t,e)=>{let a=(e==null?void 0:e.id)||Kc++;return this.create({jsx:t(a),id:a,...e}),a},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},Qt=new Mk,zk=(t,e)=>{let a=(e==null?void 0:e.id)||Kc++;return Qt.addToast({title:t,...e,id:a}),a},Bk=t=>t&&typeof t=="object"&&"ok"in t&&typeof t.ok=="boolean"&&"status"in t&&typeof t.status=="number",Fk=zk,$k=()=>Qt.toasts,Vk=()=>Qt.getActiveToasts(),le=Object.assign(Fk,{success:Qt.success,info:Qt.info,warning:Qt.warning,error:Qt.error,custom:Qt.custom,message:Qt.message,promise:Qt.promise,dismiss:Qt.dismiss,loading:Qt.loading},{getHistory:$k,getToasts:Vk});function Uk(t,{insertAt:e}={}){if(typeof document>"u")return;let a=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css",e==="top"&&a.firstChild?a.insertBefore(i,a.firstChild):a.appendChild(i),i.styleSheet?i.styleSheet.cssText=t:i.appendChild(document.createTextNode(t))}Uk(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
467left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
467:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);
467--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}
468`);function is(t){return t.label!==void 0}var qk=3,Gk="32px",Wk="16px",Um=4e3,Hk=356,Kk=14,Yk=20,Qk=200;function ha(...t){return t.filter(Boolean).join(" ")}function Jk(t){let[e,a]=t.split("-"),i=[];return e&&i.push(e),a&&i.push(a),i}var Xk=t=>{var e,a,i,r,n,s,l,c,d,u,p;let{invert:f,toast:h,unstyled:v,interacting:g,setHeights:b,visibleToasts:x,heights:w,index:k,toasts:_,expanded:j,removeToast:S,defaultRichColors:C,closeButton:N,style:P,cancelButtonStyle:E,actionButtonStyle:L,className:A="",descriptionClassName:I="",duration:R,position:B,gap:z,loadingIcon:Z,expandByDefault:fe,classNames:O,icons:Q,closeButtonAriaLabel:Y="Close toast",pauseWhenPageIsHidden:K}=t,[J,oe]=U.useState(null),[ve,je]=U.useState(null),[W,ue]=U.useState(!1),[ke,re]=U.useState(!1),[ge,M]=U.useState(!1),[Ee,Ne]=U.useState(!1),[We,ze]=U.useState(!1),[Ze,Ve]=U.useState(0),[st,De]=U.useState(0),xt=U.useRef(h.duration||R||Um),we=U.useRef(null),lt=U.useRef(null),Tt=k===0,qt=k+1<=x,it=h.type,pt=h.dismissible!==!1,At=h.className||"",wt=h.descriptionClassName||"",Zt=U.useMemo(()=>w.findIndex(ie=>ie.toastId===h.id)||0,[w,h.id]),ht=U.useMemo(()=>{var ie;return(ie=h.closeButton)!=null?ie:N},[h.closeButton,N]),ea=U.useMemo(()=>h.duration||R||Um,[h.duration,R]),Gt=U.useRef(0),kt=U.useRef(0),Wt
468=U.useRef(0),G=U.useRef(null),[te,D]=B.split("-"),ce=U.useMemo(()=>w.reduce((ie,ne,Se)=>Se>=Zt?ie:ie+ne.height,0),[w,Zt]),_e=Ok(),Re=h.invert||f,ye=it==="loading";kt.current=U.useMemo(()=>Zt*z+ce,[Zt,ce]),U.useEffect(()=>{xt.current=ea},[ea]),U.useEffect(()=>{ue(!0)},[]),U.useEffect(()=>{let ie=lt.current;if(ie){let ne=ie.getBoundingClientRect().height;return De(ne),b(Se=>[{toastId:h.id,height:ne,position:h.position},...Se]),()=>b(Se=>Se.filter(Qe=>Qe.toastId!==h.id))}},[b,h.id]),U.useLayoutEffect(()=>{if(!W)return;let ie=lt.current,ne=ie.style.height;ie.style.height="auto";let Se=ie.getBoundingClientRect().height;ie.style.height=ne,De(Se),b(Qe=>Qe.find(ct=>ct.toastId===h.id)?Qe.map(ct=>ct.toastId===h.id?{...ct,height:Se}:ct):[{toastId:h.id,height:Se,position:h.position},...Qe])},[W,h.title,h.description,b,h.id]);let ae=U.useCallback(()=>{re(!0),Ve(kt.current),b(ie=>ie.filter(ne=>ne.toastId!==h.id)),setTimeout(()=>{S(h)},Qk)},[h,S,b,kt]);U.useEffect(()=>{if(h.promise&&it==="loading"||h.duration===1/0||h.type==="loading")return;let ie;return j||g||K&&_e?(()=>{if(Wt.current<Gt.current){let ne=new Date().getTime()-Gt.current;xt.current=xt.current-ne}Wt.current=new Date().getTime()})():xt.current!==1/0&&(Gt.current=new Date().getTime(),ie=setTimeout(()=>{var ne;(ne=h.onAutoClose)==null||ne.call(h,h),ae()},xt.current)),()=>clearTimeout(ie)},[j,g,h,it,K,_e,ae]),U.useEffect(()=>{h.delete&&ae()},[ae,h.delete]);function Oe(){var ie,ne,Se;return Q!=null&&Q.loading?U.createElement("div",{className:ha(O==null?void 0:O.loader,(ie=h==null?void 0:h.classNames)==null?void 0:ie.loader,"sonner-loader"),"data-visible":it==="loading"},Q.loading):Z?U.createElement("div",{className:ha(O==null?void 0:O.loader,(ne=h==null?void 0:h.classNames)==null?void 0:ne.loader,"sonner-loader"),"data-visible":it==="loading"},Z):U.createElement(Ak,{className:ha(O==null?void 0:O.loader,(Se=h==null?void 0:h.classNames)==null?void 0:Se.loader),visible:it==="loading"})}return U.createElement("li",{tabIndex:0,ref:lt,className:ha(A,At,O==null?void 0:O.toast,(e=h==null?void 0:h.classNames)==null?void 0:e.toast,O==null?void 0:O.default,O==null?void 0:O[it],(a=h==null?void 0:h.classNames)==null?void 0:a[it]),"data-sonner-toast":"","data-rich-colors":(i=h.richColors)!=null?i:C,"data-styled":!(h.jsx||h.unstyled||v),"data-mounted":W,"data-promise":!!h.promise,"data-swiped":We,"data-removed":ke,"data-visible":qt,"data-y-position":te,"data-x-position":D,"data-index":k,"data-front":Tt,"data-swiping":ge,"data-dismissible":pt,"data-type":it,"data-invert":Re,"data-swipe-out":Ee,"data-swipe-direction":ve,"data-expanded":!!(j||fe&&W),style:{"--index":k,"--toasts-before":k,"--z-index":_.length-k,"--offset":`${ke?Ze:kt.current}px`,"--initial-height":fe?"auto":`${st}px`,...P,...h.style},onDragEnd:()=>{M(!1),oe(null),G.current=null},onPointerDown:ie=>{ye||!pt||(we.current=new Date,Ve(kt.current),ie.target.setPointerCapture(ie.pointerId),ie.target.tagName!=="BUTTON"&&(M(!0),G.current={x:ie.clientX,y:ie.clientY}))},onPointerUp:()=>{var ie,ne,Se,Qe;if(Ee||!pt)return;G.current=null;let ct=Number(((ie=lt.current)==null?void 0:ie.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Me=Number(((ne=lt.current)==null?void 0:ne.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),gt=new Date().getTime()-((Se=we.current)==null?void 0:Se.getTime()),He=J==="x"?ct:Me,ot=Math.abs(He)/gt;if(Math.abs(He)>=Yk||ot>.11){Ve(kt.current),(Qe=h.onDismiss)==null||Qe.call(h,h),je(J==="x"?ct>0?"right":"left":Me>0?"down":"up"),ae(),Ne(!0),ze(!1);return}M(!1),oe(null)},onPointerMove:ie=>{var ne,Se,Qe,ct;if(!G.current||!pt||((ne=window.getSelection())==null?void 0:ne.toString().length)>0)return;let Me=ie.clientY-G.current.y,gt=ie.clientX-G.current.x,He=(Se=t.swipeDirections)!=null?Se:Jk(B);!J&&(Math.abs(gt)>1||Math.abs(Me)>1)&&oe(Math.abs(gt)>Math.abs(Me)?"x":"y");let ot={x:0,y:0};J==="y"?(He.includes("top")||He.includes("bottom"))&&(He.includes("top")&&Me<0||He.includes("bottom")&&Me>0)&&(ot.y=Me):J==="x"&&(He.includes("left")||He.includes("right"))&&(He.includes("left")&&gt<0||He.includes("right")&&gt>0)&&(ot.x=gt),(Math.abs(ot.x)>0||Math.abs(ot.y)>0)&&ze(!0),(Qe=lt.current)==null||Qe.style.setProperty("--swipe-amount-x",`${ot.x}px`),(ct=lt.current)==null||ct.style.setProperty("--swipe-amount-y",`${ot.y}px`)}},ht&&!h.jsx?U.createElement("button",{"aria-label":Y,"data-disabled":ye,"data-close-button":!0,onClick:ye||!pt?()=>{}:()=>{var ie;ae(),(ie=h.onDismiss)==null||ie.call(h,h)},className:ha(O==null?void 0:O.closeButton,(r=h==null?void 0:h.classNames)==null?void 0:r.closeButton)},(n=Q==null?void 0:Q.close)!=null?n:Lk):null,h.jsx||m.isValidElement(h.title)?h.jsx?h.jsx:typeof h.title=="function"?h.title():h.title:U.createElement(U.Fragment,null,it||h.icon||h.promise?U.createElement("div",{"data-icon":"",className:ha(O==null?void 0:O.icon,(s=h==null?void 0:h.classNames)==null?void 0:s.icon)},h.promise||h.type==="loading"&&!h.icon?h.icon||Oe():null,h.type!=="loading"?h.icon||(Q==null?void 0:Q[it])||Nk(it):null):null,U.createElement("div",{"data-content":"",className:ha(O==null?void 0:O.content,(l=h==null?void 0:h.classNames)==null?void 0:l.content)},U.createElement("div",{"data-title":"",className:ha(O==null?void 0:O.title,(c=h==null?void 0:h.classNames)==null?void 0:c.title)},typeof h.title=="function"?h.title():h.title),h.description?U.createElement("div",{"data-description":"",className:ha(I,wt,O==null?void 0:O.de
468scription,(d=h==null?void 0:h.classNames)==null?void 0:d.description)},typeof h.description=="function"?h.description():h.description):null),m.isValidElement(h.cancel)?h.cancel:h.cancel&&is(h.cancel)?U.createElement("button",{"data-button":!0,"data-cancel":!0,style:h.cancelButtonStyle||E,onClick:ie=>{var ne,Se;is(h.cancel)&&pt&&((Se=(ne=h.cancel).onClick)==null||Se.call(ne,ie),ae())},className:ha(O==null?void 0:O.cancelButton,(u=h==null?void 0:h.classNames)==null?void 0:u.cancelButton)},h.cancel.label):null,m.isValidElement(h.action)?h.action:h.action&&is(h.action)?U.createElement("button",{"data-button":!0,"data-action":!0,style:h.actionButtonStyle||L,onClick:ie=>{var ne,Se;is(h.action)&&((Se=(ne=h.action).onClick)==null||Se.call(ne,ie),!ie.defaultPrevented&&ae())},className:ha(O==null?void 0:O.actionButton,(p=h==null?void 0:h.classNames)==null?void 0:p.actionButton)},h.action.label):null))};function qm(){if(typeof window>"u"||typeof document>"u")return"ltr";let t=document.documentElement.getAttribute("dir");return t==="auto"||!t?window.getComputedStyle(document.documentElement).direction:t}function Zk(t,e){let a={};return[t,e].forEach((i,r)=>{let n=r===1,s=n?"--mobile-offset":"--offset",l=n?Wk:Gk;function c(d){["top","right","bottom","left"].forEach(u=>{a[`${s}-${u}`]=typeof d=="number"?`${d}px`:d})}typeof i=="number"||typeof i=="string"?c(i):typeof i=="object"?["top","right","bottom","left"].forEach(d=>{i[d]===void 0?a[`${s}-${d}`]=l:a[`${s}-${d}`]=typeof i[d]=="number"?`${i[d]}px`:i[d]}):c(l)}),a}var e1=m.forwardRef(function(t,e){let{invert:a,position:i="bottom-right",hotkey:r=["altKey","KeyT"],expand:n,closeButton:s,className:l,offset:c,mobileOffset:d,theme:u="light",richColors:p,duration:f,style:h,visibleToasts:v=qk,toastOptions:g,dir:b=qm(),gap:x=Kk,loadingIcon:w,icons:k,containerAriaLabel:_="Notifications",pauseWhenPageIsHidden:j}=t,[S,C]=U.useState([]),N=U.useMemo(()=>Array.from(new Set([i].concat(S.filter(K=>K.position).map(K=>K.position)))),[S,i]),[P,E]=U.useState([]),[L,A]=U.useState(!1),[I,R]=U.useState(!1),[B,z]=U.useState(u!=="system"?u:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),Z=U.useRef(null),fe=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),O=U.useRef(null),Q=U.useRef(!1),Y=U.useCallback(K=>{C(J=>{var oe;return(oe=J.find(ve=>ve.id===K.id))!=null&&oe.delete||Qt.dismiss(K.id),J.filter(({id:ve})=>ve!==K.id)})},[]);return U.useEffect(()=>Qt.subscribe(K=>{if(K.dismiss){C(J=>J.map(oe=>oe.id===K.id?{...oe,delete:!0}:oe));return}setTimeout(()=>{Ex.flushSync(()=>{C(J=>{let oe=J.findIndex(ve=>ve.id===K.id);return oe!==-1?[...J.slice(0,oe),{...J[oe],...K},...J.slice(oe+1)]:[K,...J]})})})}),[]),U.useEffect(()=>{if(u!=="system"){z(u);return}if(u==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?z("dark"):z("light")),typeof window>"u")return;let K=window.matchMedia("(prefers-color-scheme: dark)");try{K.addEventListener("change",({matches:J})=>{z(J?"dark":"light")})}catch{K.addListener(({matches:oe})=>{try{z(oe?"dark":"light")}catch(ve){console.error(ve)}})}},[u]),U.useEffect(()=>{S.length<=1&&A(!1)},[S]),U.useEffect(()=>{let K=J=>{var oe,ve;r.every(je=>J[je]||J.code===je)&&(A(!0),(oe=Z.current)==null||oe.focus()),J.code==="Escape"&&(document.activeElement===Z.current||(ve=Z.current)!=null&&ve.contains(document.activeElement))&&A(!1)};return document.addEventListener("keydown",K),()=>document.removeEventListener("keydown",K)},[r]),U.useEffect(()=>{if(Z.current)return()=>{O.current&&(O.current.focus({preventScroll:!0}),O.current=null,Q.current=!1)}},[Z.current]),U.createElement("section",{ref:e,"aria-label":`${_} ${fe}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},N.map((K,J)=>{var oe;let[ve,je]=K.split("-");return S.length?U.createElement("ol",{key:K,dir:b==="auto"?qm():b,tabIndex:-1,ref:Z,className:l,"data-sonner-toaster":!0,"data-theme":B,"data-y-position":ve,"data-lifted":L&&S.length>1&&!n,"data-x-position":je,style:{"--front-toast-height":`${((oe=P[0])==null?void 0:oe.height)||0}px`,"--width":`${Hk}px`,"--gap":`${x}px`,...h,...Zk(c,d)},onBlur:W=>{Q.current&&!W.currentTarget.contains(W.relatedTarget)&&(Q.current=!1,O.current&&(O.current.focus({preventScroll:!0}),O.current=null))},onFocus:W=>{W.target instanceof HTMLElement&&W.target.dataset.dismissible==="false"||Q.current||(Q.current=!0,O.current=W.relatedTarget)},onMouseEnter:()=>A(!0),onMouseMove:()=>A(!0),onMouseLeave:()=>{I||A(!1)},onDragEnd:()=>A(!1),onPointerDown:W=>{W.target instanceof HTMLElement&&W.target.dataset.dismissible==="false"||R(!0)},onPointerUp:()=>R(!1)},S.filter(W=>!W.position&&J===0||W.position===K).map((W,ue)=>{var ke,re;return U.createElement(Xk,{key:W.id,icons:k,index:ue,toast:W,defaultRichColors:p,duration:(ke=g==null?void 0:g.duration)!=null?ke:f,className:g==null?void 0:g.className,descriptionClassName:g==null?void 0:g.descriptionClassName,invert:a,visibleToasts:v,closeButton:(re=g==null?void 0:g.closeButton)!=null?re:s,interacting:I,position:K,style:g==null?void 0:g.style,unstyled:g==null?void 0:g.unstyled,classNames:g==null?void 0:g.classNames,cancelButtonStyle:g==null?void 0:g.cancelButtonStyle,actionButtonStyle:g==null?void 0:g.actionButtonStyle,removeToast:Y,toasts:S.filter(ge=>ge.position==W.position),heights:P.filter(ge=>ge.position==W.position),setHeights:E,expandByDefault:n,gap:x,loadingIcon:w,exp
vendor: 8,519 bytes, line 468
468anded:L,pauseWhenPageIsHidden:j,swipeDirections:t.swipeDirections})})):null}))});const t1=({...t})=>{const{theme:e="system"}=jk();return o.jsx(e1,{theme:e,className:"toaster group",toastOptions:{classNames:{toast:"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"}},...t})};var[wl]=so("Tooltip",[hr]),kl=hr(),Bf="TooltipProvider",a1=700,Yc="tooltip.open",[i1,yu]=wl(Bf),Ff=t=>{const{__scopeTooltip:e,delayDuration:a=a1,skipDelayDuration:i=300,disableHoverableContent:r=!1,children:n}=t,s=m.useRef(!0),l=m.useRef(!1),c=m.useRef(0);return m.useEffect(()=>{const d=c.current;return()=>window.clearTimeout(d)},[]),o.jsx(i1,{scope:e,isOpenDelayedRef:s,delayDuration:a,onOpen:m.useCallback(()=>{window.clearTimeout(c.current),s.current=!1},[]),onClose:m.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.current=!0,i)},[i]),isPointerInTransitRef:l,onPointerInTransitChange:m.useCallback(d=>{l.current=d},[]),disableHoverableContent:r,children:n})};Ff.displayName=Bf;var un="Tooltip",[o1,Fn]=wl(un),$f=t=>{const{__scopeTooltip:e,children:a,open:i,defaultOpen:r,onOpenChange:n,disableHoverableContent:s,delayDuration:l}=t,c=yu(un,t.__scopeTooltip),d=kl(e),[u,p]=m.useState(null),f=Dn(),h=m.useRef(0),v=s??c.disableHoverableContent,g=l??c.delayDuration,b=m.useRef(!1),[x,w]=tr({prop:i,defaultProp:r??!1,onChange:C=>{C?(c.onOpen(),document.dispatchEvent(new CustomEvent(Yc))):c.onClose(),n==null||n(C)},caller:un}),k=m.useMemo(()=>x?b.current?"delayed-open":"instant-open":"closed",[x]),_=m.useCallback(()=>{window.clearTimeout(h.current),h.current=0,b.current=!1,w(!0)},[w]),j=m.useCallback(()=>{window.clearTimeout(h.current),h.current=0,w(!1)},[w]),S=m.useCallback(()=>{window.clearTimeout(h.current),h.current=window.setTimeout(()=>{b.current=!0,w(!0),h.current=0},g)},[g,w]);return m.useEffect(()=>()=>{h.current&&(window.clearTimeout(h.current),h.current=0)},[]),o.jsx(cu,{...d,children:o.jsx(o1,{scope:e,contentId:f,open:x,stateAttribute:k,trigger:u,onTriggerChange:p,onTriggerEnter:m.useCallback(()=>{c.isOpenDelayedRef.current?S():_()},[c.isOpenDelayedRef,S,_]),onTriggerLeave:m.useCallback(()=>{v?j():(window.clearTimeout(h.current),h.current=0)},[j,v]),onOpen:_,onClose:j,disableHoverableContent:v,children:a})})};$f.displayName=un;var Qc="TooltipTrigger",Vf=m.forwardRef((t,e)=>{const{__scopeTooltip:a,...i}=t,r=Fn(Qc,a),n=yu(Qc,a),s=kl(a),l=m.useRef(null),c=mt(e,l,r.onTriggerChange),d=m.useRef(!1),u=m.useRef(!1),p=m.useCallback(()=>d.current=!1,[]);return m.useEffect(()=>()=>document.removeEventListener("pointerup",p),[p]),o.jsx(gl,{asChild:!0,...s,children:o.jsx(Xe.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...i,ref:c,onPointerMove:Le(t.onPointerMove,f=>{f.pointerType!=="touch"&&!u.current&&!n.isPointerInTransitRef.current&&(r.onTriggerEnter(),u.current=!0)}),onPointerLeave:Le(t.onPointerLeave,()=>{r.onTriggerLeave(),u.current=!1}),onPointerDown:Le(t.onPointerDown,()=>{r.open&&r.onClose(),d.current=!0,document.addEventListener("pointerup",p,{once:!0})}),onFocus:Le(t.onFocus,()=>{d.current||r.onOpen()}),onBlur:Le(t.onBlur,r.onClose),onClick:Le(t.onClick,r.onClose)})})});Vf.displayName=Qc;var xu="TooltipPortal",[r1,n1]=wl(xu,{forceMount:void 0}),Uf=t=>{const{__scopeTooltip:e,forceMount:a,children:i,container:r}=t,n=Fn(xu,e);return o.jsx(r1,{scope:e,forceMount:a,children:o.jsx(In,{present:a||n.open,children:o.jsx(nu,{asChild:!0,container:r,children:i})})})};Uf.displayName=xu;var or="TooltipContent",qf=m.forwardRef((t,e)=>{const a=n1(or,t.__scopeTooltip),{forceMount:i=a.forceMount,side:r="top",...n}=t,s=Fn(or,t.__scopeTooltip);return o.jsx(In,{present:i||s.open,children:s.disableHoverableContent?o.jsx(Gf,{side:r,...n,ref:e}):o.jsx(s1,{side:r,...n,ref:e})})}),s1=m.forwardRef((t,e)=>{const a=Fn(or,t.__scopeTooltip),i=yu(or,t.__scopeTooltip),r=m.useRef(null),n=mt(e,r),[s,l]=m.useState(null),{trigger:c,onClose:d}=a,u=r.current,{onPointerInTransitChange:p}=i,f=m.useCallback(()=>{l(null),p(!1)},[p]),h=m.useCallback((v,g)=>{const b=v.currentTarget,x={x:v.clientX,y:v.clientY},w=m1(x,b.getBoundingClientRect()),k=p1(x,w),_=h1(g.getBoundingClientRect()),j=f1([...k,..._]);l(j),p(!0)},[p]);return m.useEffect(()=>()=>f(),[f]),m.useEffect(()=>{if(c&&u){const v=b=>h(b,u),g=b=>h(b,c);return c.addEventListener("pointerleave",v),u.addEventListener("pointerleave",g),()=>{c.removeEventListener("pointerleave",v),u.removeEventListener("pointerleave",g)}}},[c,u,h,f]),m.useEffect(()=>{if(s){const v=g=>{const b=g.target,x={x:g.clientX,y:g.clientY},w=(c==null?void 0:c.contains(b))||(u==null?void 0:u.contains(b)),k=!g1(x,s);w?f():k&&(f(),d())};return document.addEventListener("pointermove",v),()=>document.removeEventListener("pointermove",v)}},[c,u,s,d,f]),o.jsx(Gf,{...t,ref:n})}),[l1,c1]=wl(un,{isInside:!1}),d1=Gg("TooltipContent"),Gf=m.forwardRef((t,e)=>{const{__scopeTooltip:a,children:i,"aria-label":r,onEscapeKeyDown:n,onPointerDownOutside:s,...l}=t,c=Fn(or,a),d=kl(a),{onClose:u}=c;return m.useEffect(()=>(document.addEventListener(Yc,u),()=>document.removeEventListener(Yc,u)),[u]),m.useEffect(()=>{if(c.trigger){const p=f=>{const h=f.target;h!=null&&h.contains(c.trigger)&&u()};return window.addEventListener("scroll",p,{capture:!0}),()=>window.removeEventListener("scroll",p,{capture:!0})}},[c.trigger,u]),o.jsx(su,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:n,onPointerDownOutside:s,onFocusOutside:p=>p.preventDefault(),onDismiss:u,children:o.jsxs(lu,{"data-state":c.stateAttribute,...d,...l,ref:e,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[o.jsx(d1,{children:i}),o.jsx(l1,{scope:a,isInside:!0,children:o.jsx(vx,{id:c.contentId,role:"tooltip",children:r||i})})]})})});qf.displayName=or;var Wf="TooltipArrow",u1=m.forwardRef((t,e)=>{const{__scopeTooltip:a,...i}=t,r=kl(a);return c1(Wf,a).isInside?null:o.jsx(du,{...r,...i,ref:e})});u1.displayName=Wf;function m1(t,e){const a=Math.abs(e.top-t.y),i=Math.abs(e.bottom-t.y),r=Math.abs(e.right-t.x),n=Math.abs(e.left-t.x);switch(Math.min(a,i,r,n)){case n:return"left";case r:return"right";case a:return"top";case i:return"bottom";default:throw new Error("unreachable")}}function p1(t,e,a=5){const i=[];switch(e){case"top":i.push({x:t.x-a,y:t.y+a},{x:t.x+a,y:t.y+a});break;case"bottom":i.push({x:t.x-a,y:t.y-a},{x:t.x+a,y:t.y-a});break;case"left":i.push({x:t.x+a,y:t.y-a},{x:t.x+a,y:t.y+a});break;case"right":i.push({x:t.x-a,y:t.y-a},{x:t.x-a,y:t.y+a});break}return i}function h1(t){const{top:e,right:a,bottom:i,left:r}=t;return[{x:r,y:e},{x:a,y:e},{x:a,y:i},{x:r,y:i}]}function g1(t,e){const{x:a,y:i}=t;let r=!1;for(let n=0,s=e.length-1;n<e.length;s=n++){const l=e[n],c=e[s],d=l.x,u=l.y,p=c.x,f=c.y;u>i!=f>i&&a<(p-d)*(i-u)/(f-u)+d&&(r=!r)}return r}function f1(t){const e=t.slice();return e.sort((a,i)=>a.x<i.x?-1:a.x>i.x?1:a.y<i.y?-1:a.y>i.y?1:0),b1(e)}function b1(t){if(t.length<=1)return t.slice();const e=[];for(let i=0;i<t.length;i++){const r=t[i];for(;e.length>=2;){const n=e[e.length-1],s=e[e.length-2];if((n.x-s.x)*(r.y-s.y)>=(n.y-s.y)*(r.x-s.x))e.pop();else break}e.push(r)}e.pop();const a=[];for(let i=t.length-1;i>=0;i--){const r=t[i];for(;a.length>=2;){const n=a[a.length-1],s=a[a.length-2];if((n.x-s.x)*(r.y-s.y)>=(n.y-s.y)*(r.x-s.x))a.pop();else break}a.push(r)}return a.pop(),e.length===1&&a.length===1&&e[0].x===a[0].x&&e[0].y===a[0].y?e:e.concat(a)}var v1=Ff,y1=$f,x1=Vf,w1=Uf,Hf=qf;const Kf=v1,k1=y1,_1=x1,Yf=m.forwardRef(({className:t,sideOffset:e=4,...a},i)=>o.jsx(w1,{children:o.jsx(Hf,{ref:i,sideOffset:e,className:y("z-[10000] overflow-hidden rounded-md border bg-popover px-3 py-2 text-[13px] font-bold tracking-wide text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:sli
468de-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...a})}));Yf.displayName=Hf.displayName;var vr=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(t){return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},S1={setTimeout:(t,e)=>setTimeout(t,e),clearTimeout:t=>clearTimeout(t),setInterval:(t,e)=>setInterval(t,e),clearInterval:t=>clearInterval(t)},ni,ru,Ng,C1=(Ng=class{constructor(){me(this,ni,S1);me(this,ru,!1)}setTimeoutProvider(t){X(this,ni,t)}setTimeout(t,e){return T(this,ni).setTimeout(t,e)}clearTimeout(t){T(this,ni).clearTimeout(t)}setInterval(t,e){return T(this,ni).setInterval(t,e)}clearInterval(t){T(this,ni).clearInterval(t)}},ni=new WeakMap,ru=new WeakMap,Ng),Vi=new C1;function T1(t){setTimeout(t,0)}var ao=typeof window>"u"||"Deno"in globalThis;function Bt(){}function j1(t,e){return typeof t=="function"?t(e):t}function Jc(t){return typeof t=="number"&&t>=0&&t!==1/0}function Qf(t,e){return Math.max(t+(e||0)-Date.now(),0)}function fi(t,e){return typeof t=="function"?t(e):t}function la(t,e){return typeof t=="function"?t(e):t}function Gm(t,e){const{type:a="all",exact:i,fetchStatus:r,predicate:n,queryKey:s,stale:l}=t;if(s){if(i){if(e.queryHash!==wu(s,e.options))return!1}else if(!mn(e.queryKey,s))return!1}if(a!=="all"){const c=e.isActive();if(a==="active"&&!c||a==="inactive"&&c)return!1}return!(typeof l=="boolean"&&e.isStale()!==l||r&&r!==e.state.fetchStatus||n&&!n(e))}function Wm(t,e){const{exact:a,status:i,predicate:r,mutationKey:n}=t;if(n){if(!e.options.mutationKey)return!1;if(a){if(io(e.options.mutationKey)!==io(n))return!1}else if(!mn(e.options.mutationKey,n))return!1}return!(i&&e.state.status!==i||r&&!r(e))}function wu(t,e){return((e==null?void 0:e.queryKeyHashFn)||io)(t)}function io(t){return JSON.stringify(t,(e,a)=>Xc(a)?Object.keys(a).sort().reduce((i,r)=>(i[r]=a[r],i),{}):a)}function mn(t,e){return t===e?!0:typeof t!=typeof e?!1:t&&e&&typeof t=="object"&&typeof e=="object"?Object.keys(e).every(a=>mn(t[a],e[a])):!1}var N1=Object.prototype.hasOwnProperty;function Jf(t,e){if(t===e)return t;const a=Hm(t)&&Hm(e);if(!a&&!(Xc(t)&&Xc(e)))return e;const r=(a?t:Object.keys(t)).length,n=a?e:Object.keys(e),s=n.length,l=a?new Array(s):{};let c=0;for(let d=0;d<s;d++){const u=a?d:n[d],p=t[u],f=e[u];if(p===f){l[u]=p,(a?d<r:N1.call(t,u))&&c++;continue}if(p===null||f===null||typeof p!="object"||typeof f!="object"){l[u]=f;continue}const h=Jf(p,f);l[u]=h,h===p&&c++}return r===s&&c===r?t:l}function Gs(t,e){if(!e||Object.keys(t).length!==Object.keys(e).length)return!1;for(const a in t)if(t[a]!==e[a])return!1;return!0}function Hm(t){return Array.isArray(t)&&t.length===Object.keys(t).length}function Xc(t){if(!Km(t))return!1;const e=t.constructor;if(e===void 0)return!0;const a=e.prototype;return!(!Km(a)||!a.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(t)!==Object.prototype)}function Km(t){return Object.prototype.toString.call(t)==="[object Object]"}function P1(t){return new Promise(e=>{Vi.setTimeout(e,t)})}function Zc(t,e,a){return typeof a.structuralSharing=="function"?a.structuralSharing(t,e):a.structuralSharing!==!1?Jf(t,e):e}function A1(t,e,a=0){const i=[...t,e];return a&&i.length>a?i.slice(1):i}function E1(t,e,a=0){const i=[e,...t];return a&&i.length>a?i.slice(0,-1):i}var ku=Symbol();function Xf(t,e){return!t.queryFn&&(e!=null&&e.initialPromise)?()=>e.initialPromise:!t.queryFn||t.queryFn===ku?()=>Promise.reject(new Error(`Missing queryFn: '${t.queryHash}'`)):t.queryFn}function Zf(t,e){return typeof t=="function"?t(...e):!!t}var Gi,si,Uo,Pg,I1=(Pg=class extends vr{constructor(){super();me(this,Gi);me(this,si);me(this,Uo);X(this,Uo,e=>{if(!ao&&window.addEventListener){const a=()=>e();return window.addEventListener("visibilitychange",a,!1),()=>{window.removeEventListener("visibilitychange",a)}}})}onSubscribe(){T(this,si)||this.setEventListener(T(this,Uo))}onUnsubscribe(){var e;this.hasListeners()||((e=T(this,si))==null||e.call(this),X(this,si,void 0))}setEventListener(e){var a;X(this,Uo,e),(a=T(this,si))==null||a.call(this),X(this,si,e(i=>{typeof i=="boolean"?this.setFocused(i):this.onFocus()}))}setFocused(e){T(this,Gi)!==e&&(X(this,Gi,e),this.onFocus())}onFocus(){const e=this.isFocused();
468this.listeners.forEach(a=>{a(e)})}isFocused(){var e;return typeof T(this,Gi)=="boolean"?T(this,Gi):((e=globalThis.document)==null?void 0:e.visibilityState)!=="hidden"}},Gi=new WeakMap,si=new WeakMap,Uo=new WeakMap,Pg),_u=new I1;function ed(){let t,e;const a=new Promise((r,n)=>{t=r,e=n});a.status="pending",a.catch(()=>{});function i(r){Object.assign(a,r),delete a.resolve,delete a.reject}return a.resolve=r=>{i({status:"fulfilled",value:r}),t(r)},a.reject=r=>{i({status:"rejected",reason:r}),e(r)},a}var D1=T1;function R1(){let t=[],e=0,a=l=>{l()},i=l=>{l()},r=D1;const n=l=>{e?t.push(l):r(()=>{a(l)})},s=()=>{const l=t;t=[],l.length&&r(()=>{i(()=>{l.forEach(c=>{a(c)})})})};return{batch:l=>{let c;e++;try{c=l()}finally{e--,e||s()}return c},batchCalls:l=>(...c)=>{n(()=>{l(...c)})},schedule:n,setNotifyFunction:l=>{a=l},setBatchNotifyFunction:l=>{i=l},setScheduler:l=>{r=l}}}var yt=R1(),qo,li,Go,Ag,L1=(Ag=class extends vr{constructor(){super();me(this,qo,!0);me(this,li);me(this,Go);X(this,Go,e=>{if(!ao&&window.addEventListener){const a=()=>e(!0),i=()=>e(!1);return window.addEventListener("online",a,!1),window.addEventListener("offline",i,!1),()=>{window.removeEventListener("online",a),window.removeEventListener("offline",i)}}})}onSubscribe(){T(this,li)||this.setEventListener(T(this,Go))}onUnsubscribe(){var e;this.hasListeners()||((e=T(this,li))==null||e.call(this),X(this,li,void 0))}setEventListener(e){var a;X(this,Go,e),(a=T(this,li))==null||a.call(this),X(this,li,e(this.setOnline.bind(this)))}setOnline(e){T(this,qo)!==e&&(X(this,qo,e),this.listeners.forEach(i=>{i(e)}))}isOnline(){return T(this,qo)}},qo=new WeakMap,li=new WeakMap,Go=new WeakMap,Ag),Ws=new L1;function O1(t){return Math.min(1e3*2**t,3e4)}function eb(t){return(t??"online")==="online"?Ws.isOnline():!0}var td=class extends Error{constructor(t){super("CancelledError"),this.revert=t==null?void 0:t.revert,this.silent=t==null?void 0:t.silent}};function tb(t){let e=!1,a=0,i;const r=ed(),n=()=>r.status!=="pending",s=g=>{var b;if(!n()){const x=new td(g);f(x),(b=t.onCancel)==null||b.call(t,x)}},l=()=>{e=!0},c=()=>{e=!1},d=()=>_u.isFocused()&&(t.networkMode==="always"||Ws.isOnline())&&t.canRun(),u=()=>eb(t.networkMode)&&t.canRun(),p=g=>{n()||(i==null||i(),r.resolve(g))},f=g=>{n()||(i==null||i(),r.reject(g))},h=()=>new Promise(g=>{var b;i=x=>{(n()||d())&&g(x)},(b=t.onPause)==null||b.call(t)}).then(()=>{var g;i=void 0,n()||(g=t.onContinue)==null||g.call(t)}),v=()=>{if(n())return;let g;const b=a===0?t.initialPromise:void 0;try{g=b??t.fn()}catch(x){g=Promise.reject(x)}Promise.resolve(g).then(p).catch(x=>{var S;if(n())return;const w=t.retry??(ao?0:3),k=t.retryDelay??O1,_=typeof k=="function"?k(a,x):k,j=w===!0||typeof w=="number"&&a<w||typeof w=="function"&&w(a,x);if(e||!j){f(x);return}a++,(S=t.onFail)==null||S.call(t,a,x),P1(_).then(()=>d()?void 0:h()).then(()=>{e?f(x):v()})})};return{promise:r,status:()=>r.status,cancel:s,continue:()=>(i==null||i(),r),cancelRetry:l,continueRetry:c,canStart:u,start:()=>(u()?v():h().then(v),r)}}var Wi,Eg,ab=(Eg=class{constructor(){me(this,Wi)}destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Jc(this.gcTime)&&X(this,Wi,Vi.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(t){this.gcTime=Math.max(this.gcTime||0,t??(ao?1/0:5*60*1e3))}clearGcTimeout(){T(this,Wi)&&(Vi.clearTimeout(T(this,Wi)),X(this,Wi,void 0))}},Wi=new WeakMap,Eg),Hi,Wo,sa,Ki,St,jn,Yi,ya,Ma,Ig,M1=(Ig=class extends ab{constructor(e){super();me(this,ya);me(this,Hi);me(this,Wo);me(this,sa);me(this,Ki);me(this,St);me(this,jn);me(this,Yi);X(this,Yi,!1),X(this,jn,e.defaultOptions),this.setOptions(e.options),this.observers=[],X(this,Ki,e.client),X(this,sa,T(this,Ki).getQueryCache()),this.queryKey=e.queryKey,this.queryHash=e.queryHash,X(this,Hi,Qm(this.options)),this.state=e.state??T(this,Hi),this.scheduleGc()}get meta(){return this.options.meta}get promise(){var e;return(e=T(this,St))==null?void 0:e.promise}setOptions(e){if(this.options={...T(this,jn),...e},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){const a=Qm(this.options);a.data!==void 0&&(this.setState(Ym(a.data,a.dataUpdatedAt)),X(this,Hi,a))}}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&T(this,sa).remove(this)}setData(e,a){const i=Zc(this.state.data,e,this.options);return Te(this,ya,Ma).call(this,{data:i,type:"success",dataUpdatedAt:a==null?void 0:a.updatedAt,manual:a==null?void 0:a.manual}),i}setState(e,a){Te(this,ya,Ma).call(this,{type:"setState",state:e,setStateOptions:a})}cancel(e){var i,r;const a=(i=T(this,St))==null?void 0:i.promise;return(r=T(this,St))==null||r.cancel(e),a?a.then(Bt).catch(Bt):Prom
468ise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(T(this,Hi))}isActive(){return this.observers.some(e=>la(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===ku||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>fi(e.options.staleTime,this)==="static"):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e==="static"?!1:this.state.isInvalidated?!0:!Qf(this.state.dataUpdatedAt,e)}onFocus(){var a;const e=this.observers.find(i=>i.shouldFetchOnWindowFocus());e==null||e.refetch({cancelRefetch:!1}),(a=T(this,St))==null||a.continue()}onOnline(){var a;const e=this.observers.find(i=>i.shouldFetchOnReconnect());e==null||e.refetch({cancelRefetch:!1}),(a=T(this,St))==null||a.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),T(this,sa).notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(a=>a!==e),this.observers.length||(T(this,St)&&(T(this,Yi)?T(this,St).cancel({revert:!0}):T(this,St).cancelRetry()),this.scheduleGc()),T(this,sa).notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||Te(this,ya,Ma).call(this,{type:"invalidate"})}async fetch(e,a){var c,d,u,p,f,h,v,g,b,x,w,k;if(this.state.fetchStatus!=="idle"&&((c=T(this,St))==null?void 0:c.status())!=="rejected"){if(this.state.data!==void 0&&(a!=null&&a.cancelRefetch))this.cancel({silent:!0});else if(T(this,St))return T(this,St).continueRetry(),T(this,St).promise}if(e&&this.setOptions(e),!this.options.queryFn){const _=this.observers.find(j=>j.options.queryFn);_&&this.setOptions(_.options)}const i=new AbortController,r=_=>{Object.defineProperty(_,"signal",{enumerable:!0,get:()=>(X(this,Yi,!0),i.signal)})},n=()=>{const _=Xf(this.options,a),S=(()=>{const C={client:T(this,Ki),queryKey:this.queryKey,meta:this.meta};return r(C),C})();return X(this,Yi,!1),this.options.persister?this.options.persister(_,S,this):_(S)},l=(()=>{const _={fetchOptions:a,options:this.options,queryKey:this.queryKey,client:T(this,Ki),state:this.state,fetchFn:n};return r(_),_})();(d=this.options.behavior)==null||d.onFetch(l,this),X(this,Wo,this.state),(this.state.fetchStatus==="idle"||this.state.fetchMeta!==((u=l.fetchOptions)==null?void 0:u.meta))&&Te(this,ya,Ma).call(this,{type:"fetch",meta:(p=l.fetchOptions)==null?void 0:p.meta}),X(this,St,tb({initialPromise:a==null?void 0:a.initialPromise,fn:l.fetchFn,onCancel:_=>{_ instanceof td&&_.revert&&this.setState({...T(this,Wo),fetchStatus:"idle"}),i.abort()},onFail:(_,j)=>{Te(this,ya,Ma).call(this,{type:"failed",failureCount:_,error:j})},onPause:()=>{Te(this,ya,Ma).call(this,{type:"pause"})},onContinue:()=>{Te(this,ya,Ma).call(this,{type:"continue"})},retry:l.options.retry,retryDelay:l.options.retryDelay,networkMode:l.options.networkMode,canRun:()=>!0}));try{const _=await T(this,St).start();if(_===void 0)throw new Error(`${this.queryHash} data is undefined`);return this.setData(_),(h=(f=T(this,sa).config).onSuccess)==null||h.call(f,_,this),(g=(v=T(this,sa).config).onSettled)==null||g.call(v,_,this.state.error,this),_}catch(_){if(_ instanceof td){if(_.silent)return T(this,St).promise;if(_.revert){if(this.state.data===void 0)throw _;return this.state.data}}throw Te(this,ya,Ma).call(this,{type:"error",error:_}),(x=(b=T(this,sa).config).onError)==null||x.call(b,_,this),(k=(w=T(this,sa).config).onSettled)==null||k.call(w,this.state.data,_,this),_}finally{this.scheduleGc()}}},Hi=new WeakMap,Wo=new WeakMap,sa=new WeakMap,Ki=new WeakMap,St=new WeakMap,jn=new WeakMap,Yi=new WeakMap,ya=new WeakSet,Ma=function(e){const a=i=>{switch(e.type){case"failed":return{...i,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...i,fetchStatus:"paused"};case"continue":return{...i,fetchStatus:"fetching"};case"fetch":return{...i,...ib(i.data,this.options),fetchMeta:e.meta??null};case"success":const r={...i,...Ym(e.data,e.dataUpdatedAt),dataUpdateCount:i.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return X(this,Wo,e.manual?r:void 0),r;case"error":const n=e.error;
468return{...i,error:n,errorUpdateCount:i.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:i.fetchFailureCount+1,fetchFailureReason:n,fetchStatus:"idle",status:"error"};case"invalidate":return{...i,isInvalidated:!0};case"setState":return{...i,...e.state}}};this.state=a(this.state),yt.batch(()=>{this.observers.forEach(i=>{i.onQueryUpdate()}),T(this,sa).notify({query:this,type:"updated",action:e})})},Ig);function ib(t,e){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:eb(e.networkMode)?"fetching":"paused",...t===void 0&&{error:null,status:"pending"}}}function Ym(t,e){return{data:t,dataUpdatedAt:e??Date.now(),error:null,isInvalidated:!1,status:"success"}}function Qm(t){const e=typeof t.initialData=="function"?t.initialData():t.initialData,a=e!==void 0,i=a?typeof t.initialDataUpdatedAt=="function"?t.initialDataUpdatedAt():t.initialDataUpdatedAt:0;return{data:e,dataUpdateCount:0,dataUpdatedAt:a?i??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:a?"success":"pending",fetchStatus:"idle"}}var Kt,Pe,Nn,Mt,Qi,Ho,Fa,ci,Pn,Ko,Yo,Ji,Xi,di,Qo,Fe,Br,ad,id,od,rd,nd,sd,ld,ob,Dg,z1=(Dg=class extends vr{constructor(e,a){super();me(this,Fe);me(this,Kt);me(this,Pe);me(this,Nn);me(this,Mt);me(this,Qi);me(this,Ho);me(this,Fa);me(this,ci);me(this,Pn);me(this,Ko);me(this,Yo);me(this,Ji);me(this,Xi);me(this,di);me(this,Qo,new Set);this.options=a,X(this,Kt,e),X(this,ci,null),X(this,Fa,ed()),this.bindMethods(),this.setOptions(a)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(T(this,Pe).addObserver(this),Jm(T(this,Pe),this.options)?Te(this,Fe,Br).call(this):this.updateResult(),Te(this,Fe,rd).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return cd(T(this,Pe),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return cd(T(this,Pe),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,Te(this,Fe,nd).call(this),Te(this,Fe,sd).call(this),T(this,Pe).removeObserver(this)}setOptions(e){const a=this.options,i=T(this,Pe);if(this.options=T(this,Kt).defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof la(this.options.enabled,T(this,Pe))!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");Te(this,Fe,ld).call(this),T(this,Pe).setOptions(this.options),a._defaulted&&!Gs(this.options,a)&&T(this,Kt).getQueryCache().notify({type:"observerOptionsUpdated",query:T(this,Pe),observer:this});const r=this.hasListeners();r&&Xm(T(this,Pe),i,this.options,a)&&Te(this,Fe,Br).call(this),this.updateResult(),r&&(T(this,Pe)!==i||la(this.options.enabled,T(this,Pe))!==la(a.enabled,T(this,Pe))||fi(this.options.staleTime,T(this,Pe))!==fi(a.staleTime,T(this,Pe)))&&Te(this,Fe,ad).call(this);const n=Te(this,Fe,id).call(this);r&&(T(this,Pe)!==i||la(this.options.enabled,T(this,Pe))!==la(a.enabled,T(this,Pe))||n!==T(this,di))&&Te(this,Fe,od).call(this,n)}getOptimisticResult(e){const a=T(this,Kt).getQueryCache().build(T(this,Kt),e),i=this.createResult(a,e);return F1(this,i)&&(X(this,Mt,i),X(this,Ho,this.options),X(this,Qi,T(this,Pe).state)),i}getCurrentResult(){return T(this,Mt)}trackResult(e,a){return new Proxy(e,{get:(i,r)=>(this.trackProp(r),a==null||a(r),r==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&T(this,Fa).status==="pending"&&T(this,Fa).reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(i,r))})}trackProp(e){T(this,Qo).add(e)}getCurrentQuery(){return T(this,Pe)}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const a=T(this,Kt).defaultQueryOptions(e),i=T(this,Kt).getQueryCache().build(T(this,Kt),a);return i.fetch().then(()=>this.createResult(i,a))}fetch(e){return Te(this,Fe,Br).call(this,{...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),T(this,Mt)))}createResult(e,a){var P;const i=T(this,Pe),r=this.options,n=T(this,Mt),s=T(this,Qi),l=T(this,Ho),d=e!==i?e.state:T(this,Nn),{state:u}=e;let p={...u},f=!1,h;if(a._optimisticResults){const E=this.hasListeners(),L=!E&&Jm(e,a),A=E&&Xm(e,i,a,r);(L||A)&&(p={...p,...ib(u.data,e.options)}),a._optimisticResults==="isRestoring"&&(p.fetchStatus="idle")}let{error:v,errorUpdatedAt:g,status:b}=p;h=p.data;let x=!1;if(a.placeholderData!==void 0&&h===void 0&&b==="pending"){let E;n!=null&&n.isPlaceholderData&&a.placeholderData===(l==null?void 0:l.placeholderData)?(E=n.data,x=!0):E=typeof a.placeholderData=="function"?a.placeholderData((P=T(this,Yo))==null?void 0:P.state.data,T(this,Yo)):a.placeholderData,E!==void 0&&(b="success",h=Zc(n==null?void 0:n.data,E,a),f=!0)}if(a.select&&h!==void 0&&!x)if(n&&h===(s==null?void 0:s.data)&&a.select===T(this,Pn))h=T(this,Ko);else try{X(this,Pn,a.select),h=a.select(h),h=Zc(n==null?void 0:n.data,h,a),X(this,Ko,h),X(this,ci,null)}catch(E){X(this,ci,E)}T(this,ci)&&(v=T(this,ci),h=T(this,Ko),g=Date.now(),b="error");const w=p.fetchStatus==="fetching",k=b==="pending",_=b==="error",j=k&&w,S=h!==void 0,N={status:b,fetchStatus:p.fetchStatus,isPending:k,isSuccess:b==="success",isError:_,isInitialLoading:j,isLoading:j,data:h,dataUpdatedAt:p.dataUpdatedAt,error:v,errorUpdatedAt:g,failureCount:p.fetchFailureCount,failureReason:p.fetchFailureReason,errorUpdate
vendor: 4,182 bytes, line 468
468Count:p.errorUpdateCount,isFetched:p.dataUpdateCount>0||p.errorUpdateCount>0,isFetchedAfterMount:p.dataUpdateCount>d.dataUpdateCount||p.errorUpdateCount>d.errorUpdateCount,isFetching:w,isRefetching:w&&!k,isLoadingError:_&&!S,isPaused:p.fetchStatus==="paused",isPlaceholderData:f,isRefetchError:_&&S,isStale:Su(e,a),refetch:this.refetch,promise:T(this,Fa),isEnabled:la(a.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){const E=I=>{N.status==="error"?I.reject(N.error):N.data!==void 0&&I.resolve(N.data)},L=()=>{const I=X(this,Fa,N.promise=ed());E(I)},A=T(this,Fa);switch(A.status){case"pending":e.queryHash===i.queryHash&&E(A);break;case"fulfilled":(N.status==="error"||N.data!==A.value)&&L();break;case"rejected":(N.status!=="error"||N.error!==A.reason)&&L();break}}return N}updateResult(){const e=T(this,Mt),a=this.createResult(T(this,Pe),this.options);if(X(this,Qi,T(this,Pe).state),X(this,Ho,this.options),T(this,Qi).data!==void 0&&X(this,Yo,T(this,Pe)),Gs(a,e))return;X(this,Mt,a);const i=()=>{if(!e)return!0;const{notifyOnChangeProps:r}=this.options,n=typeof r=="function"?r():r;if(n==="all"||!n&&!T(this,Qo).size)return!0;const s=new Set(n??T(this,Qo));return this.options.throwOnError&&s.add("error"),Object.keys(T(this,Mt)).some(l=>{const c=l;return T(this,Mt)[c]!==e[c]&&s.has(c)})};Te(this,Fe,ob).call(this,{listeners:i()})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&Te(this,Fe,rd).call(this)}},Kt=new WeakMap,Pe=new WeakMap,Nn=new WeakMap,Mt=new WeakMap,Qi=new WeakMap,Ho=new WeakMap,Fa=new WeakMap,ci=new WeakMap,Pn=new WeakMap,Ko=new WeakMap,Yo=new WeakMap,Ji=new WeakMap,Xi=new WeakMap,di=new WeakMap,Qo=new WeakMap,Fe=new WeakSet,Br=function(e){Te(this,Fe,ld).call(this);let a=T(this,Pe).fetch(this.options,e);return e!=null&&e.throwOnError||(a=a.catch(Bt)),a},ad=function(){Te(this,Fe,nd).call(this);const e=fi(this.options.staleTime,T(this,Pe));if(ao||T(this,Mt).isStale||!Jc(e))return;const i=Qf(T(this,Mt).dataUpdatedAt,e)+1;X(this,Ji,Vi.setTimeout(()=>{T(this,Mt).isStale||this.updateResult()},i))},id=function(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(T(this,Pe)):this.options.refetchInterval)??!1},od=function(e){Te(this,Fe,sd).call(this),X(this,di,e),!(ao||la(this.options.enabled,T(this,Pe))===!1||!Jc(T(this,di))||T(this,di)===0)&&X(this,Xi,Vi.setInterval(()=>{(this.options.refetchIntervalInBackground||_u.isFocused())&&Te(this,Fe,Br).call(this)},T(this,di)))},rd=function(){Te(this,Fe,ad).call(this),Te(this,Fe,od).call(this,Te(this,Fe,id).call(this))},nd=function(){T(this,Ji)&&(Vi.clearTimeout(T(this,Ji)),X(this,Ji,void 0))},sd=function(){T(this,Xi)&&(Vi.clearInterval(T(this,Xi)),X(this,Xi,void 0))},ld=function(){const e=T(this,Kt).getQueryCache().build(T(this,Kt),this.options);if(e===T(this,Pe))return;const a=T(this,Pe);X(this,Pe,e),X(this,Nn,e.state),this.hasListeners()&&(a==null||a.removeObserver(this),e.addObserver(this))},ob=function(e){yt.batch(()=>{e.listeners&&this.listeners.forEach(a=>{a(T(this,Mt))}),T(this,Kt).getQueryCache().notify({query:T(this,Pe),type:"observerResultsUpdated"})})},Dg);function B1(t,e){return la(e.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&e.retryOnMount===!1)}function Jm(t,e){return B1(t,e)||t.state.data!==void 0&&cd(t,e,e.refetchOnMount)}function cd(t,e,a){if(la(e.enabled,t)!==!1&&fi(e.staleTime,t)!=="static"){const i=typeof a=="function"?a(t):a;return i==="always"||i!==!1&&Su(t,e)}return!1}function Xm(t,e,a,i){return(t!==e||la(i.enabled,t)===!1)&&(!a.suspense||t.state.status!=="error")&&Su(t,a)}function Su(t,e){return la(e.enabled,t)!==!1&&t.isStaleByTime(fi(e.staleTime,t))}function F1(t,e){return!Gs(t.getCurrentResult(),e)}function Zm(t){return{onFetch:(e,a)=>{var u,p,f,h,v;const i=e.options,r=(f=(p=(u=e.fetchOptions)==null?void 0:u.meta)==null?void 0:p.fetchMore)==null?void 0:f.direction,n=((h=e.state.data)==null?void 0:h.pages)||[],s=((v=e.state.data)==null?void 0:v.pageParams)||[];let l={pages:[],pageParams:[]},c=0;const d=async()=>{let g=!1;const b=k=>{Object.defineProperty(k,"signal",{enumerable:!0,get:()=>(e.signal.aborted?g=!0:e.signal.addEventListener("abort",()=>{g=!0}),e.signal)}
468)},x=Xf(e.options,e.fetchOptions),w=async(k,_,j)=>{if(g)return Promise.reject();if(_==null&&k.pages.length)return Promise.resolve(k);const C=(()=>{const L={client:e.client,queryKey:e.queryKey,pageParam:_,direction:j?"backward":"forward",meta:e.options.meta};return b(L),L})(),N=await x(C),{maxPages:P}=e.options,E=j?E1:A1;return{pages:E(k.pages,N,P),pageParams:E(k.pageParams,_,P)}};if(r&&n.length){const k=r==="backward",_=k?$1:ep,j={pages:n,pageParams:s},S=_(i,j);l=await w(j,S,k)}else{const k=t??n.length;do{const _=c===0?s[0]??i.initialPageParam:ep(i,l);if(c>0&&_==null)break;l=await w(l,_),c++}while(c<k)}return l};e.options.persister?e.fetchFn=()=>{var g,b;return(b=(g=e.options).persister)==null?void 0:b.call(g,d,{client:e.client,queryKey:e.queryKey,meta:e.options.meta,signal:e.signal},a)}:e.fetchFn=d}}}function ep(t,{pages:e,pageParams:a}){const i=e.length-1;return e.length>0?t.getNextPageParam(e[i],e,a[i],a):void 0}function $1(t,{pages:e,pageParams:a}){var i;return e.length>0?(i=t.getPreviousPageParam)==null?void 0:i.call(t,e[0],e,a[0],a):void 0}var An,Na,zt,Zi,Pa,ai,Rg,V1=(Rg=class extends ab{constructor(e){super();me(this,Pa);me(this,An);me(this,Na);me(this,zt);me(this,Zi);X(this,An,e.client),this.mutationId=e.mutationId,X(this,zt,e.mutationCache),X(this,Na,[]),this.state=e.state||rb(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){T(this,Na).includes(e)||(T(this,Na).push(e),this.clearGcTimeout(),T(this,zt).notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){X(this,Na,T(this,Na).filter(a=>a!==e)),this.scheduleGc(),T(this,zt).notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){T(this,Na).length||(this.state.status==="pending"?this.scheduleGc():T(this,zt).remove(this))}continue(){var e;return((e=T(this,Zi))==null?void 0:e.continue())??this.execute(this.state.variables)}async execute(e){var s,l,c,d,u,p,f,h,v,g,b,x,w,k,_,j,S,C,N,P;const a=()=>{Te(this,Pa,ai).call(this,{type:"continue"})},i={client:T(this,An),meta:this.options.meta,mutationKey:this.options.mutationKey};X(this,Zi,tb({fn:()=>this.options.mutationFn?this.options.mutationFn(e,i):Promise.reject(new Error("No mutationFn found")),onFail:(E,L)=>{Te(this,Pa,ai).call(this,{type:"failed",failureCount:E,error:L})},onPause:()=>{Te(this,Pa,ai).call(this,{type:"pause"})},onContinue:a,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>T(this,zt).canRun(this)}));const r=this.state.status==="pending",n=!T(this,Zi).canStart();try{if(r)a();else{Te(this,Pa,ai).call(this,{type:"pending",variables:e,isPaused:n}),await((l=(s=T(this,zt).config).onMutate)==null?void 0:l.call(s,e,this,i));const L=await((d=(c=this.options).onMutate)==null?void 0:d.call(c,e,i));L!==this.state.context&&Te(this,Pa,ai).call(this,{type:"pending",context:L,variables:e,isPaused:n})}const E=await T(this,Zi).start();return await((p=(u=T(this,zt).config).onSuccess)==null?void 0:p.call(u,E,e,this.state.context,this,i)),await((h=(f=this.options).onSuccess)==null?void 0:h.call(f,E,e,this.state.context,i)),await((g=(v=T(this,zt).config).onSettled)==null?void 0:g.call(v,E,null,this.state.variables,this.state.context,this,i)),await((x=(b=this.options).onSettled)==null?void 0:x.call(b,E,null,e,this.state.context,i)),Te(this,Pa,ai).call(this,{type:"success",data:E}),E}catch(E){try{throw await((k=(w=T(this,zt).config).onError)==null?void 0:k.call(w,E,e,this.state.context,this,i)),await((j=(_=this.options).onError)==null?void 0:j.call(_,E,e,this.state.context,i)),await((C=(S=T(this,zt).config).onSettled)==null?void 0:C.call(S,void 0,E,this.state.variables,this.state.context,this,i)),await((P=(N=this.options).onSettled)==null?void 0:P.call(N,void 0,E,e,this.state.context,i)),E}finally{Te(this,Pa,ai).call(this,{type:"error",error:E})}}finally{T(this,zt).runNext(this)}}},An=new WeakMap,Na=new WeakMap,zt=new WeakMap,Zi=new WeakMap,Pa=new WeakSet,ai=function(e){const a=i=>{switch(e.type){case"failed":return{...i,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...i,isPaused:!0};case"continue":return{...i,isPaused:!1};
vendor: 1,027 bytes, line 468
468case"pending":return{...i,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...i,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...i,data:void 0,error:e.error,failureCount:i.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}};this.state=a(this.state),yt.batch(()=>{T(this,Na).forEach(i=>{i.onMutationUpdate(e)}),T(this,zt).notify({mutation:this,type:"updated",action:e})})},Rg);function rb(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}var $a,xa,En,Lg,U1=(Lg=class extends vr{constructor(e={}){super();me(this,$a);me(this,xa);me(this,En);this.config=e,X(this,$a,new Set),X(this,xa,new Map),X(this,En,0)}build(e,a,i){const r=new V1({client:e,mutationCache:this,mutationId:++Xn(this,En)._,options:e.defaultMutationOptions(a),state:i}
468);return this.add(r),r}add(e){T(this,$a).add(e);const a=os(e);if(typeof a=="string"){const i=T(this,xa).get(a);i?i.push(e):T(this,xa).set(a,[e])}this.notify({type:"added",mutation:e})}remove(e){if(T(this,$a).delete(e)){const a=os(e);if(typeof a=="string"){const i=T(this,xa).get(a);if(i)if(i.length>1){const r=i.indexOf(e);r!==-1&&i.splice(r,1)}else i[0]===e&&T(this,xa).delete(a)}}this.notify({type:"removed",mutation:e})}canRun(e){const a=os(e);if(typeof a=="string"){const i=T(this,xa).get(a),r=i==null?void 0:i.find(n=>n.state.status==="pending");return!r||r===e}else return!0}runNext(e){var i;const a=os(e);if(typeof a=="string"){const r=(i=T(this,xa).get(a))==null?void 0:i.find(n=>n!==e&&n.state.isPaused);return(r==null?void 0:r.continue())??Promise.resolve()}else return Promise.resolve()}clear(){yt.batch(()=>{T(this,$a).forEach(e=>{this.notify({type:"removed",mutation:e})}),T(this,$a).clear(),T(this,xa).clear()})}getAll(){return Array.from(T(this,$a))}find(e){const a={exact:!0,...e};return this.getAll().find(i=>Wm(a,i))}findAll(e={}){return this.getAll().filter(a=>Wm(e,a))}notify(e){yt.batch(()=>{this.listeners.forEach(a=>{a(e)})})}resumePausedMutations(){const e=this.getAll().filter(a=>a.state.isPaused);return yt.batch(()=>Promise.all(e.map(a=>a.continue().catch(Bt))))}},$a=new WeakMap,xa=new WeakMap,En=new WeakMap,Lg);function os(t){var e;return(e=t.options.scope)==null?void 0:e.id}var Va,ui,Yt,Ua,Ka,Ds,dd,Og,q1=(Og=class extends vr{constructor(a,i){super();me(this,Ka);me(this,Va);me(this,ui);me(this,Yt);me(this,Ua);X(this,Va,a),this.setOptions(i),this.bindMethods(),Te(this,Ka,Ds).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(a){var r;const i=this.options;this.options=T(this,Va).defaultMutationOptions(a),Gs(this.options,i)||T(this,Va).getMutationCache().notify({type:"observerOptionsUpdated",mutation:T(this,Yt),observer:this}),i!=null&&i.mutationKey&&this.options.mutationKey&&io(i.mutationKey)!==io(this.options.mutationKey)?this.reset():((r=T(this,Yt))==null?void 0:r.state.status)==="pending"&&T(this,Yt).setOptions(this.options)}onUnsubscribe(){var a;this.hasListeners()||(a=T(this,Yt))==null||a.removeObserver(this)}onMutationUpdate(a){Te(this,Ka,Ds).call(this),Te(this,Ka,dd).call(this,a)}getCurrentResult(){return T(this,ui)}reset(){var a;(a=T(this,Yt))==null||a.removeObserver(this),X(this,Yt,void 0),Te(this,Ka,Ds).call(this),Te(this,Ka,dd).call(this)}mutate(a,i){var r;return X(this,Ua,i),(r=T(this,Yt))==null||r.removeObserver(this),X(this,Yt,T(this,Va).getMutationCache().build(T(this,Va),this.options)),T(this,Yt).addObserver(this),T(this,Yt).execute(a)}},Va=new WeakMap,ui=new WeakMap,Yt=new WeakMap,Ua=new WeakMap,Ka=new WeakSet,Ds=function(){var i;const a=((i=T(this,Yt))==null?void 0:i.state)??rb();X(this,ui,{...a,isPending:a.status==="pending",isSuccess:a.status==="success",isError:a.status==="error",isIdle:a.status==="idle",mutate:this.mutate,reset:this.reset})},dd=function(a){yt.batch(()=>{var i,r,n,s,l,c,d,u;
468if(T(this,Ua)&&this.hasListeners()){const p=T(this,ui).variables,f=T(this,ui).context,h={client:T(this,Va),meta:this.options.meta,mutationKey:this.options.mutationKey};(a==null?void 0:a.type)==="success"?((r=(i=T(this,Ua)).onSuccess)==null||r.call(i,a.data,p,f,h),(s=(n=T(this,Ua)).onSettled)==null||s.call(n,a.data,null,p,f,h)):(a==null?void 0:a.type)==="error"&&((c=(l=T(this,Ua)).onError)==null||c.call(l,a.error,p,f,h),(u=(d=T(this,Ua)).onSettled)==null||u.call(d,void 0,a.error,p,f,h))}this.listeners.forEach(p=>{p(T(this,ui))})})},Og),Aa,Mg,G1=(Mg=class extends vr{constructor(e={}){super();me(this,Aa);this.config=e,X(this,Aa,new Map)}build(e,a,i){const r=a.queryKey,n=a.queryHash??wu(r,a);let s=this.get(n);return s||(s=new M1({client:e,queryKey:r,queryHash:n,options:e.defaultQueryOptions(a),state:i,defaultOptions:e.getQueryDefaults(r)}),this.add(s)),s}add(e){T(this,Aa).has(e.queryHash)||(T(this,Aa).set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const a=T(this,Aa).get(e.queryHash);a&&(e.destroy(),a===e&&T(this,Aa).delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){yt.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return T(this,Aa).get(e)}getAll(){return[...T(this,Aa).values()]}find(e){const a={exact:!0,...e};return this.getAll().find(i=>Gm(a,i))}findAll(e={}){const a=this.getAll();return Object.keys(e).length>0?a.filter(i=>Gm(e,i)):a}notify(e){yt.batch(()=>{this.listeners.forEach(a=>{a(e)})})}onFocus(){yt.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){yt.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},Aa=new WeakMap,Mg),nt,mi,pi,Jo,Xo,hi,Zo,er,zg,W1=(zg=class{constructor(t={}){me(this,nt);me(this,mi);me(this,pi);me(this,Jo);me(this,Xo);me(this,hi);me(this,Zo);me(this,er);X(this,nt,t.queryCache||new G1),X(this,mi,t.mutationCache||new U1),X(this,pi,t.defaultOptions||{}),X(this,Jo,new Map),X(this,Xo,new Map),X(this,hi,0)}mount(){Xn(this,hi)._++,T(this,hi)===1&&(X(this,Zo,_u.subscribe(async t=>{t&&(await this.resumePausedMutations(),T(this,nt).onFocus())})),X(this,er,Ws.subscribe(async t=>{t&&(await this.resumePausedMutations(),T(this,nt).onOnline())})))}unmount(){var t,e;Xn(this,hi)._--,T(this,hi)===0&&((t=T(this,Zo))==null||t.call(this),X(this,Zo,void 0),(e=T(this,er))==null||e.call(this),X(this,er,void 0))}isFetching(t){return T(this,nt).findAll({...t,fetchStatus:"fetching"}).length}isMutating(t){return T(this,mi).findAll({...t,status:"pending"}).length}getQueryData(t){var a;const e=this.defaultQueryOptions({queryKey:t});return(a=T(this,nt).get(e.queryHash))==null?void 0:a.state.data}ensureQueryData(t){const e=this.defaultQueryOptions(t),a=T(this,nt).build(this,e),i=a.state.data;return i===void 0?this.fetchQuery(t):(t.revalidateIfStale&&a.isStaleByTime(fi(e.staleTime,a))&&this.prefetchQuery(e),Promise.resolve(i))}getQueriesData(t){return T(this,nt).findAll(t).map(({queryKey:e,state:a})=>{const i=a.data;return[e,i]})}setQueryData(t,e,a){const i=this.defaultQueryOptions({queryKey:t}),r=T(this,nt).get(i.queryHash),n=r==null?void 0:r.state.data,s=j1(e,n);if(s!==void 0)return T(this,nt).build(this,i).setData(s,{...a,manual:!0})}setQueriesData(t,e,a){return yt.batch(()=>T(this,nt).findAll(t).map(({queryKey:i})=>[i,this.setQueryData(i,e,a)]))}getQueryState(t){var a;const e=this.defaultQueryOptions({queryKey:t});return(a=T(this,nt).get(e.queryHash))==null?void 0:a.state}removeQueries(t){const e=T(this,nt);yt.batch(()=>{e.findAll(t).forEach(a=>{e.remove(a)})})}resetQueries(t,e){const a=T(this,nt);return yt.batch(()=>(a.findAll(t).forEach(i=>{i.reset()}),this.refetchQueries({type:"active",...t},e)))}cancelQueries(t,e={}){const a={revert:!0,...e},i=yt.batch(()=>T(this,nt).findAll(t).map(r=>r.cancel(a)));return Promise.all(i).then(Bt).catch(Bt)}invalidateQueries(t,e={}){return yt.batch(()=>(T(this,nt).findAll(t).forEach(a=>{a.invalidate()}),(t==null?void 0:t.refetchType)==="none"?Promise.resolve():this.refetchQueries({...t,type:(t==null?void 0:t.refetchType)??(t==null?void 0:t.type)??"active"},e)))}refetchQueries(t,e={}){const a={...e,cancelRefetch:e.cancelRefetch??!0},i=yt.batch(()=>T(this,nt).findAll(t).filter(r=>!r.isDisabled()&&!r.isStatic()).map(r=>{let n=r.fetch(void 0,a);return a.throwOnError||(n=n.catch(Bt)),r.state.fetchStatus==="paused"?Promise.resolve():n}));return Promise.all(i).then(Bt)}fetchQuery(t){const e=this.defaultQueryOptions(t);e.retry===void 0&&(e.retry=!1);const a=T(this,nt).build(this,e);return a.isStaleByTime(fi(e.staleTime,a))?a.fetch(e):Promise.resolve(a.state.data)}prefetchQuery(t){return this.fetchQuery(t).then(Bt).catch(Bt)}fetchInfiniteQuery(t){return t.behavior=Zm(t.pages),this.fetchQuery(t)}prefetchInfiniteQuery(t){return this.fetchInfiniteQuery(t).then(Bt).catch(Bt)}ensureInfiniteQueryData(t){return t.behavior=Zm(t.pages),this.ensureQueryData(t)}resumePausedMutations(){return Ws.isOnline()?T(this,mi).resumePausedMutations():Promise.resolve()}getQueryCache(){return T(this,nt)}getMutationCache(){return T(this,mi)}getDefaultOptions(){return T(this,pi)}setDefaultOptions(t){X(this,pi,t)}setQueryDefaults(t,e){T(this,Jo).set(io(t),{queryKey:t,defaultOptions:e})}getQueryDefaults(t){const e=[...T(this,Jo).values()],a={};return e.forEach(i=>
468{mn(t,i.queryKey)&&Object.assign(a,i.defaultOptions)}),a}setMutationDefaults(t,e){T(this,Xo).set(io(t),{mutationKey:t,defaultOptions:e})}getMutationDefaults(t){const e=[...T(this,Xo).values()],a={};return e.forEach(i=>{mn(t,i.mutationKey)&&Object.assign(a,i.defaultOptions)}),a}defaultQueryOptions(t){if(t._defaulted)return t;const e={...T(this,pi).queries,...this.getQueryDefaults(t.queryKey),...t,_defaulted:!0};return e.queryHash||(e.queryHash=wu(e.queryKey,e)),e.refetchOnReconnect===void 0&&(e.refetchOnReconnect=e.networkMode!=="always"),e.throwOnError===void 0&&(e.throwOnError=!!e.suspense),!e.networkMode&&e.persister&&(e.networkMode="offlineFirst"),e.queryFn===ku&&(e.enabled=!1),e}defaultMutationOptions(t){return t!=null&&t._defaulted?t:{...T(this,pi).mutations,...(t==null?void 0:t.mutationKey)&&this.getMutationDefaults(t.mutationKey),...t,_defaulted:!0}}clear(){T(this,nt).clear(),T(this,mi).clear()}},nt=new WeakMap,mi=new WeakMap,pi=new WeakMap,Jo=new WeakMap,Xo=new WeakMap,hi=new WeakMap,Zo=new WeakMap,er=new WeakMap,zg),nb=m.createContext(void 0),yr=t=>{const e=m.useContext(nb);if(!e)throw new Error("No QueryClient set, use QueryClientProvider to set one");return e},H1=({client:t,children:e})=>(m.useEffect(()=>(t.mount(),()=>{t.unmount()}),[t]),o.jsx(nb.Provider,{value:t,children:e})),sb=m.createContext(!1),K1=()=>m.useContext(sb);sb.Provider;function Y1(){let t=!1;return{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t}}var Q1=m.createContext(Y1()),J1=()=>m.useContext(Q1),X1=(t,e)=>{(t.suspense||t.throwOnError||t.experimental_prefetchInRender)&&(e.isReset()||(t.retryOnMount=!1))},Z1=t=>{m.useEffect(()=>{t.clearReset()},[t])},e_=({result:t,errorResetBoundary:e,throwOnError:a,query:i,suspense:r})=>t.isError&&!e.isReset()&&!t.isFetching&&i&&(r&&t.data===void 0||Zf(a,[t.error,i])),t_=t=>{if(t.suspense){const a=r=>r==="static"?r:Math.max(r??1e3,1e3),i=t.staleTime;t.staleTime=typeof i=="function"?(...r)=>a(i(...r)):a(i),typeof t.gcTime=="number"&&(t.gcTime=Math.max(t.gcTime,1e3))}},a_=(t,e)=>t.isLoading&&t.isFetching&&!e,i_=(t,e)=>(t==null?void 0:t.suspense)&&e.isPending,tp=(t,e,a)=>e.fetchOptimistic(t).catch(()=>{a.clearReset()});function o_(t,e,a){var p,f,h,v,g;const i=K1(),r=J1(),n=yr(),s=n.defaultQueryOptions(t);(f=(p=n.getDefaultOptions().queries)==null?void 0:p._experimental_beforeQuery)==null||f.call(p,s),s._optimisticResults=i?"isRestoring":"optimistic",t_(s),X1(s,r),Z1(r);const l=!n.getQueryCache().get(s.queryHash),[c]=m.useState(()=>new e(n,s)),d=c.getOptimisticResult(s),u=!i&&t.subscribed!==!1;if(m.useSyncExternalStore(m.useCallback(b=>{const x=u?c.subscribe(yt.batchCalls(b)):Bt;return c.updateResult(),x},[c,u]),()=>c.getCurrentResult(),()=>c.getCurrentResult()),m.useEffect(()=>{c.setOptions(s)},[s,c]),i_(s,d))throw tp(s,c,r);if(e_({result:d,errorResetBoundary:r,throwOnError:s.throwOnError,query:n.getQueryCache().get(s.queryHash),suspense:s.suspense}))throw d.error;if((v=(h=n.getDefaultOptions().queries)==null?void 0:h._experimental_afterQuery)==null||v.call(h,s,d),s.experimental_prefetchInRender&&!ao&&a_(d,i)){const b=l?tp(s,c,r):(g=n.getQueryCache().get(s.queryHash))==null?void 0:g.promise;b==null||b.catch(Bt).finally(()=>{c.updateResult()})}return s.notifyOnChangeProps?d:c.trackResult(d)}function ta(t,e){return o_(t,z1)}function No(t,e){const a=yr(),[i]=m.useState(()=>new q1(a,t));m.useEffect(()=>{i.setOptions(t)},[i,t]);const r=m.useSyncExternalStore(m.useCallback(s=>i.subscribe(yt.batchCalls(s)),[i]),()=>i.getCurrentResult(),()=>i.getCurrentResult()),n=m.useCallback((s,l)=>{i.mutate(s,l).catch(Bt)},[i]);if(r.error&&Zf(i.options.throwOnError,[r.error]))throw r.error;return{...r,mutate:n,mutateAsync:r.mutate}}/**
469 * @remix-run/router v1.23.0
470 *
471 * Copyright (c) Remix Software Inc.
472 *
473 * This source code is licensed under the MIT license found in the
474 * LICENSE.md file in the root directory of this source tree.
475 *
476 * @license MIT
477 */function pn(){return pn=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var i in a)Object.prototype.hasOwnProperty.call(a,i)&&(t[i]=a[i])}return t},pn.apply(this,arguments)}var gi;(function(t){t.Pop="POP",t.Push="PUSH",t.Replace="REPLACE"})(gi||(gi={}));const ap="popstate";function r_(t){t===void 0&&(t={});function e(i,r){let{pathname:n,search:s,hash:l}=i.location;return ud("",{pathname:n,search:s,hash:l},r.state&&r.state.usr||null,r.state&&r.state.key||"default")}function a(i,r){return typeof r=="string"?r:Hs(r)}return s_(e,a,null,t)}function tt(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function lb(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function n_(){return Math.random().toString(36).substr(2,8)}function ip(t,e){return{usr:t.state,key:t.key,idx:e}}function ud(t,e,a,i){return a===void 0&&(a=null),pn({pathname:typeof t=="string"?t:t.pathname,search:"",hash:""},typeof e=="string"?xr(e):e,{state:a,key:e&&e.key||i||n_()})}function Hs(t){let{pathname:e="/",search:a="",hash:i=""}=t;return a&&a!=="?"&&(e+=a.charAt(0)==="?"?a:"?"+a),i&&i!=="#"&&(e+=i.charAt(0)==="#"?i:"#"+i),e}function xr(t){let e={};if(t){let a=t.indexOf("#");a>=0&&(e.hash=t.substr(a),t=t.substr(0,a));let i=t.indexOf("?");i>=0&&(e.search=t.substr(i),t=t.substr(0,i)),t&&(e.pathname=t)}return e}function s_(t,e,a,i){i===void 0&&(i={});let{window:r=document.defaultView,v5Compat:n=!1}=i,s=r.history,l=gi.Pop,c=null,d=u();d==null&&(d=0,s.replaceState(pn({},s.state,{idx:d}),""));function u(){return(s.state||{idx:null}).idx}function p(){l=gi.Pop;let b=u(),x=b==null?null:b-d;d=b,c&&c({action:l,location:g.location,delta:x})}function f(b,x){l=gi.Push;let w=ud(g.location,b,x);d=u()+1;let k=ip(w,d),_=g.createHref(w);try{s.pushState(k,"",_)}catch(j){if(j instanceof DOMException&&j.name==="DataCloneError")throw j;r.location.assign(_)}n&&c&&c({action:l,location:g.location,delta:1})}function h(b,x){l=gi.Replace;let w=ud(g.location,b,x);d=u();let k=ip(w,d),_=g.createHref(w);s.replaceState(k,"",_),n&&c&&c({action:l,location:g.location,delta:0})}function v(b){let x=r.location.origin!=="null"?r.location.origin:r.location.href,w=typeof b=="string"?b:Hs(b);
vendor: 2,797 bytes, line 477
477return w=w.replace(/ $/,"%20"),tt(x,"No window.location.(origin|href) available to create URL for href: "+w),new URL(w,x)}let g={get action(){return l},get location(){return t(r,s)},listen(b){if(c)throw new Error("A history only accepts one active listener");return r.addEventListener(ap,p),c=b,()=>{r.removeEventListener(ap,p),c=null}},createHref(b){return e(r,b)},createURL:v,encodeLocation(b){let x=v(b);return{pathname:x.pathname,search:x.search,hash:x.hash}},push:f,replace:h,go(b){return s.go(b)}};return g}var op;(function(t){t.data="data",t.deferred="deferred",t.redirect="redirect",t.error="error"})(op||(op={}));function l_(t,e,a){return a===void 0&&(a="/"),c_(t,e,a)}function c_(t,e,a,i){let r=typeof e=="string"?xr(e):e,n=rr(r.pathname||"/",a);if(n==null)return null;let s=cb(t);d_(s);let l=null;for(let c=0;l==null&&c<s.length;++c){let d=ub(n);l=y_(s[c],d)}return l}function cb(t,e,a,i){e===void 0&&(e=[]),a===void 0&&(a=[]),i===void 0&&(i="");let r=(n,s,l)=>{let c={relativePath:l===void 0?n.path||"":l,caseSensitive:n.caseSensitive===!0,childrenIndex:s,route:n};c.relativePath.startsWith("/")&&(tt(c.relativePath.startsWith(i),'Absolute route path "'+c.relativePath+'" nested under path '+('"'+i+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),c.relativePath=c.relativePath.slice(i.length));let d=bi([i,c.relativePath]),u=a.concat(c);n.children&&n.children.length>0&&(tt(n.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+d+'".')),cb(n.children,e,u,d)),!(n.path==null&&!n.index)&&e.push({path:d,score:b_(d,n.index),routesMeta:u})};return t.forEach((n,s)=>{var l;if(n.path===""||!((l=n.path)!=null&&l.includes("?")))r(n,s);else for(let c of db(n.path))r(n,s,c)}),e}function db(t){let e=t.split("/");if(e.length===0)return[];let[a,...i]=e,r=a.endsWith("?"),n=a.replace(/\?$/,"");if(i.length===0)return r?[n,""]:[n];let s=db(i.join("/")),l=[];return l.push(...s.map(c=>c===""?n:[n,c].join("/"))),r&&l.push(...s),l.map(c=>t.startsWith("/")&&c===""?"/":c)}function d_(t){t.sort((e,a)=>e.score!==a.score?a.score-e.score:v_(e.routesMeta.map(i=>i.childrenIndex),a.routesMeta.map(i=>i.childrenIndex)))}const u_=/^:[\w-]+$/,m_=3,p_=2,h_=1,g_=10,f_=-2,rp=t=>t==="*";function b_(t,e){let a=t.split("/"),i=a.length;return a.some(rp)&&(i+=f_),e&&(i+=p_),a.filter(r=>!rp(r)).reduce((r,n)=>r+(u_.test(n)?m_:n===""?h_:g_),i)}function v_(t,e){return t.length===e.length&&t.slice(0,-1).every((i,r)=>i===e[r])?t[t.length-1]-e[e.length-1]:0}function y_(t,e,a){let{routesMeta:i}=t,r={},n="/",s=[];for(let l=0;l<i.length;++l){let c=i[l],d=l===i.length-1,u=n==="/"?e:e.slice(n.length)||"/",p=Ks({path:c.relativePath,caseSensitive:c.caseSensitive,end:d},u),f=c.route;if(!p)return null;
vendor: 9,373 bytes, lines 477-486
477Object.assign(r,p.params),s.push({params:r,pathname:bi([n,p.pathname]),pathnameBase:S_(bi([n,p.pathnameBase])),route:f}),p.pathnameBase!=="/"&&(n=bi([n,p.pathnameBase]))}return s}function Ks(t,e){typeof t=="string"&&(t={path:t,caseSensitive:!1,end:!0});let[a,i]=x_(t.path,t.caseSensitive,t.end),r=e.match(a);if(!r)return null;let n=r[0],s=n.replace(/(.)\/+$/,"$1"),l=r.slice(1);return{params:i.reduce((d,u,p)=>{let{paramName:f,isOptional:h}=u;if(f==="*"){let g=l[p]||"";s=n.slice(0,n.length-g.length).replace(/(.)\/+$/,"$1")}const v=l[p];return h&&!v?d[f]=void 0:d[f]=(v||"").replace(/%2F/g,"/"),d},{}),pathname:n,pathnameBase:s,pattern:t}}function x_(t,e,a){e===void 0&&(e=!1),a===void 0&&(a=!0),lb(t==="*"||!t.endsWith("*")||t.endsWith("/*"),'Route path "'+t+'" will be treated as if it were '+('"'+t.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+t.replace(/\*$/,"/*")+'".'));let i=[],r="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(s,l,c)=>(i.push({paramName:l,isOptional:c!=null}),c?"/?([^\\/]+)?":"/([^\\/]+)"));return t.endsWith("*")?(i.push({paramName:"*"}),r+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):a?r+="\\/*$":t!==""&&t!=="/"&&(r+="(?:(?=\\/|$))"),[new RegExp(r,e?void 0:"i"),i]}function ub(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return lb(!1,'The URL path "'+t+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+e+").")),t}}function rr(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let a=e.endsWith("/")?e.length-1:e.length,i=t.charAt(a);return i&&i!=="/"?null:t.slice(a)||"/"}function w_(t,e){e===void 0&&(e="/");let{pathname:a,search:i="",hash:r=""}=typeof t=="string"?xr(t):t;return{pathname:a?a.startsWith("/")?a:k_(a,e):e,search:C_(i),hash:T_(r)}}function k_(t,e){let a=e.replace(/\/+$/,"").split("/");return t.split("/").forEach(r=>{r===".."?a.length>1&&a.pop():r!=="."&&a.push(r)}),a.length>1?a.join("/"):"/"}function nc(t,e,a,i){return"Cannot include a '"+t+"' character in a manually specified "+("`to."+e+"` field ["+JSON.stringify(i)+"].  Please separate it out to the ")+("`to."+a+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function __(t){return t.filter((e,a)=>a===0||e.route.path&&e.route.path.length>0)}function Cu(t,e){let a=__(t);return e?a.map((i,r)=>r===a.length-1?i.pathname:i.pathnameBase):a.map(i=>i.pathnameBase)}function Tu(t,e,a,i){i===void 0&&(i=!1);let r;typeof t=="string"?r=xr(t):(r=pn({},t),tt(!r.pathname||!r.pathname.includes("?"),nc("?","pathname","search",r)),tt(!r.pathname||!r.pathname.includes("#"),nc("#","pathname","hash",r)),tt(!r.search||!r.search.includes("#"),nc("#","search","hash",r)));let n=t===""||r.pathname==="",s=n?"/":r.pathname,l;if(s==null)l=a;else{let p=e.length-1;if(!i&&s.startsWith("..")){let f=s.split("/");for(;f[0]==="..";)f.shift(),p-=1;r.pathname=f.join("/")}l=p>=0?e[p]:"/"}let c=w_(r,l),d=s&&s!=="/"&&s.endsWith("/"),u=(n||s===".")&&a.endsWith("/");return!c.pathname.endsWith("/")&&(d||u)&&(c.pathname+="/"),c}const bi=t=>t.join("/").replace(/\/\/+/g,"/"),S_=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),C_=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,T_=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function j_(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}const mb=["post","put","patch","delete"];new Set(mb);const N_=["get",...mb];new Set(N_);/**
478 * React Router v6.30.1
479 *
480 * Copyright (c) Remix Software Inc.
481 *
482 * This source code is licensed under the MIT license found in the
483 * LICENSE.md file in the root directory of this source tree.
484 *
485 * @license MIT
486 */function hn(){return hn=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var i in a)Object.prototype.hasOwnProperty.call(a,i)&&(t[i]=a[i])}return t},hn.apply(this,arguments)}const _l=m.createContext(null),pb=m.createContext(null),Ya=m.createContext(null),Sl=m.createContext(null),Qa=m.createContext({outlet:null,matches:[],isDataRoute:!1}),hb=m.createContext(null);function P_(t,e){let{relative:a}=e===void 0?{}:e;co()||tt(!1);let{basename:i,navigator:r}=m.useContext(Ya),{hash:n,pathname:s,search:l}=Cl(t,{relative:a}),c=s;return i!=="/"&&(c=s==="/"?i:bi([i,s])),r.createHref({pathname:c,search:l,hash:n})}function co(){return m.useContext(Sl)!=null}function It(){return co()||tt(!1),m.useContext(Sl).location}function A_(t){co()||tt(!1);let{pathname:e}=It();return m.useMemo(()=>Ks(t,ub(e)),[e,t])}function gb(t){m.useContext(Ya).static||m.useLayoutEffect(t)}function Vt(){let{isDataRoute:t}=m.useContext(Qa);return t?U_():E_()}function E_(){co()||tt(!1);let t=m.useContext(_l),{basename:e,future:a,navigator:i}=m.useContext(Ya),{matches:r}=m.useContext(Qa),{pathname:n}=It(),s=JSON.stringify(Cu(r,a.v7_relativeSplatPath)),l=m.useRef(!1);return gb(()=>{l.current=!0}),m.useCallback(function(d,u){if(u===void 0&&(u={}),!l.current)return;if(typeof d=="number"){i.go(d);return}let p=Tu(d,JSON.parse(s),n,u.relative==="path");t==null&&e!=="/"&&(p.pathname=p.pathname==="/"?e:bi([e,p.pathname])),(u.replace?i.replace:i.push)(p,u.state,u)},[e,i,s,n,t])}function rW(){let{matches:t}=m.useContext(Qa),e=t[t.length-1];return e?e.params:{}}function Cl(t,e){let{relative:a}=e===void 0?{}:e,{future:i}=m.useContext(Ya),{matches:r}=m.useContext(Qa),{pathname:n}=It(),s=JSON.stringify(Cu(r,i.v7_relativeSplatPath));return m.useMemo(()=>Tu(t,JSON.parse(s),n,a==="path"),[t,s,n,a])}function I_(t,e){return D_(t,e)}function D_(t,e,a,i){co()||tt(!1);let{navigator:r}=m.useContext(Ya),{matches:n}=m.useContext(Qa),s=n[n.length-1],l=s?s.params:{};s&&s.pathname;let c=s?s.pathnameBase:"/";s&&s.route;let d=It(),u;if(e){var p;let b=typeof e=="string"?xr(e):e;c==="/"||(p=b.pathname)!=null&&p.startsWith(c)||tt(!1),u=b}else u=d;let f=u.pathname||"/",h=f;if(c!=="/"){let b=c.replace(/^\//,"").split("/");h="/"+f.replace(/^\//,"").split("/").slice(b.length).join("/")}let v=l_(t,{pathname:h}),g=z_(v&&v.map(b=>Object.assign({},b,{params:Object.assign({},l,b.params),pathname:bi([c,r.encodeLocation?r.encodeLocation(b.pathname).pathname:b.pathname]),pathnameBase:b.pathnameBase==="/"?c:bi([c,r.encodeLocation?r.encodeLocation(b.pathnameBase).pathname:b.pathnameBase])})),n,a,i);return e&&g?m.createElement(Sl.Provider,{value:{location:hn({pathname:"/",search:"",hash:"",state:null,key:"default"},u),navigationType:gi.Pop}},g):g}function R_(){let t=V_(),e=j_(t)?t.status+" "+t.statusText:t instanceof Error?t.message:JSON.stringify(t),a=t instanceof Error?t.stack:null,r={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return m.createElement(m.Fragment,null,m.createElement("h2",null,"Unexpected Application Error!"),m.createElement("h3",{style:{fontStyle:"italic"}},e),a?m.createElement("pre",{style:r},a):null,null)}const L_=m.createElement(R_,null);class O_ extends m.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,a){return a.location!==e.location||a.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:a.error,location:a.location,revalidation:e.revalidation||a.revalidation}}componentDidCatch(e,a){console.error("React Router caught the following error during render",e,a)}render(){return this.state.error!==void 0?m.createElement(Qa.Provider,{value:this.props.routeContext},m.createElement(hb.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function M_(t){let{routeContext:e,match:a,children:i}=t,r=m.useContext(_l);return r&&r.static&&r.staticContext&&(a.route.errorElement||a.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=a.route.id),m.createElement(Qa.Provider,{value:e},i)}function z_(t,e,a,i){var r;if(e===void 0&&(e=[]),a===void 0&&(a=null),i===void 0&&(i=null),t==null){var n;if(!a)return null;if(a.errors)t=a.matches;else if((n=i)!=null&&n.v7_partialHydration&&e.length===0&&!a.initialized&&a.matches.length>0)t=a.matches;else return null}let s=t,l=(r=a)==null?void 0:r.errors;if(l!=null){let u=s.findIndex(p=>p.route.id&&(l==null?void 0:l[p.route.id])!==void 0);u>=0||tt(!1),s=s.slice(0,Math.min(s.length,u+1))}let c=!1,d=-1;if(a&&i&&i.v7_partialHydration)for(let u=0;u<s.length;u++){let p=s[u];if((p.route.HydrateFallback||p.route.hydrateFallbackElement)&&(d=u),p.route.id){let{loaderData:f,errors:h}=a,v=p.route.loader&&f[p.route.id]===void 0&&(!h||h[p.route.id]===void 0);if(p.route.lazy||v){c=!0,d>=0?s=s.slice(0,d+1):s=[s[0]];break}}}return s.reduceRight((u,p,f)=>{let h,v=!1,g=null,b=null;a&&(h=l&&p.route.id?l[p.route.id]:void 0,g=p.route.errorElement||L_,c&&(d<0&&f===0?(q_("route-fallback"),v=!0,b=null):d===f&&(v=!0,b=p.route.hydrateFallbackElement||null)));let x=e.concat(s.slice(0,f+1)),w=()=>{let k;return h?k=g:v?k=b:p.route.Component?k=m.createElement(p.route.Component,null):p.route.element?k=p.route.element:k=u,m.createElement(M_,{match:p,routeC
486ontext:{outlet:u,matches:x,isDataRoute:a!=null},children:k})};return a&&(p.route.ErrorBoundary||p.route.errorElement||f===0)?m.createElement(O_,{location:a.location,revalidation:a.revalidation,component:g,error:h,children:w(),routeContext:{outlet:null,matches:x,isDataRoute:!0}}):w()},null)}var fb=function(t){return t.UseBlocker="useBlocker",t.UseRevalidator="useRevalidator",t.UseNavigateStable="useNavigate",t}(fb||{}),bb=function(t){return t.UseBlocker="useBlocker",t.UseLoaderData="useLoaderData",t.UseActionData="useActionData",t.UseRouteError="useRouteError",t.UseNavigation="useNavigation",t.UseRouteLoaderData="useRouteLoaderData",t.UseMatches="useMatches",t.UseRevalidator="useRevalidator",t.UseNavigateStable="useNavigate",t.UseRouteId="useRouteId",t}(bb||{});function B_(t){let e=m.useContext(_l);return e||tt(!1),e}function F_(t){let e=m.useContext(pb);return e||tt(!1),e}function $_(t){let e=m.useContext(Qa);return e||tt(!1),e}function vb(t){let e=$_(),a=e.matches[e.matches.length-1];return a.route.id||tt(!1),a.route.id}function V_(){var t;let e=m.useContext(hb),a=F_(),i=vb();return e!==void 0?e:(t=a.errors)==null?void 0:t[i]}function U_(){let{router:t}=B_(fb.UseNavigateStable),e=vb(bb.UseNavigateStable),a=m.useRef(!1);return gb(()=>{a.current=!0}),m.useCallback(function(r,n){n===void 0&&(n={}),a.current&&(typeof r=="number"?t.navigate(r):t.navigate(r,hn({fromRouteId:e},n)))},[t,e])}const np={};function q_(t,e,a){np[t]||(np[t]=!0)}function G_(t,e){t==null||t.v7_startTransition,t==null||t.v7_relativeSplatPath}function ju(t){let{to:e,replace:a,state:i,relative:r}=t;co()||tt(!1);let{future:n,static:s}=m.useContext(Ya),{matches:l}=m.useContext(Qa),{pathname:c}=It(),d=Vt(),u=Tu(e,Cu(l,n.v7_relativeSplatPath),c,r==="path"),p=JSON.stringify(u);return m.useEffect(()=>d(JSON.parse(p),{replace:a,state:i,relative:r}),[d,p,r,a,i]),null}function F(t){tt(!1)}function W_(t){let{basename:e="/",children:a=null,location:i,navigationType:r=gi.Pop,navigator:n,static:s=!1,future:l}=t;co()&&tt(!1);let c=e.replace(/^\/*/,"/"),d=m.useMemo(()=>({basename:c,navigator:n,static:s,future:hn({v7_relativeSplatPath:!1},l)}),[c,l,n,s]);typeof i=="string"&&(i=xr(i));let{pathname:u="/",search:p="",hash:f="",state:h=null,key:v="default"}=i,g=m.useMemo(()=>{let b=rr(u,c);return b==null?null:{location:{pathname:b,search:p,hash:f,state:h,key:v},navigationType:r}},[c,u,p,f,h,v,r]);return g==null?null:m.createElement(Ya.Provider,{value:d},m.createElement(Sl.Provider,{children:a,value:g}))}function H_(t){let{children:e,location:a}=t;return I_(md(e),a)}new Promise(()=>{});function md(t,e){e===void 0&&(e=[]);let a=[];return m.Children.forEach(t,(i,r)=>{if(!m.isValidElement(i))return;let n=[...e,r];if(i.type===m.Fragment){a.push.apply(a,md(i.props.children,n));return}i.type!==F&&tt(!1),!i.props.index||!i.props.children||tt(!1);let s={id:i.props.id||n.join("-"),caseSensitive:i.props.caseSensitive,element:i.props.element,Component:i.props.Component,index:i.props.index,path:i.props.path,loader:i.props.loader,action:i.props.action,errorElement:i.props.errorElement,ErrorBoundary:i.props.ErrorBoundary,hasErrorBoundary:i.props.ErrorBoundary!=null||i.props.errorElement!=null,shouldRevalidate:i.props.shouldRevalidate,handle:i.props.handle,lazy:i.props.lazy};i.props.children&&(s.children=md(i.props.children,n)),a.push(s)}),a}/**
487 * React Router DOM v6.30.1
488 *
489 * Copyright (c) Remix Software Inc.
490 *
491 * This source code is licensed under the MIT license found in the
492 * LICENSE.md file in the root directory of this source tree.
493 *
494 * @license MIT
495 */function Ys(){return Ys=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];for(var i in a)Object.prototype.hasOwnProperty.call(a,i)&&(t[i]=a[i])}return t},Ys.apply(this,arguments)}function yb(t,e){if(t==null)return{};var a={},i=Object.keys(t),r,n;for(n=0;n<i.length;n++)r=i[n],!(e.indexOf(r)>=0)&&(a[r]=t[r]);return a}function K_(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function Y_(t,e){return t.button===0&&(!e||e==="_self")&&!K_(t)}function pd(t){return t===void 0&&(t=""),new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((e,a)=>{let i=t[a];return e.concat(Array.isArray(i)?i.map(r=>[a,r]):[[a,i]])},[]))}function Q_(t,e){let a=pd(t);return e&&e.forEach((i,r)=>{a.has(r)||e.getAll(r).forEach(n=>{a.append(r,n)})}),a}const J_=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],X_=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"],Z_="6";try{window.__reactRouterVersion=Z_}catch{}const e2=m.createContext({isTransitioning:!1}),t2="startTransition",sp=Ix[t2];function a2(t){let{basename:e,children:a,future:i,window:r}=t,n=m.useRef();n.current==null&&(n.current=r_({window:r,v5Compat:!0}));let s=n.current,[l,c]=m.useState({action:s.action,location:s.location}),{v7_startTransition:d}=i||{},u=m.useCallback(p=>{d&&sp?sp(()=>c(p)):c(p)},[c,d]);return m.useLayoutEffect(()=>s.listen(u),[s,u]),m.useEffect(()=>G_(i),[i]),m.createElement(W_,{basename:e,children:a,location:l.location,navigationType:l.action,navigator:s,future:i})}const i2=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",o2=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Ke=m.forwardRef(function(e,a){let{onClick:i,relative:r,reloadDocument:n,replace:s,state:l,target:c,to:d,preventScrollReset:u,viewTransition:p}
495=e,f=yb(e,J_),{basename:h}=m.useContext(Ya),v,g=!1;if(typeof d=="string"&&o2.test(d)&&(v=d,i2))try{let k=new URL(window.location.href),_=d.startsWith("//")?new URL(k.protocol+d):new URL(d),j=rr(_.pathname,h);_.origin===k.origin&&j!=null?d=j+_.search+_.hash:g=!0}catch{}let b=P_(d,{relative:r}),x=n2(d,{replace:s,state:l,target:c,preventScrollReset:u,relative:r,viewTransition:p});function w(k){i&&i(k),k.defaultPrevented||x(k)}return m.createElement("a",Ys({},f,{href:v||b,onClick:g||n?i:w,ref:a,target:c}))}),sc=m.forwardRef(function(e,a){let{"aria-current":i="page",caseSensitive:r=!1,className:n="",end:s=!1,style:l,to:c,viewTransition:d,children:u}=e,p=yb(e,X_),f=Cl(c,{relative:p.relative}),h=It(),v=m.useContext(pb),{navigator:g,basename:b}=m.useContext(Ya),x=v!=null&&s2(f)&&d===!0,w=g.encodeLocation?g.encodeLocation(f).pathname:f.pathname,k=h.pathname,_=v&&v.navigation&&v.navigation.location?v.navigation.location.pathname:null;r||(k=k.toLowerCase(),_=_?_.toLowerCase():null,w=w.toLowerCase()),_&&b&&(_=rr(_,b)||_);const j=w!=="/"&&w.endsWith("/")?w.length-1:w.length;let S=k===w||!s&&k.startsWith(w)&&k.charAt(j)==="/",C=_!=null&&(_===w||!s&&_.startsWith(w)&&_.charAt(w.length)==="/"),N={isActive:S,isPending:C,isTransitioning:x},P=S?i:void 0,E;typeof n=="function"?E=n(N):E=[n,S?"active":null,C?"pending":null,x?"transitioning":null].filter(Boolean).join(" ");let L=typeof l=="function"?l(N):l;return m.createElement(Ke,Ys({},p,{"aria-current":P,className:E,ref:a,style:L,to:c,viewTransition:d}),typeof u=="function"?u(N):u)});var hd;(function(t){t.UseScrollRestoration="useScrollRestoration",t.UseSubmit="useSubmit",t.UseSubmitFetcher="useSubmitFetcher",t.UseFetcher="useFetcher",t.useViewTransitionState="useViewTransitionState"})(hd||(hd={}));var lp;(function(t){t.UseFetcher="useFetcher",t.UseFetchers="useFetchers",t.UseScrollRestoration="useScrollRestoration"})(lp||(lp={}));function r2(t){let e=m.useContext(_l);return e||tt(!1),e}function n2(t,e){let{target:a,replace:i,state:r,preventScrollReset:n,relative:s,viewTransition:l}=e===void 0?{}:e,c=Vt(),d=It(),u=Cl(t,{relative:s});return m.useCallback(p=>{if(Y_(p,a)){p.preventDefault();let f=i!==void 0?i:Hs(d)===Hs(u);c(t,{replace:f,state:r,preventScrollReset:n,relative:s,viewTransition:l})}},[d,c,u,i,r,a,t,n,s,l])}function nW(t){let e=m.useRef(pd(t)),a=m.useRef(!1),i=It(),r=m.useMemo(()=>Q_(i.search,a.current?null:e.current),[i.search]),n=Vt(),s=m.useCallback((l,c)=>{const d=pd(typeof l=="function"?l(r):l);a.current=!0,n("?"+d,c)},[n,r]);return[r,s]}function s2(t,e){e===void 0&&(e={});let a=m.useContext(e2);a==null&&tt(!1);let{basename:i}=r2(hd.useViewTransitionState),r=Cl(t,{relative:e.relative});if(!a.isTransitioning)return!1;let n=rr(a.currentLocation.pathname,i)||a.currentLocation.pathname,s=rr(a.nextLocation.pathname,i)||a.nextLocation.pathname;return Ks(r.pathname,s)!=null||Ks(r.pathname,n)!=null}const l2={theme:"light",setTheme:()=>null},xb=m.createContext(l2);function c2({children:t,defaultTheme:e="light",storageKey:a="vite-ui-theme",...i}){const[r,n]=m.useState(()=>localStorage.getItem(a)||e);m.useEffect(()=>{const l=window.document.documentElement;if(l.classList.remove("light","dark"),r==="system"){const c=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";l.classList.add(c);return}l.classList.add(r)},[r]);const s={theme:r,setTheme:l=>{localStorage.setItem(a,l),n(l)}};return o.jsx(xb.Provider,{...i,value:s,children:t})}const wi=()=>{const t=m.useContext(xb);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t},d2=t=>{let e;return t?e=t:typeof fetch>"u"?e=(...a)=>H(async()=>{const{default:i}=await Promise.resolve().then(()=>uo);return{default:i}},void 0).then(({default:i})=>i(...a)):e=fetch,(...a)=>e(...a)};class Nu extends Error{constructor(e,a="FunctionsError",i){super(e),this.name=a,this.context=i}}class cp extends Nu{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class dp extends Nu{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class up extends Nu{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var gd;(function(t){t.Any="any",t.ApNortheast1="ap-northeast-1",t.ApNortheast2="ap-northeast-2",t.ApSouth1="ap-south-1",t.ApSoutheast1="ap-southeast-1",t.ApSoutheast2="ap-southeast-2",t.CaCentral1="ca-central-1",t.EuCentral1="eu-central-1",t.EuWest1="eu-west-1",t.EuWest2="eu-west-2",t.EuWest3="eu-west-3",t.SaEast1="sa-east-1",t.UsEast1="us-east-1",t.UsWest1="us-west-1",t.UsWest2="us-west-2"})(gd||(gd={}));class u2{constructor(e,{headers:a={},customFetch:i,region:r=gd.Any}={}){this.url=e,this.headers=a,this.region=r,this.fetch=d2(i)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e){return de(this,arguments,void 0,function*(a,i={}){var r;try{const{headers:n,method:s,body:l,signal:c}=i;let d={},{region:u}=i;u||(u=this.region);const p=new URL(`${this.url}/${a}`);u&&u!=="any"&&(d["x-region"]=u,p.searchParams.set("forceFunctionRegion",u));let f;l&&(n&&!Object.prototype.hasOwnProperty.call(n,"Content-Type")||!n)?typeof Blob<"u"&&l instanceof Blob||l instanceof ArrayBuffer?(d["Content-Type"]="application/octet-stream",f=l):typeof l=="string"?(d["Content-Type"]="text/plain",f=l):typeof FormData<"u"&&l instanceof FormData?f=l:(d["Content-Type"]="application/json",f=JSON.stringify(l)):f=l;const h=yield this.fetch(p.toString(),{method:s||"POST",headers:Object.assign(Object.assign(Object.assign({},d),this.headers),n),body:f,signal:c}).catch(x=>{throw x.name==="AbortError"?x:new cp(x)}),v=h.headers.get("x-relay-error");
495if(v&&v==="true")throw new dp(h);if(!h.ok)throw new up(h);let g=((r=h.headers.get("Content-Type"))!==null&&r!==void 0?r:"text/plain").split(";")[0].trim(),b;return g==="application/json"?b=yield h.json():g==="application/octet-stream"||g==="application/pdf"?b=yield h.blob():g==="text/event-stream"?b=h:g==="multipart/form-data"?b=yield h.formData():b=yield h.text(),{data:b,error:null,response:h}}catch(n){return n instanceof Error&&n.name==="AbortError"?{data:null,error:new cp(n)}:{data:null,error:n,response:n instanceof up||n instanceof dp?n.context:void 0}}})}}var $t={};const wr=mf(yx);var rs={},ns={},ss={},ls={},cs={},m2=function(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")},nr=m2();const p2=nr.fetch,wb=nr.fetch.bind(nr),kb=nr.Headers,h2=nr.Request,g2=nr.Response,uo=Object.freeze(Object.defineProperty({__proto__:null,Headers:kb,Request:h2,Response:g2,default:wb,fetch:p2},Symbol.toStringTag,{value:"Module"})),f2=mf(uo);var ds={},mp;function _b(){if(mp)return ds;mp=1,Object.defineProperty(ds,"__esModule",{value:!0});class t extends Error{constructor(a){super(a.message),this.name="PostgrestError",this.details=a.details,this.hint=a.hint,this.co
495de=a.code}}return ds.default=t,ds}var pp;function Sb(){if(pp)return cs;pp=1,Object.defineProperty(cs,"__esModule",{value:!0});const t=wr,e=t.__importDefault(f2),a=t.__importDefault(_b());class i{constructor(n){var s,l;this.shouldThrowOnError=!1,this.method=n.method,this.url=n.url,this.headers=new Headers(n.headers),this.schema=n.schema,this.body=n.body,this.shouldThrowOnError=(s=n.shouldThrowOnError)!==null&&s!==void 0?s:!1,this.signal=n.signal,this.isMaybeSingle=(l=n.isMaybeSingle)!==null&&l!==void 0?l:!1,n.fetch?this.fetch=n.fetch:typeof fetch>"u"?this.fetch=e.default:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}setHeader(n,s){return this.headers=new Headers(this.headers),this.headers.set(n,s),this}then(n,s){this.schema===void 0||(["GET","HEAD"].includes(this.method)?this.headers.set("Accept-Profile",this.schema):this.headers.set("Content-Profile",this.schema)),this.method!=="GET"&&this.method!=="HEAD"&&this.headers.set("Content-Type","application/json");const l=this.fetch;let c=l(this.url.toString(),{method:this.method,headers:this.headers,body:JSON.stringify(this.body),signal:this.signal}).then(async d=>{var u,p,f,h;let v=null,g=null,b=null,x=d.status,w=d.statusText;if(d.ok){if(this.method!=="HEAD"){const S=await d.text();S===""||(this.headers.get("Accept")==="text/csv"||this.headers.get("Accept")&&(!((u=this.headers.get("Accept"))===null||u===void 0)&&u.includes("application/vnd.pgrst.plan+text"))?g=S:g=JSON.parse(S))}const _=(p=this.headers.get("Prefer"))===null||p===void 0?void 0:p.match(/count=(exact|planned|estimated)/),j=(f=d.headers.get("content-range"))===null||f===void 0?void 0:f.split("/");_&&j&&j.length>1&&(b=parseInt(j[1])),this.isMaybeSingle&&this.method==="GET"&&Array.isArray(g)&&(g.length>1?(v={code:"PGRST116",details:`Results contain ${g.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},g=null,b=null,x=406,w="Not Acceptable"):g.length===1?g=g[0]:g=null)}else{const _=await d.text();try{v=JSON.parse(_),Array.isArray(v)&&d.status===404&&(g=[],v=null,x=200,w="OK")}catch{d.status===404&&_===""?(x=204,w="No Content"):v={message:_}}if(v&&this.isMaybeSingle&&(!((h=v==null?void 0:v.details)===null||h===void 0)&&h.includes("0 rows"))&&(v=null,x=200,w="OK"),v&&this.shouldThrowOnError)throw new a.default(v)}return{error:v,data:g,count:b,status:x,statusText:w}});return this.shouldThrowOnError||(c=c.catch(d=>{var u,p,f;return{error:{message:`${(u=d==null?void 0:d.name)!==null&&u!==void 0?u:"FetchError"}: ${d==null?void 0:d.message}`,details:`${(p=d==null?void 0:d.stack)!==null&&p!==void 0?p:""}`,hint:"",code:`${(f=d==null?void 0:d.code)!==null&&f!==void 0?f:""}`},data:null,count:null,status:0,statusText:""}})),c.then(n,s)}returns(){return this}overrideTypes(){return this}}return cs.default=i,cs}var hp;function Cb(){if(hp)return ls;hp=1,Object.defineProperty(ls,"__esModule",{value:!0});const e=wr.__importDefault(Sb());class a extends e.default{select(r){let n=!1;const s=(r??"*").split("").map(l=>/\s/.test(l)&&!n?"":(l==='"'&&(n=!n),l)).join("");return this.url.searchParams.set("select",s),this.headers.append("Prefer","return=representation"),this}order(r,{ascending:n=!0,nullsFirst:s,foreignTable:l,referencedTable:c=l}={}){const d=c?`${c}.order`:"order",u=this.url.searchParams.get(d);return this.url.searchParams.set(d,`${u?`${u},`:""}${r}.${n?"asc":"desc"}${s===void 0?"":s?".nullsfirst":".nullslast"}`),this}limit(r,{foreignTable:n,referencedTable:s=n}={}){const l=typeof s>"u"?"limit":`${s}.limit`;return this.url.searchParams.set(l,`${r}`),this}range(r,n,{foreignTable:s,referencedTable:l=s}={}){const c=typeof l>"u"?"offset":`${l}.offset`,d=typeof l>"u"?"limit":`${l}.limit`;return this.url.searchParams.set(c,`${r}`),this.url.searchParams.set(d,`${n-r+1}`),this}abortSignal(r){return this.signal=r,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){return this.method==="GET"?this.headers.set("Accept","application/json"):this.headers.set("Accept","application/vnd.pgrst.object+json"),this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}
495explain({analyze:r=!1,verbose:n=!1,settings:s=!1,buffers:l=!1,wal:c=!1,format:d="text"}={}){var u;const p=[r?"analyze":null,n?"verbose":null,s?"settings":null,l?"buffers":null,c?"wal":null].filter(Boolean).join("|"),f=(u=this.headers.get("Accept"))!==null&&u!==void 0?u:"application/json";return this.headers.set("Accept",`application/vnd.pgrst.plan+${d}; for="${f}"; options=${p};`),d==="json"?this:this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(r){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${r}`),this}}return ls.default=a,ls}var gp;function Pu(){if(gp)return ss;gp=1,Object.defineProperty(ss,"__esModule",{value:!0});const e=wr.__importDefault(Cb()),a=new RegExp("[,()]");class i extends e.default{eq(n,s){return this.url.searchParams.append(n,`eq.${s}`),this}neq(n,s){return this.url.searchParams.append(n,`neq.${s}`),this}gt(n,s){return this.url.searchParams.append(n,`gt.${s}`),this}gte(n,s){return this.url.searchParams.append(n,`gte.${s}`),this}lt(n,s){return this.url.searchParams.append(n,`lt.${s}`),this}lte(n,s){return this.url.searchParams.append(n,`lte.${s}`),this}like(n,s){return this.url.searchParams.append(n,`like.${s}`),this}likeAllOf(n,s){return this.url.searchParams.append(n,`like(all).{${s.join(",")}}`),this}likeAnyOf(n,s){return this.url.searchParams.append(n,`like(any).{${s.join(",")}}`),this}ilike(n,s){return this.url.searchParams.append(n,`ilike.${s}`),this}ilikeAllOf(n,s){return this.url.searchParams.append(n,`ilike(all).{${s.join(",")}}`),this}ilikeAnyOf(n,s){return this.url.searchParams.append(n,`ilike(any).{${s.join(",")}}`),this}is(n,s){return this.url.searchParams.append(n,`is.${s}`),this}in(n,s){const l=Array.from(new Set(s)).map(c=>typeof c=="string"&&a.test(c)?`"${c}"`:`${c}`).join(",");return this.url.searchParams.append(n,`in.(${l})`),this}contains(n,s){return typeof s=="string"?this.url.searchParams.append(n,`cs.${s}`):Array.isArray(s)?this.url.searchParams.append(n,`cs.{${s.join(",")}}`):this.url.searchParams.append(n,`cs.${JSON.stringify(s)}`),this}containedBy(n,s){return typeof s=="string"?this.url.searchParams.append(n,`cd.${s}`):Array.isArray(s)?this.url.searchParams.append(n,`cd.{${s.join(",")}}`):this.url.searchParams.append(n,`cd.${JSON.stringify(s)}`),this}rangeGt(n,s){return this.url.searchParams.append(n,`sr.${s}`),this}rangeGte(n,s){return this.url.searchParams.append(n,`nxl.${s}`),this}rangeLt(n,s){return this.url.searchParams.append(n,`sl.${s}`),this}rangeLte(n,s){return this.url.searchParams.append(n,`nxr.${s}`),this}rangeAdjacent(n,s){return this.url.searchParams.append(n,`adj.${s}`),this}overlaps(n,s){return typeof s=="string"?this.url.searchParams.append(n,`ov.${s}`):this.url.searchParams.append(n,`ov.{${s.join(",")}}`),this}textSearch(n,s,{config:l,type:c}={}){let d="";c==="plain"?d="pl":c==="phrase"?d="ph":c==="websearch"&&(d="w");const u=l===void 0?"":`(${l})`;return this.url.searchParams.append(n,`${d}fts${u}.${s}`),this}match(n){return Object.entries(n).forEach(([s,l])=>{this.url.searchParams.append(s,`eq.${l}`)}),this}not(n,s,l){return this.url.searchParams.append(n,`not.${s}.${l}`),this}or(n,{foreignTable:s,referencedTable:l=s}={}){const c=l?`${l}.or`:"or";return this.url.searchParams.append(c,`(${n})`),this}filter(n,s,l){return this.url.searchParams.append(n,`${s}.${l}`),this}}return ss.default=i,ss}var fp;function Tb(){if(fp)return ns;fp=1,Object.defineProperty(ns,"__esModule",{value:!0});const e=wr.__importDefault(Pu());class a{constructor(r,{headers:n={},schema:s,fetch:l}){this.url=r,this.headers=new Headers(n),this.schema=s,this.fetch=l}select(r,n){const{head:s=!1,count:l}=n??{},c=s?"HEAD":"GET";let d=!1;const u=(r??"*").split("").map(p=>/\s/.test(p)&&!d?"":(p==='"'&&(d=!d),p)).join("");return this.url.searchParams.set("select",u),l&&this.headers.append("Prefer",`count=${l}`),new e.default({method:c,url:this.url,headers:this.headers,schema:this.schema,fetch:this.fetch})}insert(r,{count:n,defaultToNull:s=!0}={}){var l;const c="POST";if(n&&this.headers.append("Prefer",`count=${n}`),s||this.headers.append("Prefer","missing=default"),Array.isArray(r)){const d=r.reduce((u,p)=>u.concat(Object.keys(p)),[]);if(d.length>0){const u=[...new Set(d)].map(p=>`"${p}"`);this.url.searchParams.set("columns",u.join(","))}}return new e.default({method:c,url:this.url,headers:this.headers,schema:this.schema,body:r,fetch:(l=this.fetch)!==null&&l!==void 0?l:fetch})}upsert(r,{onConflict:n,ignoreDuplicates:s=!1,count:l,defaultToNull:c=!0}={}){var d;const u="POST";if(this.headers.append("Prefer",`resolution=${s?"ignore":"merge"}-duplicates`),n!==void 0&&this.url.searchParams.set("on_conflict",n),l&&this.headers.append("Prefer",`count=${l}`),c||this.headers.append("Prefer","missing=default"),Array.isArray(r)){const p=r.reduce((f,h)=>f.concat(Object.keys(h)),[]);if(p.length>0){const f=[...new Set(p)].map(h=>`"${h}"`);this.url.searchParams.set("columns",f.join(","))}}return new e.default({method:u,url:this.url,headers:this.headers,schema:this.schema,body:r,fetch:(d=this.fetch)!==null&&d!==void 0?d:fetch})}update(r,{count:n}={}){var s;const l="PATCH";return n&&this.headers.append("Prefer",`count=${n}`),new e.default({method:l,url:this.url,headers:this.headers,schema:this.schema,body:r,fetch:(s=this.fetch)!==null&&s!==void 0?s:fetch})}delete({count:r}={}){var n;const s="DELETE";return r&&this.headers.append("Prefer",`count=${r}`),new e.default({method:s,url:this.url,headers:this.headers,schema:this.schema,fetch:(n=this.fetch)!==null&&n!==void 0?n:fetch})}}return ns.default=a,ns}var bp;function b2(){if(bp)return rs;bp=1,Object.defineProperty(rs,"__esModule",{value:!0});const t=wr,e=t.__importDefault(Tb()),a=t.__importDefault(Pu());class i{constructor(n,{headers:s={},schema:l,fetch:c}={}){this.url=n,this.headers=new Headers(s),this.schemaName=l,this.fetch=c}from(n){const s=new URL(`${this.url}/${n}`);return new e.default(s,{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch})}schema(n){return new i(this.url,{headers:this.headers,schema:n,fetch:this.fetch})}rpc(n,s={},{head:l=!1,get:c=!1,count:d}={}){var u;let p;const f=new URL(`${this.url}/rpc/${n}`);let h;l||c?(p=l?"HEAD":"GET",Object.entries(s).filter(([g,b])=>b!==void 0).map(([g,b])=>[g,Array.isArray(b)?`{${b.join(",")}}`:`${b}
495`]).forEach(([g,b])=>{f.searchParams.append(g,b)})):(p="POST",h=s);const v=new Headers(this.headers);return d&&v.set("Prefer",`count=${d}`),new a.default({method:p,url:f,headers:v,schema:this.schemaName,body:h,fetch:(u=this.fetch)!==null&&u!==void 0?u:fetch})}}return rs.default=i,rs}Object.defineProperty($t,"__esModule",{value:!0});var jb=$t.PostgrestError=Mb=$t.PostgrestBuilder=Lb=$t.PostgrestTransformBuilder=Db=$t.PostgrestFilterBuilder=Eb=$t.PostgrestQueryBuilder=Pb=$t.PostgrestClient=void 0;const kr=wr,Nb=kr.__importDefault(b2());var Pb=$t.PostgrestClient=Nb.default;const Ab=kr.__importDefault(Tb());var Eb=$t.PostgrestQueryBuilder=Ab.default;const Ib=kr.__importDefault(Pu());var Db=$t.PostgrestFilterBuilder=Ib.default;const Rb=kr.__importDefault(Cb());var Lb=$t.PostgrestTransformBuilder=Rb.default;const Ob=kr.__importDefault(Sb());var Mb=$t.PostgrestBuilder=Ob.default;const zb=kr.__importDefault(_b());jb=$t.PostgrestError=zb.default;var Bb=$t.default={PostgrestClient:Nb.default,PostgrestQueryBuilder:Ab.default,PostgrestFilterBuilder:Ib.default,PostgrestTransformBuilder:Rb.default,PostgrestBuilder:Ob.default,PostgrestError:zb.default};const v2=Dx({__proto__:null,get PostgrestBuilder(){return Mb},get PostgrestClient(){return Pb},get PostgrestError(){return jb},get PostgrestFilterBuilder(){return Db},get PostgrestQueryBuilder(){return Eb},get PostgrestTransformBuilder(){return Lb},default:Bb},[$t]),{PostgrestClient:y2,PostgrestQueryBuilder:sW,PostgrestFilterBuilder:lW,PostgrestTransformBuilder:cW,PostgrestBuilder:dW,PostgrestError:uW}=Bb||v2;class x2{static detectEnvironment(){var e;if(typeof WebSocket<"u")return{type:"native",constructor:WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocket<"u")return{type:"native",constructor:globalThis.WebSocket};if(typeof global<"u"&&typeof global.WebSocket<"u")return{type:"native",constructor:global.WebSocket};if(typeof globalThis<"u"&&typeof globalThis.WebSocketPair<"u"&&typeof globalThis.WebSocket>"u")return{type:"cloudflare",error:"Cloudflare Workers detected. WebSocket clients are not supported in Cloudflare Workers.",workaround:"Use Cloudflare Workers WebSocket API for server-side WebSocket handling, or deploy to a different runtime."};if(typeof globalThis<"u"&&globalThis.EdgeRuntime||typeof navigator<"u"&&(!((e=navigator.userAgent)===null||e===void 0)&&e.includes("Vercel-Edge")))return{type:"unsupported",error:"Edge runtime detected (Vercel Edge/Netlify Edge). WebSockets are not supported in edge functions.",workaround:"Use serverless functions or a different deployment target for WebSocket functionality."};if(typeof process<"u"){const a=process.versions;if(a&&a.node){const i=a.node,r=parseInt(i.replace(/^v/,"").split(".")[0]);return r>=22?typeof globalThis.WebSocket<"u"?{type:"native",constructor:globalThis.WebSocket}:{type:"unsupported",error:`Node.js ${r} detected but native WebSocket not found.`,workaround:"Provide a WebSocket implementation via the transport option."}:{type:"unsupported",error:`Node.js ${r} detected without native WebSocket support.`,workaround:`For Node.js < 22, install "ws" package and provide it via the transport option:
496import ws from "ws"
497new RealtimeClient(url, { transport: ws })`}}}return{type:"unsupported",error:"Unknown JavaScript runtime without WebSocket support.",workaround:"Ensure you're running in a supported environment (browser, Node.js, Deno) or provide a custom WebSocket implementation."}}static getWebSocketConstructor(){const e=this.detectEnvironment();if(e.constructor)return e.constructor;let a=e.error||"WebSocket not supported in this environment.";throw e.workaround&&(a+=`
498
499Suggested solution: ${e.workaround}`),new Error(a)}static createWebSocket(e,a){const i=this.getWebSocketConstructor();return new i(e,a)}static isWebSocketSupported(){try{const e=this.detectEnvironment();return e.type==="native"||e.type==="ws"}catch{return!1}}}const w2="2.78.0",k2=`realtime-js/${w2}`,_2="1.0.0",fd=1e4,S2=1e3,C2=100;var Kr;(function(t){t[t.connecting=0]="connecting",t[t.open=1]="open",t[t.closing=2]="closing",t[t.closed=3]="closed"})(Kr||(Kr={}));var bt;(function(t){t.closed="closed",t.errored="errored",t.joined="joined",t.joining="joining",t.leaving="leaving"})(bt||(bt={}));var wa;(function(t){t.close="phx_close",t.error="phx_error",t.join="phx_join",t.reply="phx_reply",t.leave="phx_leave",t.access_token="access_token"})(wa||(wa={}));var bd;(function(t){t.websocket="websocket"})(bd||(bd={}));var Mi;(function(t){t.Connecting="connecting",t.Open="open",t.Closing="closing",t.Closed="closed"})(Mi||(Mi={}));class T2{constructor(){this.HEADER_LENGTH=1}decode(e,a){return e.constructor===ArrayBuffer?a(this._binaryDecode(e)):a(typeof e=="string"?JSON.parse(e):{})}_binaryDecode(e){const a=new DataView(e),i=new TextDecoder;return this._decodeBroadcast(e,a,i)}_decodeBroadcast(e,a,i){const r=a.getUint8(1),n=a.getUint8(2);let s=this.HEADER_LENGTH+2;const l=i.decode(e.slice(s,s+r));s=s+r;const c=i.decode(e.slice(s,s+n));s=s+n;const d=JSON.parse(i.decode(e.slice(s,e.byteLength)));return{ref:null,topic:l,event:c,payload:d}}}class Fb{constructor(e,a){this.callback=e,this.timerCalc=a,this.timer=void 0,this.tries=0,this.callback=e,this.timerCalc=a}reset(){this.tries=0,clearTimeout(this.timer),this.timer=void 0}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout(()=>{this.tries=this.tries+1,this.callback()},this.timerCalc(this.tries+1))}}var Je;(function(t){t.abstime="abstime",t.bool="bool",t.date="date",t.daterange="daterange",t.float4="float4",t.float8="float8",t.int2="int2",t.int4="int4",t.int4range="int4range",t.int8="int8",t.int8range="int8range",t.json="json",t.jsonb="jsonb",t.money="money",t.numeric="numeric",t.oid="oid",t.reltime="reltime",t.text="text",t.time="time",t.timestamp="timestamp",t.timestamptz="timestamptz",t.timetz="timetz",t.t
499srange="tsrange",t.tstzrange="tstzrange"})(Je||(Je={}));const vp=(t,e,a={})=>{var i;const r=(i=a.skipTypes)!==null&&i!==void 0?i:[];return e?Object.keys(e).reduce((n,s)=>(n[s]=j2(s,t,e,r),n),{}):{}},j2=(t,e,a,i)=>{const r=e.find(l=>l.name===t),n=r==null?void 0:r.type,s=a[t];return n&&!i.includes(n)?$b(n,s):vd(s)},$b=(t,e)=>{if(t.charAt(0)==="_"){const a=t.slice(1,t.length);return E2(e,a)}switch(t){case Je.bool:return N2(e);case Je.float4:case Je.float8:case Je.int2:case Je.int4:case Je.int8:case Je.numeric:case Je.oid:return P2(e);case Je.json:case Je.jsonb:return A2(e);case Je.timestamp:return I2(e);case Je.abstime:case Je.date:case Je.daterange:case Je.int4range:case Je.int8range:case Je.money:case Je.reltime:case Je.text:case Je.time:case Je.timestamptz:case Je.timetz:case Je.tsrange:case Je.tstzrange:return vd(e);default:return vd(e)}},vd=t=>t,N2=t=>{switch(t){case"t":return!0;case"f":return!1;default:return t}},P2=t=>{if(typeof t=="string"){const e=parseFloat(t);if(!Number.isNaN(e))return e}return t},A2=t=>{if(typeof t=="string")try{return JSON.parse(t)}catch(e){return`${e}`,t}return t},E2=(t,e)=>{if(typeof t!="string")return t;const a=t.length-1,i=t[a];if(t[0]==="{"&&i==="}"){let n;const s=t.slice(1,a);try{n=JSON.parse("["+s+"]")}catch{n=s?s.split(","):[]}return n.map(l=>$b(e,l))}return t},I2=t=>typeof t=="string"?t.replace(" ","T"):t,Vb=t=>{const e=new URL(t);return e.protocol=e.protocol.replace(/^ws/i,"http"),e.pathname=e.pathname.replace(/\/+$/,"").replace(/\/socket\/websocket$/i,"").replace(/\/socket$/i,"").replace(/\/websocket$/i,""),e.pathname===""||e.pathname==="/"?e.pathname="/api/broadcast":e.pathname=e.pathname+"/api/broadcast",e.href};class lc{constructor(e,a,i={},r=fd){this.channel=e,this.event=a,this.payload=i,this.timeout=r,this.sent=!1,this.timeoutTimer=void 0,this.ref="",this.receivedResp=null,this.recHooks=[],this.refEvent=null}resend(e){this.timeout=e,this._cancelRefEvent(),this.ref="",this.refEvent=null,this.receivedResp=null,this.sent=!1,this.send()}send(){this._hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload,ref:this.ref,join_ref:this.channel._joinRef()}))}updatePayload(e){this.payload=Object.assign(Object.assign({},this.payload),e)}receive(e,a){var i;return this._hasReceived(e)&&a((i=this.receivedResp)===null||i===void 0?void 0:i.response),this.recHooks.push({status:e,callback:a}),this}startTimeout(){if(this.timeoutTimer)return;this.ref=this.channel.socket._makeRef(),this.refEvent=this.channel._replyEventName(this.ref);const e=a=>{this._cancelRefEvent(),this._cancelTimeout(),this.receivedResp=a,this._matchReceive(a)};this.channel._on(this.refEvent,{},e),this.timeoutTimer=setTimeout(()=>{this.trigger("timeout",{})},this.timeout)}trigger(e,a){this.refEvent&&this.channel._trigger(this.refEvent,{status:e,response:a})}destroy(){this._cancelRefEvent(),this._cancelTimeout()}_cancelRefEvent(){this.refEvent&&this.channel._off(this.refEvent,{})}_cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=void 0}_matchReceive({status:e,response:a}){this.recHooks.filter(i=>i.status===e).forEach(i=>i.callback(a))}_hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}}var yp;(function(t){t.SYNC="sync",t.JOIN="join",t.LEAVE="leave"})(yp||(yp={}));class Yr{constructor(e,a){this.channel=e,this.state={},this.pendingDiffs=[],this.joinRef=null,this.enabled=!1,this.caller={onJoin:()=>{},onLeave:()=>{},onSync:()=>{}};const i=(a==null?void 0:a.events)||{state:"presence_state",diff:"presence_diff"};this.channel._on(i.state,{},r=>{const{onJoin:n,onLeave:s,onSync:l}=this.caller;this.joinRef=this.channel._joinRef(),this.state=Yr.syncState(this.state,r,n,s),this.pendingDiffs.forEach(c=>{this.state=Yr.syncDiff(this.state,c,n,s)}),this.pendingDiffs=[],l()}),this.channel._on(i.diff,{},r=>{const{onJoin:n,onLeave:s,onSync:l}=this.caller;this.inPendingSyncState()?this.pendingDiffs.push(r):(this.state=Yr.syncDiff(this.state,r,n,s),l())}),this.onJoin((r,n,s)=>{this.channel._trigger("presence",{event:"join",key:r,currentPresences:n,newPresences:s})}),this.onLeave((r,n,s)=>{this.channel._trigger("presence",{event:"leave",key:r,currentPresences:n,leftPresences:s})}),this.onSync(()=>{this.channel._trigger("presence",{event:"sync"})})}static syncState(e,a,i,r){const n=this.cloneDeep(e),s=this.transformState(a),l={},c={};return this.map(n,(d,u)=>{s[d]||(c[d]=u)}),this.map(s,(d,u)=>{const p=n[d];if(p){const f=u.map(b=>b.presence_ref),h=p.map(b=>b.presence_ref),v=u.filter(b=>h.indexOf(b.presence_ref)<0),g=p.filter(b=>f.indexOf(b.presence_ref)<0);v.length>0&&(l[d]=v),g.length>0&&(c[d]=g)}else l[d]=u}),this.syncDiff(n,{joins:l,leaves:c},i,r)}static syncDiff(e,a,i,r){const{joins:n,leaves:s}={joins:this.transformState(a.joins),leaves:this.transformState(a.leaves)};
499return i||(i=()=>{}),r||(r=()=>{}),this.map(n,(l,c)=>{var d;const u=(d=e[l])!==null&&d!==void 0?d:[];if(e[l]=this.cloneDeep(c),u.length>0){const p=e[l].map(h=>h.presence_ref),f=u.filter(h=>p.indexOf(h.presence_ref)<0);e[l].unshift(...f)}i(l,u,c)}),this.map(s,(l,c)=>{let d=e[l];if(!d)return;const u=c.map(p=>p.presence_ref);d=d.filter(p=>u.indexOf(p.presence_ref)<0),e[l]=d,r(l,d,c),d.length===0&&delete e[l]}),e}static map(e,a){return Object.getOwnPropertyNames(e).map(i=>a(i,e[i]))}static transformState(e){return e=this.cloneDeep(e),Object.getOwnPropertyNames(e).reduce((a,i)=>{const r=e[i];return"metas"in r?a[i]=r.metas.map(n=>(n.presence_ref=n.phx_ref,delete n.phx_ref,delete n.phx_ref_prev,n)):a[i]=r,a},{})}static cloneDeep(e){return JSON.parse(JSON.stringify(e))}onJoin(e){this.caller.onJoin=e}onLeave(e){this.caller.onLeave=e}onSync(e){this.caller.onSync=e}inPendingSyncState(){return!this.joinRef||this.joinRef!==this.channel._joinRef()}}var xp;(function(t){t.ALL="*",t.INSERT="INSERT",t.UPDATE="UPDATE",t.DELETE="DELETE"})(xp||(xp={}));var Qr;(function(t){t.BROADCAST="broadcast",t.PRESENCE="presence",t.POSTGRES_CHANGES="postgres_changes",t.SYSTEM="system"})(Qr||(Qr={}));var Ba;(function(t){t.SUBSCRIBED="SUBSCRIBED",t.TIMED_OUT="TIMED_OUT",t.CLOSED="CLOSED",t.CHANNEL_ERROR="CHANNEL_ERROR"})(Ba||(Ba={}));class Au{constructor(e,a={config:{}},i){var r,n;if(this.topic=e,this.params=a,this.socket=i,this.bindings={},this.state=bt.closed,this.joinedOnce=!1,this.pushBuffer=[],this.subTopic=e.replace(/^realtime:/i,""),this.params.config=Object.assign({broadcast:{ack:!1,self:!1},presence:{key:"",enabled:!1},private:!1},a.config),this.timeout=this.socket.timeout,this.joinPush=new lc(this,wa.join,this.params,this.timeout),this.rejoinTimer=new Fb(()=>this._rejoinUntilConnected(),this.socket.reconnectAfterMs),this.joinPush.receive("ok",()=>{this.state=bt.joined,this.rejoinTimer.reset(),this.pushBuffer.forEach(s=>s.send()),this.pushBuffer=[]}),this._onClose(()=>{this.rejoinTimer.reset(),this.socket.log("channel",`close ${this.topic} ${this._joinRef()}`),this.state=bt.closed,this.socket._remove(this)}),this._onError(s=>{this._isLeaving()||this._isClosed()||(this.socket.log("channel",`error ${this.topic}`,s),this.state=bt.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("timeout",()=>{this._isJoining()&&(this.socket.log("channel",`timeout ${this.topic}`,this.joinPush.timeout),this.state=bt.errored,this.rejoinTimer.scheduleTimeout())}),this.joinPush.receive("error",s=>{this._isLeaving()||this._isClosed()||(this.socket.log("channel",`error ${this.topic}`,s),this.state=bt.errored,this.rejoinTimer.scheduleTimeout())}),this._on(wa.reply,{},(s,l)=>{this._trigger(this._replyEventName(l),s)}),this.presence=new Yr(this),this.broadcastEndpointURL=Vb(this.socket.endPoint),this.private=this.params.config.private||!1,!this.private&&(!((n=(r=this.params.config)===null||r===void 0?void 0:r.broadcast)===null||n===void 0)&&n.replay))throw`tried to use replay on public channel '${this.topic}'. It must be a private channel.`}subscribe(e,a=this.timeout){var i,r,n;if(this.socket.isConnected()||this.socket.connect(),this.state==bt.closed){const{config:{broadcast:s,presence:l,private:c}}=this.params,d=(r=(i=this.bindings.postgres_changes)===null||i===void 0?void 0:i.map(h=>h.filter))!==null&&r!==void 0?r:[],u=!!this.bindings[Qr.PRESENCE]&&this.bindings[Qr.PRESENCE].length>0||((n=this.params.config.presence)===null||n===void 0?void 0:n.enabled)===!0,p={},f={broadcast:s,presence:Object.assign(Object.assign({},l),{enabled:u}),postgres_changes:d,private:c};this.socket.accessTokenValue&&(p.access_token=this.socket.accessTokenValue),this._onError(h=>e==null?void 0:e(Ba.CHANNEL_ERROR,h)),this._onClose(()=>e==null?void 0:e(Ba.CLOSED)),this.updateJoinPayload(Object.assign({config:f},p)),this.joinedOnce=!0,this._rejoin(a),this.joinPush.receive("ok",async({postgres_changes:h})=>{var v;if(this.socket.setAuth(),h===void 0){e==null||e(Ba.SUBSCRIBED);return}else{const g=this.bindings.postgres_changes,b=(v=g==null?void 0:g.length)!==null&&v!==void 0?v:0,x=[];for(let w=0;w<b;w++){const k=g[w],{filter:{event:_,schema:j,table:S,filter:C}}=k,N=h&&h[w];if(N&&N.event===_&&N.schema===j&&N.table===S&&N.filter===C)x.push(Object.assign(Object.assign({},k),{id:N.id}));else{this.unsubscribe(),this.state=bt.errored,e==null||e(Ba.CHANNEL_ERROR,new Error("mismatch between server and client bindings for postgres changes"));return}}this.bindings.postgres_changes=x,e&&e(Ba.SUBSCRIBED);return}}).receive("error",h=>{this.state=bt.errored,e==null||e(Ba.CHANNEL_ERROR,new Error(JSON.stringify(Object.values(h).join(", ")||"error")))}).receive("timeout",()=>{e==null||e(Ba.TIMED_OUT)})}return this}presenceState(){return this.presence.state}async track(e,a={}){return await this.send({type:"presence",event:"track",payload:e},a.timeout||this.timeout)}async untrack(e={}){return await this.send({type:"presence",event:"untrack"},e)}on(e,a,i){return this.state===bt.joined&&e===Qr.PRESENCE&&(this.socket.log("channel",`resubscribe to ${this.topic} due to change in presence callbacks on joined channel`),this.unsubscribe().then(()=>this.subscribe())),this._on(e,a,i)}async httpSend(e,a,i={}){var r;const n=this.socket.accessTokenValue?`Bearer ${this.socket.accessTokenValue}`:"";if(a==null)return Promise.reject("Payload is required for httpSend()");const s={method:"POST",headers:{Authorization:n,apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"},body:JSON.stringify({messages:[{topic:this.subTopic,event:e,payload:a,private:this.private}]})},l=await this._fetchWithTimeout(this.broadcastEndpointURL,s,(r=i.timeout)!==null&&r!==void 0?r:this.timeout);if(l.status===202)return{success:!0};let c=l.statusText;
499try{const d=await l.json();c=d.error||d.message||c}catch{}return Promise.reject(new Error(c))}async send(e,a={}){var i,r;if(!this._canPush()&&e.type==="broadcast"){console.warn("Realtime send() is automatically falling back to REST API. This behavior will be deprecated in the future. Please use httpSend() explicitly for REST delivery.");const{event:n,payload:s}=e,c={method:"POST",headers:{Authorization:this.socket.accessTokenValue?`Bearer ${this.socket.accessTokenValue}`:"",apikey:this.socket.apiKey?this.socket.apiKey:"","Content-Type":"application/json"},body:JSON.stringify({messages:[{topic:this.subTopic,event:n,payload:s,private:this.private}]})};try{const d=await this._fetchWithTimeout(this.broadcastEndpointURL,c,(i=a.timeout)!==null&&i!==void 0?i:this.timeout);return await((r=d.body)===null||r===void 0?void 0:r.cancel()),d.ok?"ok":"error"}catch(d){return d.name==="AbortError"?"timed out":"error"}}else return new Promise(n=>{var s,l,c;const d=this._push(e.type,e,a.timeout||this.timeout);e.type==="broadcast"&&!(!((c=(l=(s=this.params)===null||s===void 0?void 0:s.config)===null||l===void 0?void 0:l.broadcast)===null||c===void 0)&&c.ack)&&n("ok"),d.receive("ok",()=>n("ok")),d.receive("error",()=>n("error")),d.receive("timeout",()=>n("timed out"))})}updateJoinPayload(e){this.joinPush.updatePayload(e)}unsubscribe(e=this.timeout){this.state=bt.leaving;const a=()=>{this.socket.log("channel",`leave ${this.topic}`),this._trigger(wa.close,"leave",this._joinRef())};this.joinPush.destroy();let i=null;return new Promise(r=>{i=new lc(this,wa.leave,{},e),i.receive("ok",()=>{a(),r("ok")}).receive("timeout",()=>{a(),r("timed out")}).receive("error",()=>{r("error")}),i.send(),this._canPush()||i.trigger("ok",{})}).finally(()=>{i==null||i.destroy()})}teardown(){this.pushBuffer.forEach(e=>e.destroy()),this.pushBuffer=[],this.rejoinTimer.reset(),this.joinPush.destroy(),this.state=bt.closed,this.bindings={}}async _fetchWithTimeout(e,a,i){const r=new AbortController,n=setTimeout(()=>r.abort(),i),s=await this.socket.fetch(e,Object.assign(Object.assign({},a),{signal:r.signal}));return clearTimeout(n),s}_push(e,a,i=this.timeout){if(!this.joinedOnce)throw`tried to push '${e}' to '${this.topic}' before joining. Use channel.subscribe() before pushing events`;let r=new lc(this,e,a,i);return this._canPush()?r.send():this._addToPushBuffer(r),r}_addToPushBuffer(e){if(e.startTimeout(),this.pushBuffer.push(e),this.pushBuffer.length>C2){const a=this.pushBuffer.shift();a&&(a.destroy(),this.socket.log("channel",`discarded push due to buffer overflow: ${a.event}`,a.payload))}}_onMessage(e,a,i){return a}_isMember(e){return this.topic===e}_joinRef(){return this.joinPush.ref}_trigger(e,a,i){var r,n;const s=e.toLocaleLowerCase(),{close:l,error:c,leave:d,join:u}=wa;if(i&&[l,c,d,u].indexOf(s)>=0&&i!==this._joinRef())return;let f=this._onMessage(s,a,i);if(a&&!f)throw"channel onMessage callbacks must return the payload, modified or unmodified";["insert","update","delete"].includes(s)?(r=this.bindings.postgres_changes)===null||r===void 0||r.filter(h=>{var v,g,b;return((v=h.filter)===null||v===void 0?void 0:v.event)==="*"||((b=(g=h.filter)===null||g===void 0?void 0:g.event)===null||b===void 0?void 0:b.toLocaleLowerCase())===s}).map(h=>h.callback(f,i)):(n=this.bindings[s])===null||n===void 0||n.filter(h=>{var v,g,b,x,w,k;if(["broadcast","presence","postgres_changes"].includes(s))if("id"in h){const _=h.id,j=(v=h.filter)===null||v===void 0?void 0:v.event;return _&&((g=a.ids)===null||g===void 0?void 0:g.includes(_))&&(j==="*"||(j==null?void 0:j.toLocaleLowerCase())===((b=a.data)===null||b===void 0?void 0:b.type.toLocaleLowerCase()))}else{const _=(w=(x=h==null?void 0:h.filter)===null||x===void 0?void 0:x.event)===null||w===void 0?void 0:w.toLocaleLowerCase();return _==="*"||_===((k=a==null?void 0:a.event)===null||k===void 0?void 0:k.toLocaleLowerCase())}else return h.type.toLocaleLowerCase()===s}).map(h=>{if(typeof f=="object"&&"ids"in f){const v=f.data,{schema:g,table:b,commit_timestamp:x,type:w,errors:k}=v;f=Object.assign(Object.assign({},{schema:g,table:b,commit_timestamp:x,eventType:w,new:{},old:{},errors:k}),this._getPayloadRecords(v))}h.callback(f,i)})}_isClosed(){return this.state===bt.closed}_isJoined(){return this.state===bt.joined}_isJoining(){return this.state===bt.joining}_isLeaving(){return this.state===bt.leaving}_replyEventName(e){return`chan_reply_${e}`}_on(e,a,i){const r=e.toLocaleLowerCase(),n={type:r,filter:a,callback:i};return this.bindings[r]?this.bindings[r].push(n):this.bindings[r]=[n],this}_off(e,a){const i=e.toLocaleLowerCase();return this.bindings[i]&&(this.bindings[i]=this.bindings[i].filter(r=>{var n;return!(((n=r.type)===null||n===void 0?void 0:n.toLocaleLowerCase())===i&&Au.isEqual(r.filter,a))})),this}static isEqual(e,a){if(Object.keys(e).length!==Object.keys(a).length)return!1;for(const i in e)if(e[i]!==a[i])return!1;return!0}_rejoinUntilConnected(){this.rejoinTimer.scheduleTimeout(),this.socket.isConnected()&&this._rejoin()}_onClose(e){this._on(wa.close,{},e)}_onError(e){this._on(wa.error,{},a=>e(a))}_canPush(){return this.socket.isConnected()&&this._isJoined()}_rejoin(e=this.timeout){this._isLeaving()||(this.socket._leaveOpenTopic(this.topic),this.state=bt.joining,this.joinPush.resend(e))}_getPayloadRecords(e){const a={new:{},old:{}};return(e.type==="INSERT"||e.type==="UPDATE")&&(a.new=vp(e.columns,e.record)),(e.type==="UPDATE"||e.type==="DELETE")&&(a.old=vp(e.columns,e.old_record)),a}}const cc=()=>{},us={HEARTBEAT_INTERVAL:25e3,RECONNECT_DELAY:10,HEARTBEAT_TIMEOUT_FALLBACK:100},D2=[1e3,2e3,5e3,1e4],R2=1e4,L2=`
500  addEventListener("message", (e) => {
501    if (e.data.event === "start") {
502      setInterval(() => postMessage({ event: "keepAlive" }), e.data.interval);
503    }
504  });`;class O2{constructor(e,a){var i;if(this.accessTokenValue=null,this.apiKey=null,this.channels=new Array,this.endPoint="",this.httpEndpoint="",this.headers={},this.params={},this.timeout=fd,this.transport=null,this.heartbeatIntervalMs=us.HEARTBEAT_INTERVAL,this.heartbeatTimer=void 0,this.pendingHeartbeatRef=null,this.heartbeatCallback=cc,this.ref=0,this.reconnectTimer=null,this.logger=cc,this.conn=null,this.sendBuffer=[],this.serializer
504=new T2,this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.accessToken=null,this._connectionState="disconnected",this._wasManualDisconnect=!1,this._authPromise=null,this._resolveFetch=r=>{let n;return r?n=r:typeof fetch>"u"?n=(...s)=>H(async()=>{const{default:l}=await Promise.resolve().then(()=>uo);return{default:l}},void 0).then(({default:l})=>l(...s)).catch(l=>{throw new Error(`Failed to load @supabase/node-fetch: ${l.message}. This is required for HTTP requests in Node.js environments without native fetch.`)}):n=fetch,(...s)=>n(...s)},!(!((i=a==null?void 0:a.params)===null||i===void 0)&&i.apikey))throw new Error("API key is required to connect to Realtime");this.apiKey=a.params.apikey,this.endPoint=`${e}/${bd.websocket}`,this.httpEndpoint=Vb(e),this._initializeOptions(a),this._setupReconnectionTimer(),this.fetch=this._resolveFetch(a==null?void 0:a.fetch)}connect(){if(!(this.isConnecting()||this.isDisconnecting()||this.conn!==null&&this.isConnected())){if(this._setConnectionState("connecting"),this._setAuthSafely("connect"),this.transport)this.conn=new this.transport(this.endpointURL());else try{this.conn=x2.createWebSocket(this.endpointURL())}catch(e){this._setConnectionState("disconnected");const a=e.message;throw a.includes("Node.js")?new Error(`${a}
505
506To use Realtime in Node.js, you need to provide a WebSocket implementation:
507
508Option 1: Use Node.js 22+ which has native WebSocket support
509Option 2: Install and provide the "ws" package:
510
511  npm install ws
512
513  import ws from "ws"
514  const client = new RealtimeClient(url, {
515    ...options,
516    transport: ws
517  })`):new Error(`WebSocket not available: ${a}`)}this._setupConnectionHandlers()}}endpointURL(){return this._appendParams(this.endPoint,Object.assign({},this.params,{vsn:_2}))}disconnect(e,a){if(!this.isDisconnecting())if(this._setConnectionState("disconnecting",!0),this.conn){const i=setTimeout(()=>{this._setConnectionState("disconnected")},100);this.conn.onclose=()=>{clearTimeout(i),this._setConnectionState("disconnected")},e?this.conn.close(e,a??""):this.conn.close(),this._teardownConnection()}else this._setConnectionState("disconnected")}getChannels(){return this.channels}async removeChannel(e){const a=await e.unsubscribe();return this.channels.length===0&&this.disconnect(),a}async removeAllChannels(){const e=await Promise.all(this.channels.map(a=>a.unsubscribe()));return this.channels=[],this.disconnect(),e}log(e,a,i){this.logger(e,a,i)}connectionState(){switch(this.conn&&this.conn.readyState){case Kr.connecting:return Mi.Connecting;case Kr.open:return Mi.Open;case Kr.closing:return Mi.Closing;default:return Mi.Closed}}isConnected(){return this.connectionState()===Mi.Open}isConnecting(){return this._connectionState==="connecting"}isDisconnecting(){return this._connectionState==="disconnecting"}channel(e,a={config:{}}){const i=`realtime:${e}`,r=this.getChannels().find(n=>n.topic===i);if(r)return r;{const n=new Au(`realtime:${e}`,a,this);return this.channels.push(n),n}}push(e){const{topic:a,event:i,payload:r,ref:n}=e,s=()=>{this.encode(e,l=>{var c;(c=this.conn)===null||c===void 0||c.send(l)})};this.log("push",`${a} ${i} (${n})`,r),this.isConnected()?s():this.sendBuffer.push(s)}async setAuth(e=null){this._authPromise=this._performAuth(e);try{await this._authPromise}finally{this._authPromise=null}}async sendHeartbeat(){var e;if(!this.isConnected()){try{this.heartbeatCallback("disconnected")}catch(a){this.log("error","error in heartbeat callback",a)}return}if(this.pendingHeartbeatRef){this.pendingHeartbeatRef=null,this.log("transport","heartbeat timeout. Attempting to re-establish connection");try{this.heartbeatCallback("timeout")}catch(a){this.log("error","error in heartbeat callback",a)}this._wasManualDisconnect=!1,(e=this.conn)===null||e===void 0||e.close(S2,"heartbeat timeout"),setTimeout(()=>{var a;this.isConnected()||(a=this.reconnectTimer)===null||a===void 0||a.scheduleTimeout()},us.HEARTBEAT_TIMEOUT_FALLBACK);return}this.pendingHeartbeatRef=this._makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef});try{this.heartbeatCallback("sent")}catch(a){this.log("error","error in heartbeat callback",a)}this._setAuthSafely("heartbeat")}onHeartbeat(e){this.heartbeatCallback=e}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>
5170&&(this.sendBuffer.forEach(e=>e()),this.sendBuffer=[])}_makeRef(){let e=this.ref+1;return e===this.ref?this.ref=0:this.ref=e,this.ref.toString()}_leaveOpenTopic(e){let a=this.channels.find(i=>i.topic===e&&(i._isJoined()||i._isJoining()));a&&(this.log("transport",`leaving duplicate topic "${e}"`),a.unsubscribe())}_remove(e){this.channels=this.channels.filter(a=>a.topic!==e.topic)}_onConnMessage(e){this.decode(e.data,a=>{if(a.topic==="phoenix"&&a.event==="phx_reply")try{this.heartbeatCallback(a.payload.status==="ok"?"ok":"error")}catch(d){this.log("error","error in heartbeat callback",d)}a.ref&&a.ref===this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null);const{topic:i,event:r,payload:n,ref:s}=a,l=s?`(${s})`:"",c=n.status||"";this.log("receive",`${c} ${i} ${r} ${l}`.trim(),n),this.channels.filter(d=>d._isMember(i)).forEach(d=>d._trigger(r,n,s)),this._triggerStateCallbacks("message",a)})}_clearTimer(e){var a;e==="heartbeat"&&this.heartbeatTimer?(clearInterval(this.heartbeatTimer),this.heartbeatTimer=void 0):e==="reconnect"&&((a=this.reconnectTimer)===null||a===void 0||a.reset())}_clearAllTimers(){this._clearTimer("heartbeat"),this._clearTimer("reconnect")}_setupConnectionHandlers(){this.conn&&("binaryType"in this.conn&&(this.conn.binaryType="arraybuffer"),this.conn.onopen=()=>this._onConnOpen(),this.conn.onerror=e=>this._onConnError(e),this.conn.onmessage=e=>this._onConnMessage(e),this.conn.onclose=e=>this._onConnClose(e))}_teardownConnection(){this.conn&&(this.conn.onopen=null,this.conn.onerror=null,this.conn.onmessage=null,this.conn.onclose=null,this.conn=null),this._clearAllTimers(),this.channels.forEach(e=>e.teardown())}_onConnOpen(){this._setConnectionState("connected"),this.log("transport",`connected to ${this.endpointURL()}`),this.flushSendBuffer(),this._clearTimer("reconnect"),this.worker?this.workerRef||this._startWorkerHeartbeat():this._startHeartbeat(),this._triggerStateCallbacks("open")}_startHeartbeat(){this.heartbeatTimer&&clearInterval(this.heartbeatTimer),this.heartbeatTimer=setInterval(()=>this.sendHeartbeat(),this.heartbeatIntervalMs)}_startWorkerHeartbeat(){this.workerUrl?this.log("worker",`starting worker for from ${this.workerUrl}`):this.log("worker","starting default worker");const e=this._workerObjectUrl(this.workerUrl);this.workerRef=new Worker(e),this.workerRef.onerror=a=>{this.log("worker","worker error",a.message),this.workerRef.terminate()},this.workerRef.onmessage=a=>{a.data.event==="keepAlive"&&this.sendHeartbeat()},this.workerRef.postMessage({event:"start",interval:this.heartbeatIntervalMs})}_onConnClose(e){var a;this._setConnectionState("disconnected"),this.log("transport","close",e),this._triggerChanError(),this._clearTimer("heartbeat"),this._wasManualDisconnect||(a=this.reconnectTimer)===null||a===void 0||a.scheduleTimeout(),this._triggerStateCallbacks("close",e)}_onConnError(e){this._setConnectionState("disconnected"),this.log("transport",`${e}`),this._triggerChanError(),this._triggerStateCallbacks("error",e)}_triggerChanError(){this.channels.forEach(e=>e._trigger(wa.error))}_appendParams(e,a){if(Object.keys(a).length===0)return e;const i=e.match(/\?/)?"&":"?",r=new URLSearchParams(a);return`${e}${i}${r}`}_workerObjectUrl(e){let a;if(e)a=e;else{const i=new Blob([L2],{type:"application/javascript"});a=URL.createObjectURL(i)}return a}_setConnectionState(e,a=!1){this._connectionState=e,e==="connecting"?this._wasManualDisconnect=!1:e==="disconnecting"&&(this._wasManualDisconnect=a)}async _performAuth(e=null){let a;e?a=e:this.accessToken?a=await this.accessToken():a=this.accessTokenValue,this.accessTokenValue!=a&&(this.accessTokenValue=a,this.channels.forEach(i=>{const r={access_token:a,version:k2};a&&i.updateJoinPayload(r),i.joinedOnce&&i._isJoined()&&i._push(wa.access_token,{access_token:a})}))}async _waitForAuthIfNeeded(){this._authPromise&&await this._authPromise}_setAuthSafely(e="general"){this.setAuth().catch(a=>{this.log("error",`error setting auth in ${e}`,a)})}_triggerStateCallbacks(e,a){try{this.stateChangeCallbacks[e].forEach(i=>{try{i(a)}catch(r){this.log("error",`error in ${e} callback`,r)}})}catch(i){this.log("error",`error triggering ${e} callbacks`,i)}}_setupReconnectionTimer(){this.reconnectTimer=new Fb(async()=>{setTimeout(async()=>{await this._waitForAuthIfNeeded(),this.isConnected()||this.connect()},us.RECONNECT_DELAY)},this.reconnectAfterMs)}_initializeOptions(e){var a,i,r,n,s,l,c,d,u;if(this.transport=(a=e==null?void 0:e.transport)!==null&&a!==void 0?a:null,this.timeout=(i=e==null?void 0:e.timeout)!==null&&i!==void 0?i:fd,this.heartbeatIntervalMs=(r=e==null?void 0:e.heartbeatIntervalMs)!==null&&r!==void 0?r:us.HEARTBEAT_INTERVAL,this.worker=(n=e==null?void 0:e.worker)!==null&&n!==void 0?n:!1,this.accessToken=(s=e==null?void 0:e.accessToken)!==null&&s!==void 0?s:null,this.heartbeatCallback=(l=e==null?void 0:e.heartbeatCallback)!==null&&l!==void 0?l:cc,e!=null&&e.params&&(this.params=e.params),e!=null&&e.logger&&(this.logger=e.logger),(e!=null&&e.logLevel||e!=null&&e.log_level)&&(this.logLevel=e.logLevel||e.log_level,this.params=Object.assign(Object.assign({},this.params),{log_level:this.logLevel})),this.reconnectAfterMs=(c=e==null?void 0:e.reconnectAfterMs)!==null&&c!==void 0?c:p=>D2[p-1]||R2,this.encode=(d=e==null?void 0:e.encode)!==null&&d!==void 0?d:(p,f)=>f(JSON.stringify(p)),this.decode=(u=e==null?void 0:e.decode)!==null&&u!==void 0?u:this.serializer.decode.bind(this.serializer),this.worker){if(typeof window<"u"&&!window.Worker)throw new Error("Web Worker is not supported");this.workerUrl=e==null?void 0:e.workerUrl}}}
517class Eu extends Error{constructor(e){super(e),this.__isStorageError=!0,this.name="StorageError"}}function at(t){return typeof t=="object"&&t!==null&&"__isStorageError"in t}class M2 extends Eu{constructor(e,a,i){super(e),this.name="StorageApiError",this.status=a,this.statusCode=i}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}}class yd extends Eu{constructor(e,a){super(e),this.name="StorageUnknownError",this.originalError=a}}const Iu=t=>{let e;return t?e=t:typeof fetch>"u"?e=(...a)=>H(async()=>{const{default:i}=await Promise.resolve().then(()=>uo);return{default:i}},void 0).then(({default:i})=>i(...a)):e=fetch,(...a)=>e(...a)},z2=()=>de(void 0,void 0,void 0,function*(){return typeof Response>"u"?(yield H(()=>Promise.resolve().then(()=>uo),void 0)).Response:Response}),xd=t=>{if(Array.isArray(t))return t.map(a=>xd(a));if(typeof t=="function"||t!==Object(t))return t;const e={};return Object.entries(t).forEach(([a,i])=>{const r=a.replace(/([-_][a-z])/gi,n=>n.toUpperCase().replace(/[-_]/g,""));e[r]=xd(i)}),e},B2=t=>{if(typeof t!="object"||t===null)return!1;const e=Object.getPrototypeOf(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},dc=t=>{var e;return t.msg||t.message||t.error_description||(typeof t.error=="string"?t.error:(e=t.error)===null||e===void 0?void 0:e.message)||JSON.stringify(t)},F2=(t,e,a)=>de(void 0,void 0,void 0,function*(){const i=yield z2();t instanceof i&&!(a!=null&&a.noResolveJson)?t.json().then(r=>{const n=t.status||500,s=(r==null?void 0:r.statusCode)||n+"";e(new M2(dc(r),n,s))}).catch(r=>{e(new yd(dc(r),r))}):e(new yd(dc(t),t))}),$2=(t,e,a,i)=>{const r={method:t,headers:(e==null?void 0:e.headers)||{}};return t==="GET"||!i?r:(B2(i)?(r.headers=Object.assign({"Content-Type":"application/json"},e==null?void 0:e.headers),r.body=JSON.stringify(i)):r.body=i,e!=null&&e.duplex&&(r.duplex=e.duplex),Object.assign(Object.assign({},r),a))};function $n(t,e,a,i,r,n){return de(this,void 0,void 0,function*(){return new Promise((s,l)=>{t(a,$2(e,i,r,n)).then(c=>{if(!c.ok)throw c;return i!=null&&i.noResolveJson?c:c.json()}).then(c=>s(c)).catch(c=>F2(c,l,i))})})}function gn(t,e,a,i){return de(this,void 0,void 0,function*(){return $n(t,"GET",e,a,i)})}function va(t,e,a,i,r){return de(this,void 0,void 0,function*(){return $n(t,"POST",e,i,r,a)})}function wd(t,e,a,i,r){return de(this,void 0,void 0,function*(){return $n(t,"PUT",e,i,r,a)})}function V2(t,e,a,i){return de(this,void 0,void 0,function*(){return $n(t,"HEAD",e,Object.assign(Object.assign({},a),{noResolveJson:!0}),i)})}function Du(t,e,a,i,r){return de(this,void 0,void 0,function*(){return $n(t,"DELETE",e,i,r,a)})}class U2{constructor(e,a){this.downloadFn=e,this.shouldThrowOnError=a}then(e,a){return this.execute().then(e,a)}execute(){return de(this,void 0,void 0,function*(){try{return{data:(yield this.downloadFn()).body,error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(at(e))return{data:null,error:e};throw e}})}}var Ub;class q2{constructor(e,a){this.downloadFn=e,this.shouldThrowOnError=a,this[Ub]="BlobDownloadBuilder",this.promise=null}asStream(){return new U2(this.downloadFn,this.shouldThrowOnError)}then(e,a){return this.getPromise().then(e,a)}catch(e){return this.getPromise().catch(e)}finally(e){return this.getPromise().finally(e)}getPromise(){return this.promise||(this.promise=this.execute()),this.promise}execute(){return de(this,void 0,void 0,function*(){try{return{data:yield(yield this.downloadFn()).blob(),error:null}}catch(e){if(this.shouldThrowOnError)throw e;if(at(e))return{data:null,error:e};throw e}})}}Ub=Symbol.toStringTag;const G2={limit:100,offset:0,sortBy:{column:"name",order:"asc"}},wp={cacheControl:"3600",contentType:"text/plain;charset=UTF-8",upsert:!1};class W2{constructor(e,a={},i,r){this.shouldThrowOnError=!1,this.url=e,this.headers=a,this.bucketId=i,this.fetch=Iu(r)}throwOnError(){return this.shouldThrowOnError=!0,this}uploadOrUpdate(e,a,i,r){return de(this,void 0,void 0,function*(){try{let n;const s=Object.assign(Object.assign({},wp),r);let l=Object.assign(Object.assign({},this.headers),e==="POST"&&{"x-upsert":String(s.upsert)});const c=s.metadata;typeof Blob<"u"&&i instanceof Blob?(n=new FormData,n.append("cacheControl",s.cacheControl),c&&n.append("metadata",this.encodeMetadata(c)),n.append("",i)):typeof FormData<"u"&&i instanceof FormData?(n=i,n.append("cacheControl",s.cacheControl),c&&n.append("metadata",this.encodeMetadata(c))):(n=i,l["cache-control"]=`max-age=${s.cacheControl}`,l["content-type"]=s.contentType,c&&(l["x-metadata"]=this.toBase64(this.encodeMetadata(c)))),r!=null&&r.headers&&(l=Object.assign(Object.assign({},l),r.headers));const d=this._removeEmptyFolders(a),u=this._getFinalPath(d),p=yield(e=="PUT"?wd:va)(this.fetch,`${this.url}/object/${u}`,n,Object.assign({headers:l},s!=null&&s.duplex?{duplex:s.duplex}:{}));return{data:{path:d,id:p.Id,fullPath:p.Key},error:null}}catch(n){if(this.shouldThrowOnError)throw n;if(at(n))return{data:null,error:n};throw n}})}upload(e,a,i){return de(this,void 0,void 0,function*(){return this.uploadOrUpdate("POST",e,a,i)})}uploadToSignedUrl(e,a,i,r){return de(this,void 0,void 0,function*(){const n=this._removeEmptyFolders(e),s=this._getFinalPath(n),l=new URL(this.url+`/object/upload/sign/${s}`);l.searchParams.set("token",a);try{let c;const d=Object.assign({upsert:wp.upsert},r),u=Object.assign(Object.assign({},this.headers),{"x-upsert":String(d.upsert)});typeof Blob<"u"&&i instanceof Blob?(c=new FormData,c.append("cacheControl",d.cacheControl),c.append("",i)):typeof FormData<"u"&&i instanceof FormData?(c=i,c.append("cacheControl",d.cacheControl)):(c=i,u["cache-control"]=`max-age=${d.cacheControl}`,u["content-type"]=d.contentType);const p=yield wd(this.fetch,l.toString(),c,{headers:u});return{data:{path:n,fullPath:p.Key},error:null}}catch(c){if(this.shouldThrowOnError)throw c;if(at(c))return{data:null,error:c};throw c}})}createSignedUploadUrl(e,a){return de(this,void 0,void 0,function*(){try{let i=this._getFinalPath(e);const r=Object.assign({},this.headers);a!=null&&a.upsert&&(r["x-upsert"]="true");const n=yield va(this.fetch,`${this.url}/object/upload/sign/${i}`,{},{headers:r}),s=new URL(this.url+n.url),l=s.searchParams.get("token");if(!l)throw new Eu("No token returned by API");return{data:{signedUrl:s.toString(),path:e,token:l},error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(at(i))return{data:null,error:i};throw i}})}update(e,a,i){return de(this,void 0,void 0,function*(){return this.uploadOrUpdate("PUT",e,a,i)})}move(e,a,i){return de(this,void 0,void 0,function*(){try{return{data:yield va(this.fetch,`${this.url}/object/move`,{bucketId:this.bucketId,sourceKey:e,destinationKey:a,destinationBucket:i==null?void 0:i.destinationBucket},{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(at(r))return{data:null,error:r};throw r}})}copy(e,a,i){return de(this,void 0,void 0,function*(){try{return{data:{path:(yield va(this.fetch,`${this.url}/object/copy`,{bucketId:this.bucketId,sourceKey:e,destinationKey:a,destinationBucket:i==null?void 0:i.destinationBucket},{headers:this.headers})).Key},error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(at(r))return{data:null,error:r};throw r}})}createSignedUrl(e,a,i){return de(this,void 0,void 0,function*(){try{let r=this._getFinalPath(e),n=yield va(this.fetch,`${this.url}/object/sign/${r}
517`,Object.assign({expiresIn:a},i!=null&&i.transform?{transform:i.transform}:{}),{headers:this.headers});const s=i!=null&&i.download?`&download=${i.download===!0?"":i.download}`:"";return n={signedUrl:encodeURI(`${this.url}${n.signedURL}${s}`)},{data:n,error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(at(r))return{data:null,error:r};throw r}})}createSignedUrls(e,a,i){return de(this,void 0,void 0,function*(){try{const r=yield va(this.fetch,`${this.url}/object/sign/${this.bucketId}`,{expiresIn:a,paths:e},{headers:this.headers}),n=i!=null&&i.download?`&download=${i.download===!0?"":i.download}`:"";return{data:r.map(s=>Object.assign(Object.assign({},s),{signedUrl:s.signedURL?encodeURI(`${this.url}${s.signedURL}${n}`):null})),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(at(r))return{data:null,error:r};throw r}})}download(e,a){const r=typeof(a==null?void 0:a.transform)<"u"?"render/image/authenticated":"object",n=this.transformOptsToQueryString((a==null?void 0:a.transform)||{}),s=n?`?${n}`:"",l=this._getFinalPath(e),c=()=>gn(this.fetch,`${this.url}/${r}/${l}${s}`,{headers:this.headers,noResolveJson:!0});return new q2(c,this.shouldThrowOnError)}info(e){return de(this,void 0,void 0,function*(){const a=this._getFinalPath(e);try{const i=yield gn(this.fetch,`${this.url}/object/info/${a}`,{headers:this.headers});return{data:xd(i),error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(at(i))return{data:null,error:i};throw i}})}exists(e){return de(this,void 0,void 0,function*(){const a=this._getFinalPath(e);try{return yield V2(this.fetch,`${this.url}/object/${a}`,{headers:this.headers}),{data:!0,error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(at(i)&&i instanceof yd){const r=i.originalError;if([400,404].includes(r==null?void 0:r.status))return{data:!1,error:i}}throw i}})}getPublicUrl(e,a){const i=this._getFinalPath(e),r=[],n=a!=null&&a.download?`download=${a.download===!0?"":a.download}`:"";n!==""&&r.push(n);const l=typeof(a==null?void 0:a.transform)<"u"?"render/image":"object",c=this.transformOptsToQueryString((a==null?void 0:a.transform)||{});c!==""&&r.push(c);let d=r.join("&");return d!==""&&(d=`?${d}`),{data:{publicUrl:encodeURI(`${this.url}/${l}/public/${i}${d}`)}}}remove(e){return de(this,void 0,void 0,function*(){try{return{data:yield Du(this.fetch,`${this.url}/object/${this.bucketId}`,{prefixes:e},{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(at(a))return{data:null,error:a};throw a}})}list(e,a,i){return de(this,void 0,void 0,function*(){try{const r=Object.assign(Object.assign(Object.assign({},G2),a),{prefix:e||""});return{data:yield va(this.fetch,`${this.url}/object/list/${this.bucketId}`,r,{headers:this.headers},i),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(at(r))return{data:null,error:r};throw r}})}listV2(e,a){return de(this,void 0,void 0,function*(){try{const i=Object.assign({},e);return{data:yield va(this.fetch,`${this.url}/object/list-v2/${this.bucketId}`,i,{headers:this.headers},a),error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(at(i))return{data:null,error:i};throw i}})}encodeMetadata(e){return JSON.stringify(e)}toBase64(e){return typeof Buffer<"u"?Buffer.from(e).toString("base64"):btoa(e)}_getFinalPath(e){return`${this.bucketId}/${e.replace(/^\/+/,"")}`}_removeEmptyFolders(e){return e.replace(/^\/|\/$/g,"").replace(/\/+/g,"/")}transformOptsToQueryString(e){const a=[];return e.width&&a.push(`width=${e.width}`),e.height&&a.push(`height=${e.height}`),e.resize&&a.push(`resize=${e.resize}`),e.format&&a.push(`format=${e.format}`),e.quality&&a.push(`quality=${e.quality}`),a.join("&")}}const qb="2.78.0",Gb={"X-Client-Info":`storage-js/${qb}`};class H2{constructor(e,a={},i,r){this.shouldThrowOnError=!1;const n=new URL(e);r!=null&&r.useNewHostname&&/supabase\.(co|in|red)$/.test(n.hostname)&&!n.hostname.includes("storage.supabase.")&&(n.hostname=n.hostname.replace("supabase.","storage.supabase.")),this.url=n.href.replace(/\/$/,""),this.headers=Object.assign(Object.assign({},Gb),a),this.fetch=Iu(i)}throwOnError(){return this.shouldThrowOnError=!0,this}listBuckets(e){return de(this,void 0,void 0,function*(){try{const a=this.listBucketOptionsToQueryString(e);return{data:yield gn(this.fetch,`${this.url}/bucket${a}`,{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(at(a))return{data:null,error:a};throw a}})}getBucket(e){return de(this,void 0,void 0,function*(){try{return{data:yield gn(this.fetch,`${this.url}/bucket/${e}`,{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(at(a))return{data:null,error:a};throw a}})}createBucket(e){return de(this,arguments,void 0,function*(a,i={public:!1}){try{return{data:yield va(this.fetch,`${this.url}/bucket`,{id:a,name:a,type:i.type,public:i.public,file_size_limit:i.fileSizeLimit,allowed_mime_types:i.allowedMimeTypes},{headers:this.headers}),error:null}}catch(r){if(this.shouldThrowOnError)throw r;if(at(r))return{data:null,error:r};throw r}})}updateBucket(e,a){return de(this,void 0,void 0,function*(){try{return{data:yield wd(this.fetch,`${this.url}/bucket/${e}`,{id:e,name:e,public:a.public,file_size_limit:a.fileSizeLimit,allowed_mime_types:a.allowedMimeTypes},{headers:this.headers}),error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(at(i))return{data:null,error:i};throw i}})}emptyBucket(e){return de(this,void 0,void 0,function*(){try{return{data:yield va(this.fetch,`${this.url}/bucket/${e}/empty`,{},{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(at(a))return{data:null,error:a};throw a}})}deleteBucket(e){return de(this,void 0,void 0,function*(){try{return{data:yield Du(this.fetch,`${this.url}/bucket/${e}`,{},{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(at(a))return{data:null,error:a};throw a}})}listBucketOptionsToQueryString(e){const a={};return e&&("limit"in e&&(a.limit=String(e.limit)),"offset"in e&&(a.offset=String(e.offset)),e.search&&(a.search=e.search),e.sortColumn&&(a.sortColumn=e.sortColumn),e.sortOrder&&(a.sortOrder=e.sortOrder)),Object.keys(a).length>0?"?"+new URLSearchParams(a).toString():""}}class K2{constructor(e,a={},i){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,""),this.headers=Object.assign(Object.assign({},Gb),a),this.fetch=Iu(i)}throwOnError(){return this.shouldThrowOnError=!0,this}createBucket(e){return de(this,void 0,void 0,function*(){try{return{data:yield va(this.fetch,`${this.url}/bucket`,{name:e},{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(at(a))return{data:null,error:a};throw a}})}listBuckets(e){return de(this,void 0,void 0,function*(){try{const a=new URLSearchParams;(e==null?void 0:e.limit)!==void 0&&a.set("limit",e.limit.toString()),(e==null?void 0:e.offset)!==void 0&&a.set("offset",e.offset.toString()),e!=null&&e.sortColumn&&a.set("sortColumn",e.sortColumn),e!=null&&e.sortOrder&&a.set("sortOrder",e.sortOrder),e!=null&&e.search&&a.set("search",e.search);const i=a.toString(),r=i?`${this.url}/bucket?${i}`:`${this.url}/bucket`;return{data:yield gn(this.fetch,r,{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(at(a))return{data:null,error:a};throw a}})}deleteBucket(e){return de(this,void 0,void 0,function*(){try{return{data:yield Du(this.fetch,`${this.url}/bucket/${e}`,{},{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(at(a))return{data:null,error:a};throw a}})}}const Ru={"X-Client-Info":`storage-js/${qb}`,"Content-Type":"application/json"};
517class Wb extends Error{constructor(e){super(e),this.__isStorageVectorsError=!0,this.name="StorageVectorsError"}}function aa(t){return typeof t=="object"&&t!==null&&"__isStorageVectorsError"in t}class uc extends Wb{constructor(e,a,i){super(e),this.name="StorageVectorsApiError",this.status=a,this.statusCode=i}toJSON(){return{name:this.name,message:this.message,status:this.status,statusCode:this.statusCode}}}class Y2 extends Wb{constructor(e,a){super(e),this.name="StorageVectorsUnknownError",this.originalError=a}}var kp;(function(t){t.InternalError="InternalError",t.S3VectorConflictException="S3VectorConflictException",t.S3VectorNotFoundException="S3VectorNotFoundException",t.S3VectorBucketNotEmpty="S3VectorBucketNotEmpty",t.S3VectorMaxBucketsExceeded="S3VectorMaxBucketsExceeded",t.S3VectorMaxIndexesExceeded="S3VectorMaxIndexesExceeded"})(kp||(kp={}));const Lu=t=>{let e;return t?e=t:typeof fetch>"u"?e=(...a)=>H(async()=>{const{default:i}=await Promise.resolve().then(()=>uo);return{default:i}},void 0).then(({default:i})=>i(...a)):e=fetch,(...a)=>e(...a)},Q2=t=>{if(typeof t!="object"||t===null)return!1;const e=Object.getPrototypeOf(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)},_p=t=>t.msg||t.message||t.error_description||t.error||JSON.stringify(t),J2=(t,e,a)=>de(void 0,void 0,void 0,function*(){if(t&&typeof t=="object"&&"status"in t&&"ok"in t&&typeof t.status=="number"&&!(a!=null&&a.noResolveJson)){const r=t.status||500,n=t;if(typeof n.json=="function")n.json().then(s=>{const l=(s==null?void 0:s.statusCode)||(s==null?void 0:s.code)||r+"";e(new uc(_p(s),r,l))}).catch(()=>{const s=r+"",l=n.statusText||`HTTP ${r} error`;e(new uc(l,r,s))});else{const s=r+"",l=n.statusText||`HTTP ${r} error`;e(new uc(l,r,s))}}else e(new Y2(_p(t),t))}),X2=(t,e,a,i)=>{const r={method:t,headers:(e==null?void 0:e.headers)||{}};return i?(Q2(i)?(r.headers=Object.assign({"Content-Type":"application/json"},e==null?void 0:e.headers),r.body=JSON.stringify(i)):r.body=i,Object.assign(Object.assign({},r),a)):r};function Z2(t,e,a,i,r,n){return de(this,void 0,void 0,function*(){return new Promise((s,l)=>{t(a,X2(e,i,r,n)).then(c=>{if(!c.ok)throw c;if(i!=null&&i.noResolveJson)return c;const d=c.headers.get("content-type");return!d||!d.includes("application/json")?{}:c.json()}).then(c=>s(c)).catch(c=>J2(c,l,i))})})}function ia(t,e,a,i,r){return de(this,void 0,void 0,function*(){return Z2(t,"POST",e,i,r,a)})}class eS{constructor(e,a={},i){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,""),this.headers=Object.assign(Object.assign({},Ru),a),this.fetch=Lu(i)}throwOnError(){return this.shouldThrowOnError=!0,this}createIndex(e){return de(this,void 0,void 0,function*(){try{return{data:(yield ia(this.fetch,`${this.url}/CreateIndex`,e,{headers:this.headers}))||{},error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(aa(a))return{data:null,error:a};throw a}})}getIndex(e,a){return de(this,void 0,void 0,function*(){try{return{data:yield ia(this.fetch,`${this.url}/GetIndex`,{vectorBucketName:e,indexName:a},{headers:this.headers}),error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(aa(i))return{data:null,error:i};throw i}})}listIndexes(e){return de(this,void 0,void 0,function*(){try{return{data:yield ia(this.fetch,`${this.url}/ListIndexes`,e,{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(aa(a))return{data:null,error:a};throw a}})}deleteIndex(e,a){return de(this,void 0,void 0,function*(){try{return{data:(yield ia(this.fetch,`${this.url}/DeleteIndex`,{vectorBucketName:e,indexName:a},{headers:this.headers}))||{},error:null}}catch(i){if(this.shouldThrowOnError)throw i;if(aa(i))return{data:null,error:i};throw i}})}}class tS{constructor(e,a={},i){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,""),this.headers=Object.assign(Object.assign({},Ru),a),this.fetch=Lu(i)}throwOnError(){return this.shouldThrowOnError=!0,this}putVectors(e){return de(this,void 0,void 0,function*(){try{if(e.vectors.length<1||e.vectors.length>500)throw new Error("Vector batch size must be between 1 and 500 items");return{data:(yield ia(this.fetch,`${this.url}/PutVectors`,e,{headers:this.headers}))||{},error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(aa(a))return{data:null,error:a};throw a}})}getVectors(e){return de(this,void 0,void 0,function*(){try{return{data:yield ia(this.fetch,`${this.url}/GetVectors`,e,{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(aa(a))return{data:null,error:a};throw a}})}listVectors(e){return de(this,void 0,void 0,function*(){try{if(e.segmentCount!==void 0){if(e.segmentCount<1||e.segmentCount>16)throw new Error("segmentCount must be between 1 and 16");
517if(e.segmentIndex!==void 0&&(e.segmentIndex<0||e.segmentIndex>=e.segmentCount))throw new Error(`segmentIndex must be between 0 and ${e.segmentCount-1}`)}return{data:yield ia(this.fetch,`${this.url}/ListVectors`,e,{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(aa(a))return{data:null,error:a};throw a}})}queryVectors(e){return de(this,void 0,void 0,function*(){try{return{data:yield ia(this.fetch,`${this.url}/QueryVectors`,e,{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(aa(a))return{data:null,error:a};throw a}})}deleteVectors(e){return de(this,void 0,void 0,function*(){try{if(e.keys.length<1||e.keys.length>500)throw new Error("Keys batch size must be between 1 and 500 items");return{data:(yield ia(this.fetch,`${this.url}/DeleteVectors`,e,{headers:this.headers}))||{},error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(aa(a))return{data:null,error:a};throw a}})}}class aS{constructor(e,a={},i){this.shouldThrowOnError=!1,this.url=e.replace(/\/$/,""),this.headers=Object.assign(Object.assign({},Ru),a),this.fetch=Lu(i)}throwOnError(){return this.shouldThrowOnError=!0,this}createBucket(e){return de(this,void 0,void 0,function*(){try{return{data:(yield ia(this.fetch,`${this.url}/CreateVectorBucket`,{vectorBucketName:e},{headers:this.headers}))||{},error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(aa(a))return{data:null,error:a};throw a}})}getBucket(e){return de(this,void 0,void 0,function*(){try{return{data:yield ia(this.fetch,`${this.url}/GetVectorBucket`,{vectorBucketName:e},{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(aa(a))return{data:null,error:a};throw a}})}listBuckets(){return de(this,arguments,void 0,function*(e={}){try{return{data:yield ia(this.fetch,`${this.url}/ListVectorBuckets`,e,{headers:this.headers}),error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(aa(a))return{data:null,error:a};throw a}})}deleteBucket(e){return de(this,void 0,void 0,function*(){try{return{data:(yield ia(this.fetch,`${this.url}/DeleteVectorBucket`,{vectorBucketName:e},{headers:this.headers}))||{},error:null}}catch(a){if(this.shouldThrowOnError)throw a;if(aa(a))return{data:null,error:a};throw a}})}}class iS extends aS{constructor(e,a={}){super(e,a.headers||{},a.fetch)}from(e){return new oS(this.url,this.headers,e,this.fetch)}}class oS extends eS{constructor(e,a,i,r){super(e,a,r),this.vectorBucketName=i}createIndex(e){const a=Object.create(null,{createIndex:{get:()=>super.createIndex}});return de(this,void 0,void 0,function*(){return a.createIndex.call(this,Object.assign(Object.assign({},e),{vectorBucketName:this.vectorBucketName}))})}listIndexes(){const e=Object.create(null,{listIndexes:{get:()=>super.listIndexes}});return de(this,arguments,void 0,function*(a={}){return e.listIndexes.call(this,Object.assign(Object.assign({},a),{vectorBucketName:this.vectorBucketName}))})}getIndex(e){const a=Object.create(null,{getIndex:{get:()=>super.getIndex}});return de(this,void 0,void 0,function*(){return a.getIndex.call(this,this.vectorBucketName,e)})}deleteIndex(e){const a=Object.create(null,{deleteIndex:{get:()=>super.deleteIndex}});return de(this,void 0,void 0,function*(){return a.deleteIndex.call(this,this.vectorBucketName,e)})}index(e){return new rS(this.url,this.headers,this.vectorBucketName,e,this.fetch)}}class rS extends tS{constructor(e,a,i,r,n){super(e,a,n),this.vectorBucketName=i,this.indexName=r}putVectors(e){const a=Object.create(null,{putVectors:{get:()=>super.putVectors}});return de(this,void 0,void 0,function*(){return a.putVectors.call(this,Object.assign(Object.assign({},e),{vectorBucketName:this.vectorBucketName,indexName:this.indexName}))})}getVectors(e){const a=Object.create(null,{getVectors:{get:()=>super.getVectors}});return de(this,void 0,void 0,function*(){return a.getVectors.call(this,Object.assign(Object.assign({},e),{vectorBucketName:this.vectorBucketName,indexName:this.indexName}))})}listVectors(){const e=Object.create(null,{listVectors:{get:()=>super.listVectors}});return de(this,arguments,void 0,function*(a={}){return e.listVectors.call(this,Object.assign(Object.assign({},a),{vectorBucketName:this.vectorBucketName,indexName:this.indexName}))})}queryVectors(e){const a=Object.create(null,{queryVectors:{get:()=>super.queryVectors}});return de(this,void 0,void 0,function*(){return a.queryVectors.call(this,Object.assign(Object.assign({},e),{vectorBucketName:this.vectorBucketName,indexName:this.indexName}))})}deleteVectors(e){const a=Object.create(null,{deleteVectors:{get:()=>super.deleteVectors}});return de(this,void 0,void 0,function*(){return a.deleteVectors.call(this,Object.assign(Object.assign({},e),{vectorBucketName:this.vectorBucketName,indexName:this.indexName}))})}}class nS extends H2{constructor(e,a={},i,r){super(e,a,i,r)}from(e){return new W2(this.url,this.headers,e,this.fetch)}get vectors(){return new iS(this.url+"/vector",{headers:this.headers,fetch:this.fetch})}get analytics(){return new K2(this.url+"/iceberg",this.headers,this.fetch)}}const sS="2.78.0";let Fr="";typeof Deno<"u"?Fr="deno":typeof document<"u"?Fr="web":typeof navigator<"u"&&navigator.product==="ReactNative"?Fr="react-native":Fr="node";const lS={"X-Client-Info":`supabase-js-${Fr}/${sS}`},cS={headers:lS},dS={schema:"public"},uS={autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"implicit"},mS={},pS=t=>{let e;return t?e=t:typeof fetch>"u"?e=wb:e=fetch,(...a)=>e(...a)},hS=()=>typeof Headers>"u"?kb:Headers,gS=(t,e,a)=>
517{const i=pS(a),r=hS();return async(n,s)=>{var l;const c=(l=await e())!==null&&l!==void 0?l:t;let d=new r(s==null?void 0:s.headers);return d.has("apikey")||d.set("apikey",t),d.has("Authorization")||d.set("Authorization",`Bearer ${c}`),i(n,Object.assign(Object.assign({},s),{headers:d}))}};function fS(t){return t.endsWith("/")?t:t+"/"}function bS(t,e){var a,i;const{db:r,auth:n,realtime:s,global:l}=t,{db:c,auth:d,realtime:u,global:p}=e,f={db:Object.assign(Object.assign({},c),r),auth:Object.assign(Object.assign({},d),n),realtime:Object.assign(Object.assign({},u),s),storage:{},global:Object.assign(Object.assign(Object.assign({},p),l),{headers:Object.assign(Object.assign({},(a=p==null?void 0:p.headers)!==null&&a!==void 0?a:{}),(i=l==null?void 0:l.headers)!==null&&i!==void 0?i:{})}),accessToken:async()=>""};return t.accessToken?f.accessToken=t.accessToken:delete f.accessToken,f}function vS(t){const e=t==null?void 0:t.trim();if(!e)throw new Error("supabaseUrl is required.");if(!e.match(/^https?:\/\//i))throw new Error("Invalid supabaseUrl: Must be a valid HTTP or HTTPS URL.");try{return new URL(fS(e))}catch{throw Error("Invalid supabaseUrl: Provided URL is malformed.")}}const Hb="2.78.0",To=30*1e3,kd=3,mc=kd*To,yS="http://localhost:9999",xS="supabase.auth.token",wS={"X-Client-Info":`gotrue-js/${Hb}`},_d="X-Supabase-Api-Version",Kb={"2024-01-01":{timestamp:Date.parse("2024-01-01T00:00:00.0Z"),name:"2024-01-01"}},kS=/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i,_S=10*60*1e3;class fn extends Error{constructor(e,a,i){super(e),this.__isAuthError=!0,this.name="AuthError",this.status=a,this.code=i}}function he(t){return typeof t=="object"&&t!==null&&"__isAuthError"in t}class SS extends fn{constructor(e,a,i){super(e,a,i),this.name="AuthApiError",this.status=a,this.code=i}}function CS(t){return he(t)&&t.name==="AuthApiError"}class zi extends fn{constructor(e,a){super(e),this.name="AuthUnknownError",this.originalError=a}}class ki extends fn{constructor(e,a,i,r){super(e,i,r),this.name=a,this.status=i}}class ga extends ki{constructor(){super("Auth session missing!","AuthSessionMissingError",400,void 0)}}function TS(t){return he(t)&&t.name==="AuthSessionMissingError"}class go extends ki{constructor(){super("Auth session or user missing","AuthInvalidToken
517ResponseError",500,void 0)}}class ms extends ki{constructor(e){super(e,"AuthInvalidCredentialsError",400,void 0)}}class ps extends ki{constructor(e,a=null){super(e,"AuthImplicitGrantRedirectError",500,void 0),this.details=null,this.details=a}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}function jS(t){return he(t)&&t.name==="AuthImplicitGrantRedirectError"}class Sp extends ki{constructor(e,a=null){super(e,"AuthPKCEGrantCodeExchangeError",500,void 0),this.details=null,this.details=a}toJSON(){return{name:this.name,message:this.message,status:this.status,details:this.details}}}class Sd extends ki{constructor(e,a){super(e,"AuthRetryableFetchError",a,void 0)}}function pc(t){return he(t)&&t.name==="AuthRetryableFetchError"}class Cp extends ki{constructor(e,a,i){super(e,"AuthWeakPasswordError",a,"weak_password"),this.reasons=i}}class Cd extends ki{constructor(e){super(e,"AuthInvalidJwtError",400,"invalid_jwt")}}const Qs="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""),Tp=` 	
518\r=`.split(""),NS=(()=>{const t=new Array(128);for(let e=0;e<t.length;e+=1)t[e]=-1;for(let e=0;e<Tp.length;e+=1)t[Tp[e].charCodeAt(0)]=-2;for(let e=0;e<Qs.length;e+=1)t[Qs[e].charCodeAt(0)]=e;return t})();function jp(t,e,a){if(t!==null)for(e.queue=e.queue<<8|t,e.queuedBits+=8;e.queuedBits>=6;){const i=e.queue>>e.queuedBits-6&63;a(Qs[i]),e.queuedBits-=6}else if(e.queuedBits>0)for(e.queue=e.queue<<6-e.queuedBits,e.queuedBits=6;e.queuedBits>=6;){const i=e.queue>>e.queuedBits-6&63;a(Qs[i]),e.queuedBits-=6}}function Yb(t,e,a){const i=NS[t];if(i>-1)for(e.queue=e.queue<<6|i,e.queuedBits+=6;e.queuedBits>=8;)a(e.queue>>e.queuedBits-8&255),e.queuedBits-=8;else{if(i===-2)return;throw new Error(`Invalid Base64-URL character "${String.fromCharCode(t)}"`)}}function Np(t){const e=[],a=s=>{e.push(String.fromCodePoint(s))},i={utf8seq:0,codepoint:0},r={queue:0,queuedBits:0},n=s=>{ES(s,i,a)};for(let s=0;s<t.length;s+=1)Yb(t.charCodeAt(s),r,n);return e.join("")}function PS(t,e){if(t<=127){e(t);return}else if(t<=2047){e(192|t>>6),e(128|t&63);return}else if(t<=65535){e(224|t>>12),e(128|t>>6&63),e(128|t&63);return}else if(t<=1114111){e(240|t>>18),e(128|t>>12&63),e(128|t>>6&63),e(128|t&63);return}throw new Error(`Unrecognized Unicode codepoint: ${t.toString(16)}`)}function AS(t,e){for(let a=0;a<t.length;a+=1){let i=t.charCodeAt(a);if(i>55295&&i<=56319){const r=(i-55296)*1024&65535;i=(t.charCodeAt(a+1)-56320&65535|r)+65536,a+=1}PS(i,e)}}function ES(t,e,a){if(e.utf8seq===0){if(t<=127){a(t);return}for(let i=1;i<6;i+=1)if(!(t>>7-i&1)){e.utf8seq=i;break}if(e.utf8seq===2)e.codepoint=t&31;else if(e.utf8seq===3)e.codepoint=t&15;else if(e.utf8seq===4)e.codepoint=t&7;else throw new Error("Invalid UTF-8 sequence");e.utf8seq-=1}else if(e.utf8seq>0){if(t<=127)throw new Error("Invalid UTF-8 sequence");e.codepoint=e.codepoint<<6|t&63,e.utf8seq-=1,e.utf8seq===0&&a(e.codepoint)}}function Ro(t){const e=[],a={queue:0,queuedBits:0},i=r=>{e.push(r)};for(let r=0;r<t.length;r+=1)Yb(t.charCodeAt(r),a,i);return new Uint8Array(e)}function IS(t){const e=[];return AS(t,a=>e.push(a)),new Uint8Array(e)}function Ui(t){const e=[],a={queue:0,queuedBits:0},i=r=>{e.push(r)};return t.forEach(r=>jp(r,a,i)),jp(null,a,i),e.join("")}function DS(t){return Math.round(Date.now()/1e3)+t}function RS(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){const e=Math.random()*16|0;return(t=="x"?e:e&3|8).toString(16)})}const Ot=()=>typeof window<"u"&&typeof document<"u",Ei={tested:!1,writable:!1},Qb=()=>{if(!Ot())return!1;try{if(typeof globalThis.localStorage!="object")return!1}catch{return!1}if(Ei.tested)return Ei.writable;const t=`lswt-${Math.random()}${Math.random()}`;try{globalThis.localStorage.setItem(t,t),globalThis.localStorage.removeItem(t),Ei.tested=!0,Ei.writable=!0}catch{Ei.tested=!0,Ei.writable=!1}return Ei.writable};function LS(t){const e={},a=new URL(t);if(a.hash&&a.hash[0]==="#")try{new URLSearchParams(a.hash.substring(1)).forEach((r,n)=>{e[n]=r})}catch{}return a.searchParams.forEach((i,r)=>{e[r]=i}),e}const Jb=t=>{let e;return t?e=t:typeof fetch>"u"?e=(...a)=>H(async()=>{const{default:i}=await Promise.resolve().then(()=>uo);return{default:i}},void 0).then(({default:i})=>i(...a)):e=fetch,(...a)=>e(...a)},OS=t=>typeof t=="object"&&t!==null&&"status"in t&&"ok"in t&&"json"in t&&typeof t.json=="function",jo=async(t,e,a)=>{await t.setItem(e,JSON.stringify(a))},Ii=async(t,e)=>{const a=await t.getItem(e);if(!a)return null;try{return JSON.parse(a)}catch{return a}},ei=async(t,e)=>{await t.removeItem(e)};class Tl{constructor(){this.promise=new Tl.promiseConstructor((e,a)=>{this.resolve=e,this.reject=a})}}Tl.promiseConstructor=Promise;function hc(t){const e=t.split(".");if(e.length!==3)throw new Cd("Invalid JWT structure");for(let i=0;i<e.length;i++)if(!kS.test(e[i]))throw new Cd("JWT not in base64url format");return{header:JSON.parse(Np(e[0])),payload:JSON.parse(Np(e[1])),signature:Ro(e[2]),raw:{header:e[0],payload:e[1]}}}async function MS(t){return await new Promise(e=>{setTimeout(()=>e(null),t)})}function zS(t,e){return new Promise((i,r)=>{(async()=>{for(let n=0;n<1/0;n++)try{const s=await t(n);if(!e(n,null,s)){i(s);return}}catch(s){if(!e(n,s)){r(s);return}}})()})}function BS(t){return("0"+t.toString(16)).substr(-2)}function FS(){const e=new Uint32Array(56);if(typeof crypto>"u"){const a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",i=a.length;let r="";for(let n=0;n<56;n++)r+=a.charAt(Math.floor(Math.random()*i));return r}return crypto.getRandomValues(e),Array.from(e,BS).join("")}async function $S(t){const a=new TextEncoder().encode(t),i=await crypto.subtle.digest("SHA-256",a),r=new 
518Uint8Array(i);return Array.from(r).map(n=>String.fromCharCode(n)).join("")}async function VS(t){if(!(typeof crypto<"u"&&typeof crypto.subtle<"u"&&typeof TextEncoder<"u"))return console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),t;const a=await $S(t);return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function fo(t,e,a=!1){const i=FS();let r=i;a&&(r+="/PASSWORD_RECOVERY"),await jo(t,`${e}-code-verifier`,r);const n=await VS(i);return[n,i===n?"plain":"s256"]}const US=/^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;function qS(t){const e=t.headers.get(_d);if(!e||!e.match(US))return null;try{return new Date(`${e}T00:00:00.0Z`)}catch{return null}}function GS(t){if(!t)throw new Error("Missing exp claim");const e=Math.floor(Date.now()/1e3);if(t<=e)throw new Error("JWT has expired")}function WS(t){switch(t){case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}};case"ES256":return{name:"ECDSA",namedCurve:"P-256",hash:{name:"SHA-256"}};default:throw new Error("Invalid alg claim")}}const HS=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;function bo(t){if(!HS.test(t))throw new Error("@supabase/auth-js: Expected parameter to be UUID but is not")}function gc(){const t={};return new Proxy(t,{get:(e,a)=>{if(a==="__isUserNotAvailableProxy")return!0;if(typeof a=="symbol"){const i=a.toString();if(i==="Symbol(Symbol.toPrimitive)"||i==="Symbol(Symbol.toStringTag)"||i==="Symbol(util.inspect.custom)")return}throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the "${a}" property of the session object is not supported. Please use getUser() instead.`)},set:(e,a)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the "${a}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)},deleteProperty:(e,a)=>{throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the "${a}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`)}})}function KS(t,e){return new Proxy(t,{get:(a,i,r)=>{if(i==="__isInsecureUserWarningProxy")return!0;if(typeof i=="symbol"){const n=i.toString();if(n==="Symbol(Symbol.toPrimitive)"||n==="Symbol(Symbol.toStringTag)"||n==="Symbol(util.inspect.custom)"||n==="Symbol(nodejs.util.inspect.custom)")return Reflect.get(a,i,r)}return!e.value&&typeof i=="string"&&(console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),e.value=!0),Reflect.get(a,i,r)}})}function Pp(t){return JSON.parse(JSON.stringify(t))}const Ri=t=>t.msg||t.message||t.error_description||t.error||JSON.stringify(t),YS=[502,503,504];async function Ap(t){var e;if(!OS(t))throw new Sd(Ri(t),0);if(YS.includes(t.status))throw new Sd(Ri(t),t.status);let a;try{a=await t.json()}catch(n){throw new zi(Ri(n),n)}let i;const r=qS(t);if(r&&r.getTime()>=Kb["2024-01-01"].timestamp&&typeof a=="object"&&a&&typeof a.code=="string"?i=a.code:typeof a=="object"&&a&&typeof a.error_code=="string"&&(i=a.error_code),i){if(i==="weak_password")throw new Cp(Ri(a),t.status,((e=a.weak_password)===null||e===void 0?void 0:e.reasons)||[]);if(i==="session_not_found")throw new ga}else if(typeof a=="object"&&a&&typeof a.weak_password=="object"&&a.weak_password&&Array.isArray(a.weak_password.reasons)&&a.weak_password.reasons.length&&a.weak_password.reasons.reduce((n,s)=>n&&typeof s=="string",!0))throw new Cp(Ri(a),t.status,a.weak_password.reasons);throw new SS(Ri(a),t.status||500,i)}const QS=(t,e,a,i)=>{const r={method:t,headers:(e==null?void 0:e.headers)||{}};return t==="GET"?r:(r.headers=Object.assign({"Content-Type":"application/json;charset=UTF-8"}
518,e==null?void 0:e.headers),r.body=JSON.stringify(i),Object.assign(Object.assign({},r),a))};async function be(t,e,a,i){var r;const n=Object.assign({},i==null?void 0:i.headers);n[_d]||(n[_d]=Kb["2024-01-01"].name),i!=null&&i.jwt&&(n.Authorization=`Bearer ${i.jwt}`);const s=(r=i==null?void 0:i.query)!==null&&r!==void 0?r:{};i!=null&&i.redirectTo&&(s.redirect_to=i.redirectTo);const l=Object.keys(s).length?"?"+new URLSearchParams(s).toString():"",c=await JS(t,e,a+l,{headers:n,noResolveJson:i==null?void 0:i.noResolveJson},{},i==null?void 0:i.body);return i!=null&&i.xform?i==null?void 0:i.xform(c):{data:Object.assign({},c),error:null}}async function JS(t,e,a,i,r,n){const s=QS(e,i,r,n);let l;try{l=await t(a,Object.assign({},s))}catch(c){throw console.error(c),new Sd(Ri(c),0)}if(l.ok||await Ap(l),i!=null&&i.noResolveJson)return l;try{return await l.json()}catch(c){await Ap(c)}}function fa(t){var e;let a=null;eC(t)&&(a=Object.assign({},t),t.expires_at||(a.expires_at=DS(t.expires_in)));const i=(e=t.user)!==null&&e!==void 0?e:t;return{data:{session:a,user:i},error:null}}function Ep(t){const e=fa(t);return!e.error&&t.weak_password&&typeof t.weak_password=="object"&&Array.isArray(t.weak_password.reasons)&&t.weak_password.reasons.length&&t.weak_password.message&&typeof t.weak_password.message=="string"&&t.weak_password.reasons.reduce((a,i)=>a&&typeof i=="string",!0)&&(e.data.weak_password=t.weak_password),e}function ri(t){var e;return{data:{user:(e=t.user)!==null&&e!==void 0?e:t},error:null}}function XS(t){return{data:t,error:null}}function ZS(t){const{action_link:e,email_otp:a,hashed_token:i,redirect_to:r,verification_type:n}=t,s=fl(t,["action_link","email_otp","hashed_token","redirect_to","verification_type"]),l={action_link:e,email_otp:a,hashed_token:i,redirect_to:r,verification_type:n},c=Object.assign({},s);return{data:{properties:l,user:c},error:null}}function Ip(t){return t}function eC(t){return t.access_token&&t.refresh_token&&t.expires_in}const fc=["global","local","others"];class tC{constructor({url:e="",headers:a={},fetch:i}){this.url=e,this.headers=a,this.fetch=Jb(i),this.mfa={listFactors:this._listFactors.bind(this),deleteFactor:this._deleteFactor.bind(this)},this.oauth={listClients:this._listOAuthClients.bind(this),createClient:this._createOAuthClient.bind(this),getClient:this._getOAuthClient.bind(this),updateClient:this._updateOAuthClient.bind(this),deleteClient:this._deleteOAuthClient.bind(this),regenerateClientSecret:this._regenerateOAuthClientSecret.bind(this)}}async signOut(e,a=fc[0]){if(fc.indexOf(a)<0)throw new Error(`@supabase/auth-js: Parameter scope must be one of ${fc.join(", ")}`);try{return await be(this.fetch,"POST",`${this.url}/logout?scope=${a}`,{headers:this.headers,jwt:e,noResolveJson:!0}),{data:null,error:null}}catch(i){if(he(i))return{data:null,error:i};throw i}}async inviteUserByEmail(e,a={}){try{return await be(this.fetch,"POST",`${this.url}/invite`,{body:{email:e,data:a.data},headers:this.headers,redirectTo:a.redirectTo,xform:ri})}catch(i){if(he(i))return{data:{user:null},error:i};throw i}}async generateLink(e){try{const{options:a}=e,i=fl(e,["options"]),r=Object.assign(Object.assign({},i),a);return"newEmail"in i&&(r.new_email=i==null?void 0:i.newEmail,delete r.newEmail),await be(this.fetch,"POST",`${this.url}/admin/generate_link`,{body:r,headers:this.headers,xform:ZS,redirectTo:a==null?void 0:a.redirectTo})}catch(a){if(he(a))return{data:{properties:null,user:null},error:a};throw a}}async createUser(e){try{return await be(this.fetch,"POST",`${this.url}/admin/users`,{body:e,headers:this.headers,xform:ri})}catch(a){if(he(a))return{data:{user:null},error:a};throw a}}async listUsers(e){var a,i,r,n,s,l,c;try{const d={nextPage:null,lastPage:0,total:0},u=await be(this.fetch,"GET",`${this.url}/admin/users`,{headers:this.headers,noResolveJson:!0,query:{page:(i=(a=e==null?void 0:e.page)===null||a===void 0?void 0:a.toString())!==null&&i!==void 0?i:"",per_page:(n=(r=e==null?void 0:e.perPage)===null||r===void 0?void 0:r.toString())!==null&&n!==void 0?n:""},xform:Ip});if(u.error)throw u.error;const p=await u.json(),f=(s=u.headers.get("x-total-count"))!==null&&s!==void 0?s:0,h=(c=(l=u.headers.get("link"))===null||l===void 0?void 0:l.split(","))!==null&&c!==void 0?c:[];return h.length>
5180&&(h.forEach(v=>{const g=parseInt(v.split(";")[0].split("=")[1].substring(0,1)),b=JSON.parse(v.split(";")[1].split("=")[1]);d[`${b}Page`]=g}),d.total=parseInt(f)),{data:Object.assign(Object.assign({},p),d),error:null}}catch(d){if(he(d))return{data:{users:[]},error:d};throw d}}async getUserById(e){bo(e);try{return await be(this.fetch,"GET",`${this.url}/admin/users/${e}`,{headers:this.headers,xform:ri})}catch(a){if(he(a))return{data:{user:null},error:a};throw a}}async updateUserById(e,a){bo(e);try{return await be(this.fetch,"PUT",`${this.url}/admin/users/${e}`,{body:a,headers:this.headers,xform:ri})}catch(i){if(he(i))return{data:{user:null},error:i};throw i}}async deleteUser(e,a=!1){bo(e);try{return await be(this.fetch,"DELETE",`${this.url}/admin/users/${e}`,{headers:this.headers,body:{should_soft_delete:a},xform:ri})}catch(i){if(he(i))return{data:{user:null},error:i};throw i}}async _listFactors(e){bo(e.userId);try{const{data:a,error:i}=await be(this.fetch,"GET",`${this.url}/admin/users/${e.userId}/factors`,{headers:this.headers,xform:r=>({data:{factors:r},error:null})});return{data:a,error:i}}catch(a){if(he(a))return{data:null,error:a};throw a}}async _deleteFactor(e){bo(e.userId),bo(e.id);try{return{data:await be(this.fetch,"DELETE",`${this.url}/admin/users/${e.userId}/factors/${e.id}`,{headers:this.headers}),error:null}}catch(a){if(he(a))return{data:null,error:a};throw a}}async _listOAuthClients(e){var a,i,r,n,s,l,c;try{const d={nextPage:null,lastPage:0,total:0},u=await be(this.fetch,"GET",`${this.url}/admin/oauth/clients`,{headers:this.headers,noResolveJson:!0,query:{page:(i=(a=e==null?void 0:e.page)===null||a===void 0?void 0:a.toString())!==null&&i!==void 0?i:"",per_page:(n=(r=e==null?void 0:e.perPage)===null||r===void 0?void 0:r.toString())!==null&&n!==void 0?n:""},xform:Ip});if(u.error)throw u.error;const p=await u.json(),f=(s=u.headers.get("x-total-count"))!==null&&s!==void 0?s:0,h=(c=(l=u.headers.get("link"))===null||l===void 0?void 0:l.split(","))!==null&&c!==void 0?c:[];return h.length>0&&(h.forEach(v=>{const g=parseInt(v.split(";")[0].split("=")[1].substring(0,1)),b=JSON.parse(v.split(";")[1].split("=")[1]);d[`${b}Page`]=g}),d.total=parseInt(f)),{data:Object.assign(Object.assign({},p),d),error:null}}catch(d){if(he(d))return{data:{clients:[]},error:d};throw d}}async _createOAuthClient(e){try{return await be(this.fetch,"POST",`${this.url}/admin/oauth/clients`,{body:e,headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(he(a))return{data:null,error:a};throw a}}async _getOAuthClient(e){try{return await be(this.fetch,"GET",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(he(a))return{data:null,error:a};throw a}}async _updateOAuthClient(e,a){try{return await be(this.fetch,"PUT",`${this.url}/admin/oauth/clients/${e}`,{body:a,headers:this.headers,xform:i=>({data:i,error:null})})}catch(i){if(he(i))return{data:null,error:i};throw i}}async _deleteOAuthClient(e){try{return await be(this.fetch,"DELETE",`${this.url}/admin/oauth/clients/${e}`,{headers:this.headers,noResolveJson:!0}),{data:null,error:null}}catch(a){if(he(a))return{data:null,error:a};throw a}}async _regenerateOAuthClientSecret(e){try{return await be(this.fetch,"POST",`${this.url}/admin/oauth/clients/${e}/regenerate_secret`,{headers:this.headers,xform:a=>({data:a,error:null})})}catch(a){if(he(a))return{data:null,error:a};throw a}}}function Dp(t={}){return{getItem:e=>t[e]||null,setItem:(e,a)=>{t[e]=a},removeItem:e=>{delete t[e]}}}const vo={debug:!!(globalThis&&Qb()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug")==="true")};class Xb extends Error{constructor(e){super(e),this.isAcquireTimeout=!0}}class aC extends Xb{}async function iC(t,e,a){vo.debug;const i=new globalThis.AbortController;return e>0&&setTimeout(()=>{i.abort(),vo.debug},e),await Promise.resolve().then(()=>globalThis.navigator.locks.request(t,e===0?{mode:"exclusive",ifAvailable:!0}:{mode:"exclusive",signal:i.signal},async r=>{if(r){vo.debug&&r.name;try{return await a()}finally{vo.debug&&r.name}}else{if(e===0)throw vo.debug,new aC(`Acquiring an exclusive Navigator LockManager lock "${t}" immediately failed`);if(vo.debug)try{const n=await globalThis.navigator.locks.query();JSON.stringify(n,null,"  ")}catch(n){console.warn("@supabase/gotrue-js: Error when querying Navigator LockManager state",n)}return console.warn("@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request"),await a()}}))}function oC(){if(typeof globalThis!="object")try{Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__}catch{typeof self<"u"&&(self.globalThis=self)}}function Zb(t){if(!/^0x[a-fA-F0-9]{40}$/.test(t))throw new Error(`@supabase/auth-js: Address "${t}
518" is invalid.`);return t.toLowerCase()}function rC(t){return parseInt(t,16)}function nC(t){const e=new TextEncoder().encode(t);return"0x"+Array.from(e,i=>i.toString(16).padStart(2,"0")).join("")}function sC(t){var e;const{chainId:a,domain:i,expirationTime:r,issuedAt:n=new Date,nonce:s,notBefore:l,requestId:c,resources:d,scheme:u,uri:p,version:f}=t;{if(!Number.isInteger(a))throw new Error(`@supabase/auth-js: Invalid SIWE message field "chainId". Chain ID must be a EIP-155 chain ID. Provided value: ${a}`);if(!i)throw new Error('@supabase/auth-js: Invalid SIWE message field "domain". Domain must be provided.');if(s&&s.length<8)throw new Error(`@supabase/auth-js: Invalid SIWE message field "nonce". Nonce must be at least 8 characters. Provided value: ${s}`);if(!p)throw new Error('@supabase/auth-js: Invalid SIWE message field "uri". URI must be provided.');if(f!=="1")throw new Error(`@supabase/auth-js: Invalid SIWE message field "version". Version must be '1'. Provided value: ${f}`);if(!((e=t.statement)===null||e===void 0)&&e.includes(`
519`))throw new Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${t.statement}`)}const h=Zb(t.address),v=u?`${u}://${i}`:i,g=t.statement?`${t.statement}
520`:"",b=`${v} wants you to sign in with your Ethereum account:
521${h}
522
523${g}`;let x=`URI: ${p}
524Version: ${f}
525Chain ID: ${a}${s?`
526Nonce: ${s}`:""}
527Issued At: ${n.toISOString()}`;if(r&&(x+=`
528Expiration Time: ${r.toISOString()}`),l&&(x+=`
529Not Before: ${l.toISOString()}`),c&&(x+=`
530Request ID: ${c}`),d){let w=`
531Resources:`;for(const k of d){if(!k||typeof k!="string")throw new Error(`@supabase/auth-js: Invalid SIWE message field "resources". Every resource must be a valid string. Provided value: ${k}`);w+=`
532- ${k}`}x+=w}return`${b}
533${x}`}class ut extends Error{constructor({message:e,code:a,cause:i,name:r}){var n;super(e,{cause:i}),this.__isWebAuthnError=!0,this.name=(n=r??(i instanceof Error?i.name:void 0))!==null&&n!==void 0?n:"Unknown Error",this.code=a}}class Js extends ut{constructor(e,a){super({code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:a,message:e}),this.name="WebAuthnUnknownError",this.originalError=a}}function lC({error:t,options:e}){var a,i,r;const{publicKey:n}=e;if(!n)throw Error("options was missing required publicKey property");if(t.name==="AbortError"){if(e.signal instanceof AbortSignal)return new ut({message:"Registration ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else if(t.name==="ConstraintError"){if(((a=n.authenticatorSelection)===null||a===void 0?void 0:a.requireResidentKey)===!0)return new ut({message:"Discoverable credentials were required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",cause:t});if(e.mediation==="conditional"&&((i=n.authenticatorSelection)===null||i===void 0?void 0:i.userVerification)==="required")return new ut({message:"User verification was required during automatic registration but it could not be performed",code:"ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",cause:t});if(((r=n.authenticatorSelection)===null||r===void 0?void 0:r.userVerification)==="required")return new ut({message:"User verification was required but no available authenticator supported it",code:"ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",cause:t})}else{if(t.name==="InvalidStateError")return new ut({message:"The authenticator was previously registered",code:"ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",cause:t});if(t.name==="NotAllowedError")return new ut({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if(t.name==="NotSupportedError")return n.pubKeyCredParams.filter(l=>l.type==="public-key").length===0?new ut({message:'No entry in pubKeyCredParams was of type "public-key"',code:"ERROR_MALFORMED_PUBKEYCREDPARAMS",cause:t}):new ut({message:"No available authenticator supported any of the specified pubKeyCredParams algorithms",code:"ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",cause:t});if(t.name==="SecurityError"){const s=window.location.hostname;
533if(ev(s)){if(n.rp.id!==s)return new ut({message:`The RP ID "${n.rp.id}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else return new ut({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t})}else if(t.name==="TypeError"){if(n.user.id.byteLength<1||n.user.id.byteLength>64)return new ut({message:"User ID was not between 1 and 64 characters",code:"ERROR_INVALID_USER_ID_LENGTH",cause:t})}else if(t.name==="UnknownError")return new ut({message:"The authenticator was unable to process the specified options, or could not create a new credential",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}return new ut({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t})}function cC({error:t,options:e}){const{publicKey:a}=e;if(!a)throw Error("options was missing required publicKey property");if(t.name==="AbortError"){if(e.signal instanceof AbortSignal)return new ut({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if(t.name==="NotAllowedError")return new ut({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if(t.name==="SecurityError"){const i=window.location.hostname;if(ev(i)){if(a.rpId!==i)return new ut({message:`The RP ID "${a.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else return new ut({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t})}else if(t.name==="UnknownError")return new ut({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}return new ut({message:"a Non-Webauthn related error has occurred",code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t})}class dC{createNewAbortSignal(){if(this.controller){const a=new Error("Cancelling existing WebAuthn API call for new one");a.name="AbortError",this.controller.abort(a)}const e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){const e=new Error("Manually cancelling existing WebAuthn API call");e.name="AbortError",this.controller.abort(e),this.controller=void 0}}}const uC=new dC;function mC(t){if(!t)throw new Error("Credential creation options are required");if(typeof PublicKeyCredential<"u"&&"parseCreationOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseCreationOptionsFromJSON=="function")return PublicKeyCredential.parseCreationOptionsFromJSON(t);const{challenge:e,user:a,excludeCredentials:i}=t,r=fl(t,["challenge","user","excludeCredentials"]),n=Ro(e).buffer,s=Object.assign(Object.assign({},a),{id:Ro(a.id).buffer}),l=Object.assign(Object.assign({},r),{challenge:n,user:s});if(i&&i.length>0){l.excludeCredentials=new Array(i.length);for(let c=0;c<i.length;c++){const d=i[c];l.excludeCredentials[c]=Object.assign(Object.assign({},d),{id:Ro(d.id).buffer,type:d.type||"public-key",transports:d.transports})}}return l}function pC(t){if(!t)throw new Error("Credential request options are required");if(typeof PublicKeyCredential<"u"&&"parseRequestOptionsFromJSON"in PublicKeyCredential&&typeof PublicKeyCredential.parseRequestOptionsFromJSON=="function")return PublicKeyCredential.parseRequestOptionsFromJSON(t);const{challenge:e,allowCredentials:a}=t,i=fl(t,["challenge","allowCredentials"]),r=Ro(e).buffer,n=Object.assign(Object.assign({},i),{challenge:r});if(a&&a.length>0){n.allowCredentials=new Array(a.length);for(let s=0;s<a.length;s++){const l=a[s];n.allowCredentials[s]=Object.assign(Object.assign({},l),{id:Ro(l.id).buffer,type:l.type||"public-key",transports:l.transports})}}return n}function hC(t){var e;if("toJSON"in t&&typeof t.toJSON=="function")return t.toJSON();const a=t;return{id:t.id,rawId:t.id,response:{attestationObject:Ui(new Uint8Array(t.response.attestationObject)),clientDataJSON:Ui(new Uint8Array(t.response.clientDataJSON))},type:"public-key",clientExtensionResults:t.getClientExtensionResults(),authenticatorAttachment:(e=a.authenticatorAttachment)!==null&&e!==void 0?e:void 0}}function gC(t){var e;if("toJSON"in t&&typeof t.toJSON=="function")return t.toJSON();const a=t,i=t.getClientExtensionResults(),r=t.response;return{id:t.id,rawId:t.id,response:{authenticatorData:Ui(new Uint8Array(r.authenticatorData)),clientDataJSON:Ui(new Uint8Array(r.clientDataJSON)),signature:Ui(new Uint8Array(r.signature)),userHandle:r.userHandle?Ui(new Uint8Array(r.userHandle)):void 0},type:"public-key",clientExtensionResults:i,authenticatorAttachment:(e=a.authenticatorAttachment)!==null&&e!==void 0?e:void 0}}function ev(t){return t==="localhost"||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(t)}function Rp(){var t,e;return!!(Ot()&&"PublicKeyCredential"in window&&window.PublicKeyCredential&&"credentials"in navigator&&typeof((t=navigator==null?void 0:navigator.credentials)===null||t===void 0?void 0:t.create)=="function"&&typeof((e=navigator==null?void 0:navigator.credentials)===null||e===void 0?void 0:e.get)=="function")}async function fC(t){try{const e=await navigator.credentials.create(t);return e?e instanceof PublicKeyCredential?{data:e,error:null}:{data:null,error:new Js("Browser returned unexpected credential type",e)}:{data:null,error:new Js("Empty credential response",e)}}catch(e){return{data:null,error:lC({error:e,options:t})}}}async function bC(t){try{const e=await navigator.credentials.get(t);return e?e instanceof PublicKeyCredential?{data:e,error:null}:{data:null,error:new Js("Browser returned unexpected credential type",e)}:{data:null,error:new Js("Empty credential response",e)}}catch(e){return{data:null,error:cC({error:e,options:t})}}}const vC={hints:["security-key"],authenticatorSelection:{authenticatorAttachment:"cross-platform",requireResidentKey:!1,userVerification:"preferred",residentKey:"discouraged"},attestation:"none"},yC={userVerification:"preferred",hints:["security-key"]};function Xs(...t){const e=r=>r!==null&&typeof r=="object"&&!Array.isArray(r),a=r=>r instanceof ArrayBuffer||ArrayBuffer.isView(r),i={};for(const r of t)if(r)for(const n in r){const s=r[n];if(s!==void 0)if(Array.isArray(s))i[n]=s;else if(a(s))i[n]=s;else if(e(s)){const l=i[n];e(l)?i[n]=Xs(l,s):i[n]=Xs(s)}else i[n]=s}return i}function xC(t,e){return Xs(vC,t,e||{})}function wC(t,e){return Xs(yC,t,e||{})}class kC{constructor(e){this.client=e,this.enroll=this._enroll.bind(this),this.challenge=this._challenge.bind(this),this.verify=this._verify.bind(this),this.authenticate=this._authenticate.bind(this),this.register=this._register.bind(this)}async _enroll(e){return this.client.mfa.enroll(Object.assign(Object.assign({},e),{factorType:"webauthn"}))}async _challenge({factorId:e,webauthn:a,friendlyName:i,signal:r},n){try{const{data:s,error:l}=await this.client.mfa.challenge({factorId:e,webauthn:a});if(!s)return{data:null,error:l};const c=r??uC.createNewAbortSignal();if(s.webauthn.type==="create"){const{user:d}=s.webauthn.credential_options.publicKey;d.name||(d.name=`${d.id}:${i}`),d.displayName||(d.displayName=d.name)}switch(s.webauthn.type){case"create":{const d=xC(s.webauthn.credential_options.publicKey,n==null?void 0:n.create),{data:u,error:p}=await fC({publicKey:d,signal:c});return u?{data:{factorId:e,challengeId:s.id,webauthn:{type:s.webauthn.type,credential_response:u}},error:null}:{data:null,error:p}}case"request":{const d=wC(s.webauthn.credential_options.publicKey,n==null?void 0:n.request),{data:u,error:p}=await bC(Object.assign(Object.assign({},s.webauthn.credential_options),{publicKey:d,signal:c}));return u?{data:{factorId:e,challengeId:s.id,webauthn:{type:s.webauthn.type,credential_response:u}},error:null}:{data:null,error:p}}}}catch(s){return he(s)?{data:null,error:s}:{data:null,error:new zi("Unexpected error in challenge",s)}}}async _verify({challengeId:e,factorId:a,webauthn:i}){return this.client.mfa.verify({factorId:a,challengeId:e,webauthn:i})}async _authenticate({factorId:e,webauthn:{rpId:a=typeof window<"u"?window.location.hostname:void 0,rpOrigins:i=typeof window<"u"?[window.location.origin]:void 0,signal:r}},n){if(!a)return{data:null,error:new fn("rpId is required for WebAuthn authentication")};try{if(!Rp())return{data:null,error:new zi("Browser does not support WebAuthn",null)};const{data:s,error:l}=await this.challenge({factorId:e,webauthn:{rpId:a,rpOrigins:i},signal:r},{request:n});if(!s)return{data:null,error:l};const{webauthn:c}=s;return this._verify({factorId:e,challengeId:s.challengeId,webauthn:{type:c.type,rpId:a,rpOrigins:i,credential_response:c.credential_response}})}catch(s){return he(s)?{data:null,error:s}:{data:null,error:new zi("Unexpected error in authenticate",s)}}}async _register({friendlyName:e,rpId:a=typeof window<"u"?window.location.hostname:void 0,rpOrigins:i=typeof window<"u"?[window.location.origin]:void 0,signal:r},n){if(!a)return{data:null,error:new fn("rpId is required for WebAuthn registration")};try{if(!Rp())return{data:null,error:new zi("Browser does not support WebAuthn",null)};const{data:s,error:l}=await this._enroll({friendlyName:e});if(!s)return await this.client.mfa.listFactors().then(u=>{var p;return(p=u.data)===null||p===void 0?void 0:p.all.find(f=>f.factor_type==="webauthn"&&f.friendly_name===e&&f.status!=="unverified")}).then(u=>u?this.client.mfa.unenroll({factorId:u==null?void 0:u.id}):void 0),{data:null,error:l};const{data:c,error:d}=await this._challenge({factorId:s.id,friendlyName:s.friendly_name,webauthn:{rpId:a,rpOrigins:i},signal:r},{create:n});return c?this._verify({factorId:s.id,challengeId:c.challengeId,webauthn:{rpId:a,rpOrigins:i,type:c.webauthn.type,credential_response:c.webauthn.credential_response}}):{data:null,error:d}}catch(s){return he(s)?{data:null,error:s}:{data:null,error:new zi("Unexpected error in register",s)}}}}oC();const _C={url:yS,storageKey:xS,autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,headers:wS,flowType:"implicit",debug:!1,hasCustomAuthorizationHeader:!1};async function Lp(t,e,a){return await a()}const yo={};class bn{get jwks(){var e,a;return(a=(e=yo[this.storageKey])===null||e===void 0?void 0:e.jwks)!==null&&a!==void 0?a:{keys:[]}}set jwks(e){yo[this.storageKey]=Object.assign(Object.assign({},yo[this.storageKey]),{jwks:e})}get jwks_cached_at(){var e,a;return(a=(e=yo[this.storageKey])===null||e===void 0?void 0:e.cachedAt)!==null&&a!==void 0?a:Number.MIN_SAFE_INTEGER}set jwks_cached_at(e){yo[this.storageKey]=Object.assign(Object.assign({},yo[this.storageKey]),{cachedAt:e})}constructor(e){var a,i;this.userStorage=null,this.memoryStorage=null,this.stateChangeEmitters=new Map,this.autoRefreshTicker=null,this.visibilityChangedCallback=null,this.refreshingDeferred=null,this.initializePromise=null,this.detectSessionInUrl=!0,this.hasCustomAuthorizationHeader=!1,this.suppressGetSessionWarning=!1,this.lockAcquired=!1,this.pendingInLock=[],this.broadcastChannel=null,this.logger=console.log,this.instanceID=bn.nextInstanceID,bn.nextInstanceID+=1,this.instanceID>0&&Ot()&&console.warn("Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.");const r=Object.assign(Object.assign({},_C),e);if(this.logDebugMessages=!!r.debug,typeof r.debug=="function"&&(this.logger=r.debug),this.persistSession=r.persistSession,this.storageKey=r.storageKey,this.autoRefreshToken=r.autoRefreshToken,this.admin=new tC({url:r.url,headers:r.headers,fetch:r.fetch}),this.url=r.url,this.headers=r.headers,this.fetch=Jb(r.fetch),this.lock=r.lock||Lp,this.detectSessionInUrl=r.detectSessionInUrl,this.flowType=r.flowType,this.hasCustomAuthorizationHeader=r.hasCustomAuthorizationHeader,r.lock?this.lock=r.lock:Ot()&&(!((a=globalThis==null?void 0:globalThis.navigator)===null||a===void 0)&&a.locks)?this.lock=iC:this.lock=Lp,this.jwks||(this.jwks={keys:[]},this.jwks_cached_at=Number.MIN_SAFE_INTEGER),this.mfa={verify:this._verify.bind(this),enroll:this._enroll.bind(this),unenroll:this._unenroll.bind(this),challenge:this._challenge.bind(this),listFactors:this._listFactors.bind(this),challengeAndVerify:this._challengeAndVerify.bind(this),getAuthenticatorAssuranceLevel:this._getAuthenticatorAssuranceLevel.bind(this),webauthn:new kC(this)}
533,this.oauth={getAuthorizationDetails:this._getAuthorizationDetails.bind(this),approveAuthorization:this._approveAuthorization.bind(this),denyAuthorization:this._denyAuthorization.bind(this)},this.persistSession?(r.storage?this.storage=r.storage:Qb()?this.storage=globalThis.localStorage:(this.memoryStorage={},this.storage=Dp(this.memoryStorage)),r.userStorage&&(this.userStorage=r.userStorage)):(this.memoryStorage={},this.storage=Dp(this.memoryStorage)),Ot()&&globalThis.BroadcastChannel&&this.persistSession&&this.storageKey){try{this.broadcastChannel=new globalThis.BroadcastChannel(this.storageKey)}catch(n){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",n)}(i=this.broadcastChannel)===null||i===void 0||i.addEventListener("message",async n=>{this._debug("received broadcast notification from other tab or client",n),await this._notifyAllSubscribers(n.data.event,n.data.session,!1)})}this.initialize()}_debug(...e){return this.logDebugMessages&&this.logger(`GoTrueClient@${this.instanceID} (${Hb}) ${new Date().toISOString()}`,...e),this}async initialize(){return this.initializePromise?await this.initializePromise:(this.initializePromise=(async()=>await this._acquireLock(-1,async()=>await this._initialize()))(),await this.initializePromise)}async _initialize(){var e;try{const a=LS(window.location.href);let i="none";if(this._isImplicitGrantCallback(a)?i="implicit":await this._isPKCECallback(a)&&(i="pkce"),Ot()&&this.detectSessionInUrl&&i!=="none"){const{data:r,error:n}=await this._getSessionFromURL(a,i);if(n){if(this._debug("#_initialize()","error detecting session from URL",n),jS(n)){const c=(e=n.details)===null||e===void 0?void 0:e.code;if(c==="identity_already_exists"||c==="identity_not_found"||c==="single_identity_not_deletable")return{error:n}}return await this._removeSession(),{error:n}}const{session:s,redirectType:l}=r;return this._debug("#_initialize()","detected session in URL",s,"redirect type",l),await this._saveSession(s),setTimeout(async()=>{l==="recovery"?await this._notifyAllSubscribers("PASSWORD_RECOVERY",s):await this._notifyAllSubscribers("SIGNED_IN",s)},0),{error:null}}return await this._recoverAndRefresh(),{error:null}}catch(a){return he(a)?{error:a}:{error:new zi("Unexpected error during initialization",a)}}finally{await this._handleVisibilityChange(),this._debug("#_initialize()","end")}}async signInAnonymously(e){var a,i,r;try{const n=await be(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{data:(i=(a=e==null?void 0:e.options)===null||a===void 0?void 0:a.data)!==null&&i!==void 0?i:{},gotrue_meta_security:{captcha_token:(r=e==null?void 0:e.options)===null||r===void 0?void 0:r.captchaToken}},xform:fa}),{data:s,error:l}=n;if(l||!s)return{data:{user:null,session:null},error:l};const c=s.session,d=s.user;return s.session&&(await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",c)),{data:{user:d,session:c},error:null}}catch(n){if(he(n))return{data:{user:null,session:null},error:n};throw n}}async signUp(e){var a,i,r;try{let n;if("email"in e){const{email:u,password:p,options:f}=e;let h=null,v=null;this.flowType==="pkce"&&([h,v]=await fo(this.storage,this.storageKey)),n=await be(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,redirectTo:f==null?void 0:f.emailRedirectTo,body:{email:u,password:p,data:(a=f==null?void 0:f.data)!==null&&a!==void 0?a:{},gotrue_meta_security:{captcha_token:f==null?void 0:f.captchaToken},code_challenge:h,code_challenge_method:v},xform:fa})}else if("phone"in e){const{phone:u,password:p,options:f}=e;n=await be(this.fetch,"POST",`${this.url}/signup`,{headers:this.headers,body:{phone:u,password:p,data:(i=f==null?void 0:f.data)!==null&&i!==void 0?i:{},channel:(r=f==null?void 0:f.channel)!==null&&r!==void 0?r:"sms",gotrue_meta_security:{captcha_token:f==null?void 0:f.captchaToken}},xform:fa})}else throw new ms("You must provide either an email or phone number and a password");const{data:s,error:l}=n;if(l||!s)return{data:{user:null,session:null},error:l};const c=s.session,d=s.user;return s.session&&(await this._saveSession(s.session),await this._notifyAllSubscribers("SIGNED_IN",c)),{data:{user:d,session:c},error:null}}catch(n){if(he(n))return{data:{user:null,session:null},error:n};throw n}}async signInWithPassword(e){try{let a;if("email"in e){const{email:n,password:s,options:l}=e;a=await be(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{email:n,password:s,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken}},xform:Ep})}else if("phone"in e){const{phone:n,password:s,options:l}=e;a=await be(this.fetch,"POST",`${this.url}/token?grant_type=password`,{headers:this.headers,body:{phone:n,password:s,gotrue_meta_security:{captcha_token:l==null?void 0:l.captchaToken}},xform:Ep})}else throw new ms("You must provide either an email or phone number and a password");const{data:i,error:r}=a;return r?{data:{user:null,session:null},error:r}:!i||!i.session||!i.user?{data:{user:null,session:null},error:new go}:(i.session&&(await this._saveSession(i.session),await this._notifyAllSubscribers("SIGNED_IN",i.session)),{data:Object.assign({user:i.user,session:i.session},i.weak_password?{weakPassword:i.weak_password}:null),error:r})}catch(a){if(he(a))return{data:{user:null,session:null},error:a};throw a}}async signInWithOAuth(e){var a,i,r,n;return await this._handleProviderSignIn(e.provider,{redirectTo:(a=e.options)===null||a===void 0?void 0:a.redirectTo,scopes:(i=e.options)===null||i===void 0?void 0:i.scopes,queryParams:(r=e.options)===null||r===void 0?void 0:r.queryParams,skipBrowserRedirect:(n=e.options)===null||n===void 0?void 0:n.skipBrowserRedirect})}async exchangeCodeForSession(e){return await this.initializePromise,this._acquireLock(-1,async()=>this._exchangeCodeForSession(e))}async signInWithWeb3(e){const{chain:a}=e;switch(a){case"ethereum":return await this.signInWithEthereum(e);case"solana":return await this.signInWithSolana(e);default:throw new Error(`@supabase/auth-js: Unsupported chain "${a}"`)}}async signInWithEthereum(e){var a,i,r,n,s,l,c,d,u,p,f;let h,v;if("message"in e)h=e.message,v=e.signature;else{const{chain:g,wallet:b,statement:x,options:w}=e;let k;if(Ot())if(typeof b=="object")k=b;else{const P=window;if("ethereum"in P&&typeof P.ethereum=="object"&&"request"in P.ethereum&&typeof P.ethereum.request=="function")k=P.ethereum;else throw new Error("@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.")}else{if(typeof b!="object"||!(w!=null&&w.url))throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");k=b}const _=new URL((a=w==null?void 0:w.url)!==null&&a!==void 0?a:window.location.href),j=await k.request({method:"eth_requestAccounts"}).then(P=>P).catch(()=>{throw new Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid")});if(!j||j.length===0)throw new Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");const S=Zb(j[0]);let C=(i=w==null?void 0:w.signInWithEthereum)===null||i===void 0?void 0:i.chainId;if(!C){const P=await k.request({method:"eth_chainId"});C=rC(P)}const N={domain:_.host,address:S,statement:x,uri:_.href,version:"1",chainId:C,nonce:(r=w==null?void 0:w.signInWithEthereum)===null||r===void 0?void 0:r.nonce,issuedAt:(s=(n=w==null?void 0:w.signInWithEthereum)===null||n===void 0?void 0:n.issuedAt)!==null&&s!==void 0?s:new Date,expirationTime:(l=w==null?void 0:w.signInWithEthereum)===null||l===void 0?void 0:l.expirationTime,notBefore:(c=w==null?void 0:w.signInWithEthereum)===null||c===void 0?void 0:c.notBefore,requestId:(d=w==null?void 0:w.signInWithEthereum)===null||d===void 0?void 0:d.requestId,resources:(u=w==null?void 0:w.signInWithEthereum)===null||u===void 0?void 0:u.resources};h=sC(N),v=await k.request({method:"personal_sign",params:[nC(h),S]})}try{const{data:g,error:b}=await be(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"ethereum",message:h,signature:v},!((p=e.options)===null||p===void 0)&&p.captchaToken?{gotrue_meta_security:{captcha_token:(f=e.options)===null||f===void 0?void 0:f.captchaToken}}:null),xform:fa});if(b)throw b;return!g||!g.session||!g.user?{data:{user:null,session:null},error:new go}:(g.session&&(await this._saveSession(g.session),await this._notifyAllSubscribers("SIGNED_IN",g.session)),{data:Object.assign({},g),error:b})}catch(g){if(he(g))return{data:{user:null,session:null},error:g};throw g}}async signInWithSolana(e){var a,i,r,n,s,l,c,d,u,p,f,h;let v,g;if("message"in e)v=e.message,g=e.signature;else{const{chain:b,wallet:x,statement:w,options:k}=e;let _;if(Ot())if(typeof x=="object")_=x;else{const S=window;if("solana"in S&&typeof S.solana=="object"&&("signIn"in S.solana&&typeof S.solana.signIn=="function"||"signMessage"in S.solana&&typeof S.solana.signMessage=="function"))_=S.solana;else throw new Error("@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.")}else{if(typeof x!="object"||!(k!=null&&k.url))throw new Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");_=x}const j=new URL((a=k==null?void 0:k.url)!==null&&a!==void 0?a:window.location.href);if("signIn"in _&&_.signIn){const S=await _.signIn(Object.assign(Object.assign(Object.assign({issuedAt:new Date().toISOString()},k==null?void 0:k.signInWithSolana),{version:"1",domain:j.host,uri:j.href}),w?{statement:w}:null));let C;if(Array.isArray(S)&&S[0]&&typeof S[0]=="object")C=S[0];else if(S&&typeof S=="object"&&"signedMessage"in S&&"signature"in S)C=S;else throw new Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");if("signedMessage"in C&&"signature"in C&&(typeof C.signedMessage=="string"||C.signedMessage instanceof Uint8Array)&&C.signature instanceof Uint8Array)v=typeof C.signedMessage=="string"?C.signedMessage:new TextDecoder().decode(C.signedMessage),g=C.signature;else throw new Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields")}else{if(!("signMessage"in _)||typeof _.signMessage!="function"||!("publicKey"in _)||typeof _!="object"||!_.publicKey||!("toBase58"in _.publicKey)||typeof _.publicKey.toBase58!="function")throw new Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");v=[`${j.host} wants you to sign in with your Solana account:`,_.publicKey.toBase58(),...w?["",w,""]:[""],"Version: 1",`URI: ${j.href}`,`Issued At: ${(r=(i=k==null?void 0:k.signInWithSolana)===null||i===void 0?void 0:i.issuedAt)!==null&&r!==void 0?r:new Date().toISOString()}`,...!((n=k==null?void 0:k.signInWithSolana)===null||n===void 0)&&n.notBefore?[`Not Before: ${k.signInWithSolana.notBefore}`]:[],...!((s=k==null?void 0:k.signInWithSolana)===null||s===void 0)&&s.expirationTime?[`Expiration Time: ${k.signInWithSolana.expirationTime}`]:[],...!((l=k==null?void 0:k.signInWithSolana)===null||l===void 0)&&l.chainId?[`Chain ID: ${k.signInWithSolana.chainId}`]:[],...!((c=k==null?void 0:k.signInWithSolana)===null||c===void 0)&&c.nonce?[`Nonce: ${k.signInWithSolana.nonce}`]:[],...!((d=k==null?void 0:k.signInWithSolana)===null||d===void 0)&&d.requestId?[`Request ID: ${
533k.signInWithSolana.requestId}`]:[],...!((p=(u=k==null?void 0:k.signInWithSolana)===null||u===void 0?void 0:u.resources)===null||p===void 0)&&p.length?["Resources",...k.signInWithSolana.resources.map(C=>`- ${C}`)]:[]].join(`
534`);const S=await _.signMessage(new TextEncoder().encode(v),"utf8");if(!S||!(S instanceof Uint8Array))throw new Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");g=S}}try{const{data:b,error:x}=await be(this.fetch,"POST",`${this.url}/token?grant_type=web3`,{headers:this.headers,body:Object.assign({chain:"solana",message:v,signature:Ui(g)},!((f=e.options)===null||f===void 0)&&f.captchaToken?{gotrue_meta_security:{captcha_token:(h=e.options)===null||h===void 0?void 0:h.captchaToken}}:null),xform:fa});if(x)throw x;return!b||!b.session||!b.user?{data:{user:null,session:null},error:new go}:(b.session&&(await this._saveSession(b.session),await this._notifyAllSubscribers("SIGNED_IN",b.session)),{data:Object.assign({},b),error:x})}catch(b){if(he(b))return{data:{user:null,session:null},error:b};throw b}}async _exchangeCodeForSession(e){const a=await Ii(this.storage,`${this.storageKey}-code-verifier`),[i,r]=(a??"").split("/");try{const{data:n,error:s}=await be(this.fetch,"POST",`${this.url}/token?grant_type=pkce`,{headers:this.headers,body:{auth_code:e,code_verifier:i},xform:fa});if(await ei(this.storage,`${this.storageKey}-code-verifier`),s)throw s;return!n||!n.session||!n.user?{data:{user:null,session:null,redirectType:null},error:new go}:(n.session&&(await this._saveSession(n.session),await this._notifyAllSubscribers("SIGNED_IN",n.session)),{data:Object.assign(Object.assign({},n),{redirectType:r??null}),error:s})}catch(n){if(he(n))return{data:{user:null,session:null,redirectType:null},error:n};throw n}}async signInWithIdToken(e){try{const{options:a,provider:i,token:r,access_token:n,nonce:s}=e,l=await be(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,body:{provider:i,id_token:r,access_token:n,nonce:s,gotrue_meta_security:{captcha_token:a==null?void 0:a.captchaToken}},xform:fa}),{data:c,error:d}=l;return d?{data:{user:null,session:null},error:d}:!c||!c.session||!c.user?{data:{user:null,session:null},error:new go}:(c.session&&(await this._saveSession(c.session),await this._notifyAllSubscribers("SIGNED_IN",c.session)),{data:c,error:d})}catch(a){if(he(a))return{data:{user:null,session:null},error:a};throw a}}async signInWithOtp(e){var a,i,r,n,s;try{if("email"in e){const{email:l,options:c}=e;let d=null,u=null;this.flowType==="pkce"&&([d,u]=await fo(this.storage,this.storageKey));const{error:p}=await be(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{email:l,data:(a=c==null?void 0:c.data)!==null&&a!==void 0?a:{},create_user:(i=c==null?void 0:c.shouldCreateUser)!==null&&i!==void 0?i:!0,gotrue_meta_security:{captcha_token:c==null?void 0:c.captchaToken},code_challenge:d,code_challenge_method:u},redirectTo:c==null?void 0:c.emailRedirectTo});return{data:{user:null,session:null},error:p}}if("phone"in e){const{phone:l,options:c}=e,{data:d,error:u}=await be(this.fetch,"POST",`${this.url}/otp`,{headers:this.headers,body:{phone:l,data:(r=c==null?void 0:c.data)!==null&&r!==void 0?r:{},create_user:(n=c==null?void 0:c.shouldCreateUser)!==null&&n!==void 0?n:!0,gotrue_meta_security:{captcha_token:c==null?void 0:c.captchaToken},channel:(s=c==null?void 0:c.channel)!==null&&s!==void 0?s:"sms"}});return{data:{user:null,session:null,messageId:d==null?void 0:d.message_id},error:u}}throw new ms("You must provide either an email or phone number.")}catch(l){if(he(l))return{data:{user:null,session:null},error:l};throw l}}async verifyOtp(e){var a,i;try{let r,n;"options"in e&&(r=(a=e.options)===null||a===void 0?void 0:a.redirectTo,n=(i=e.options)===null||i===void 0?void 0:i.captchaToken);const{data:s,error:l}=await be(this.fetch,"POST",`${this.url}/verify`,{headers:this.headers,body:Object.assign(Object.assign({},e),{gotrue_meta_security:{captcha_token:n}}),redirectTo:r,xform:fa});if(l)throw l;if(!s)throw new Error("An error occurred on token verification.");const c=s.session,d=s.user;return c!=null&&c.access_token&&(await this._saveSession(c),await this._notifyAllSubscribers(e.type=="recovery"?"PASSWORD_RECOVERY":"SIGNED_IN",c)),{data:{user:d,session:c},error:null}}catch(r){if(he(r))return{data:{user:null,session:null},error:r};throw r}}async signInWithSSO(e){var a,i,r;try{let n=null,s=null;return this.flowType==="pkce"&&([n,s]=await fo(this.storage,this.storageKey)),await be(this.fetch,"POST",`${this.url}/sso`,{body:Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},"providerId"in e?{provider_id:e.providerId}:null),"domain"in e?{domain:e.domain}:null),{redirect_to:(i=(a=e.options)===null||a===void 0?void 0:a.redirectTo)!==null&&i!==void 0?i:void 0}),!((r=e==null?void 0:e.options)===null||r===void 0)&&r.captchaToken?{gotrue_meta_security:{captcha_token:e.options.captchaToken}}:null),{skip_http_redirect:!0,code_challenge:n,code_challenge_method:s}),headers:this.headers,xform:XS})}catch(n){if(he(n))return{data:null,error:n};throw n}}async reauthenticate(){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._reauthenticate())}async _reauthenticate(){try{return await this._useSession(async e=>{const{data:{session:a},error:i}=e;if(i)throw i;if(!a)throw new ga;const{error:r}=await be(this.fetch,"GET",`${this.url}/reauthenticate`,{headers:this.headers,jwt:a.access_token});return{data:{user:null,session:null},error:r}})}catch(e){if(he(e))return{data:{user:null,session:null},error:e};throw e}}async resend(e){try{const a=`${this.url}/resend`;if("email"in e){const{email:i,type:r,options:n}=e,{error:s}=await be(this.fetch,"POST",a,{headers:this.headers,body:{email:i,type:r,gotrue_meta_security:{captcha_token:n==null?void 0:n.captchaToken}},redirectTo:n==null?void 0:n.emailRedirectTo});return{data:{user:null,session:null},error:s}}else if("phone"in e){const{phone:i,type:r,options:n}=e,{data:s,error:l}=await be(this.fetch,"POST",a,{headers:this.headers,body:{phone:i,type:r,gotrue_meta_security:{captcha_token:n==null?void 0:n.captchaToken}}});return{data:{user:null,session:null,messageId:s==null?void 0:s.message_id},error:l}}throw new ms("You must provide either an email or phone number and a type")}catch(a){if(he(a))return{data:{user:null,session:null},error:a};throw a}}async getSession(){return await this.initializePromise,await this._acquireLock(-1,async()=>this._useSession(async a=>a))}async _acquireLock(e,a){this._debug("#_acquireLock","begin",e);try{if(this.lockAcquired){const i=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),r=(async()=>(await i,await a()))();return this.pendingInLock.push((async()=>{try{await r}catch{}})()),r}return await this.lock(`lock:${this.storageKey}`,e,async()=>{this._debug("#_acquireLock","lock acquired for storage key",this.storageKey);try{this.lockAcquired=!0;const i=a();for(this.pendingInLock.push((async()=>{try{await i}catch{}})()),await i;this.pendingInLock.length;){const r=[...this.pendingInLock];await Promise.all(r),this.pendingInLock.splice(0,r.length)}return await i}finally{this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1}})}finally{this._debug("#_acquireLock","end")}}async _useSession(e){this._debug("#_useSession","begin");try{const a=await this.__loadSession();return await e(a)}finally{this._debug("#_useSession","end")}}async __loadSession(){this._debug("#__loadSession()","begin"),this.lockAcquired||this._debug("#__loadSession()","used outside of an acquired lock!",new Error().stack);try{let e=null;const a=await Ii(this.storage,this.storageKey);if(this._debug("#getSession()","session from storage",a),a!==null&&(this._isValidSession(a)?e=a:(this._debug("#getSession()","session from storage is not val
534id"),await this._removeSession())),!e)return{data:{session:null},error:null};const i=e.expires_at?e.expires_at*1e3-Date.now()<mc:!1;if(this._debug("#__loadSession()",`session has${i?"":" not"} expired`,"expires_at",e.expires_at),!i){if(this.userStorage){const s=await Ii(this.userStorage,this.storageKey+"-user");s!=null&&s.user?e.user=s.user:e.user=gc()}if(this.storage.isServer&&e.user&&!e.user.__isUserNotAvailableProxy){const s={value:this.suppressGetSessionWarning};e.user=KS(e.user,s),s.value&&(this.suppressGetSessionWarning=!0)}return{data:{session:e},error:null}}const{data:r,error:n}=await this._callRefreshToken(e.refresh_token);return n?{data:{session:null},error:n}:{data:{session:r},error:null}}finally{this._debug("#__loadSession()","end")}}async getUser(e){return e?await this._getUser(e):(await this.initializePromise,await this._acquireLock(-1,async()=>await this._getUser()))}async _getUser(e){try{return e?await be(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:e,xform:ri}):await this._useSession(async a=>{var i,r,n;const{data:s,error:l}=a;if(l)throw l;return!(!((i=s.session)===null||i===void 0)&&i.access_token)&&!this.hasCustomAuthorizationHeader?{data:{user:null},error:new ga}:await be(this.fetch,"GET",`${this.url}/user`,{headers:this.headers,jwt:(n=(r=s.session)===null||r===void 0?void 0:r.access_token)!==null&&n!==void 0?n:void 0,xform:ri})})}catch(a){if(he(a))return TS(a)&&(await this._removeSession(),await ei(this.storage,`${this.storageKey}-code-verifier`)),{data:{user:null},error:a};throw a}}async updateUser(e,a={}){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._updateUser(e,a))}async _updateUser(e,a={}){try{return await this._useSession(async i=>{const{data:r,error:n}=i;if(n)throw n;if(!r.session)throw new ga;const s=r.session;let l=null,c=null;this.flowType==="pkce"&&e.email!=null&&([l,c]=await fo(this.storage,this.storageKey));const{data:d,error:u}=await be(this.fetch,"PUT",`${this.url}/user`,{headers:this.headers,redirectTo:a==null?void 0:a.emailRedirectTo,body:Object.assign(Object.assign({},e),{code_challenge:l,code_challenge_method:c}),jwt:s.access_token,xform:ri});if(u)throw u;return s.user=d.user,await this._saveSession(s),await this._notifyAllSubscribers("USER_UPDATED",s),{data:{user:s.user},error:null}})}catch(i){if(he(i))return{data:{user:null},error:i};throw i}}async setSession(e){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._setSession(e))}async _setSession(e){try{if(!e.access_token||!e.refresh_token)throw new ga;const a=Date.now()/1e3;let i=a,r=!0,n=null;const{payload:s}=hc(e.access_token);if(s.exp&&(i=s.exp,r=i<=a),r){const{data:l,error:c}=await this._callRefreshToken(e.refresh_token);if(c)return{data:{user:null,session:null},error:c};if(!l)return{data:{user:null,session:null},error:null};n=l}else{const{data:l,error:c}=await this._getUser(e.access_token);if(c)throw c;n={access_token:e.access_token,refresh_token:e.refresh_token,user:l.user,token_type:"bearer",expires_in:i-a,expires_at:i},await this._saveSession(n),await this._notifyAllSubscribers("SIGNED_IN",n)}return{data:{user:n.user,session:n},error:null}}catch(a){if(he(a))return{data:{session:null,user:null},error:a};throw a}}async refreshSession(e){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._refreshSession(e))}async _refreshSession(e){try{return await this._useSession(async a=>{var i;if(!e){const{data:s,error:l}=a;if(l)throw l;e=(i=s.session)!==null&&i!==void 0?i:void 0}if(!(e!=null&&e.refresh_token))throw new ga;const{data:r,error:n}=await this._callRefreshToken(e.refresh_token);return n?{data:{user:null,session:null},error:n}:r?{data:{user:r.user,session:r},error:null}:{data:{user:null,session:null},error:null}})}catch(a){if(he(a))return{data:{user:null,session:null},error:a};throw a}}async _getSessionFromURL(e,a){try{if(!Ot())throw new ps("No browser detected.");if(e.error||e.error_description||e.error_code)throw new ps(e.error_description||"Error in URL with unspecified error_description",{error:e.error||"unspecified_error",code:e.error_code||"unspecified_code"});switch(a){case"implicit":if(this.flowType==="pkce")throw new Sp("Not a valid PKCE flow url.");break;case"pkce":if(this.flowType==="implicit")throw new ps("Not a valid implicit grant flow url.");break;default:}if(a==="pkce"){if(this._debug("#_initialize()","begin","is PKCE flow",!0),!e.code)throw new Sp("No code detected.");const{data:w,error:k}=await this._exchangeCodeForSession(e.code);
534if(k)throw k;const _=new URL(window.location.href);return _.searchParams.delete("code"),window.history.replaceState(window.history.state,"",_.toString()),{data:{session:w.session,redirectType:null},error:null}}const{provider_token:i,provider_refresh_token:r,access_token:n,refresh_token:s,expires_in:l,expires_at:c,token_type:d}=e;if(!n||!l||!s||!d)throw new ps("No session defined in URL");const u=Math.round(Date.now()/1e3),p=parseInt(l);let f=u+p;c&&(f=parseInt(c));const h=f-u;h*1e3<=To&&console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${h}s, should have been closer to ${p}s`);const v=f-p;u-v>=120?console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",v,f,u):u-v<0&&console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew",v,f,u);const{data:g,error:b}=await this._getUser(n);if(b)throw b;const x={provider_token:i,provider_refresh_token:r,access_token:n,expires_in:p,expires_at:f,refresh_token:s,token_type:d,user:g.user};return window.location.hash="",this._debug("#_getSessionFromURL()","clearing window.location.hash"),{data:{session:x,redirectType:e.type},error:null}}catch(i){if(he(i))return{data:{session:null,redirectType:null},error:i};throw i}}_isImplicitGrantCallback(e){return!!(e.access_token||e.error_description)}async _isPKCECallback(e){const a=await Ii(this.storage,`${this.storageKey}-code-verifier`);return!!(e.code&&a)}async signOut(e={scope:"global"}){return await this.initializePromise,await this._acquireLock(-1,async()=>await this._signOut(e))}async _signOut({scope:e}={scope:"global"}){return await this._useSession(async a=>{var i;const{data:r,error:n}=a;if(n)return{error:n};const s=(i=r.session)===null||i===void 0?void 0:i.access_token;if(s){const{error:l}=await this.admin.signOut(s,e);if(l&&!(CS(l)&&(l.status===404||l.status===401||l.status===403)))return{error:l}}return e!=="others"&&(await this._removeSession(),await ei(this.storage,`${this.storageKey}-code-verifier`)),{error:null}})}onAuthStateChange(e){const a=RS(),i={id:a,callback:e,unsubscribe:()=>{this._debug("#unsubscribe()","state change callback with id removed",a),this.stateChangeEmitters.delete(a)}};return this._debug("#onAuthStateChange()","registered callback with id",a),this.stateChangeEmitters.set(a,i),(async()=>(await this.initializePromise,await this._acquireLock(-1,async()=>{this._emitInitialSession(a)})))(),{data:{subscription:i}}}async _emitInitialSession(e){return await this._useSession(async a=>{var i,r;try{const{data:{session:n},error:s}=a;if(s)throw s;await((i=this.stateChangeEmitters.get(e))===null||i===void 0?void 0:i.callback("INITIAL_SESSION",n)),this._debug("INITIAL_SESSION","callback id",e,"session",n)}catch(n){await((r=this.stateChangeEmitters.get(e))===null||r===void 0?void 0:r.callback("INITIAL_SESSION",null)),this._debug("INITIAL_SESSION","callback id",e,"error",n),console.error(n)}})}async resetPasswordForEmail(e,a={}){let i=null,r=null;this.flowType==="pkce"&&([i,r]=await fo(this.storage,this.storageKey,!0));try{return await be(this.fetch,"POST",`${this.url}/recover`,{body:{email:e,code_challenge:i,code_challenge_method:r,gotrue_meta_security:{captcha_token:a.captchaToken}},headers:this.headers,redirectTo:a.redirectTo})}catch(n){if(he(n))return{data:null,error:n};throw n}}async getUserIdentities(){var e;try{const{data:a,error:i}=await this.getUser();if(i)throw i;return{data:{identities:(e=a.user.identities)!==null&&e!==void 0?e:[]},error:null}}catch(a){if(he(a))return{data:null,error:a};throw a}}async linkIdentity(e){return"token"in e?this.linkIdentityIdToken(e):this.linkIdentityOAuth(e)}async linkIdentityOAuth(e){var a;try{const{data:i,error:r}=await this._useSession(async n=>{var s,l,c,d,u;const{data:p,error:f}=n;if(f)throw f;const h=await this._getUrlForProvider(`${this.url}/user/identities/authorize`,e.provider,{redirectTo:(s=e.options)===null||s===void 0?void 0:s.redirectTo,scopes:(l=e.options)===null||l===void 0?void 0:l.scopes,queryParams:(c=e.options)===null||c===void 0?void 0:c.queryParams,skipBrowserRedirect:!0});return await be(this.fetch,"GET",h,{headers:this.headers,jwt:(u=(d=p.session)===null||d===void 0?void 0:d.access_token)!==null&&u!==void 0?u:void 0})});if(r)throw r;return Ot()&&!(!((a=e.options)===null||a===void 0)&&a.skipBrowserRedirect)&&window.location.assign(i==null?void 0:i.url),{data:{provider:e.provider,url:i==null?void 0:i.url},error:null}}catch(i){if(he(i))return{data:{provider:e.provider,url:null},error:i};throw i}}async linkIdentityIdToken(e){return await this._useSession(async a=>{var i;try{const{error:r,data:{session:n}}=a;if(r)throw r;const{options:s,provider:l,token:c,access_token:d,nonce:u}=e,p=await be(this.fetch,"POST",`${this.url}/token?grant_type=id_token`,{headers:this.headers,jwt:(i=n==null?void 0:n.access_token)!==null&&i!==void 0?i:void 0,body:{provider:l,id_token:c,access_token:d,nonce:u,link_identity:!0,gotrue_meta_security:{captcha_token:s==null?void 0:s.captchaToken}},xform:fa}),{data:f,error:h}=p;return h?{data:{user:null,session:null},error:h}:!f||!f.session||!f.user?{data:{user:null,session:null},error:new go}:(f.session&&(await this._saveSession(f.session),await this._notifyAllSubscribers("USER_UPDATED",f.session)),{data:f,error:h})}catch(r){if(he(r))return{data:{user:null,session:null},error:r};throw r}})}async unlinkIdentity(e){try{return await this._useSession(async a=>{var i,r;const{data:n,error:s}=a;if(s)throw s;
534return await be(this.fetch,"DELETE",`${this.url}/user/identities/${e.identity_id}`,{headers:this.headers,jwt:(r=(i=n.session)===null||i===void 0?void 0:i.access_token)!==null&&r!==void 0?r:void 0})})}catch(a){if(he(a))return{data:null,error:a};throw a}}async _refreshAccessToken(e){const a=`#_refreshAccessToken(${e.substring(0,5)}...)`;this._debug(a,"begin");try{const i=Date.now();return await zS(async r=>(r>0&&await MS(200*Math.pow(2,r-1)),this._debug(a,"refreshing attempt",r),await be(this.fetch,"POST",`${this.url}/token?grant_type=refresh_token`,{body:{refresh_token:e},headers:this.headers,xform:fa})),(r,n)=>{const s=200*Math.pow(2,r);return n&&pc(n)&&Date.now()+s-i<To})}catch(i){if(this._debug(a,"error",i),he(i))return{data:{session:null,user:null},error:i};throw i}finally{this._debug(a,"end")}}_isValidSession(e){return typeof e=="object"&&e!==null&&"access_token"in e&&"refresh_token"in e&&"expires_at"in e}async _handleProviderSignIn(e,a){const i=await this._getUrlForProvider(`${this.url}/authorize`,e,{redirectTo:a.redirectTo,scopes:a.scopes,queryParams:a.queryParams});return this._debug("#_handleProviderSignIn()","provider",e,"options",a,"url",i),Ot()&&!a.skipBrowserRedirect&&window.location.assign(i),{data:{provider:e,url:i},error:null}}async _recoverAndRefresh(){var e,a;const i="#_recoverAndRefresh()";this._debug(i,"begin");try{const r=await Ii(this.storage,this.storageKey);if(r&&this.userStorage){let s=await Ii(this.userStorage,this.storageKey+"-user");!this.storage.isServer&&Object.is(this.storage,this.userStorage)&&!s&&(s={user:r.user},await jo(this.userStorage,this.storageKey+"-user",s)),r.user=(e=s==null?void 0:s.user)!==null&&e!==void 0?e:gc()}else if(r&&!r.user&&!r.user){const s=await Ii(this.storage,this.storageKey+"-user");s&&(s!=null&&s.user)?(r.user=s.user,await ei(this.storage,this.storageKey+"-user"),await jo(this.storage,this.storageKey,r)):r.user=gc()}if(this._debug(i,"session from storage",r),!this._isValidSession(r)){this._debug(i,"session is not valid"),r!==null&&await this._removeSession();return}const n=((a=r.expires_at)!==null&&a!==void 0?a:1/0)*1e3-Date.now()<mc;if(this._debug(i,`session has${n?"":" not"} expired with margin of ${mc}s`),n){if(this.autoRefreshToken&&r.refresh_token){const{error:s}=await this._callRefreshToken(r.refresh_token);s&&(console.error(s),pc(s)||(this._debug(i,"refresh failed with a non-retryable error, removing the session",s),await this._removeSession()))}}else if(r.user&&r.user.__isUserNotAvailableProxy===!0)try{const{data:s,error:l}=await this._getUser(r.access_token);!l&&(s!=null&&s.user)?(r.user=s.user,await this._saveSession(r),await this._notifyAllSubscribers("SIGNED_IN",r)):this._debug(i,"could not get user data, skipping SIGNED_IN notification")}catch(s){console.error("Error getting user data:",s),this._debug(i,"error getting user data, skipping SIGNED_IN notification",s)}else await this._notifyAllSubscribers("SIGNED_IN",r)}catch(r){this._debug(i,"error",r),console.error(r);return}finally{this._debug(i,"end")}}async _callRefreshToken(e){var a,i;if(!e)throw new ga;if(this.refreshingDeferred)return this.refreshingDeferred.promise;const r=`#_callRefreshToken(${e.substring(0,5)}...)`;this._debug(r,"begin");try{this.refreshingDeferred=new Tl;const{data:n,error:s}=await this._refreshAccessToken(e);if(s)throw s;if(!n.session)throw new ga;await this._saveSession(n.session),await this._notifyAllSubscribers("TOKEN_REFRESHED",n.session);const l={data:n.session,error:null};return this.refreshingDeferred.resolve(l),l}catch(n){if(this._debug(r,"error",n),he(n)){const s={data:null,error:n};return pc(n)||await this._removeSession(),(a=this.refreshingDeferred)===null||a===void 0||a.resolve(s),s}throw(i=this.refreshingDeferred)===null||i===void 0||i.reject(n),n}finally{this.refreshingDeferred=null,this._debug(r,"end")}}async _notifyAllSubscribers(e,a,i=!0){const r=`#_notifyAllSubscribers(${e})`;this._debug(r,"begin",a,`broadcast = ${i}`);try{this.broadcastChannel&&i&&this.broadcastChannel.postMessage({event:e,session:a});const n=[],s=Array.from(this.stateChangeEmitters.values()).map(async l=>{try{await l.callback(e,a)}catch(c){n.push(c)}});if(await Promise.all(s),n.length>0){for(let l=0;l<n.length;l+=1)console.error(n[l]);throw n[0]}}finally{this._debug(r,"end")}}async _saveSession(e){this._debug("#_saveSession()",e),this.suppressGetSessionWarning=!0;const a=Object.assign({},e),i=a.user&&a.user.__isUserNotAvailableProxy===!0;if(this.userStorage){!i&&a.user&&await jo(this.userStorage,this.storageKey+"-user",{user:a.user});const r=Object.assign({},a);delete r.user;const n=Pp(r);await jo(this.storage,this.storageKey,n)}else{const r=Pp(a);await jo(this.storage,this.storageKey,r)}}async _removeSession(){this._debug("#_removeSession()"),await ei(this.storage,this.storageKey),await ei(this.storage,this.storageKey+"-code-verifier"),await ei(this.storage,this.storageKey+"-user"),this.userStorage&&await ei(this.userStorage,this.storageKey+"-user"),await this._notifyAllSubscribers("SIGNED_OUT",null)}_removeVisibilityChangedCallback(){this._debug("#_removeVisibilityChangedCallback()");const e=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{e&&Ot()&&(window!=null&&window.removeEventListener)&&window.removeEventListener("visibilitychange",e)}
534catch(a){console.error("removing visibilitychange callback failed",a)}}async _startAutoRefresh(){await this._stopAutoRefresh(),this._debug("#_startAutoRefresh()");const e=setInterval(()=>this._autoRefreshTokenTick(),To);this.autoRefreshTicker=e,e&&typeof e=="object"&&typeof e.unref=="function"?e.unref():typeof Deno<"u"&&typeof Deno.unrefTimer=="function"&&Deno.unrefTimer(e),setTimeout(async()=>{await this.initializePromise,await this._autoRefreshTokenTick()},0)}async _stopAutoRefresh(){this._debug("#_stopAutoRefresh()");const e=this.autoRefreshTicker;this.autoRefreshTicker=null,e&&clearInterval(e)}async startAutoRefresh(){this._removeVisibilityChangedCallback(),await this._startAutoRefresh()}async stopAutoRefresh(){this._removeVisibilityChangedCallback(),await this._stopAutoRefresh()}async _autoRefreshTokenTick(){this._debug("#_autoRefreshTokenTick()","begin");try{await this._acquireLock(0,async()=>{try{const e=Date.now();try{return await this._useSession(async a=>{const{data:{session:i}}=a;if(!i||!i.refresh_token||!i.expires_at){this._debug("#_autoRefreshTokenTick()","no session");return}const r=Math.floor((i.expires_at*1e3-e)/To);this._debug("#_autoRefreshTokenTick()",`access token expires in ${r} ticks, a tick lasts ${To}ms, refresh threshold is ${kd} ticks`),r<=kd&&await this._callRefreshToken(i.refresh_token)})}catch(a){console.error("Auto refresh tick failed with error. This is likely a transient error.",a)}}finally{this._debug("#_autoRefreshTokenTick()","end")}})}catch(e){if(e.isAcquireTimeout||e instanceof Xb)this._debug("auto refresh token tick lock not available");else throw e}}async _handleVisibilityChange(){if(this._debug("#_handleVisibilityChange()"),!Ot()||!(window!=null&&window.addEventListener))return this.autoRefreshToken&&this.startAutoRefresh(),!1;try{this.visibilityChangedCallback=async()=>await this._onVisibilityChanged(!1),window==null||window.addEventListener("visibilitychange",this.visibilityChangedCallback),await this._onVisibilityChanged(!0)}catch(e){console.error("_handleVisibilityChange",e)}}async _onVisibilityChanged(e){const a=`#_onVisibilityChanged(${e})`;this._debug(a,"visibilityState",document.visibilityState),document.visibilityState==="visible"?(this.autoRefreshToken&&this._startAutoRefresh(),e||(await this.initializePromise,await this._acquireLock(-1,async()=>{if(document.visibilityState!=="visible"){this._debug(a,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");return}await this._recoverAndRefresh()}))):document.visibilityState==="hidden"&&this.autoRefreshToken&&this._stopAutoRefresh()}async _getUrlForProvider(e,a,i){const r=[`provider=${encodeURIComponent(a)}`];if(i!=null&&i.redirectTo&&r.push(`redirect_to=${encodeURIComponent(i.redirectTo)}`),i!=null&&i.scopes&&r.push(`scopes=${encodeURIComponent(i.scopes)}`),this.flowType==="pkce"){const[n,s]=await fo(this.storage,this.storageKey),l=new URLSearchParams({code_challenge:`${encodeURIComponent(n)}`,code_challenge_method:`${encodeURIComponent(s)}`});r.push(l.toString())}if(i!=null&&i.queryParams){const n=new URLSearchParams(i.queryParams);r.push(n.toString())}return i!=null&&i.skipBrowserRedirect&&r.push(`skip_http_redirect=${i.skipBrowserRedirect}`),`${e}?${r.join("&")}`}async _unenroll(e){try{return await this._useSession(async a=>{var i;const{data:r,error:n}=a;return n?{data:null,error:n}:await be(this.fetch,"DELETE",`${this.url}/factors/${e.factorId}`,{headers:this.headers,jwt:(i=r==null?void 0:r.session)===null||i===void 0?void 0:i.access_token})})}catch(a){if(he(a))return{data:null,error:a};throw a}}async _enroll(e){try{return await this._useSession(async a=>{var i,r;const{data:n,error:s}=a;if(s)return{data:null,error:s};const l=Object.assign({friendly_name:e.friendlyName,factor_type:e.factorType},e.factorType==="phone"?{phone:e.phone}:e.factorType==="totp"?{issuer:e.issuer}:{}),{data:c,error:d}=await be(this.fetch,"POST",`${this.url}/factors`,{body:l,headers:this.headers,jwt:(i=n==null?void 0:n.session)===null||i===void 0?void 0:i.access_token});return d?{data:null,error:d}:(e.factorType==="totp"&&c.type==="totp"&&(!((r=c==null?void 0:c.totp)===null||r===void 0)&&r.qr_code)&&(c.totp.qr_code=`data:image/svg+xml;utf-8,${c.totp.qr_code}`),{data:c,error:null})})}catch(a){if(he(a))return{data:null,error:a};throw a}}async _verify(e){return this._acquireLock(-1,async()=>{try{return await this._useSession(async a=>{var i;const{data:r,error:n}=a;if(n)return{data:null,error:n};const s=Object.assign({challenge_id:e.challengeId},"webauthn"in e?{webauthn:Object.assign(Object.assign({},e.webauthn),{credential_response:e.webauthn.type==="create"?hC(e.webauthn.credential_response):gC(e.webauthn.credential_response)})}:{code:e.code}),{data:l,error:c}=await be(this.fetch,"POST",`${this.url}/factors/${e.factorId}/verify`,{body:s,headers:this.headers,jwt:(i=r==null?void 0:r.session)===null||i===void 0?void 0:i.access_token});return c?{data:null,error:c}:(await this._saveSession(Object.assign({expires_at:Math.round(Date.now()/1e3)+l.expires_in},l)),await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED",l),{data:l,error:c})})}catch(a){if(he(a))return{data:null,error:a};throw a}})}async _challenge(e){return this._acquireLock(-1,async()=>{try{return await this._useSession(async a=>{var i;const{data:r,error:n}=a;if(n)return{data:null,error:n};const s=await be(this.fetch,"POST",`${this.url}/factors/${e.factorId}/challenge`,{body:e,headers:this.headers,jwt:(i=r==null?void 0:r.session)===null||i===void 0?void 0:i.access_token});if(s.error)return s;const{data:l}=s;if(l.type!=="webauthn")return{data:l,error:null};switch(l.webauthn.type){case"create":return{data:Object.assign(Object.assign({},l),{webauthn:Object.assign(Object.assign({},l.webauthn),{credential_options:Object.assign(Object.assign({},l.webauthn.credential_options),{publicKey:mC(l.webauthn.credential_options.publicKey)})})}),error:null};case"request":return{data:Object.assign(Object.assign({},l),{webauthn:Object.assign(Object.assign({},l.webauthn),{credential_options:Object.assign(Object.assign({},l.webauthn.credential_options),{publicKey:pC(l.webauthn.credential_options.publicKey)})})}),error:null}}})}catch(a){if(he(a))return{data:null,error:a};throw a}})}async _challengeAndVerify(e){const{data:a,error:i}=await this._challenge({factorId:e.factorId});return i?{data:null,error:i}:await this._verify({factorId:e.factorId,challengeId:a.id,code:e.code})}async _listFactors(){var e;const{data:{user:a},error:i}=await this.getUser();if(i)return{data:null,error:i};const r={all:[],phone:[],totp:[],webauthn:[]};for(const n of(e=a==null?void 0:a.factors)!==null&&e!==void 0?e:[])r.all.push(n),n.status==="verified"&&r[n.factor_type].push(n);return{data:r,error:null}}async _getAuthenticatorAssuranceLevel(){var e,a;const{data:{session:i},error:r}
534=await this.getSession();if(r)return{data:null,error:r};if(!i)return{data:{currentLevel:null,nextLevel:null,currentAuthenticationMethods:[]},error:null};const{payload:n}=hc(i.access_token);let s=null;n.aal&&(s=n.aal);let l=s;((a=(e=i.user.factors)===null||e===void 0?void 0:e.filter(u=>u.status==="verified"))!==null&&a!==void 0?a:[]).length>0&&(l="aal2");const d=n.amr||[];return{data:{currentLevel:s,nextLevel:l,currentAuthenticationMethods:d},error:null}}async _getAuthorizationDetails(e){try{return await this._useSession(async a=>{const{data:{session:i},error:r}=a;return r?{data:null,error:r}:i?await be(this.fetch,"GET",`${this.url}/oauth/authorizations/${e}`,{headers:this.headers,jwt:i.access_token,xform:n=>({data:n,error:null})}):{data:null,error:new ga}})}catch(a){if(he(a))return{data:null,error:a};throw a}}async _approveAuthorization(e,a){try{return await this._useSession(async i=>{const{data:{session:r},error:n}=i;if(n)return{data:null,error:n};if(!r)return{data:null,error:new ga};const s=await be(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:r.access_token,body:{action:"approve"},xform:l=>({data:l,error:null})});return s.data&&s.data.redirect_url&&Ot()&&!(a!=null&&a.skipBrowserRedirect)&&window.location.assign(s.data.redirect_url),s})}catch(i){if(he(i))return{data:null,error:i};throw i}}async _denyAuthorization(e,a){try{return await this._useSession(async i=>{const{data:{session:r},error:n}=i;if(n)return{data:null,error:n};if(!r)return{data:null,error:new ga};const s=await be(this.fetch,"POST",`${this.url}/oauth/authorizations/${e}/consent`,{headers:this.headers,jwt:r.access_token,body:{action:"deny"},xform:l=>({data:l,error:null})});return s.data&&s.data.redirect_url&&Ot()&&!(a!=null&&a.skipBrowserRedirect)&&window.location.assign(s.data.redirect_url),s})}catch(i){if(he(i))return{data:null,error:i};throw i}}async fetchJwk(e,a={keys:[]}){let i=a.keys.find(l=>l.kid===e);if(i)return i;const r=Date.now();if(i=this.jwks.keys.find(l=>l.kid===e),i&&this.jwks_cached_at+_S>r)return i;const{data:n,error:s}=await be(this.fetch,"GET",`${this.url}/.well-known/jwks.json`,{headers:this.headers});if(s)throw s;return!n.keys||n.keys.length===0||(this.jwks=n,this.jwks_cached_at=r,i=n.keys.find(l=>l.kid===e),!i)?null:i}async getClaims(e,a={}){try{let i=e;if(!i){const{data:h,error:v}
534=await this.getSession();if(v||!h.session)return{data:null,error:v};i=h.session.access_token}const{header:r,payload:n,signature:s,raw:{header:l,payload:c}}=hc(i);a!=null&&a.allowExpired||GS(n.exp);const d=!r.alg||r.alg.startsWith("HS")||!r.kid||!("crypto"in globalThis&&"subtle"in globalThis.crypto)?null:await this.fetchJwk(r.kid,a!=null&&a.keys?{keys:a.keys}:a==null?void 0:a.jwks);if(!d){const{error:h}=await this.getUser(i);if(h)throw h;return{data:{claims:n,header:r,signature:s},error:null}}const u=WS(r.alg),p=await crypto.subtle.importKey("jwk",d,u,!0,["verify"]);if(!await crypto.subtle.verify(u,p,s,IS(`${l}.${c}`)))throw new Cd("Invalid JWT signature");return{data:{claims:n,header:r,signature:s},error:null}}catch(i){if(he(i))return{data:null,error:i};throw i}}}bn.nextInstanceID=0;const SC=bn;class CC extends SC{constructor(e){super(e)}}class TC{constructor(e,a,i){var r,n,s;this.supabaseUrl=e,this.supabaseKey=a;const l=vS(e);if(!a)throw new Error("supabaseKey is required.");this.realtimeUrl=new URL("realtime/v1",l),this.realtimeUrl.protocol=this.realtimeUrl.protocol.replace("http","ws"),this.authUrl=new URL("auth/v1",l),this.storageUrl=new URL("storage/v1",l),this.functionsUrl=new URL("functions/v1",l);const c=`sb-${l.hostname.split(".")[0]}-auth-token`,d={db:dS,realtime:mS,auth:Object.assign(Object.assign({},uS),{storageKey:c}),global:cS},u=bS(i??{},d);this.storageKey=(r=u.auth.storageKey)!==null&&r!==void 0?r:"",this.headers=(n=u.global.headers)!==null&&n!==void 0?n:{},u.accessToken?(this.accessToken=u.accessToken,this.auth=new Proxy({},{get:(p,f)=>{throw new Error(`@supabase/supabase-js: Supabase Client is configured with the accessToken option, accessing supabase.auth.${String(f)} is not possible`)}})):this.auth=this._initSupabaseAuthClient((s=u.auth)!==null&&s!==void 0?s:{},this.headers,u.global.fetch),this.fetch=gS(a,this._getAccessToken.bind(this),u.global.fetch),this.realtime=this._initRealtimeClient(Object.assign({headers:this.headers,accessToken:this._getAccessToken.bind(this)},u.realtime)),this.rest=new y2(new URL("rest/v1",l).href,{headers:this.headers,schema:u.db.schema,fetch:this.fetch}),this.storage=new nS(this.storageUrl.href,this.headers,this.fetch,i==null?void 0:i.storage),u.accessToken||this._listenForAuthEvents()}get functions(){return new u2(this.functionsUrl.href,{headers:this.headers,customFetch:this.fetch})}from(e){return this.rest.from(e)}schema(e){return this.rest.schema(e)}rpc(e,a={},i={head:!1,get:!1,count:void 0}){return this.rest.rpc(e,a,i)}channel(e,a={config:{}}){return this.realtime.channel(e,a)}getChannels(){return this.realtime.getChannels()}removeChannel(e){return this.realtime.removeChannel(e)}removeAllChannels(){return this.realtime.removeAllChannels()}async _getAccessToken(){var e,a;if(this.accessToken)return await this.accessToken();const{data:i}=await this.auth.getSession();return(a=(e=i.session)===null||e===void 0?void 0:e.access_token)!==null&&a!==void 0?a:this.supabaseKey}_initSupabaseAuthClient({autoRefreshToken:e,persistSession:a,detectSessionInUrl:i,storage:r,userStorage:n,storageKey:s,flowType:l,lock:c,debug:d},u,p){const f={Authorization:`Bearer ${this.supabaseKey}`,apikey:`${this.supabaseKey}`};return new CC({url:this.authUrl.href,headers:Object.assign(Object.assign({},f),u),storageKey:s,autoRefreshToken:e,persistSession:a,detectSessionInUrl:i,storage:r,userStorage:n,flowType:l,lock:c,debug:d,fetch:p,hasCustomAuthorizationHeader:Object.keys(this.headers).some(h=>h.toLowerCase()==="authorization")})}_initRealtimeClient(e){return new O2(this.realtimeUrl.href,Object.assign(Object.assign({},e),{params:Object.assign({apikey:this.supabaseKey},e==null?void 0:e.params)}))}_listenForAuthEvents(){return this.auth.onAuthStateChange((a,i)=>{this._handleTokenChanged(a,"CLIENT",i==null?void 0:i.access_token)})}_handleTokenChanged(e,a,i){(e==="TOKEN_REFRESHED"||e==="SIGNED_IN")&&this.changedAccessToken!==i?(this.changedAccessToken=i,this.realtime.setAuth(i)):e==="SIGNED_OUT"&&(this.realtime.setAuth(),a=="STORAGE"&&this.auth.signOut(),this.changedAccessToken=void 0)}}const jC=(t,e,a)=>new TC(t,e,a);function NC(){if(typeof window<"u"||typeof process>"u")return!1;const t=process.version;if(t==null)return!1;const e=t.match(/^v(\d+)\./);return e?parseInt(e[1],10)<=18:!1}NC()&&console.warn("⚠️  Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to N
534ode.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217");const PC="https://kibuqatinwtuqlzmryvx.supabase.co",AC="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImtpYnVxYXRpbnd0dXFsem1yeXZ4Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjEyODMxMzMsImV4cCI6MjA3Njg1OTEzM30.drADaPjZSiN4AuNFJuTfZrVuSR3_1dLCO_xuUzZ1cn4",V=jC(PC,AC,{auth:{storage:localStorage,persistSession:!0,autoRefreshToken:!0},global:{headers:{"X-Client-Info":"supabase-js-web"}},realtime:{params:{eventsPerSecond:2}}}),Ou="utm_data",Mu="utm_data_session",Zs="landing_url";function tv(){const t=window.location.href,e=new URLSearchParams(window.location.search);sessionStorage.getItem(Zs)||sessionStorage.setItem(Zs,t);const a=e.get("utm_source"),i=e.get("utm_medium"),r=e.get("utm_campaign"),n=e.get("utm_content");if(a){const s={utm_source:a,utm_medium:i,utm_campaign:r,utm_content:n,captured_at:new Date().toISOString()};try{localStorage.setItem(Ou,JSON.stringify(s))}catch(l){console.warn("[UTM] localStorage save failed:",l)}try{sessionStorage.setItem(Mu,JSON.stringify(s))}catch(l){console.warn("[UTM] sessionStorage save failed:",l)}}}function Td(){try{const t=sessionStorage.getItem(Mu);if(t){const e=JSON.parse(t);return e}}catch(t){console.warn("[UTM] sessionStorage read failed:",t)}try{const t=localStorage.getItem(Ou);if(t){const e=JSON.parse(t);return e}}catch(t){console.warn("[UTM] localStorage read failed:",t)}try{const t=sessionStorage.getItem(Zs);if(t){const e=new URL(t),a=new URLSearchParams(e.search),i=a.get("utm_source");if(i){const r={utm_source:i,utm_medium:a.get("utm_medium"),utm_campaign:a.get("utm_campaign"),utm_content:a.get("utm_content"),captured_at:new Date().toISOString()};return r}}}catch(t){console.warn("[UTM] Landing URL parse failed:",t)}return{}}function jd(){localStorage.removeItem(Ou),sessionStorage.removeItem(Mu),sessionStorage.removeItem(Zs)}function EC(t,e={}){const a=e.heartbeatMs??3e5,i=m.useRef(!1),r=m.useRef(void 0);m.useEffect(()=>{const n=!r.current&&!!t;if(r.current=t,!t)return;let s=!1;n&&(i.current=!1);const l=async(f,h=!1)=>{try{const{error:v}=await V.rpc("set_user_online",{p_is_online:f});return v?(h||console.warn("[Presence] set_user_online failed:",v.message),!1):!0}catch(v){return h||console.warn("[Presence] set_user_online exception:",v),!1}};(async()=>{if(await l(!0)){i.current=!0;return}s||setTimeout(async()=>{if(s)return;if(await l(!0,!0)){i.current=!0;return}s||setTimeout(async()=>{if(s)return;await l(!0,!0)?i.current=!0:console.warn("[Presence] set_user_online failed after all retries for user:",t)},5e3)},1e3)})();const d=window.setInterval(()=>{!s&&!document.hidden&&l(!0,!0)},a),u=()=>{!s&&!document.hidden&&l(!0,!0)},p=()=>{l(!1,!0)};return window.addEventListener("beforeunload",p),window.addEventListener("pagehide",p),document.addEventListener("visibilitychange",u),()=>{s=!0,window.clearInterval(d),window.removeEventListener("beforeunload",p),window.removeEventListener("pagehide",p),document.removeEventListener("visibilitychange",u)}},[t,a])}const zu=m.createContext(void 0),hs=async(t,e)=>{},IC=async()=>{};function DC({children:t}){const[e,a]=m.useState(null),[i,r]=m.useState(null),[n,s]=m.useState(!0),l=m.useRef(!0),c=m.useRef(!1),d=m.useRef(null);EC(e==null?void 0:e.id);const u=async N=>{var P;try{const{data:{session:E}}=await V.auth.getSession();if(!(E!=null&&E.access_token))return;const L=Td(),A=!!L.utm_source,I=await V.functions.invoke("capture-user-ip",{body:{type:N,utm_source:L.utm_source||void 0,utm_medium:L.utm_medium||void 0,utm_campaign:L.utm_campaign||void 0,utm_content:L.utm_content||void 0}});A&&((P=I.data)!=null&&P.utm_saved)&&jd()}catch(E){console.error("Error capturing IP/UTM:",E)}},p=async N=>{try{const{error:P}=await V.rpc("grant_daily_tokens",{p_user_id:N});P&&console.error("Error checking daily tokens:",P)}catch(P){console.error("Exception checking daily tokens:",P)}},f=async N=>{try{const{data:P,error:E}=await V.rpc("check_and_expire_tokens",{p_user_id:N});if(E){console.error("Error checking token expiration:",E);return}(P==null?void 0:P.tokens_expired)>0&&P.tokens_expired}catch(P){console.error("Exception checking token expiration:",P)}},h=m.useRef(new Set),v=m.useRef(null);
534v.current===null&&typeof window<"u"&&(v.current=new URLSearchParams(window.location.hash.replace("#",""))),m.useEffect(()=>{const{data:{subscription:N}}=V.auth.onAuthStateChange(async(E,L)=>{const A=L!=null&&L.access_token?`${L.user.id}:${L.access_token.slice(-20)}`:null,I=A&&h.current.has(A),R=E==="SIGNED_IN"&&!!(L!=null&&L.user)&&!I&&(!c.current||d.current!==L.user.id);if(r(L),a((L==null?void 0:L.user)??null),s(!1),L!=null&&L.user){if(c.current=!0,d.current=L.user.id,A&&(h.current.add(A),h.current.size>10)){const B=Array.from(h.current);B.slice(0,B.length-10).forEach(z=>h.current.delete(z))}}else c.current=!1,d.current=null;R&&setTimeout(async()=>{var B;u("login"),p(L.user.id),f(L.user.id);try{await V.rpc("track_login",{p_user_id:L.user.id})}catch(z){console.error("[Auth] Error tracking login:",z)}hs(L.user.id,{email:L.user.email,name:(B=L.user.user_metadata)==null?void 0:B.full_name})},100)});return(async()=>{var E,L,A;try{const{data:{session:I},error:R}=await V.auth.getSession();if(R)console.error("Error getting session:",R);else if(r(I),a((I==null?void 0:I.user)??null),c.current=!!(I!=null&&I.user),d.current=((E=I==null?void 0:I.user)==null?void 0:E.id)??null,I!=null&&I.user){const B=window.location.hash.includes("access_token")||new URLSearchParams(window.location.search).has("code"),z=((L=I.user.app_metadata)==null?void 0:L.provider)&&I.user.app_metadata.provider!=="email",Z=B||z,fe=new URLSearchParams(window.location.search),O=new URLSearchParams(window.location.hash.replace("#","")),Q=(A=v.current)==null?void 0:A.get("type"),Y=fe.has("confirmation_url")||O.get("type")==="signup"||O.get("type")==="email_confirmation"||Q==="signup"||Q==="email_confirmation",K=Z||Y;Z?setTimeout(async()=>{var J;u("login"),p(I.user.id),f(I.user.id);try{await V.rpc("track_login",{p_user_id:I.user.id})}catch(oe){console.error("Error tracking OAuth login:",oe)}hs(I.user.id,{email:I.user.email,name:(J=I.user.user_metadata)==null?void 0:J.full_name})},300):Y?setTimeout(async()=>{var J;u("signup"),p(I.user.id),f(I.user.id);try{await V.rpc("track_login",{p_user_id:I.user.id})}catch(oe){console.error("Error tracking email confirmation login:",oe)}hs(I.user.id,{email:I.user.email,name:(J=I.user.user_metadata)==null?void 0:J.full_name})},300):setTimeout(()=>{var J;p(I.user.id),f(I.user.id),hs(I.user.id,{email:I.user.email,name:(J=I.user.user_metadata)==null?void 0:J.full_name})},1e3)}}catch(I){console.error("Error initializing auth:",I)}finally{l.current=!1,s(!1)}})(),()=>N.unsubscribe()},[]);const g=m.useCallback(async(N,P)=>{const{data:E,error:L}=await V.auth.signInWithPassword({email:N,password:P});return E.session&&(r(E.session),a(E.user)),{error:L}},[]),b=m.useCallback(async(N,P,E,L="en",A,I)=>{const R=I==="marketplace_buyer"?`${window.location.origin}/creators`:`${window.location.origin}/dashboard`,B={full_name:E,language:L};I&&(B.signup_type=I),A&&(A.utm_source&&(B.utm_source=A.utm_source),A.utm_medium&&(B.utm_medium=A.utm_medium),A.utm_campaign&&(B.utm_campaign=A.utm_campaign),A.utm_content&&(B.utm_content=A.utm_content),B.utm_captured_at=new Date().toISOString());const{data:z,error:Z}=await V.auth.signUp({email:N,password:P,options:{emailRedirectTo:R,data:B}});return z.user&&!Z&&setTimeout(()=>u("signup"),100),{data:z,error:Z}},[]),x=m.useCallback(async()=>{var N,P;try{try{e!=null&&e.id&&await V.rpc("set_user_online",{p_is_online:!1})}catch(L){console.warn("Failed to set offline on sign out:",L)}IC();const{error:E}=await V.auth.signOut();if(a(null),r(null),E&&!(((N=E==null?void 0:E.message)==null?void 0:N.includes("Auth session missing"))??!1))throw console.error("Sign out error:",E),E}catch(E){const L=E;if(!(((P=L==null?void 0:L.message)==null?void 0:P.includes("Auth session missing"))??!1))throw console.error("Unexpected sign out error:",E),E;a(null),r(null)}},[e==null?void 0:e.id]),w=m.useCallback(async N=>{var P,E,L;try{const{error:A}=await V.auth.signInWithOAuth({provider:"google",options:{redirectTo:N||`${window.location.origin}/dashboard`,scopes:"openid email profile",queryParams:{access_type:"offline",prompt:"consent"}}});return A&&(((P=A.message)==null?void 0:P.includes("disallowed_useragent"))||((E=A.message)==null?void 0:E.includes("403"))||((L=A.message)==null?void 0:L.includes("secure browsers"))||A.status===403)?{error:{...A,code:"WEBVIEW_DETECTED",message:"Google sign-in requires a regular browser. Please open this page in Safari or Chrome."}}:{error:A}}catch(A){return{error:{message:(A==null?void 0:A.message)||"An unexpected error occurred",code:"UNKNOWN_ERROR"}}}},[]),k=m.useCallback(async N=>{var P,E,L;try{const{error:A}=await V.auth.signInWithOAuth({provider:"facebook",options:{redirectTo:N||`${window.location.origin}/dashboard`,scopes:"email"}});return A&&(((P=A.message)==null?void 0:P.includes("disallowed_useragent"))||((E=A.message)==null?void 0:E.includes("403"))||((L=A.message)==null?void 0:L.includes("secure browsers"))||A.status===403)?{error:{...A,code:"WEBVIEW_DETECTED",message:"Facebook sign-in requires a regular browser. Please open this page in Safari or Chrome."}}:{error:A}}catch(A){return{error:{message:(A==null?void 0:A.message)||"An unexpected error occurred",code:"UNKNOWN_ERROR"}}}},[]),_=m.useCallback(async N=>{try{const{error:P}=await V.auth.resetPasswordForEmail(N,{redirectTo:`${window.location.origin}/auth?mode=reset`});return{error:P}}catch(P){return{error:{message:(P==null?void 0:P.message)||"Failed to send password reset email"}}}},[]),j=m.useCallback(async(N,P)=>{try{const{error:E}=await V.auth.signInWithOtp({email:N,options:{emailRedirectTo:P||`${window.location.origin}/dashboard`}});return{error:E}}catch(E){return{error:{message:(E==null?void 0:E.message)||"Failed to send magic link"}}}},[]),S=m.useCallback(async N=>{try{const{error:P}=await V.auth.updateUser({password:N});return{error:P}}catch(P){return{error:{message:(P==null?void 0:P.message)||"Failed to update password"}}}},[]),C=m.useMemo(()=>({user:e,session:i,loading:n,signIn:g,signUp:b,signOut:x,signInWithGoogle:w,signInWithFacebook:k,resetPassword:_,sendMagicLink:j,updatePassword:S}),[e,i,n,g,b,x,w,k,_,j,S]);return o.jsx(zu.Provider,{value:C,children:t})}const av=m.createContext(void 0),Vn=()=>{const t=m.useContext(av);
vendor: 4,168 bytes, line 534
534if(!t)throw new Error("useSettingsModal must be used within a SettingsModalProvider");return t},RC=({children:t})=>{const[e,a]=m.useState(!1),[i,r]=m.useState("layout"),[n,s]=m.useState(null),l=m.useCallback((u="layout")=>{r(u),a(!0)},[]),c=m.useCallback(()=>{a(!1)},[]),d=m.useMemo(()=>({isOpen:e,activeTab:i,openSettings:l,closeSettings:c,setActiveTab:r,canvasGrid:n,setCanvasGrid:s}),[e,i,l,c,n]);return o.jsx(av.Provider,{value:d,children:t})},xe=t=>typeof t=="string",Dr=()=>{let t,e;const a=new Promise((i,r)=>{t=i,e=r});return a.resolve=t,a.reject=e,a},Op=t=>t==null?"":""+t,LC=(t,e,a)=>{t.forEach(i=>{e[i]&&(a[i]=e[i])})},OC=/###/g,Mp=t=>t&&t.indexOf("###")>-1?t.replace(OC,"."):t,zp=t=>!t||xe(t),Jr=(t,e,a)=>{const i=xe(e)?e.split("."):e;let r=0;for(;r<i.length-1;){if(zp(t))return{};const n=Mp(i[r]);!t[n]&&a&&(t[n]=new a),Object.prototype.hasOwnProperty.call(t,n)?t=t[n]:t={},++r}return zp(t)?{}:{obj:t,k:Mp(i[r])}},Bp=(t,e,a)=>{const{obj:i,k:r}=Jr(t,e,Object);if(i!==void 0||e.length===1){i[r]=a;return}let n=e[e.length-1],s=e.slice(0,e.length-1),l=Jr(t,s,Object);for(;l.obj===void 0&&s.length;)n=`${s[s.length-1]}.${n}`,s=s.slice(0,s.length-1),l=Jr(t,s,Object),l!=null&&l.obj&&typeof l.obj[`${l.k}.${n}`]<"u"&&(l.obj=void 0);l.obj[`${l.k}.${n}`]=a},MC=(t,e,a,i)=>{const{obj:r,k:n}=Jr(t,e,Object);r[n]=r[n]||[],r[n].push(a)},el=(t,e)=>{const{obj:a,k:i}=Jr(t,e);if(a&&Object.prototype.hasOwnProperty.call(a,i))return a[i]},zC=(t,e,a)=>{const i=el(t,a);return i!==void 0?i:el(e,a)},iv=(t,e,a)=>{for(const i in e)i!=="__proto__"&&i!=="constructor"&&(i in t?xe(t[i])||t[i]instanceof String||xe(e[i])||e[i]instanceof String?a&&(t[i]=e[i]):iv(t[i],e[i],a):t[i]=e[i]);return t},xo=t=>t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var BC={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};const FC=t=>xe(t)?t.replace(/[&<>"'\/]/g,e=>BC[e]):t;class $C{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const a=this.regExpMap.get(e);if(a!==void 0)return a;const i=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,i),this.regExpQueue.push(e),i}}const VC=[" ",",","?","!",";"],UC=new $C(20),qC=(t,e,a)=>{e=e||"",a=a||"";const i=VC.filter(s=>e.indexOf(s)<0&&a.indexOf(s)<0);if(i.length===0)return!0;const r=UC.getRegExp(`(${i.map(s=>s==="?"?"\\?":s).join("|")})`);let n=!r.test(t);if(!n){const s=t.indexOf(a);s>0&&!r.test(t.substring(0,s))&&(n=!0)}return n},Nd=(t,e,a=".")=>{if(!t)return;if(t[e])return Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0;const i=e.split(a);let r=t;for(let n=0;n<i.length;){if(!r||typeof r!="object")return;let s,l="";for(let c=n;c<i.length;++c)if(c!==n&&(l+=a),l+=i[c],s=r[l],s!==void 0){if(["string","number","boolean"].indexOf(typeof s)>-1&&c<i.length-1)continue;n+=c-n+1;break}r=s}return r},vn=t=>t==null?void 0:t.replace("_","-"),GC={type:"logger",log(t){this.output("log",t)},warn(t){this.output("warn",t)},error(t){this.output("error",t)},output(t,e){var a,i;(i=(a=console==null?void 0:console[t])==null?void 0:a.apply)==null||i.call(a,console,e)}};class tl{constructor(e,a={}){this.init(e,a)}init(e,a={}){this.prefix=a.prefix||"i18next:",this.logger=e||GC,this.options=a,this.debug=a.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,a,i,r){return r&&!this.debug?null:(xe(e[0])&&(e[0]=`${i}${this.prefix} ${e[0]}`),this.logger[a](e))}create(e){return new tl(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return e=e||this.options,e.prefix=e.prefix||this.prefix,new tl(this.logger,e)}}var Ea=new tl;class jl{constructor(){this.observers={}}on(e,a){return e.split(" ").forEach(i=>{this.observers[i]||(this.observers[i]=new Map);const r=this.observers[i].get(a)||0;this.observers[i].set(a,r+1)}),this}off(e,a){if(this.observers[e]){if(!a){delete this.observers[e];return}this.observers[e].delete(a)}}emit(e,...a){this.observers[e]&&Array.from(this.observers[e].entries()).forEac
534h(([r,n])=>{for(let s=0;s<n;s++)r(...a)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([r,n])=>{for(let s=0;s<n;s++)r.apply(r,[e,...a])})}}class Fp extends jl{constructor(e,a={ns:["translation"],defaultNS:"translation"}){super(),this.data=e||{},this.options=a,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}removeNamespaces(e){const a=this.options.ns.indexOf(e);a>-1&&this.options.ns.splice(a,1)}getResource(e,a,i,r={}){var d,u;const n=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,s=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let l;e.indexOf(".")>-1?l=e.split("."):(l=[e,a],i&&(Array.isArray(i)?l.push(...i):xe(i)&&n?l.push(...i.split(n)):l.push(i)));const c=el(this.data,l);return!c&&!a&&!i&&e.indexOf(".")>-1&&(e=l[0],a=l[1],i=l.slice(2).join(".")),c||!s||!xe(i)?c:Nd((u=(d=this.data)==null?void 0:d[e])==null?void 0:u[a],i,n)}addResource(e,a,i,r,n={silent:!1}){const s=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let l=[e,a];i&&(l=l.concat(s?i.split(s):i)),e.indexOf(".")>-1&&(l=e.split("."),r=a,a=l[1]),this.addNamespaces(a),Bp(this.data,l,r),n.silent||this.emit("added",e,a,i,r)}addResources(e,a,i,r={silent:!1}){for(const n in i)(xe(i[n])||Array.isArray(i[n]))&&this.addResource(e,a,n,i[n],{silent:!0});r.silent||this.emit("added",e,a,i)}addResourceBundle(e,a,i,r,n,s={silent:!1,skipCopy:!1}){let l=[e,a];e.indexOf(".")>-1&&(l=e.split("."),r=i,i=a,a=l[1]),this.addNamespaces(a);let c=el(this.data,l)||{};s.skipCopy||(i=JSON.parse(JSON.stringify(i))),r?iv(c,i,n):c={...c,...i},Bp(this.data,l,c),s.silent||this.emit("added",e,a,i)}removeResourceBundle(e,a){this.hasResourceBundle(e,a)&&delete this.data[e][a],this.removeNamespaces(a),this.emit("removed",e,a)}hasResourceBundle(e,a){return this.getResource(e,a)!==void 0}getResourceBundle(e,a){return a||(a=this.options.defaultNS),this.getResource(e,a)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const a=this.getDataByLanguage(e);return!!(a&&Object.keys(a)||[]).find(r=>a[r]&&Object.keys(a[r]).length>0)}toJSON(){return this.data}}var ov={processors:{},addPostProcessor(t){this.processors[t.name]=t},handle(t,e,a,i,r){return t.forEach(n=>{var s;e=((s=this.processors[n])==null?void 0:s.process(e,a,i,r))??e}),e}};const rv=Symbol("i18next/PATH_KEY");function WC(){const t=[],e=Object.create(null);let a;return e.get=(i,r)=>{var n;return(n=a==null?void 0:a.revoke)==null||n.call(a),r===rv?t:(t.push(r),a=Proxy.revocable(i,e),a.proxy)},Proxy.revocable(Object.create(null),e).proxy}function Pd(t,e){const{[rv]:a}=t(WC());return a.join((e==null?void 0:e.keySeparator)??".")}const $p={},bc=t=>!xe(t)&&typeof t!="boolean"&&typeof t!="number";class al extends jl{constructor(e,a={}){super(),LC(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","
534i18nFormat","utils"],e,this),this.options=a,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Ea.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,a={interpolation:{}}){const i={...a};if(e==null)return!1;const r=this.resolve(e,i);if((r==null?void 0:r.res)===void 0)return!1;const n=bc(r.res);return!(i.returnObjects===!1&&n)}extractFromKey(e,a){let i=a.nsSeparator!==void 0?a.nsSeparator:this.options.nsSeparator;i===void 0&&(i=":");const r=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let n=a.ns||this.options.defaultNS||[];const s=i&&e.indexOf(i)>-1,l=!this.options.userDefinedKeySeparator&&!a.keySeparator&&!this.options.userDefinedNsSeparator&&!a.nsSeparator&&!qC(e,i,r);if(s&&!l){const c=e.match(this.interpolator.nestingRegexp);if(c&&c.length>0)return{key:e,namespaces:xe(n)?[n]:n};const d=e.split(i);(i!==r||i===r&&this.options.ns.indexOf(d[0])>-1)&&(n=d.shift()),e=d.join(r)}return{key:e,namespaces:xe(n)?[n]:n}}translate(e,a,i){let r=typeof a=="object"?{...a}:a;if(typeof r!="object"&&this.options.overloadTranslationOptionHandler&&(r=this.options.overloadTranslationOptionHandler(arguments)),typeof r=="object"&&(r={...r}),r||(r={}),e==null)return"";typeof e=="function"&&(e=Pd(e,{...this.options,...r})),Array.isArray(e)||(e=[String(e)]);const n=r.returnDetails!==void 0?r.returnDetails:this.options.returnDetails,s=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,{key:l,namespaces:c}=this.extractFromKey(e[e.length-1],r),d=c[c.length-1];let u=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;u===void 0&&(u=":");const p=r.lng||this.language,f=r.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((p==null?void 0:p.toLowerCase())==="cimode")return f?n?{res:`${d}${u}${l}`,usedKey:l,exactUsedKey:l,usedLng:p,usedNS:d,usedParams:this.getUsedParamsDetails(r)}:`${d}${u}${l}`:n?{res:l,usedKey:l,exactUsedKey:l,usedLng:p,usedNS:d,usedParams:this.getUsedParamsDetails(r)}:l;const h=this.resolve(e,r);let v=h==null?void 0:h.res;const g=(h==null?void 0:h.usedKey)||l,b=(h==null?void 0:h.exactUsedKey)||l,x=["[object Number]","[object Function]","[object RegExp]"],w=r.joinArrays!==void 0?r.joinArrays:this.options.joinArrays,k=!this.i18nFormat||this.i18nFormat.handleAsObject,_=r.count!==void 0&&!xe(r.count),j=al.hasDefaultValue(r),S=_?this.pluralResolver.getSuffix(p,r.count,r):"",C=r.ordinal&&_?this.pluralResolver.getSuffix(p,r.count,{ordinal:!1}):"",N=_&&!r.ordinal&&r.count===0,P=N&&r[`defaultValue${this.options.pluralSeparator}zero`]||r[`defaultValue${S}`]||r[`defaultValue${C}`]||r.defaultValue;let E=v;k&&!v&&j&&(E=P);const L=bc(E),A=Object.prototype.toString.apply(E);if(k&&E&&L&&x.indexOf(A)<0&&!(xe(w)&&Array.isArray(E))){if(!r.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const I=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,E,{...r,ns:c}):`key '${l} (${this.language})' returned an object instead of string.`;return n?(h.res=I,h.usedParams=this.getUsedParamsDetails(r),h):I}if(s){const I=Array.isArray(E),R=I?[]:{},B=I?b:g;for(const z in E)if(Object.prototype.hasOwnProperty.call(E,z)){const Z=`${B}${s}${z}`;j&&!v?R[z]=this.translate(Z,{...r,defaultValue:bc(P)?P[z]:void 0,joinArrays:!1,ns:c}):R[z]=this.translate(Z,{...r,joinArrays:!1,ns:c}),R[z]===Z&&(R[z]=E[z])}v=R}}else if(k&&xe(w)&&Array.isArray(v))v=v.join(w),v&&(v=this.extendTranslation(v,e,r,i));else{let I=!1,R=!1;!this.isValidLookup(v)&&j&&(I=!0,v=P),this.isValidLookup(v)||(R=!0,v=l);const z=(r.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&R?void 0:v,Z=j&&P!==v&&this.options.updateMissing;if(R||I||Z){if(this.logger.log(Z?"updateKey":"missingKey",p,d,l,Z?P:v),s){const Y=this.resolve(l,{...r,keySeparator:!1});Y&&Y.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let fe=[];const O=this.languageUtils.getFallbackCodes(this.options.fallbackLng,r.lng||this.language);if(this.options.saveMissingTo==="fallback"&&O&&O[0])for(let Y=0;Y<O.length;Y++)fe.push(O[Y]);else this.options.saveMissingTo==="all"?fe=this.languageUtils.toResolveHierarchy(r.lng||this.language):fe.push(r.lng||this.language);const Q=(Y,K,J)=>{var ve;const oe=j&&J!==v?J:z;this.options.missingKeyHandler?this.options.missingKeyHandler(Y,d,K,oe,Z,r):(ve=this.backendConnector)!=null&&ve.saveMissing&&this.backendConnector.saveMissing(Y,d,K,oe,Z,r),this.emit
vendor: 28,467 bytes, line 534
534("missingKey",Y,d,K,v)};this.options.saveMissing&&(this.options.saveMissingPlurals&&_?fe.forEach(Y=>{const K=this.pluralResolver.getSuffixes(Y,r);N&&r[`defaultValue${this.options.pluralSeparator}zero`]&&K.indexOf(`${this.options.pluralSeparator}zero`)<0&&K.push(`${this.options.pluralSeparator}zero`),K.forEach(J=>{Q([Y],l+J,r[`defaultValue${J}`]||P)})}):Q(fe,l,P))}v=this.extendTranslation(v,e,r,h,i),R&&v===l&&this.options.appendNamespaceToMissingKey&&(v=`${d}${u}${l}`),(R||I)&&this.options.parseMissingKeyHandler&&(v=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${d}${u}${l}`:l,I?v:void 0,r))}return n?(h.res=v,h.usedParams=this.getUsedParamsDetails(r),h):v}extendTranslation(e,a,i,r,n){var c,d;if((c=this.i18nFormat)!=null&&c.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...i},i.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!i.skipInterpolation){i.interpolation&&this.interpolator.init({...i,interpolation:{...this.options.interpolation,...i.interpolation}});const u=xe(e)&&(((d=i==null?void 0:i.interpolation)==null?void 0:d.skipOnVariables)!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let p;if(u){const h=e.match(this.interpolator.nestingRegexp);p=h&&h.length}let f=i.replace&&!xe(i.replace)?i.replace:i;if(this.options.interpolation.defaultVariables&&(f={...this.options.interpolation.defaultVariables,...f}),e=this.interpolator.interpolate(e,f,i.lng||this.language||r.usedLng,i),u){const h=e.match(this.interpolator.nestingRegexp),v=h&&h.length;p<v&&(i.nest=!1)}!i.lng&&r&&r.res&&(i.lng=this.language||r.usedLng),i.nest!==!1&&(e=this.interpolator.nest(e,(...h)=>(n==null?void 0:n[0])===h[0]&&!i.context?(this.logger.warn(`It seems you are nesting recursively key: ${h[0]} in key: ${a[0]}`),null):this.translate(...h,a),i)),i.interpolation&&this.interpolator.reset()}const s=i.postProcess||this.options.postProcess,l=xe(s)?[s]:s;return e!=null&&(l!=null&&l.length)&&i.applyPostProcessor!==!1&&(e=ov.handle(l,e,a,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(i)},...i}:i,this)),e}resolve(e,a={}){let i,r,n,s,l;return xe(e)&&(e=[e]),e.forEach(c=>{if(this.isValidLookup(i))return;const d=this.extractFromKey(c,a),u=d.key;r=u;let p=d.namespaces;this.options.fallbackNS&&(p=p.concat(this.options.fallbackNS));const f=a.count!==void 0&&!xe(a.count),h=f&&!a.ordinal&&a.count===0,v=a.context!==void 0&&(xe(a.context)||typeof a.context=="number")&&a.context!=="",g=a.lngs?a.lngs:this.languageUtils.toResolveHierarchy(a.lng||this.language,a.fallbackLng);p.forEach(b=>{var x,w;this.isValidLookup(i)||(l=b,!$p[`${g[0]}-${b}`]&&((x=this.utils)!=null&&x.hasLoadedNamespace)&&!((w=this.utils)!=null&&w.hasLoadedNamespace(l))&&($p[`${g[0]}-${b}`]=!0,this.logger.warn(`key "${r}" for languages "${g.join(", ")}" won't get resolved as namespace "${l}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),g.forEach(k=>{var S;if(this.isValidLookup(i))return;s=k;const _=[u];if((S=this.i18nFormat)!=null&&S.addLookupKeys)this.i18nFormat.addLookupKeys(_,u,k,b,a);else{let C;f&&(C=this.pluralResolver.getSuffix(k,a.count,a));const N=`${this.options.pluralSeparator}zero`,P=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(f&&(a.ordinal&&C.indexOf(P)===0&&_.push(u+C.replace(P,this.options.pluralSeparator)),_.push(u+C),h&&_.push(u+N)),v){const E=`${u}${this.options.contextSeparator||"_"}${a.context}`;_.push(E),f&&(a.ordinal&&C.indexOf(P)===0&&_.push(E+C.replace(P,this.options.pluralSeparator)),_.push(E+C),h&&_.push(E+N))}}let j;for(;j=_.pop();)this.isValidLookup(i)||(n=j,i=this.getResource(k,b,j,a))}))})}),{res:i,usedKey:r,exactUsedKey:n,usedLng:s,usedNS:l}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e==="")}getResource(e,a,i,r={}){var n;return(n=this.i18nFormat)!=null&&n.getResource?this.i18nFormat.getResource(e,a,i,r):this.resourceStore.getResource(e,a,i,r)}getUsedParamsDetails(e={}){const a=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],i=e.replace&&!xe(e.replace);let r=i?e.replace:e;if(i&&typeof e.count<"u"&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!i){r={...r};for(const n of a)delete r[n]}return r}static hasDefaultValue(e){const a="defaultValue";for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&a===i.substring(0,a.length)&&e[i]!==void 0)return!0;return!1}}class Vp{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ea.create("languageUtils")}getScriptPartFromCode(e){if(e=vn(e),!e||e.indexOf("-")<0)return null;const a=e.split("-");return a.length===2||(a.pop(),a[a.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(a.join("-"))}getLanguagePartFromCode(e){if(e=vn(e),!e||e.indexOf("-")<0)return e;const a=e.split("-");return this.formatLanguageCode(a[0])}formatLanguageCode(e){if(xe(e)&&e.indexOf("-")>-1){let a;try{a=Intl.getCanonicalLocales(e)[0]}catch{}return a&&this.options.lowerCaseLng&&(a=a.toLowerCase()),a||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let a;return e.forEach(i=>{if(a)return;const r=this.formatLanguageCode(i);(!this.options.supportedLngs||this.isSupportedCode(r))&&(a=r)}),!a&&this.options.supportedLngs&&e.forEach(i=>{if(a)return;const r=this.getScriptPartFromCode(i);if(this.isSupportedCode(r))return a=r;const n=this.getLanguagePartFromCode(i);if(this.isSupportedCode(n))return a=n;a=this.options.supportedLngs.find(s=>{if(s===n)return s;if(!(s.indexOf("-")<0&&n.indexOf("-")<0)&&(s.indexOf("-")>0&&n.indexOf("-")<0&&s.substring(0,s.indexOf("-"))===n||s.indexOf(n)===0&&n.length>1))return s})}),a||(a=this.getFallbackCodes(this.options.fallbackLng)[0]),a}getFallbackCodes(e,a){if(!e)return[];if(typeof e=="function"&&(e=e(a)),xe(e)&&(e=[e]),Array.isArray(e))return e;if(!a)return e.default||[];let i=e[a];return i||(i=e[this.getScriptPartFromCode(a)]),i||(i=e[this.formatLanguageCode(a)]),i||(i=e[this.getLanguagePartFromCode(a)]),i||(i=e.default),i||[]}toResolveHierarchy(e,a){const i=this.getFallbackCodes((a===!1?[]:a)||this.options.fallbackLng||[],e),r=[],n=s=>{s&&(this.isSupportedCode(s)?r.push(s):this.logger.warn(`rejecting language code not found in supportedLngs: ${s}`))};return xe(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&n(this.formatLanguageCode(e)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&n(this.getScriptPartFromCode(e)),this.options.load!=="currentOnly"&&n(this.getLanguagePartFromCode(e))):xe(e)&&n(this.formatLanguageCode(e)),i.forEach(s=>{r.indexOf(s)<0&&n(this.formatLanguageCode(s))}),r}}const Up={zero:0,one:1,two:2,few:3,many:4,other:5},qp={select:t=>t===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class HC{constructor(e,a={}){this.languageUtils=e,this.options=a,this.logger=Ea.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,a){this.rules[e]=a}clearCache(){this.pluralRulesCache={}}getRule(e,a={}){const i=vn(e==="dev"?"en":e),r=a.ordinal?"ordinal":"cardinal",n=JSON.stringify({cleanedCode:i,type:r});if(n in this.pluralRulesCache)return this.pluralRulesCache[n];let s;try{s=new Intl.PluralRules(i,{type:r})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),qp;if(!e.match(/-|_/))return qp;const c=this.languageUtils.getLanguagePartFromCode(e);s=this.getRule(c,a)}return this.pluralRulesCache[n]=s,s}needsPlural(e,a={}){let i=this.getRule(e,a);return i||(i=this.getRule("dev",a)),(i==null?void 0:i.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(e,a,i={}){return this.getSuffixes(e,i).map(r=>`${a}${r}`)}getSuffixes(e,a={}){let i=this.getRule(e,a);return i||(i=this.getRule("dev",a)),i?i.resolvedOptions().pluralCategories.sort((r,n)=>Up[r]-Up[n]).map(r=>`${this.options.prepend}${a.ordinal?`ordinal${this.options.prepend}`:""}${r}`):[]}getSuffix(e,a,i={}){const r=this.getRule(e,i);return r?`${this.options.prepend}${i.ordinal?`ordinal${this.options.prepend}`:""}${r.select(a)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",a,i))}}const Gp=(t,e,a,i=".",r=!0)=>{let n=zC(t,e,a);return!n&&r&&xe(a)&&(n=Nd(t,a,i),n===void 0&&(n=Nd(e,a,i))),n},vc=t=>t.replace(/\$/g,"$$$$");class Wp{constructor(e={}){var a;this.logger=Ea.create("interpolator"),this.options=e,this.format=((a=e==null?void 0:e.interpolation)==null?void 0:a.format)||(i=>i),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:a,escapeValue:i,useRawValueToEscape:r,prefix:n,prefixEscaped:s,suffix:l,suffixEscaped:c,formatSeparator:d,unescapeSuffix:u,unescapePrefix:p,nestingPrefix:f,nestingPrefixEscaped:h,nestingSuffix:v,nestingSuffixEscaped:g,nestingOptionsSeparator:b,maxReplaces:x,alwaysFormat:w}=e.interpolation;this.escape=a!==void 0?a:FC,this.escapeValue=i!==void 0?i:!0,this.useRawValueToEscape=r!==void 0?r:!1,this.prefix=n?xo(n):s||"{{",this.suffix=l?xo(l):c||"}}",this.formatSeparator=d||",",this.unescapePrefix=u?"":p||"-",this.unescapeSuffix=this.unescapePrefix?"":u||"",this.nestingPrefix=f?xo(f):h||xo("$t("),this.nestingSuffix=v?xo(v):g||xo(")"),this.nestingOptionsSeparator=b||",",this.maxReplaces=x||1e3,this.alwaysFormat=w!==void 0?w:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(a,i)=>(a==null?void 0:a.source)===i?(a.lastIndex=0,a):new RegExp(i,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,a,i,r){var h;let n,s,l;const c=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},d=v=>{if(v.indexOf(this.formatSeparator)<0){const w=Gp(a,c,v,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(w,void 0,i,{...r,...a,interpolationkey:v}):w}const g=v.split(this.formatSeparator),b=g.shift().trim(),x=g.join(this.formatSeparator).trim();return this.format(Gp(a,c,b,this.options.keySeparator,this.options.ignoreJSONStructure),x,i,{...r,...a,interpolationkey:b})};this.resetRegExp();const u=(r==null?void 0:r.missingInterpolationHandler)||this.options.missingInterpolationHandler,p=((h=r==null?void 0:r.interpolation)==null?void 0:h.skipOnVariables)!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:v=>vc(v)},{regex:this.regexp,safeValue:v=>this.escapeValue?vc(this.escape(v)):vc(v)}].forEach(v=>{for(l=0;n=v.regex.exec(e);){const g=n[1].trim();if(s=d(g),s===void 0)if(typeof u=="function"){const x=u(e,n,r);s=xe(x)?x:""}else if(r&&Object.prototype.hasOwnProperty.call(r,g))s="";else if(p){s=n[0];continue}else this.logger.warn(`missed to pass in variable ${g} for interpolating ${e}`),s="";else!xe(s)&&!this.useRawValueToEscape&&(s=Op(s));const b=v.safeValue(s);if(e=e.replace(n[0],b),p?(v.regex.lastIndex+=s.length,v.regex.lastIndex-=n[0].length):v.regex.lastIndex=0,l++,l>=this.maxReplaces)break}}),e}nest(e,a,i={}){let r,n,s;const l=(c,d)=>{const u=this.nestingOptionsSeparator;if(c.indexOf(u)<0)return c;const p=c.split(new RegExp(`${u}[ ]*{`));let f=`{${p[1]}`;c=p[0],f=this.interpolate(f,s);const h=f.match(/'/g),v=f.match(/"/g);(((h==null?void 0:h.length)??0)%2===0&&!v||v.length%2!==0)&&(f=f.replace(/'/g,'"'));try{s=JSON.parse(f),d&&(s={...d,...s})}catch(g){return this.logger.warn(`failed parsing options string in nesting for key ${c}`,g),`${c}${u}${f}`}return s.defaultValue&&s.defaultValue.indexOf(this.prefix)>-1&&delete s.defaultValue,c};for(;r=this.nestingRegexp.exec(e);){let c=[];s={...i},s=s.replace&&!xe(s.replace)?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;const d=/{.*}/.test(r[1])?r[1].lastIndexOf("}")+1:r[1].indexOf(this.formatSeparator);if(d!==-1&&(c=r[1].slice(d).split(this.formatSeparator).map(u=>u.trim()).filter(Boolean),r[1]=r[1].slice(0,d)),n=a(l.call(this,r[1].trim(),s),s),n&&r[0]===e&&!xe(n))return n;xe(n)||(n=Op(n)),n||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),n=""),c.length&&(n=c.reduce((u,p)=>this.format(u,p,i.lng,{...i,interpolationkey:r[1].trim()}),n.trim())),e=e.replace(r[0],n),this.regexp.lastIndex=0}return e}}const KC=t=>{let e=t.toLowerCase().trim();const a={};if(t.indexOf("(")>-1){const i=t.split("(");e=i[0].toLowerCase().trim();const r=i[1].substring(0,i[1].length-1);e==="currency"&&r.indexOf(":")<0?a.currency||(a.currency=r.trim()):e==="relativetime"&&r.indexOf(":")<0?a.range||(a.range=r.trim()):r.split(";").forEach(s=>{if(s){const[l,...c]=s.split(":"),d=c.join(":").trim().replace(/^'+|'+$/g,""),u=l.trim();a[u]||(a[u]=d),d==="false"&&(a[u]=!1),d==="true"&&(a[u]=!0),isNaN(d)||(a[u]=parseInt(d,10))}})}return{formatName:e,formatOptions:a}},Hp=t=>{const e={};return(a,i,r)=>{let n=r;r&&r.interpolationkey&&r.formatParams&&r.formatParams[r.interpolationkey]&&r[r.interpolationkey]&&(n={...n,[r.interpolationkey]:void 0});const s=i+JSON.stringify(n);let l=e[s];return l||(l=t(vn(i),r),e[s]=l),l(a)}},YC=t=>(e,a,i)=>t(vn(a),i)(e);class QC{constructor(e={}){this.logger=Ea.create("formatter"),this.options=e,this.init(e)}init(e,a={interpolation:{}}){this.formatSeparator=a.interpolation.formatSeparator||",";const i=a.cacheInBuiltFormats?Hp:YC;this.formats={number:i((r,n)=>{const s=new Intl.NumberFormat(r,{...n});return l=>s.format(l)}),currency:i((r,n)=>{const s=new Intl.NumberFormat(r,{...n,style:"currency"});return l=>s.format(l)}),datetime:i((r,n)=>{const s=new Intl.DateTimeFormat(r,{...n});return l=>s.format(l)}),relativetime:i((r,n)=>{const s=new Intl.RelativeTimeFormat(r,{...n});return l=>s.format(l,n.range||"day")}),list:i((r,n)=>{const s=new Intl.ListFormat(r,{...n});return l=>s.format(l)})}}add(e,a){this.formats[e.toLowerCase().trim()]=a}addCached(e,a){this.formats[e.toLowerCase().trim()]=Hp(a)}format(e,a,i,r={}){const n=a.split(this.formatSeparator);if(n.length>1&&n[0].indexOf("(")>1&&n[0].indexOf(")")<0&&n.find(l=>l.indexOf(")")>-1)){const l=n.findIndex(c=>c.indexOf(")")>-1);n[0]=[n[0],...n.splice(1,l)].join(this.formatSeparator)}return n.reduce((l,c)=>{var p;const{formatName:d,formatOptions:u}=KC(c);if(this.formats[d]){let f=l;try{const h=((p=r==null?void 0:r.formatParams)==null?void 0:p[r.interpolationkey])||{},v=h.locale||h.lng||r.locale||r.lng||i;f=this.formats[d](l,v,{...u,...r,...h})}catch(h){this.logger.warn(h)}return f}else this.logger.warn(`there was no format function for ${d}`);return l},e)}}const JC=(t,e)=>{t.pending[e]!==void 0&&(delete t.pending[e],t.pendingCount--)};class XC extends jl{constructor(e,a,i,r={}){var n,s;super(),this.backend=e,this.store=a,this.services=i,this.languageUtils=i.languageUtils,this.options=r,this.logger=Ea.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],(s=(n=this.backend)==null?void 0:n.init)==null||s.call(n,i,r.backend,r)}queueLoad(e,a,i,r){const n={},s={},l={},c={};return e.forEach(d=>{let u=!0;a.forEach(p=>{const f=`${d}|${p}`;!i.reload&&this.store.hasResourceBundle(d,p)?this.state[f]=2:this.state[f]<0||(this.state[f]===1?s[f]===void 0&&(s[f]=!0):(this.state[f]=1,u=!1,s[f]===void 0&&(s[f]=!0),n[f]===void 0&&(n[f]=!0),c[p]===void 0&&(c[p]=!0)))}),u||(l[d]=!0)}),(Object.keys(n).length||Object.keys(s).length)&&this.queue.push({pending:s,pendingCount:Object.keys(s).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(n),pending:Object.keys(s),toLoadLanguages:Object.keys(l),toLoadNamespaces:Object.keys(c)}}loaded(e,a,i){const r=e.split("|"),n=r[0],s=r[1];a&&this.emit("failedLoading",n,s,a),!a&&i&&this.store.addResourceBundle(n,s,i,void 0,void 0,{skipCopy:!0}),this.state[e]=a?-1:2,a&&i&&(this.state[e]=0);const l={};this.queue.forEach(c=>{MC(c.loaded,[n],s),JC(c,e),a&&c.errors.push(a),c.pendingCount===0&&!c.done&&(Object.keys(c.loaded).forEach(d=>{l[d]||(l[d]={});const u=c.loaded[d];u.length&&u.forEach(p=>{l[d][p]===void 0&&(l[d][p]=!0)})}),c.done=!0,c.errors.length?c.callback(c.errors):c.callback())}),this.emit("loaded",l),this.queue=this.queue.filter(c=>!c.done)}read(e,a,i,r=0,n=this.retryTimeout,s){if(!e.length)return s(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:a,fcName:i,tried:r,wait:n,callback:s});return}this.readingCalls++;const l=(d,u)=>{if(this.readingCalls--,this.waitingReads.length>0){const p=this.waitingReads.shift();this.read(p.lng,p.ns,p.fcName,p.tried,p.wait,p.callback)}if(d&&u&&r<this.maxRetries){setTimeout(()=>{this.read.call(this,e,a,i,r+1,n*2,s)},n);return}s(d,u)},c=this.backend[i].bind(this.backend);if(c.length===2){try{const d=c(e,a);d&&typeof d.then=="function"?d.then(u=>l(null,u)).catch(l):l(null,d)}catch(d){l(d)}return}return c(e,a,l)}prepareLoading(e,a,i={},r){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();xe(e)&&(e=this.languageUtils.toResolveHierarchy(e)),xe(a)&&(a=[a]);const n=this.queueLoad(e,a,i,r);if(!n.toLoad.length)return n.pending.length||r(),null;n.toLoad.forEach(s=>{this.loadOne(s)})}load(e,a,i){this.prepareLoading(e,a,{},i)}reload(e,a,i){this.prepareLoading(e,a,{reload:!0},i)}loadOne(e,a=""){const i=e.split("|"),r=i[0],n=i[1];this.read(r,n,"read",void 0,void 0,(s,l)=>{s&&this.logger.warn(`${a}loading namespace ${n} for language ${r} failed`,s),!s&&l&&this.logger.log(`${a}loaded namespace ${n} for language ${r}`,l),this.loaded(e,s,l)})}saveMissing(e,a,i,r,n,s={},l=()=>{}){var c,d,u,p,f;if((d=(c=this.services)==null?void 0:c.utils)!=null&&d.hasLoadedNamespace&&!((p=(u=this.services)==null?void 0:u.utils)!=null&&p.hasLoadedNamespace(a))){this.logger.warn(`did not save key "${i}" as the namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(i==null||i==="")){if((f=this.backend)!=null&&f.create){const h={...s,isUpdate:n},v=this.backend.create.bind(this.backend);if(v.length<6)try{let g;v.length===5?g=v(e,a,i,r,h):g=v(e,a,i,r),g&&typeof g.then=="function"?g.then(b=>l(null,b)).catch(l):l(null,g)}catch(g){l(g)}else v(e,a,i,r,l,h)}!e||!e[0]||this.store.addResource(e[0],a,i,r)}}}const Kp=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:t=>{let e={};if(typeof t[1]=="object"&&(e=t[1]),xe(t[1])&&(e.defaultValue=t[1]),xe(t[2])&&(e.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const a=t[3]||t[2];Object.keys(a).forEach(i=>{e[i]=a[i]})}return e},interpolation:{escapeValue:!0,format:t=>t,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),Yp=t=>{var e,a;return xe(t.ns)&&(t.ns=[t.ns]),xe(t.fallbackLng)&&(t.fallbackLng=[t.fallbackLng]),xe(t.fallbackNS)&&(t.fallbackNS=[t.fallbackNS]),((a=(e=t.supportedLngs)==null?void 0:e.indexOf)==null?void 0:a.call(e,"cimode"))<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),typeof t.initImmediate=="boolean"&&(t.initAsync=t.initImmediate),t},gs=()=>{},ZC=t=>{Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach(a=>{typeof t[a]=="function"&&(t[a]=t[a].bind(t))})};class Xr extends jl{constructor(e={},a){if(super(),this.options=Yp(e),this.services={},this.logger=Ea,this.modules={external:[]},ZC(this),a&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,a),this;setTimeout(()=>{this.init(e,a)},0)}}init(e={},a){this.isInitializing=!0,typeof e=="function"&&(a=e,e={}),e.defaultNS==null&&e.ns&&(xe(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const i=Kp();this.options={...i,...this.options,...Yp(e)},this.options.interpolation={...i.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=i.overloadTranslationOptionHandler);const r=d=>d?typeof d=="function"?new d:d:null;if(!this.options.isClone){this.modules.logger?Ea.init(r(this.modules.logger),this.options):Ea.init(null,this.options);let d;this.modules.formatter?d=this.modules.formatter:d=QC;const u=new Vp(this.options);this.store=new Fp(this.options.resources,this.options);const p=this.services;p.logger=Ea,p.resourceStore=this.store,p.languageUtils=u,p.pluralResolver=new HC(u,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==i.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),d&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(p.formatter=r(d),p.formatter.init&&p.formatter.init(p,this.options),this.options.interpolation.format=p.formatter.format.bind(p.formatter)),p.interpolator=new Wp(this.options),p.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},p.backendConnector=new XC(r(this.modules.backend),p.resourceStore,p,this.options),p.backendConnector.on("*",(h,...v)=>{this.emit(h,...v)}),this.modules.languageDetector&&(p.languageDetector=r(this.modules.languageDetector),p.languageDetector.init&&p.languageDetector.init(p,this.options.detection,this.options)),this.modules.i18nFormat&&(p.i18nFormat=r(this.modules.i18nFormat),p.i18nFormat.init&&p.i18nFormat.init(this)),this.translator=new al(this.services,this.options),this.translator.on("*",(h,...v)=>{this.emit(h,...v)}),this.modules.external.forEach(h=>{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,a||(a=gs),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const d=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);d.length>0&&d[0]!=="dev"&&(this.options.lng=d[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(d=>{this[d]=(...u)=>this.store[d](...u)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(d=>{this[d]=(...u)=>(this.store[d](...u),this)});const l=Dr(),c=()=>{const d=(u,p)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(p),a(u,p)};if(this.languages&&!this.isInitialized)return d(null,this.t.bind(this));this.changeLanguage(this.options.lng,d)};return this.options.resources||!this.options.initAsync?c():setTimeout(c,0),l}loadResources(e,a=gs){var n,s;let i=a;const r=xe(e)?e:this.language;if(typeof e=="function"&&(i=e),!this.options.resources||this.options.partialBundledLanguages){if((r==null?void 0:r.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return i();const l=[],c=d=>{if(!d||d==="cimode")return;this.services.languageUtils.toResolveHierarchy(d).forEach(p=>{p!=="cimode"&&l.indexOf(p)<0&&l.push(p)})};r?c(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(u=>c(u)),(s=(n=this.options.preload)==null?void 0:n.forEach)==null||s.call(n,d=>c(d)),this.services.backendConnector.load(l,this.options.ns,d=>{!d&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),i(d)})}else i(null)}reloadResources(e,a,i){const r=Dr();return typeof e=="function"&&(i=e,e=void 0),typeof a=="function"&&(i=a,a=void 0),e||(e=this.languages),a||(a=this.options.ns),i||(i=gs),this.services.backendConnector.reload(e,a,n=>{r.resolve(),i(n)}),r}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return e.type==="backend"&&(this.modules.backend=e),(e.type==="logger"||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type==="languageDetector"&&(this.modules.languageDetector=e),e.type==="i18nFormat"&&(this.modules.i18nFormat=e),e.type==="postProcessor"&&ov.addPostProcessor(e),e.type==="formatter"&&(this.modules.formatter=e),e.type==="3rdParty"&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&!(["cimode","dev"].indexOf(e)>-1)){for(let a=0;a<this.languages.length;a++){const i=this.languages[a];if(!(["cimode","dev"].indexOf(i)>-1)&&this.store.hasLanguageSomeTranslations(i)){this.resolvedLanguage=i;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,a){this.isLanguageChangingTo=e;const i=Dr();this.emit("languageChanging",e);const r=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},n=(l,c)=>{c?this.isLanguageChangingTo===e&&(r(c),this.translator.changeLanguage(c),this.isLanguageChangingTo=void 0,this.emit("languageChanged",c),this.logger.log("languageChanged",c)):this.isLanguageChangingTo=void 0,i.resolve((...d)=>this.t(...d)),a&&a(l,(...d)=>this.t(...d))},s=l=>{var u,p;!e&&!l&&this.services.languageDetector&&(l=[]);const c=xe(l)?l:l&&l[0],d=this.store.hasLanguageSomeTranslations(c)?c:this.services.languageUtils.getBestMatchFromCodes(xe(l)?[l]:l);d&&(this.language||r(d),this.translator.language||this.translator.changeLanguage(d),(p=(u=this.services.languageDetector)==null?void 0:u.cacheUserLanguage)==null||p.call(u,d)),this.loadResources(d,f=>{n(f,d)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(e),i}getFixedT(e,a,i){const r=(n,s,...l)=>{let c;typeof s!="object"?c=this.options.overloadTranslationOptionHandler([n,s].concat(l)):c={...s},c.lng=c.lng||r.lng,c.lngs=c.lngs||r.lngs,c.ns=c.ns||r.ns,c.keyPrefix!==""&&(c.keyPrefix=c.keyPrefix||i||r.keyPrefix);const d=this.options.keySeparator||".";let u;return c.keyPrefix&&Array.isArray(n)?u=n.map(p=>(typeof p=="function"&&(p=Pd(p,{...this.options,...s})),`${c.keyPrefix}${d}
534${p}`)):(typeof n=="function"&&(n=Pd(n,{...this.options,...s})),u=c.keyPrefix?`${c.keyPrefix}${d}${n}`:n),this.t(u,c)};return xe(e)?r.lng=e:r.lngs=e,r.ns=a,r.keyPrefix=i,r}t(...e){var a;return(a=this.translator)==null?void 0:a.translate(...e)}exists(...e){var a;return(a=this.translator)==null?void 0:a.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,a={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const i=a.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,n=this.languages[this.languages.length-1];if(i.toLowerCase()==="cimode")return!0;const s=(l,c)=>{const d=this.services.backendConnector.state[`${l}|${c}`];return d===-1||d===0||d===2};if(a.precheck){const l=a.precheck(this,s);if(l!==void 0)return l}return!!(this.hasResourceBundle(i,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||s(i,e)&&(!r||s(n,e)))}loadNamespaces(e,a){const i=Dr();return this.options.ns?(xe(e)&&(e=[e]),e.forEach(r=>{this.options.ns.indexOf(r)<0&&this.options.ns.push(r)}),this.loadResources(r=>{i.resolve(),a&&a(r)}),i):(a&&a(),Promise.resolve())}loadLanguages(e,a){const i=Dr();xe(e)&&(e=[e]);const r=this.options.preload||[],n=e.filter(s=>r.indexOf(s)<0&&this.services.languageUtils.isSupportedCode(s));return n.length?(this.options.preload=r.concat(n),this.loadResources(s=>{i.resolve(),a&&a(s)}),i):(a&&a(),Promise.resolve())}dir(e){var r,n;if(e||(e=this.resolvedLanguage||(((r=this.languages)==null?void 0:r.length)>0?this.languages[0]:this.language)),!e)return"rtl";try{const s=new Intl.Locale(e);if(s&&s.getTextInfo){const l=s.getTextInfo();if(l&&l.direction)return l.direction}}catch{}const a=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],i=((n=this.services)==null?void 0:n.languageUtils)||new Vp(Kp());return e.toLowerCase().indexOf("-latn")>1?"ltr":a.indexOf(i.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},a){const i=new Xr(e,a);return i.createInstance=Xr.createInstance,i}cloneInstance(e={},a=gs){const i=e.forkResourceStore;i&&delete e.forkResourceStore;const r={...this.options,...e,isClone:!0},n=new Xr(r);if((e.debug!==void 0||e.prefix!==void 0)&&(n.logger=n.logger.clone(e)),["store","services","language"].forEach(l=>{n[l]=this[l]}),n.services={...this.services},n.services.utils={hasLoadedNamespace:n.hasLoadedNamespace.bind(n)},i){const l=Object.keys(this.store.data).reduce((c,d)=>(c[d]={...this.store.data[d]},c[d]=Object.keys(c[d]).reduce((u,p)=>(u[p]={...c[d][p]},u),c[d]),c),{});n.store=new Fp(l,r),n.services.resourceStore=n.store}return e.interpolation&&(n.services.interpolator=new Wp(r)),n.translator=new al(n.services,r),n.translator.on("*",(l,...c)=>{n.emit(l,...c)}),n.init(r,a),n.translator.options=r,n.translator.backendConnector.services.utils={hasLoadedNamespace:n.hasLoadedNamespace.bind(n)},n}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const Ut=Xr.createInstance();Ut.createInstance;Ut.dir;Ut.init;Ut.loadResources;Ut.reloadResources;Ut.use;Ut.changeLanguage;Ut.getFixedT;Ut.t;Ut.exists;Ut.setDefaultNamespace;Ut.hasLoadedNamespace;Ut.loadNamespaces;Ut.loadLanguages;const eT=(t,e,a,i)=>{var n,s,l,c;const r=[a,{code:e,...i||{}}];if((s=(n=t==null?void 0:t.services)==null?void 0:n.logger)!=null&&s.forward)return t.services.logger.forward(r,"warn","react-i18next::",!0);oo(r[0])&&(r[0]=`react-i18next:: ${r[0]}`),(c=(l=t==null?void 0:t.services)==null?void 0:l.logger)!=null&&c.warn?t.services.logger.warn(...r):console!=null&&console.warn&&console.warn(...r)},Qp={},nv=(t,e,a,i)=>{oo(a)&&Qp[a]||(oo(a)&&(Qp[a]=new Date),eT(t,e,a,i))},sv=(t,e)=>()=>{if(t.isInitialized)e();else{const a=()=>{setTimeout(()=>{t.off("initialized",a)},0),e()};t.on("initialized",a)}},Ad=(t,e,a)=>{t.loadNamespaces(e,sv(t,a))},Jp=(t,e,a,i)=>
534{if(oo(a)&&(a=[a]),t.options.preload&&t.options.preload.indexOf(e)>-1)return Ad(t,a,i);a.forEach(r=>{t.options.ns.indexOf(r)<0&&t.options.ns.push(r)}),t.loadLanguages(e,sv(t,i))},tT=(t,e,a={})=>!e.languages||!e.languages.length?(nv(e,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:e.languages}),!0):e.hasLoadedNamespace(t,{lng:a.lng,precheck:(i,r)=>{if(a.bindI18n&&a.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!r(i.isLanguageChangingTo,t))return!1}}),oo=t=>typeof t=="string",aT=t=>typeof t=="object"&&t!==null,iT=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,oT={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},rT=t=>oT[t],nT=t=>t.replace(iT,rT);let Ed={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:nT,transDefaultProps:void 0};const sT=(t={})=>{Ed={...Ed,...t}},lT=()=>Ed;let lv;const cT=t=>{lv=t},dT=()=>lv,uT={type:"3rdParty",init(t){sT(t.options.react),cT(t)}},mT=m.createContext();class pT{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(a=>{this.usedNamespaces[a]||(this.usedNamespaces[a]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const hT=(t,e)=>oo(e)?e:aT(e)&&oo(e.defaultValue)?e.defaultValue:Array.isArray(t)?t[t.length-1]:t,gT={t:hT,ready:!1},fT=()=>()=>{},$e=(t,e={})=>{var P,E,L;const{i18n:a}=e,{i18n:i,defaultNS:r}=m.useContext(mT)||{},n=a||i||dT();n&&!n.reportNamespaces&&(n.reportNamespaces=new pT),n||nv(n,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const s=m.useMemo(()=>{var A;return{...lT(),...(A=n==null?void 0:n.options)==null?void 0:A.react,...e}},[n,e]),{useSuspense:l,keyPrefix:c}=s,d=t||r||((P=n==null?void 0:n.options)==null?void 0:P.defaultNS),u=oo(d)?[d]:d||["translation"],p=m.useMemo(()=>u,u);(L=(E=n==null?void 0:n.reportNamespaces)==null?void 0:E.addUsedNamespaces)==null||L.call(E,p);const f=m.useRef(0),h=m.useCallback(A=>{if(!n)return fT;const{bindI18n:I,bindI18nStore:R}=s,B=()=>{f.current+=1,A()};return I&&n.on(I,B),R&&n.store.on(R,B),()=>{I&&I.split(" ").forEach(z=>n.off(z,B)),R&&R.split(" ").forEach(z=>n.store.off(z,B))}},[n,s]),v=m.useRef(),g=m.useCallback(()=>{if(!n)return gT;const A=!!(n.isInitialized||n.initializedStoreOnce)&&p.every(fe=>tT(fe,n,s)),I=e.lng||n.language,R=f.current,B=v.current;if(B&&B.ready===A&&B.lng===I&&B.keyPrefix===c&&B.revision===R)return B;const Z={t:n.getFixedT(I,s.nsMode==="fallback"?p:p[0],c),ready:A,lng:I,keyPrefix:c,revision:R};return v.current=Z,Z},[n,p,c,s,e.lng]),[b,x]=m.useState(0),{t:w,ready:k}=uf.useSyncExternalStore(h,g,g);m.useEffect(()=>{if(n&&!k&&!l){const A=()=>x(I=>I+1);e.lng?Jp(n,e.lng,p,A):Ad(n,p,A)}},[n,e.lng,p,k,l,b]);const _=n||{},j=m.useRef(null),S=m.useRef(),C=A=>{const I=Object.getOwnPropertyDescriptors(A);I.__original&&delete I.__original;const R=Object.create(Object.getPrototypeOf(A),I);if(!Object.prototype.hasOwnProperty.call(R,"__original"))try{Object.defineProperty(R,"__original",{value:A,writable:!1,enumerable:!1,configurable:!1})}catch{}return R},N=m.useMemo(()=>{const A=_,I=A==null?void 0:A.language;let R=A;A&&(j.current&&j.current.__original===A?S.current!==I?(R=C(A),j.current=R,S.current=I):R=j.current:(R=C(A),j.current=R,S.current=I));const B=[w,R,k];return B.t=w,B.i18n=R,B.ready=k,B},[w,_,k,_.resolvedLanguage,_.language,_.languages]);if(n&&l&&!k)throw new Promise(A=>{const I=()=>A();e.lng?Jp(n,e.lng,p,I):Ad(n,p,I)});return N},Xp=5e3;async function Bu(){try{if(typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"||window.location.hostname.startsWith("192.168.")))return"US";const e=new AbortController,a=setTimeout(()=>e.abort(),Xp),i=await fetch("/cdn-cgi/trace",{signal:e.signal,cache:"no-store"});if(clearTimeout(a),!i.ok)return console.warn("[GeoDetection] Cloudflare trace endpoint returned:",i.status),"US";const r=await i.text();r.substring(0,200);const s=r.split(`
535`).find(l=>l.startsWith("loc="));if(s){const l=s.split("=")[1].trim();return l}return console.warn("[GeoDetection] No loc= line found in trace response"),"US"}catch(t){return t instanceof Error&&t.name==="AbortError"?console.warn("[GeoDetection] Request timed out after",Xp,"ms"):console.warn("[GeoDetection] Could not detect user country from Cloudflare:",t),"
535US"}}function bT(){const[t,e]=m.useState(""),[a,i]=m.useState(!0),[r,n]=m.useState(null);return m.useEffect(()=>{let s=!0;async function l(){try{const c=await Bu();s&&(e(c),i(!1))}catch{s&&(n("Failed to detect location"),e("US"),i(!1))}}return l(),()=>{s=!1}},[]),{country:t,isLoading:a,error:r}}function mW(){const{country:t,isLoading:e}=bT();return{isIsraeli:t==="IL",isLoading:e}}function vT(t){return t==="IL"?"he":t==="IT"?"it":"en"}let Po;function _i(){if(Po===void 0)try{Po=localStorage.getItem("locale")}catch{Po=null}return Po}function yc(t){Po=t}typeof window<"u"&&window.addEventListener("storage",t=>{(t.key==="locale"||t.key===null)&&(Po=void 0)});const cv=m.createContext(null),yT=["he","ar","fa","ur"];function xT({children:t}){const{i18n:e}=$e(),[a,i]=m.useState(()=>{const h=localStorage.getItem("locale");return h&&["en","he","it"].includes(h)?h:e.language||"en"}),[r,n]=m.useState(!0),[s,l]=m.useState(null),[c,d]=m.useState(!1),u=yT.includes(a),p=m.useCallback((h,v=!1)=>{if(!["en","he","it"].includes(h))return;e.changeLanguage(h),i(h),localStorage.setItem("locale",h),yc(h),v&&localStorage.setItem("locale_manual_choice","true");const g=new URL(window.location.href);g.searchParams.set("lang",h),window.history.replaceState({},"",g.toString()),document.cookie=`locale=${h}; max-age=31536000; path=/; SameSite=Lax`},[e]);m.useEffect(()=>{document.documentElement.lang=a,document.documentElement.dir=u?"rtl":"ltr",document.body.dir=u?"rtl":"ltr",u?(document.documentElement.classList.add("rtl"),document.documentElement.classList.remove("ltr")):(document.documentElement.classList.add("ltr"),document.documentElement.classList.remove("rtl"))},[a,u]),m.useEffect(()=>{r||(async()=>{var b;const{data:{session:v}}=await V.auth.getSession();if(!((b=v==null?void 0:v.user)!=null&&b.id))return;const g=a==="he"?"he":a==="it"?"it":"en";try{await V.from("profiles").update({preferred_language:g}).eq("id",v.user.id)}catch(x){console.warn("[LocaleContext] Failed to sync preferred_language:",x)}})()},[a,u,r]),m.useEffect(()=>{let h=!0;async function v(){const b=new URLSearchParams(window.location.search).get("lang");if(b&&["en","he","it"].includes(b)){p(b),n(!1);return}const x=localStorage.getItem("locale"),w=localStorage.getItem("locale_manual_choice")==="true";if(x&&["en","he","it"].includes(x)&&w){e.changeLanguage(x),i(x),n(!1);return}try{const k=await Bu();if(!h)return;if(l(k),k==="IL"){d(!0);const _=new URL(window.location.href);_.searchParams.has("lang")||(_.searchParams.set("lang","he"),window.history.replaceState({},"",_.toString())),e.changeLanguage("he"),i("he"),localStorage.setItem("locale","he"),yc("he"),document.cookie="locale=he; max-age=31536000; path=/; SameSite=Lax"}else if(k==="IT"){d(!0);const _=new URL(window.location.href);_.searchParams.has("lang")||(_.searchParams.set("lang","it"),window.history.replaceState({},"",_.toString())),e.changeLanguage("it"),i("it"),localStorage.setItem("locale","it"),yc("it"),document.cookie="locale=it; max-age=31536000; path=/; SameSite=Lax"}else x&&["en","he","it"].includes(x)&&(e.changeLanguage(x),i(x))}catch(k){console.warn("[LocaleContext] Failed to detect user country:",k)}finally{h&&n(!1)}}return v(),()=>{h=!1}},[e,c]);const f=m.useMemo(()=>({locale:a,isRTL:u,isLoading:r,detectedCountry:s,setLocale:p}),[a,u,r,s,p]);return o.jsx(cv.Provider,{value:f,children:t})}function Dt(){const t=m.useContext(cv);if(!t)throw new Error("useLocale must be used within a LocaleProvider");return t}const Fu=Mn("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),ee=m.forwardRef(({className:t,variant:e,size:a,asChild:i=!1,...r},n)=>{const s=i?xx:"button";return o.jsx(s,{className:y(Fu({variant:e,size:a,className:t})),ref:n,...r})});ee.displayName="Button";function Pt(){const t=m.useContext(zu);
535if(t===void 0)throw new Error("useAuth must be used within an AuthProvider");return t}function $u(){return m.useContext(zu)??null}const Id=kx,Dd=_x,wT=m.forwardRef(({className:t,inset:e,children:a,...i},r)=>o.jsxs(Wg,{ref:r,className:y("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[state=open]:bg-accent focus:bg-accent",e&&"pl-8",t),...i,children:[a,o.jsx(an,{className:"ml-auto h-4 w-4"})]}));wT.displayName=Wg.displayName;const kT=m.forwardRef(({className:t,...e},a)=>o.jsx(Hg,{ref:a,className:y("z-[210] min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...e}));kT.displayName=Hg.displayName;const il=m.forwardRef(({className:t,sideOffset:e=4,...a},i)=>o.jsx(wx,{children:o.jsx(Kg,{ref:i,sideOffset:e,className:y("z-[210] min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...a})}));il.displayName=Kg.displayName;const ca=m.forwardRef(({className:t,inset:e,...a},i)=>o.jsx(Yg,{ref:i,className:y("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",e&&"pl-8",t),...a}));ca.displayName=Yg.displayName;const _T=m.forwardRef(({className:t,children:e,checked:a,...i},r)=>o.jsxs(Qg,{ref:r,className:y("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",t),checked:a,...i,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(Jg,{children:o.jsx(vl,{className:"h-4 w-4"})})}),e]}));_T.displayName=Qg.displayName;const ST=m.forwardRef(({className:t,children:e,...a},i)=>o.jsxs(Xg,{ref:i,className:y("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",t),...a,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(Jg,{children:o.jsx(xw,{className:"h-2 w-2 fill-current"})})}),e]}));ST.displayName=Xg.displayName;const CT=m.forwardRef(({className:t,inset:e,...a},i)=>o.jsx(Zg,{ref:i,className:y("px-2 py-1.5 text-sm font-semibold",e&&"pl-8",t),...a}));CT.displayName=Zg.displayName;const yn=m.forwardRef(({className:t,...e},a)=>o.jsx(ef,{ref:a,className:y("-mx-1 my-1 h-px bg-muted",t),...e}));yn.displayName=ef.displayName;function TT(){return uf.useSyncExternalStore(jT,()=>!0,()=>!1)}function jT(){return()=>{}}var Vu="Avatar",[NT]=so(Vu),[PT,dv]=NT(Vu),uv=m.forwardRef((t,e)=>{const{__scopeAvatar:a,...i}=t,[r,n]=m.useState("idle");return o.jsx(PT,{scope:a,imageLoadingStatus:r,onImageLoadingStatusChange:n,children:o.jsx(Xe.span,{...i,ref:e})})});uv.displayName=Vu;var mv="AvatarImage",pv=m.forwardRef((t,e)=>{const{__scopeAvatar:a,src:i,onLoadingStatusChange:r=()=>{},...n}=t,s=dv(mv,a),l=AT(i,n),c=tf(d=>{r(d),s.onImageLoadingStatusChange(d)});return _a(()=>{l!=="idle"&&c(l)},[l,c]),l==="loaded"?o.jsx(Xe.img,{...n,ref:e,src:i}):null});pv.displayName=mv;var hv="AvatarFallback",gv=m.forwardRef((t,e)=>{const{__scopeAvatar:a,delayMs:i,...r}=t,n=dv(hv,a),[s,l]=m.useState(i===void 0);return m.useEffect(()=>{if(i!==void 0){const c=window.setTimeout(()=>l(!0),i);return()=>window.clearTimeout(c)}},[i]),s&&n.imageLoadingStatus!=="loaded"?o.jsx(Xe.span,{...r,ref:e}):null});gv.displayName=hv;function Zp(t,e){return t?e?(t.src!==e&&(t.src=e),t.complete&&t.naturalWi
535dth>0?"loaded":"loading"):"error":"idle"}function AT(t,{referrerPolicy:e,crossOrigin:a}){const i=TT(),r=m.useRef(null),n=i?(r.current||(r.current=new window.Image),r.current):null,[s,l]=m.useState(()=>Zp(n,t));return _a(()=>{l(Zp(n,t))},[n,t]),_a(()=>{const c=p=>()=>{l(p)};if(!n)return;const d=c("loaded"),u=c("error");return n.addEventListener("load",d),n.addEventListener("error",u),e&&(n.referrerPolicy=e),typeof a=="string"&&(n.crossOrigin=a),()=>{n.removeEventListener("load",d),n.removeEventListener("error",u)}},[n,a,e]),s}var fv=uv,bv=pv,vv=gv;const Rd=m.forwardRef(({className:t,...e},a)=>o.jsx(fv,{ref:a,className:y("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",t),...e}));Rd.displayName=fv.displayName;const ET=m.forwardRef(({className:t,...e},a)=>o.jsx(bv,{ref:a,className:y("aspect-square h-full w-full",t),...e}));ET.displayName=bv.displayName;const Ld=m.forwardRef(({className:t,...e},a)=>o.jsx(vv,{ref:a,className:y("flex h-full w-full items-center justify-center rounded-full bg-muted",t),...e}));Ld.displayName=vv.displayName;const Nl=()=>{const{user:t}=Pt(),{data:e,isLoading:a,error:i,refetch:r}=ta({queryKey:["user-tokens",t==null?void 0:t.id],queryFn:async()=>{if(!t)throw new Error("No user");const{data:s,error:l}=await V.from("user_tokens").select("*").eq("user_id",t.id).maybeSingle();if(l){if(l.code==="PGRST116"){const{data:c,error:d}=await V.from("user_tokens").insert({user_id:t.id,balance:5,payback_tokens:5,created_at:new Date().toISOString(),updated_at:new Date().toISOString()}).select().maybeSingle();if(d)throw console.error("Error creating token record:",d),new Error("Failed to initialize token account. Please contact support.");return await V.from("token_ledger").insert({user_id:t.id,feature:"registration_bonus_manual",tokens_used:-5,cost_usd:0,ts:new Date().toISOString()}),await V.from("user_referral_links").insert({user_id:t.id,referral_code:t.id.toString().replace(/-/g,"").substring(0,8).toUpperCase(),created_at:new Date().toISOString()}),c}throw l}return s},enabled:!!t,refetchInterval:3e4,refetchIntervalInBackground:!1,staleTime:3e4,refetchOnWindowFocus:!0,retry:1}),n=s=>e?e.balance>=s:!1;return{tokens:e,loading:a,error:i,hasEverPaid:(e==null?void 0:e.has_ever_paid)??!1,hasEnoughTokens:n,refetch:r}};function yv({className:t}){var A;const{user:e,signOut:a}=Pt(),{tokens:i}=Nl(),r=Vt(),[n,s]=m.useState(!1),{openSettings:l}=Vn(),{theme:c,setTheme:d}=wi(),{locale:u}=Dt(),{t:p,i18n:f}=$e(["canvas"]),h=typeof window<"u"?_i():null,v=u==="he"||f.language==="he"||h==="he"||typeof document<"u"&&document.documentElement.dir==="rtl",g=u==="it"||f.language==="it"||h==="it",b=v||g,{data:x}=ta({queryKey:["is-creator",e==null?void 0:e.id],queryFn:async()=>{if(!(e!=null&&e.id))return!1;const{data:I}=await V.from("creators").select("id, is_verified").eq("user_id",e.id).maybeSingle();return(I==null?void 0:I.is_verified)===!0},enabled:!!(e!=null&&e.id),staleTime:5*60*1e3}),w=()=>{r("/creators/dashboard"),s(!1)},k=async()=>{var I,R;try{s(!1),await a(),le.success("Signed out successfully"),r("/auth")}catch(B){const z=B;if((R=(I=z==null?void 0:z.message)==null?void 0:I.includes)!=null&&R.call(I,"Auth session missing")){r("/auth");return}console.error("Logout error:",B),le.error("Failed to sign out. Please try again.")}},_=()=>{l(),s(!1)},j=()=>{r("/billing"),s(!1)},S=()=>{r("/help-center"),s(!1)},C=()=>{d(c==="dark"?"light":"dark")},N=()=>{window.dispatchEvent(new Event("open-help-modal")),s(!1)},P=()=>{var I,R,B;return(I=e==null?void 0:e.user_metadata)!=null&&I.full_name?e.user_metadata.full_name.split(" ").map(z=>z[0]).join("").toUpperCase().slice(0,2):((B=(R=e==null?void 0:e.email)==null?void 0:R[0])==null?void 0:B.toUpperCase())||"U"},E=()=>{var I,R;return((I=e==null?void 0:e.user_metadata)==null?void 0:I.full_name)||((R=e==null?void 0:e.email)==null?void 0:R.split("@")[0])||"User"},L=()=>(e==null?void 0:e.email)||"";return o.jsxs(Id,{open:n,onOpenChange:s,children:[o.jsx(Dd,{asChild:!0,children:o.jsx(ee,{variant:"ghost",className:y("relative h-auto p-0 hover:bg-transparent focus:ring-0 focus:ring-offset-0",t),children:o.jsx(pe.div,{whileHover:{scale:1.03},whileTap:{scale:.97},className:"relative flex items-center",children:o.jsxs("div",{className:"relative",children:[o.jsx(Rd,{className:y("h-9 w-9 border-2 border-[#182137]/10 bg-[#E8DFD3] shadow-[0_2px_10px_rgba(24,33,55,0.08)]","ring-2 ring-[#D85D43]/45 ring-offset-2 ring-offset-[#F7F4EF]","dark:border-white/12 dark:bg-[#1A1D26] dark:shadow-[0_2px_14px_rgba(0,0,0,0.45)]","dark:ring-[#D85D43]/55 dark:ring-offset-2 dark:ring-offset-[#0A0B0F]","transition-[box-shadow,ring-color] duration-200 hover:ring-[#D85D43]/70 hover:shadow-[0_4px_16px_rgba(216,93,67,0.2)]","dark:hover:shadow-[0_4px_18px_rgba(216,93,67,0.15)]"),children:o.jsx(Ld,{className:y("bg-gradient-to-br from-[#182137] via-[#243152] to-[#1B2840] text-[#F7F4EF]","font-heebo text-sm font-extrabold tracking-[-0.03em]"),children:P()})}),o.jsx("div",{className:y("absolute -bottom-0.5 -end-0.5 h-2.5 w-2.5 rounded-full border-2 bg-[#1F5B36] shadow-[0_1px_4px_rgba(31,91,54,0.45)]","border-[#F7F4EF] dark:border-[#0A0B0F]"),"aria-hidden":!0})]})})})}
535),o.jsxs(il,{align:"end",className:y("w-64 p-2 bg-white/95 dark:bg-slate-900/95 backdrop-blur-xl border border-slate-200/60 dark:border-slate-700/60 shadow-xl rounded-xl",v&&"text-right"),sideOffset:8,children:[o.jsxs("div",{className:"px-3 py-3 border-b border-slate-100 dark:border-slate-800",children:[o.jsxs("div",{className:y("flex items-center gap-3",v&&"flex-row-reverse"),children:[o.jsx(Rd,{className:y("h-10 w-10 border-2 border-[#182137]/10 bg-[#E8DFD3] shadow-[0_2px_10px_rgba(24,33,55,0.08)]","ring-2 ring-[#D85D43]/40 ring-offset-2 ring-offset-white dark:border-white/12 dark:bg-[#1A1D26]","dark:ring-[#D85D43]/50 dark:ring-offset-2 dark:ring-offset-[#1A1D26]"),children:o.jsx(Ld,{className:y("bg-gradient-to-br from-[#182137] via-[#243152] to-[#1B2840] text-[#F7F4EF]","font-heebo text-sm font-extrabold tracking-[-0.03em]"),children:P()})}),o.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[o.jsx("span",{className:"text-sm font-semibold text-slate-900 dark:text-slate-100 truncate",children:E()}),o.jsx("span",{className:"text-xs text-slate-500 dark:text-slate-400 truncate",children:L()})]})]}),o.jsx("div",{className:"mt-3 px-3 py-2 bg-slate-50 dark:bg-slate-800/50 rounded-lg",children:o.jsxs("div",{className:y("flex items-center justify-between",v&&"flex-row-reverse"),children:[o.jsxs("div",{className:y("flex items-center gap-2",v&&"flex-row-reverse"),children:[o.jsx($s,{className:"h-4 w-4 text-amber-500 dark:text-amber-400"}),o.jsx("span",{className:"text-sm font-semibold text-slate-900 dark:text-slate-100",children:((A=i==null?void 0:i.balance)==null?void 0:A.toFixed(2))??0})]}),o.jsx("span",{className:`text-xs text-slate-500 dark:text-slate-400 ${v?"font-heebo":""}`,children:v?`+${(i==null?void 0:i.monthly_base)??0}/חודש`:g?`+${(i==null?void 0:i.monthly_base)??0}/mese`:`+${(i==null?void 0:i.monthly_base)??0}/mo`})]})})]}),o.jsxs("div",{className:"py-1",children:[o.jsxs(ca,{onClick:_,className:y("flex items-center gap-3 px-3 py-2.5 text-sm font-medium text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-800 rounded-lg cursor-pointer transition-colors",v&&"flex-row-reverse"),children:[o.jsx(sn,{className:"h-4 w-4 text-slate-500 dark:text-slate-400"}),o.jsx("span",{className:v?"font-heebo":"",children:b&&p("tooltips.settings",{ns:"canvas"})||"Settings"})]}),x&&o.jsxs(ca,{onClick:w,className:y("flex items-center gap-3 px-3 py-2.5 text-sm font-medium text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-800 rounded-lg cursor-pointer transition-colors",v&&"flex-row-reverse"),children:[o.jsx(qs,{className:"h-4 w-4 text-slate-500 dark:text-slate-400"}),o.jsx("span",{className:v?"font-heebo":"",children:v?"דשבורד קריאייטור":g?"Dashboard creator":"Creator Dashboard"})]}),o.jsxs(ca,{onClick:j,className:y("flex items-center gap-3 px-3 py-2.5 text-sm font-medium text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-800 rounded-lg cursor-pointer transition-colors",v&&"flex-row-reverse"),children:[o.jsx($s,{className:"h-4 w-4 text-slate-500 dark:text-slate-400"}),o.jsx("span",{className:v?"font-heebo":"",children:b&&p("tooltips.buyTokens",{ns:"canvas"})||"Buy Tokens"})]}),o.jsxs(ca,{onClick:S,className:y("flex items-center gap-3 px-3 py-2.5 text-sm font-medium text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-800 rounded-lg cursor-pointer transition-colors",v&&"flex-row-reverse"),children:[o.jsx(Bs,{className:"h-4 w-4 text-slate-500 dark:text-slate-400"}),o.jsx("span",{className:v?"font-heebo":"",children:v?p("helpCenter.title",{ns:"canvas"})||"עזרה ותמיכה":g?"Centro assistenza":"Help Center"})]}),o.jsxs(ca,{onClick:C,className:y("flex items-center gap-3 px-3 py-2.5 text-sm font-medium text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-slate-800 rounded-lg cursor-pointer transition-colors",v&&"flex-row-reverse"),children:[c==="dark"?o.jsx(ln,{className:"h-4 w-4 text-slate-500 dark:text-slate-400"}):o.jsx(rn,{className:"h-4 w-4 text-slate-500 dark:text-slate-400"}),o.jsx("span",{className:v?"font-heebo":"",children:v?c==="dark"?p("settings.theme.lightMode",{ns:"canvas"})||"מצב בהיר":p("settings.theme.darkMode",{ns:"canvas"})||"מצב כהה":c==="dark"?"Light Mode":"Dark Mode"})]})]}),v&&o.jsxs(o.Fragment,{children:[o.jsx(yn,{className:"my-1 bg-slate-100 dar
535k:bg-slate-800"}),o.jsx("div",{className:"py-1",children:o.jsxs(ca,{onClick:N,className:y("flex items-center gap-3 px-3 py-2.5 text-sm font-medium text-purple-600 dark:text-purple-400 hover:bg-purple-50 dark:hover:bg-purple-900/20 rounded-lg cursor-pointer transition-colors",v&&"flex-row-reverse"),children:[o.jsx(Nw,{className:"h-4 w-4"}),o.jsx("span",{className:"font-heebo",children:"צריכים עזרה אישית?"})]})})]}),o.jsx(yn,{className:"my-1 bg-slate-100 dark:bg-slate-800"}),o.jsx("div",{className:"py-1",children:o.jsxs(ca,{onClick:k,className:y("flex items-center gap-3 px-3 py-2.5 text-sm font-medium text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20 rounded-lg cursor-pointer transition-colors",v&&"flex-row-reverse"),children:[o.jsx(Gc,{className:"h-4 w-4"}),o.jsx("span",{className:v?"font-heebo":"",children:b&&p("tooltips.signOut",{ns:"canvas"})||"Sign out"})]})})]})]})}const Ha="/assets/boardspace-logo-dark-new-BC5rp6tT.png",vi="/assets/boardspace-logo-white-D7wkv1T0.png";function IT(){const t=It(),{user:e}=Pt(),{theme:a}=wi(),{t:i,i18n:r}=$e(["canvas"]),{locale:n}=Dt(),s=typeof window<"u"?_i():null,l=n==="he"||r.language==="he"||s==="he"||typeof document<"u"&&document.documentElement.dir==="rtl",c=t.pathname==="/creators",d=t.pathname==="/video-editor"||t.pathname==="/en/video-editor"||t.pathname==="/it/video-editor",u=t.pathname==="/"||t.pathname==="/2"||t.pathname==="/auth"||t.pathname.startsWith("/canvas/")||t.pathname==="/dashboard"||t.pathname==="/partners"||t.pathname==="/shops"||t.pathname==="/schools"||t.pathname==="/boardstyler-love"||t.pathname==="/boardstyler-live"||t.pathname==="/unsubscribed"||t.pathname==="/exelerator"||t.pathname.startsWith("/creators")||t.pathname.startsWith("/order")||t.pathname==="/kling3-workspace"||t.pathname==="/studio-video2"||t.pathname==="/sketch3d-lab"||d||t.pathname.startsWith("/floorplan-editor"),f=!u&&!d||c&&!!e;if(u&&!f)return null;const h=l?i("helpCenter.backToDashboard",{ns:"canvas"}):r.language==="en"?"Back to Dashboard":i("tooltips.backToDashboard",{ns:"canvas"})||"Back to Dashboard",v=y("inline-flex items-center gap-2 rounded-xl bg-gradient-to-br from-[#EC7357] via-[#D84B2E] to-[#B33D24] px-4 py-2 font-heebo text-sm text-white shadow-[0_8px_24px_rgba(216,75,46,0.3)] hover:shadow-[0_12px_30px_rgba(216,75,46,0.45)] transition-all active:scale-[0.98]",l&&"flex-row-reverse"),g=o.jsxs(o.Fragment,{children:[l?o.jsx(eo,{className:"h-5 w-5 shrink-0 md:h-4 md:w-4","aria-hidden":!0}):o.jsx(Ga,{className:"h-5 w-5 shrink-0 md:h-4 md:w-4","aria-hidden":!0}),o.jsx("span",{className:"whitespace-nowrap text-base md:text-sm",children:h})]});return o.jsxs(o.Fragment,{children:[!u&&o.jsx("nav",{className:"fixed top-0 z-50 w-full bg-white/80 dark:bg-slate-900/80 backdrop-blur-sm border-b border-gray-200 dark:border-slate-700",children:o.jsxs("div",{className:"container mx-auto flex h-[78px] items-center justify-between px-4 md:h-14",children:[o.jsx(Ke,{to:e?"/dashboard":"/",className:"flex items-center group transition-all",children:o.jsx("img",{src:a==="dark"?Ha:vi,alt:"BoardSpace",className:"h-[69px] w-auto md:h-10"})}),o.jsx("div",{className:"flex items-center gap-2",children:e?o.jsx(yv,{}):t.pathname!=="/auth"&&o.jsx(ee,{asChild:!0,children:o.jsx(Ke,{to:"/auth?mode=signup",children:"Get Started"})})})]})}),f&&o.jsx("div",{className:y("fixed z-40 hidden px-4 sm:px-6 md:block md:px-8",c?"top-[90px]":"top-[70px]","right-4 sm:right-6 md:right-8"),children:o.jsx(Ke,{to:"/dashboard",className:v,style:{fontWeight:800,letterSpacing:"-0.01em"},children:g})}),f&&o.jsx("div",{className:"pointer-events-none fixed inset-x-0 bottom-0 z-40 md:hidden",children:o.jsx(Ke,{to:"/dashboard",className:y(v,"pointer-events-auto flex w-full min-h-[3.5rem] items-center justify-center rounded-b-none rounded-t-2xl px-5 py-4 text-base","shadow-[0_-8px_32px_rgba(216,75,46,0.38)] active:scale-[0.99] touch-manipulation"),style:{fontWeight:800,letterSpacing:"-0.01em",paddingBottom:"max(1rem, env(safe-area-inset-bottom, 0px))"},children:g})})]})}function _t({children:t}){const{user:e,loading:a}
535=Pt(),i=It();return a?o.jsx("div",{className:"flex min-h-screen items-center justify-center",children:o.jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-4 border-primary border-t-transparent"})}):e?o.jsx(o.Fragment,{children:t}):o.jsx(ju,{to:"/auth",state:{from:i},replace:!0})}function eh({children:t}){return o.jsx(o.Fragment,{children:t})}const xv=()=>{const{user:t}=Pt(),{data:e,isLoading:a,error:i,refetch:r}=ta({queryKey:["admin-status",t==null?void 0:t.id],queryFn:async()=>{if(!t)return{isAdmin:!1};try{const{data:n,error:s}=await V.functions.invoke("check-admin-status",{body:{}});return s?(console.error("Error checking admin status:",s),{isAdmin:!1}):n||{isAdmin:!1}}catch(n){return console.error("Unexpected error checking admin status:",n),{isAdmin:!1}}},enabled:!!t,staleTime:5*60*1e3,refetchOnWindowFocus:!0});return{isAdmin:(e==null?void 0:e.isAdmin)||!1,permissions:e==null?void 0:e.permissions,adminEmail:e==null?void 0:e.email,isLoading:a,error:i,refetch:r}},pW=()=>{const{isAdmin:t}=xv();return{moderateContent:async a=>{if(!t)throw new Error("Unauthorized: Admin access required");const{data:i,error:r}=await V.functions.invoke("moderate-content",{body:a});if(r)throw r;return i},isAdmin:t}};function DT({children:t}){const{isAdmin:e,isLoading:a}=xv();return a?o.jsx("div",{className:"flex min-h-screen items-center justify-center",children:o.jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-4 border-primary border-t-transparent"})}):e?o.jsx(o.Fragment,{children:t}):o.jsx(ju,{to:"/dashboard",replace:!0})}const Si=mu,Uu=uu,Pl=m.forwardRef(({className:t,...e},a)=>o.jsx(Rn,{ref:a,className:y("fixed inset-0 z-[100] bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e}));Pl.displayName=Rn.displayName;const mo=m.forwardRef(({className:t,children:e,...a},i)=>o.jsxs(Uu,{children:[o.jsx(Pl,{}),o.jsxs(lo,{ref:i,className:y("fixed left-[50%] top-[50%] z-[100] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...a,children:[e,o.jsxs(bl,{className:"absolute right-4 top-4 rtl:right-auto rtl:left-2 rtl:top-2 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-accent data-[state=open]:text-muted-foreground hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[o.jsx(Et,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));mo.displayName=lo.displayName;const Un=({className:t,...e})=>o.jsx("div",{className:y("flex flex-col space-y-1.5 text-center sm:text-left",t),...e});Un.displayName="DialogHeader";const wv=({className:t,...e})=>o.jsx("div",{className:y("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});wv.displayName="DialogFooter";const Ci=m.forwardRef(({className:t,...e},a)=>o.jsx(gr,{ref:a,className:y("text-lg font-semibold leading-none tracking-tight",t),...e}));Ci.displayName=gr.displayName;const Al=m.forwardRef(({className:t,...e},a)=>o.jsx(fr,{ref:a,className:y("text-sm text-muted-foreground",t),...e}));Al.displayName=fr.displayName;const qa=(t,e)=>{if(!(typeof window>"u"||typeof window.fbq!="function"))try{window.fbq("track",t,e)}catch(a){console.error("Meta Pixel track error",a)}};function $r(t){t.muted=!0,t.defaultMuted=!0,t.volume=0,t.setAttribute("muted","")}const kv={ref:t=>{t&&$r(t)},onLoadedMetadata:t=>$r(t.currentTarget),onPlay:t=>$r(t.currentTarget),onVolumeChange:t=>$r(t.currentTarget)};function RT(){m.useEffect(()=>{const t=()=>{document.querySelectorAll("video").forEach(a=>{$r(a)})};t(),document.addEventListener("play",t,!0),document.addEventListener("volumechange",t,!0);const e=window.setInterval(t,400);return()=>{document.removeEventListener("play",t,!0),document.removeEventListener("volumechange",t,!0),window.clearInterval(e)}},[])}const xc="Boardspace.ai",rt="https://boardspace.ai",LT="https://boardspace.ai/canvas-icon.png",th="@boardspaceai";function OT({title:t,description:e,canonical:a,ogImage:i=LT,ogType:r="website",noindex:n=!1,keywords:s,locale:l,alternateUrls:c,article:d}){var I,R;const u=It(),{i18n:p}
535=$e(),f=u.pathname,v=new URLSearchParams(u.search).get("lang");let g;l?g=l:f==="/it"||f.startsWith("/it/")?g="it":f==="/en"||f.startsWith("/en/")?g="en":f==="/he"||f.startsWith("/he/")?g="he":v==="he"||v==="it"||v==="en"?g=v:p.language==="he"||(I=p.language)!=null&&I.startsWith("he-")?g="he":p.language==="it"||(R=p.language)!=null&&R.startsWith("it-")?g="it":g="en";const b=g==="he",x=g==="it",w=B=>{const z=B.startsWith("/he/")?B.slice(3):B;return z.startsWith("/blog")||z.startsWith("/compare/")||z==="/prompt-guides"||z==="/prompt-guide"||z==="/video-prompt-guide"||z==="/gpt-image-prompt-guide"||z==="/veo-prompt-guide"||z==="/sora-prompt-guide"||z==="/grok-prompt-guide"||z==="/gpt-image-2-prompt-guide"||z==="/seedance-prompt-guide"||z==="/gemini-omni-prompt-guide"||z==="/kling-3-prompt-guide"||z==="/ai-tools-for-interior-designers"||z==="/ai-moodboard-tool"||z==="/floorplan-to-3d-ai"||z==="/ai-rendering-for-designers"||z==="/ai-video-interior-design"||z==="/hebrew-design-software"||z==="/free-ai-tools-interior"||z==="/seedance-interior-design"||z==="/gemini-omni-interior-design"||z==="/gpt-image-2-interior-design"||z==="/3d-visualization-ai"||z==="/kitchen-design-ai"||z==="/ai-for-architects"||z==="/home-staging-ai"},_=(B=>B==="/it"||B==="/en"||B==="/he"?"/":B.startsWith("/it/")||B.startsWith("/en/")||B.startsWith("/he/")?B.slice(3):B)(f),S=a||(_==="/"?x?`${rt}/it`:g==="en"?`${rt}/en`:`${rt}/`:f.startsWith("/he/")?`${rt}${f}`:f.startsWith("/it/")?`${rt}${f}`:f.startsWith("/en/")?`${rt}${f}`:b&&w(_)?`${rt}/he${_}`:b?`${rt}${_}?lang=he`:x?`${rt}${_}?lang=it`:`${rt}${_}`),N=c?{english:c.en,hebrew:c.he,italian:c.it,xDefault:c.xDefault??c.en}:_==="/"?{english:`${rt}/en`,hebrew:`${rt}/`,italian:`${rt}/it`,xDefault:`${rt}/en`}:w(_)?{english:`${rt}${_}`,hebrew:`${rt}/he${_}`,italian:`${rt}${_}?lang=it`,xDefault:`${rt}${_}`}:{english:`${rt}${_}`,hebrew:`${rt}${_}?lang=he`,italian:`${rt}${_}?lang=it`,xDefault:`${rt}${_}`},P=t.includes(xc)?t:`${t} | ${xc}`,E=e.length>160?e.substring(0,157)+"...":e,L=b?"he_IL":x?"it_IT":"en_US",A=b?["en_US","it_IT"]:x?["en_US","he_IL"]:["he_IL","it_IT"];return o.jsxs(Ln,{children:[o.jsx("html",{lang:g,dir:b?"rtl":"ltr"}),o.jsx("title",{children:P}),o.jsx("meta",{name:"title",content:P}),o.jsx("meta",{name:"description",content:E}),s&&s.length>0&&o.jsx("meta",{name:"keywords",content:s.join(", ")}),b&&o.jsxs(o.Fragment,{children:[o.jsx("meta",{name:"geo.region",content:"IL"}),o.jsx("meta",{name:"geo.placename",content:"Israel"}),o.jsx("meta",{name:"geo.position",content:"31.0461;34.8516"}),o.jsx("meta",{name:"ICBM",content:"31.0461, 34.8516"})]}),x&&o.jsxs(o.Fragment,{children:[o.jsx("meta",{name:"geo.region",content:"IT"}),o.jsx("meta",{name:"geo.placename",content:"Italy"})]}),n&&o.jsx("meta",{name:"robots",content:"noindex, nofollow"}),o.jsx("link",{rel:"canonical",href:S}),o.jsx("link",{rel:"alternate",hrefLang:"en",href:N.english}),o.jsx("link",{rel:"alternate",hrefLang:"he",href:N.hebrew}),o.jsx("link",{rel:"alternate",hrefLang:"he-IL",href:N.hebrew}),o.jsx("link",{rel:"alternate",hrefLang:"it",href:N.italian}),o.jsx("link",{rel:"alternate",hrefLang:"it-IT",href:N.italian}),o.jsx("link",{rel:"alternate",hrefLang:"x-default",href:N.xDefault}),o.jsx("meta",{property:"og:type",content:r}),o.jsx("meta",{property:"og:url",content:S}),o.jsx("meta",{property:"og:title",content:P}),o.jsx("meta",{property:"og:description",content:E}),o.jsx("meta",{property:"og:image",content:i}),o.jsx("meta",{property:"og:image:width",content:"1200"}),o.jsx("meta",{property:"og:image:height",content:"630"}),o.jsx("meta",{property:"og:site_name",content:xc}),o.jsx("meta",{property:"og:locale",content:L}),A.map(B=>o.jsx("meta",{property:"og:locale:alternate",content:B},B)),o.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),o.jsx("meta",{name:"twitter:url",content:S}),o.jsx("meta",{name:"twitter:title",content:P}),o.jsx("meta",{name:"twitter:description",content:E}),o.jsx("meta",{name:"twitter:image",content:i}),o.jsx("meta",{name:"twitter:site",content:th}),o.jsx("meta",{name:"twitter:creator",content:th}),d&&o.jsxs(o.Fragment,{children:[o.jsx("meta",{property:"article:published_time",content:d.publishedTime}),d.modifiedTime&&o.jsx("meta",{property:"article:modified_time",content:d.modifiedTime}),o.jsx("meta",{property:"article:author",content:d.author}),d.section&&o.jsx("meta",{property:"article:section",content:d.section})]})]})}const Oa={name:"Boardspace.ai",alternateName:["Boardspace","בורדספייס"],url:"https://boardspace.ai",logo:"https://boardspace.ai/canvas-icon.png",description:{en:"Boardspace is an AI workspace for interior designers, combining an infinite design canvas, AI image generation, moodboards, floorplan-to-3D tools, video generation, and client presentation workflows.",he:"Boardspace הוא מרחב עבודה מבוסס AI למעצבי פנים: קנבס אינסופי, יצירת תמונות AI, מודבורדים, המרת תוכניות לתלת-ממד, יצירת וידאו, ומסלולי מצגת ללקוחות — הכל בפלטפורמה אחת בעברית.",it:"Boardspace è uno spazio di lavoro AI per interior designer: canvas infinito, generazione di immagini AI, moodboard, conversione di planimetrie in 3D, generazione di video e flussi di presentazione per i clienti — tutto in un'unica piattaforma."},sameAs:["https://twitter.com/boardspaceai","https://www.facebook.com/boardspaceai","https://www.instagram.com/boardspaceai","https://www.linkedin.com/company/boardspaceai","https://www.youtube.com/@boardspaceai"],foundingDate:"2024",founder:{"@type":"Person",name:"Haim Lagziel"},address:{"@type":"PostalAddress",addressCountry:"IL"}},MT={he:"he-IL",en:"en-US",it:"it-IT"};function zT({name:t=Oa.name,url:e=Oa.url,logo:a=Oa.logo,description:i,sameAs:r=Oa.sameAs,locale:n="en"}={}){const s=n==="he"?"he":n==="it"?"it":"en",l=i||Oa.description[s],c={"@context":"https://schema.org","@type":"Organization",name:t,alternateName:Oa.alternateName,url:e,logo:{"@type":"ImageObject",url:a},description:l,sameAs:r,foundingDate:Oa.foundingDate,founder:Oa.founder,address:Oa.address,contactPoint:{"@type":"ContactPoint",contactType:"customer support",url:"https://boardspace.ai/help-center",availableLanguage:["Hebrew","English","Italian"]},inLanguage:MT[s]};return o.jsx(Ln,{children:o.jsx("script",{type:"application/ld+json",children:JSON.stringify(c)})})}const wc={name:"Boardspace.ai",url:"https://boardspace.ai",description:{en:"An infinite multimedia canvas and social hub for interior design lovers, creators, and professionals.",he:"קנבס מולטימדיה אינסופי ורשת חברתית לאוהבי עיצוב פנים, יוצרים ומקצוענים. כלי עיצוב מונעי AI להדמיות פנים מרהיבות.",it:"Un canvas multimediale infinito e un hub sociale per appassionati di interior design, creator e professionisti. Strumenti di design basati su AI per rendering interni straordinari."}},BT={he:["he","en","it"],en:["en","he","it"],it:["it","en","he"]};function FT({name:t=wc.name,url:e=wc.url,description:a,locale:i="en"}={}){const r=i==="he"?"he":i==="it"?"it":"en",n=a||wc.description[r],s={"@context":"https://schema.org","@type":"WebSite",name:t,url:e,description:n,publisher:{"@type":"Organization",name:t,url:e},inLanguage:BT[r],potentialAction:{"@type":"SearchAction",target:{"@type":"EntryPoint",urlTemplate:`${e}/blog?search={search_term_string}`},"query-input":"required name=search_term_string"}};return o.jsx(Ln,{children:o.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)})})}function $T({faqs:t}){const e={"@context":"https://schema.org","@type":"FAQPage",mainEntity:t.map(a=>
535({"@type":"Question",name:a.question,acceptedAnswer:{"@type":"Answer",text:a.answer}}))};return o.jsx(Ln,{children:o.jsx("script",{type:"application/ld+json",children:JSON.stringify(e)})})}const VT=["Infinite multimedia design canvas","AI image generation (20+ models)","AI video generation (Kling, Veo, Sora, Grok, Seedance)","Moodboards with material libraries","Floorplan to 3D conversion","Client presentation workflows","Hebrew-first interface with full RTL support","Marketplace of approved creators"],UT=["קנבס מולטימדיה אינסופי לעיצוב","יצירת תמונות AI (יותר מ-20 מודלים)","יצירת וידאו AI (Kling, Veo, Sora, Grok, Seedance)","מודבורדים עם ספריות חומרים","המרת תוכניות אדריכליות לתלת-ממד","מסלולי מצגת ללקוחות","ממשק בעברית עם תמיכה מלאה ב-RTL","מרקטפלייס של יוצרים מאושרים"],qT=["Canvas multimediale infinito per il design","Generazione di immagini AI (oltre 20 modelli)","Generazione di video AI (Kling, Veo, Sora, Grok, Seedance)","Moodboard con librerie di materiali","Conversione di planimetrie in 3D","Flussi di presentazione per i clienti","Interfaccia multilingua (italiano, inglese, ebraico)","Marketplace di creator approvati"],GT={he:"Boardspace הוא מרחב עבודה מבוסס AI למעצבי פנים: קנבס אינסופי, יצירת תמונות AI, מודבורדים, המרת תוכניות לתלת-ממד, יצירת וידאו, ומסלולי מצגת ללקוחות.",en:"Boardspace is an AI workspace for interior designers, combining an infinite design canvas, AI image generation, moodboards, floorplan-to-3D tools, video generation, and client presentation workflows.",it:"Boardspace è uno spazio di lavoro AI per interior designer: canvas infinito di design, generazione di immagini AI, moodboard, conversione di planimetrie in 3D, generazione di video e flussi di presentazione per i clienti."},WT={he:"תוכנית חינמית זמינה. מנויים בתשלום מ-19$ לחודש. חבילות טוקנים זמינות גם הן.",en:"Free tier available. Paid plans start at $19/month. Token packs also available.",it:"Piano gratuito disponibile. Abbonamenti a pagamento da 19$ al mese. Pacchetti di token disponibili."},HT={he:"he-IL",en:"en-US",it:"it-IT"},KT={he:UT,en:VT,it:qT};function YT({locale:t="en",name:e="Boardspace.ai",url:a="https://boardspace.ai",screenshot:i="https://boardspace.ai/canvas-icon.png",aggregateRating:r}={}){const n=t==="he"?"he":t==="it"?"it":"en",s={"@context":"https://schema.org","@type":"SoftwareApplication",name:e,alternateName:["Boardspace","בורדספייס"],url:a,applicationCategory:"DesignApplication",applicationSubCategory:"Interior Design",operatingSystem:"Web",browserRequirements:"Requires a modern browser with WebGL2.",description:GT[n],inLanguage:HT[n],image:i,screenshot:i,featureList:KT[n],offers:{"@type":"Offer",price:"0",priceCurrency:"USD",description:WT[n],url:"https://boardspace.ai/billing"},publisher:{"@type":"Organization",name:"Boardspace.ai",url:"https://boardspace.ai",logo:{"@type":"ImageObject",url:"https://boardspace.ai/canvas-icon.png"}}};return r&&(s.aggregateRating={"@type":"AggregateRating",ratingValue:r.ratingValue,ratingCount:r.ratingCount,bestRating:r.bestRating??5,worstRating:r.worstRating??1}),o.jsx(Ln,{children:o.jsx("script",{type:"application/ld+json",children:JSON.stringify(s)})})}const _v=()=>{var l;const{t,i18n:e}=$e("landing"),{user:a}=Pt(),i=Vt(),r=e.language==="he"||((l=e.language)==null?void 0:l.startsWith("he-")),n=c=>{if(c.preventDefault(),a)i("/billing");else{const d=document.getElementById("pricing");d?d.scrollIntoView({behavior:"smooth"}):i("/#pricing")}},s=m.useMemo(()=>({product:[{labelKey:"pricing",href:"#pricing"},{labelKey:"workflows",href:"/workflows"},{labelKey:"creators",href:"/creators"},{labelKey:"roadmap",href:"/roadmap"}],resources:[{labelKey:"documentation",href:"/documentation"},{labelKey:"academy",href:"/academy/videos"},{labelKey:"blog",href:r?"/he/blog":"/blog"},{labelKey:"floorPlanTo3D",href:"/floorplansto3d"}],promptGuides:[{labelKey:"allPromptGuides",href:"/prompt-guides"},{labelKey:"promptGuide",href:"/prompt-guide"},{labelKey:"gptImagePromptGuide",href:"/gpt-image-prompt-guide"},{labelKey:"gptImage2PromptGuide",href:"/gpt-image-2-prompt-guide"},{labelKey:"videoPromptGuide",href:"/video-prompt-guide"},{labelKey:"kling3PromptGuide",href:"/kling-3-prompt-guide"},{labelKey:"veoPromptGuide",href:"/veo-prompt-guide"},{labelKey:"seedancePromptGuide",href:"/seedance-prompt-guide"},{labelKey:"geminiOmniPromptGuide",href:"/gemini-omni-prompt-guide"},{labelKey:"soraPromptGuide",href:"/sora-prompt-guide"},{labelKey:"grokPromptGuide",href:"/grok-prompt-guide"}],company:[{labelKey:"ourStory",href:"/our-story"},{labelKey:"careers",href:"/careers"},{labelKey:"privacy",href:"/privacy"},{labelKey:"terms",href:"/terms"},{labelKey:"buyerTerms",href:"/buyer-terms"},{labelKey:"creatorAgreement",href:"/creator-agreement"},{labelKey:"accessibility",href:"/accessibility"}],social:[{label:"Instagram",href:r?"https://www.instagram.com/boardspace_il/":"https://www.instagram.com/boardspace.ai/",icon:jf},{label:"Pinterest",href:"https://pinterest.com",icon:null},{label:"Twitter",href:"https://twitter.com",icon:zw},{label:"LinkedIn",href:"https://linkedin.com",icon:jw}]}),[r]);return o.jsxs("footer",{className:"relative overflow-hidden border-t border-white/5 bg-gradient-to-b from-[#182137] to-[#0A0E1A] py-16 font-heebo text-white md:py-20",children:[o.jsx("div",{className:"absolute inset-0 opacity-[0.03]",children:o.jsx("div",{className:"dot-grid h-full"})}),o.jsx("div",{className:"absolute inset-0 bg-gradient-to-b from-transparent via-[#182137]/50 to-[#0A0E1A] pointer-events-none"}),o.jsxs("div",{className:"container mx-auto px-6 md:px-8 relative z-10",children:[o.jsxs("div",{className:"grid md:grid-cols-2 lg:grid-cols-6 gap-8 md:gap-10 mb-12 md:mb-16",children:[o.jsxs(pe.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.6},className:"lg:col-span-2",children:[o.jsx("img",{src:Ha,alt:"Boardspace",className:"h-10 md:h-12 w-auto mb-5 md:mb-6"}),o.jsx("p",{className:"mb-6 max-w-md text-sm font-semibold leading-[1.55] tracking-[-0.01em] text-[#A3B5C8] md:text-base",children:t("footer.tagline")}),o.jsxs("div",{className:"mb-6",children:[o.jsx("label",{className:"mb-3 block text-sm font-black tracking-[-0.01em] text-white",children:t("footer.newsletter.title")}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsx("input",{type:"email",placeholder:t("footer.newsletter.placeholder"),className:"flex-1 rounded-lg border border-white/10 bg-white/5 px-4 py-2.5 text-sm font-semibold tracking-[-0.01em] text-white placeholder-white/40 backdrop-blur-sm transition-all focus:border-[#D85D43] focus:outline-none focus:ring-2 focus:ring-[#D85D43]"}),o.jsx("button",{className:"whitespace-nowrap rounded-lg bg-[#D85D43] px-6 py-2.5 text-sm font-black tracking-[-0.01em] text-white shadow-lg transition-all hover:bg-[#C94E35] hover:shadow-xl",children:t("footer.newsletter.subscribe")})]})]})]}),o.jsxs(pe.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.6,delay:.1},children:[o.jsx("h3",{className:"mb-4 text-base font-black tracking-[-0.02em] text-white md:mb-5 md:text-lg",children:t("footer.sections.product")}),o.jsx("ul",{className:"space-y-2.5 md:space-y-3",children:s.product.map((c,d)=>o.jsx("li",{children:c.labelKey==="pricing"?o.jsx("button",{onClick:n,className:"block text-left text-sm font-semibold tracking-[-0.01em] text-[#A3B5C8] transition-colors hover:text-white md:text-base",children:t(`footer.links.${c.labelKey}`)}):c.href.startsWith("/")?o.jsx(Ke,{to:c.href,className:"block text-sm font-semibold tracking-[-0.01em] text-[#A3B5C8] transition-colors hover:text-white md:text-base",children:t(`footer.links.${c.labelKey}`)}):o.jsx("a",{href:c.href,className:"block text-sm font-semibold tracking-[-0.01em] text-[#A3B5C8] transition-colors hover:text-white md:text-base",children:t(`footer.links.${c.labelKey}`)})},d))})]}),o.jsxs(pe.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.6,delay:.2},className:"relative z-10",children:[o.jsx("h3",{className:"mb-4 text-base font-black tracking-[-0.02em] text-white md:mb-5 md:text-lg",children:t("footer.sections.resources")}),o.jsx("ul",{className:"space-y-2.5 md:space-y-3 relative z-10",children:s.resources.map((c,d)=>o.jsx("li",{className:"relative z-10",children:c.href.startsWith("/")?o.jsx(Ke,{to:c.href,className:"relative z-10 block cursor-pointer text-sm font-semibold tracking-[-0.01em] text-[#A3B5C8] transition-colors hover:text-white md:text-base",style:{pointerEvents:"auto"},children:t(`footer.links.${c.labelKey}`)}):o.jsx("a",{href:c.href,className:"relative z-10 block cursor-pointer text-sm font-semibold tracking-[-0.01em] text-[#A3B5C8] transition-colors hover:text-white md:text-base",style:{pointerEvents:"auto"},children:t(`footer.links.${c.labelKey}`)})},d))})]}),o.jsxs(pe.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.6,delay:.25},className:"relative z-10",children:[o.jsx("h3",{className:"mb-4 text-base font-black tracking-[-0.02em] text-white md:mb-5 md:text-lg",children:t("footer.sections.promptGuides")}),o.jsx("ul",{className:"space-y-2.5 md:space-y-3 relative z-10",children:s.promptGuides.map((c,d)=>o.jsx("li",{className:"relative z-10",children:o.jsx(Ke,{to:c.href,className:"relative z-10 block cursor-pointer text-sm font-semibold tracking-[-0.01em] text-[#A3B5C8] transition-colors hover:text-white md:text-base",style:{pointerEvents:"auto"},children:t(`footer.links.${c.labelKey}`)})},d))})]}),o.jsxs(pe.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.6,delay:.3},children:[o.jsx("h3",{className:"mb-4 text-base font-black tracking-[-0.02em] text-white md:mb-5 md:text-lg",children:t("footer.sections.company")}),o.jsx("ul",{className:"space-y-2.5 md:space-y-3",children:s.company.map((c,d)=>o.jsx("li",{children:o.jsx(Ke,{to:c.href,className:"block text-sm font-semibold tracking-[-0.01em] text-[#A3B5C8] transition-colors hover:text-white md:text-base",children:t(`footer.links.${c.labelKey}`)})},d))})]})]}),o.jsx("div",{className:"border-t border-white/10 mb-8"}),o.jsxs("div",{className:"flex flex-col md:flex-row justify-between items-center gap-6",children:[o.jsx(pe.div,{initial:{opacity:0}
535,whileInView:{opacity:1},viewport:{once:!0},transition:{duration:.6,delay:.4},className:"text-sm text-[#A3B5C8]",children:o.jsx("p",{className:"font-semibold tracking-[-0.01em]",children:t("footer.copyright")})}),o.jsxs(pe.div,{initial:{opacity:0},whileInView:{opacity:1},viewport:{once:!0},transition:{duration:.6,delay:.5},className:"flex flex-col items-center gap-3",children:[o.jsx("div",{className:"flex gap-4",children:s.social.map((c,d)=>{const u=c.icon;return o.jsx(pe.a,{href:c.href,target:"_blank",rel:"noopener noreferrer",whileHover:{scale:1.2,y:-2},whileTap:{scale:.9},className:"flex h-10 w-10 items-center justify-center rounded-full bg-white/10 transition-colors hover:bg-white/20",title:c.label,children:u?o.jsx(u,{className:"w-5 h-5"}):o.jsx("span",{className:"text-sm font-bold tracking-[-0.01em]",children:"P"})},d)})}),o.jsx("a",{href:r?"https://www.instagram.com/boardspace_il/":"https://www.instagram.com/boardspace.ai/",target:"_blank",rel:"noopener noreferrer",className:"text-xs font-semibold tracking-[-0.01em] text-[#A3B5C8] transition-colors hover:text-white md:text-sm",children:r?"@boardspace_il":"@boardspace.ai"})]})]}),o.jsx(pe.div,{initial:{opacity:0}
535,whileInView:{opacity:1},viewport:{once:!0},transition:{duration:.6,delay:.6},className:"mt-8 flex flex-col items-center gap-3",children:o.jsx("p",{className:"text-center text-xs font-semibold tracking-[-0.01em] text-[#A3B5C8]/60",children:t("footer.madeWith")})})]}),o.jsx("div",{className:"absolute bottom-0 left-0 w-full h-32 bg-gradient-to-t from-[#0A0E1A] to-transparent pointer-events-none"})]})},qu=[{id:"sketch_to_real",nameEn:"Sketch to Real",nameHe:"סקיצה למציאות",descriptionEn:"Sketches -> photorealistic interior photos",descriptionHe:"סקיצות → תמונות פנים פוטוריאליסטיות",tokenCost:2,processingTime:"1-2 min",icon:o.jsx(Mm,{className:"h-5 w-5"}),gradient:"from-teal-500/10 to-cyan-500/10",category:"image",badge:"New"},{id:"flooring_check",nameEn:"Flooring",nameHe:"ריצוף",descriptionEn:"6 unique flooring material options for your room",descriptionHe:"6 אפשרויות ריצוף ייחודיות לחדר",tokenCost:12,processingTime:"60-90s",icon:o.jsx(Tf,{className:"h-5 w-5"}),gradient:"from-amber-500/10 to-orange-500/10",category:"image",badge:"Popular"},{id:"exterior_angles_set",nameEn:"Exterior Angles",nameHe:"מבטי חוץ",descriptionEn:"6 camera angles of your exterior building",descriptionHe:"6 זוויות מצלמה למבנה החיצוני",tokenCost:12,processingTime:"90-120s",icon:o.jsx(as,{className:"h-5 w-5"}),gradient:"from-blue-500/10 to-cyan-500/10",category:"image"},{id:"full_angles_set",nameEn:"6 Angles",nameHe:"6 זוויות מצלמה",descriptionEn:"6 completely different camera angles",descriptionHe:"6 זוויות מצלמה שונות לגמרי",tokenCost:12,processingTime:"25-30s",icon:o.jsx(as,{className:"h-5 w-5"}),gradient:"from-teal-500/10 to-emerald-500/10",category:"image",badge:"New"},{id:"stylematch",nameEn:"StyleMatch",nameHe:"העתקת סגנון",descriptionEn:"One style, endless rooms. Design consistency",descriptionHe:"סגנון אחד, חדרים אין סוף. עקביות עיצובית",tokenCost:2,processingTime:"30-60s",icon:o.jsx(dn,{className:"h-5 w-5"}),gradient:"from-purple-500/10 to-pink-500/10",category:"image"},{id:"designdna",nameEn:"DesignDNA",nameHe:"די.אנ.איי עיצובי",descriptionEn:"Extract design DNA + 10-15 furniture & decor items",descriptionHe:"חילוץ DNA עיצובי + 10-15 פריטי ריהוט ועיצוב",tokenCost:2,processingTime:"30-60s",icon:o.jsx(qs,{className:"h-5 w-5"}),gradient:"from-emerald-500/10 to-teal-500/10",category:"image"},{id:"kitchenboard",nameEn:"Kitchen Board",nameHe:"מטבח x6",descriptionEn:"6 kitchen material & color palette variations",descriptionHe:"6 וריאציות חומרים וצבעים למטבח",tokenCost:2,processingTime:"30-60s",icon:o.jsx(Cf,{className:"h-5 w-5"}),gradient:"from-rose-500/10 to-red-500/10",category:"image"},{id:"photo_360",nameEn:"360° Photography",nameHe:"צילום 360°",descriptionEn:"6 professional camera angle variations",descriptionHe:"6 וריאציות זוויות מצלמה מקצועיות",tokenCost:12,processingTime:"90-120s",icon:o.jsx(as,{className:"h-5 w-5"}),gradient:"from-violet-500/10 to-indigo-500/10",category:"image"},{id:"seed_explorer",nameEn:"Set of Views",nameHe:"סט מבטים",descriptionEn:"One idea -> 6 different camera angles",descriptionHe:"רעיון אחד → 6 מבטי מצלמה שונים",tokenCost:1.5,processingTime:"30-60s",icon:o.jsx(dn,{className:"h-5 w-5"}),gradient:"from-violet-500/10 to-indigo-500/10",category:"image",badge:"New"},{id:"x4_angle_board",nameEn:"x4 Angles",nameHe:"ארבע זוויות",descriptionEn:"4-angle visualization board from your render",descriptionHe:"לוח הדמיה ב-4 זוויות מהרנדר שלך",tokenCost:2,processingTime:"30-45s",icon:o.jsx(as,{className:"h-5 w-5"}),gradient:"from-sky-500/10 to-blue-500/10",category:"image",badge:"New"},{id:"day_to_night",nameEn:"Day to Night",nameHe:"יום ללילה",descriptionEn:"8 timelapse frames: day-to-night light",descriptionHe:"8 פריימים: מעבר אור יום-לילה",tokenCost:2,processingTime:"30-45s",icon:o.jsx(on,{className:"h-5 w-5"}
535),gradient:"from-amber-500/10 to-indigo-500/10",category:"image",badge:"New"},{id:"shop_the_look",nameEn:"Shop the Look",nameHe:"קנה את המראה",descriptionEn:"Shoppable room with product callouts",descriptionHe:"חדר עם זיהוי מוצרים לרכישה",tokenCost:5,processingTime:"45-60s",icon:o.jsx(Dw,{className:"h-5 w-5"}),gradient:"from-emerald-500/10 to-teal-500/10",category:"image",badge:"New"},{id:"architect_thoughts",nameEn:"Architect Thoughts",nameHe:"מחשבות אדריכל",descriptionEn:"Sepia architectural presentation board",descriptionHe:"לוח הצגה אדריכלי בסֶפְּיה",tokenCost:2,processingTime:"30-45s",icon:o.jsx(Mm,{className:"h-5 w-5"}),gradient:"from-amber-500/10 to-yellow-500/10",category:"image",badge:"New"},{id:"architectural_illustrator",nameEn:"Architectural Illustrator",nameHe:"מאייר אדריכלי",descriptionEn:"Black & white architectural presentation board",descriptionHe:"לוח הצגה אדריכלי בשחור-לבן",tokenCost:2,processingTime:"30-45s",icon:o.jsx(zm,{className:"h-5 w-5"}),gradient:"from-slate-500/10 to-gray-500/10",category:"image",badge:"New"},{id:"moodboard",nameEn:"Moodboard",nameHe:"לוח השראה",descriptionEn:"Professional moodboard from up to 10 images",descriptionHe:"לוח השראה מקצועי מעד 10 תמונות",tokenCost:2,processingTime:"30-60s",icon:o.jsx(Aw,{className:"h-5 w-5"}),gradient:"from-amber-500/10 to-orange-500/10",category:"image",badge:"New"},{id:"plan_to_3d_2",nameEn:"Plan to 3D-2",nameHe:"תוכנית ל-3D-2",descriptionEn:"Floor plan -> 3D top-view + axonometric",descriptionHe:"תוכנית קומה → מבט על 3D + איזומטרי",tokenCost:6,processingTime:"30-60s",icon:o.jsx(on,{className:"h-5 w-5"}),gradient:"from-red-500/10 to-rose-500/10",category:"image",badge:"New"},{id:"kitchen_technical_drawing",nameEn:"Kitchen Technical Drawing",nameHe:"שרטוט טכני למטבח",descriptionEn:"Turn a kitchen image into a professional technical drawing sheet",descriptionHe:"הפכו תמונת מטבח לגיליון שרטוט טכני מקצועי",tokenCost:5,processingTime:"30-60s",icon:o.jsx(zm,{className:"h-5 w-5"}),gradient:"from-slate-500/10 to-gray-500/10",category:"image",badge:"New"},{id:"room_timelapse",nameEn:"Room Timelapse",nameHe:"טיימלייפס חדר",descriptionEn:"5s timelapse video - interior design reveal",descriptionHe:"סרטון טיימלייפס 5 שניות – חשיפת עיצוב",tokenCost:27,processingTime:"90-120s",icon:o.jsx($i,{className:"h-5 w-5"}),gradient:"from-indigo-500/10 to-purple-500/10",category:"video",badge:"New"},{id:"project_timelapse",nameEn:"Construction Timelapse",nameHe:"טיימלייפס בנייה",descriptionEn:"5s timelapse - building construction",descriptionHe:"טיימלייפס 5 שניות – בניית המבנה",tokenCost:27,processingTime:"90-120s",icon:o.jsx($i,{className:"h-5 w-5"}),gradient:"from-rose-500/10 to-purple-500/10",category:"video",badge:"New"},{id:"viral_video",nameEn:"Viral Video",nameHe:"פוסט ויראלי",descriptionEn:"5s 360° rotation video - vertical 9:16",descriptionHe:"סרטון רוטציה 5 שניות – אנכי 9:16",tokenCost:27,processingTime:"90-120s",icon:o.jsx(oc,{className:"h-5 w-5"}),gradient:"from-pink-500/10 to-rose-500/10",category:"video",badge:"New"},{id:"family_home_video",nameEn:"Family Home Video",nameHe:"סרטון משפחתי בבית",descriptionEn:"5s video of a family in your design",descriptionHe:"סרטון 5 שניות של משפחה בעיצוב שלך",tokenCost:25,processingTime:"60-90s",icon:o.jsx(oc,{className:"h-5 w-5"}),gradient:"from-amber-500/10 to-orange-500/10",category:"video",badge:"New"},{id:"drone_walkthrough",nameEn:"Home Drone Walkthrough",nameHe:"תנועת רחפן בחלל הבית",descriptionEn:"Up to 7 images (1st = B&W plan) -> drone walkthrough video",descriptionHe:"עד 7 תמונות (הראשונה = תוכנית שחור-לבן) → סרטון תנועת רחפן בבית",tokenCost:40,processingTime:"2-4 min",icon:o.jsx(oc,{className:"h-5 w-5"}),gradient:"from-blue-500/10 to-cyan-500/10",category:"video",badge:"New"},{id:"construction_stages",nameEn:"Construction Stages",nameHe:"שלבי בנייה",descriptionEn:"2 videos (8s each) - construction stages",descriptionHe:"2 סרטונים (8 שניות) – שלבי בנייה",tokenCost:34,processingTime:"2-3 min",icon:o.jsx($i,{className:"h-5 w-5"}),gradient:"from-orange-500/10 to-amber-500/10",category:"video",badge:"New"},{id:"video_concat",nameEn:"Video Concat",nameHe:"חבר סרטונים",descriptionEn:"Stitch 2-9 videos into one combined video",de
535scriptionHe:"חבר 2-9 סרטונים לסרטון אחד מאוחד",tokenCost:1,processingTime:"60-120s",icon:o.jsx($i,{className:"h-5 w-5"}),gradient:"from-red-500/10 to-rose-500/10",category:"video",badge:"New"}],Ge="https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/workflow-demos",Rr=(t,e="png")=>Array.from({length:6},(a,i)=>`${Ge}/${t}-${i+1}.${e}`),QT={sketch_to_real:{url:`${Ge}/sketch-to-real-output.jpg`,type:"image"},flooring_check:{url:`${Ge}/flooring-check-1.png`,type:"image",mosaic:Rr("flooring-check","png")},exterior_angles_set:{url:`${Ge}/exterior-angles-1.png`,type:"image",mosaic:Rr("exterior-angles","png")},full_angles_set:{url:`${Ge}/full-angles-1.png`,type:"image",mosaic:Rr("full-angles","png")},stylematch:{url:`${Ge}/style-match-output.jpg`,type:"image"},designdna:{url:`${Ge}/design-dna-output.jpg`,type:"image"},kitchenboard:{url:`${Ge}/kitchen-board-output.jpg`,type:"image"},photo_360:{url:`${Ge}/photo360-1.png`,type:"image",mosaic:Rr("photo360","png")},seed_explorer:{url:`${Ge}/seed-explorer-1.jpg`,type:"image",mosaic:Rr("seed-explorer","jpg")},x4_angle_board:{url:`${Ge}/x4-angles-output.png`,type:"image"},day_to_night:{url:`${Ge}/day-to-night-output.png`,type:"image"},shop_the_look:{url:`${Ge}/shop-the-look-output.png`,type:"image"},architect_thoughts:{url:`${Ge}/architect-thoughts-1.png`,type:"image"},architectural_illustrator:{url:`${Ge}/architect-thoughts-1.png`,type:"image"},moodboard:{url:`${Ge}/moodboard-output.png`,type:"image"},plan_to_3d_2:{url:`${Ge}/plan-to-3d-isometric.jpeg`,type:"image",mosaic:[`${Ge}/plan-to-3d-topview.png`,`${Ge}/plan-to-3d-isometric.jpeg`]},kitchen_technical_drawing:{url:`${Ge}/kitchen-technical-output.png`,type:"image"},room_timelapse:{url:`${Ge}/room-timelapse.mp4`,type:"video"},project_timelapse:{url:`${Ge}/project-timelapse.mp4`,type:"video"},viral_video:{url:`${Ge}/viral-video.mp4`,type:"video"},family_home_video:{url:`${Ge}/family-home-video.mp4`,type:"video",poster:`${Ge}/family-home-input.png`},construction_stages:{url:`${Ge}/construction-stages-construction.mp4`,type:"video"},video_concat:{url:`${Ge}/project-timelapse.mp4`,type:"video"},drone_walkthrough:{url:`${Ge}/drone-walkthrough-output.mp4`,type:"video"}},Sv=t=>QT[t],ol="/placeholder.svg",Li=t=>`/academy/posters/${t}.jpg`;function Cv(t){return t.showLessonNumber!==!1}const _r=t=>{var e;return t.platform?t.platform:(e=t.videoId)!=null&&e.includes("-")?"veed":"youtube"},Tv=t=>{const e=_r(t);return e==="veed"&&t.videoId?t.thumbnailImage||Li(t.videoId):e==="youtube"&&t.videoId?t.thumbnailImage||`https://img.youtube.com/vi/${t.videoId}/maxresdefault.jpg`:[t.thumbnailImage,t.thumbnail].filter(Boolean).find(r=>r.startsWith("http"))||ol},Gu=[{id:"intro",title:"מה זה בורדספייס?",videoId:"OGO7P85UB_k",thumbnail:"https://img.youtube.com/vi/OGO7P85UB_k/maxresdefault.jpg",thumbnailImage:"https://img.youtube.com/vi/OGO7P85UB_k/maxresdefault.jpg",platform:"youtube",rewardsTokens:!1,durationSeconds:180,showLessonNumber:!1},{id:"1",title:"איך מתחילים?",videoId:"lioSoIdoUws",thumbnail:"https://img.youtube.com/vi/lioSoIdoUws/maxresdefault.jpg",thumbnailImage:"https://img.youtube.com/vi/lioSoIdoUws/maxresdefault.jpg",platform:"youtube",rewardsTokens:!0,durationSeconds:60},{id:"2",title:"הכרות עם המערכת",videoId:"rTPqBf0pv0U",thumbnail:"https://img.youtube.com/vi/rTPqBf0pv0U/maxresdefault.jpg",thumbnailImage:"https://img.youtube.com/vi/rTPqBf0pv0U/maxresdefault.jpg",platform:"youtube",rewardsTokens:!0,durationSeconds:60},{id:"3",title:"יצירת וידאו בסטודיו 2.0",videoId:"3LkkDNAO4_0",thumbnail:"https://img.youtube.com/vi/3LkkDNAO4_0/maxresdefault.jpg",thumbnailImage:"https://img.youtube.com/vi/3LkkDNAO4_0/maxresdefault.jpg",platform:"youtube",rewardsTokens:!0,durationSeconds:60},{id:"4",title:"עריכה מדויקת",videoId:"dHQ9I1dgyIM",thumbnail:"https://img.youtube.com/vi/dHQ9I1dgyIM/maxresdefault.jpg",thumbnailImage:"https://img.youtube.com/vi/dHQ9I1dgyIM/maxresdefault.jpg",platform:"youtube",rewardsTokens:!0,durationSeconds:60},{id:"5",title:"הכרות עם בורדסטיילר",videoId:"0FJY0Sutnew",thumbnail:"https://img.youtube.com/vi/0FJY0Sutnew/maxresdefault.jpg",thumbnailImage:"https://img.youtube.com/vi/0FJY0Sutnew/maxresdefault.jpg",platform:"youtube",rewardsTokens:!0,durationSeconds:60},{id:"6",title:"שילוב חומרים",videoId:"2c3c50b8-69e0-4d9e-8b0a-bc4f0e009dda",thumbnail:"https://www.veed.io/embed/2c3c50b8-69e0-4d9e-8b0a-bc4f0e009dda?watermark=0&sharing=0&title=0&autoplay=0&loop=0&controls=0&muted=1",thumbnailImage:Li("2c3c50b8-69e0-4d9e-8b0a-bc4f0e009dda"),platform:"veed",rewardsTokens:!1,durationSeconds:60},{id:"7",title:"וורקפלאוז",videoId:"0e430465-9daf-4b4f-9443-fa82207d95f9",thumbnail:"https://www.veed.io/embed/0e430465-9daf-4b4f-9443-fa82207d95f9?watermark=0&sharing=0&title=0&autoplay=0&loop=0&controls=0&muted=1",thumbnailImage:Li("0e430465-9daf-4b4f-9443-fa82207d95f9"),platform:"veed",rewardsTokens:!1,durationSeconds:60},{id:"8",title:"הדרכה עם טל בניש",videoId:"3aebfb29-b804-45b7-9a11-6c0ccd2ed7dc",thumbnail:"https://www.veed.io/embed/3aebfb29-b804-45b7-9a11-6c0ccd2ed7dc?watermark=0&sharing=0&title=0&autoplay=0&loop=0&controls=0&muted=1",thumbnailImage:Li("3aebfb29-b804-45b7-9a11-6c0ccd2ed7dc"),platform:"veed",rewardsTokens:!1,durationSeconds:60},{id:"9",title:"המשך חלק 2 - טל בניש",videoId:"__815pbPhYw",thumbnail:"https://img.youtube.com/vi/__815pbPhYw/maxresdefault.jpg",thumbnailImage:"https://img.youtube.com/vi/__815pbPhYw/maxresdefault.jpg",platform:"youtube",rewardsTokens:!1},{id:"10",title:"וובינר חלק 3 - טל בניש",videoId:"b972c08b-b65c-489d-aaa3-8c162375724c",thumbnail:"https://www.veed.io/embed/b972c08b-b65c-489d-aaa3-8c162375724c?watermark=0&sharing=0&title=0&autoplay=0&loop=0&controls=0&muted=1",thumbnailImage:Li("b972c08b-b65c-489d-aaa3-8c162375724c"),platform:"veed",rewardsTokens:!1},{id:"11",title:"שאלות ותשובות - סיכום וובינר",videoId:"e704a460-8164-46de-bd1e-3a31a81610fa",thumbnail:"https://www.veed.io/embed/e704a4
53560-8164-46de-bd1e-3a31a81610fa?watermark=0&sharing=0&title=0&autoplay=0&loop=0&controls=0&muted=1",thumbnailImage:Li("e704a460-8164-46de-bd1e-3a31a81610fa"),platform:"veed",rewardsTokens:!1},{id:"12",title:"וובינר - דיאלוג פתוח שאלות ותשובות",videoId:"e66efaf2-1420-430e-ab55-f5967743f083",thumbnail:"https://www.veed.io/embed/e66efaf2-1420-430e-ab55-f5967743f083?watermark=0&sharing=0&title=0&autoplay=0&loop=0&controls=0&muted=1",thumbnailImage:Li("e66efaf2-1420-430e-ab55-f5967743f083"),platform:"veed",rewardsTokens:!1},{id:"13",title:"תוכנית לתלת מימד עם טל בניש",videoId:"n4FbFFZg4Pc",thumbnail:"https://img.youtube.com/vi/n4FbFFZg4Pc/maxresdefault.jpg",thumbnailImage:"https://img.youtube.com/vi/n4FbFFZg4Pc/maxresdefault.jpg",platform:"youtube",rewardsTokens:!1},{id:"14",title:"מסקיצה להחלטה — שינוי דלת, בחירת כניסה, הכל ב-AI רק בגרסה עברית!",videoId:"umQeQ2MzYHQ",thumbnail:"https://img.youtube.com/vi/umQeQ2MzYHQ/maxresdefault.jpg",thumbnailImage:"https://img.youtube.com/vi/umQeQ2MzYHQ/maxresdefault.jpg",platform:"youtube",rewardsTokens:!1}],hW=[{id:"intro",title:"What is Boardspace?",videoId:"OGO7P85UB_k",thumbnail:"https://img.youtube.com/vi/OGO7P85UB_k/maxresdefault.jpg",thumbnailImage:"https://img.youtube.com/vi/OGO7P85UB_k/maxresdefault.jpg",platform:"youtube",rewardsTokens:!1,durationSeconds:180,showLessonNumber:!1}];function JT(t){const e=t.videoId;if(!e)return[ol];const a=Tv(t),i=new Set,r=[],n=s=>{i.has(s)||(i.add(s),r.push(s))};return n(`https://i.ytimg.com/vi/${e}/hqdefault.jpg`),n(`https://img.youtube.com/vi/${e}/hqdefault.jpg`),n(`https://i.ytimg.com/vi/${e}/mqdefault.jpg`),n(`https://img.youtube.com/vi/${e}/mqdefault.jpg`),n(`https://img.youtube.com/vi/${e}/sddefault.jpg`),n(`https://img.youtube.com/vi/${e}/default.jpg`),n(`https://img.youtube.com/vi/${e}/maxresdefault.jpg`),n(a),n(ol),r}function jv({video:t,className:e,loading:a="eager"}){const i=_r(t),r=m.useMemo(()=>i==="youtube"&&t.videoId?JT(t):[Tv(t),ol],[i,t.videoId,t.id]),[n,s]=m.useState(0),l=m.useRef(r);l.current=r,m.useEffect(()=>{s(0)},[t.id]);const c=Math.min(n,r.length-1),d=r[c];return o.jsx("img",{src:d,alt:t.title||"",className:e,loading:a,decoding:"async",referrerPolicy:"no-referrer",onError:()=>{s(u=>{const p=l.current.length;return u<p-1?u+1:u})}},`${t.id}-${c}`)}const da="#EC7357",El="#DDD8CF";function Wu({id:t}){return o.jsx("defs",{children:o.jsx("pattern",{id:t,width:"12",height:"12",patternUnits:"userSpaceOnUse",children:o.jsx("path",{d:"M 12 0 L 0 0 0 12",stroke:"rgba(255,255,255,0.06)",strokeWidth:"0.6"})})})}function Hu({gradientId:t}){return o.jsxs(o.Fragment,{children:[o.jsx("defs",{children:o.jsxs("linearGradient",{id:t,x1:"0",y1:"0",x2:"0",y2:"1",children:[o.jsx("stop",{offset:"0%",stopColor:"#E8E4DC"}),o.jsx("stop",{offset:"50%",stopColor:El}),o.jsx("stop",{offset:"100%",stopColor:"#D0CBC1"})]})}),o.jsx("rect",{width:"320",height:"180",fill:`url(#${t})`})]})}function XT({isDark:t=!1}){const e=t?"#141416":El;return o.jsxs("svg",{viewBox:"0 0 320 180",className:"absolute inset-0 h-full w-full",preserveAspectRatio:"xMidYMid slice",children:[t?o.jsxs(o.Fragment,{children:[o.jsx(Wu,{id:"thumb-grid-2"}),o.jsx("rect",{width:"320",height:"180",fill:e}),o.jsx("rect",{width:"320",height:"180",fill:"url(#thumb-grid-2)"})]}):o.jsx(Hu,{gradientId:"thumb-light-wash-2"}),o.jsxs("g",{transform:"translate(90 90) rotate(-12)",children:[o.jsx("rect",{x:"-50",y:"-35",width:"100",height:"70",rx:"6",fill:"#C48661"}),o.jsx("path",{d:"M -40 -20 L 40 -20 M -40 -5 L 40 -5 M -40 10 L 40 10 M -40 25 L 40 25",stroke:"#8B5A3C",strokeWidth:"1",opacity:"0.5"})]}),o.jsxs("g",{transform:"translate(140 100) rotate(4)",children:[o.jsx("rect",{x:"-45",y:"-32",width:"90",height:"64",rx:"6",fill:"#ECE6DB",stroke:"rgba(24,33,55,0.1)",strokeWidth:"1"}),o.jsx("line",{x1:"0",y1:"-32",x2:"0",y2:"32",stroke:"rgba(24,33,55,0.15)",strokeWidth:"0.8"}),o.jsx("line",{x1:"-45",y1:"0",x2:"45",y2:"0",stroke:"rgba(24,33,55,0.15)",strokeWidth:"0.8"})]}),o.jsxs("g",{transform:"translate(185 88) rotate(-6)",children:[o.jsx("rect",{x:"-42",y:"-30",width:"84",height:"60",rx:"6",fill:"#8B93A0"}),o.jsx("circle",{cx:"-20",cy:"-12",r:"3",fill:"#E0DFD8",opacity:"0.7"}),o.jsx("circle",{cx:"12",cy:"5",r:"2",fill:"#E0DFD8",opacity:"0.7"}),o.jsx("circle",{cx:"25",cy:"-18",r:"2.5",fill:"#E0DFD8",opacity:"0.7"}),o.jsx("circle",{cx:"-10",cy:"15",r:"2",fill:"#E0DFD8",opacity:"0.7"}),o.jsx("circle",{cx:"18",cy:"18",r:"1.5",fill:"#E0DFD8",opacity:"0.7"})]}),o.jsxs("g",{transform:"translate(230 98) rotate(12)",children:[o.jsx("rect",{x:"-40",y:"-28",width:"80",height:"56",rx:"6",fill:da}),o.jsx("rect",{x:"-40",y:"-28",width:"80",height:"56",rx:"6",fill:"url(#mat-grad)",opacity:"0.5"}),o.jsx("defs",{children:o.jsxs("linearGradient",{id:"mat-grad",x1:"0",y1:"0",x2:"1",y2:"1",children:[o.jsx("stop",{offset:"0%",stopColor:"white",stopOpacity:"0.3"}),o.jsx("stop",{offset:"100%",stopColor:"white",stopOpacity:"0"})]})})]}),o.jsx("text",{x:"285",y:"170",fontSize:"42",fontWeight:"900",fill:t?"rgba(255,255,255,0.1)":"rgba(24,33,55,0.12)",textAnchor:"end",fontFamily:"Heebo, sans-serif",children:"06"})]})}function ZT({isDark:t=!1}){const e=t?"#141416":El,a=t?"rgba(255,255,255,0.85)":"#182137",i=t?"#1E2024":"#FFFFFF",r=t?"rgba(255,255,255,0.15)":"rgba(24,33,55,0.15)";return o.jsxs("svg",{viewBox:"0 0 320 180",className:"absolute inset-0 h-full w-full",preserveAspectRatio:"xMidYMid slice",children:[t?o.jsxs(o.Fragment,{children:[o.jsx(Wu,{id:"thumb-grid-3"}),o.jsx("rect",{width:"320",height:"180",fill:e}),o.jsx("rect",{width:"320",height:"180",fill:"url(#thumb-grid-3)"})]}):o.jsx(Hu,{gradientId:"thumb-light-wash-3"}),o.jsxs("g",{transform:"translate(55 90)",children:[o.jsx("rect",{x:"-30",y:"-24",width:"60",height:"48",rx:"6",fill:i,stroke:r,strokeWidth:"1.2"}),o.jsx("rect",{x:"-22",y:"-14",width:"44",height:"4",rx:"1",fill:da,opacity:"0.4"}),o.jsx("rect",{x:"-22",y:"-6",width:"32",height:"4",rx:"1",fill:a,opacity:"0.3"}),o.jsx("circle",{cx:"-8",cy:"10",r:"5",fill:da,opacity:"0.6"}),o.jsx("path",{d:"M 3 16 L 12 6 L 22 16",stroke:a,strokeWidth:"1.5",fill:"none",opacity:"0.4"})]}),o.jsxs("g",{stroke:da,strokeWidth:"2",strokeLinecap:"round",fill:"none",children:[o.jsx("path",{d:"M 90 90 L 128 90"}),o.jsx("path",{d:"M 122 85 L 128 90 L 122 95"})]}),o.jsxs("g",{transform:"translate(160 90)",children:[o.jsx("rect",{x:"-32",y:"-28",width:"64",height:"56",rx:"8",fill:da}),o.jsxs("g",{fill:"white",children:[o.jsx("circle",{r:"14"}),o.jsx("circle",{r:"6",fill:da}),[0,45,90,135,180,225,270,315].map(n=>o.jsx("rect",{x:"-2.5",y:"-18",width:"5",height:"6",transform:`rotate(${n})`,rx:"1"},n))]})]}),o.jsxs("g",{stroke:da,strokeWidth:"2",strokeLinecap:"round",fill:"none",children:[o.jsx("path",{d:"M 192 90 L 230 90"}),o.jsx("path",{d:"M 224 85 L 230 90 L 224 95"})]}),o.jsxs("g",{transform:"translate(265 90)",children:[o.jsx("rect",{x:"-30",y:"-24",width:"60",height:"48",rx:"6",fill:i,stroke:r,strokeWidth:"1.2"}),o.jsx("g",{fill:da,children:o.jsx("path",{d:"M 0 -10 L 2 -4 L 8 -2 L 2 0 L 0 6 L -2 0 L -8 -2 L -2 -4 Z"})}),o.jsx("rect",{x:"-20",y:"8",width:"40",height:"3",rx:"1",fill:a,opacity:"0.3"}),o.jsx("rect",{x:"-15",y:"14",width:"30",height:"3",rx:"1",fill:a,opacity:"0.25"})]}),o.jsx("text",{x:"295",y:"170",fontSize:"42",fontWeight:"900",fill:t?"rgba(255,255,255,0.1)":"rgba(24,33,55,0.12)",textAnchor:"end",fontFamily:"Heebo, sans-serif",children:"07"})]})}function ej({isDark:t=!1}){const e=t?"#141416":El,a=t?"rgba(255,255,255,0.85)":"#182137",i=t?"#1E2024":"#FFFFFF",r=t?"rgba(255,255,255,0.15)":"rgba(24,33,55,0.12)";return o.jsxs("svg",{viewBox:"0 0 320 180",className:"absolute inset-0 h-full w-full",preserveAspectRatio:"xMidYMid slice",children:[t?o.jsxs(o.Fragment,{children:[o.jsx(Wu,{id:"thumb-grid-4"}),o.jsx("rect",{width:"320",height:"180",fill:e}),o.jsx("rect",{width:"320",height:"180",fill:"url(#thumb-grid-4)"})]}):o.jsx(Hu,{gradientId:"thumb-light-wash-4"}),o.jsxs("g",{children:[o.jsx("path",{d:"M 30 40 L 180 40 Q 195 40 195 5
5355 L 195 115 Q 195 130 180 130 L 95 130 L 80 148 L 82 130 L 45 130 Q 30 130 30 115 L 30 55 Q 30 40 45 40 Z",fill:i,stroke:r,strokeWidth:"1.5"}),o.jsx("rect",{x:"50",y:"60",width:"120",height:"6",rx:"2",fill:da}),o.jsx("rect",{x:"50",y:"75",width:"95",height:"4",rx:"1.5",fill:a,opacity:"0.35"}),o.jsx("rect",{x:"50",y:"87",width:"110",height:"4",rx:"1.5",fill:a,opacity:"0.35"}),o.jsx("rect",{x:"50",y:"99",width:"70",height:"4",rx:"1.5",fill:a,opacity:"0.35"}),o.jsx("circle",{cx:"55",cy:"115",r:"2",fill:da}),o.jsx("rect",{x:"62",y:"112",width:"30",height:"5",rx:"1.5",fill:da,opacity:"0.6"})]}),o.jsxs("g",{transform:"translate(255 90)",children:[o.jsx("path",{d:"M -35 50 Q -35 20 0 20 Q 35 20 35 50 L 35 70 L -35 70 Z",fill:da}),o.jsx("circle",{cx:"0",cy:"-5",r:"26",fill:t?"#E8CFBB":"#F5D5BB"}),o.jsx("path",{d:"M -22 -18 Q -26 -28 -18 -30 Q -10 -35 0 -32 Q 12 -35 22 -28 Q 28 -20 22 -10 L 22 -22 Q 0 -30 -22 -18 Z",fill:a}),o.jsxs("g",{stroke:a,strokeWidth:"1.8",fill:"none",children:[o.jsx("circle",{cx:"-10",cy:"-5",r:"6"}),o.jsx("circle",{cx:"10",cy:"-5",r:"6"}),o.jsx("path",{d:"M -4 -5 L 4 -5"})]}),o.jsx("path",{d:"M -5 8 Q 0 12 5 8",stroke:a,strokeWidth:"1.5",fill:"none",strokeLinecap:"round"})]}),o.jsx("text",{x:"25",y:"170",fontSize:"42",fontWeight:"900",fill:t?"rgba(255,255,255,0.1)":"rgba(24,33,55,0.12)",fontFamily:"Heebo, sans-serif",children:"08"})]})}const Nv={6:XT,7:ZT,8:ej},Pv={image_generation:{name:"Generate Image",cost:2,description:"Generate AI-powered images"},image_creator:{name:"Nano Banana 2",cost:4,description:"Create AI-powered images"},image_creator_4k:{name:"Nano Banana 2 (4K)",cost:6,description:"Create AI-powered 4K images"},nano_banana_2_lite:{name:"Nano Banana 2 Lite",cost:3,description:"Fast lightweight AI image generation (Kie.ai)"},combine_images:{name:"Combine Images",cost:2,description:"Combine multiple images with AI"},character_reference:{name:"Character Creator",cost:8,description:"Fixed 2-reference video character set: canonical front/master + exact side profile (2 GPT Image 2 calls). Claude analysis and observational QA add no paid retry; rejected-on-analysis is free and pipeline failure refunds."},prompt_helper:{name:"AI Orchestrator",cost:.5,description:"Intelligent multi-agent router - automatically selects the best AI tool for your request"},board_cut_export:{name:"Board-Cut Export",cost:0,description:"Local MP4 download from Board-Cut (free for everyone — no cloud/Results save)"},board_cut_captions:{name:"Board-Cut Auto Captions",cost:.5,description:"Hebrew auto-captions via Whisper (Groq) — paid (API cost)"},board_cut_voiceover:{name:"Board-Cut Voiceover",cost:0,description:"Mic voiceover into Board-Cut timeline (free)"},board_cut_tts:{name:"Board-Cut AI Narration",cost:1,description:"Hebrew AI narration for Board-Cut via ElevenLabs eleven_v3"},board_cut_voice_clone:{name:"Board-Cut Voice Clone",cost:50,description:"One-time Instant Voice Clone for Board-Cut (ElevenLabs IVC)"},board_cut_cloud_save:{name:"Board-Cut Cloud Save (retired)",cost:0,description:"Retired — Board-Cut no longer uploads media/exports to Supabase; session is IndexedDB-only"},correction_analyzer:{name:"Correction Analyzer",cost:.25,description:"Compare AI result vs request and propose surgical fix"},video_orchestrator:{name:"Video Orchestrator",cost:.5,description:"Video AI guide - writes prompts and routes to video generation"},sketch3d_agent:{name:"Sketch3D Agent",cost:.5,description:"Hebrew chat agent that drives the sketch3d-lab tool palette through natural language"},floorplan_template_agent_chat:{name:"Floorplan Template Agent Chat",cost:.5,description:"Bordi smart agent clarification turn for procedural Floor Planner templates"},floorplan_template_agent_generate:{name:"Floorplan Template Agent Generate",cost:3,description:"Generate an editable procedural furniture template inside Floor Planner"},floorplan_template_agent_edit:{name:"Floorplan Template Agent Edit",cost:3,description:"Edit an existing procedural furniture template inside Floor Planner"},image_upscale:{name:"Upscale Image",cost:0,description:"Enhance image resolution with AI"},topaz_image_upscale:{name:"Topaz Image Upscale",cost:2,description:"Professional-grade AI image upscaling by Topaz Labs"},topaz_video_upscale:{name:"Topaz Video Upscale",cost:4,description:"Professional-grade AI video upscaling by Topaz Labs (legacy alias for 1080p)"},topaz_video_upscale_720p:{name:"Topaz Video Upscale 720p",cost:2,description:"Topaz video upscale to 720p / 30fps"},topaz_video_upscale_1080p:{name:"Topaz Video Upscale 1080p",cost:4,description:"Topaz video upscale to 1080p / 30fps"},topaz_video_upscale_4k:{name:"Topaz Video Upscale 4K",cost:15,description:"Topaz video upscale to 4K / 30fps"}
535,remove_background:{name:"Remove Background",cost:0,description:"AI-powered background removal"},lang_model:{name:"Veo 3.1 Fast Baker",cost:.1,description:"AI expert for writing Veo 3.1 Fast Image→Video prompts"},kling_lang_model:{name:"Kling 3.0 Prompt Expert",cost:.5,description:"AI expert for Kling 3.0 video prompts - single-shot, multi-shot, elements"},o1_lang_model:{name:"Kling O1 Baker",cost:.1,description:"AI expert for Kling O1 video prompts - video edit, style transfer, image transition, visual reference"},nano_banana_expert:{name:"Nano Banana Prompt Expert",cost:.1,description:"AI expert for writing image prompts for Nano Banana Pro"},sketch_preset_baker:{name:"Sketch Preset Baker",cost:.1,description:"AI expert that reads the user's sketch and writes the render prompt for a chosen sketch preset"},gpt15_prompt_expert:{name:"GPT-image-1.5 Prompt Expert",cost:.1,description:"AI expert for writing image prompts for GPT-image-1.5"},seedance5_prompt_expert:{name:"Seedream 5.0 Prompt Expert",cost:.1,description:"AI expert for writing image prompts for Seedream 5.0 Lite"},grok_prompt_expert:{name:"Grok Imagine Prompt Expert",cost:.1,description:"AI expert for writing image prompts for Grok Imagine editing"},grok_video_prompt_expert:{name:"Grok Video Prompt Expert",cost:.5,description:"AI expert for writing video prompts for Grok Video generation (1-7 images)"},sketchup_prompt_expert:{name:"SketchUp Prompt Expert",cost:.5,description:"AI expert for writing SketchUp .skp build prompts from text, image, or PDF references"},blender3d_prompt_expert:{name:"Blender 3D Prompt Expert",cost:.5,description:"AI expert for writing Blender 3D GLB build prompts from text, image, or PDF references"},video_generation_5s:{name:"Generate 5s Video",cost:20,description:"Create 5-second AI video"},video_generation_8s:{name:"Generate 8s Video",cost:25,description:"Create 8-second AI video"},"3d_generation":{name:"Generate 3D Model",cost:3,description:"Create 3D models from text"},"generate-3d-object":{name:"Generate 3D Model (Trellis)",cost:3,description:"Trellis 3D from image — same pricing as 3d_generation"},"generate-3d-meshy":{name:"Generate 3D Model (Meshy)",cost:12,description:"Meshy AI image-to-3D, PBR textured furniture preset (meshy-6 + hd_texture)"},blender_3d_generation:{name:"Blender 3D Model (Text)",cost:20,description:"Legacy/default Blender 3D text-to-GLB pricing. New calls use input-specific keys."},blender_3d_text_generation:{name:"Blender 3D Model (Text)",cost:10,description:"Minimum prepaid budget, not fixed price: ceil(model USD × 60) + 5 tokens. User approves maximum; unused budget refunded."},blender_3d_image_generation:{name:"Blender 3D Model (Image)",cost:10,description:"Minimum prepaid budget, not fixed price: ceil(model USD × 60) + 5 tokens. User approves maximum; unused budget refunded."},blender_3d_pdf_generation:{name:"Blender 3D Model (PDF)",cost:10,description:"Minimum prepaid budget, not fixed price: ceil(model USD × 60) + 5 tokens. User approves maximum; unused budget refunded."},boq_pdf_generation:{name:"BOQ Excel from Vector PDF",cost:50,description:"Vector construction PDF → traceable BOQ Excel draft with source evidence and clarification questions"},boq_pdf_status:{name:"BOQ PDF Job Status",cost:0,description:"Free polling, clarification answers, and signed Excel download URLs for BOQ PDF jobs"},boq_dwg_generation:{name:"BOQ Excel from DWG",cost:50,description:"Native DWG → deterministic semantic CAD extraction → traceable BOQ Excel draft"},boq_dwg_status:{name:"BOQ DWG Job Status",cost:0,description:"Free polling, clarification answers, and signed Excel download URLs for BOQ DWG jobs"},sketchup_agent:{name:"SketchUp Model Builder",cost:40,description:"Native .skp model from a Hebrew brief via Anthropic + Trimble cloud SketchUp MCP (text/image/PDF build = 40t; 2026-06-20)"},sketchup_plan_read:{name:"SketchUp Plan Reader",cost:.5,description:"Extract a build spec from an uploaded floor plan (image/PDF) via Claude Opus 4.8 high-res vision"},sketchup_agent_plan:{name:"SketchUp Build from Plan",cost:40,description:"Build a native .skp from an approved plan spec via Anthropic Batches + Trimble cloud SketchUp MCP (image/PDF build = 40t; 2026-06-20)"},sketchup_agent_dwg:{name:"SketchUp Build from DWG",cost:10,description:"Build a native .skp from an uploaded DWG (deterministic CAD DWG MCP + Trimble cloud SketchUp MCP). Launch promo: charged only on build approval, after a free extraction preview."},floorplan_export_skp:{name:"Floorplan → SketchUp (.skp)",cost:10,description:"Export the floorplan 3D model to a real editable .skp (deterministic CAD plan → Trimble cloud SketchUp build). Refunded if the build fail
535s."},floorplan_export_mesh:{name:"Floorplan → 3D file (OBJ/FBX)",cost:2,description:"Export the floorplan 3D model to OBJ or FBX for Blender / 3ds Max / Lumion / Twinmotion via the CAD export pipeline. Refunded if the export fails."},kitchen_dae_generation:{name:"Kitchen DAE Sketch",cost:10,description:"SketchUp-ready .dae kitchen sketch from up to 4 photos via Replicate GPT-5.4"},kitchen_dae_pdf_generation:{name:"Kitchen DAE from PDF",cost:15,description:"SketchUp-ready .dae from a dimensioned kitchen-plan PDF via OpenAI GPT-5.4 native PDF input"},floorplan_detect_kimi:{name:"Floorplan AI Scan (Kimi)",cost:3,description:"Top-view floor plan → walls + openings + furniture + rooms via Replicate moonshotai/kimi-k2.5 (Thinking)"},floorplan_detect_opus:{name:"Floorplan AI Scan (Opus)",cost:10,description:"Raster floor plan → walls/openings/furniture/rooms via Claude Opus 4.8, 2-pass visual self-refinement. Single charge covers both passes."},floorplan_creation:{name:"Create Floorplan",cost:30,description:"Generate architectural floorplans"},vision_scan:{name:"Vision Scan",cost:1,description:"Analyze images with AI vision"},image_analysis:{name:"Image Analysis",cost:1,description:"Auto-fill inspiration image metadata with AI"},ai_chat:{name:"AI Chat Message",cost:1,description:"Chat with AI assistant"},canvas_gpt_chat:{name:"Canvas GPT Chat",cost:.1,description:"Private user-wide GPT chat inside the canvas sidebar"},canvas_gpt_chat_web:{name:"Canvas GPT Chat (Web)",cost:.1,description:"Canvas GPT chat with live web search via Replicate GPT-5 Mini"},project_assistant:{name:"Project Assistant",cost:.25,description:"Project-specific AI assistant"},pinterest_import:{name:"Pinterest Import",cost:0,description:"Import pins from Pinterest (free)"},canvas_ai_chat:{name:"Canvas AI Chat",cost:1,description:"AI chat about canvas content"},image_transform:{name:"Image Transform",cost:2,description:"Transform images with AI"},vizio9_transform:{name:"Quick Transform",cost:1,description:"AI-powered image transformation"},vizio9_image_generator:{name:"Image Generator",cost:.25,description:"Generate images from text prompts using FLUX fast model"},vizio9_multiangle:{name:"Camera Angle Agent",cost:2,description:"Change camera angle — rotate, tilt, zoom while preserving objects"},openai_edit_image:{name:"Edit Image",cost:2.5,description:"Edit images using AI"},ultra_real_agent:{name:"Ultra Real",cost:2,description:"Generate ultra-realistic photorealistic interior designs with FLUX 1.1 Pro"},style_switch:{name:"Style Switch",cost:.5,description:"Transform interior design styles with realistic room redesign"},moodboard_generation:{name:"Moodboard Generation",cost:2,description:"Generate AI-powered moodboards from images"},design_dna_generation:{name:"Design DNA Generation",cost:2,description:"Generate AI-powered design DNA moodboards from images"},kitchen_board_generation:{name:"Kitchen Board Generation",cost:2,description:"Generate 6 kitchen material & color palette variations"},image_to_video:{name:"Image to Video",cost:10,description:"Generate AI videos from images"},image_to_video_with_sound:{name:"Image to Video with Sound",cost:15,description:"Generate AI videos from images with sound"},ltx_video_10s:{name:"10 Sec Video",cost:15,description:"Generate 10-second AI videos with audio at 1080p"},seedance_video_2image:{name:"2-Image Video",cost:12,description:"Generate 10-second videos from start and end frame images with synchronized audio (2 images required)"},price_scan:{name:"PriceScan Agent",cost:6,description:"Generate professional price quote presentations from room images"},nano_banana_pro:{name:"Nano Banana Pro",cost:5,description:"Google's state-of-the-art image generation and editing model with accurate text and professional controls"},nano_workflow:{name:"Nano Workflow",cost:5,description:"Image generation via Kie.ai Nano Banana Pro model with up to 8 reference images"},nano_prompter:{name:"NanoPrompter",cost:.5,description:"Generate optimized JSON prompts for Nano Banana Pro image generation"},flux_2_pro:{name:"Flux 2.0 Pro",cost:3,description:"High-quality image generation and editing with support for eight reference images"},gpt_5_image:{name:"Advanced Image",cost:3,description:"Advanced AI image generation"},kling_o1_image:{name:"Kling O1 Image",cost:2,description:"Precise image edits with strong reference control using Kling O1 (up to 10 images)"},gpt_image_1_5:{name:"Boardspace Editor",cost:1,description:"High-fidelity image editing with strong prompt adherence"},gpt_image_2_medium:{name:"GPT Image 2",cost:4,description:"Replicate GPT Image 2 editing, fixed Medium quality ($0.047/image); used by Bordi and Floorplan"},gpt_image_2_5_edit:{name:"GPT Image 2.5 Edit",cost:3,description:"Kie.ai Sunburst multi-comment edit: 1K=3, 2K=4, 4K=6 tokens"}
535,gpt_image_2_4k:{name:"GPT Image 2 4K",cost:6,description:"4K-resolution image editing via GPT Image 2 (Kie.ai)"},viral_prompt_creator:{name:"Viral Prompt Creator",cost:0,description:"AI-powered viral social media post generation (charged via gpt-image-1-5 = 1 token)"},flooring_check:{name:"Flooring Check Workflow",cost:0,description:"Generate 6 unique flooring material options for your room design (24 tokens total via gpt-image-2)"},exterior_angles_set:{name:"Exterior Angles Set Workflow",cost:0,description:"Generate 6 specialized camera angles of your exterior building (24 tokens total via gpt-image-2)"},full_angles_set:{name:"6 Camera Angles Workflow",cost:0,description:"Generate 6 completely different camera angles using AI multiangle model (12 tokens total via vizio9-multiangle)"},photo_360:{name:"360° Photography Workflow",cost:0,description:"Generate 6 professional photography angle variations (24 tokens total via gpt-image-2)"},x4_angle_board:{name:"x4 Angles Workflow",cost:0,description:"Generate a 4-angle visualization board from your room render (4 tokens via gpt-image-2)"},day_to_night:{name:"Day to Night Workflow",cost:0,description:"Generate 8 timelapse frames showing day-to-night light transition (4 tokens via gpt-image-2)"},shop_the_look:{name:"Shop the Look Workflow",cost:0,description:"Generate shoppable room visualization with product callouts (5 tokens via nano-banana-pro)"},architect_thoughts:{name:"Architect Thoughts Workflow",cost:0,description:"Transform render into sepia architectural presentation board (4 tokens via gpt-image-2)"},architectural_illustrator:{name:"Architectural Illustrator Workflow",cost:0,description:"Transform a real interior/exterior photo into a premium 3:2 black & white architectural presentation board (4 tokens via gpt-image-2)"},project_timelapse:{name:"Construction Timelapse Workflow",cost:0,description:"Generate a construction timelapse video from exterior building image (29 tokens: 4 via gpt-image-2 + 25 via kling-o1-video 5s pro)"},room_timelapse:{name:"Room Timelapse Workflow",cost:0,description:"Generate a design reveal timelapse video from interior room image (29 tokens: 4 via gpt-image-2 + 25 via kling-o1-video 5s pro)"},viral_video:{name:"Viral Video Workflow",cost:0,description:"Generate a 360° rotation video for viral social media (29 tokens: 4 via gpt-image-2 + 25 via kling-o1-video 5s pro)"},kling_o1_video:{name:"Kling O1 Video",cost:12,description:"Dynamic pricing (fal cost–aligned): Std 4t/s (6t/s with video input), Pro 5t/s (8t/s with video input). Duration 3-10s. Min 12t (3s×4 std). Workflows: imageToVideo, referenceToVideo, videoToVideoEdit, videoToVideoReference."},minimax_h3_video:{name:"MiniMax H3 וידאו",cost:12,description:"Studio reference-to-video, 2K only: 3 tokens per output second, 4–15 seconds (12–45 tokens)."},minimax_h3_smart_assistant:{name:"MiniMax H3 Smart Assistant",cost:.5,description:"Dedicated MiniMax H3 multimodal reference prompt writer"},kling_3_turbo_video:{name:"Kling 3 Turbo וידאו",cost:20,description:"Same as Kling 3 without sound: 4 tokens/sec at 720p, 6 at 1080p, minimum 5 billable seconds. Output 3-15s."},kling3_turbo_smart_assistant:{name:"Kling 3 Turbo Smart Assistant",cost:.5,description:"AI assistant for Kling 3 Turbo image-to-video prompts and settings"},kling_3_video:{name:"Kling 3.0 וידאו",cost:12,description:"Dynamic pricing: 4-8 tokens/sec based on resolution and audio (min 12 tokens for 3s 720p no audio)"},gemini_omni_video_6s:{name:"Gemini Omni Video 6s",cost:22,description:"Gemini Omni text/image-to-video at 1080p, 6 seconds (Kie.ai, $0.60 upstream)"},gemini_omni_video_10s:{name:"Gemini Omni Video 10s",cost:40,description:"Gemini Omni text/image-to-video at 1080p, 10 seconds (Kie.ai, $0.90 upstream)"},kling_motion_control:{name:"Kling Motion Control",cost:15,description:"Transfer motion from a reference video onto a reference image scene (3-30s, 1080p, 3 tokens/sec)"},grok_video:{name:"Boardspace Video",cost:11,description:"Dynamic pricing: 1.5-1.8 tokens/sec based on resolution (480p/720p), duration 6-30s"},grok15_video:{name:"Grok 1.5 Video",cost:16,description:"Dynamic pricing: 1.25 t/s (480p) / 2 t/s (720p) / 3 t/s (1080p), duration 5-15s. Kie grok-imagine-video-1-5-preview"},grok15_baker:{name:"Grok 1.5 Baker",cost:1,description:"Camera-first prompt writer for Grok 1.5 — @image hierarchy, guided continuity, no fake exactness. Charges 0.5 tokens per 
535call"},runway_video:{name:"Runway Video",cost:3,description:"Generate 5-second AI video from image at 720p using Runway model"},runway_10s_video:{name:"Runway 10 Sec",cost:8,description:"Generate 10-second AI video at 720p with sound using Runway model"},grok_image_editor:{name:"Grok Imagine Image 2.0 Editor",cost:3,description:"Whole-image editing with Grok Imagine Image 2.0 at 2K via Replicate ($0.05/edit = $0.04 output + $0.01 input). One input image, one output — no variants, no region mask."},seedream_4_5_edit:{name:"Seedream 4.5 Edit",cost:3,description:"AI image editing with Seedream 4.5 model"},seedream_5_lite_i2i:{name:"Seedream 5.0 Lite",cost:3,description:"AI image editing with Seedream 5.0 Lite model"},veo_video:{name:"Veo 3.1 Video",cost:15,description:"Google Veo 3.1 Fast — pricing by output resolution: 720p 15t, 1080p 20t, 4K 40t"},seedance2_video:{name:"Seedance 2.0 Video",cost:12,description:"Dynamic pricing: 4 t/s (480p) or 6 t/s (720p), +2t for audio. Duration 4-15s. Workflows: first frame, first & last, multimodal ref"},seedance2_baker:{name:"Seedance 2.0 Baker",cost:1,description:"Smart prompt writer for Seedance 2.0 — expert in interior design, luxury real estate, architecture. Charges 0.5 tokens per call"},seedance2_mini_video:{name:"Seedance 2 Mini Video",cost:12,description:"Dynamic pricing: 3 t/s (480p) or 4 t/s (720p), +2t for audio. Duration 4-15s. Reference-only (images/videos/audio). Kie bytedance/seedance-2-mini. Available to all users."},seedance25_video:{name:"Seedance 2.5 וידאו",cost:60,description:"Dynamic pricing: 6 t/s (480p) or 12 t/s (720p), +2t for audio. Duration 4-30s. Reference-video seconds billed too: +3 t/s (480p) / +5 t/s (720p). Kie bytedance/seedance-2-5"},seedance25_baker:{name:"Seedance 2.5 בייקר",cost:1,description:"Director-rules prompt writer for Seedance 2.5 — timestamped beats, bracket audio syntax, @Image/@Video reference binding. Charges 0.5 tokens per call"},floorplanner_agent:{name:"FloorPlanner Agent",cost:0,description:"AI consultation for floor plan generation - interviews you and prepares optimal prompts (FREE)"},nano_banana_floorplan:{name:"Nano Banana Floorplan",cost:6,description:"Professional architectural floor plan generation with Nano Banana Pro"},plan_to_3d_2:{name:"Layout Plan in 3D-2 Workflow",cost:8,description:"Transform floor plans into 3D render + axonometric (4 image-creator + 4 gpt-image-2)"},kitchen_technical_drawing:{name:"Kitchen Technical Drawing Workflow",cost:5,description:"Generate professional kitchen technical drawing sheet (5 tokens via nano-workflow)"},seed_explorer:{name:"Seed Explorer Workflow",cost:0,description:"Generate 6 variations from one prompt using sequential seeds (1.5 tokens total via vizio9-image-generator)"},family_home_video:{name:"Family Home Video Workflow",cost:25,description:"Generate a 5-second video of a family inside your interior design (25 tokens via kling-o1-video 5s pro)"},video_concat:{name:"Video Concat",cost:1,description:"Concatenate multiple videos (2-9) into a single MP4"},drone_walkthrough:{name:"Home Drone Walkthrough",cost:40,description:"Smooth drone walkthrough video from up to 7 reference images (first = top-view B&W floor plan)"},generate_video_music:{name:"Generate Video Music",cost:2,description:"Add AI-generated synchronized music to any video"},construction_stages:{name:"Construction Stages Workflow",cost:38,description:"Generate 16-second construction timelapse from finished room image (2 gpt-image-2 + 2 veo 720p = 8 + 30 = 38)"},prince_editor:{name:"Prince Editor",cost:1,description:"Fast image editing with FLUX.2 klein 4B model (up to 5 reference images)"},wan_2_7_image_edit:{name:"Precise Editor (1K)",cost:1,description:"Region-guided 1K image editing — 1 token per variant (n=1..4 → 1..4t)"},precise_mask_edit:{name:"Precise Polygon Mask Edit",cost:1,description:"Polygon-mask image editing with FLUX Fill — 1 token per variant (n=1..4 → 1..4t)"},seedream_5_pro_i2i:{name:"Seedream 5 Pro Editor",cost:3,description:"Seedream 5.0 Pro image-to-image via Kie.ai — sketch, material, fusion, layer split (1K)"},seedream_5_layer_decompose_region:{name:"Layer Decomposition — Region 1K",cost:5,description:"Mark one object and pull it out as its own layer, background filled in behind it (1K, 3 output images)"},seedream_5_layer_decompose_quick:{name:"Layer Decomposition — Quick 1K",cost:6,description:"Split an image into up to 3 transparent layers with an inpainted background (1K, 4 output images)"},seedream_5_layer_decompose_full:{name:"Layer Decomposition — Full 1K",cost:10,description:"Split an image into up to 6 transparent layers with an inpainted background (1K, 7 output images)"},seedream_5_layer_decompose_detailed:{name:"Layer Decomposition — Detailed 1K",cost:15,description:"Split an image into up to 10 transparent layers with an inpainted background (1K, 11 output images)"},seedream_5_layer_decompose_region_2k:{name:"Layer Decomposition — Region 2K",cost:9,description:"Mark one object and pull it out as its own layer, background filled in behind it (2K, 3 output images)"},seedream_5_layer_decompose_quick_2k:{name:"Layer Decomposition — Quick 2K",cost:11,description:"Split an image into up to 3 transparent layers with an inpainted background (2K, 4 output images)"},seedream_5_layer_decompose_full_2k:{name:"Layer Decomposition — Full 2K",cost:19,description:"Split an image into up to 6 transparent layers with an inpainted background (2K, 7 output images)"},seedream_5_layer_decompose_detailed_2k:{name:"Layer Decomposition — Detailed 2K",cost:28,description:"Split an image into up to 10 transparent layers with an inpainted background (2K, 11 output images)"},kling3_smart_assistant:{name:"Kling 3.0 Smart Assistant",cost:.5,description:"AI assistant for writing/improving prompts and recommending settings"},klingo1_smart_assistant:{name:"Kling O1 Smart Assistant",cost:.5,description:"AI assistant for writing/improving prompts for Kling O1 video model"},veo_smart_assistant:{name:"Veo 3.1 Smart Assistant",cost:.5,description:"AI assistant for writing 6-block prompts for Veo 3.1 video model"},veo_extend:{name:"Veo 3.1 Extend",cost:13,description:"Extend Veo video by 7 seconds"},veo_extend_assistant:{name:"Veo Extend Assistant",cost:.5,description:"AI assistant for writing continuation prompts for Veo Extend"},grok_extend:{name:"Grok Extend",cost:11,description:"Extend Grok video by 6-30s (1.8 tokens/sec at 720p)"},starter_plan:{name:"Starter Plan",cost:23,description:"Monthly starter plan",tokens:520},pro_plan:{name:"Pro Plan",cost:45,description:"Monthly pro plan",tokens:1050},enterprise_plan:{name:"Enterprise",cost:85,description:"Monthly enterprise plan",tokens:2200},token_pack_210:{name:"210 Tokens",cost:10,description:"One-time token purchase - 210 tokens",tokens:210}},gW=t=>{var e;return((e=Pv[t])==null?void 0:e.cost)??0};function fW(t){const e=String(t||"1K").toUpperCase();
535return e==="4K"?6:e==="2K"?4:3}function bW(t){const e=(t||"720p").toLowerCase();return e==="1080p"?20:e==="4k"?40:15}function vW(t,e){const a=Math.max(6,Math.min(30,parseInt(String(t??"10"),10)||10)),i=(e||"720p").toLowerCase()==="720p"?1.8:1.5;return Math.ceil(a*i)}const tj=t=>Pv[t]||null,aj=[{id:"t10",price:10,tokens:210,popular:!0},{id:"t20",price:20,tokens:410},{id:"t30",price:30,tokens:600},{id:"t40",price:40,tokens:780},{id:"t50",price:50,tokens:950}],ij=[aj[0]],oj=[{label:"Image editing + Remove Watermarks",tokenCost:1,pct:50},{label:"Complex editing & remix images",tokenCost:4,pct:15},{label:"Videos with sound",tokenCost:10,pct:20},{label:"Interior presentations",tokenCost:2,pct:10},{label:"3D models",tokenCost:3,pct:5},{label:"Upscale",note:"Free, unlimited"},{label:"Remove background",note:"Free, unlimited"}],kc=t=>oj.map(e=>{if(e.tokenCost&&e.pct){const a=t*(e.pct/100);return`${Math.max(1,Math.floor(a/e.tokenCost))} ${e.label}`}return`${e.label}: ${e.note}`}),rj=[{name:"Starter",price:23,tokens:520,description:"Recommended for homeowners keeping personal inspiration boards",sampleUsage:kc(520)},{name:"Pro",price:45,tokens:1050,description:"Designed for personal interior designers and in-home stylists",sampleUsage:kc(1050)},{name:"Enterprise",price:85,tokens:2200,description:"Heavy-use plan for agency or multi-project interior designers",sampleUsage:kc(2200)}],ah=["Seedance 2.5","Kling O1","Nano Banana 2","GPT Image 2.0","Veo 3.1","Seedream 5.0","Grok Imagine","Kling 3.0 Omni","Flux 2.0 Pro","Gemini Omni Video","Nano Banana Pro","Meshy 3D"],nj=[...qu].reverse(),sj=Gu.filter(t=>!!t.videoId).slice(0,3),lj=[{question:"מה זה Boardspace?",answer:"Boardspace הוא מרחב עבודה מבוסס AI למעצבי פנים: קנבס אינסופי, יצירת תמונות AI, מודבורדים, המרת תוכניות אדריכליות לתלת-ממד, יצירת וידאו, ומסלולי מצגת ללקוחות — הכל בפלטפורמה אחת בעברית."},{question:"האם Boardspace תומך בעברית?",answer:"כן. Boardspace נבנה בעברית מהיום הראשון. הממשק, הסוכנים החכמים (בורדי לתמונות, בוארדי לוידאו), הבייקרים שכותבים פרומפטים, וכל המסלולים — הכל פועל בעברית עם תמיכה מלאה ב-RTL. 99% מהמשתמשים שלנו ישראלים."},{question:"מי משתמש ב-Boardspace?",answer:"מעצבי פנים, אדריכלים, סטיילרים, ואנשי הום סטיילינג בישראל. הפלטפורמה מתאימה גם ליחיד וגם לסטודיו — מהשלב הראשון של מציאת רעיון, דרך מודבורד והדמיות, ועד מצגת ללקוח וסרטון תלת-ממדי."},{question:"כמה זה עולה?",answer:"יש שכבה חינמית. מנויים בתשלום מתחילים מ-19$ לחודש, וניתן גם לקנות חבילות טוקנים לשימוש מזדמן. מחירון מלא ב-https://boardspace.ai/billing."},{question:"מה ההבדל בין Boardspace ל-Midjourney?",answer:"Midjourney הוא מודל יצירת תמונות בלבד שדורש כתיבת פרומפטים באנגלית. Boardspace הוא פלטפורמה שלמה: קנבס, מודבורדים, יצירת וידאו, המרת תוכניות לתלת-ממד, ומצגות ללקוח — עם סוכן בעברית שכותב את הפרומפטים בשבילך, ומנתב לעשרות מודלים שונים לפי הצורך."},{question:"האם אפשר להמיר תוכניות אדריכליות לתלת-ממד?",answer:"כן. ב-Boardspace יש כלי ייעודי שמקבל תוכנית פלאן 2D ומייצר חלל תלת-ממדי שניתן לסובב, להחליף בו חומרים, להוסיף ריהוט, ולייצא לסקצ'אפ או כווידאו ללקוח."},{question:"האם Boardspace מחליף מעצב פנים?",answer:"לא. Boardspace הוא כלי עבודה למעצבי פנים — לא תחליף. הוא מאיץ את התהליך: מה שלקח 3 ימים של רנדרינג מסורתי קורה אצלנו בדקות, אבל שיקול הדעת המקצועי, ההבנה של הלקוח, וההכרעות העיצוביות נשארות בידי המעצב."}],cj=[{question:"What is Boardspace?",answer:"Boardspace is an AI workspace for interior designers: an infinite design canvas, AI image generation, moodboards, floorplan-to-3D conversion, video generation, and client presentation workflows — all in one Hebrew-first platform."},{question:"Does Boardspace support Hebrew?",answer:"Yes. Boardspace was built Hebrew-first from day one. The UI, the routing agents (Bordi for images, Boardy for video), the prompt assistants, and all workflows are fully Hebrew with native RTL. 99% of our users are based in Israel, with full English support for international users."},{question:"Who is Boardspace for?",answer:"Interior designers, architects, stylists, and home stylists. The platform fits both solo de
535signers and studios — from early ideation, through moodboards and renders, all the way to client presentations and 3D walkthrough videos."},{question:"How much does it cost?",answer:"There's a free tier. Paid plans start at $19/month, and you can also buy token packs for occasional use. Full pricing at https://boardspace.ai/billing."},{question:"How is Boardspace different from Midjourney?",answer:"Midjourney is an image-only model that requires writing English prompts. Boardspace is a full platform — canvas, moodboards, video generation, floorplan-to-3D, and client presentations — with a Hebrew-speaking AI orchestrator that writes the prompts for you and routes across 20+ specialized models."},{question:"Can Boardspace turn a floorplan into 3D?",answer:"Yes. Boardspace has a dedicated tool that takes a 2D floor plan and produces a navigable 3D space — you can rotate, swap materials, place furniture, and export to SketchUp or as a client video."},{question:"Does Boardspace replace an interior designer?",answer:"No. Boardspace is a tool for interior designers — not a replacement. It accelerates the process: what used to take 3 days of traditional rendering happens in minutes here, but professional judgment, client understanding, and design decisions stay with the designer."}],dj=[{question:"Che cos'è Boardspace?",answer:"Boardspace è uno spazio di lavoro AI per interior designer: un canvas di design infinito, generazione di immagini AI, moodboard, conversione di planimetrie in 3D, generazione di video e flussi di presentazione per i clienti — tutto in un'unica piattaforma."},{question:"Boardspace supporta l'italiano?",answer:"Sì. L'interfaccia di Boardspace è disponibile in italiano, inglese ed ebraico. Per gli utenti in Italia, l'esperienza si adatta automaticamente all'italiano. È anche possibile cambiare lingua manualmente in qualsiasi momento."},{question:"Per chi è pensato Boardspace?",answer:"Interior designer, architetti, stylist e home stylist. La piattaforma è adatta sia ai professionisti individuali che agli studi — dalla fase iniziale di ideazione, attraverso moodboard e rendering, fino alle presentazioni per i clienti e ai video walkthrough in 3D."},{question:"Quanto costa?",answer:"È disponibile un piano gratuito. Gli abbonamenti a pagamento partono da 19$ al mese e si possono acquistare anche pacchetti di token per un uso occasionale. Prezzi completi su https://boardspace.ai/billing."},{question:"Qual è la differenza tra Boardspace e Midjourney?",answer:"Midjourney è un modello di sola generazione di immagini che richiede prompt in inglese. Boardspace è una piattaforma completa — canvas, moodboard, generazione di video, planimetrie in 3D e presentazioni per clienti — con un orchestratore AI che scrive i prompt al posto tuo e instrada su oltre 20 modelli specializzati."},{question:"Boardspace può convertire una planimetria in 3D?",answer:"Sì. Boardspace ha uno strumento dedicato che prende una planimetria 2D e produce uno spazio 3D navigabile — è possibile ruotare la scena, cambiare materiali, posizionare mobili ed esportare in SketchUp o come video per il cliente."},{question:"Boardspace sostituisce l'interior designer?",answer:"No. Boardspace è uno strumento per gli interior designer — non un sostituto. Accelera il processo: ciò che richiedeva 3 giorni di rendering tradizionale qui avviene in pochi minuti, ma il giudizio professionale, la comprensione del cliente e le scelte di design restano al designer."}],_c=Gu.find(t=>t.id==="6");function uj(t,e=!0){return _r(t)==="youtube"?`https://www.youtube.com/embed/${t.videoId}?rel=0&modestbranding=1${e?"&autoplay=1&mute=1":""}`:`https://www.veed.io/embed/${t.videoId}?watermark=0&sharing=0&title=0&autoplay=${e?"1":"0"}&loop=0&controls=1&muted=1`}function mj(t){if(_r(t)==="youtube"){const a=t.videoId;return`https://www.youtube.com/embed/${a}?rel=0&modestbranding=1&autoplay=1&mute=1&loop=1&playlist=${a}`}return`https://www.veed.io/embed/${t.videoId}?watermark=0&sharing=0&title=0&autoplay=1&loop=1&controls=1&muted=1`}const pj={he:{navStart:"העלה סקיצה",heroPill:"Boardspace Canvas · כל מנועי ה-AI על בורד אחד",headline:"הסטודיו שלך מהיום הוא AI.",subtitle:"קנבס אינסופי למעצבי פנים ואדריכלים, עם כל מנועי ה-AI במקום אחד - תמונות, עריכת תמונה מורכבת, וידאו, וורקפלואוז, חומרים ופרויקטים.",cta:"הירשמו והעלו סקיצה",primaryCta:"התחילו בחינם",noCreditCard:"נסיון חינם • ללא כרטיס אשראי",secondaryCta:"גלו את הוורקפלואוז",socialProof:"כל סקיצה, תוצר, וידאו והערה נשארים על אותו בורד - בלי לאבד את ההקשר של הפרויקט.",heroEngines:["בורדי","בייקר","תמונה","וידאו","3D","חומרים"],canvasEyebrow:"המוצר המרכזי",heroBadge:"מותאם למעצבי פנים · 30+ מנועי AI",canvasTitle:"הסטודיו החכם של מעצבי הפנים",canvasTitleAccent:"הסטודיו החכם",canvasText:"מעלים סקיצה, יוצרים תלת מימד, הדמיות וידאו — עם כל המודלים המובילים, במנוי אחד.",proCta:"תנו למקצוען",heroVideoBadge:"סקיצה → רנדר בזמן אמת",heroEnginesLabel:"מריץ את",heroHighlights:[{value:"+30",label:"מנועי AI במנוי אחד"},{value:"1/10",label:"רפרנסים בכל בקשה"},{value:"∞",label:"קנבס אינסופי לפרויקט"}],canvasTools:["בורדי","בייקר","Nano Banana","Kling","Veo","Grok"],canvasCards:["סקיצה מקורית","עריכת חומרים","וידאו Flythrough","הערות לקוח"],videoEyebrow:"תהליך עבודה אמיתי",videoTitle:"האיצו את קבלת החלטות הלקוח",videoSubtitle:"מסקאצ׳ › לרנדר › הוספת חומרים › התאמת סגנון › וידאו עם סאונד. תהליך עבודה מלא ב-3 דקות, עלות 3 שקלים. סטודיו רנדרינג: 6,000 ש״ח + שבועיים המתנה.",videoBadge:"3 דקות",videoButton:"ראו את התהליך",videoStats:["3 דקות","סה״כ 3 ש״ח","וידאו + רנדרים"],videoCostIntro:"כל תהליך העבודה הזה עלה 3 ש״ח ולקח 3 דקות:",videoCosts:["סקיצה ← רנדר (20 אג׳)","החלפת חומר (40 אג׳)","מצגת StyleMatch (40 אג׳)","וידאו עם סאונד (2 ש״ח)"],videoStudioComparison:"סטודיו רנדרינג לאותה חבילה: 2,000-3,000 ש״ח + שבוע.",servicesEyebrow:"מה אפשר להתחיל היום",servicesMeta:"קנבס · סטודיו · וורקפלואוז · יוצרים",servicesHeading:"מה נעצב היום ? בחר איך תרצה להתחיל",serviceCards:{canvas:{title:"יוצרים לבד",subtitle:"קנבס AI פתוח עם בורדי, בייקר, תמונות, וידאו, עריכה וארגון פרויקטים.",tag:"CANVAS",cta:"פתיחת קנבס"},boardstyler:{title:"תוכנית ל-3D",subtitle:"העלאת תוכנית, זיהוי קירות, חומרים, ריצוף וצפייה תלת ממדית.",tag:"3D",cta:"מעבר לעורך"},studio:{title:"סטודיו וידאו",subtitle:"Kling, Veo, Seedance ו-Grok במקום אחד לעבודה מסודרת על פריימים ותנועה.",tag:"VIDEO",cta:"פתיחת סטודיו"},marketplace:{title:"יוצרים מאושרים",subtitle:"כשצריך תוצר סופי, בוחרים קריאייטור ומקבלים עבודה בפיקוח Boardspace.",tag:"PRO",cta:"כניסה למרקטפלייס"}},workflowsTitle:"וורקפלואוז פופולריים",workflowsMeta:"מעלים קובץ, לוחצים התחלה, ומקבלים תוצר בלי להנדס פרומפט.",tokens:"טוקנים",start:"התחל",finalTitle:"תתחילו מסקיצה אחת. נסיים עם תוצר שמוכר.",finalText:"Boardspace מחבר קנבס, וידאו, וורקפלואוז ויוצרים מאושרים למקום אחד שנועד לעבודה אמיתית.",podcastEyebrow:"Podcast",podcastTitle:"איך מעצבים עובדים עם AI בפועל",podcastText:"שיחה קצרה על תהליכי עבודה, לקוחות, סקיצות, הדמיות והדרך להפוך AI לכלי יומיומי בסטודיו.",podcastCta:"צפו בפרק",plansEyebrow:"מנויים חודשיים",plansTitle:"שלוש רמות מנוי",plansSubtitle:"כל התוכניות נותנות גישה לאותם מנועי AI. ההבדל הוא רק נפח הטוקנים שמתעדכן כל חודש.",plansCta:"לדף החיוב והרכישה",plansCtaGuest:"הרשמה ואז חיוב",plansFootnote:"המחירים בדולר ארה״ב. חבילות טוקנים חד־פעמיות זמינות רק בדף החיוב — כאן רק שלושת המנויים.",plansPopular:"הכי פופולרי",plansPerMonth:"/חודש",plansPerToken:"לטוקן",plansFeatures:["גישה לכל הפיצ'רים","טוקנים מועברים בין חודשים","ביטול בכל עת"],plansDescriptions:{Starter:"מומלץ לבעלי בתים שמתחזקים לוחות השראה אישיים",Pro:"מתאים למעצבי פנים עצמאיים וסטייליסטים ביתיים",Enterprise:"שימוש אינטנסיבי לסטודיו או למספר פרויקטים במקביל"}},en:{navStart:"Upload a sketch",heroPill:"Boardspace Canvas · every AI engine on one board",headline:"Your studio is AI from today.",subtitle:"An infinite canvas for interior designers and architects, with every AI engine in one place - images, advanced image editing, video, workflows, materials and projects.",cta:"Sign up and upload a sketch",primaryCta:"Start free",noCreditCard:"Free trial • no credit card required",secondaryCta:"Explore workflows",socialProof:"Every sketch, output, video and note stays on one board, so the project context never gets lost.",heroEngines:["Bordi","Baker","Image","Video","3D","Materials"],canvasEyebrow:"Main product",heroBadge:"Built for interior designers · 30+ AI engines",canvasTitle:"One infinite canvas for every AI engine",canvasTitleAccent:"One infinite canvas",canvasText:"Upload a sketch, create 3D, renders, and video with every leading model—all in one subscription.",proCta:"Let a pro handle it",heroVideoBadge:"Sketch → render in real time",heroEnginesLabel:"Running",heroHighlights:[{value:"30+",label:"AI engines, one subscription"},{value:"1/10",label:"references per request"},{value:"∞",label:"infinite canvas per project"}],canvasTools:["Bordi","Baker","Nano Banana","Kling","Veo","Grok"],canvasCards:["Original sketch","Material edit","Flythrough video","Client notes"],videoEyebrow:"Real workflow",videoTitle:"Speed up client decisions",videoSubtitle:"SketchUp › render › materials › style matching › video with sound. A complete workflow in 3 minutes for $0.75. Rendering studio: $500-800 plus a week.",videoBadge:"3 min",videoButton:"See the workflow",videoStats:["3 minutes","$0.75 total","Video + renders"],videoCostIntro:"This complete workflow cost $0.75 and took 3 minutes:",videoCosts:["Sketch → render (5¢)","Material swap (10¢)","StyleMatch presentation (10¢)","Video with sound (50¢)"],videoStudioComparison:"Rendering studio for the same package: $500-800 + 1 week.",servicesEyebrow:"Start here",servicesMeta:"Canvas · Studio · Workflows · Creators",servicesHeading:"What shall we design today? Choose how you'd like to start.",serviceCards:{canvas:{title:"Create yourself",subtitle:"An open AI canvas with Bordi, Baker, image, video, editing and project organization.",tag:"CANVAS",cta:"Open canvas"},boardstyler:{title:"Plan to 3D",subtitle:"Upload plans, trace walls, add materials and inspect the project in 3D.",tag:"3D",cta:"Open editor"},studio:{title:"Video studio",subtitle:"Kling, Veo, Seedance and Grok in one workspace for frames and motion.",tag:"VIDEO",cta:"Open studio"}
535,marketplace:{title:"Approved creators",subtitle:"For final delivery, choose a creator and get Boardspace-supervised work.",tag:"PRO",cta:"Visit marketplace"}},workflowsTitle:"Popular workflows",workflowsMeta:"Upload a file, press start, and get an output without prompt engineering.",tokens:"tokens",start:"Start",finalTitle:"Start with one sketch. Finish with an output that sells.",finalText:"Boardspace connects canvas, video, workflows and approved creators into one place for real production work.",podcastEyebrow:"Podcast",podcastTitle:"How designers actually work with AI",podcastText:"A short conversation about workflows, clients, sketches, renders and turning AI into a daily studio tool.",podcastCta:"Watch episode",plansEyebrow:"Monthly subscriptions",plansTitle:"Three subscription tiers",plansSubtitle:"Every tier unlocks the same AI engines. You only choose how many tokens refresh each month.",plansCta:"Go to Billing",plansCtaGuest:"Sign up, then Billing",plansFootnote:"Prices in USD. One-time token packs are only on Billing — this section is the three subscriptions only.",plansPopular:"Most popular",plansPerMonth:"/month",plansPerToken:"per token",plansFeatures:["Access to all features","Tokens roll over monthly","Cancel anytime"],plansDescriptions:{Starter:"Recommended for homeowners keeping personal inspiration boards",Pro:"Designed for personal interior designers and in-home stylists",Enterprise:"Heavy-use plan for agency or multi-project interior designers"}},it:{navStart:"Carica uno schizzo",heroPill:"Boardspace Canvas · ogni motore AI su un'unica board",headline:"Da oggi il tuo studio è AI.",subtitle:"Un canvas infinito per interior designer e architetti, con tutti i motori AI in un unico posto — immagini, editing avanzato, video, workflow, materiali e progetti.",cta:"Iscriviti e carica uno schizzo",primaryCta:"Inizia gratis",noCreditCard:"Prova gratuita • senza carta di credito",secondaryCta:"Scopri i workflow",socialProof:"Ogni schizzo, output, video e nota resta sulla stessa board, così il contesto del progetto non si perde mai.",heroEngines:["Bordi","Baker","Immagine","Video","3D","Materiali"],canvasEyebrow:"Prodotto principale",heroBadge:"Pensato per interior designer · oltre 30 motori AI",canvasTitle:"Un canvas infinito per ogni motore AI",canvasTitleAccent:"Un canvas infinito",canvasText:"Carica uno schizzo, crea 3D, rendering e video con tutti i modelli leader — il tutto in un solo abbonamento.",proCta:"Affidati a un professionista",heroVideoBadge:"Schizzo → render in tempo reale",heroEnginesLabel:"Esegue",heroHighlights:[{value:"30+",label:"motori AI, un solo abbonamento"},{value:"1/10",label:"riferimenti per richiesta"},{value:"∞",label:"canvas infinito per progetto"}],canvasTools:["Bordi","Baker","Nano Banana","Kling","Veo","Grok"],canvasCards:["Schizzo originale","Modifica materiali","Video Flythrough","Note del cliente"],videoEyebrow:"Workflow reale",videoTitle:"Accelera le decisioni dei clienti",videoSubtitle:"Schizzo › render › materiali › style matching › video con audio. Un workflow completo in 3 minuti per 0,75$. Uno studio di rendering: 500-800$ più una settimana.",videoBadge:"3 min",videoButton:"Guarda il workflow",videoStats:["3 minuti","0,75$ totali","Video + render"],videoCostIntro:"Questo workflow completo è costato 0,75$ e ha richiesto 3 minuti:",videoCosts:["Schizzo → render (5¢)","Sostituzione materiale (10¢)","Presentazione StyleMatch (10¢)","Video con audio (50¢)"],videoStudioComparison:"Studio di rendering per lo stesso pacchetto: 500-800$ + 1 settimana.",servicesEyebrow:"Inizia qui",servicesMeta:"Canvas · Studio · Workflow · Creator",servicesHeading:"Cosa progettiamo oggi? Scegli da dove iniziare.",serviceCards:{canvas:{title:"Crea da solo",subtitle:"Un canvas AI aperto con Bordi, Baker, immagini, video, editing e organizzazione progetti.",tag:"CANVAS",cta:"Apri canvas"},boardstyler:{title:"Planimetria in 3D",subtitle:"Carica planimetrie, traccia i muri, aggiungi materiali e ispeziona il progetto in 3D.",tag:"3D",cta:"Apri editor"},studio:{title:"Video studio",subtitle:"Kling, Veo, Seedance e Grok in un unico workspace per frame e movimento.",tag:"VIDEO",cta:"Apri studio"},marketplace:{title:"Creator approvati",subtitle:"Per la consegna finale, scegli un creator e ricevi un lavoro supervisionato da Boardspace.",tag:"PRO",cta:"Vai al marketplace"}},workflowsTitle:"Workflow popolari",workflowsMeta:"Carica un file, premi start e ottieni un output senza prompt engineering.",tokens:"token",start:"Avvia",finalTitle:"Inizia con uno schizzo. Finisci con un output che vende.",finalText:"Boardspace unisce canvas, video, workflow e creator approvati in un unico luogo per il lavoro reale di produzione.",podcastEyebrow:"Podcast",podcastTitle:"Come i designer lavorano davvero con l'AI",podcastText:"Una breve conversazione su workflow, clienti, schizzi, rendering e su come trasformare l'AI in uno strumento quotidiano dello studio.",podcastCta:"Guarda l'episodio",plansEyebrow:"Abbonamenti mensili",plansTitle:"Tre piani di abbonamento",plansSubtitle:"Tutti i piani sbloccano gli stessi motori AI. Scegli solo quanti token vengono rinnovati ogni mese.",plansCta:"Vai a Billing",plansCtaGuest:"Iscriviti, poi Billing",plansFootnote:"Prezzi in USD. I pacchetti di token una tantum sono disponibili solo nella pagina Billing — questa sezione mostra solo i tre abbonamenti.",plansPopular:"Più popolare",plansPerMonth:"/mese",plansPerToken:"per token",plansFeatures:["Accesso a tutte le funzioni","I token si accumulano mese dopo mese","Annulla in qualsiasi momento"],plansDescriptions:{Starter:"Consigliato per 
535chi cura bacheche di ispirazione personali",Pro:"Pensato per interior designer indipendenti e home stylist",Enterprise:"Per studi o progetti multipli con uso intensivo"}}};function Sc(){var A,I;const t=Vt(),e=$u(),a=(e==null?void 0:e.user)??null,{i18n:i}=$e(),{locale:r,isRTL:n}=Dt(),s=m.useRef(null),[l,c]=m.useState(0),[d,u]=m.useState(!1),p=typeof window<"u"?window.location.pathname:"/",f=typeof window<"u"?new URLSearchParams(window.location.search).get("lang"):null;let h;p==="/it"||p.startsWith("/it/")?h="it":p==="/en"||p.startsWith("/en/")?h="en":f==="it"?h="it":f==="en"?h="en":f==="he"?h="he":r==="it"||i.language==="it"||(A=i.language)!=null&&A.startsWith("it-")?h="it":r==="he"||i.language==="he"||(I=i.language)!=null&&I.startsWith("he-")?h="he":h="en";const v=h==="he",g=h==="it",b=v||n,x=pj[h];RT(),m.useEffect(()=>{const R=document.body.style.background;return document.body.style.background="#F7F4EF",()=>{document.body.style.background=R}},[]),m.useEffect(()=>{var R,B,z;v&&!((R=i.language)!=null&&R.startsWith("he"))?i.changeLanguage("he"):g&&!((B=i.language)!=null&&B.startsWith("it"))?i.changeLanguage("it"):h==="en"&&!((z=i.language)!=null&&z.startsWith("en"))&&i.changeLanguage("en")},[i,v,g,h]),m.useEffect(()=>{if(a){u(!1);return}const R=window.matchMedia("(max-width: 639px)"),B=()=>window.scrollY>window.innerHeight*.5,z=()=>{if(!R.matches){u(!1);return}u(B())};return R.addEventListener("change",z),window.addEventListener("scroll",z,{passive:!0}),window.addEventListener("resize",z),z(),()=>{R.removeEventListener("change",z),window.removeEventListener("scroll",z),window.removeEventListener("resize",z)}},[a]);const w=m.useMemo(()=>[{id:"canvas",title:x.serviceCards.canvas.title,subtitle:x.serviceCards.canvas.subtitle,tag:x.serviceCards.canvas.tag,cta:x.serviceCards.canvas.cta,route:a?"/dashboard":"/auth?mode=signup",icon:nn,accent:"coral"},{id:"boardstyler",title:x.serviceCards.boardstyler.title,subtitle:x.serviceCards.boardstyler.subtitle,tag:x.serviceCards.boardstyler.tag,cta:x.serviceCards.boardstyler.cta,route:a?"/floorplan-editor":"/auth?mode=signup",icon:Sf,accent:"mint"},{id:"studio",title:x.serviceCards.studio.title,subtitle:x.serviceCards.studio.subtitle,tag:x.serviceCards.studio.tag,cta:x.serviceCards.studio.cta,route:a?"/kling3-workspace":"/auth?mode=signup",icon:$i,accent:"yellow"},{id:"marketplace",title:x.serviceCards.marketplace.title,subtitle:x.serviceCards.marketplace.subtitle,tag:x.serviceCards.marketplace.tag,cta:x.serviceCards.marketplace.cta,route:"/creators",icon:ir,accent:"lavender"}],[x,a]),k={he:{title:"Boardspace.ai — מרחב עבודה מבוסס AI למעצבי פנים",description:"Boardspace הוא מרחב עבודה מבוסס AI למעצבי פנים: קנבס אינסופי, יצירת תמונות AI, מודבורדים, המרת תוכניות לתלת-ממד, יצירת וידאו, ומסלולי מצגת ללקוחות — הכל בפלטפורמה אחת בעברית.",keywords:["עיצוב פנים AI","כלי AI למעצבי פנים","קנבס עיצוב","מודבורד AI","המרת תוכנית לתלת-ממד","רנדרינג AI","וידאו AI","Boardspace","בורדספייס","פלטפורמת עיצוב פנים"]},en:{title:"Boardspace.ai — AI Workspace for Interior Designers",description:"Boardspace is an AI workspace for interior designers, combining an infinite design canvas, AI image generation, moodboards, floorplan-to-3D tools, video generation, and client presentation workflows.",keywords:["AI tools for interior designers","AI interior design","AI moodboard","floorplan to 3D","AI rendering","interior design platform","Boardspace","AI canvas","interior design AI","virtual staging"]},it:{title:"Boardspace.ai — Workspace AI per interior designer",description:"Boardspace è uno spazio di lavoro AI per interior designer: canvas infinito, generazione di immagini AI, moodboard, conversione di planimetrie in 3D, generazione di video e flussi di presentazione per i clienti — tutto in un'unica piattaforma.",keywords:["interior design AI","AI per interior designer","moodboard AI","planimetria 3D","rendering AI","render interni AI","video AI interior design","Boardspace","canvas AI design","strumenti AI interior design"]}},_=k[h].title,j=k[h].description,S=[...k[h].keywords],C=()=>{qa("Lead",{placement:"landing_2_hero_cta",stage:a?"logged_in":"pre_login"}),t(a?"/dashboard":"/auth?mode=signup")},N=()=>{t(a?"/dashboard":"/auth?mode=signup")},P=()=>{const R=s.current;if(!R)return;const B=R.scrollWidth-R.clientWidth;c(B<=0?0:R.scrollLeft/B*100)},E=R=>{const B=s.current;if(!B)return;const z=B.scrollWidth-B.clientWidth,Z=B.clientWidth*.76,fe=R==="next"?B.scrollLeft+Z:B.scrollLeft-Z;B.scrollTo({left:Math.max(0,Math.min(z,fe)),behavior:"smooth"})},L=R=>{const B=s.current;if(!B)return;const z=B.scrollWidth-B.clientWidth;c(R),B.scrollTo({left:R/100*z,behavior:"smooth"})};return o.jsxs(o.Fragment,{children:[o.jsx(OT,{title:_,description:j,keywords:S,ogImage:"https://boardspace.ai/canvas-icon.png"}),o.jsx(zT,{locale:h}),o.jsx(FT,{locale:h}),o.jsx(YT,{locale:h}),o.jsx($T,{faqs:v?lj:g?dj:cj}),o.jsxs("div",{dir:b?"rtl":"ltr",className:"min-h-screen overflow-x-hidden bg-[#F7F4EF] font-heebo text-[#182137] [background-image:radial-gradient(circle_at_center,rgba(120,95,70,0.18)_1.4px,transparent_1.6px)] [background-size:40px_40px]",children:[o.jsx("header",{className:"fixed inset-x-0 top-0 z-[100] border-b border-[#182137]/[
5350.08] bg-[#F7F4EF]/92 shadow-[0_8px_32px_rgba(24,33,55,0.06)] backdrop-blur-xl supports-[backdrop-filter]:bg-[#F7F4EF]/80",children:o.jsxs("div",{className:"mx-auto flex h-14 max-w-7xl items-center justify-between px-4 sm:h-[76px] md:px-6",children:[o.jsx(Ke,{to:a?"/dashboard":"/",className:"flex min-w-0 shrink items-center",children:o.jsx("img",{src:vi,alt:"Boardspace",className:"h-[48px] w-auto sm:h-[64px]"})}),o.jsx("div",{className:"min-w-0 max-w-[calc(100vw-5.75rem)] sm:max-w-none",children:o.jsx(ee,{className:"h-auto min-h-11 w-full whitespace-normal rounded-xl bg-[#182137] px-3 py-2.5 text-center font-heebo text-[12px] font-semibold leading-snug tracking-[-0.01em] text-white shadow-[0_8px_24px_rgba(24,33,55,0.18)] hover:bg-[#0E1423] sm:h-11 sm:w-auto sm:whitespace-nowrap sm:px-5 sm:py-0 sm:text-sm sm:leading-none",onClick:C,children:a?x.navStart:x.cta})})]})}),o.jsx("div",{className:"h-14 shrink-0 sm:h-[76px]","aria-hidden":!0}),o.jsxs("main",{className:y(!a&&d&&"max-sm:pb-[calc(6.25rem+env(safe-area-inset-bottom,0px))]"),children:[o.jsx(wj,{copy:x,isRTL:b,onPrimaryCta:C,onSecondaryCta:()=>t("/creators")}),o.jsxs("section",{id:"workflows",className:"mx-auto max-w-7xl px-4 pb-10 pt-2 md:px-6 md:pb-16 md:pt-4",children:[o.jsxs("div",{className:"mb-8 text-center",children:[o.jsxs("div",{className:"mx-auto max-w-4xl",children:[o.jsx("div",{className:"mb-3 flex items-center justify-center",children:o.jsx(oi,{className:"h-4 w-4 text-[#D85D43]"})}),o.jsx("h2",{className:"text-[42px] font-black leading-[0.94] tracking-[-0.035em] md:text-[76px]",children:x.workflowsTitle}),o.jsx("p",{className:"mx-auto mt-4 max-w-2xl text-[18px] font-semibold leading-[1.55] tracking-[-0.01em] text-[#182137]/56 md:text-[21px]",children:x.workflowsMeta})]}),o.jsxs("div",{className:"mt-6 hidden items-center justify-center gap-2 sm:flex",children:[o.jsx("button",{type:"button",onClick:()=>E("prev"),className:"grid h-11 w-11 place-items-center rounded-xl border border-[#182137]/10 bg-white text-[#182137]/70 shadow-[0_4px_16px_rgba(24,33,55,0.06)] hover:text-[#182137]","aria-label":"Previous workflows",children:b?o.jsx(an,{className:"h-5 w-5"}):o.jsx(zs,{className:"h-5 w-5"})}),o.jsx("button",{type:"button",onClick:()=>E("next"),className:"grid h-11 w-11 place-items-center rounded-xl border border-[#182137]/10 bg-white text-[#182137]/70 shadow-[0_4px_16px_rgba(24,33,55,0.06)] hover:text-[#182137]","aria-label":"Next workflows",children:b?o.jsx(zs,{className:"h-5 w-5"}):o.jsx(an,{className:"h-5 w-5"})})]})]}),o.jsx("div",{ref:s,dir:"ltr",onScroll:P,className:"flex snap-x snap-mandatory gap-4 overflow-x-auto pb-2 scroll-smooth [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:nj.map(R=>o.jsx(Sj,{name:v?R.nameHe:R.nameEn,description:v?R.descriptionHe:R.descriptionEn,tokenCost:R.tokenCost,badge:R.badge,tokensLabel:x.tokens,startLabel:x.start,onClick:N,preview:Sv(R.id),isRTL:b},R.id))}),o.jsx("div",{className:"mt-4",dir:"ltr",children:o.jsx("input",{type:"range",min:0,max:100,step:.5,value:Number.isFinite(l)?l:0,"aria-label":"Workflow position",onChange:R=>L(Number(R.target.value)),className:"h-3 w-full cursor-pointer accent-[#D85D43]"})})]}),o.jsxs("section",{className:"mx-auto max-w-7xl px-4 pb-10 pt-2 md:px-6 md:pb-14",children:[o.jsx("p",{className:"mx-auto mb-8 max-w-3xl text-balance text-center font-heebo text-[22px] font-bold leading-[1.45] tracking-[-0.02em] text-[#182137]/62 md:mb-10 md:text-[27px]",children:x.servicesHeading}),o.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:w.map((R,B)=>o.jsx(kj,{card:R,index:B+1,onClick:()=>t(R.route)},R.id))})]}),o.jsx("section",{id:"product-video",className:"mx-auto max-w-7xl px-4 pb-4 pt-7 md:px-6 md:pb-5 md:pt-10",children:o.jsxs("div",{className:"rounded-[28px] border border-[#182137]/10 bg-white/78 p-4 text-center shadow-[0_20px_70px_rgba(24,33,55,0.08)] md:p-7 lg:p-10",children:[o.jsxs("div",{className:"mx-auto max-w-4xl",children:[o.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full border border-[#D85D43]/20 bg-[#D85D43]/10 px-3 py-1 text-[11px] font-bold tracking-[-0.01em] text-[#C94E35]",children:[o.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-[#D85D43]"}),x.videoEyebrow]}),o.jsx("h2",{className:"mt-5 text-[42px] font-black leading-[0.93] tracking-[-0.03em] md:text-[72px]",children:x.videoTitle}),o.jsx("p",{className:"mx-auto mt-5 max-w-3xl text-[18px] font-semibold leading-[1.55] tracking-[-0.01em] text-[#182137]/58 md:text-[21px]",children:x.videoSubtitle}),o.jsx("div",{className:"mx-auto mt-7 grid max-w-3xl grid-cols-1 gap-2 sm:grid-cols-3",children:[{label:
535x.videoStats[0],icon:xl,color:"#F3C94E"},{label:x.videoStats[1],icon:fu,color:"#91D7BD"},{label:x.videoStats[2],icon:gu,color:"#DE735E"}].map(R=>{const B=R.icon;return o.jsxs("div",{className:"flex items-center justify-center gap-2 rounded-2xl border border-[#182137]/10 bg-[#F7F4EF] px-3 py-3",children:[o.jsx(B,{className:"h-4 w-4",style:{color:R.color}}),o.jsx("span",{className:"text-sm font-black tracking-[-0.01em] text-[#182137]/78",children:R.label})]},R.label)})})]}),_c?o.jsx("div",{className:"relative mx-auto mt-8 aspect-video w-full max-w-5xl overflow-hidden rounded-[24px] border border-[#182137]/12 bg-black shadow-[0_24px_70px_rgba(24,33,55,0.14)]",role:"region","aria-label":x.videoTitle,children:o.jsx("iframe",{src:mj(_c),title:_c.title,className:"absolute inset-0 h-full w-full border-0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen",allowFullScreen:!0})}):null,o.jsxs("div",{className:"mx-auto mt-7 max-w-4xl",children:[o.jsxs("div",{className:"rounded-3xl border border-[#182137]/10 bg-white p-5 text-start shadow-[0_10px_30px_rgba(24,33,55,0.05)] md:p-6",children:[o.jsx("p",{className:"text-[17px] font-black leading-snug tracking-[-0.015em] text-[#182137]",children:x.videoCostIntro}),o.jsx("ul",{className:"mt-4 grid gap-2 md:grid-cols-2",children:x.videoCosts.map(R=>o.jsxs("li",{className:"flex items-center gap-2 text-[15px] font-semibold tracking-[-0.01em] text-[#182137]/62",children:[o.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full bg-[#D85D43]"}),o.jsx("span",{children:R})]},R))}),o.jsx("div",{className:"mt-4 rounded-2xl bg-[#182137] px-4 py-3 text-[15px] font-black leading-snug tracking-[-0.01em] text-white",children:x.videoStudioComparison})]}),o.jsx(ee,{asChild:!0,className:"mt-7 h-12 rounded-full bg-[#182137] px-6 font-heebo text-sm font-black tracking-[-0.01em] text-white hover:bg-[#101827]",children:o.jsxs(Ke,{to:"/academy/videos",children:[o.jsx(Pw,{className:"h-4 w-4"}),x.videoButton]})})]})]})}),o.jsx(yj,{copy:x,isHebrew:v}),o.jsx(vj,{copy:x,isRTL:b,user:a}),o.jsx(hj,{isHebrew:v}),o.jsx("section",{className:"mx-auto max-w-6xl px-4 py-16 text-center md:px-6 md:py-24",children:o.jsxs("div",{className:"relative overflow-hidden rounded-[32px] bg-[#182137] px-6 py-14 text-white shadow-[0_24px_80px_rgba(24,33,55,0.2)] md:px-12 md:py-20",children:[o.jsx("div",{className:"absolute -left-20 -top-20 h-64 w-64 rounded-full bg-[#F7D968]/22"}),o.jsx("div",{className:"absolute -bottom-24 -right-14 h-64 w-64 rounded-full bg-[#91D7BD]/18"}),o.jsxs("div",{className:"relative z-10",children:[o.jsx("h2",{className:"mx-auto max-w-4xl text-[44px] font-black leading-[0.94] tracking-[-0.035em] md:text-[76px]",children:x.finalTitle}),o.jsx("p",{className:"mx-auto mt-5 max-w-2xl text-[19px] font-semibold leading-[1.55] tracking-[-0.01em] text-white/68 md:text-xl",children:x.finalText}),o.jsxs(ee,{onClick:C,className:"mt-9 h-16 rounded-full bg-[#D85D43] px-10 font-heebo text-[20px] font-black tracking-[-0.01em] text-white hover:bg-[#C94E35]",children:[x.cta,b?o.jsx(eo,{className:"h-5 w-5"}):o.jsx(Ga,{className:"h-5 w-5"})]})]})]})})]}),!a&&o.jsx("div",{className:y("fixed inset-x-0 bottom-0 z-[100] sm:hidden","transition-[transform,opacity] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)]",d?"pointer-events-none translate-y-0 opacity-100":"pointer-events-none translate-y-[calc(100%+12px)] opacity-0"),children:o.jsx("div",{className:"pointer-events-auto mx-auto max-w-lg px-3 pt-2",style:{paddingBottom:"max(12px, env(safe-area-inset-bottom, 0px))"},children:o.jsxs("div",{className:"rounded-[1.35rem] border border-[#182137]/12 bg-[#F7F4EF]/88 p-1.5 shadow-[0_-20px_56px_rgba(24,33,55,0.14),inset_0_1px_0_rgba(255,255,255,0.72)] backdrop-blur-2xl",children:[o.jsxs(ee,{type:"button",className:y("h-[3.35rem] w-full rounded-[14px] font-heebo text-[15px] font-black tracking-[-0.02em] text-white","bg-gradient-to-br from-[#EC7357] via-[#D84B2E] to-[#B33D24] shadow-[0_12px_32px_rgba(216,75,46,0.28)]","hover:shadow-[0_16px_40px_rgba(216,75,46,0.34)] active:scale-[0.99]",b&&"flex-row-reverse"),onClick:C,children:[x.primaryCta,b?o.jsx(eo,{className:"h-5 w-5 shrink-0"}):o.jsx(Ga,{className:"h-5 w-5 shrink-0"})]}),o.jsx("p",{className:"py-1.5 text-center text-[11px] font-black leading-none tracking-[-0.01em] text-[#182137]/58",children:x.noCreditCard})]})})}),o.jsx("div",{className:y(!a&&d&&"max-sm:pb-[calc(5.25rem+env(safe-area-inset-bottom,0px))]"),children:o.jsx(_v,{})})]})]})}function hj({isHebrew:t}){const[e,a]=m.useState(null);return o.jsxs("section",{id:"academy-preview",className:"mx-auto max-w-7xl px-4 py-12 md:px-6 md:py-[72px]",children:[o.jsxs("div",{className:"mb-5 flex items-center justify-between gap-4",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("span",{className:"grid h-9 w-9 place-items-center rounded-xl bg-[#DE735E]
535/12 text-[#D85D43]",children:o.jsx(zn,{className:"h-5 w-5"})}),o.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-4 gap-y-1",children:[o.jsx("h2",{className:"text-[28px] font-black leading-none tracking-[-0.025em] text-[#182137] md:text-[42px]",children:t?"מהאקדמיה שלנו":"From our Academy"}),o.jsx("span",{className:"text-[12px] font-semibold tracking-[-0.01em] text-[#182137]/45",children:t?"הסרטונים הראשונים":"First lessons"})]})]}),o.jsx(Ke,{to:"/academy/videos",className:"hidden text-[13px] font-semibold tracking-[-0.01em] text-[#182137]/55 transition-colors hover:text-[#D85D43] sm:inline-flex",children:t?"לכל הסרטונים ←":"All videos →"})]}),o.jsx("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-3",children:sj.map(i=>o.jsx(gj,{video:i,onClick:()=>a(i),isHebrew:t},i.id))}),o.jsx(Ke,{to:"/academy/videos",className:"mt-5 inline-flex text-[13px] font-semibold tracking-[-0.01em] text-[#182137]/55 transition-colors hover:text-[#D85D43] sm:hidden",children:t?"לכל הסרטונים ←":"All videos →"}),o.jsx(Si,{open:!!e,onOpenChange:i=>!i&&a(null),children:o.jsxs(mo,{className:"w-[92vw] max-w-4xl overflow-hidden border-0 bg-black p-0",onPointerDownOutside:()=>a(null),children:[o.jsx(Ci,{className:"sr-only",children:(e==null?void 0:e.title)??(t?"סרטון אקדמיה":"Academy video")}),e&&o.jsxs("div",{className:"relative bg-black",children:[o.jsx("button",{type:"button",onClick:()=>a(null),className:"absolute right-3 top-3 z-10 grid h-9 w-9 place-items-center rounded-full bg-white/15 text-white backdrop-blur transition-colors hover:bg-white/25","aria-label":t?"סגירת סרטון":"Close video",children:o.jsx(Et,{className:"h-5 w-5"})}),o.jsx("div",{className:"relative aspect-video w-full",children:o.jsx("iframe",{src:uj(e,!0),title:e.title,className:"absolute inset-0 h-full w-full border-0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen",allowFullScreen:!0},e.id)})]})]})})]})}function gj({video:t,onClick:e,isHebrew:a}){const i=Nv[t.id];return o.jsxs("button",{type:"button",onClick:e,className:"group overflow-hidden rounded-[20px] border border-[#182137]/12 bg-white text-start shadow-[0_8px_24px_rgba(24,33,55,0.07)] transition-all duration-300 hover:-translate-y-1 hover:border-[#182137]/24 hover:shadow-[0_16px_36px_rgba(24,33,55,0.12)]",children:[o.jsxs("div",{className:"relative aspect-video overflow-hidden bg-[#DDD8CF] ring-1 ring-inset ring-[#182137]/10",children:[i?o.jsx(i,{isDark:!1}):o.jsx(jv,{video:t,className:"absolute inset-0 h-full w-full object-cover"}),o.jsx("div",{className:"absolute inset-0 grid place-items-center bg-black/0 transition-colors group-hover:bg-black/15",children:o.jsx("span",{className:"grid h-14 w-14 scale-95 place-items-center rounded-full bg-white/92 text-[#D85D43] opacity-0 shadow-xl transition-all group-hover:scale-100 group-hover:opacity-100",children:o.jsx(Bn,{className:"h-6 w-6 fill-current"})})}),t.rewardsTokens&&o.jsxs("span",{className:"absolute left-3 top-3 flex items-center gap-1 rounded-lg bg-[#D85D43] px-2.5 py-1 text-[11px] font-bold tracking-[-0.01em] text-white shadow-[0_8px_16px_rgba(216,93,67,0.22)]",children:["200+",o.jsx(_w,{className:"h-3.5 w-3.5"})]}),o.jsx("span",{className:"absolute right-3 top-3 rounded-lg bg-[#182137] px-3 py-1 text-[11px] font-bold tracking-[-0.01em] text-white shadow-[0_8px_16px_rgba(24,33,55,0.18)]",children:Cv(t)?a?`שיעור ${t.id}`:`Lesson ${t.id}`:a?"כללי":"General"})]}),o.jsx("div",{className:"border-t border-[#182137]/10 bg-white px-5 py-4",children:o.jsx("h3",{className:"line-clamp-1 text-[20px] font-black leading-tight tracking-[-0.02em] text-[#182137] md:text-[22px]",children:t.title})})]})}function fj({label:t,className:e}){return o.jsxs("div",{className:y("flex w-full items-center gap-3 md:gap-4",e),children:[o.jsx("span",{className:"shrink-0 text-[12px] font-bold tracking-[-0.01em] text-[#182137]/38 md:text-[13px]",children:t}),o.jsx("div",{dir:"ltr",className:"relative min-w-0 flex-1 overflow-hidden [mask-image:linear-gradient(to_right,transparent_0%,#000_10%,#000_90%,transparent_100%)]","aria-hidden":!0,
535children:o.jsx("div",{className:"flex w-max animate-hero-marquee motion-reduce:animate-none",children:[0,1].map(a=>o.jsx("div",{className:"flex shrink-0 items-center gap-7 pe-7 md:gap-9 md:pe-9",children:ah.map(i=>o.jsx("span",{className:"whitespace-nowrap text-[14px] font-black tracking-[-0.015em] text-[#182137]/70 md:text-[15px]",children:i},i))},a))})}),o.jsx("span",{className:"sr-only",children:ah.join(", ")})]})}function bj({badge:t}){return o.jsxs("div",{className:"relative mx-auto w-full max-w-[820px] lg:max-w-none",children:[o.jsx("div",{className:"pointer-events-none absolute inset-x-4 bottom-2 top-8 -z-10 rounded-[44px] bg-[#E79878]/26 blur-[52px]","aria-hidden":!0}),o.jsxs("div",{className:"relative overflow-hidden rounded-[24px] border border-[#182137]/10 bg-white/80 p-2 shadow-[0_30px_90px_rgba(24,33,55,0.14)] backdrop-blur-sm md:rounded-[28px] md:p-2.5",children:[o.jsx("video",{autoPlay:!0,loop:!0,muted:!0,playsInline:!0,preload:"metadata",...kv,className:"block aspect-[2292/1080] w-full rounded-[18px] object-cover md:rounded-[21px]",src:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/landing%20page%20videos/Screen%20Recording%20-%20Apr%2026%2C%202026.mp4"}),o.jsxs("span",{className:"absolute start-5 top-5 inline-flex items-center gap-2 rounded-full bg-[#182137] px-3.5 py-1.5 text-[10.5px] font-black tracking-[-0.01em] text-white shadow-[0_10px_26px_rgba(24,33,55,0.3)] md:px-4 md:py-2 md:text-[12px]",children:[o.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full bg-[#F3C94E]","aria-hidden":!0}),t]})]})]})}function vj({copy:t,isRTL:e,user:a}){const i=a?"/billing":"/auth?mode=signup",r=a?t.plansCta:t.plansCtaGuest;return o.jsx("section",{className:"mx-auto max-w-7xl px-4 pb-8 pt-2 md:px-6 md:pb-14 md:pt-4",dir:e?"rtl":"ltr",children:o.jsxs("div",{className:"relative overflow-hidden rounded-[34px] border border-[#182137]/10 bg-[#F7F4EF]/92 px-4 py-12 text-[#182137] shadow-[0_24px_80px_rgba(24,33,55,0.08)] md:px-8 md:py-16 lg:px-12",children:[o.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(circle_1.2px_at_center,rgba(120,95,70,0.14)_1px,transparent_2px)] bg-[length:34px_34px]"}),o.jsx("div",{className:"absolute inset-x-0 top-0 h-2 bg-[linear-gradient(90deg,#91D7BD_0%,#91D7BD_34%,#F3C94E_34%,#F3C94E_67%,#D85D43_67%,#D85D43_100%)]"}),o.jsx("div",{className:"absolute -left-16 top-24 h-40 w-40 rotate-6 rounded-[30px] bg-[#D85D43]/10"}),o.jsx("div",{className:"absolute -right-20 bottom-10 h-48 w-48 -rotate-6 rounded-[30px] bg-[#91D7BD]/16"}),o.jsxs("div",{className:"relative z-10 mx-auto max-w-3xl text-center",children:[o.jsx("div",{className:"mb-5 flex justify-center",children:o.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full border border-[#182137]/10 bg-white/85 px-4 py-2 text-[12px] font-black tracking-[-0.01em] text-[#182137]/78 shadow-[0_10px_28px_rgba(24,33,55,0.06)]",children:[o.jsx(Nf,{className:"h-4 w-4 text-[#D85D43]"}),t.plansEyebrow]})}),o.jsx("h2",{className:"text-[40px] font-black leading-[0.94] tracking-[-0.035em] text-[#182137] md:text-[64px]",children:t.plansTitle}),o.jsx("div",{className:"mx-auto mt-5 h-2 w-20 rounded-full bg-[#91D7BD]"}),o.jsx("p",{className:"mx-auto mt-6 max-w-2xl text-[17px] font-semibold leading-[1.55] tracking-[-0.01em] text-[#182137]/62 md:text-[19px]",children:t.plansSubtitle})]}),o.jsx("div",{className:"relative z-10 mx-auto mt-10 grid max-w-6xl gap-4 md:grid-cols-3 md:gap-5",children:rj.map(n=>{const s=n.name==="Pro",l=t.plansDescriptions[n.name]??n.description,c=(n.price/n.tokens).toFixed(3);return o.jsxs("div",{className:y("relative flex flex-col rounded-[28px] border bg-white/90 p-6 text-start shadow-[0_18px_50px_rgba(24,33,55,0.08)] backdrop-blur-sm md:p-7",s?"border-[#D85D43]/55 pt-9 ring-2 ring-[#D85D43]/20 md:pt-10":"border-[#182137]/10"),children:[s?o.jsx("span",{className:"absolute -top-3 left-1/2 z-20 -translate-x-1/2 rounded-full bg-[#D85D43] px-3 py-1 text-[11px] font-black tracking-[-0.01em] text-white shadow-[0_10px_24px_rgba(216,93,67,0.35)]",children:t.plansPopular}):null,o.jsxs("div",{className:"flex items-start justify-between gap-3",children:[o.jsx("h3",{className:"text-[22px] font-black tracking-[-0.03em] text-[#182137] md:text-[26px]",children:n.name}
535),o.jsx("span",{className:"rounded-full bg-[#182137]/[0.06] px-2.5 py-1 text-[11px] font-black tracking-[-0.01em] text-[#182137]/55",children:t.tokens})]}),o.jsx("p",{className:"mt-3 text-[14px] font-semibold leading-snug tracking-[-0.01em] text-[#182137]/58 md:text-[15px]",children:l}),o.jsxs("div",{className:"mt-6 border-t border-[#182137]/10 pt-5",children:[o.jsxs("div",{className:"flex flex-wrap items-end gap-1.5",children:[o.jsxs("span",{className:"text-[40px] font-black leading-none tracking-[-0.04em] text-[#182137] md:text-[44px]",children:["$",n.price]}),o.jsx("span",{className:"pb-1.5 text-[14px] font-bold tracking-[-0.01em] text-[#182137]/45",children:t.plansPerMonth})]}),o.jsxs("p",{className:"mt-2 text-[15px] font-black tracking-[-0.01em] text-[#182137]/72",children:[n.tokens.toLocaleString()," ",t.tokens,o.jsx("span",{className:"font-semibold text-[#182137]/45",children:" · "}),o.jsxs("span",{className:"text-[13px] font-semibold text-[#182137]/50",children:["$",c," ",t.plansPerToken]})]})]}),o.jsx("ul",{className:"mt-5 grid gap-2",children:t.plansFeatures.map(d=>o.jsxs("li",{className:"flex items-start gap-2 text-[13px] font-semibold tracking-[-0.01em] text-[#182137]/62",children:[o.jsx("span",{className:"mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full bg-[#D85D43]"}),o.jsx("span",{children:d})]},d))}),o.jsx(ee,{asChild:!0,className:y("mt-6 h-12 w-full rounded-full font-heebo text-sm font-black tracking-[-0.01em] text-white shadow-[0_14px_36px_rgba(24,33,55,0.18)]",s?"bg-[#D85D43] hover:bg-[#C94E35]":"bg-[#182137] hover:bg-[#101827]"),children:o.jsxs(Ke,{to:i,className:y("inline-flex items-center justify-center gap-2",e&&"flex-row-reverse"),children:[r,e?o.jsx(eo,{className:"h-4 w-4"}):o.jsx(Ga,{className:"h-4 w-4"})]})})]},n.name)})}),o.jsx("p",{className:"relative z-10 mx-auto mt-8 max-w-2xl text-center text-[13px] font-semibold leading-relaxed tracking-[-0.01em] text-[#182137]/48",children:t.plansFootnote})]})})}function yj({copy:t,isHebrew:e}){return o.jsx("section",{className:"mx-auto max-w-7xl px-4 pb-8 pt-2 md:px-6 md:pb-12 md:pt-3",children:o.jsxs("div",{className:"relative overflow-hidden rounded-[34px] border border-[#182137]/10 bg-white/74 px-4 py-12 text-center text-[#182137] shadow-[0_24px_80px_rgba(24,33,55,0.08)] backdrop-blur-[2px] md:px-8 md:py-16 lg:px-12",children:[o.jsx("div",{className:"absolute inset-0 bg-[radial-gradient(circle_1.2px_at_center,rgba(120,95,70,0.16)_1px,transparent_2px)] bg-[length:34px_34px]"}),o.jsx("div",{className:"absolute inset-x-0 top-0 h-2 bg-[linear-gradient(90deg,#D85D43_0%,#D85D43_33%,#F3C94E_33%,#F3C94E_66%,#91D7BD_66%,#91D7BD_100%)]"}),o.jsx("div",{className:"absolute -right-24 top-20 h-44 w-44 rotate-12 rounded-[34px] bg-[#F3C94E]/24"}),o.jsx("div",{className:"absolute -left-20 bottom-16 h-52 w-52 -rotate-12 rounded-[34px] bg-[#91D7BD]/22"}),o.jsx("div",{className:"absolute left-1/2 top-16 h-40 w-40 -translate-x-1/2 rounded-full bg-[#D85D43]/8 blur-3xl"}),o.jsxs("div",{className:"relative z-10 mx-auto max-w-4xl",children:[o.jsx("div",{className:"mb-6 flex items-center justify-center",children:o.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full border border-[#182137]/10 bg-[#F7F4EF]/86 px-4 py-2 text-[12px] font-black tracking-[-0.01em] text-[#182137]/78 shadow-[0_10px_28px_rgba(24,33,55,0.06)]",children:[o.jsx("span",{className:"h-2.5 w-2.5 rounded-full bg-[#D85D43]"}),t.podcastEyebrow]})}),o.jsx("h2",{className:"mx-auto max-w-4xl text-[44px] font-black leading-[0.94] tracking-[-0.035em] text-[#182137] md:text-[78px]",children:t.podcastTitle}),o.jsx("div",{className:"mx-auto mt-5 h-2 w-24 rounded-full bg-[#F3C94E]"}),o.jsx("p",{className:"mx-auto mt-6 max-w-2xl text-[18px] font-semibold leading-[1.55] tracking-[-0.01em] text-[#182137]/62 md:text-[21px]",children:t.podcastText}),o.jsx("div",{className:"mt-7 flex flex-wrap justify-center gap-2",children:[{label:e?"תהליכי סטודיו":"Studio workflows",icon:gu,color:"#D85D43"},{label:e?"הדרכה פרקטית":"Practical training",icon:zn,color:"#91D7BD"},{label:e?"AI ביום-יום":"Daily AI",icon:xl,color:"#F3C94E"}].map(a=>{const i=a.icon;return o.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full border border-[#182137]/10 bg-white/80 px-4 py-2 text-[13px] font-black tracking-[-0.01em] text-[#182137]/78 shadow-[0_8px_22px_rgba(24,33,55,0.04)]",children:[o.jsx(i,{className:"h-4 w-4",style:{color:a.color}}),a.label]},a.label)})})]}),o.jsx("div",{className:"relative z-10 mx-auto mt-10 max-w-5xl",children:o.jsxs("div",{className:"rounded-[28px] border border-[#182137]/10 bg-[#F7F4EF]/86 p-2.5 shadow-[0_22px_70px_rgba(24,33,55,0.10)] backdrop-blur md:p-4",children:[o.jsxs("div",{className:"mb-3 flex items-center justify-between px-2 md:px-3",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"h-3 w-3 rounded-full bg-[#D85D43]"}),o.jsx("span",{className:"h-3 w-3 rounded-full bg-[#F3C94E]"}),o.jsx("span",{className:"h-3 w-3 rounded-full bg-[#91D7BD]"})]}),o.jsx("span",{className:"text-[11px] font-black tracking-[-0.01em] text-[#182137]/45",children:"Boardspace Podcast"})]}),o.jsx("div",{className:"relative aspect-video overflow-hidden rounded-[22px] border border-[#182137]/10 bg-black shadow-[0_18px_56px_rgba(24,33,55,0.16)]",children:o.jsx("iframe",{src:"https://www.youtube.com/embed/wiLmWu9HHkg?rel=0&modestbranding=1",className:"absolute inset-0 h-full w-full",title:t.podcastTitle,allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen"})})]})})]})})}function xj({title:t,accent:e}){return!e||!t.startsWith(e)?o.jsx(o.Fragment,{children:t}):o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"block text-[#D85D43]",children:e}),o.jsx("span",{className:"block",children:t.slice(e.length).trim()})]})}function wj({copy:t,isRTL:e,onPrimaryCta:a,onSecondaryCta:i}){return o.jsxs("section",{className:"relative mx-auto max-w-[1480px] px-4 pb-10 pt-8 text-center md:px-6 md:pb-14 md:pt-12",children:[o.jsxs("div",{className:"pointer-events-none absolute inset-0 z-0 overflow-hidden","aria-hidden":!0,
535children:[o.jsx("div",{className:"absolute -left-[16%] -top-[28%] h-[560px] w-[680px] rounded-full bg-[#9FD3AE]/25 blur-[130px]"}),o.jsx("div",{className:"absolute -right-[10%] -top-[12%] h-[640px] w-[740px] rounded-full bg-[#F0A88C]/26 blur-[140px]"}),o.jsx("div",{className:"absolute -bottom-[34%] right-[20%] h-[460px] w-[560px] rounded-full bg-[#F7D968]/14 blur-[140px]"})]}),o.jsx("div",{className:"relative z-10",children:o.jsxs("div",{className:"grid items-center gap-10 lg:min-h-[600px] lg:grid-cols-[minmax(0,0.95fr)_minmax(0,1.05fr)] lg:gap-12",children:[o.jsxs("div",{className:"relative z-20 mx-auto flex w-full min-w-0 max-w-[620px] flex-col items-center text-center lg:max-w-none lg:items-start lg:text-start",children:[o.jsxs("span",{className:"inline-flex items-center gap-2 rounded-full border border-[#182137]/10 bg-white/88 px-4 py-2 text-[12px] font-bold tracking-[-0.01em] text-[#182137]/74 shadow-[0_6px_20px_rgba(24,33,55,0.06)] backdrop-blur-sm md:text-[13px]",children:[o.jsx("span",{className:"h-1.5 w-1.5 shrink-0 rounded-full bg-[#D85D43]","aria-hidden":!0}),t.heroBadge]}),o.jsx("h1",{className:"mt-6 font-heebo text-[46px] font-black leading-[0.94] text-[#182137] md:mt-7 md:text-[68px] lg:text-[76px]",style:{fontWeight:900,letterSpacing:e?"-0.035em":"-0.02em",textShadow:"0 1px 0 rgba(24,33,55,0.04)"},children:o.jsx(xj,{title:t.canvasTitle,accent:t.canvasTitleAccent})}),o.jsx("p",{className:"mt-6 max-w-[520px] text-[18px] font-semibold leading-[1.6] tracking-[-0.012em] text-[#182137]/56 md:text-[21px]",children:t.canvasText}),o.jsxs("div",{className:"mt-9 flex w-full flex-col gap-3 sm:w-auto sm:flex-row sm:items-center sm:gap-4",children:[o.jsx("button",{type:"button",onClick:a,className:"flex min-h-[3.4rem] items-center justify-center rounded-2xl bg-gradient-to-br from-[#EC7357] via-[#D84B2E] to-[#B33D24] px-8 text-[17px] font-black leading-snug tracking-[-0.015em] text-white shadow-[0_18px_40px_rgba(216,75,46,0.28)] transition-all hover:-translate-y-0.5 hover:shadow-[0_22px_50px_rgba(216,75,46,0.36)] active:scale-[0.98] md:min-h-[3.9rem] md:px-10 md:text-[19px]",children:t.primaryCta}),o.jsx("button",{type:"button",onClick:i,className:"flex min-h-[3.4rem] items-center justify-center rounded-2xl border border-[#182137]/14 bg-white px-8 text-[17px] font-black leading-snug tracking-[-0.015em] text-[#182137] shadow-[0_10px_28px_rgba(24,33,55,0.07)] transition-all hover:-translate-y-0.5 hover:shadow-[0_14px_34px_rgba(24,33,55,0.1)] active:scale-[0.98] md:min-h-[3.9rem] md:px-10 md:text-[19px]",children:t.proCta})]}),o.jsx("p",{className:"mt-3.5 text-[13px] font-bold leading-snug tracking-[-0.01em] text-[#182137]/48 md:text-[13.5px]",children:t.noCreditCard}),o.jsx("div",{className:"mt-10 w-full border-t border-[#182137]/12 pt-6 md:mt-12 md:pt-7",children:o.jsx("div",{className:"flex items-stretch",children:t.heroHighlights.map((r,n)=>o.jsxs(m.Fragment,{children:[n>0&&o.jsx("span",{className:"w-px shrink-0 self-stretch bg-[#182137]/12","aria-hidden":!0}),o.jsxs("div",{className:"flex flex-1 flex-col items-center gap-1.5 px-2",children:[o.jsx("span",{dir:"ltr",className:"text-[28px] font-black leading-none tracking-[-0.03em] text-[#182137] md:text-[34px]",children:r.value}),o.jsx("span",{className:"text-balance text-center text-[11.5px] font-bold leading-snug tracking-[-0.01em] text-[#182137]/46 md:text-[13px]",children:r.label})]})]},r.label))})})]}),o.jsxs("div",{className:"relative z-10 mx-auto flex w-full min-w-0 max-w-[860px] flex-col items-center lg:max-w-none",children:[o.jsx(bj,{badge:t.heroVideoBadge}),o.jsx(fj,{label:t.heroEnginesLabel,className:"relative z-10 mt-5 md:mt-6"})]})]})})]})}function kj({card:t,index:e,onClick:a}){const i=t.icon,r=t.accent==="coral"?"bg-[#DE735E] text-white border-[#DE735E] shadow-[0_16px_36px_rgba(222,115,94,0.28)]":"bg-white text-[#182137] border-[#182137]/10 shadow-[0_8px_28px_rgba(24,33,55,0.06)]",n=t.accent==="mint"?"bg-[#91D7BD]":t.accent==="yellow"?"bg-[#F3C94E]":t.accent==="lavender"?"bg-[#B6A0EA]":"bg-white/70",s=t.accent==="coral"?"text-white":"text-[#182137]",l=t.accent==="coral"?"bg-white/18 text-white":"bg-[#182137]/8 text-[#182137]/55";return o.jsxs("button",{type:"button",onClick:a,className:y("group relative flex min-h-[340px] flex-col justify-between overflow-hidden rounded-[22px] border p-6 text-start transition-all duration-300 hover:-translate-y-1",r),children:[o.jsxs("div",{className:"flex items-start justify-between gap-4",children:[o.jsxs("div",{className:"flex flex-col items-start gap-4",children:[o.jsx("span",{className:y("h-3 w-3 rounded-full",n)}
535),o.jsx("span",{className:y("rounded-md px-2 py-1 text-[11px] font-bold tracking-[-0.01em]",l),children:t.tag})]}),o.jsxs("div",{className:"flex h-24 shrink-0 items-start gap-2",children:[o.jsx("span",{className:y("text-[76px] font-black leading-none opacity-95",s),children:String(e).padStart(2,"0")}),o.jsx("span",{className:"mt-2 flex h-16 w-16 shrink-0 items-center justify-center",children:o.jsx(_j,{accent:t.accent})})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-[30px] font-black leading-[1.02] tracking-[-0.025em]",children:t.title}),o.jsx("p",{className:y("mt-3 text-[16px] font-semibold leading-[1.55] tracking-[-0.01em]",t.accent==="coral"?"text-white/80":"text-[#182137]/54"),children:t.subtitle})]}),o.jsxs("div",{className:y("mt-7 flex items-center justify-between rounded-xl px-4 py-3 text-sm font-black tracking-[-0.01em]",t.accent==="coral"?"bg-white text-[#B44732]":"bg-[#182137] text-white"),children:[o.jsx("span",{children:t.cta}),o.jsx(i,{className:"h-4 w-4"})]})]})}function _j({accent:t}){return t==="mint"?o.jsx(Nf,{className:"h-14 w-14 text-[#91D7BD]",strokeWidth:1.5}):t==="yellow"?o.jsx("span",{className:"grid h-16 w-16 place-items-center rounded-full bg-[#F3C94E]",children:o.jsx("span",{className:"h-4 w-4 rounded-full bg-[#182137]"})}):t==="lavender"?o.jsx("span",{className:"grid h-16 w-16 grid-cols-3 gap-1 rounded-full bg-[#B6A0EA] p-4",children:Array.from({length:9}).map((e,a)=>o.jsx("span",{className:"rounded-full bg-white/86"},a))}):o.jsx(dn,{className:"h-14 w-14 text-white/86",strokeWidth:1.5})}function Sj({name:t,description:e,tokenCost:a,badge:i,tokensLabel:r,startLabel:n,preview:s,isRTL:l,onClick:c}){return o.jsxs("button",{type:"button",onClick:c,dir:l?"rtl":"ltr",className:y("group w-[280px] shrink-0 snap-start overflow-hidden rounded-[22px] border border-[#182137]/10 bg-white shadow-[0_8px_28px_rgba(24,33,55,0.07)] transition-all hover:-translate-y-1 hover:border-[#182137]/22 hover:shadow-[0_16px_42px_rgba(24,33,55,0.12)] md:w-[330px]",l?"text-right":"text-left"),children:[o.jsxs("div",{className:"relative aspect-video overflow-hidden bg-[#E8E3DB]",children:[s?s.type==="video"?o.jsx("video",{src:s.url,poster:s.poster,muted:!0,loop:!0,autoPlay:!0,playsInline:!0,preload:"metadata",...kv,className:"h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"}):o.jsx("img",{src:s.url,alt:"",loading:"lazy",className:"h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"}):o.jsx("div",{className:"grid h-full place-items-center text-xs font-bold text-[#182137]/35",children:"Boardspace"}),o.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-black/74 via-black/12 to-transparent"}),i&&o.jsx("div",{className:"absolute start-4 end-4 top-4 flex justify-end",dir:l?"rtl":"ltr",children:o.jsx("span",{className:"rounded-full bg-[#DE735E] px-3 py-1 text-[11px] font-bold tracking-[-0.01em] text-white",children:i})}),o.jsx("span",{className:"absolute bottom-4 end-4 grid h-12 w-12 place-items-center rounded-full bg-white text-[#182137] shadow-[0_12px_30px_rgba(0,0,0,0.22)]",children:o.jsx(Bn,{className:"h-5 w-5 fill-current"})})]}),o.jsxs("div",{className:"p-5",children:[o.jsx("h3",{className:"truncate text-[21px] font-black tracking-[-0.02em]",children:t}),o.jsx("p",{className:"mt-2 line-clamp-2 min-h-[3em] text-[15px] font-semibold leading-snug tracking-[-0.01em] text-[#182137]/56",children:e}),o.jsx("div",{className:"mt-5 flex w-full items-center justify-between gap-4",children:l?o.jsxs(o.Fragment,{children:[o.jsxs("span",{className:"text-sm font-black tracking-[-0.01em] text-[#D85D43]",children:[n,o.jsx("span",{className:"pe-1","aria-hidden":!0,children:"←"})]}),o.jsxs("span",{className:"rounded-lg bg-[#182137]/[0.07] px-3 py-1.5 text-[11px] font-bold tracking-[-0.01em] text-[#182137]/72",children:[a," ",r]})]}):o.jsxs(o.Fragment,{children:[o.jsxs("span",{className:"rounded-lg bg-[#182137]/[0.07] px-3 py-1.5 text-[11px] font-bold tracking-[-0.01em] text-[#182137]/72",children:[a," ",r]}),o.jsxs("span",{className:"text-sm font-black tracking-[-0.01em] text-[#D85D43]",children:[n,o.jsx("span",{className:"ps-1","aria-hidden":!0,
535children:"→"})]})]})})]})]})}const Ku=mu,yW=af,Cj=uu,Av=m.forwardRef(({className:t,...e},a)=>o.jsx(Rn,{className:y("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e,ref:a}));Av.displayName=Rn.displayName;const Tj=Mn("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4  border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),Il=m.forwardRef(({side:t="right",className:e,children:a,...i},r)=>o.jsxs(Cj,{children:[o.jsx(Av,{}),o.jsxs(lo,{ref:r,className:y(Tj({side:t}),e),...i,children:[a,o.jsxs(bl,{className:"absolute right-4 top-4 rtl:right-auto rtl:left-4 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-secondary hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",children:[o.jsx(Et,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Il.displayName=lo.displayName;const Yu=({className:t,...e})=>o.jsx("div",{className:y("flex flex-col space-y-2 text-center sm:text-left",t),...e});Yu.displayName="SheetHeader";const jj=m.forwardRef(({className:t,...e},a)=>o.jsx(gr,{ref:a,className:y("text-lg font-semibold text-foreground",t),...e}));jj.displayName=gr.displayName;const Nj=m.forwardRef(({className:t,...e},a)=>o.jsx(fr,{ref:a,className:y("text-sm text-muted-foreground",t),...e}));Nj.displayName=fr.displayName;var Dl="Popover",[Ev]=so(Dl,[hr]),qn=hr(),[Pj,Ti]=Ev(Dl),Iv=t=>{const{__scopePopover:e,children:a,open:i,defaultOpen:r,onOpenChange:n,modal:s=!1}=t,l=qn(e),c=m.useRef(null),[d,u]=m.useState(!1),[p,f]=tr({prop:i,defaultProp:r??!1,onChange:n,caller:Dl});return o.jsx(cu,{...l,children:o.jsx(Pj,{scope:e,contentId:Dn(),triggerRef:c,open:p,onOpenChange:f,onOpenToggle:m.useCallback(()=>f(h=>!h),[f]),hasCustomAnchor:d,onCustomAnchorAdd:m.useCallback(()=>u(!0),[]),onCustomAnchorRemove:m.useCallback(()=>u(!1),[]),modal:s,children:a})})};Iv.displayName=Dl;var Dv="PopoverAnchor",Aj=m.forwardRef((t,e)=>{const{__scopePopover:a,...i}=t,r=Ti(Dv,a),n=qn(a),{onCustomAnchorAdd:s,onCustomAnchorRemove:l}=r;return m.useEffect(()=>(s(),()=>l()),[s,l]),o.jsx(gl,{...n,...i,ref:e})});Aj.displayName=Dv;var Rv="PopoverTrigger",Lv=m.forwardRef((t,e)=>{const{__scopePopover:a,...i}=t,r=Ti(Rv,a),n=qn(a),s=mt(e,r.triggerRef),l=o.jsx(Xe.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":Fv(r.open),...i,ref:s,onClick:Le(t.onClick,r.onOpenToggle)});return r.hasCustomAnchor?l:o.jsx(gl,{asChild:!0,...n,children:l})});Lv.displayName=Rv;var Qu="PopoverPortal",[Ej,Ij]=Ev(Qu,{forceMount:void 0}),Ov=t=>{const{__scopePopover:e,forceMount:a,children:i,container:r}=t,n=Ti(Qu,e);return o.jsx(Ej,{scope:e,forceMount:a,children:o.jsx(In,{present:a||n.open,children:o.jsx(nu,{asChild:!0,container:r,children:i})})})};Ov.displayName=Qu;var sr="PopoverContent",Mv=m.forwardRef((t,e)=>{const a=Ij(sr,t.__scopePopover),{forceMount:i=a.forceMount,...r}=t,n=Ti(sr,t.__scopePopover);return o.jsx(In,{present:i||n.open,children:n.modal?o.jsx(Rj,{...r,ref:e}):o.jsx(Lj,{...r,ref:e})})});Mv.displayName=sr;var Dj=nf("PopoverContent.RemoveScroll"),Rj=m.forwardRef((t,e)=>{const a=Ti(sr,t.__scopePopover),i=m.useRef(null),r=mt(e,i),n=m.useRef(!1);return m.useEffect(()=>{const s=i.current;if(s)return of(s)},[]),o.jsx(rf,{as:Dj,allowPinchZoom:!0,children:o.jsx(zv,{...t,ref:r,trapFocus:a.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Le(t.onCloseAutoFocus,s=>{var l;s.preventDefault(),n.current||(l=a.triggerRef.current)==null||l.focus()}),onPointerDownOutside:Le(t.onPointerDownOutside,s=>{const l=s.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0,d=l.button===2||c;n.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:Le(t.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1})})})}),Lj=m.forwardRef((t,e)=>{const a=Ti(sr,t.__scopePopover),i=m.useRef(!1),r=m.useRef(!1);return o.jsx(zv,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:n=>{var s,l;(s=t.onCloseAutoFocus)==null||s.call(t,n),n.defaultPrevented||(i.current||(l=a.triggerRef.current)==null||l.focus(),n.preventDefault()),i.current=!1,r.current=!1},onInteractOutside:n=>{var c,d;(c=t.onInteractOutside)==null||c.call(t,n),n.defaultPrevented||(i.current=!0,n.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const s=n.target;((d=a.triggerRef.current)==null?void 0:d.contains(s))&&n.preventDefault(),n.detail.originalEvent.type==="focusin"&&r.current&&n.preventDefault()}})}),zv=m.forwardRef((t,e)=>{const{__scopePopover:a,trapFocus:i,onOpenAutoFocus:r,onCloseAutoFocus:n,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:u,...p}=t,f=Ti(sr,a),h=qn(a);return sf(),o.jsx(lf,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:r,onUnmountAutoFocus:n,children:o.jsx(su,{asChild:!0,disableOutsidePointerEvents:s,onInteractOutside:u,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onDismiss:()=>f.onOpenChange(!1),children:o.jsx(lu,{"data-state":Fv(f.open),role:"dialog",id:f.contentId,...h,...p,ref:e,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),Bv="PopoverClose",Oj=m.forwardRef((t,e)=>{const{__scopePopover:a,...i}=t,r=Ti(Bv,a);return o.jsx(Xe.button,{type:"button",...i,ref:e,onClick:Le(t.onClick,()=>r.onOpenChange(!1))})});Oj.displayName=Bv;var Mj="PopoverArrow",zj=m.forwardRef((t,e)=>{const{__scopePopover:a,...i}=t,r=qn(a);return o.jsx(du,{...r,...i,ref:e})});zj.displayName=Mj;function Fv(t){return t?"open":"closed"}var Bj=Iv,Fj=Lv,$j=Ov,$v=Mv;const Vj=Bj,Uj=Fj,Vv=m.forwardRef(({className:t,align:e="center",sideOffset:a=4,...i},r)=>o.jsx($j,{children:o.jsx($v,{ref:r,align:e,sideOffset:a,className:y("z-[210] w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:sli
535de-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...i})}));Vv.displayName=$v.displayName;const qj=["Create a StyleMatch presentation with 6-8 rooms matching this style","Extract the DesignDNA and curate furniture that matches this aesthetic","Generate 6 kitchen variations inspired by Milan 2025 trends","Transform this sketch into a photorealistic interior design","Create a cinematic 10-second video of this space with sound","Combine these 5 furniture pieces into one cohesive scene","Convert this design into a 3D model for visualization","Remove the background and place this furniture in a new space","Add travertine floors and copper accents to this living room","Create a viral social media presentation from this design","Generate a video showing subtle camera movement through this room","Match this style across bedroom, kitchen, and living room","Extract color swatches and find matching decor pieces","Transform this 2D design into an immersive 3D experience","Create a professional moodboard with curated furniture selections"],Gj=["צור מצגת StyleMatch עם 6-8 חדרים התואמים לסגנון הזה","חלץ את ה-DesignDNA ובחר ריהוט התואם לאסתטיקה הזו","צור 6 וריאציות מטבח בהשראת טרנדים ממילאנו 2025","הפוך את הסקיצה הזו לעיצוב פנים פוטוריאליסטי","צור וידאו קולנועי של 10 שניות של החלל הזה עם סאונד","שלב את 5 פריטי הריהוט האלה לסצנה אחת מגובשת","המר את העיצוב הזה למודל תלת-ממדי להדמיה","הסר את הרקע והנח את הריהוט הזה בחלל חדש","הוסף ריצוף טרוורטין ופרטי נחושת לסלון הזה","צור מצגת מדיה חברתית ויראלית מהעיצוב הזה","צור וידאו המציג תנועת מצלמה עדינה דרך החדר הזה","התאם את הסגנון הזה בחדר שינה, מטבח וסלון","חלץ דוגמיות צבע ומצא פריטי עיצוב תואמים","הפוך את העיצוב הדו-ממדי הזה לחוויה תלת-ממדית","צור לוח מצב רוח מקצועי עם בחירות ריהוט נבחרות"];function Wj({className:t}={}){const{i18n:e}=$e(),[a,i]=m.useState(""),[r,n]=m.useState(0),[s,l]=m.useState(!0),c=e.language==="he"?Gj:qj;m.useEffect(()=>{i(""),n(0),l(!0)},[e.language]),m.useEffect(()=>{let f;if(s){const h=c[r];a.length<h.length?f=setTimeout(()=>{i(h.slice(0,a.length+1))},30):f=setTimeout(()=>{l(!1)},3e3)}else f=setTimeout(()=>{i(""),n(h=>(h+1)%c.length),l(!0)},3e3/2);return()=>clearTimeout(f)},[a,r,s,c]);const d=e.language==="he";return o.jsx("div",{className:`text-sm md:text-base text-muted-foreground dark:text-white ${d?"text-right font-heebo":"text-left"} ${t||""}`,dir:d?"rtl":"ltr",children:a})}var Uv=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","#","$","%","*","+",",","-",".",":",";","=","?","@","[","]","^","_","{","|","}","~"],Vr=t=>{let e=0;for(let a=0;a<t.length;a++){let i=t[a],r=Uv.indexOf(i);e=e*83+r}return e},Lr=(t,e)=>{var a="";for(let i=1;i<=e;i++){let r=Math.floor(t)/Math.pow(83,e-i)%83;a+=Uv[Math.floor(r)]}return a},Lo=t=>{let e=t/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},Oo=t=>{let e=Math.max(0,Math.min(1,t));return e<=.0031308?Math.trunc(e*12.92*255+.5):Math.trunc((1.055*Math.pow(e,.4166666666666667)-.055)*255+.5)},Hj=t=>t<0?-1:1,Mo=(t,e)=>Hj(t)*Math.pow(Math.abs(t),e),rl=class extends Error{constructor(e){super(e),this.name="ValidationError",this.message=e}},Kj=t=>{if(!t||t.length<6)throw new rl("The blurhash string must be at least 6 characters");let e=Vr(t[0]),a=Math.floor(e/9)+1,i=e%9+1;if(t.length!==4+2*i*a)throw new rl(`blurhash length mismatch: length is ${t.length} but it should be ${4+2*i*a}`)},Yj=t=>{let e=t>>16,a=t>>8&255,i=t&255;return[Lo(e),Lo(a),Lo(i)]},Qj=(t,e)=>{let a=Math.floor(t/361),i=Math.floor(t/19)%19,r=t%19;return[Mo((a-9)/9,2)*e,Mo((i-9)/9,2)*e,Mo((r-9)/9,2)*e]},Jj=(t,e,a,i)=>{Kj(t),i=i|1;let r=Vr(t[0]),n=Math.floor(r/9)+1,s=r%9+1,l=(Vr(t[1])+1)/166,c=new Array(s*n);for(let p=0;p<c.length;p++)if(p===0){let f=Vr(t.substring(2,6));c[p]=Yj(f)}else{let f=Vr(t.substring(4+p*2,6+p*2));c[p]=Qj(f,l*i)}let d=e*4,u=new Uint8ClampedArray(d*a);for(let p=0;p<a;p++)for(let f=0;f<e;f++){let h=0,v=0,g=0;for(let k=0;k<n;k++)for(let _=0;_<s;_++){let j=Math.cos(Math.PI*f*_/e)*Math.cos(Math.PI*p*k/a),S=c[_+k*s];h+=S[0]*j,v+=S[1]*j,g+=S[2]*j}let b=Oo(h),x=Oo(v),w=Oo(g);u[4*f+0+p*d]=b,u[4*f+1+p*d]=x,u[4*f+2+p*d]=w,u[4*f+3+p*d]=255}return u},Xj=Jj,ih=4,Zj=(t,e,a,i)=>{let r=0,n=0,s=0,l=e*ih;for(let d=0;d<e;d++){let u=ih*d;for(let p=0;p<a;p++){let f=u+p*l,h=i(d,p);r+=h*Lo(t[f]),n+=h*Lo(t[f+1]),s+=h*Lo(t[f+2])}}let c=1/(e*a);return[r*c,n*c,s*c]},eN=t=>{let e=Oo(t[0]),a=Oo(t[1]),i=Oo(t[2]);return(e<<16)+(a<<8)+i},tN=(t,e)=>{let a=Math.floor(Math.max(0,Math.min(18,Math.floor(Mo(t[0]/e,.5)*9+9.5)))),i=Math.floor(Math.max(0,Math.min(18,Math.floor(Mo(t[1]/e,.5)*9+9.5)))),r=Math.floor(Math.max(0,Math.min(18,Math.floor(Mo(t[2]/e,.5)*9+9.5))));return a*19*19+i*19+r},aN=(t,e,a,i,r)=>{if(i<1||i>9||r<1||r>9)throw new rl("BlurHash must have between 1 and 9 components");if(e*a*4!==t.length)throw new rl("Width and height must match the pixels array");let n=[];for(let p=0;p<r;p++)for(let f=0;f<i;f++){let h=f==0&&p==0?1:2,v=Zj(t,e,a,(g,b)=>h*Math.cos(Math.PI*f*g/e)*Math.cos(Math.PI*p*b/a));n.push(v)}let s=n[0],l=n.slice(1),c="",d=i-1+(r-1)*9;c+=Lr(d,1);let u;if(l.length>0){let p=Math.max(...l.map(h=>Math.max(...h))),f=Math.floor(Math.max(0,Math.min(82,Math.floor(p*166-.5))));u=(f+1)/166,c+=Lr(f,1)}else u=1,c+=Lr(0,1);return c+=Lr(eN(s),4),l.forEach(p=>{c+=Lr(tN(p,u),2)}),c},iN=aN;async function wW(t){return new Promise((e,a)=>{const i=document.createElement("canvas"),r=i.getContext("2d");if(!r){a(new Error("Canvas context not available"));return}const n=new Image;n.onload=()=>
535{try{i.width=32,i.height=32,r.drawImage(n,0,0,32,32);const s=r.getImageData(0,0,32,32),l=iN(s.data,s.width,s.height,4,4);e(l)}catch(s){a(s)}finally{typeof t!="string"&&n.src.startsWith("blob:")&&URL.revokeObjectURL(n.src)}},n.onerror=()=>{a(new Error("Failed to load image")),typeof t!="string"&&n.src.startsWith("blob:")&&URL.revokeObjectURL(n.src)},typeof t=="string"?(n.crossOrigin="anonymous",n.src=t):n.src=URL.createObjectURL(t)})}function oN(t,e=32,a=32){const i=document.createElement("canvas"),r=i.getContext("2d");if(!r)throw new Error("Canvas context not available");i.width=e,i.height=a;try{const n=Xj(t,e,a),s=new ImageData(new Uint8ClampedArray(n),e,a);r.putImageData(s,0,0)}catch(n){console.error("Failed to decode BlurHash:",n),r.fillStyle="#e5e7eb",r.fillRect(0,0,e,a)}return i}function rN(t,e=32,a=32){return oN(t,e,a).toDataURL("image/jpeg",.8)}class nN{constructor(){ft(this,"cache",new Map)}isLoaded(e){return this.cache.get(e)||!1}setLoaded(e){this.cache.set(e,!0)}clear(){this.cache.clear()}size(){return this.cache.size}remove(e){this.cache.delete(e)}}const wo=new nN,sN={provider:"cloudflare",baseUrl:"https://boardspace.ai"};function Ju(t,e=Gv.thumbnail){const a=sN;switch(a.provider){case"cloudflare":return dN(t,e,a);case"custom":return t;default:return t}}function qv(t){return t.includes("pinimg.com")||t.includes("pinterest.com")}function lN(t){return t.toLowerCase().endsWith(".avif")}function cN(t){return!t||typeof t!="string"?"/placeholder.svg":qv(t)?`https://kibuqatinwtuqlzmryvx.supabase.co/functions/v1/proxy-image?url=${encodeURIComponent(t)}`:t}function dN(t,e,a){try{const{width:i,height:r,quality:n=85,format:s="webp",fit:l="scale-down"}=e;if(!t||typeof t!="string")return"/placeholder.svg";if(t.includes("/cdn-cgi/image/")||lN(t))return t;if(qv(t))return cN(t);if(!t.includes("supabase.co"))return t;try{new URL(t)}catch{return"/placeholder.svg"}const c=[];i&&c.push(`w=${i}`),r&&c.push(`h=${r}`),c.push(`q=${n}`),c.push(`f=${s}`),c.push(`fit=${l}`);const d=c.join(",");return`${a.baseUrl||"https://boardspace.ai"}/cdn-cgi/image/${d}/${t}`}catch(i){return console.warn("Failed to create Cloudflare transform URL:",i),t}}const Gv={thumbnail:{width:200,quality:75,format:"webp",fit:"scale-down"},dashboard:{width:400,quality:80,format:"webp",fit:"scale-down"},canvas:{width:360,quality:85,format:"webp",fit:"scale-down"},gallery:{width:600,quality:80,format:"webp",fit:"scale-down"},hero:{width:800,quality:85,format:"webp",fit:"scale-down"}};function kW(t,e){return Ju(t,Gv[e])}const za=U.memo(({src:t,alt:e,className:a="",blurhash:i,wrapperClassName:r="relative w-full h-full",optimizeImage:n=!1,...s})=>{const[l,c]=m.useState(()=>wo.isLoaded(t)),[d,u]=m.useState(!1),[p,f]=m.useState(null),[h,v]=m.useState(null),[g,b]=m.useState(!1),x=m.useRef(null),w=m.useRef(null),k=n?Ju(t,{width:600,quality:80,format:"webp",fit:"scale-down"}):t;m.useEffect(()=>{if(i)try{const j=rN(i,200,200);f(j)}catch(j){console.error("Failed to generate BlurHash data URL:",j),f(null)}else f(null),v(null)},[i]),m.useEffect(()=>{if(wo.isLoaded(k)){u(!0);return}const j=N=>{if(!N)return null;const P=getComputedStyle(N);return P.overflow==="auto"||P.overflow==="scroll"||P.overflowY==="auto"||P.overflowY==="scroll"?N:j(N.parentElement)},S=x.current?j(x.current.parentElement):null,C=new IntersectionObserver(([N])=>{N.isIntersecting&&(u(!0),C.disconnect())},{threshold:.1,rootMargin:"200px",root:S});return x.current&&C.observe(x.current),()=>C.disconnect()},[k]),m.useEffect(()=>{if(d&&i&&!h&&!wo.isLoaded(k)){const j=new Image;j.onload=()=>{const S=_(j);v(S),wo.setLoaded(k)},j.onerror=()=>{b(!0)},k!==t&&(j.crossOrigin="anonymous"),j.src=k}},[d,i,k,h,t]);const _=j=>{const S=x.current;if(!S||!j.naturalWidth||!j.naturalHeight)return null;const C=S.getBoundingClientRect(),N=C.width,P=C.height,E=j.naturalWidth/j.naturalHeight,L=N/P;let A,I;E>L?(A=N,I=N/E):(I=P,A=P*E);const R=A*.75,B=I*.75,z=(N-R)/2,Z=(P-B)/2;return{width:R,height:B,top:Z,left:z}};return o.jsxs("div",{ref:x,className:r,children:[p&&h&&o.jsx("div",{className:`absolute transition-opacity duration-500 ${l?"opacity-0":"opacity-100"}`,style:{backgroundImage:`url(${p})`,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",filter:"blur(2px) brightness(1.1)",width:h.width,height:h.height,top:h.top,left
535:h.left}}),p&&!h&&o.jsx("div",{className:`absolute inset-0 transition-opacity duration-500 ${l?"opacity-0":"opacity-100"}`,style:{backgroundImage:`url(${p})`,backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",filter:"blur(2px) brightness(1.1)"}}),!p&&!d&&o.jsx("div",{className:"w-full h-full bg-gray-200 animate-pulse rounded"}),d&&!g&&o.jsx("img",{ref:w,src:k,alt:e,className:`${a} transition-opacity duration-500 ${l?"opacity-100":"opacity-0"}`,crossOrigin:k!==t?"anonymous":void 0,onLoad:j=>{const S=j.target,C=_(S);v(C),c(!0),wo.setLoaded(k)},onError:()=>{if(n&&k!==t)b(!0),c(!1),v(null);else{const j=w.current;j&&(j.src="/placeholder.svg",c(!0))}},...s}),d&&g&&n&&t!==k&&o.jsx("img",{src:t,alt:e,className:`${a} transition-opacity duration-500 ${l?"opacity-100":"opacity-0"}`,onLoad:()=>{c(!0),wo.setLoaded(t)},onError:j=>{const S=j.target;S.src="/placeholder.svg",c(!0)},...s})]})});za.displayName="LazyImage";const fs=["https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/inspiration-images/8cd433c2-5d0e-4675-a902-4fbb41ebfd67/d3d3ad26-566d-4332-8494-8f7779ed84de.png","https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/inspiration-images/8cd433c2-5d0e-4675-a902-4fbb41ebfd67/d2bb4081-65a2-44e8-afe2-9a47b724374b.jpg","https://gtohwbsaiszmxzwhqrzl.supabase.co/storage/v1/object/public/inspiration-images/0f3df85b-c858-4567-a873-ae1ae05125f6.png","https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/inspiration-images/8cd433c2-5d0e-4675-a902-4fbb41ebfd67/d0aa0532-3090-461c-a0c7-62ffb327ef2d.png","https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/inspiration-images/bc03b2d2-3675-461c-a3a4-1bf1f7cd189a/c1decf01-1d48-4de8-8425-d2654c326b62.png","https://gtohwbsaiszmxzwhqrzl.supabase.co/storage/v1/object/public/inspiration-images/1dc36ae0-9a7e-4247-ac3c-2ba95820f4b1.png"],oh=[{user:"Sarah M.",remixes:12,likes:234},{user:"Marcus L.",remixes:8,likes:189},{user:"Elena K.",remixes:15,likes:312},{user:"David R.",remixes:6,likes:145},{user:"Alex T.",remixes:9,likes:201},{user:"Maya P.",remixes:11,likes:267}],uN=[fs[0],fs[1],fs[2],fs[3],"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/inspiration-images/8cd433c2-5d0e-4675-a902-4fbb41ebfd67/af3c8863-4996-4fef-80fe-2f2cac8a0349.jpg"],mN=()=>{var fe;const{t,i18n:e}=$e(["landing","common"]),a=Vt(),{user:i}=Pt(),r=typeof window<"u"?_i():null,n=e.language==="he"||((fe=e.language)==null?void 0:fe.startsWith("he-"))||r==="he"||typeof document<"u"&&document.documentElement.dir==="rtl",[s,l]=m.useState(!1),[c,d]=m.useState(""),[u,p]=m.useState([]),[f,h]=m.useState(null),[v,g]=m.useState(!1),[b,x]=m.useState(null),[w,k]=m.useState(null),_=m.useRef(null),{theme:j,setTheme:S}=wi(),C=[{to:"#materials",label:t("common:nav.materials"),description:t("common:nav.materialsDesc"),icon:on},{to:"#pricing",label:t("common:nav.pricing"),description:t("common:nav.pricingDesc"),icon:_f},{to:"#ai-agent",label:t("common:nav.aiAgent"),description:t("common:nav.aiAgentDesc"),icon:oi},{to:"#features",label:t("common:nav.features"),description:t("common:nav.featuresDesc"),icon:yl}],N=O=>{if(l(!1),O.startsWith("#")){const Q=document.querySelector(O);Q&&Q.scrollIntoView({behavior:"smooth"})}},P=async O=>{if(O.preventDefault(),!i){a("/auth?mode=signup");return}a("/dashboard")},E=()=>{h("stylematch"),d("Create a StyleMatch presentation")},L=()=>{h("designdna"),d("Create a DesignDNA presentation")},A=()=>{h("kitchenboard"),d("Create a KitchenBoard presentation")},I=()=>{var O;(O=_.current)==null||O.click()},R=25,B=R*1024*1024,z=O=>{let Q=Array.from(O.target.files||[]);const Y=4,K=Q.filter(J=>J.size>B);if(K.length>0){const J=K.map(ve=>`${ve.name} (${(ve.size/1048576).toFixed(1)}MB)`).join(", "),oe=e.language==="he";if(le.error(oe?`📁 קבצים גדולים מדי: ${J}. הגודל המקסימלי הוא ${R}MB. נא לדחוס את התמונות.`:`📁 Files too large: ${J}. Maximum size is ${R}MB. Please compress your images.`,{duration:6e3}),Q=Q.filter(ve=>ve.size<=B),Q.length===0){O.target.value="";return}}p(J=>{var je;const oe=Math.max(0,Y-J.length),ve=Q.slice(0,oe).map((W,ue)=>({id:`${Date.now()}-${ue}`,kind:W.type.startsWith("video")?"video":"image",url:URL.createObjectURL(W),title:W.name}));if(ve.length>0){const ue=[...J,...ve].slice(0,Y);if(!c.trim()&&ue.length>0){const ke=((je=ue[0].title)==null?void 0:je.split(".")[0])||"";!(ke.length>40||/^[a-f0-9_]+$/i.test(ke))&&ke.length>0&&d(ke)}return ue}return J}),O.target.value=""},Z=O=>{p(Q=>{const Y=Q.find(K=>K.id===O);return Y&&Y.url.startsWith("blob:")&&URL.revokeObjectURL(Y.url),Q.filter(K=>K.id!==O)})};return m.useEffect(()=>{(async()=>{const Q=localStorage.getItem("landing_page_video_url");Q&&k(Q);try{const{data:Y,error:K}
535=await V.from("landing_page_settings").select("setting_value").eq("setting_key","hero_video_url").maybeSingle();if(K){K.code!=="PGRST116"&&console.error("Error fetching landing page video:",K);return}Y&&Y.setting_value?(k(Y.setting_value),localStorage.setItem("landing_page_video_url",Y.setting_value)):Q||k(null)}catch(Y){console.error("Error fetching landing page video:",Y)}})()},[]),o.jsxs("section",{className:"relative min-h-screen flex flex-col bg-transparent overflow-visible",children:[o.jsxs("header",{className:"relative z-20 w-full px-4 py-4 flex items-center justify-between bg-transparent",children:[o.jsxs("div",{className:"flex items-center gap-5",children:[o.jsx(ee,{variant:"ghost",size:"icon",onClick:()=>l(!0),className:"hidden md:flex rounded-full bg-transparent hover:bg-white/10 transition-colors group",children:o.jsx(Us,{className:"h-6 w-6 text-gray-700 dark:text-white transition-colors group-hover:text-[#E60023]"})}),o.jsx(Ke,{to:i?"/dashboard":"/",className:"hidden md:flex items-center md:mt-[18px]",children:o.jsx("img",{src:j==="dark"?Ha:vi,alt:"BoardSpace",className:"h-12 md:h-[72px] w-auto"})})]}),o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx(ee,{variant:"ghost",size:"icon",onClick:()=>l(!0),className:"md:hidden rounded-full bg-transparent hover:bg-white/10 transition-colors group",children:o.jsx(Us,{className:"h-6 w-6 text-gray-700 dark:text-white transition-colors group-hover:text-[#E60023]"})}),o.jsx("div",{className:"hidden md:flex items-center",children:!i&&o.jsx(ee,{className:"bg-gradient-to-r from-[#E60023] to-[#BD081C] text-white shadow-[0_12px_30px_-12px_rgba(230,0,35,0.8)] hover:from-[#BD081C] hover:to-[#9E0715] hover:shadow-[0_16px_40px_-12px_rgba(230,0,35,0.85)] focus-visible:ring-[#E60023]/40 border-none",onClick:()=>{qa("Lead",{placement:"header_get_started",stage:"pre_login"}),a("/auth?mode=signup")},children:o.jsx("span",{className:"font-heebo",children:t("common:nav.getStarted")})})})]})]}),o.jsx(Ku,{open:s,onOpenChange:l,children:o.jsxs(Il,{side:e.dir()==="rtl"?"right":"left",className:`w-[320px] sm:w-[360px] p-0 overflow-hidden bg-white text-slate-900 dark:bg-[#0C1524] dark:text-white ${e.dir()==="rtl"?"border-l":"border-r"} border-slate-200 dark:border-white/10 shadow-[0_24px_55px_-22px_rgba(15,23,42,0.35)] dark:shadow-[0_24px_55px_-22px_rgba(12,21,36,0.9)] [&>button:last-child]:hidden`,children:[o.jsx(Yu,{className:"px-6 py-6 border-b border-slate-200/70 dark:border-white/10",children:o.jsxs("div",{className:"flex items-start justify-between gap-4",children:[o.jsxs("div",{className:"flex flex-col gap-3",children:[o.jsx("img",{src:j==="dark"?Ha:vi,alt:"Boardspace",className:"h-12 md:h-14 w-auto max-w-[200px] object-contain cursor-pointer transition-transform hover:scale-[1.01]",onClick:()=>{a(i?"/dashboard":"/"),l(!1)}}),o.jsx("p",{className:"font-heebo text-xs uppercase tracking-[0.35em] text-slate-500 dark:text-white/50",children:t("common:footer.interiorVibingPlatform")})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ee,{variant:"ghost",size:"icon",onClick:()=>S(j==="dark"?"light":"dark"),className:"group h-8 w-8 rounded-full bg-slate-100 hover:bg-slate-200 dark:bg-white/5 dark:hover:bg-white/10 transition-colors",children:j==="dark"?o.jsx(ln,{className:"h-4 w-4 text-[#F97316] group-hover:text-[#FDBA74] transition-colors"}):o.jsx(rn,{className:"h-4 w-4 text-[#6366F1] group-hover:text-[#A5B4FC] transition-colors"})}),o.jsx(ee,{variant:"ghost",size:"icon",onClick:()=>l(!1),className:"group h-8 w-8 rounded-full bg-slate-100 hover:bg-slate-200 dark:bg-white/5 dark:hover:bg-white/10 transition-colors",children:o.jsx(Et,{className:"h-4 w-4 text-[#E60023] dark:text-[#FEE2E2] transition-colors"})})]})]})}),o.jsxs("div",{className:"flex flex-col h-full overflow-y-auto",children:[o.jsx("nav",{className:"px-5 sm:px-6 py-6 space-y-3",children:C.map(O=>{const Q=O.icon;return o.jsxs(Ke,{to:O.to,onClick:()=>
535N(O.to),className:"group flex items-center gap-4 rounded-2xl border border-slate-200 bg-white px-4 py-3 shadow-[0_12px_32px_-18px_rgba(30,41,59,0.20)] hover:border-[#E60023]/40 hover:bg-[#E60023]/10 hover:shadow-[0_18px_40px_-18px_rgba(230,0,35,0.55)] transition-all dark:border-white/5 dark:bg-white/5",children:[o.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-xl bg-slate-100 text-slate-700 group-hover:bg-[#E60023]/20 group-hover:text-[#E60023] transition-colors dark:bg-white/10 dark:text-white",children:o.jsx(Q,{className:"h-5 w-5"})}),o.jsxs("div",{className:"flex flex-col",children:[o.jsx("span",{className:"font-heebo text-sm font-semibold text-slate-900 dark:text-white tracking-tight",children:O.label}),o.jsx("span",{className:"font-heebo text-xs text-slate-500 dark:text-white/60",children:O.description})]})]},O.to)})}),o.jsxs("div",{className:"px-5 sm:px-6 pb-6 pt-4 border-t border-slate-200/70 dark:border-white/10 space-y-4",children:[o.jsxs(ee,{variant:"ghost",className:"group w-full justify-between px-4 py-3 rounded-2xl border border-slate-200 bg-slate-50 text-slate-900 hover:bg-slate-100 dark:border-white/10 dark:bg-white/10 dark:text-white dark:hover:bg-white/15 transition-all",onClick:()=>S(j==="dark"?"light":"dark"),children:[o.jsxs("div",{className:"flex items-center gap-3",children:[j==="dark"?o.jsx(ln,{className:"h-5 w-5 text-[#F97316] group-hover:text-[#FDBA74] transition-colors"}):o.jsx(rn,{className:"h-5 w-5 text-[#6366F1] group-hover:text-[#A5B4FC] transition-colors"}),o.jsx("span",{className:"font-heebo text-sm font-medium",children:t(j==="dark"?"common:theme.switchToLight":"common:theme.switchToDark")})]}),o.jsx("span",{className:"font-heebo text-xs font-semibold uppercase tracking-[0.18em] text-[#E60023] dark:text-[#FEE2E2]",children:t("common:buttons.toggle")})]}),o.jsx("div",{className:"p-[2px] rounded-2xl bg-gradient-to-br from-emerald-300 via-emerald-400 to-emerald-500 shadow-[0_0_20px_rgba(16,185,129,0.5)] hover:shadow-[0_0_30px_rgba(16,185,129,0.7)] transition-all duration-300",children:o.jsx(ee,{className:"w-full h-12 rounded-[14px] bg-white dark:bg-gray-900 text-gray-800 dark:text-white font-semibold hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors",onClick:()=>{qa("Lead",{placement:"mobile_menu_get_started_free",stage:"pre_login"}),l(!1),a("/auth?mode=signup")},children:o.jsx("span",{className:"font-heebo",children:t("common:buttons.getStartedFree")})})})]})]})]})}),o.jsx("div",{className:"pt-[100px] md:pt-[105px] pb-12 px-6 relative overflow-visible",children:o.jsxs("div",{className:"mx-auto w-full max-w-[850px] flex flex-col items-center overflow-visible",children:[o.jsx("div",{className:"md:hidden absolute -top-[67px] left-0 w-full max-w-none",children:o.jsx("div",{className:"cursor-pointer flex justify-start",onClick:()=>a("/"),children:o.jsx("img",{src:j==="dark"?Ha:vi,alt:"BoardSpace",className:"h-[65px] w-auto max-w-none",style:{maxWidth:"none",width:"auto"}},"boardspace-logo-mobile")})}),o.jsxs(pe.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.6},className:"w-full text-center pt-[20px] md:pt-[37px] pb-16 flex flex-col items-center relative overflow-visible mt-0",children:[o.jsxs("div",{className:"space-y-3 mb-10 w-full relative max-md:-mt-[90px]",children:[o.jsx(pe.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},transition:{duration:.5,delay:.2},className:"absolute inset-x-0 z-10 top-[-110px] hidden md:flex justify-center px-4 md:px-6",children:o.jsx(pe.div,{className:"relative inline-flex items-center gap-1.5 md:gap-3 px-3.5 py-2.5 md:px-6 md:py-[8px] rounded-full bg-gradient-to-r from-[#E60023]/8 via-[#E60023]/12 to-[#BD081C]/8 dark:from-[#E60023]/15 dark:via-[#E60023]/20 dark:to-[#BD081C]/15 border border-[#E60023]/30 dark:border-[#E60023]/40 backdrop-blur-md overflow-hidden transition-all duration-300 hover:scale-[1.02] shadow-[0_0_30px_-5px_rgba(230,0,35,0.6)] dark:shadow-[0_0_30px_-5px_rgba(230,0,35,0.8)] cursor-pointer",onClick:()=>a("/auth?mode=signup"),children:o.jsxs("div",{className:"relative flex items-center gap-1.5 md:gap-2.5 z-10",children:[o.jsx(pe.div,{animate:{scale:[1,1.1,1],rotate:[0,5,-5,0]},transition:{duration:3,repeat:1/0,ease:"easeInOut"},children:o.jsx(oi,{className:"w-3.5 h-3.5 md:w-4 md:h-4 text-[#E60023] dark:text-[#FF6B6B] flex-shrink-0"})}),o.jsx("span",{className:"font-heebo text-xs md:text-sm font-semibold text-[#E60023] dark:text-[#FF6B6B] tracking-tight leading-tight",children:t("hero.tokensOffer")}),o.jsx(pe.span,{className:"hidden md:block w-1 h-1 rounded-full bg-[#E60023]/40 dark:bg-[#FF6B6B]/50",animate:{o
535pacity:[.4,1,.4],scale:[1,1.3,1]},transition:{duration:2,repeat:1/0,ease:"easeInOut"}}),o.jsx("span",{className:"font-heebo hidden md:flex relative text-xs text-gray-600 dark:text-gray-300 font-medium items-center gap-1.5",children:t("landing:hero.limitedOffer")}),o.jsxs(Vj,{open:v,onOpenChange:g,children:[o.jsx(Uj,{asChild:!0,children:o.jsx(pe.button,{type:"button",className:"relative md:absolute md:-top-2 md:right-[-22px] z-20 cursor-pointer focus:outline-none flex-shrink-0 ml-1 md:ml-0",animate:{scale:[1,1.1,1],opacity:[.8,1,.8]},transition:{duration:2.5,repeat:1/0,ease:"easeInOut"},onClick:O=>O.stopPropagation(),children:o.jsx(Bs,{className:"w-3.5 h-3.5 md:w-5 md:h-5 text-[#E60023] dark:text-[#FF6B6B] bg-white dark:bg-[#0A0E1A] rounded-full border border-[#E60023]/30 dark:border-[#E60023]/40 flex-shrink-0 hover:scale-110 transition-transform"})})}),o.jsxs(Vv,{side:"top",align:"end",sideOffset:20,className:"w-[calc(100vw-2rem)] max-w-[320px] md:max-w-[380px] md:w-[380px] p-4 md:p-5 bg-white dark:bg-[#1A1A1A] border border-gray-200 dark:border-gray-700 shadow-xl rounded-2xl mx-4 md:mx-0 !mt-[-80px] md:!mt-[-120px] relative",onClick:O=>O.stopPropagation(),children:[o.jsx("button",{type:"button",onClick:()=>g(!1),className:"absolute top-3 right-3 z-30 p-1.5 rounded-full text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors","aria-label":"Close",children:o.jsx(Et,{className:"h-4 w-4 md:h-5 md:w-5"})}),o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"font-heebo text-base md:text-lg font-bold text-[#E60023] dark:text-[#FF6B6B] mb-2 md:mb-3",children:t("landing:welcome.title")}),o.jsx("p",{className:"font-heebo text-xs md:text-sm text-gray-700 dark:text-gray-300 leading-relaxed mb-2 md:mb-3",children:t("landing:welcome.p1")}),o.jsx("p",{className:"font-heebo text-xs md:text-sm text-gray-700 dark:text-gray-300 leading-relaxed mb-2 md:mb-3",children:t("landing:welcome.p2")}),o.jsx("p",{className:"font-heebo text-xs md:text-sm text-gray-700 dark:text-gray-300 leading-relaxed mb-2 md:mb-3",children:t("landing:welcome.p3")}),o.jsx("p",{className:"font-heebo text-xs md:text-sm text-gray-700 dark:text-gray-300 leading-relaxed mb-2 md:mb-3",children:t("landing:welcome.p4")}),o.jsx("p",{className:"font-heebo text-xs md:text-sm text-gray-700 dark:text-gray-300 leading-relaxed",children:t("landing:welcome.p5")})]}),o.jsx("div",{className:"pt-2 md:pt-3",children:o.jsxs(Ke,{to:"/auth?mode=signup",className:"text-xs md:text-sm font-medium text-[#E60023] dark:text-[#FF6B6B] hover:underline inline-flex items-center gap-1",children:[o.jsx("span",{className:"font-heebo",children:t("common:buttons.getStartedFree")}),o.jsx(tc,{className:"w-2.5 h-2.5 md:w-3 md:h-3 rotate-45"})]})}),o.jsx("div",{className:"pt-2 border-t border-gray-200 dark:border-gray-700",children:o.jsxs(Ke,{to:"/terms",className:"text-xs md:text-sm font-medium text-[#E60023] dark:text-[#FF6B6B] hover:underline inline-flex items-center gap-1",children:[o.jsx("span",{className:"font-heebo",children:t("common:buttons.learnMore")}),o.jsx(tc,{className:"w-2.5 h-2.5 md:w-3 md:h-3 rotate-45"})]})})]})]})]})]})})}),o.jsxs("h1",{className:"font-heebo text-4xl sm:text-4xl md:text-5xl lg:text-[52px] font-bold !tracking-[-0.023em] text-center mx-auto px-4 scale-x-[0.85]",children:[o.jsx("span",{className:"text-gray-900 dark:text-white",children:t("hero.title1")})," ",o.jsx("span",{className:"text-[#E60023] dark:text-[#FF6B6B]",children:t("hero.title2")})]}),o.jsx("p",{className:"font-heebo text-[14px] sm:text-lg text-muted-foreground dark:text-white/80 max-w-2xl mx-auto px-4",dangerouslySetInnerHTML:{__html:t("hero.subtitle")}})]}),o.jsxs(pe.form,{onSubmit:P,initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.6,delay:.2}
535,className:"max-w-[700px] mx-auto !-mt-[19px] w-full",children:[o.jsx("input",{ref:_,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:z}),o.jsxs("div",{className:"relative bg-[#FFF5F5] dark:bg-[#1A1A1A] border border-gray-200 dark:border-gray-700 rounded-3xl shadow-sm overflow-hidden cursor-pointer hover:border-[#E60023]/40 transition-colors",onClick:()=>a("/auth?mode=signup"),children:[o.jsxs("div",{className:"px-4 md:px-6 pt-4 pb-3 relative",children:[o.jsx("textarea",{value:c,onChange:O=>d(O.target.value),placeholder:"",className:`w-full min-h-[75px] md:min-h-[60px] px-0 pt-0 pb-0 text-sm md:text-base bg-transparent border-0 focus:outline-none resize-none text-gray-700 dark:text-gray-200 placeholder:text-gray-400 dark:placeholder:text-gray-500 ${e.language==="he"?"text-right":"text-left"}`,dir:e.language==="he"?"rtl":"ltr",onKeyDown:O=>{O.key==="Enter"&&!O.shiftKey&&(O.preventDefault(),P(O))}}),!c&&u.length===0&&o.jsx("div",{className:`absolute top-4 pointer-events-none text-gray-400 dark:text-gray-500 ${e.language==="he"?"right-4 md:right-6":"left-4 md:left-6"}`,children:o.jsx(Wj,{className:"text-[9px]"})})]}),u.length>0&&o.jsx("div",{className:"px-4 md:px-6 pb-2 flex flex-wrap gap-2",children:u.map(O=>o.jsxs("div",{className:"relative group",children:[o.jsx("img",{src:O.url,alt:O.title,className:"w-16 h-16 object-cover rounded-lg border border-gray-300 dark:border-gray-600"}),o.jsx("button",{type:"button",onClick:()=>Z(O.id),className:"absolute -top-2 -right-2 w-5 h-5 bg-red-500 hover:bg-red-600 text-white rounded-full flex items-center justify-center text-xs shadow-sm",children:"✕"})]},O.id))}),o.jsx("div",{className:"border-t border-gray-200 dark:border-gray-700"}),o.jsxs("div",{className:"px-2 md:px-6 pb-2 md:pb-3 pt-2 md:pt-3 flex items-center justify-between gap-1 md:gap-2 overflow-x-auto",children:[o.jsxs("div",{className:"flex items-center gap-1 md:gap-2 min-w-0 flex-shrink-0 overflow-x-auto",children:[o.jsx(ee,{type:"button",variant:"ghost",size:"icon",onClick:I,className:"h-5 w-5 md:h-6 md:w-6 rounded-full border border-gray-300 dark:border-gray-600 bg-[#F8F7F2] dark:bg-[#1A1A1A] hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-600 dark:text-gray-300 flex-shrink-0",title:"Create new canvas and upload image",children:o.jsx(nn,{className:"h-2.5 w-2.5 md:h-3 md:w-3"})}),o.jsxs("div",{className:"hidden md:flex relative",children:[o.jsx("button",{onClick:O=>{O.stopPropagation(),x("styleMatch")},className:"absolute -top-[2px] -right-1 z-10 flex items-center justify-center w-3.5 h-3.5 rounded-full bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 text-gray-700 dark:text-gray-300 transition-all duration-200",title:"What is this?",type:"button",children:o.jsx(Is,{className:"w-2.5 h-2.5"})}),o.jsxs(ee,{type:"button",variant:"ghost",onClick:E,className:`h-5 md:h-6 px-1 md:px-2 rounded-full border flex items-center gap-0.5 md:gap-1.5 flex-shrink-0 ${f==="stylematch"?"border-red-300 dark:border-red-700 bg-red-50 dark:bg-red-900/30 text-red-600 dark:text-red-400":"border-gray-300 dark:border-gray-600 bg-[#F8F7F2] dark:bg-[#1A1A1A] hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-600 dark:text-gray-300"}`,title:"Generate multi-space design consistency",children:[o.jsx(dn,{className:"h-2.5 w-2.5 md:h-3 md:w-3"}),o.jsx("span",{className:"text-[9px] md:text-xs",children:"StyleMatch"})]})]}),o.jsxs("div",{className:"hidden md:flex relative",children:[o.jsx("button",{onClick:O=>{O.stopPropagation(),x("designDNA")},className:"absolute -top-[2px] -right-1 z-10 flex items-center justify-center w-3.5 h-3.5 rounded-full bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 text-gray-700 dark:text-gray-300 transition-all duration-200",title:"What is this?",type:"button",children:o.jsx(Is,{className:"w-2.5 h-2.5"})}),o.jsxs(ee,{type:"button",variant:"ghost",onClick:L,className:`h-5 md:h-6 px-1 md:px-2 rounded-full border flex items-center gap-0.5 md:gap-1.5 flex-shrink-0 ${f==="designdna"?"border-red-300 dark:border-red-700 bg-red-50 dark:bg-red-900/30 text-red-600 dark:text-red-400":"border-gray-300 dark:border-gray-600 bg-[#F8F7F2] dark:bg-[#1A1A1A] hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-600 dark:text-gray-300"}`,title:"Extract design DNA and curated items",children:[o.jsx(qs,{className:"h-2.5 w-2.5 md:h-3 md:w-3"}),o.jsx("span",{className:"text-[9px] md:text-xs",children:"DesignDNA"})]})]}),o.jsxs("div",{className:"hidden md:flex relative",children:[o.jsx("button",{onClick:O=>{O.stopPropagation(),x("kitchenBoard")},className:"absolute -top-[2px] -right-1 z-10 flex items-center justify-center w-3.5 h-3.5 rounded-full bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 text-gray-700 dark:text-gray-300 transition-all duration-200",title:"What is this?",type:"button",children:o.jsx(Is,{className:"w-2.5 h-2.5"})}),o.jsxs(ee,{type:"button",variant:"ghost",onClick:A,className:`h-5 md:h-6 px-1 md:px-2 rounded-full border flex items-center gap-0.5 md:gap-1.5 flex-shrink-0 ${f==="kitchenboard"?"border-orange-300 dark:border-orange-700 bg-orange-50 dark:bg-orange-900/30 text-orange-600 dar
535k:text-orange-400":"border-gray-300 dark:border-gray-600 bg-[#F8F7F2] dark:bg-[#1A1A1A] hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-600 dark:text-gray-300"}`,title:"Generate 6 kitchen material & color variations",children:[o.jsx(Cf,{className:"h-2.5 w-2.5 md:h-3 md:w-3"}),o.jsx("span",{className:"text-[9px] md:text-xs",children:"KitchenBoard"})]})]})]}),o.jsxs("div",{className:"flex items-center gap-1 md:gap-2 flex-shrink-0",children:[o.jsxs(ee,{type:"button",variant:"ghost",onClick:E,className:`md:hidden h-5 px-1 rounded-full border flex items-center gap-0.5 flex-shrink-0 ${f==="stylematch"?"border-red-300 dark:border-red-700 bg-red-50 dark:bg-red-900/30 text-red-600 dark:text-red-400":"border-gray-300 dark:border-gray-600 bg-[#F8F7F2] dark:bg-[#1A1A1A] hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-600 dark:text-gray-300"}`,title:"Generate multi-space design consistency",children:[o.jsx(dn,{className:"h-2.5 w-2.5"}),o.jsx("span",{className:"text-[9px]",children:"StyleMatch"})]}),o.jsxs(ee,{type:"button",variant:"ghost",onClick:L,className:`md:hidden h-5 px-1 rounded-full border flex items-center gap-0.5 flex-shrink-0 ${f==="designdna"?"border-red-300 dark:border-red-700 bg-red-50 dark:bg-red-900/30 text-red-600 dark:text-red-400":"border-gray-300 dark:border-gray-600 bg-[#F8F7F2] dark:bg-[#1A1A1A] hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-600 dark:text-gray-300"}`,title:"Extract design DNA and curated items",children:[o.jsx(qs,{className:"h-2.5 w-2.5"}),o.jsx("span",{className:"text-[9px]",children:"DesignDNA"})]}),o.jsx(ee,{type:"button",variant:"ghost",size:"icon",disabled:!0,className:"h-5 w-5 md:h-6 md:w-6 rounded-full border border-dashed border-gray-300 dark:border-gray-600 bg-[#F8F7F2] dark:bg-[#1A1A1A] text-gray-400 dark:text-white flex-shrink-0 cursor-not-allowed",title:t("landing:voiceComingSoon"),children:o.jsx(fw,{className:"h-2.5 w-2.5 md:h-3 md:w-3"})}),o.jsx(ee,{type:"submit",disabled:!c.trim(),size:"icon",className:"h-5 w-5 md:h-6 md:w-6 rounded-full bg-gray-700 dark:bg-gray-600 hover:bg-gray-800 dark:hover:bg-gray-500 text-white disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0",children:o.jsx(tc,{
535className:"h-2.5 w-2.5 md:h-3 md:w-3"})})]})]})]})]}),o.jsxs(pe.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.6,delay:.6},className:"hidden md:flex mt-[49px] md:mt-[57px] justify-center flex-col items-center gap-4",children:[o.jsx(ee,{size:"lg",className:"bg-[#E60023] hover:bg-[#BD081C] text-white font-medium px-8 py-3 rounded-lg text-base shadow-sm transition-all",onClick:()=>{qa("Lead",{placement:"hero_try_free",stage:"pre_login"}),a("/auth?mode=signup")},children:o.jsx("span",{className:"font-heebo",children:t("common:buttons.tryFree")})}),o.jsxs(pe.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.6,delay:.8},className:"flex items-center justify-center gap-4 text-xs md:text-sm text-muted-foreground",children:[o.jsxs("span",{children:["• ",t("landing:credibility.designersSaved")," •"]}),o.jsx("span",{className:"font-medium text-foreground",children:t("landing:credibility.freeForever")}),o.jsx(oi,{className:"w-3 h-3 text-[#E60023]"})]}),o.jsxs(pe.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.6,delay:1},className:"mt-6 flex items-center justify-center gap-3",children:[o.jsxs("div",{className:"relative w-24 h-16 rounded-lg overflow-hidden border border-gray-200 dark:border-gray-700 shadow-sm",children:[o.jsx(za,{src:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/inspiration-images/8cd433c2-5d0e-4675-a902-4fbb41ebfd67/5c65add8-4724-4a75-899c-fb6dd4573354.jpg",alt:"Before",className:"w-full h-full object-cover",optimizeImage:!0}),o.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-transparent via-transparent to-black/20"}),o.jsx("div",{className:"absolute bottom-1 left-1 right-1",children:o.jsx("span",{className:"text-[8px] font-semibold text-white drop-shadow-md",children:t("landing:beforeAfter.before")})})]}),o.jsx(Ga,{className:"w-4 h-4 text-gray-400 dark:text-gray-500 flex-shrink-0"}),o.jsxs("div",{className:"relative w-24 h-16 rounded-lg overflow-hidden border border-gray-200 dark:border-gray-700 shadow-sm",children:[o.jsx(za,{src:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/8cd433c2-5d0e-4675-a902-4fbb41ebfd67/combine-images_1764321050502_0.jpg",alt:"After",className:"w-full h-full object-cover",optimizeImage:!0}),o.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-black/20 via-transparent to-transparent"}),o.jsx("div",{className:"absolute bottom-1 left-1 right-1",children:o.jsx("span",{className:"text-[8px] font-semibold text-white drop-shadow-md",children:t("landing:beforeAfter.after")})})]})]}),o.jsxs(pe.div,{initial:{opacity:0}
535,animate:{opacity:1},transition:{duration:.6,delay:1.2},className:"mt-4 flex flex-col items-center gap-2 cursor-pointer group",onClick:()=>{const O=document.querySelector("#video-section");O&&O.scrollIntoView({behavior:"smooth"})},children:[o.jsx(pe.p,{animate:{y:[0,4,0]},transition:{duration:2,repeat:1/0,ease:"easeInOut"},className:"text-xs text-gray-500 dark:text-gray-400 font-medium group-hover:text-[#E60023] dark:group-hover:text-[#FF6B6B] transition-colors",children:t("landing:scrollIndicator")}),o.jsx(pe.div,{animate:{y:[0,4,0]},transition:{duration:2,repeat:1/0,ease:"easeInOut",delay:.1},children:o.jsx(ar,{className:"w-4 h-4 text-gray-400 dark:text-gray-500 group-hover:text-[#E60023] dark:group-hover:text-[#FF6B6B] transition-colors"})})]})]}),o.jsxs(pe.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.6,delay:.6},className:"md:hidden mt-[49px] w-full",children:[o.jsx("div",{className:"flex justify-center mb-4",children:o.jsx(ee,{size:"lg",asChild:!0,className:"bg-[#E60023] hover:bg-[#BD081C] text-white font-medium px-8 py-3 rounded-lg text-base shadow-sm transition-all",children:o.jsx(Ke,{to:"/auth?mode=signup",children:o.jsx("span",{className:"font-heebo",children:t("common:buttons.tryFree")})})})}),o.jsxs("div",{className:"flex items-center justify-center gap-4 text-xs text-muted-foreground",children:[o.jsxs("span",{children:["• ",t("landing:credibility.designersSaved")," •"]}),o.jsx("span",{className:"font-medium text-foreground",children:t("landing:credibility.freeForever")}),o.jsx(oi,{className:"w-3 h-3 text-[#E60023]"})]}),o.jsx(pe.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},transition:{duration:.5,delay:.8},className:"mt-6 flex justify-center px-4",children:o.jsx(pe.div,{className:"relative inline-flex items-center gap-1.5 px-3.5 py-2.5 rounded-full bg-gradient-to-r from-[#E60023]/8 via-[#E60023]/12 to-[#BD081C]/8 dark:from-[#E60023]/15 dark:via-[#E60023]/20 dark:to-[#BD081C]/15 border border-[#E60023]/30 dark:border-[#E60023]/40 backdrop-blur-md overflow-hidden transition-all duration-300 hover:scale-[1.02] shadow-[0_0_30px_-5px_rgba(230,0,35,0.6)] dark:shadow-[0_0_30px_-5px_rgba(230,0,35,0.8)] cursor-pointer",onClick:()=>a("/auth?mode=signup"),children:o.jsxs("div",{className:"relative flex items-center gap-1.5 z-10",children:[o.jsx(pe.div,{animate:{scale:[1,1.1,1],rotate:[0,5,-5,0]},transition:{duration:3,repeat:1/0,ease:"easeInOut"},children:o.jsx(oi,{className:"w-3.5 h-3.5 text-[#E60023] dark:text-[#FF6B6B] flex-shrink-0"})}),o.jsx("span",{className:"text-xs font-semibold text-[#E60023] dark:text-[#FF6B6B] tracking-tight leading-tight",children:t("landing:hero.tokensOffer")})]})})}),o.jsxs(pe.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.6,delay:1},className:"mt-6 flex items-center justify-center gap-2 px-4",children:[o.jsxs("div",{className:"relative w-20 h-14 rounded-lg overflow-hidden border border-gray-200 dark:border-gray-700 shadow-sm",children:[o.jsx(za,{src:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/inspiration-images/8cd433c2-5d0e-4675-a902-4fbb41ebfd67/5c65add8-4724-4a75-899c-fb6dd4573354.jpg",alt:"Before",className:"w-full h-full object-cover",optimizeImage:!0}),o.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-transparent via-transparent to-black/20"}),o.jsx("div",{className:"absolute bottom-0.5 left-1 right-1",children:o.jsx("span",{className:"text-[7px] font-semibold text-white drop-shadow-md",children:t("landing:beforeAfter.before")})})]}),o.jsx(Ga,{className:"w-3.5 h-3.5 text-gray-400 dark:text-gray-500 flex-shrink-0"}),o.jsxs("div",{className:"relative w-20 h-14 rounded-lg overflow-hidden border border-gray-200 dark:border-gray-700 shadow-sm",children:[o.jsx(za,{src:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/8cd433c2-5d0e-4675-a902-4fbb41ebfd67/combine-images_1764321050502_0.jpg",alt:"After",className:"w-full h-full object-cover",optimizeImage:!0}),o.jsx("div",{className:"absolute inset-0 bg-gradient-to-r from-black/20 via-transparent to-transparent"}),o.jsx("div",{className:"absolute bottom-0.5 left-1 right-1",children:o.jsx("span",{className:"text-[7px] font-semibold text-white drop-shadow-md",children:t("landing:beforeAfter.after")})})]})]}),o.jsxs(pe.div,{initial:{opacity:0}
535,animate:{opacity:1},transition:{duration:.6,delay:1.2},className:"mt-4 flex flex-col items-center gap-1.5 cursor-pointer group px-4",onClick:()=>{const O=document.querySelector("#video-section");O&&O.scrollIntoView({behavior:"smooth"})},children:[o.jsx(pe.p,{animate:{y:[0,3,0]},transition:{duration:2,repeat:1/0,ease:"easeInOut"},className:"text-[10px] text-gray-500 dark:text-gray-400 font-medium group-hover:text-[#E60023] dark:group-hover:text-[#FF6B6B] transition-colors",children:t("landing:scrollIndicator")}),o.jsx(pe.div,{animate:{y:[0,3,0]},transition:{duration:2,repeat:1/0,ease:"easeInOut",delay:.1},children:o.jsx(ar,{className:"w-3.5 h-3.5 text-gray-400 dark:text-gray-500 group-hover:text-[#E60023] dark:group-hover:text-[#FF6B6B] transition-colors"})})]})]}),n&&o.jsxs(pe.div,{id:"video-section",initial:{opacity:0,y:30},animate:{opacity:1,y:0},transition:{duration:.6,delay:.4},className:"mt-[57px] md:mt-[40px] w-full max-w-4xl mx-auto",children:[o.jsxs("div",{className:"text-center mb-2",children:[o.jsx("h2",{className:"font-heebo text-[40px] md:text-3xl lg:text-[68px] font-bold text-gray-900 dark:text-white mb-1 !tracking-[-0.023em]",children:t("landing:video.headline")}),o.jsx("p",{className:"font-heebo text-sm md:text-base text-gray-700 dark:text-gray-300",dangerouslySetInnerHTML:{__html:t("landing:video.description")}})]}),o.jsx(pe.div,{initial:{opacity:0,y:30},animate:{opacity:1,y:0},transition:{duration:.6,delay:.2},className:"relative w-full rounded-2xl overflow-hidden shadow-2xl border border-gray-200 dark:border-gray-700 bg-black max-w-6xl mx-auto mb-4",children:(()=>{var Y;const O=e.language==="he"||((Y=e.language)==null?void 0:Y.startsWith("he-")),Q="602c36d9-547b-43ff-9bed-566ac5dbc857";return O?o.jsxs("div",{className:"relative w-full",style:{paddingTop:"47%"},children:[o.jsx("iframe",{src:`https://www.veed.io/embed/${Q}?watermark=0&sharing=0&title=0&autoplay=1&loop=1&controls=0&muted=1`,className:"absolute inset-0 w-full h-full",frameBorder:"0",title:"Hebrew landing page video",allow:"fullscreen; autoplay; encrypted-media; picture-in-picture"}),o.jsx("div",{className:"absolute inset-0 z-10"})]}):w?o.jsx("video",{src:w,autoPlay:!0,loop:!0,muted:!0,playsInline:!0,className:"w-full h-auto",onError:K=>{console.error("Video load error:",K),console.error("Video URL:",w)}}):o.jsx("div",{className:"w-full aspect-video bg-gray-900 flex items-center justify-center",children:o.jsx("p",{className:"text-gray-500 dark:text-gray-400",children:t("landing:video.comingSoon")})})})()}),o.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-2xl px-3 md:px-4 py-2.5 md:py-3 flex items-center justify-between gap-2 md:gap-4 mt-4 mx-4 md:mx-6 mb-4 shadow-sm border border-gray-200 dark:border-gray-700",children:[o.jsxs("div",{className:"flex items-center gap-1.5 md:gap-2",children:[o.jsx(xl,{className:"w-3.5 h-3.5 md:w-4 md:h-4 text-yellow-500 flex-shrink-0"}),o.jsx("span",{className:"font-heebo text-xs md:text-sm font-medium text-gray-900 dark:text-white whitespace-nowrap",children:t("landing:video.duration")})]}),o.jsxs("div",{className:"flex items-center gap-1.5 md:gap-2",children:[o.jsx(fu,{className:"w-3.5 h-3.5 md:w-4 md:h-4 text-yellow-500 flex-shrink-0"}),o.jsx("span",{className:"font-heebo text-xs md:text-sm font-medium text-gray-900 dark:text-white whitespace-nowrap",children:t("landing:video.cost")})]}),o.jsxs("div",{className:"flex items-center gap-1.5 md:gap-2",children:[o.jsx(gu,{className:"w-3.5 h-3.5 md:w-4 md:h-4 text-[#E60023] dark:text-[#FF6B6B] flex-shrink-0"}),o.jsx("span",{className:"font-heebo text-xs md:text-sm font-medium text-gray-900 dark:text-white whitespace-nowrap",children:t("landing:video.output")})]})]}),o.jsxs("div",{className:"text-center mb-6",dir:e.language==="he"?"rtl":"ltr",children:[o.jsx("p",{className:"font-heebo text-sm md:text-base text-gray-700 dark:text-gray-300",dangerouslySetInnerHTML:{__html:t("landing:video.costBreakdown.title")}}),o.jsxs("div",{className:"font-heebo text-xs md:text-sm text-gray-600 dark:text-gray-400 mt-2 space-y-1",children:[o.jsxs("p",{children:["• ",t("landing:video.costBreakdown.sketch")]}),o.jsxs("p",{children:["• ",t("landing:video.costBreakdown.material")]}),o.jsxs("p",{children:["• ",t("landing:video.costBreakdown.styleMatch")]}),o.jsxs("p",{children:["• ",t("landing:video.costBreakdown.video")]})]}),o.jsx("p",{className:"font-heebo text-sm md:text-base text-gray-700 dark:text-gray-300 mt-3",dangerouslySetInnerHTML:{__html:t("landing:video.costBreakdown.studio")}
535})]}),o.jsxs("div",{className:"flex flex-col md:flex-row items-center justify-center gap-6 w-full",children:[o.jsxs("div",{className:"flex flex-col items-center gap-2",children:[o.jsx("div",{className:"w-full max-w-[260px] md:max-w-[320px] aspect-video bg-gray-100 dark:bg-gray-800 rounded-xl border-2 border-gray-200 dark:border-gray-700 shadow-md overflow-hidden cursor-pointer hover:border-[#E60023]/50 hover:shadow-lg transition-all",onClick:()=>a("/auth?mode=signup"),children:o.jsx(za,{src:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/inspiration-images/8cd433c2-5d0e-4675-a902-4fbb41ebfd67/5c65add8-4724-4a75-899c-fb6dd4573354.jpg",alt:"Before sketch",className:"w-full h-full object-cover",optimizeImage:!0})}),o.jsx("span",{className:"font-heebo text-sm md:text-base font-bold text-gray-900 dark:text-white",children:t("landing:beforeSketch")})]}),o.jsx(eo,{className:"w-6 h-6 md:w-8 md:h-8 text-[#E60023] dark:text-[#FF6B6B] flex-shrink-0"}),o.jsxs("div",{className:"flex flex-col items-center gap-4 w-full max-w-[320px]",children:[o.jsxs("div",{className:"flex flex-col items-center gap-2 w-full",children:[o.jsx("div",{className:"w-full aspect-video bg-gray-100 dark:bg-gray-800 rounded-xl border-2 border-gray-200 dark:border-gray-700 shadow-md overflow-hidden cursor-pointer hover:border-[#E60023]/50 hover:shadow-lg transition-all",onClick:()=>a("/auth?mode=signup"),children:o.jsx(za,{src:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/8cd433c2-5d0e-4675-a902-4fbb41ebfd67/combine-images_1764321050502_0.jpg",alt:"After render result option 1",className:"w-full h-full object-cover",optimizeImage:!0})}),o.jsxs("span",{className:"font-heebo text-xs md:text-sm font-semibold text-gray-700 dark:text-gray-200 uppercase tracking-wide",children:[t("landing:option")," 1"]})]}),o.jsxs("div",{className:"flex flex-col items-center gap-2 w-full",children:[o.jsx("div",{className:"w-full aspect-video bg-gray-100 dark:bg-gray-800 rounded-xl border-2 border-gray-200 dark:border-gray-700 shadow-md overflow-hidden cursor-pointer hover:border-[#E60023]/50 hover:shadow-lg transition-all",onClick:()=>a("/auth?mode=signup"),children:o.jsx(za,{src:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/8cd433c2-5d0e-4675-a902-4fbb41ebfd67/combine-images_1764322033181_0.jpg",alt:"After render result option 2",className:"w-full h-full object-cover",optimizeImage:!0})}),o.jsxs("span",{className:"font-heebo text-xs md:text-sm font-semibold text-gray-700 dark:text-gray-200 uppercase tracking-wide",children:[t("landing:option")," 2"]})]}),o.jsx("span",{className:"font-heebo text-xs md:text-sm text-gray-600 dark:text-gray-400 text-center",children:t("landing:actualResults")})]})]})]})]})]})}),o.jsx(pe.div,{id:"ai-models-teaser",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.6,delay:.8},className:"mt-[-50px] md:mt-[-50px] px-4 md:px-6",children:o.jsxs("div",{className:"max-w-4xl mx-auto",children:[o.jsx(pe.h3,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.5,delay:.85},className:"font-heebo text-lg md:text-xl font-semibold text-[#0D1B2A] dark:text-white text-center mb-6",children:t("landing:aiModels.title")}),o.jsxs("div",{className:"flex flex-wrap items-start justify-center gap-6 md:gap-8 py-6",children:[o.jsxs(pe.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},transition:{duration:.4,delay:.9},className:"flex flex-col items-center justify-center gap-2",children:[o.jsx("img",{src:"/ai-logos/chatgpt.svg",alt:"ChatGPT",className:"h-10 md:h-[48px] w-auto object-contain opacity-100 transition-opacity"}),o.jsx("span",{className:"text-xs md:text-sm text-[#0D1B2A] dark:text-white opacity-80 text-center",children:"ChatGPT"})]}),o.jsxs(pe.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},transition:{duration:.4,delay:.95},className:"flex flex-col items-center justify-center gap-2",children:[o.jsx("img",{src:"/ai-logos/gemini.svg",alt:"Google Gemini",className:"h-10 md:h-[48px] w-auto object-contain opacity-100 transition-opacity"}),o.jsx("span",{className:"text-xs md:text-sm text-[#0D1B2A] dark:text-white opacity-80 text-center",children:"Gemini"})]}),o.jsxs(pe.div,{initial:{opacity:0,scale:.9}
535,animate:{opacity:1,scale:1},transition:{duration:.4,delay:1},className:"flex flex-col items-center justify-center gap-2",children:[o.jsx("img",{src:"/ai-logos/kling.svg",alt:"Kling",className:"h-10 md:h-[48px] w-auto object-contain opacity-100 transition-opacity"}),o.jsx("span",{className:"text-xs md:text-sm text-[#0D1B2A] dark:text-white opacity-80 text-center",children:"Kling"})]}),o.jsxs(pe.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},transition:{duration:.4,delay:1.05},className:"flex flex-col items-center justify-center gap-2",children:[o.jsx("img",{src:"/ai-logos/bytedance.png",alt:"ByteDance",className:"h-10 md:h-[48px] w-auto object-contain opacity-100 transition-opacity"}),o.jsx("span",{className:"text-xs md:text-sm text-[#0D1B2A] dark:text-white opacity-80 text-center",children:"ByteDance"})]}),o.jsxs(pe.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},transition:{duration:.4,delay:1.1},className:"flex flex-col items-center justify-center gap-2",children:[o.jsx("img",{src:"/ai-logos/qwen.svg",alt:"Qwen",className:"h-10 md:h-[48px] w-auto object-contain opacity-100 transition-opacity"}),o.jsx("span",{className:"text-xs md:text-sm text-[#0D1B2A] dark:text-white opacity-80 text-center",children:"Qwen"})]}),o.jsxs(pe.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},transition:{duration:.4,delay:1.15},className:"flex flex-col items-center justify-center gap-2",children:[o.jsx("img",{src:"/ai-logos/flux-bfl.webp",alt:"Flux",className:"h-10 md:h-[48px] w-auto object-contain opacity-100 transition-opacity"}),o.jsx("span",{className:"text-xs md:text-sm text-[#0D1B2A] dark:text-white opacity-80 text-center",children:"Flux"})]})]})]})}),o.jsx(pe.div,{initial:{opacity:0,y:30},animate:{opacity:1,y:0},transition:{duration:.6,delay:1},className:"mt-[132px] md:mt-[148px] px-4 md:px-6",children:o.jsxs("div",{className:"max-w-xs sm:max-w-2xl md:max-w-3xl mx-auto flex flex-col items-center",children:[o.jsx(pe.h2,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5,delay:.9},className:"font-heebo text-2xl sm:text-3xl md:text-4xl font-bold text-[#0D1B2A] dark:text-white text-center mb-3 !tracking-[-0.023em]",children:t("landing:gallery.title")}),o.jsx("p",{className:"font-heebo text-sm sm:text-base text-gray-600 dark:text-gray-300 text-center mb-8 max-w-2xl",dangerouslySetInnerHTML:{__html:t("landing:gallery.subtitle")}}),o.jsx("div",{className:"columns-2 sm:columns-2 md:columns-3 gap-1.5 sm:gap-3 w-full",children:uN.slice(0,5).map((O,Q)=>{const Y=oh[Q]||oh[0],K=["aspect-[4/5]","aspect-video","aspect-[4/3]","aspect-square","aspect-[5/4]"];return o.jsx(pe.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5,delay:1+Q*.1},className:"relative group cursor-pointer break-inside-avoid mb-1.5 sm:mb-3",children:o.jsxs("div",{className:"relative w-full rounded-xl overflow-hidden bg-white dark:bg-gray-800 shadow-lg hover:shadow-2xl transition-all duration-300 hover:scale-[1.02]",children:[o.jsxs("div",{className:`relative w-full ${K[Q]} bg-gray-100 dark:bg-gray-900`,children:[o.jsx(za,{src:O,alt:`Interior design inspiration ${Q+1}`,className:"w-full h-full object-cover",optimizeImage:!0,wrapperClassName:"relative w-full h-full"}),o.jsx("div",{className:"absolute inset-0 bg-black/0 group-hover:bg-black/10 transition-colors duration-300 pointer-events-none z-10"})]}),o.jsx("div",{className:"px-3 py-2.5 bg-white dark:bg-gray-800",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[o.jsx("div",{className:"w-5 h-5 rounded-full bg-gradient-to-br from-[#E60023] to-[#BD081C] flex items-center justify-center flex-shrink-0",children:o.jsx("span",{className:"text-white text-[10px] font-semibold",children:Y.user.charAt(0)})}),o.jsx("span",{className:"text-xs font-medium text-gray-700 dark:text-gray-300 truncate",children:Y.user.length>4?`${Y.user.slice(0,3)}...`:Y.user})]}),o.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[o.jsxs("div",{className:"flex items-center gap-1 text-gray-600 dark:text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors cursor-pointer",children:[o.jsx(Cw,{className:"w-3 h-3"}),o.jsx("span",{className:"text-[10px] font-medium",children:Y.likes})]}),o.jsxs("div",{className:"flex items-center gap-1 text-gray-600 dark:text-gray-400 hover:text-blue-600 dar
535k:hover:text-blue-400 transition-colors cursor-pointer",children:[o.jsx(Tf,{className:"w-3 h-3"}),o.jsx("span",{className:"text-[10px] font-medium",children:Y.remixes})]})]})]})})]})},Q)})}),o.jsxs("div",{className:"w-full mt-6 flex flex-col gap-4",children:[o.jsxs("div",{className:"w-full rounded-full bg-white dark:bg-[#101828] border border-gray-200 dark:border-white/10 px-5 py-3 text-sm sm:text-base text-center text-gray-700 dark:text-gray-200 font-medium shadow-sm",children:[o.jsx("span",{className:"text-gray-900 dark:text-white",children:t("landing:gallery.stats.designers")}),o.jsx("span",{className:"mx-3 text-gray-400",children:"•"}),o.jsx("span",{className:"text-gray-900 dark:text-white",children:t("landing:gallery.stats.saved")}),o.jsx("span",{className:"mx-3 text-gray-400",children:"•"}),o.jsx("span",{className:"text-gray-900 dark:text-white",children:t("landing:gallery.stats.cheaper")})]}),o.jsx("div",{className:"w-full flex items-center justify-center",children:o.jsx(ee,{asChild:!0,className:"w-full sm:w-auto bg-[#E60023] hover:bg-[#BD081C] text-white px-6 py-5 rounded-full font-semibold flex items-center justify-center gap-2 shadow-lg",children:o.jsxs(Ke,{to:"/auth?mode=signup",children:[o.jsx("span",{className:"font-heebo",children:t("common:buttons.tryFreeShort")}),o.jsx(Ga,{className:"w-4 h-4"})]})})})]})]})}),b&&o.jsx("div",{className:"fixed inset-0 z-[2000] flex items-center justify-center bg-black/30 px-4",onClick:()=>x(null),children:o.jsxs("div",{className:"relative w-full max-w-[420px] rounded-2xl border border-gray-100 bg-white p-6 text-center shadow-xl dark:border-gray-700 dark:bg-[#1A1A1A]",onClick:O=>O.stopPropagation(),children:[o.jsx("button",{type:"button",onClick:()=>x(null),className:"absolute right-4 top-4 text-gray-400 transition-colors hover:text-gray-600 dark:hover:text-gray-300","aria-label":"Close",children:o.jsx(Et,{className:"h-4 w-4"})}),o.jsx("h3",{className:"font-heebo mb-3 text-lg font-semibold text-gray-900 dark:text-white",children:t(`landing:features.${b}.title`)}),o.jsx("p",{className:"font-heebo mb-5 text-sm leading-relaxed text-gray-600 dark:text-gray-300",children:t(`landing:features.${b}.description`)}),o.jsx(ee,{type:"button",onClick:()=>x(null),className:"mx-auto inline-flex h-9 items-center justify-center rounded-full bg-gray-900 px-6 text-sm font-medium text-white hover:bg-gray-800 dark:bg-gray-700 dark:hover:bg-gray-600",children:o.jsx("span",{className:"font-heebo",children:t("common:buttons.gotIt")})})]})})]})},pN=()=>{const{t,i18n:e}=$e(["landing","common"]),a=Vt(),{user:i}=Pt(),[r,n]=m.useState(!1),{theme:s,setTheme:l}=wi(),c=[{to:"#materials",label:t("common:nav.materials"),description:t("common:nav.materialsDesc"),icon:on},{to:"#pricing",label:t("common:nav.pricing"),description:t("common:nav.pricingDesc"),icon:_f},{to:"#ai-agent",label:t("common:nav.aiAgent"),description:t("common:nav.aiAgentDesc"),icon:oi},{to:"#features",label:t("common:nav.features"),description:t("common:nav.featuresDesc"),icon:yl}],d=u=>{if(n(!1),u.startsWith("#")){const p=document.querySelector(u);p&&p.scrollIntoView({behavior:"smooth"})}};return o.jsxs("div",{className:"min-h-screen dot-grid-pinterest-light overflow-hidden",children:[o.jsx(Ku,{open:r,onOpenChange:n,children:o.jsxs(Il,{side:e.dir()==="rtl"?"right":"left",className:`w-[320px] sm:w-[360px] p-0 overflow-hidden bg-white text-slate-900 dark:bg-gray-900 dark:text-white ${e.dir()==="rtl"?"border-l":"border-r"} border-slate-200 dark:border-white/10 shadow-xl [&>button:last-child]:hidden`,children:[o.jsx(Yu,{className:"px-6 py-6 border-b border-slate-200/70 dark:border-white/10",children:o.jsxs("div",{className:"flex items-start justify-between gap-4",children:[o.jsxs("div",{className:"flex flex-col gap-3",children:[o.jsx("img",{src:s==="dark"?Ha:vi,alt:"Boardspace",className:"h-12 w-auto max-w-[200px] object-contain cursor-pointer",onClick:()=>{a(i?"/dashboard":"/"),n(!1)}}),o.jsx("p",{className:"text-xs uppercase tracking-[0.35em] text-slate-500 dark:text-white/50",children:t("common:footer.interiorVibingPlatform")})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ee,{variant:"ghost",size:"icon",onClick:()=>l(s==="dark"?"light":"dark"),className:"group h-8 w-8 rounded-full bg-slate-100 hover:bg-slate-200 dark:bg-white/5 dark:hover:bg-white/10 transition-colors",children:s==="dark"?o.jsx(ln,{className:"h-4 w-4 text-yellow-500 group-hover:text-yellow-400 transition-colors"}):o.jsx(rn,{className:"h-4 w-4 text-indigo-500 group-hover:text-indigo-400 transition-colors"})}),o.jsx(ee,{variant:"ghost",size:"icon",onClick:()=>n(!1),className:"group h-8 w-8 rounded-full bg-slate-100 hover:bg-slate-200 dark:bg-white/5 dark:hover:bg-white/10 transition-colors",children:o.jsx(Et,{className:"h-4 w-4 text-slate-500 transition-colors"})})]})]})}),o.jsxs("div",{className:"flex flex-col h-full overflow-y-auto",children:[o.jsx("nav",{className:"px-5 sm:px-6 py-6 space-y-3",children:c.map(u=>{const p=u.icon;return o.jsxs(Ke,{to:u.to,onClick:()=>
535d(u.to),className:"group flex items-center gap-4 rounded-2xl border border-slate-200 bg-white px-4 py-3 shadow-sm hover:border-emerald-500/40 hover:bg-emerald-50 transition-all dark:border-white/5 dark:bg-white/5 dark:hover:bg-emerald-500/10",children:[o.jsx("div",{className:"flex h-10 w-10 items-center justify-center rounded-xl bg-slate-100 text-slate-700 group-hover:bg-emerald-100 group-hover:text-emerald-600 transition-colors dark:bg-white/10 dark:text-white",children:o.jsx(p,{className:"h-5 w-5"})}),o.jsxs("div",{className:"flex flex-col",children:[o.jsx("span",{className:"text-sm font-semibold text-slate-900 dark:text-white tracking-tight",children:u.label}),o.jsx("span",{className:"text-xs text-slate-500 dark:text-white/60",children:u.description})]})]},u.to)})}),o.jsx("div",{className:"px-5 sm:px-6 pb-6 pt-4 border-t border-slate-200/70 dark:border-white/10 space-y-4",children:o.jsx("div",{className:"p-[2px] rounded-2xl bg-gradient-to-br from-emerald-300 via-emerald-400 to-emerald-500 shadow-[0_0_20px_rgba(16,185,129,0.5)] hover:shadow-[0_0_30px_rgba(16,185,129,0.7)] transition-all duration-300",children:o.jsx(ee,{className:"w-full h-12 rounded-[14px] bg-white dark:bg-gray-900 text-gray-800 dark:text-white font-semibold hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors",onClick:()=>{qa("Lead",{placement:"mobile_menu_get_started_free",stage:"pre_login"}),n(!1),a("/auth?mode=signup")},children:t("common:buttons.getStartedFree")})})})]})]})}),o.jsx(mN,{})]})},Ft=m.forwardRef(({className:t,type:e,...a},i)=>o.jsx("input",{type:e,className:y("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:i,...a}));Ft.displayName="Input";var hN="Label",Wv=m.forwardRef((t,e)=>o.jsx(Xe.label,{...t,ref:e,onMouseDown:a=>{var r;a.target.closest("button, input, select, textarea")||((r=t.onMouseDown)==null||r.call(t,a),!a.defaultPrevented&&a.detail>1&&a.preventDefault())}}));Wv.displayName=hN;var Hv=Wv;const gN=Mn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),Jt=m.forwardRef(({className:t,...e},a)=>o.jsx(Hv,{ref:a,className:y(gN(),t),...e}));Jt.displayName=Hv.displayName;function pa(){const{theme:t}=wi(),e=t==="dark"||t==="system"&&typeof window<"u"&&window.matchMedia("(prefers-color-scheme: dark)").matches;return{isDark:e,isLight:!e}}function Xu(t){return y("font-heebo text-[22px] font-black leading-tight tracking-[-0.02em] md:text-2xl",t?"text-white":"text-[#182137]")}function fN(t){return y("font-heebo text-[11px] font-medium tracking-[-0.01em]",t?"text-white/45":"text-[#182137]/50")}function bN(t){return y("font-heebo text-xs font-medium tracking-[-0.01em] transition-colors",t?"text-white/60 hover:text-white":"text-[#182137]/60 hover:text-[#182137]")}function vN(t){return y("rounded-md px-2 py-0.5 font-heebo text-[11px] font-bold tracking-[-0.01em]",t?"bg-[#F36A2D]/15 text-[#F36A2D]":"bg-[#EC7357]/15 text-[#D84B2E]")}const yN=768,xN=808,wN=1366;function Kv(){if(typeof window>"u")return!1;const t=window.matchMedia("(pointer: coarse)").matches,e=navigator.maxTouchPoints>0;return t||e}function kN(){var e;if(typeof window>"u")return 1024;const t=(e=window.visualViewport)==null?void 0:e.width;return Math.round(t||window.innerWidth)}function _N(){if(typeof window>"u")return null;try{const t=new URLSearchParams(window.location.search).get("tablet");if(t==="1")return"tablet";if(t==="0")return"desktop";if(t==="phone")return"phone"}catch{}return null}function rh(t){const e=_N();if(e)return e;const a=kN(),i=Kv();if(t==="phone"){if(a<xN)return"phone"}else if(a<yN)return"phone";return a<=wN&&i?"tablet":"desktop"}function SN(){const[t,e]=m.useState(()=>rh(null));return m.useEffect(()=>{if(typeof window>"u")return;let a=null;const i=()=>{e(d=>{const u=rh(d);return u===d?d:u})},r=()=>{a!=null&&cancelAnimationFrame(a),a=requestAnimationFrame(i)},n=window.matchMedia("(pointer: coarse)"),s=window.matchMedia("(hover: none)"),l=(d,u)=>{typeof d.addEventListener=="function"?d.addEventListener("change",u):typeof d.addListener=="function"&&d.addListener(u)},c=(d,u)=>{typeof d.removeEventListener=="function"?d.removeEventListener("change",u):typeof d.removeListener=="function"&&d.removeListener(u)};return window.addEventListener("resize",r),window.addEventListener("orientationchange",r),l(n,r),l(s,r),r(),()=>{a!=null&&cancelAnimationFrame(a),window.removeEventListener("resize",r),window.removeEventListener("orientationchange",r),c(n,r),c(s,r)}}
535,[]),{type:t,isPhone:t==="phone",isTablet:t==="tablet",isDesktop:t==="desktop",isTouch:Kv()}}function Gn(){const{isPhone:t}=SN();return t}function Cc(){if(typeof window>"u"||typeof navigator>"u")return{isWebView:!1,appName:"Unknown",platform:"unknown",canOpenExternal:!1};const t=navigator.userAgent||"",e=Yv(t),a=[{pattern:/FBAN|FBAV/i,name:"Facebook",app:"Facebook"},{pattern:/Instagram/i,name:"Instagram",app:"Instagram"},{pattern:/WhatsApp/i,name:"WhatsApp",app:"WhatsApp"},{pattern:/Twitter/i,name:"Twitter",app:"Twitter"},{pattern:/LinkedInApp/i,name:"LinkedIn",app:"LinkedIn"},{pattern:/Snapchat/i,name:"Snapchat",app:"Snapchat"},{pattern:/Pinterest/i,name:"Pinterest",app:"Pinterest"},{pattern:/TikTok/i,name:"TikTok",app:"TikTok"},{pattern:/Line/i,name:"Line",app:"Line"},{pattern:/Telegram/i,name:"Telegram",app:"Telegram"},{pattern:/WeChat/i,name:"WeChat",app:"WeChat"},{pattern:/Viber/i,name:"Viber",app:"Viber"},{pattern:/Gmail/i,name:"Gmail",app:"Gmail"},{pattern:/Outlook/i,name:"Outlook",app:"Outlook"},{pattern:/wv/i,name:"Android WebView",app:"Android App"},{pattern:/WebView/i,name:"WebView",app:"Mobile App"}];for(const{pattern:d,name:u,app:p}of a)if(d.test(t))return{isWebView:!0,appName:u,platform:e,canOpenExternal:nh(e)};const i=/iPhone|iPad|iPod/i.test(t),r=/Safari/i.test(t),n=/CriOS|FxiOS/i.test(t),s=i&&!r&&!n,c=/Android/i.test(t)&&/wv/i.test(t);return s||c?{isWebView:!0,appName:s?"iOS App":"Android App",platform:s?"ios":"android",canOpenExternal:nh(s?"ios":"android")}:{isWebView:!1,appName:"Browser",platform:e,canOpenExternal:!1}}function Yv(t){return/iPhone|iPad|iPod/i.test(t)?"ios":/Android/i.test(t)?"android":/Windows|Mac|Linux/i.test(t)?"desktop":"unknown"}function nh(t){return t==="ios"||t==="android"}function CN(t){try{const e=Yv(navigator.userAgent);if(e==="ios")return window.location.href=t,!0;if(e==="android"){const a=`intent://${t.replace(/https?:\/\//,"")}#Intent;scheme=https;action=android.intent.action.VIEW;end`;try{return window.location.href=a,!0}catch{return window.location.href=t,!0}}return window.open(t,"_blank","noopener,noreferrer"),!0}catch(e){return console.error("Failed to open external browser:",e),!1}}function TN(t,e){const{appName:a,platform:i}=t;return e?i==="ios"?{title:e("webViewWarning.titleIOS"),message:e("webViewWarning.messageIOS",{appName:a}),steps:[e("webViewWarning.stepIOS1"),e("webViewWarning.stepIOS2"),e("webViewWarning.stepIOS3")],ctaText:e("webViewWarning.ctaIOS")}:i==="android"?{title:e("webViewWarning.titleAndroid"),message:e("webViewWarning.messageAndroid",{appName:a}),steps:[e("webViewWarning.stepAndroid1"),e("webViewWarning.stepAndroid2"),e("webViewWarning.stepAndroid3")],ctaText:e("webViewWarning.ctaAndroid")}:{title:e("webViewWarning.titleGeneric"),message:e("webViewWarning.messageGeneric"),steps:[e("webViewWarning.stepGeneric1"),e("webViewWarning.stepGeneric2"),e("webViewWarning.stepGeneric3")],ctaText:e("webViewWarning.ctaGeneric")}:i==="ios"?{title:"Open in Safari to Continue",message:`Google sign-in doesn't work in ${a}'s browser for security reasons.`,steps:["Tap the share button (□↑) at the bottom",'Select "Open in Safari"',"Return here and try signing in again"],ctaText:"Copy Link to Safari"}:i==="android"?{title:"Open in Chrome to Continue",message:`Google sign-in doesn't work in ${a}'s browser for security reasons.`,steps:["Tap the menu (⋮) at the top right",'Select "Open in Chrome" or "Open in Browser"',"Return here and try signing in again"],ctaText:"Copy Link to Chrome"}:{title:"Open in Browser Required",message:"Please open this page in Safari or Chrome to sign in with Google.",steps:["Copy the link below","Open Safari or Chrome","Paste the link and try again"],ctaText:"Copy Link"}}var Qv="AlertDialog",[jN]=so(Qv,[cf]),Ja=cf(),Jv=t=>{const{__scopeAlertDialog:e,...a}=t,i=Ja(e);return o.jsx(mu,{...i,...a,modal:!0})};Jv.displayName=Qv;var NN="AlertDialogTrigger",Xv=m.forwardRef((t,e)=>{const{__scopeAlertDialog:a,...i}=t,r=Ja(a);return o.jsx(af,{...r,...i,ref:e})});Xv.displayName=NN;var PN="AlertDialogPortal",Zv=t=>{const{__scopeAlertDialog:e,...a}=t,i=Ja(e);return o.jsx(uu,{...i,...a}
535)};Zv.displayName=PN;var AN="AlertDialogOverlay",ey=m.forwardRef((t,e)=>{const{__scopeAlertDialog:a,...i}=t,r=Ja(a);return o.jsx(Rn,{...r,...i,ref:e})});ey.displayName=AN;var zo="AlertDialogContent",[EN,IN]=jN(zo),DN=Gg("AlertDialogContent"),ty=m.forwardRef((t,e)=>{const{__scopeAlertDialog:a,children:i,...r}=t,n=Ja(a),s=m.useRef(null),l=mt(e,s),c=m.useRef(null);return o.jsx(Sx,{contentName:zo,titleName:ay,docsSlug:"alert-dialog",children:o.jsx(EN,{scope:a,cancelRef:c,children:o.jsxs(lo,{role:"alertdialog",...n,...r,ref:l,onOpenAutoFocus:Le(r.onOpenAutoFocus,d=>{var u;d.preventDefault(),(u=c.current)==null||u.focus({preventScroll:!0})}),onPointerDownOutside:d=>d.preventDefault(),onInteractOutside:d=>d.preventDefault(),children:[o.jsx(DN,{children:i}),o.jsx(LN,{contentRef:s})]})})})});ty.displayName=zo;var ay="AlertDialogTitle",iy=m.forwardRef((t,e)=>{const{__scopeAlertDialog:a,...i}=t,r=Ja(a);return o.jsx(gr,{...r,...i,ref:e})});iy.displayName=ay;var oy="AlertDialogDescription",ry=m.forwardRef((t,e)=>{const{__scopeAlertDialog:a,...i}=t,r=Ja(a);return o.jsx(fr,{...r,...i,ref:e})});ry.displayName=oy;var RN="AlertDialogAction",ny=m.forwardRef((t,e)=>{const{__scopeAlertDialog:a,...i}=t,r=Ja(a);return o.jsx(bl,{...r,...i,ref:e})});ny.displayName=RN;var sy="AlertDialogCancel",ly=m.forwardRef((t,e)=>{const{__scopeAlertDialog:a,...i}=t,{cancelRef:r}=IN(sy,a),n=Ja(a),s=mt(e,r);return o.jsx(bl,{...n,...i,ref:s})});ly.displayName=sy;var LN=({contentRef:t})=>{const e=`\`${zo}\` requires a description for the component to be accessible for screen reader users.
536
537You can add a description to the \`${zo}\` by passing a \`${oy}\` component as a child, which also benefits sighted users by adding visible context to the dialog.
538
539Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${zo}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component.
540
541For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return m.useEffect(()=>{var i;document.getElementById((i=t.current)==null?void 0:i.getAttribute("aria-describedby"))||console.warn(e)},[e,t]),null},ON=Jv,MN=Xv,zN=Zv,cy=ey,dy=ty,uy=ny,my=ly,py=iy,hy=ry;const xn=ON,BN=MN,FN=zN,gy=m.forwardRef(({className:t,...e},a)=>o.jsx(cy,{className:y("fixed inset-0 z-[100] bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e,ref:a}));gy.displayName=cy.displayName;const lr=m.forwardRef(({className:t,...e},a)=>o.jsxs(FN,{children:[o.jsx(gy,{}),o.jsx(dy,{ref:a,className:y("fixed left-[50%] top-[50%] z-[100] grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...e})]}));lr.displayName=dy.displayName;const cr=({className:t,...e})=>o.jsx("div",{className:y("flex flex-col space-y-2 text-center sm:text-left",t),...e});cr.displayName="AlertDialogHeader";const dr=({className:t,...e})=>o.jsx("div",{className:y("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});dr.displayName="AlertDialogFooter";const ur=m.forwardRef(({className:t,...e},a)=>o.jsx(py,{ref:a,className:y("text-lg font-semibold",t),...e}));ur.displayName=py.displayName;const mr=m.forwardRef(({className:t,...e},a)=>o.jsx(hy,{ref:a,className:y("text-sm text-muted-foreground",t),...e}));mr.displayName=hy.displayName;const wn=m.forwardRef(({className:t,...e},a)=>o.jsx(uy,{ref:a,className:y(Fu(),t),...e}));wn.displayName=uy.displayName;const pr=m.forwardRef(({className:t,...e},a)=>o.jsx(my,{ref:a,className:y(Fu({variant:"outline"}),"mt-2 sm:mt-0",t),...e}));pr.displayName=my.displayName;function $N(){var te;const{t,i18n:e}=$e("auth"),a=e.language==="he"||((te=e.language)==null?void 0:te.startsWith("he-")),[i,r]=m.useState(""),[n,s]=m.useState(""),[l,c]=m.useState(""),[d,u]=m.useState(!1),[p,f]=m.useState(!1),[h,v]=m.useState(!1),[g,b]=m.useState(!1),[x,w]=m.useState(!1),[k,_]=m.useState(!1),[j,S]=m.useState(null),[C,N]=m.useState(!1),[P,E]=m.useState(!1),[L,A]=m.useState(!1),[I,R]=m.useState(""),[B,z]=m.useState(""),[Z,fe]=m.useState(!1),[O,Q]=m.useState(!1),[Y,K]=m.useState(""),[J,oe]=m.useState(!1),[ve,je]=m.useState(!1),[W,ue]=m.useState(!1),[ke,re]=m.useState(!1),ge=Vt(),M=It(),{user:Ee,signIn:Ne,signUp:We,signInWithGoogle:ze,signInWithFacebook:Ze,resetPassword:Ve,sendMagicLink:st,updatePassword:De}=Pt(),{theme:xt}=wi(),{isDark:we}=pa();Gn();const lt=()=>{var ae;const ce=new URLSearchParams(M.search).get("returnTo"),_e=(ae=M.state)==null?void 0:ae.from,Re=_e?`${_e.pathname||""}${_e.search||""}${_e.hash||""}`:"",ye=ce||Re;return ye.startsWith("/")&&!ye.startsWith("//")?ye:"/dashboard"},Tt=()=>{const D=new URL("/auth",window.location.origin);return D.searchParams.set("returnTo",lt()),D.toString()};m.useEffect(()=>{b(!0)},[]),m.useEffect(()=>{const D=Cc();S(D),D.isWebView},[]),m.useEffect(()=>{tv()},[]),m.useEffect(()=>{const ce=new URLSearchParams(M.search).get("mode");ce==="signup"?(v(!0),E(!1)):ce==="signin"?(v(!1),E(!1)):ce==="reset"&&(E(!0),v(!1))},[M.search]),m.useEffect(()=>{Ee&&(localStorage.getItem("marketplace_buyer_flow")&&(localStorage.removeItem("marketplace_buyer_flow"),V.from("profiles").update({account_type:"marketplace_buyer"}).eq("id",Ee.id).then(()=>{})),ge(lt(),{replace:!0}))},[Ee,ge,M]);const qt=async D=>{if(D.preventDefault(),!l.trim()){le.error("Please enter your full name");return}f(!0);let ce="en";try{const ae=await Bu();ce=vT(ae),`${ae}${ce}`}catch(ae){console.warn("[Auth] Geo detection failed, defaulting to English:",ae)}try{const ae=await V.functions.invoke("check-registration-rate-limit",{body:{email:i}});if(ae.error)console.warn("Rate limit check failed:",ae.error);else if(ae.data&&!ae.data.allowed){le.error(ae.data.message||"Too many registration attempts. Please try again later."),f(!1);return}}catch(ae){console.warn("Rate limit check error:",ae)}const _e=Td(),{error:Re,data:ye}=await We(i,n,l,ce,{utm_source:_e.utm_source,utm_medium:_e.utm_medium,utm_campaign:_e.utm_campaign,utm_c
541ontent:_e.utm_content});if(Re){console.error("Supabase signup error:",Re),le.error(Re.message),f(!1);return}if(ye!=null&&ye.user){try{const ae=Td();await new Promise(ne=>setTimeout(ne,100));const Oe=V.from("profiles").update({agreed_to_terms:!0,terms_consent_at:new Date().toISOString(),preferred_language:ce,utm_source:ae.utm_source||null,utm_medium:ae.utm_medium||null,utm_campaign:ae.utm_campaign||null,utm_content:ae.utm_content||null,utm_captured_at:ae.captured_at||null}).eq("id",ye.user.id),{error:ie}=await Oe;if(ie){console.error("Error updating profile with terms consent:",ie),await new Promise(Qe=>setTimeout(Qe,500));const ne=V.from("profiles").update({agreed_to_terms:!0,terms_consent_at:new Date().toISOString(),preferred_language:ce,utm_source:ae.utm_source||null,utm_medium:ae.utm_medium||null,utm_campaign:ae.utm_campaign||null,utm_content:ae.utm_content||null,utm_captured_at:ae.captured_at||null}).eq("id",ye.user.id),{error:Se}=await ne;Se?console.error("Error updating profile with terms consent (retry):",Se):jd()}else jd()}catch(ae){console.warn("Error processing signup:",ae)}qa("StartTrial")}w(!0),f(!1)},it=async D=>{D.preventDefault(),f(!0);const{error:ce}=await Ne(i,n);ce&&(console.error("Supabase sign-in error:",ce),ce.message.includes("email")&&ce.message.includes("confirm")?le.error("Please verify your email first",{action:{label:"Resend Email",onClick:()=>pt()}}):le.error(ce.message)),f(!1)},pt=async()=>{if(!i){le.error("Please enter your email address first");return}f(!0);try{const D=`${window.location.origin}/`,{error:ce}=await V.auth.resend({type:"signup",email:i,options:{emailRedirectTo:D}});ce?(console.error("Error resending confirmation:",ce),le.error(ce.message)):le.success("Confirmation email sent! Please check your inbox.",{duration:8e3,description:"Check your spam folder if you don't see it."})}catch(D){console.error("Unexpected error resending confirmation:",D),le.error("Failed to resend confirmation email. Please try again.")}finally{f(!1)}},At=async()=>{var _e,Re,ye;const D=Cc();if(D.isWebView){S(D),_(!0),f(!1);return}f(!0),h&&qa("StartTrial");const{error:ce}=await ze(Tt());if(ce){if(console.error("Google sign-in error:",ce),(_e=ce.message)!=null&&_e.includes("disallowed_useragent")||(Re=ce.message)!=null&&Re.includes("403")||(ye=ce.message)!=null&&ye.includes("secure browsers")||ce.code==="WEBVIEW_DETECTED"){const ae=Cc();S(ae),_(!0)}else le.error(ce.message||"Failed to sign in with Google");f(!1)}},wt=async()=>{f(!0),h&&qa("StartTrial");const{error:D}=await Ze(Tt());D&&(console.error("Facebook sign-in error:",D),le.error(D.message||"Failed to sign in with Facebook"),f(!1))},Zt=async()=>{ue(!0),h&&qa("StartTrial");const{error:D}=await Ze(Tt());D&&(console.error("WebView Facebook sign-in error:",D),le.error(D.message||"Failed to sign in with Facebook"),ue(!1))},ht=async()=>{if(!Y.trim())return;oe(!0);const{error:D}=await st(Y,Tt());if(oe(!1),D){le.error(D.message||"Failed to send magic link");return}je(!0)},ea=async()=>{try{await navigator.clipboard.writeText(window.location.href),N(!0),le.success("Link copied! Paste it in Safari or Chrome"),setTimeout(()=>N(!1),3e3)}catch{le.error("Failed to copy link")}},Gt=()=>{if(j!=null&&j.canOpenExternal){const D=window.location.href;CN(D)}else ea()},kt=async()=>{if(!i){le.error(t("common.emailPlaceholder"));return}fe(!0);try{const{error:D}=await st(i,Tt());D?le.error(D.message):le.success(t("signIn.magicLinkSent"),{duration:8e3})}catch{le.error("Failed to send magic link")}finally{fe(!1)}},Wt=async()=>{if(!i){le.error(t("common.emailPlaceholder"));return}Q(!0);try{const{error:D}=await Ve(i);D?le.error(D.message):(le.success(t("signIn.resetLinkSent"),{duration:8e3}),A(!1))}catch{le.error("Failed to send reset link")}finally{Q(!1)}},G=async D=>{if(D.preventDefault(),I!==B){le.error(t("signIn.passwordsDoNotMatch"));return}if(I.length<6){le.error("Password must be at least 6 characters");return}f(!0);try{const{error:ce}=await De(I);ce?le.error(ce.message):(le.success(t("signIn.passwordUpdated")),R(""),z(""),ge("/dashboard"))}catch{le.error("Failed to update password")}finally{f(!1)}};return o.jsxs("div",{className:y("min-h-screen overflow-hidden relative",we?"bg-[#0F1014]":"bg-[#F7F4EF]"),style:{backgroundImage:we?"radial-gradient(circle at center, rgba(255,255,255,0.05) 1.4px, transparent 1.6px)":"radial-gradient(circle at center, rgba(120,95,70,0.18) 1.4px, transparent 1.6px)",backgroundSize:"40px 40px"},children:[o.jsx(pe.div,{initial:{opacity:0,scale:.8},animate:g?{opacity:1,scale:1}:{},transition:{duration:.6,delay:.2},className:"absolute top-4 left-4 md:hidden z-20 cursor-pointer",onClick:()=>ge(Ee?"/dashboard":"/"),children:o.jsx("img",{src:xt==="dark"?Ha:vi,alt:"Boardspace",className:"h-[40px] md:h-[56px] w-auto"})}),o.jsx("div",{className:"fixed inset-0 bg-black/20 backdrop-blur-[2px]"}),o.jsx("div",{className:"flex min-h-screen items-center justify-center px-4 py-8 relative z-10",children:o.jsxs(pe.div,{initial:{opacity:0,y:20,scale:.95},animate:g?{opacity:1,y:0,scale:1}:{opacity:0,y:20,scale:.95},transition:{duration:.4,delay:.1,ease:[.16,1,.3,1]},className:"relative w-full max-w-[420px]",children:[o.jsx("button",{onClick:()=>ge("/"),className:y("absolute -top-2 z-30 h-9 w-9 rounded-full backdrop-blur-md transition-colors flex items-center justify-center",we?"bg-[#1A1B1E]/85 border border-white/10 text-white/70 hover:text-white hover:bg-[#1A1B1E]":"bg-white/90 border border-[#182137]/[
5410.08] text-[#182137]/60 hover:text-[#182137] hover:bg-white shadow-[0_2px_10px_rgba(24,33,55,0.08)]",a?"-left-2":"-right-2"),"aria-label":"Exit",children:o.jsx(Et,{className:"h-4 w-4"})}),o.jsxs("div",{className:y("relative rounded-2xl border p-6 max-h-[calc(100vh-4rem)] overflow-y-auto auth-scrollbar font-heebo",we?"bg-[#1A1B1E] border-white/10 shadow-[0_20px_60px_rgba(0,0,0,0.5)]":"bg-white border-[#182137]/[0.08] shadow-[0_24px_60px_rgba(24,33,55,0.14),0_4px_14px_rgba(24,33,55,0.06)]"),style:we?void 0:{backgroundImage:"radial-gradient(circle 1.5px at center, rgba(120, 95, 70, 0.10) 1px, transparent 2px)",backgroundSize:"44px 44px",backgroundColor:"#FFFFFF"},children:[o.jsxs("div",{className:"flex -mx-6 -mt-6 px-6 pt-6 pb-0 mb-6 gap-2",children:[o.jsxs("button",{onClick:()=>v(!1),className:y("flex-1 pb-4 font-heebo transition-colors relative",a?"text-[18px]":"text-[16px]"),style:{fontWeight:h?600:900,letterSpacing:a?"-0.04em":"-0.02em",color:h?we?"rgba(255,255,255,0.35)":"rgba(24,33,55,0.35)":we?"#FFFFFF":"#182137"},children:[t("signIn.tab"),!h&&o.jsx("span",{className:"absolute bottom-0 left-1/2 -translate-x-1/2 h-[3px] w-12 rounded-full",style:{background:"linear-gradient(90deg, #EC7357 0%, #D84B2E 100%)",boxShadow:"0 2px 8px rgba(216,75,46,0.35)"}})]}),o.jsxs("button",{onClick:()=>v(!0),className:y("flex-1 pb-4 font-heebo transition-colors relative",a?"text-[18px]":"text-[16px]"),style:{fontWeight:h?900:600,letterSpacing:a?"-0.04em":"-0.02em",color:h?we?"#FFFFFF":"#182137":we?"rgba(255,255,255,0.35)":"rgba(24,33,55,0.35)"},children:[t("signUp.tab"),h&&o.jsx("span",{className:"absolute bottom-0 left-1/2 -translate-x-1/2 h-[3px] w-12 rounded-full",style:{background:"linear-gradient(90deg, #EC7357 0%, #D84B2E 100%)",boxShadow:"0 2px 8px rgba(216,75,46,0.35)"}})]})]}),o.jsxs(pe.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},transition:{duration:.3},children:[h&&o.jsx("p",{className:y("font-heebo text-[12px] font-medium tracking-[-0.01em] text-center mb-2",we?"text-white/55":"text-[#182137]/55"),children:t("signUp.googleOneClick")}),o.jsxs(ee,{type:"button",className:y("w-full h-12 rounded-xl font-heebo font-bold text-[15px] tracking-[-0.02em] transition-all flex items-center justify-center border",we?"bg-white/[0.04] hover:bg-white/[0.08] text-white border-white/10 hover:border-white/20":"bg-white hover:bg-[#F7F4EF] text-[#182137] border-[#182137]/[0.12] hover:border-[#182137]/[0.20] shadow-[0_2px_8px_rgba(24,33,55,0.04)] hover:shadow-[0_4px_14px_rgba(24,33,55,0.08)]",p&&"cursor-not-allowed opacity-70",a&&"flex-row-reverse"),onClick:At,disabled:p,children:[o.jsxs("svg",{className:y("h-5 w-5 flex-shrink-0",a?"ms-2":"mr-2"),viewBox:"0 0 24 24",children:[o.jsx("path",{fill:"#4285F4",d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"}),o.jsx("path",{fill:"#34A853",d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"}),o.jsx("path",{fill:"#FBBC05",d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"}),o.jsx("path",{fill:"#EA4335",d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"})]}),t("common.continueWithGoogle")]}),o.jsx("div",{className:"mt-2.5",children:o.jsxs(ee,{type:"button",style:{background:"linear-gradient(to right, #4A90E2, #1877F2, #0E5A9E)",opacity:p?.75:1},className:y("w-full h-11 rounded-lg font-heebo font-semibold text-[14px] tracking-[-0.01em] transition-colors text-white",p?"cursor-not-allowed":"cursor-pointer hover:brightness-110",a&&"flex-row-reverse"),onClick:wt,disabled:p,children:[o.jsx("svg",{className:y("h-4 w-4 flex-shrink-0",a?"ms-2":"mr-2"),fill:"currentColor",viewBox:"0 0 24 24",children:o.jsx("path",{d:"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"})}
541),t("common.continueWithFacebook")]})}),o.jsxs("div",{className:"flex items-center gap-3 my-5",children:[o.jsx("div",{className:y("flex-1 h-px",we?"bg-white/[0.08]":"bg-[#182137]/[0.08]")}),o.jsx("p",{className:y("font-heebo text-[11px] font-medium tracking-[-0.01em] uppercase",we?"text-white/45":"text-[#182137]/45"),children:t(h?"signUp.orSignUpWithEmail":"signIn.orSignInWith")}),o.jsx("div",{className:y("flex-1 h-px",we?"bg-white/[0.08]":"bg-[#182137]/[0.08]")})]}),o.jsxs("form",{onSubmit:h?qt:it,className:"space-y-3",children:[h&&o.jsxs(pe.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.3},className:"space-y-1.5",children:[o.jsx(Jt,{htmlFor:"name",className:y("font-heebo text-[12px] font-semibold tracking-[-0.01em]",we?"text-white/70":"text-[#182137]/70"),children:t("signUp.fullName")}),o.jsx(Ft,{id:"name",type:"text",placeholder:t("signUp.fullNamePlaceholder"),className:y("h-12 rounded-xl px-4 font-heebo text-[15px] transition-all focus:ring-2 focus:ring-offset-0",we?"!bg-white/[0.03] border-white/10 focus:border-[#F36A2D] focus:ring-[#F36A2D]/20 text-white placeholder:text-white/35":"!bg-[#F7F4EF] border-[#182137]/[0.08] focus:border-[#EC7357] focus:ring-[#EC7357]/15 focus:!bg-white text-[#182137] placeholder:text-[#182137]/40"),value:l,onChange:D=>c(D.target.value),required:!0})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx(Jt,{htmlFor:"email",className:y("font-heebo text-[12px] font-semibold tracking-[-0.01em]",we?"text-white/70":"text-[#182137]/70"),children:t("common.email")}),o.jsx(Ft,{id:"email",type:"email",placeholder:t("common.emailPlaceholder"),className:y("h-12 rounded-xl px-4 font-heebo text-[15px] transition-all focus:ring-2 focus:ring-offset-0",we?"!bg-white/[0.03] border-white/10 focus:border-[#F36A2D] focus:ring-[#F36A2D]/20 text-white placeholder:text-white/35":"!bg-[#F7F4EF] border-[#182137]/[0.08] focus:border-[#EC7357] focus:ring-[#EC7357]/15 focus:!bg-white text-[#182137] placeholder:text-[#182137]/40"),value:i,onChange:D=>r(D.target.value),required:!0})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx(Jt,{htmlFor:"password",className:y("font-heebo text-[12px] font-semibold tracking-[-0.01em]",we?"text-white/70":"text-[#182137]/70"),children:t("common.password")}),o.jsxs("div",{className:"relative",children:[o.jsx(Ft,{id:"password",type:d?"text":"password",placeholder:t(h?"signUp.createPassword":"signIn.enterPassword"),className:y("h-12 rounded-xl px-4 font-heebo text-[15px] transition-all focus:ring-2 focus:ring-offset-0 pr-10",we?"!bg-white/[0.03] border-white/10 focus:border-[#F36A2D] focus:ring-[#F36A2D]/20 text-white placeholder:text-white/35":"!bg-[#F7F4EF] border-[#182137]/[0.08] focus:border-[#EC7357] focus:ring-[#EC7357]/15 focus:!bg-white text-[#182137] placeholder:text-[#182137]/40"),value:n,onChange:D=>s(D.target.value),required:!0,minLength:h?6:void 0}),o.jsx("button",{type:"button",onClick:()=>u(!d),className:y("absolute top-1/2 transform -translate-y-1/2 transition-colors",a?"left-3":"right-3",we?"text-white/45 hover:text-white":"text-[#182137]/45 hover:text-[#182137]"),"aria-label":d?"Hide password":"Show password",children:d?o.jsx(Im,{className:"h-4 w-4"}):o.jsx(Dm,{className:"h-4 w-4"})})]})]}),o.jsx(ee,{type:"submit",className:y("w-full h-12 rounded-xl font-heebo text-[15px] transition-all mt-3 text-white border-0 disabled:opacity-50 disabled:cursor-not-allowed","bg-gradient-to-br from-[#EC7357] via-[#D84B2E] to-[#B33D24] hover:from-[#F08066] hover:via-[#E25735] hover:to-[#C24628]","shadow-[0_10px_30px_rgba(216,75,46,0.3)] hover:shadow-[0_14px_40px_rgba(216,75,46,0.45)]"),style:{fontWeight:800,letterSpacing:a?"-0.03em":"-0.02em"},disabled:p,children:p?o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin"}),o.jsx("span",{children:t(h?"signUp.creatingAccount":"signIn.signingIn")})]}):o.jsx("span",{children:t(h?"signUp.createAccount":"signIn.signIn")})}),o.jsxs("p",{className:y("font-heebo text-[11px] tracking-[-0.01em] text-center mt-3 leading-relaxed",we?"text-white/45":"text-[#182137]/50"),children:[t("signUp.byContinuing")," ",o.jsx(Ke,{to:"/privacy",target:"_blank",rel:"noopener noreferrer",className:y("underline underline-offset-2 transition-colors",we?"text-white/70 hover:text-white":"text-[#182137]/70 hover:text-[#182137]"),children:t("signUp.privacyPolicy")})," ",t("signUp.and")," ",o.jsx(Ke,{to:"/terms",target:"_blank",rel:"noopener noreferrer",className:y("underline underline-offset-2 transition-colors",we?"text-white/70 hover:text-white":"text-[#182137]/70 hover:text-[#182137]"),children:t("signUp.termsOfService")})]}),!h&&o.jsxs("div",{className:"mt-5 space-y-2.5",children:[o.jsx("p",{className:y("font-heebo text-[11px] font-semibold tracking-[-0.01em] text-center",we?"text-white/55":"text-[#182137]/55"),children:t("signIn.magicLinkHint")}),o.jsx(ee,{type:"button",variant:"outline",className:y("w-full h-12 rounded-xl font-heebo font-bold text-[15px] tracking-[-0.02em] transition-all border",we?"bg-white/[0.02] border-white/10 text-white hover:bg-white/[0.06] hover:border-white/20":"bg-white border-[#182137]/[
5410.12] text-[#182137] hover:bg-[#F7F4EF] hover:border-[#182137]/[0.20] shadow-[0_2px_8px_rgba(24,33,55,0.04)] hover:shadow-[0_4px_14px_rgba(24,33,55,0.08)]"),onClick:kt,disabled:Z||!i,children:Z?o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:y("w-4 h-4 border-2 rounded-full animate-spin",we?"border-white/30 border-t-white":"border-[#182137]/30 border-t-[#182137]")}),o.jsx("span",{children:t("signIn.sendingMagicLink")})]}):o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Wa,{className:y("h-4 w-4",we?"text-[#F36A2D]":"text-[#EC7357]")}),o.jsx("span",{children:t("signIn.sendMagicLink")})]})}),o.jsx("div",{className:"text-center pt-1",children:o.jsx("button",{type:"button",onClick:()=>A(!0),className:y("font-heebo text-[12px] font-medium tracking-[-0.01em] transition-colors underline underline-offset-2",we?"text-white/55 hover:text-white":"text-[#182137]/55 hover:text-[#182137]"),children:t("signIn.forgotPassword")})})]})]})]},h?"signup":"signin")]})]})}),o.jsx(Ts,{children:x&&o.jsx(pe.div,{initial:{opacity:0}
541,animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm p-4",onClick:()=>w(!1),children:o.jsxs(pe.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.3,ease:[.16,1,.3,1]},className:"relative !bg-white dark:!bg-card rounded-2xl shadow-2xl max-w-md w-full p-8 md:p-10",onClick:D=>D.stopPropagation(),children:[o.jsx("div",{className:"flex justify-center mb-6",children:o.jsxs("div",{className:"relative",children:[o.jsx("div",{className:"absolute inset-0 bg-[#DC2626]/10 rounded-full animate-ping"}),o.jsx("div",{className:"relative bg-[#DC2626]/10 rounded-full p-4",children:o.jsx(Hr,{className:"h-8 w-8 md:h-10 md:w-10 text-[#DC2626]"})})]})}),o.jsxs("div",{className:"text-center mb-6",children:[o.jsx("h2",{className:`${a?"font-heebo":""} text-2xl md:text-3xl font-bold text-gray-900 dark:text-foreground mb-3`,children:t("emailConfirmation.title")}),o.jsx("p",{className:`${a?"font-heebo":""} text-gray-600 dark:text-muted-foreground text-base md:text-lg leading-relaxed`,children:t("emailConfirmation.message")}),o.jsx("p",{className:`${a?"font-heebo":""} text-gray-900 dark:text-foreground font-semibold text-base md:text-lg mt-2 break-all`,children:i})]}),o.jsx("div",{className:"bg-gray-50 dark:bg-muted rounded-xl p-4 mb-6",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Wa,{className:"h-5 w-5 text-[#DC2626] flex-shrink-0 mt-0.5"}),o.jsxs("div",{className:`${a?"font-heebo":""} text-sm text-gray-600 dark:text-muted-foreground leading-relaxed`,children:[o.jsx("p",{className:"mb-1",children:t("emailConfirmation.instructions")}),o.jsx("p",{className:"text-xs text-gray-500 dark:text-muted-foreground mt-2",children:t("emailConfirmation.checkSpam")})]})]})}),o.jsx(ee,{onClick:()=>w(!1),className:"w-full bg-gray-900 hover:bg-gray-800 text-white font-medium rounded-md h-11 transition-colors text-sm",children:t("common:buttons.gotIt")})]})})}),j&&o.jsx(xn,{open:k,onOpenChange:D=>{_(D),D||(je(!1),K(""),re(!1))},children:o.jsxs(lr,{className:"sm:max-w-md",dir:a?"rtl":"ltr",children:[o.jsxs(cr,{children:[o.jsx(ur,{className:y("text-xl",a&&"font-heebo"),children:t("webViewWarning.quickSignIn")}),o.jsx(mr,{className:y("pt-1",a&&"font-heebo"),children:t("webViewWarning.subtitle")})]}),o.jsxs("div",{className:"space-y-4 py-2",children:[o.jsxs(ee,{type:"button",onClick:Zt,disabled:W,style:{background:"linear-gradient(to right, #4A90E2, #1877F2, #0E5A9E)"},className:y("w-full h-12 rounded-lg font-heebo font-semibold text-[15px] tracking-[-0.01em] text-white transition-colors",W?"cursor-not-allowed opacity-75":"hover:brightness-110",a&&"flex-row-reverse"),children:[o.jsx("svg",{className:y("h-5 w-5 flex-shrink-0",a?"ms-2":"mr-2"),fill:"currentColor",viewBox:"0 0 24 24",children:o.jsx("path",{d:"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"})}),t("webViewWarning.continueWithFacebook")]}),o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:"flex-1 h-px bg-gray-200 dark:bg-gray-700"}),o.jsx("span",{className:y("text-xs uppercase text-gray-500 dark:text-gray-400",a&&"font-heebo"),children:t("webViewWarning.dividerOr")}),o.jsx("div",{className:"flex-1 h-px bg-gray-200 dark:bg-gray-700"})]}),ve?o.jsx("div",{className:"bg-emerald-50 dark:bg-emerald-950/20 border border-emerald-200 dark:border-emerald-800 rounded-lg p-4",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Hr,{className:"h-5 w-5 text-emerald-600 dark:text-emerald-400 flex-shrink-0 mt-0.5"}),o.jsx("p",{className:y("text-sm font-semibold text-emerald-900 dark:text-emerald-200",a&&"font-heebo"),children:t("webViewWarning.magicLinkSent")})]})}):o.jsxs("div",{className:"space-y-2",children:[o.jsx(Jt,{htmlFor:"webview-email",className:y("text-sm",a&&"font-heebo"),children:t("webViewWarning.emailLabel")}),o.jsx(Ft,{id:"webview-email",type:"email",inputMode:"email",autoComplete:"email",value:Y,onChange:D=>K(D.target.value),placeholder:t("webViewWarning.emailPlaceholder"),className:y("h-11",a&&"font-heebo text-right"),dir:a?"rtl":"ltr"}),o.jsxs(ee,{type:"button",onClick:ht,disabled:J||!Y.trim(),className:y("w-full h-11 rounded-lg font-heebo font-semibold text-[14px] bg-[#182137] hover:bg-[#182137]/90 text-white",(J||!Y.trim())&&"cursor-not-allowed opacity-60",a&&"flex-row-reverse"),children:[o.jsx(Wa,{className:y("h-4 w-4 flex-shrink-0",a?"ms-2":"mr-2")}),t(J?"webViewWarning.sendingMagicLink":"webViewWarning.sendMagicLinkCta")]})]}),o.jsx("button",{type:"button",onClick:()=>{_(!1),setTimeout(()=>{var D;return(D=document.getElementById("email"))==null?void 0:D.focus()},100)},className:y("w-full text-center text-sm text-[#182137]/70 hover:text-[#182137] dark:text-white/70 dark:hover:text-white underline-offset-4 hover:underline transition-colors",a&&"font-heebo"),children:t("webViewWarning.useEmailPassword")}),o.jsxs("div",{className:"border-t border-gray-200 dark:border-gray-700 pt-3",children:[o.jsxs("button",{type:"button",onClick:()=>re(D=>!D),className:y("w-full flex items-center justify-between text-xs text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 transition-colors",a&&"font-heebo flex-row-reverse"),children:[o.jsx("span",{children:t("webViewWarning.needGoogleSafari")}),o.jsx(ar,{className:y("h-4 w-4 transition-transform",ke&&"rotate-180")}
541)]}),ke&&o.jsxs("div",{className:"mt-3 bg-amber-50 dark:bg-amber-950/20 border border-amber-200 dark:border-amber-800 rounded-lg p-3",children:[o.jsx("ol",{className:y("list-decimal list-inside space-y-1 text-xs text-amber-800 dark:text-amber-300",a&&"font-heebo list-outside ms-4"),children:TN(j,t).steps.map((D,ce)=>o.jsx("li",{children:D},ce))}),o.jsxs("div",{className:"flex gap-2 mt-3",children:[o.jsxs("button",{type:"button",onClick:ea,className:y("flex items-center gap-1.5 text-xs px-2.5 py-1.5 rounded border border-amber-300 dark:border-amber-700 text-amber-900 dark:text-amber-200 hover:bg-amber-100 dark:hover:bg-amber-900/30",a&&"font-heebo"),children:[C?o.jsx(Hr,{className:"h-3.5 w-3.5"}):o.jsx(ww,{className:"h-3.5 w-3.5"}),t(C?"webViewWarning.copied":"webViewWarning.copyLink")]}),j.canOpenExternal&&o.jsxs("button",{type:"button",onClick:Gt,className:y("flex items-center gap-1.5 text-xs px-2.5 py-1.5 rounded bg-amber-600 hover:bg-amber-700 text-white",a&&"font-heebo"),children:[o.jsx(Co,{className:"h-3.5 w-3.5"}),t("webViewWarning.openInBrowser")]})]})]})]})]}),o.jsx(dr,{children:o.jsx(pr,{className:y(a&&"font-heebo"),children:t("webViewWarning.cancel")})})]})}),o.jsx(Ts,{children:L&&o.jsx(pe.div,{initial:{opacity:0}
541,animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm p-4",onClick:()=>A(!1),children:o.jsxs(pe.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.3,ease:[.16,1,.3,1]},className:"relative !bg-white dark:!bg-card rounded-2xl shadow-2xl max-w-md w-full p-8 md:p-10",onClick:D=>D.stopPropagation(),children:[o.jsx("button",{onClick:()=>A(!1),className:"absolute top-4 right-4 text-gray-400 hover:text-gray-600 dark:hover:text-foreground transition-colors",children:o.jsx(Et,{className:"h-5 w-5"})}),o.jsxs("div",{className:"text-center mb-6",children:[o.jsx("h2",{className:`${a?"font-heebo":""} text-2xl md:text-3xl font-bold text-gray-900 dark:text-foreground mb-2`,children:t("signIn.resetPassword")}),o.jsx("p",{className:`${a?"font-heebo":""} text-gray-600 dark:text-muted-foreground text-sm`,children:t("signIn.subtitle")})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(Jt,{htmlFor:"reset-email",className:`${a?"font-heebo":""} text-sm font-normal text-gray-700 dark:text-foreground`,children:t("common.email")}),o.jsx(Ft,{id:"reset-email",type:"email",placeholder:t("common.emailPlaceholder"),className:y("h-10 rounded-md px-4 border-gray-200 dark:border-input focus:border-gray-400 dark:focus:border-ring focus:ring-0 transition-colors !bg-white dark:!bg-card text-gray-900 dark:text-foreground placeholder:text-gray-400 dark:placeholder:text-muted-foreground"),value:i,onChange:D=>r(D.target.value)})]}),o.jsx(ee,{onClick:Wt,className:"w-full h-10 bg-gray-900 hover:bg-gray-800 text-white font-medium rounded-md transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:O||!i,children:O?o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin"}),o.jsx("span",{className:`${a?"font-heebo":""}`,children:t("signIn.sendingResetLink")})]}):o.jsx("span",{className:`${a?"font-heebo":""}`,children:t("signIn.sendResetLink")})})]})]})})}),o.jsx(Ts,{children:P&&o.jsx(pe.div,{initial:{opacity:0}
541,animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm p-4",children:o.jsxs(pe.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.3,ease:[.16,1,.3,1]},className:"relative !bg-white dark:!bg-card rounded-2xl shadow-2xl max-w-md w-full p-8 md:p-10",children:[o.jsxs("div",{className:"text-center mb-6",children:[o.jsx("h2",{className:`${a?"font-heebo":""} text-2xl md:text-3xl font-bold text-gray-900 dark:text-foreground mb-2`,children:t("signIn.resetPassword")}),o.jsx("p",{className:`${a?"font-heebo":""} text-gray-600 dark:text-muted-foreground text-sm`,children:t("signIn.enterNewPassword")})]}),o.jsxs("form",{onSubmit:G,className:"space-y-4",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(Jt,{htmlFor:"new-password",className:`${a?"font-heebo":""} text-sm font-normal text-gray-700 dark:text-foreground`,children:t("signIn.newPassword")}),o.jsxs("div",{className:"relative",children:[o.jsx(Ft,{id:"new-password",type:d?"text":"password",placeholder:t("signIn.enterNewPassword"),className:y("h-10 rounded-md px-4 border-gray-200 dark:border-input focus:border-gray-400 dark:focus:border-ring focus:ring-0 transition-colors !bg-white dark:!bg-card text-gray-900 dark:text-foreground placeholder:text-gray-400 dark:placeholder:text-muted-foreground pr-10"),value:I,onChange:D=>R(D.target.value),required:!0,minLength:6}),o.jsx("button",{type:"button",onClick:()=>u(!d),className:"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 dark:text-muted-foreground hover:text-gray-600 dark:hover:text-foreground transition-colors",children:d?o.jsx(Im,{className:"h-4 w-4"}):o.jsx(Dm,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx(Jt,{htmlFor:"confirm-password",className:`${a?"font-heebo":""} text-sm font-normal text-gray-700 dark:text-foreground`,children:t("signIn.confirmPassword")}),o.jsx(Ft,{id:"confirm-password",type:d?"text":"password",placeholder:t("signIn.confirmNewPassword"),className:y("h-10 rounded-md px-4 border-gray-200 dark:border-input focus:border-gray-400 dark:focus:border-ring focus:ring-0 transition-colors !bg-white dark:!bg-card text-gray-900 dark:text-foreground placeholder:text-gray-400 dark:placeholder:text-muted-foreground"),value:B,onChange:D=>z(D.target.value),required:!0,minLength:6})]}),o.jsx(ee,{type:"submit",className:"w-full h-10 bg-gray-900 hover:bg-gray-800 text-white font-medium rounded-md transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:p||!I||!B,children:p?o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 border-2 border-white/30 border-t-white rounded-full animate-spin"}),o.jsx("span",{className:`${a?"font-heebo":""}`,children:t("signIn.updatingPassword")})]}):o.jsx("span",{className:`${a?"font-heebo":""}`,children:t("signIn.updatePassword")})})]})]})})})]})}const VN=()=>{const{user:t}=Pt(),{data:e,isLoading:a,error:i,refetch:r}=ta({queryKey:["user-profile",t==null?void 0:t.id],queryFn:async()=>{if(!t)throw console.warn("⚠️ useUserProfile: No user available"),new Error("No user");const{data:d,error:u}=await V.from("profiles").select("plan_type, one_time_pack_name, stripe_subscription_id, subscription_status, sub_start_date, next_sub_payment, last_payment_date, last_payment_amount, cancelled_at, access_ends_at, organization_id, pending_plan_type, pending_plan_effective_at").eq("id",t.id).maybeSingle();if(u)throw console.error("❌ Error fetching profile:",u),u;return d||{plan_type:"free",one_time_pack_name:null,stripe_subscription_id:null,subscription_status:null,sub_start_date:null,next_sub_payment:null,last_payment_date:null,last_payment_amount:null,cancelled_at:null,access_ends_at:null,organization_id:null,pending_plan_type:null,pending_plan_effective_at:null}},enabled:!!t,refetchInterval:!1,refetchOnMount:!0,refetchOnWindowFocus:!0,staleTime:3e4,gcTime:3e5,retry:1});i&&console.error("❌ useUserProfile hook error:",i);const n=()=>
541{if(!!!(e!=null&&e.stripe_subscription_id))return!1;const u=((e==null?void 0:e.subscription_status)||"").toLowerCase().trim();return!u||u==="active"||u==="past_due"||u==="trialing"||u==="unpaid"||u==="paused"?!0:u==="cancel_at_period_end"?e!=null&&e.access_ends_at?new Date(e.access_ends_at)>new Date:!0:u==="cancelled"||u==="canceled"||u==="incomplete_expired"?!!(e!=null&&e.access_ends_at)&&new Date(e.access_ends_at)>new Date:!0};return{profile:e,isLoading:a,error:i,refetch:r,hasActiveSubscription:n,getMemberSinceDate:()=>e!=null&&e.sub_start_date?new Date(e.sub_start_date).toLocaleDateString("en-US",{month:"long",year:"numeric"}):null,getNextPaymentDate:()=>e!=null&&e.next_sub_payment?new Date(e.next_sub_payment).toLocaleDateString("en-US",{day:"numeric",month:"long",year:"numeric"}):null,getPlanDisplayName:()=>e?n()&&e.plan_type&&e.plan_type!=="free"?e.plan_type.charAt(0).toUpperCase()+e.plan_type.slice(1):e.one_time_pack_name?e.one_time_pack_name.split(/[-_]/).map(p=>p.charAt(0).toUpperCase()+p.slice(1)).join(" "):!e.plan_type||e.plan_type==="free"?"Free":e.plan_type.charAt(0).toUpperCase()+e.plan_type.slice(1):"Free"}},Rl=()=>{const{user:t}=Pt(),e=yr(),{toast:a}=On(),{data:i,isLoading:r}=ta({queryKey:["organization",t==null?void 0:t.id],queryFn:async()=>{if(!t)return null;const{data:x,error:w}=await V.from("organizations").select("*").eq("owner_id",t.id).maybeSingle();if(x&&!w)return x;const{data:k,error:_}=await V.from("organization_members").select("organization_id, role").eq("user_id",t.id).eq("status","active").maybeSingle();if(_||!k)return null;const{data:j,error:S}=await V.from("organizations").select("*").eq("id",k.organization_id).maybeSingle();return S||!j?null:j},enabled:!!t}),{data:n=[],isLoading:s}=ta({queryKey:["organization-members",i==null?void 0:i.id],queryFn:async()=>{if(!i)return[];try{const{data:P,error:E}=await V.rpc("get_organization_members_with_emails",{p_organization_id:i.id}),L=P??[];if(!E&&L&&L.length>0)return L.map(A=>({id:A.id,organization_id:A.organization_id,user_id:A.user_id,role:A.role,status:A.status,joined_at:A.joined_at,invited_by:A.invited_by,profile:{email:A.email||void 0}}))}catch(P){console.warn("RPC function not available, falling back to direct query:",P)}const{data:x,error:w}=await V.from("organization_members").select("*").eq("organization_id",i.id).eq("status","active").order("joined_at",{ascending:!1});if(w)return console.error("Error fetching members:",w),[];if(!x||x.length===0)return[];const k=x.map(P=>P.user_id),{data:_}=await V.from("profiles").select("id, email").in("id",k),{data:j}=await V.from("organization_invites").select("email, accepted_at").eq("organization_id",i.id).not("accepted_at","is",null),S=new Map;_&&_.forEach(P=>{P.email&&S.set(P.id,P.email)});const C=x.filter(P=>!S.has(P.user_id));if(C.length>0){const P=C.map(async L=>{try{const{data:A}=await V.rpc("get_user_email",{user_uuid:L.user_id});return{userId:L.user_id,email:A}}catch{const I=_==null?void 0:_.find(R=>R.id===L.user_id);if(I&&j){const R=j.find(B=>B.email&&I.email&&B.email.toLowerCase()===I.email.toLowerCase());if(R!=null&&R.email)return{userId:L.user_id,email:R.email}}return{userId:L.user_id,email:null}}});(await Promise.all(P)).forEach(({userId:L,email:A})=>{A&&S.set(L,A)})}return x.map(P=>({...P,profile:{email:S.get(P.user_id)||void 0}}))},enabled:!!i}),{data:l=[],isLoading:c}=ta({queryKey:["organization-invites",i==null?void 0:i.id],queryFn:async()=>{if(!i)return[];const{data:x,error:w}=await V.from("organization_invites").select("*").eq("organization_id",i.id).order("created_at",{ascending:!1});return w?(console.error("Error fetching invites:",w),[]):x||[]},enabled:!!i});new Set(n.map(x=>x.user_id));const d=l.filter(x=>!x.accepted_at&&new Date(x.expires_at)>new Date),u=l.filter(x=>x.accepted_at?!!n.find(k=>{var _;return((_=k.profile)==null?void 0:_.email)&&k.profile.email.toLowerCase()===x.email.toLowerCase()}):!1),p=l.filter(x=>!x.accepted_at&&new Date(x.expires_at)<=new Date),{data:f}=ta({queryKey:["organization-role",t==null?void 0:t.id,i==null?void 0:i.id],queryFn:async()=>{if(!t||!i)return null;if(i.owner_id===t.id)return"owner";const{data:x,error:w}=await V.from("organization_members").select("role").eq("user_id",t.id).eq("organization_id",i.id).eq("status","active").maybeSingle();return w||!x?null:x.role},enabled:!!t&&!!i}),{data:h=[],isLoading:v}=ta({queryKey:["user-pending-invites",t==null?void 0:t.id,t==null?void 0:t.email],queryFn:async()=>
541{if(!t)return[];let x=t.email;if(t.id){const{data:_,error:j}=await V.from("profiles").select("email").eq("id",t.id).maybeSingle();_!=null&&_.email&&(x=_.email)}if(!x)return[];const{data:w,error:k}=await V.from("organization_invites").select(`
542          *,
543          organization:organizations (
544            id,
545            name,
546            owner_id
547          )
548        `).eq("email",x.toLowerCase()).is("accepted_at",null).gt("expires_at",new Date().toISOString()).order("created_at",{ascending:!1});return k?(console.error("Error fetching user invites:",k),[]):w||[]},enabled:!!t}),g=No({mutationFn:async({email:x,role:w})=>{const{data:k,error:_}=await V.functions.invoke("invite-team-member",{body:{email:x,role:w}});if(_)throw _;if(k!=null&&k.error)throw new Error(k.error);return k},onSuccess:x=>{var w;e.invalidateQueries({queryKey:["organization-invites"]}),a({title:"Invite sent",description:`Team member invite has been sent to ${((w=x==null?void 0:x.invite)==null?void 0:w.email)||"the user"}.`})},onError:x=>{a({title:"Error",description:x.message||"Failed to send invite",variant:"destructive"})}}),b=No({mutationFn:async x=>{const{data:w,error:k}=await V.functions.invoke("remove-team-member",{body:{user_id:x}});if(k)throw k;if(w!=null&&w.error)throw new Error(w.error);return w},onSuccess:()=>{e.invalidateQueries({queryKey:["organization-members"]}),e.invalidateQueries({queryKey:["organization",t==null?void 0:t.id]}),e.invalidateQueries({queryKey:["user-profile"]}),a({title:"Member removed",description:"Team member has been removed successfully."})},onError:x=>{a({title:"Error",description:x.message||"Failed to remove member",variant:"destructive"})}});return{organization:i,members:n,pendingInvites:d,acceptedInvites:u,expiredInvites:p,allInvites:l,userPendingInvites:h,userRole:f,isLoading:r||s||c||v,isOwner:f==="owner",isAdmin:f==="admin"||f==="owner",isMember:f==="member"||f==="admin"||f==="owner",inviteUser:g.mutateAsync,removeUser:b.mutateAsync,isInviting:g.isPending,isRemoving:b.isPending}};function UN(){for(var t=arguments.length,e=new Array(t),a=0;a<t;a++)e[a]=arguments[a];return m.useMemo(()=>i=>{e.forEach(r=>r(i))},e)}const Ll=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Sr(t){const e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"}function Zu(t){return"nodeType"in t}function Xt(t){var e,a;return t?Sr(t)?t:Zu(t)&&(e=(a=t.ownerDocument)==null?void 0:a.defaultView)!=null?e:window:window}function em(t){const{Document:e}=Xt(t);return t instanceof e}function Wn(t){return Sr(t)?!1:t instanceof Xt(t).HTMLElement}function fy(t){return t instanceof Xt(t).SVGElement}function Cr(t){return t?Sr(t)?t.document:Zu(t)?em(t)?t:Wn(t)||fy(t)?t.ownerDocument:document:document:document}const Ia=Ll?m.useLayoutEffect:m.useEffect;function tm(t){const e=m.useRef(t);return Ia(()=>{e.current=t}),m.useCallback(function(){for(var a=arguments.length,i=new Array(a),r=0;r<a;r++)i[r]=arguments[r];return e.current==null?void 0:e.current(...i)},[])}function qN(){const t=m.useRef(null),e=m.useCallback((i,r)=>{t.current=setInterval(i,r)},[]),a=m.useCallback(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[]);return[e,a]}function kn(t,e){e===void 0&&(e=[t]);const a=m.useRef(t);return Ia(()=>{a.current!==t&&(a.current=t)},e),a}function Hn(t,e){const a=m.useRef();return m.useMemo(()=>{const i=t(a.current);return a.current=i,i},[...e])}function nl(t){const e=tm(t),a=m.useRef(null),i=m.useCallback(r=>{r!==a.current&&(e==null||e(r,a.current)),a.current=r},[]);return[a,i]}function Od(t){const e=m.useRef();return m.useEffect(()=>{e.current=t},[t]),e.current}let Tc={};function Kn(t,e){return m.useMemo(()=>{if(e)return e;const a=Tc[t]==null?0:Tc[t]+1;return Tc[t]=a,t+"-"+a},[t,e])}function by(t){return function(e){for(var a=arguments.length,i=new Array(a>1?a-1:0),r=1;r<a;r++)i[r-1]=arguments[r];return i.reduce((n,s)=>{const l=Object.entries(s);for(const[c,d]of l){const u=n[c];u!=null&&(n[c]=u+t*d)}return n},{...e})}}const Bo=by(1),_n=by(-1);function GN(t){return"clientX"in t&&"clientY"in t}function am(t){if(!t)return!1;const{KeyboardEvent:e}=Xt(t.target);return e&&t instanceof e}function WN(t){if(!t)return!1;const{TouchEvent:e}=Xt(t.target);return e&&t instanceof e}function Md(t){if(WN(t)){if(t.touches&&t.touches.length){const{clientX:e,clientY:a}=t.touches[0];return{x:e,y:a}}else if(t.changedTouches&&t.changedTouches.length){const{clientX:e,clientY:a}=t.changedTouches[0];return{x:e,y:a}}}return GN(t)?{x:t.clientX,y:t.clientY}:null}const Sn=Object.freeze({Translate:{toString(t){if(!t)return;const{x:e,y:a}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(a?Math.round(a):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;const{scaleX:e,scaleY:a}=t;return"scaleX("+e+") scaleY("+a+")"}},Transform:{toString(t){if(t)return[Sn.Translate.toString(t),Sn.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:a,easing:i}=t;return e+" "+a+"ms "+i}}}),sh="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function HN(t){return t.matches(sh)?t:t.querySelector(sh)}const KN={display:"none"};function YN(t){let{id:e,value:a}=t;return U.createElement("div",{id:e,style:KN},a)}function QN(t){let{id:e,announcement:a,ariaLiveType:i="assertive"}=t;const r={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return U.createElement("div",{id:e,style:r,role:"status","aria-live":i,"aria-atomic":!0},a)}function JN(){const[t,e]=m.useState("");return{announce:m.useCallback(i=>{i!=null&&e(i)},[]),announcement:t}}const vy=m.createContext(null);function XN(t){const e=m.useContext(vy);m.useEffect(()=>{if(!e)throw new Error("useDndMonitor must be used within a children of <DndContext>");return e(t)},[t,e])}function ZN(){const[t]=m.useState(()=>new Set),e=m.useCallback(i=>(t.add(i),()=>t.delete(i)),[t]);return[m.useCallback(i=>{let{type:r,event:n}=i;t.forEach(s=>{var l;return(l=s[r])==null?void 0:l.call(s,n)})},[t]),e]}const eP={draggable:`
549    To pick up a draggable item, press the space bar.
550    While dragging, use the arrow keys to move the item.
551    Press space again to drop the item in its new position, or press escape to cancel.
552  `},tP={onDragStart(t){let{active:e}=t;return"Picked up draggable item "+e.id+"."},onDragOver(t){let{active:e,over:a}=t;return a?"Draggable item "+e.id+" was moved over droppable area "+a.id+".":"Draggable item "+e.id+" is no longer over a droppable area."},onDragEnd(t){let{active:e,over:a}=t;return a?"Draggable item "+e.id+" was dropped over droppable area "+a.id:"Draggable item "+e.id+" was dropped."},onDragCancel(t){let{active:e}=t;return"Dragging was cancelled. Draggable item "+e.id+" was dropped."}};function aP(t){let{announcements:e=tP,container:a,hiddenTextDescribedById:i,screenReaderInstructions:r=eP}=t;const{announce:n,announcement:s}=JN(),l=Kn("DndLiveRegion"),[c,d]=m.useState(!1);if(m.useEffect(()=>{d(!0)},[]),XN(m.useMemo(()=>({onDragStart(p){let{active:f}=p;n(e.onDragStart({active:f}))},onDragMove(p){let{active:f,over:h}=p;e.onDragMove&&n(e.onDragMove({active:f,over:h}))},onDragOver(p){let{active:f,over:h}=p;n(e.onDragOver({active:f,over:h}))},onDragEnd(p){let{active:f,over:h}=p;n(e.onDragEnd({active:f,over:h}))},onDragCancel(p){let{active:f,over:h}=p;n(e.onDragCancel({active:f,over:h}))}}),[n,e])),!c)return null;const u=U.createElement(U.Fragment,null,U.createElement(YN,{id:i,value:r.draggable}),U.createElement(QN,{id:l,announcement:s}));return a?Fi.createPortal(u,a):u}var vt;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(vt||(vt={}));function sl(){}function lh(t,e){return m.useMemo(()=>({sensor:t,options:e??{}}),[t,e])}function iP(){for(var t=arguments.length,e=new Array(t),a=0;a<t;a++)e[a]=arguments[a];return m.useMemo(()=>[...e].filter(i=>i!=null),[...e])}const Sa=Object.freeze({x:0,y:0});function im(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function om(t,e){let{data:{value:a}}=t,{data:{value:i}}=e;return a-i}function oP(t,e){let{data:{value:a}}=t,{data:{value:i}}=e;return i-a}function zd(t){let{left:e,top:a,height:i,width:r}=t;return[{x:e,y:a},{x:e+r,y:a},{x:e,y:a+i},{x:e+r,y:a+i}]}function yy(t,e){if(!t||t.length===0)return null;const[a]=t;return a[e]}function ch(t,e,a){return e===void 0&&(e=t.left),a===void 0&&(a=t.top),{x:e+t.width*.5,y:a+t.height*.5}}const dh=t=>{let{collisionRect:e,droppableRects:a,droppableContainers:i}=t;const r=ch(e,e.left,e.top),n=[];for(const s of i){const{id:l}=s,c=a.get(l);if(c){const d=im(ch(c),r);n.push({id:l,data:{droppableContainer:s,value:d}})}}return n.sort(om)},rP=t=>{let{collisionRect:e,droppableRects:a,droppableContainers:i}=t;const r=zd(e),n=[];for(const s of i){const{id:l}=s,c=a.get(l);if(c){const d=zd(c),u=r.reduce((f,h,v)=>f+im(d[v],h),0),p=Number((u/4).toFixed(4));n.push({id:l,data:{droppableContainer:s,value:p}})}}return n.sort(om)};function nP(t,e){const a=Math.max(e.top,t.top),i=Math.max(e.left,t.left),r=Math.min(e.left+e.width,t.left+t.width),n=Math.min(e.top+e.height,t.top+t.height),s=r-i,l=n-a;if(i<r&&a<n){const c=e.width*e.height,d=t.width*t.height,u=s*l,p=u/(c+d-u);return Number(p.toFixed(4))}return 0}const sP=t=>{let{collisionRect:e,droppableRects:a,droppableContainers:i}=t;const r=[];for(const n of i){const{id:s}=n,l=a.get(s);if(l){const c=nP(l,e);c>0&&r.push({id:s,data:{droppableContainer:n,value:c}})}}return r.sort(oP)};function lP(t,e){const{top:a,left:i,bottom:r,right:n}=e;return a<=t.y&&t.y<=r&&i<=t.x&&t.x<=n}const _W=t=>{let{droppableContainers:e,droppableRects:a,pointerCoordinates:i}=t;if(!i)return[];const r=[];for(const n of e){const{id:s}=n,l=a.get(s);if(l&&lP(i,l)){const d=zd(l).reduce((p,f)=>p+im(i,f),0),u=Number((d/4).toFixed(4));
552r.push({id:s,data:{droppableContainer:n,value:u}})}}return r.sort(om)};function cP(t,e,a){return{...t,scaleX:e&&a?e.width/a.width:1,scaleY:e&&a?e.height/a.height:1}}function xy(t,e){return t&&e?{x:t.left-e.left,y:t.top-e.top}:Sa}function dP(t){return function(a){for(var i=arguments.length,r=new Array(i>1?i-1:0),n=1;n<i;n++)r[n-1]=arguments[n];return r.reduce((s,l)=>({...s,top:s.top+t*l.y,bottom:s.bottom+t*l.y,left:s.left+t*l.x,right:s.right+t*l.x}),{...a})}}const uP=dP(1);function mP(t){if(t.startsWith("matrix3d(")){const e=t.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(t.startsWith("matrix(")){const e=t.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function pP(t,e,a){const i=mP(e);if(!i)return t;const{scaleX:r,scaleY:n,x:s,y:l}=i,c=t.left-s-(1-r)*parseFloat(a),d=t.top-l-(1-n)*parseFloat(a.slice(a.indexOf(" ")+1)),u=r?t.width/r:t.width,p=n?t.height/n:t.height;return{width:u,height:p,top:d,right:c+u,bottom:d+p,left:c}}const hP={ignoreTransform:!1};function Tr(t,e){e===void 0&&(e=hP);let a=t.getBoundingClientRect();if(e.ignoreTransform){const{transform:d,transformOrigin:u}=Xt(t).getComputedStyle(t);d&&(a=pP(a,d,u))}const{top:i,left:r,width:n,height:s,bottom:l,right:c}=a;return{top:i,left:r,width:n,height:s,bottom:l,right:c}}function uh(t){return Tr(t,{ignoreTransform:!0})}
552function gP(t){const e=t.innerWidth,a=t.innerHeight;return{top:0,left:0,right:e,bottom:a,width:e,height:a}}function fP(t,e){return e===void 0&&(e=Xt(t).getComputedStyle(t)),e.position==="fixed"}function bP(t,e){e===void 0&&(e=Xt(t).getComputedStyle(t));const a=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(r=>{const n=e[r];return typeof n=="string"?a.test(n):!1})}function Ol(t,e){const a=[];function i(r){if(e!=null&&a.length>=e||!r)return a;if(em(r)&&r.scrollingElement!=null&&!a.includes(r.scrollingElement))return a.push(r.scrollingElement),a;if(!Wn(r)||fy(r)||a.includes(r))return a;const n=Xt(t).getComputedStyle(r);return r!==t&&bP(r,n)&&a.push(r),fP(r,n)?a:i(r.parentNode)}return t?i(t):a}function wy(t){const[e]=Ol(t,1);return e??null}function jc(t){return!Ll||!t?null:Sr(t)?t:Zu(t)?em(t)||t===Cr(t).scrollingElement?window:Wn(t)?t:null:null}function ky(t){return Sr(t)?t.scrollX:t.scrollLeft}function _y(t){return Sr(t)?t.scrollY:t.scrollTop}function Bd(t){return{x:ky(t),y:_y(t)}}var Ct;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(Ct||(Ct={}));function Sy(t){return!Ll||!t?!1:t===document.scrollingElement}function Cy(t){const e={x:0,y:0},a=Sy(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},i={x:t.scrollWidth-a.width,y:t.scrollHeight-a.height},r=t.scrollTop<=e.y,n=t.scrollLeft<=e.x,s=t.scrollTop>=i.y,l=t.scrollLeft>=i.x;return{isTop:r,isLeft:n,isBottom:s,isRight:l,maxScroll:i,minScroll:e}}const vP={x:.2,y:.2};function yP(t,e,a,i,r){let{top:n,left:s,right:l,bottom:c}=a;i===void 0&&(i=10),r===void 0&&(r=vP);const{isTop:d,isBottom:u,isLeft:p,isRight:f}=Cy(t),h={x:0,y:0},v={x:0,y:0},g={height:e.height*r.y,width:e.width*r.x};return!d&&n<=e.top+g.height?(h.y=Ct.Backward,v.y=i*Math.abs((e.top+g.height-n)/g.height)):!u&&c>=e.bottom-g.height&&(h.y=Ct.Forward,v.y=i*Math.abs((e.bottom-g.height-c)/g.height)),!f&&l>=e.right-g.width?(h.x=Ct.Forward,v.x=i*Math.abs((e.right-g.width-l)/g.width)):!p&&s<=e.left+g.width&&(h.x=Ct.Backward,v.x=i*Math.abs((e.left+g.width-s)/g.width)),{direction:h,speed:v}}function xP(t){if(t===document.scrollingElement){const{innerWidth:n,innerHeight:s}=window;return{top:0,left:0,right:n,bottom:s,width:n,height:s}}const{top:e,left:a,right:i,bottom:r}=t.getBoundingClientRect();return{top:e,left:a,right:i,bottom:r,width:t.clientWidth,height:t.clientHeight}}function Ty(t){return t.reduce((e,a)=>Bo(e,Bd(a)),Sa)}function wP(t){return t.reduce((e,a)=>e+ky(a),0)}function kP(t){return t.reduce((e,a)=>e+_y(a),0)}function _P(t,e){if(e===void 0&&(e=Tr),!t)return;const{top:a,left:i,bottom:r,right:n}=e(t);wy(t)&&(r<=0||n<=0||a>=window.innerHeight||i>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const SP=[["x",["left","right"],wP],["y",["top","bottom"],kP]];class rm{constructor(e,a){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const i=Ol(a),r=Ty(i);this.rect={...e},this.width=e.width,this.height=e.height;for(const[n,s,l]of SP)for(const c of s)Object.defineProperty(this,c,{get:()=>{const d=l(i),u=r[n]-d;return this.rect[c]+u},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class Zr{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(a=>{var i;return(i=this.target)==null?void 0:i.removeEventListener(...a)})},this.target=e}add(e,a,i){var r;(r=this.target)==null||r.addEventListener(e,a,i),this.listeners.push([e,a,i])}}function CP(t){const{EventTarget:e}=Xt(t);return t instanceof e?t:Cr(t)}function Nc(t,e){const a=Math.abs(t.x),i=Math.abs(t.y);return typeof e=="number"?Math.sqrt(a**2+i**2)>e:"x"in e&&"y"in e?a>e.x&&i>e.y:"x"in e?a>e.x:"y"in e?i>e.y:!1}var ua;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(ua||(ua={}));function mh(t){t.preventDefault()}function TP(t){t.stopPropagation()}var Ae;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(Ae||(Ae={}));const jy={start:[Ae.Space,Ae.Enter],cancel:[Ae.Esc],end:[Ae.Space,Ae.Enter,Ae.Tab]},jP=(t,e)=>{let{currentCoordinates:a}=e;switch(t.code){case Ae.Right:return{...a,x:a.x+25};case Ae.Left:return{...a,x:a.x-25};case Ae.Down:return{...a,y:a.y+25};case Ae.Up:return{...a,y:a.y-25}}};
552class nm{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:a}}=e;this.props=e,this.listeners=new Zr(Cr(a)),this.windowListeners=new Zr(Xt(a)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(ua.Resize,this.handleCancel),this.windowListeners.add(ua.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(ua.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:a}=this.props,i=e.node.current;i&&_P(i),a(Sa)}handleKeyDown(e){if(am(e)){const{active:a,context:i,options:r}=this.props,{keyboardCodes:n=jy,coordinateGetter:s=jP,scrollBehavior:l="smooth"}=r,{code:c}=e;if(n.end.includes(c)){this.handleEnd(e);return}if(n.cancel.includes(c)){this.handleCancel(e);return}const{collisionRect:d}=i.current,u=d?{x:d.left,y:d.top}:Sa;this.referenceCoordinates||(this.referenceCoordinates=u);const p=s(e,{active:a,context:i.current,currentCoordinates:u});if(p){const f=_n(p,u),h={x:0,y:0},{scrollableAncestors:v}=i.current;for(const g of v){const b=e.code,{isTop:x,isRight:w,isLeft:k,isBottom:_,maxScroll:j,minScroll:S}=Cy(g),C=xP(g),N={x:Math.min(b===Ae.Right?C.right-C.width/2:C.right,Math.max(b===Ae.Right?C.left:C.left+C.width/2,p.x)),y:Math.min(b===Ae.Down?C.bottom-C.height/2:C.bottom,Math.max(b===Ae.Down?C.top:C.top+C.height/2,p.y))},P=b===Ae.Right&&!w||b===Ae.Left&&!k,E=b===Ae.Down&&!_||b===Ae.Up&&!x;if(P&&N.x!==p.x){const L=g.scrollLeft+f.x,A=b===Ae.Right&&L<=j.x||b===Ae.Left&&L>=S.x;if(A&&!f.y){g.scrollTo({left:L,behavior:l});return}A?h.x=g.scrollLeft-L:h.x=b===Ae.Right?g.scrollLeft-j.x:g.scrollLeft-S.x,h.x&&g.scrollBy({left:-h.x,behavior:l});break}else if(E&&N.y!==p.y){const L=g.scrollTop+f.y,A=b===Ae.Down&&L<=j.y||b===Ae.Up&&L>=S.y;if(A&&!f.x){g.scrollTo({top:L,behavior:l});return}A?h.y=g.scrollTop-L:h.y=b===Ae.Down?g.scrollTop-j.y:g.scrollTop-S.y,h.y&&g.scrollBy({top:-h.y,behavior:l});break}}this.handleMove(e,Bo(_n(p,this.referenceCoordinates),h))}}}handleMove(e,a){const{onMove:i}=this.props;e.preventDefault(),i(a)}handleEnd(e){const{onEnd:a}=this.props;e.preventDefault(),this.detach(),a()}handleCancel(e){const{onCancel:a}=this.props;e.preventDefault(),this.detach(),a()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}nm.activators=[{eventName:"onKeyDown",handler:(t,e,a)=>{let{keyboardCodes:i=jy,onActivation:r}=e,{active:n}=a;const{code:s}=t.nativeEvent;if(i.start.includes(s)){const l=n.activatorNode.current;return l&&t.target!==l?!1:(t.preventDefault(),r==null||r({event:t.nativeEvent}),!0)}return!1}}];function ph(t){return!!(t&&"distance"in t)}function hh(t){return!!(t&&"delay"in t)}class sm{constructor(e,a,i){var r;i===void 0&&(i=CP(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=a;const{event:n}=e,{target:s}=n;this.props=e,this.events=a,this.document=Cr(s),this.documentListeners=new Zr(this.document),this.listeners=new Zr(i),this.windowListeners=new Zr(Xt(s)),this.initialCoordinates=(r=Md(n))!=null?r:Sa,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:a,bypassActivationConstraint:i}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(ua.Resize,this.handleCancel),this.windowListeners.add(ua.DragStart,mh),this.windowListeners.add(ua.VisibilityChange,this.handleCancel),this.windowListeners.add(ua.ContextMenu,mh),this.documentListeners.add(ua.Keydown,this.handleKeydown),a){if(i!=null&&i({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();
552if(hh(a)){this.timeoutId=setTimeout(this.handleStart,a.delay),this.handlePending(a);return}if(ph(a)){this.handlePending(a);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,a){const{active:i,onPending:r}=this.props;r(i,e,this.initialCoordinates,a)}handleStart(){const{initialCoordinates:e}=this,{onStart:a}=this.props;e&&(this.activated=!0,this.documentListeners.add(ua.Click,TP,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(ua.SelectionChange,this.removeTextSelection),a(e))}handleMove(e){var a;const{activated:i,initialCoordinates:r,props:n}=this,{onMove:s,options:{activationConstraint:l}}=n;if(!r)return;const c=(a=Md(e))!=null?a:Sa,d=_n(r,c);if(!i&&l){if(ph(l)){if(l.tolerance!=null&&Nc(d,l.tolerance))return this.handleCancel();if(Nc(d,l.distance))return this.handleStart()}if(hh(l)&&Nc(d,l.tolerance))return this.handleCancel();this.handlePending(l,d);return}e.cancelable&&e.preventDefault(),s(c)}handleEnd(){const{onAbort:e,onEnd:a}=this.props;this.detach(),this.activated||e(this.props.active),a()}handleCancel(){const{onAbort:e,onCancel:a}=this.props;this.detach(),this.activated||e(this.props.active),a()}handleKeydown(e){e.code===Ae.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const NP={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class lm extends sm{constructor(e){const{event:a}=e,i=Cr(a.target);super(e,NP,i)}}lm.activators=[{eventName:"onPointerDown",handler:(t,e)=>{let{nativeEvent:a}=t,{onActivation:i}=e;return!a.isPrimary||a.button!==0?!1:(i==null||i({event:a}),!0)}}];const PP={move:{name:"mousemove"},end:{name:"mouseup"}};var Fd;(function(t){t[t.RightClick=2]="RightClick"})(Fd||(Fd={}));class AP extends sm{constructor(e){super(e,PP,Cr(e.event.target))}}AP.activators=[{eventName:"onMouseDown",handler:(t,e)=>{let{nativeEvent:a}=t,{onActivation:i}=e;return a.button===Fd.RightClick?!1:(i==null||i({event:a}),!0)}}];const Pc={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class EP extends sm{constructor(e){super(e,Pc)}static setup(){return window.addEventListener(Pc.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(Pc.move.name,e)};function e(){}}}EP.activators=[{eventName:"onTouchStart",handler:(t,e)=>{let{nativeEvent:a}=t,{onActivation:i}=e;const{touches:r}=a;return r.length>1?!1:(i==null||i({event:a}),!0)}}];var en;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(en||(en={}));var ll;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(ll||(ll={}));function IP(t){let{acceleration:e,activator:a=en.Pointer,canScroll:i,draggingRect:r,enabled:n,interval:s=5,order:l=ll.TreeOrder,pointerCoordinates:c,scrollableAncestors:d,scrollableAncestorRects:u,delta:p,threshold:f}=t;const h=RP({delta:p,disabled:!n}),[v,g]=qN(),b=m.useRef({x:0,y:0}),x=m.useRef({x:0,y:0}),w=m.useMemo(()=>{switch(a){case en.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case en.DraggableRect:return r}},[a,r,c]),k=m.useRef(null),_=m.useCallback(()=>{const S=k.current;if(!S)return;const C=b.current.x*x.current.x,N=b.current.y*x.current.y;S.scrollBy(C,N)},[]),j=m.useMemo(()=>l===ll.TreeOrder?[...d].reverse():d,[l,d]);m.useEffect(()=>{if(!n||!d.length||!w){g();return}for(const S of j){if((i==null?void 0:i(S))===!1)continue;const C=d.indexOf(S),N=u[C];if(!N)continue;const{direction:P,speed:E}=yP(S,N,w,e,f);for(const L of["x","y"])h[L][P[L]]||(E[L]=0,P[L]=0);if(E.x>0||E.y>0){g(),k.current=S,v(_,s),b.current=E,x.current=P;return}}b.current={x:0,y:0},x.current={x:0,y:0},g()},[e,_,i,g,n,s,JSON.stringify(w),JSON.stringify(h),v,d,j,u,JSON.stringify(f)])}const DP={x:{[Ct.Backward]:!1,[Ct.Forward]:!1},y:{[Ct.Backward]:!1,[Ct.Forward]:!1}};function RP(t){let{delta:e,disabled:a}=t;const i=Od(e);return Hn(r=>{if(a||!i||!r)return DP;const n={x:Math.sign(e.x-i.x),y:Math.sign(e.y-i.y)};return{x:{[Ct.Backward]:r.x[Ct.Backward]||n.x===-1,[Ct.Forward]:r.x[Ct.Forward]||n.x===1},y:{[Ct.Backward]:r.y[Ct.Backward]||n.y===-1,[Ct.Forward]:r.y[Ct.Forward]||n.y===1}}},[a,e,i])}function LP(t,e){const a=e!=null?t.get(e):void 0,i=a?a.node.current:null;return Hn(r=>{var n;return e==null?null:(n=i??r)!=null?n:null},[i,e])}function OP(t,e){return m.useMemo(()=>t.reduce((a,i)=>{const{sensor:r}=i,n=r.activators.map(s=>({eventName:s.eventName,handler:e(s.handler,i)}));return[...a,...n]},[]),[t,e])}var Cn;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(Cn||(Cn={}));var $d;(function(t){t.Optimized="optimized"})($d||($d={}));const gh=new Map;function MP(t,e){let{dragging:a,dependencies:i,config:r}=e;const[n,s]=m.useState(null),{frequency:l,measure:c,strategy:d}=r,u=m.useRef(t),p=b(),f=kn(p),h=m.useCallback(function(x){x===void 0&&(x=[]),!f.current&&s(w=>w===null?x:w.concat(x.filter(k=>!w.includes(k))))},[f]),v=m.useRef(null),g=Hn(x=>{if(p&&!a)return gh;if(!x||x===gh||u.current!==t||n!=null){const w=new Map;for(let k of t){if(!k)continue;if(n&&n.length>0&&!n.includes(k.id)&&k.rect.current){w.set(k.id,k.rect.current);continue}const _=k.node.current,j=_?new rm(c(_),_):null;k.rect.current=j,j&&w.set(k.id,j)}return w}return x},[t,n,a,p,c]);return m.useEffect(()=>{u.current=t},[t]),m.useEffect(()=>{p||h()},[a,p]),m.useEffect(()=>{n&&n.length>0&&s(null)},[JSON.stringify(n)]),m.useEffect(()=>{p||typeof l!="number"||v.current!==null||(v.current=setTimeout(()=>{h(),v.current=null},l))},[l,p,h,...i]),{droppableRects:g,measureDroppableContainers:h,measuringScheduled:n!=null};function b(){switch(d){case Cn.Always:return!1;case Cn.BeforeDragging:return a;default:return!a}}}function Ny(t,e){return Hn(a=>t?a||(typeof e=="function"?e(t):t):null,[e,t])}function zP(t,e){return Ny(t,e)}function BP(t){let{callback:e,disabled:a}=t;const i=tm(e),r=m.useMemo(()=>
552{if(a||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:n}=window;return new n(i)},[i,a]);return m.useEffect(()=>()=>r==null?void 0:r.disconnect(),[r]),r}function Ml(t){let{callback:e,disabled:a}=t;const i=tm(e),r=m.useMemo(()=>{if(a||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:n}=window;return new n(i)},[a]);return m.useEffect(()=>()=>r==null?void 0:r.disconnect(),[r]),r}function FP(t){return new rm(Tr(t),t)}function fh(t,e,a){e===void 0&&(e=FP);const[i,r]=m.useState(null);function n(){r(c=>{if(!t)return null;if(t.isConnected===!1){var d;return(d=c??a)!=null?d:null}const u=e(t);return JSON.stringify(c)===JSON.stringify(u)?c:u})}const s=BP({callback(c){if(t)for(const d of c){const{type:u,target:p}=d;if(u==="childList"&&p instanceof HTMLElement&&p.contains(t)){n();break}}}}),l=Ml({callback:n});return Ia(()=>{n(),t?(l==null||l.observe(t),s==null||s.observe(document.body,{childList:!0,subtree:!0})):(l==null||l.disconnect(),s==null||s.disconnect())},[t]),i}function $P(t){const e=Ny(t);return xy(t,e)}const bh=[];function VP(t){const e=m.useRef(t),a=Hn(i=>t?i&&i!==bh&&t&&e.current&&t.parentNode===e.current.parentNode?i:Ol(t):bh,[t]);return m.useEffect(()=>{e.current=t},[t]),a}function UP(t){const[e,a]=m.useState(null),i=m.useRef(t),r=m.useCallback(n=>{const s=jc(n.target);s&&a(l=>l?(l.set(s,Bd(s)),new Map(l)):null)},[]);return m.useEffect(()=>{const n=i.current;if(t!==n){s(n);const l=t.map(c=>{const d=jc(c);return d?(d.addEventListener("scroll",r,{passive:!0}),[d,Bd(d)]):null}).filter(c=>c!=null);a(l.length?new Map(l):null),i.current=t}return()=>{s(t),s(n)};function s(l){l.forEach(c=>{const d=jc(c);d==null||d.removeEventListener("scroll",r)})}},[r,t]),m.useMemo(()=>t.length?e?Array.from(e.values()).reduce((n,s)=>Bo(n,s),Sa):Ty(t):Sa,[t,e])}function vh(t,e){e===void 0&&(e=[]);const a=m.useRef(null);return m.useEffect(()=>{a.current=null},e),m.useEffect(()=>{const i=t!==Sa;i&&!a.current&&(a.current=t),!i&&a.current&&(a.current=null)},[t]),a.current?_n(t,a.current):Sa}function qP(t){m.useEffect(()=>{if(!Ll)return;const e=t.map(a=>{let{sensor:i}=a;return i.setup==null?void 0:i.setup()});return()=>{for(const a of e)a==null||a()}},t.map(e=>{let{sensor:a}=e;return a}))}function GP(t,e){return m.useMemo(()=>t.reduce((a,i)=>{let{eventName:r,handler:n}=i;return a[r]=s=>{n(s,e)},a},{}),[t,e])}function Py(t){return m.useMemo(()=>t?gP(t):null,[t])}const yh=[];function WP(t,e){e===void 0&&(e=Tr);const[a]=t,i=Py(a?Xt(a):null),[r,n]=m.useState(yh);function s(){n(()=>t.length?t.map(c=>Sy(c)?i:new rm(e(c),c)):yh)}const l=Ml({callback:s});return Ia(()=>{l==null||l.disconnect(),s(),t.forEach(c=>l==null?void 0:l.observe(c))},[t]),r}function HP(t){if(!t)return null;if(t.children.length>1)return t;const e=t.children[0];return Wn(e)?e:t}function KP(t){let{measure:e}=t;const[a,i]=m.useState(null),r=m.useCallback(d=>{for(const{target:u}of d)if(Wn(u)){i(p=>{const f=e(u);return p?{...p,width:f.width,height:f.height}:f});break}},[e]),n=Ml({callback:r}),s=m.useCallback(d=>{const u=HP(d);n==null||n.disconnect(),u&&(n==null||n.observe(u)),i(u?e(u):null)},[e,n]),[l,c]=nl(s);return m.useMemo(()=>({nodeRef:l,rect:a,setRef:c}),[a,l,c])}const YP=[{sensor:lm,options:{}},{sensor:nm,options:{}}],QP={current:{}},Rs={draggable:{measure:uh},droppable:{measure:uh,strategy:Cn.WhileDragging,frequency:$d.Optimized},dragOverlay:{measure:Tr}};class tn extends Map{get(e){var a;return e!=null&&(a=super.get(e))!=null?a:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:a}=e;return!a})}getNodeFor(e){var a,i;return(a=(i=this.get(e))==null?void 0:i.node.current)!=null?a:void 0}}const JP={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new tn,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:sl},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Rs,measureDroppableContainers:sl,windowRect:null,measuringScheduled:!1},XP={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:sl,draggableNodes:new Map,over:null,measureDroppableContainers:sl},zl=m.createContext(XP),Ay=m.createContext(JP);function ZP(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new tn}}}function eA(t,e){switch(e.type){case vt.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case vt.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:e.coordinates.x-t.draggable.initialCoordinates.x,y:e.coordinates.y-t.draggable.initialCoordinates.y}}};case vt.DragEnd:case vt.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case vt.RegisterDroppable:{const{element:a}=e,{id:i}
552=a,r=new tn(t.droppable.containers);return r.set(i,a),{...t,droppable:{...t.droppable,containers:r}}}case vt.SetDroppableDisabled:{const{id:a,key:i,disabled:r}=e,n=t.droppable.containers.get(a);if(!n||i!==n.key)return t;const s=new tn(t.droppable.containers);return s.set(a,{...n,disabled:r}),{...t,droppable:{...t.droppable,containers:s}}}case vt.UnregisterDroppable:{const{id:a,key:i}=e,r=t.droppable.containers.get(a);if(!r||i!==r.key)return t;const n=new tn(t.droppable.containers);return n.delete(a),{...t,droppable:{...t.droppable,containers:n}}}default:return t}}function tA(t){let{disabled:e}=t;const{active:a,activatorEvent:i,draggableNodes:r}=m.useContext(zl),n=Od(i),s=Od(a==null?void 0:a.id);return m.useEffect(()=>{if(!e&&!i&&n&&s!=null){if(!am(n)||document.activeElement===n.target)return;const l=r.get(s);if(!l)return;const{activatorNode:c,node:d}=l;if(!c.current&&!d.current)return;requestAnimationFrame(()=>{for(const u of[c.current,d.current]){if(!u)continue;const p=HN(u);if(p){p.focus();break}}})}},[i,e,r,s,n]),null}function aA(t,e){let{transform:a,...i}=e;return t!=null&&t.length?t.reduce((r,n)=>n({transform:r,...i}),a):a}function iA(t){return m.useMemo(()=>({draggable:{...Rs.draggable,...t==null?void 0:t.draggable},droppable:{...Rs.droppable,...t==null?void 0:t.droppable},dragOverlay:{...Rs.dragOverlay,...t==null?void 0:t.dragOverlay}}),[t==null?void 0:t.draggable,t==null?void 0:t.droppable,t==null?void 0:t.dragOverlay])}function oA(t){let{activeNode:e,measure:a,initialRect:i,config:r=!0}=t;const n=m.useRef(!1),{x:s,y:l}=typeof r=="boolean"?{x:r,y:r}:r;Ia(()=>{if(!s&&!l||!e){n.current=!1;return}if(n.current||!i)return;const d=e==null?void 0:e.node.current;if(!d||d.isConnected===!1)return;const u=a(d),p=xy(u,i);if(s||(p.x=0),l||(p.y=0),n.current=!0,Math.abs(p.x)>0||Math.abs(p.y)>0){const f=wy(d);f&&f.scrollBy({top:p.y,left:p.x})}},[e,s,l,i,a])}const Ey=m.createContext({...Sa,scaleX:1,scaleY:1});var ii;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(ii||(ii={}));const xh=m.memo(function(e){var a,i,r,n;let{id:s,accessibility:l,autoScroll:c=!0,children:d,sensors:u=YP,collisionDetection:p=sP,measuring:f,modifiers:h,...v}=e;const g=m.useReducer(eA,void 0,ZP),[b,x]=g,[w,k]=ZN(),[_,j]=m.useState(ii.Uninitialized),S=_===ii.Initialized,{draggable:{active:C,nodes:N,translate:P},droppable:{containers:E}}=b,L=C!=null?N.get(C):null,A=m.useRef({initial:null,translated:null}),I=m.useMemo(()=>{var ye;return C!=null?{id:C,data:(ye=L==null?void 0:L.data)!=null?ye:QP,rect:A}:null},[C,L]),R=m.useRef(null),[B,z]=m.useState(null),[Z,fe]=m.useState(null),O=kn(v,Object.values(v)),Q=Kn("DndDescribedBy",s),Y=m.useMemo(()=>E.getEnabled(),[E]),K=iA(f),{droppableRects:J,measureDroppableContainers:oe,measuringScheduled:ve}=MP(Y,{dragging:S,dependencies:[P.x,P.y],config:K.droppable}),je=LP(N,C),W=m.useMemo(()=>Z?Md(Z):null,[Z]),ue=Re(),ke=zP(je,K.draggable.measure);oA({activeNode:C!=null?N.get(C):null,config:ue.layoutShiftCompensation,initialRect:ke,measure:K.draggable.measure});const re=fh(je,K.draggable.measure,ke),ge=fh(je?je.parentElement:null),M=m.useRef({activatorEvent:null,active:null,activeNode:je,collisionRect:null,collisions:null,droppableRects:J,draggableNodes:N,draggingNode:null,draggingNodeRect:null,droppableContainers:E,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Ee=E.getNodeFor((a=M.current.over)==null?void 0:a.id),Ne=KP({measure:K.dragOverlay.measure}),We=(i=Ne.nodeRef.current)!=null?i:je,ze=S?(r=Ne.rect)!=null?r:re:null,Ze=!!(Ne.nodeRef.current&&Ne.rect),Ve=$P(Ze?null:re),st=Py(We?Xt(We):null),De=VP(S?Ee??je:null),xt=WP(De),we=aA(h,{transform:{x:P.x-Ve.x,y:P.y-Ve.y,scaleX:1,scaleY:1},activatorEvent:Z,active:I,activeNodeRect:re,containerNodeRect:ge,draggingNodeRect:ze,over:M.current.over,overlayNodeRect:Ne.rect,scrollableAncestors:De,scrollableAncestorRects:xt,windowRect:st}),lt=W?Bo(W,P):null,Tt=UP(De),qt=vh(Tt),it=vh(Tt,[re]),pt=Bo(we,qt),At=ze?uP(ze,we):null,wt=I&&At?p({active:I,collisionRect:At,droppableRects:J,droppableContainers:Y,pointerCoordinates:lt}):null,Zt=yy(wt,"id"),[ht,ea]=m.useState(null),Gt=Ze?we:Bo(we,it),kt=cP(Gt,(n=ht==null?void 0:ht.rect)!=null?n:null,re),Wt=m.useRef(null),G=m.useCallback((ye,ae)=>
552{let{sensor:Oe,options:ie}=ae;if(R.current==null)return;const ne=N.get(R.current);if(!ne)return;const Se=ye.nativeEvent,Qe=new Oe({active:R.current,activeNode:ne,event:Se,options:ie,context:M,onAbort(Me){if(!N.get(Me))return;const{onDragAbort:He}=O.current,ot={id:Me};He==null||He(ot),w({type:"onDragAbort",event:ot})},onPending(Me,gt,He,ot){if(!N.get(Me))return;const{onDragPending:Ai}=O.current,Ca={id:Me,constraint:gt,initialCoordinates:He,offset:ot};Ai==null||Ai(Ca),w({type:"onDragPending",event:Ca})},onStart(Me){const gt=R.current;if(gt==null)return;const He=N.get(gt);if(!He)return;const{onDragStart:ot}=O.current,Pi={activatorEvent:Se,active:{id:gt,data:He.data,rect:A}};Fi.unstable_batchedUpdates(()=>{ot==null||ot(Pi),j(ii.Initializing),x({type:vt.DragStart,initialCoordinates:Me,active:gt}),w({type:"onDragStart",event:Pi}),z(Wt.current),fe(Se)})},onMove(Me){x({type:vt.DragMove,coordinates:Me})},onEnd:ct(vt.DragEnd),onCancel:ct(vt.DragCancel)});Wt.current=Qe;function ct(Me){return async function(){const{active:He,collisions:ot,over:Pi,scrollAdjustedTranslate:Ai}=M.current;let Ca=null;if(He&&Ai){const{cancelDrop:Ta}=O.current;Ca={activatorEvent:Se,active:He,collisions:ot,delta:Ai,over:Pi},Me===vt.DragEnd&&typeof Ta=="function"&&await Promise.resolve(Ta(Ca))&&(Me=vt.DragCancel)}R.current=null,Fi.unstable_batchedUpdates(()=>{x({type:Me}),j(ii.Uninitialized),ea(null),z(null),fe(null),Wt.current=null;const Ta=Me===vt.DragEnd?"onDragEnd":"onDragCancel";if(Ca){const po=O.current[Ta];po==null||po(Ca),w({type:Ta,event:Ca})}})}}},[N]),te=m.useCallback((ye,ae)=>(Oe,ie)=>{const ne=Oe.nativeEvent,Se=N.get(ie);if(R.current!==null||!Se||ne.dndKit||ne.defaultPrevented)return;const Qe={active:Se};ye(Oe,ae.options,Qe)===!0&&(ne.dndKit={capturedBy:ae.sensor},R.current=ie,G(Oe,ae))},[N,G]),D=OP(u,te);qP(u),Ia(()=>{re&&_===ii.Initializing&&j(ii.Initialized)},[re,_]),m.useEffect(()=>{const{onDragMove:ye}=O.current,{active:ae,activatorEvent:Oe,collisions:ie,over:ne}=M.current;if(!ae||!Oe)return;const Se={active:ae,activatorEvent:Oe,collisions:ie,delta:{x:pt.x,y:pt.y},over:ne};Fi.unstable_batchedUpdates(()=>{ye==null||ye(Se),w({type:"onDragMove",event:Se})})},[pt.x,pt.y]),m.useEffect(()=>{const{active:ye,activatorEvent:ae,collisions:Oe,droppableContainers:ie,scrollAdjustedTranslate:ne}=M.current;if(!ye||R.current==null||!ae||!ne)return;const{onDragOver:Se}=O.current,Qe=ie.get(Zt),ct=Qe&&Qe.rect.current?{id:Qe.id,rect:Qe.rect.current,data:Qe.data,disabled:Qe.disabled}:null,Me={active:ye,activatorEvent:ae,collisions:Oe,delta:{x:ne.x,y:ne.y},over:ct};Fi.unstable_batchedUpdates(()=>{ea(ct),Se==null||Se(Me),w({type:"onDragOver",event:Me})})},[Zt]),Ia(()=>{M.current={activatorEvent:Z,active:I,activeNode:je,collisionRect:At,collisions:wt,droppableRects:J,draggableNodes:N,draggingNode:We,draggingNodeRect:ze,droppableContainers:E,over:ht,scrollableAncestors:De,scrollAdjustedTranslate:pt},A.current={initial:ze,translated:At}},[I,je,wt,At,N,We,ze,J,E,ht,De,pt]),IP({...ue,delta:P,draggingRect:At,pointerCoordinates:lt,scrollableAncestors:De,scrollableAncestorRects:xt});const ce=m.useMemo(()=>({active:I,activeNode:je,activeNodeRect:re,activatorEvent:Z,collisions:wt,containerNodeRect:ge,dragOverlay:Ne,draggableNodes:N,droppableContainers:E,droppableRects:J,over:ht,measureDroppableContainers:oe,scrollableAncestors:De,scrollableAncestorRects:xt,measuringConfiguration:K,measuringScheduled:ve,windowRect:st}),[I,je,re,Z,wt,ge,Ne,N,E,J,ht,oe,De,xt,K,ve,st]),_e=m.useMemo(()=>({activatorEvent:Z,activators:D,active:I,activeNodeRect:re,ariaDescribedById:{draggable:Q},dispatch:x,draggableNodes:N,over:ht,measureDroppableContainers:oe}),[Z,D,I,re,x,Q,N,ht,oe]);return U.createElement(vy.Provider,{value:k},U.createElement(zl.Provider,{value:_e},U.createElement(Ay.Provider,{value:ce},U.createElement(Ey.Provider,{value:kt},d)),U.createElement(tA,{disabled:(l==null?void 0:l.restoreFocus)===!1})),U.createElement(aP,{...l,hiddenTextDescribedById:Q}));function Re(){const ye=(B==null?void 0:B.autoScrollEnabled)===!1,ae=typeof c=="object"?c.enabled===!1:c===!1,Oe=S&&!ye&&!ae;return typeof c=="object"?{...c,enabled:Oe}:{enabled:Oe}}}),rA=m.createContext(null),wh="button",nA="Draggable";function sA(t){let{id:e,data:a,disabled:i=!1,attributes:r}=t;const n=Kn(nA),{activators:s,activatorEvent:l,active:c,activeNodeRect:d,ariaDescribedById:u,draggableNodes:p,over:f}=m.useContext(zl),{role:h=wh,roleDescription:v="draggable",tabIndex:g=0}=r??{},b=(c==null?void 0:c.id)===e,x=m.useContext(b?Ey:rA),[w,k]=nl(),[_,j]=nl(),S=GP(s,e),C=kn(a);Ia(()=>(p.set(e,{id:e,key:n,node:w,activatorNode:_,data:C}
552),()=>{const P=p.get(e);P&&P.key===n&&p.delete(e)}),[p,e]);const N=m.useMemo(()=>({role:h,tabIndex:g,"aria-disabled":i,"aria-pressed":b&&h===wh?!0:void 0,"aria-roledescription":v,"aria-describedby":u.draggable}),[i,h,g,b,v,u.draggable]);return{active:c,activatorEvent:l,activeNodeRect:d,attributes:N,isDragging:b,listeners:i?void 0:S,node:w,over:f,setNodeRef:k,setActivatorNodeRef:j,transform:x}}function lA(){return m.useContext(Ay)}const cA="Droppable",dA={timeout:25};function uA(t){let{data:e,disabled:a=!1,id:i,resizeObserverConfig:r}=t;const n=Kn(cA),{active:s,dispatch:l,over:c,measureDroppableContainers:d}=m.useContext(zl),u=m.useRef({disabled:a}),p=m.useRef(!1),f=m.useRef(null),h=m.useRef(null),{disabled:v,updateMeasurementsFor:g,timeout:b}={...dA,...r},x=kn(g??i),w=m.useCallback(()=>{if(!p.current){p.current=!0;return}h.current!=null&&clearTimeout(h.current),h.current=setTimeout(()=>{d(Array.isArray(x.current)?x.current:[x.current]),h.current=null},b)},[b]),k=Ml({callback:w,disabled:v||!s}),_=m.useCallback((N,P)=>{k&&(P&&(k.unobserve(P),p.current=!1),N&&k.observe(N))},[k]),[j,S]=nl(_),C=kn(e);return m.useEffect(()=>{!k||!j.current||(k.disconnect(),p.current=!1,k.observe(j.current))},[j,k]),m.useEffect(()=>(l({type:vt.RegisterDroppable,element:{id:i,key:n,disabled:a,node:j,rect:f,data:C}}),()=>l({type:vt.UnregisterDroppable,key:n,id:i})),[i]),m.useEffect(()=>{a!==u.current.disabled&&(l({type:vt.SetDroppableDisabled,id:i,key:n,disabled:a}),u.current.disabled=a)},[i,n,a,l]),{active:s,rect:f,isOver:(c==null?void 0:c.id)===i,node:j,over:c,setNodeRef:S}}function cm(t,e,a){const i=t.slice();return i.splice(a<0?i.length+a:a,0,i.splice(e,1)[0]),i}function mA(t,e){return t.reduce((a,i,r)=>{const n=e.get(i);return n&&(a[r]=n),a},Array(t.length))}function bs(t){return t!==null&&t>=0}function pA(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let a=0;a<t.length;a++)if(t[a]!==e[a])return!1;return!0}function hA(t){return typeof t=="boolean"?{draggable:t,droppable:t}:t}const vs={scaleX:1,scaleY:1},SW=t=>{var e;let{rects:a,activeNodeRect:i,activeIndex:r,overIndex:n,index:s}=t;const l=(e=a[r])!=null?e:i;if(!l)return null;const c=gA(a,s,r);if(s===r){const d=a[n];return d?{x:r<n?d.left+d.width-(l.left+l.width):d.left-l.left,y:0,...vs}:null}return s>r&&s<=n?{x:-l.width-c,y:0,...vs}:s<r&&s>=n?{x:l.width+c,y:0,...vs}:{x:0,y:0,...vs}};function gA(t,e,a){const i=t[e],r=t[e-1],n=t[e+1];return!i||!r&&!n?0:a<e?r?i.left-(r.left+r.width):n.left-(i.left+i.width):n?n.left-(i.left+i.width):i.left-(r.left+r.width)}const Iy=t=>{let{rects:e,activeIndex:a,overIndex:i,index:r}=t;const n=cm(e,i,a),s=e[r],l=n[r];return!l||!s?null:{x:l.left-s.left,y:l.top-s.top,scaleX:l.width/s.width,scaleY:l.height/s.height}},ys={scaleX:1,scaleY:1},kh=t=>{var e;let{activeIndex:a,activeNodeRect:i,index:r,rects:n,overIndex:s}=t;const l=(e=n[a])!=null?e:i;if(!l)return null;if(r===a){const d=n[s];return d?{x:0,y:a<s?d.top+d.height-(l.top+l.height):d.top-l.top,...ys}:null}const c=fA(n,r,a);return r>a&&r<=s?{x:0,y:-l.height-c,...ys}:r<a&&r>=s?{x:0,y:l.height+c,...ys}:{x:0,y:0,...ys}};function fA(t,e,a){const i=t[e],r=t[e-1],n=t[e+1];return i?a<e?r?i.top-(r.top+r.height):n?n.top-(i.top+i.height):0:n?n.top-(i.top+i.height):r?i.top-(r.top+r.height):0:0}const Dy="Sortable",Ry=U.createContext({activeIndex:-1,containerId:Dy,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:Iy,disabled:{draggable:!1,droppable:!1}});function _h(t){let{children:e,id:a,items:i,strategy:r=Iy,disabled:n=!1}=t;const{active:s,dragOverlay:l,droppableRects:c,over:d,measureDroppableContainers:u}=lA(),p=Kn(Dy,a),f=l.rect!==null,h=m.useMemo(()=>i.map(S=>typeof S=="object"&&"id"in S?S.id:S),[i]),v=s!=null,g=s?h.indexOf(s.id):-1,b=d?h.indexOf(d.id):-1,x=m.useRef(h),w=!pA(h,x.current),k=b!==-1&&g===-1||w,_=hA(n);Ia(()=>{w&&v&&u(h)},[w,h,v,u]),m.useEffect(()=>{x.current=h},[h]);const j=m.useMemo(()=>({activeIndex:g,containerId:p,disabled:_,disableTransforms:k,items:h,overIndex:b,useDragOverlay:f,sortedRects:mA(h,c),strategy:r}),[g,p,_.draggable,_.droppable,k,h,b,c,f,r]);return U.createElement(Ry.Provider,{value:j},e)}const bA=t=>{let{id:e,items:a,activeIndex:i,overIndex:r}=t;return cm(a,i,r).indexOf(e)},vA=t=>{let{containerId:e,isSorting:a,wasDragging:i,index:r,items:n,newIndex:s,previousItems:l,previousContainerId:c,transition:d}=t;
552return!d||!i||l!==n&&r===s?!1:a?!0:s!==r&&e===c},yA={duration:200,easing:"ease"},Ly="transform",xA=Sn.Transition.toString({property:Ly,duration:0,easing:"linear"}),wA={roleDescription:"sortable"};function kA(t){let{disabled:e,index:a,node:i,rect:r}=t;const[n,s]=m.useState(null),l=m.useRef(a);return Ia(()=>{if(!e&&a!==l.current&&i.current){const c=r.current;if(c){const d=Tr(i.current,{ignoreTransform:!0}),u={x:c.left-d.left,y:c.top-d.top,scaleX:c.width/d.width,scaleY:c.height/d.height};(u.x||u.y)&&s(u)}}a!==l.current&&(l.current=a)},[e,a,i,r]),m.useEffect(()=>{n&&s(null)},[n]),n}function _A(t){let{animateLayoutChanges:e=vA,attributes:a,disabled:i,data:r,getNewIndex:n=bA,id:s,strategy:l,resizeObserverConfig:c,transition:d=yA}=t;const{items:u,containerId:p,activeIndex:f,disabled:h,disableTransforms:v,sortedRects:g,overIndex:b,useDragOverlay:x,strategy:w}=m.useContext(Ry),k=SA(i,h),_=u.indexOf(s),j=m.useMemo(()=>({sortable:{containerId:p,index:_,items:u},...r}),[p,r,_,u]),S=m.useMemo(()=>u.slice(u.indexOf(s)),[u,s]),{rect:C,node:N,isOver:P,setNodeRef:E}=uA({id:s,data:j,disabled:k.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...c}}),{active:L,activatorEvent:A,activeNodeRect:I,attributes:R,setNodeRef:B,listeners:z,isDragging:Z,over:fe,setActivatorNodeRef:O,transform:Q}=sA({id:s,data:j,attributes:{...wA,...a},disabled:k.draggable}),Y=UN(E,B),K=!!L,J=K&&!v&&bs(f)&&bs(b),oe=!x&&Z,ve=oe&&J?Q:null,W=J?ve??(l??w)({rects:g,activeNodeRect:I,activeIndex:f,overIndex:b,index:_}):null,ue=bs(f)&&bs(b)?n({id:s,items:u,activeIndex:f,overIndex:b}):_,ke=L==null?void 0:L.id,re=m.useRef({activeId:ke,items:u,newIndex:ue,containerId:p}),ge=u!==re.current.items,M=e({active:L,containerId:p,isDragging:Z,isSorting:K,id:s,index:_,items:u,newIndex:re.current.newIndex,previousItems:re.current.items,previousContainerId:re.current.containerId,transition:d,wasDragging:re.current.activeId!=null}),Ee=kA({disabled:!M,index:_,node:N,rect:C});return m.useEffect(()=>{K&&re.current.newIndex!==ue&&(re.current.newIndex=ue),p!==re.current.containerId&&(re.current.containerId=p),u!==re.current.items&&(re.current.items=u)},[K,ue,p,u]),m.useEffect(()=>{if(ke===re.current.activeId)return;if(ke!=null&&re.current.activeId==null){re.current.activeId=ke;return}const We=setTimeout(()=>{re.current.activeId=ke},50);return()=>clearTimeout(We)},[ke]),{active:L,activeIndex:f,attributes:R,data:j,rect:C,index:_,newIndex:ue,items:u,isOver:P,isSorting:K,isDragging:Z,listeners:z,node:N,overIndex:b,over:fe,setNodeRef:Y,setActivatorNodeRef:O,setDroppableNodeRef:E,setDraggableNodeRef:B,transform:Ee??W,transition:Ne()};function Ne(){if(Ee||ge&&re.current.newIndex===_)return xA;if(!(oe&&!am(A)||!d)&&(K||M))return Sn.Transition.toString({...d,property:Ly})}}function SA(t,e){var a,i;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(a=t==null?void 0:t.draggable)!=null?a:e.draggable,droppable:(i=t==null?void 0:t.droppable)!=null?i:e.droppable}}function cl(t){if(!t)return!1;const e=t.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const CA=[Ae.Down,Ae.Right,Ae.Up,Ae.Left],TA=(t,e)=>{let{context:{active:a,collisionRect:i,droppableRects:r,droppableContainers:n,over:s,scrollableAncestors:l}}=e;if(CA.includes(t.code)){if(t.preventDefault(),!a||!i)return;const c=[];n.getEnabled().forEach(p=>{if(!p||p!=null&&p.disabled)return;const f=r.get(p.id);if(f)switch(t.code){case Ae.Down:i.top<f.top&&c.push(p);break;case Ae.Up:i.top>f.top&&c.push(p);break;case Ae.Left:i.left>f.left&&c.push(p);break;case Ae.Right:i.left<f.left&&c.push(p);break}});const d=rP({collisionRect:i,droppableRects:r,droppableContainers:c});let u=yy(d,"id");if(u===(s==null?void 0:s.id)&&d.length>1&&(u=d[1].id),u!=null){const p=n.get(a.id),f=n.get(u),h=f?r.get(f.id):null,v=f==null?void 0:f.node.current;if(v&&h&&p&&f){const b=Ol(v).some((S,C)=>l[C]!==S),x=Oy(p,f),w=jA(p,f),k=b||!x?{x:0,y:0}:{x:w?i.width-h.width:0,y:w?i.height-h.height:0},_={x:h.left,y:h.top};return k.x&&k.y?_:_n(_,k)}}}};function Oy(t,e){return!cl(t)||!cl(e)?!1:t.data.current.sortable.containerId===e.data.current.sortable.containerId}function jA(t,e){return!cl(t)||!cl(e)||!Oy(t,e)?!1:t.data.current.sortable.index<e.data.current.sortable.index}const oa=m.forwardRef(({className:t,...e},a)=>
552o.jsx("div",{ref:a,className:y("rounded-lg border bg-card text-card-foreground shadow-sm",t),...e}));oa.displayName="Card";const Fo=m.forwardRef(({className:t,...e},a)=>o.jsx("div",{ref:a,className:y("flex flex-col space-y-1.5 p-6",t),...e}));Fo.displayName="CardHeader";const $o=m.forwardRef(({className:t,...e},a)=>o.jsx("h3",{ref:a,className:y("text-2xl font-semibold leading-none tracking-tight",t),...e}));$o.displayName="CardTitle";const Ls=m.forwardRef(({className:t,...e},a)=>o.jsx("p",{ref:a,className:y("text-sm text-muted-foreground",t),...e}));Ls.displayName="CardDescription";const ma=m.forwardRef(({className:t,...e},a)=>o.jsx("div",{ref:a,className:y("p-6 pt-0",t),...e}));ma.displayName="CardContent";const NA=m.forwardRef(({className:t,...e},a)=>o.jsx("div",{ref:a,className:y("flex items-center p-6 pt-0",t),...e}));NA.displayName="CardFooter";function dm(t){const e=m.useRef({value:t,previous:t});return m.useMemo(()=>(e.current.value!==t&&(e.current.previous=e.current.value,e.current.value=t),e.current.previous),[t])}var Bl="Switch",[PA]=so(Bl),[AA,EA]=PA(Bl),My=m.forwardRef((t,e)=>{const{__scopeSwitch:a,name:i,checked:r,defaultChecked:n,required:s,disabled:l,value:c="on",onCheckedChange:d,form:u,...p}=t,[f,h]=m.useState(null),v=mt(e,k=>h(k)),g=m.useRef(!1),b=f?u||!!f.closest("form"):!0,[x,w]=tr({prop:r,defaultProp:n??!1,onChange:d,caller:Bl});return o.jsxs(AA,{scope:a,checked:x,disabled:l,children:[o.jsx(Xe.button,{type:"button",role:"switch","aria-checked":x,"aria-required":s,"data-state":$y(x),"data-disabled":l?"":void 0,disabled:l,value:c,...p,ref:v,onClick:Le(t.onClick,k=>{w(_=>!_),b&&(g.current=k.isPropagationStopped(),g.current||k.stopPropagation())})}),b&&o.jsx(Fy,{control:f,bubbles:!g.current,name:i,value:c,checked:x,required:s,disabled:l,form:u,style:{transform:"translateX(-100%)"}})]})});My.displayName=Bl;var zy="SwitchThumb",By=m.forwardRef((t,e)=>{const{__scopeSwitch:a,...i}=t,r=EA(zy,a);return o.jsx(Xe.span,{"data-state":$y(r.checked),"data-disabled":r.disabled?"":void 0,...i,ref:e})});By.displayName=zy;var IA="SwitchBubbleInput",Fy=m.forwardRef(({__scopeSwitch:t,control:e,checked:a,bubbles:i=!0,...r},n)=>{const s=m.useRef(null),l=mt(s,n),c=dm(a),d=df(e);return m.useEffect(()=>{const u=s.current;if(!u)return;const p=window.HTMLInputElement.prototype,h=Object.getOwnPropertyDescriptor(p,"checked").set;if(c!==a&&h){const v=new Event("click",{bubbles:i});h.call(u,a),u.dispatchEvent(v)}},[c,a,i]),o.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:a,...r,tabIndex:-1,ref:l,style:{...r.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});Fy.displayName=IA;function $y(t){return t?"checked":"unchecked"}var Vy=My,DA=By;const Vd=m.forwardRef(({className:t,...e},a)=>o.jsx(Vy,{className:y("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50",t),...e,ref:a,children:o.jsx(DA,{className:y("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})}));Vd.displayName=Vy.displayName;const RA=Mn("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Ie({className:t,variant:e,...a}){return o.jsx("div",{className:y(RA({variant:e}),t),...a})}var LA="Separator",Sh="horizontal",OA=["horizontal","vertical"],Uy=m.forwardRef((t,e)=>{const{decorative:a,orientation:i=Sh,...r}=t,n=MA(i)?i:Sh,l=a?{role:"none"}:{"aria-orientation":n==="vertical"?n:void 0,role:"separator"};return o.jsx(Xe.div,{"data-orientation":n,...l,...r,ref:e})});Uy.displayName=LA;function MA(t){return OA.includes(t)}var qy=Uy;const Os=m.forwardRef(({className:t,orientation:e="horizontal",decorative:a=!0,...i},r)=>o.jsx(qy,{ref:r,decorative:a,orientation:e,className:y("shrink-0 bg-border",e==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",t),...i}));Os.displayName=qy.displayName;var Fl="Checkbox",[zA]=so(Fl),[BA,um]=zA(Fl);function FA(t){const{__scopeCheckbox:e,checked:a,children:i,defaultChecked:r,disabled:n,form:s,name:l,onCheckedChange:c,required:d,value:u="on",internal_do_not_use_render:p}=t,[f,h]=tr({prop:a,defaultProp:r??!1,onChange:c,caller:Fl}),[v,g]=m.useState(null),[b,x]=m.useState(null),w=m.useRef(!1),k=v?!!s||!!v.closest("form"):!0,_={checked:f,disabled:n,setChecked:h,control:v,setControl:g,name:l,form:s,value:u,hasConsumerStoppedPropagationRef:w,required:d,defaultChecked:yi(r)?!1:r,isFormControl:k,bubbleInput:b,setBubbleInput:x};return o.jsx(BA,{scope:e,..._,children:$A(p)?p(_):i})}var Gy="CheckboxTrigger",Wy=m.forwardRef(({__scopeCheckbox:t,onKeyDown:e,onClick:a,...i},r)=>{const{control:n,value:s,disabled:l,checked:c,required:d,setControl:u,setChecked:p,hasConsumerStoppedPropagationRef:f,isFormControl:h,bubbleInput:v}=um(Gy,t),g=mt(r,u),b=m.useRef(c);return m.useEffect(()=>{const x=n==null?void 0:n.form;
552if(x){const w=()=>p(b.current);return x.addEventListener("reset",w),()=>x.removeEventListener("reset",w)}},[n,p]),o.jsx(Xe.button,{type:"button",role:"checkbox","aria-checked":yi(c)?"mixed":c,"aria-required":d,"data-state":Jy(c),"data-disabled":l?"":void 0,disabled:l,value:s,...i,ref:g,onKeyDown:Le(e,x=>{x.key==="Enter"&&x.preventDefault()}),onClick:Le(a,x=>{p(w=>yi(w)?!0:!w),v&&h&&(f.current=x.isPropagationStopped(),f.current||x.stopPropagation())})})});Wy.displayName=Gy;var mm=m.forwardRef((t,e)=>{const{__scopeCheckbox:a,name:i,checked:r,defaultChecked:n,required:s,disabled:l,value:c,onCheckedChange:d,form:u,...p}=t;return o.jsx(FA,{__scopeCheckbox:a,checked:r,defaultChecked:n,disabled:l,required:s,onCheckedChange:d,name:i,form:u,value:c,internal_do_not_use_render:({isFormControl:f})=>o.jsxs(o.Fragment,{children:[o.jsx(Wy,{...p,ref:e,__scopeCheckbox:a}),f&&o.jsx(Qy,{__scopeCheckbox:a})]})})});mm.displayName=Fl;var Hy="CheckboxIndicator",Ky=m.forwardRef((t,e)=>{const{__scopeCheckbox:a,forceMount:i,...r}=t,n=um(Hy,a);return o.jsx(In,{present:i||yi(n.checked)||n.checked===!0,children:o.jsx(Xe.span,{"data-state":Jy(n.checked),"data-disabled":n.disabled?"":void 0,...r,ref:e,style:{pointerEvents:"none",...t.style}})})});Ky.displayName=Hy;var Yy="CheckboxBubbleInput",Qy=m.forwardRef(({__scopeCheckbox:t,...e},a)=>{const{control:i,hasConsumerStoppedPropagationRef:r,checked:n,defaultChecked:s,required:l,disabled:c,name:d,value:u,form:p,bubbleInput:f,setBubbleInput:h}=um(Yy,t),v=mt(a,h),g=dm(n),b=df(i);m.useEffect(()=>{const w=f;if(!w)return;const k=window.HTMLInputElement.prototype,j=Object.getOwnPropertyDescriptor(k,"checked").set,S=!r.current;if(g!==n&&j){const C=new Event("click",{bubbles:S});w.indeterminate=yi(n),j.call(w,yi(n)?!1:n),w.dispatchEvent(C)}},[f,g,n,r]);const x=m.useRef(yi(n)?!1:n);return o.jsx(Xe.input,{type:"checkbox","aria-hidden":!0,defaultChecked:s??x.current,required:l,disabled:c,name:d,value:u,form:p,...e,tabIndex:-1,ref:v,style:{...e.style,...b,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});Qy.displayName=Yy;function $A(t){return typeof t=="function"}function yi(t){return t==="indeterminate"}function Jy(t){return yi(t)?"indeterminate":t?"checked":"unchecked"}const Ud=m.forwardRef(({className:t,...e},a)=>o.jsx(mm,{ref:a,className:y("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t),...e,children:o.jsx(Ky,{className:y("flex items-center justify-center text-current"),children:o.jsx(vl,{className:"h-4 w-4"})})}));Ud.displayName=mm.displayName;const Nt="/audios/sfx",Ac={snap:{src:[`${Nt}/grid_snap_0.mp3`,`${Nt}/grid_snap_1.mp3`,`${Nt}/grid_snap_2.mp3`],rateRange:[.98,1.02],volumeRange:[.5,.6],minIntervalMs:50},wallStart:{src:`${Nt}/structure_build_start.mp3`,rateRange:[.95,1.05],volumeRange:[.88,1]},wallCommit:{src:`${Nt}/structure_build_end.mp3`,rateRange:[.95,1.05],volumeRange:[.88,1]},structureDelete:{src:`${Nt}/structure_delete.mp3`,rateRange:[.9,1.1],volumeRange:[.9,1]},itemPlace:{src:`${Nt}/item_place.mp3`,rateRange:[.98,1.02],volumeRange:[.9,1]},itemPick:{src:`${Nt}/item_pick.mp3`,rateRange:[.95,1.05],volumeRange:[.92,1]},itemRotate:{src:`${Nt}/item_rotate.mp3`,rateRange:[.94,1.06],volumeRange:[.92,1],minIntervalMs:60},itemDelete:{src:`${Nt}/item_delete.mp3`,rateRange:[.9,1.1],volumeRange:[.9,1]},resize:{src:[`${Nt}/resize_0.mp3`,`${Nt}/resize_1.mp3`,`${Nt}/resize_2.mp3`],rateRange:[.98,1.02],volumeRange:[.26,.34],minIntervalMs:80},menuHover:{src:`${Nt}/menu_hover.mp3`,rateRange:[.98,1.02],volumeRange:[.2,.3]},menuClick:{src:`${Nt}/menu_click.mp3`,rateRange:[.98,1.02],volumeRange:[.5,.6]},paintApply:{src:`${Nt}/paint_apply.mp3`,rateRange:[.95,1.05],volumeRange:[.85,1],minIntervalMs:60},snapshot:{src:`${Nt}/snapshot_capture.mp3`}},Xy=t=>{if(t instanceof Error)return{type:"Error",name:t.name,message:t.message};if(typeof t=="object"&&t!==null){const e=["password","token","secret","key","authorization","cookie","session","jwt","bearer","credential","a
552pi_key","apiKey","access_token","refresh_token","stripe","payment","card","email","phone","ip","ip_address","registration_ip","user_agent"],a={};for(const[i,r]of Object.entries(t)){const n=i.toLowerCase();e.some(s=>n.includes(s))?a[i]="[REDACTED]":typeof r=="object"&&r!==null?a[i]=Xy(r):a[i]=r}return a}return t},Ch=t=>t.map(Xy),Zy={debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{console.warn(...Ch(t))},error:(...t)=>{console.error(...Ch(t))},group:t=>{},groupEnd:()=>{},table:t=>{}},VA=30,UA=5e3;let xs=null,Th=0;const qd=new Map,Ec=new Map,jh=new Map,Nh=new Map;function dl(){return typeof performance<"u"?performance.now():Date.now()}function Ph([t,e]){return t+Math.random()*(e-t)}function pm(){if(typeof window>"u"||dl()<Th)return null;if(xs)return xs;try{const t=window.AudioContext??window.webkitAudioContext;return t?(xs=new t,xs):null}catch(t){return Th=dl()+UA,Zy.error("[sfx] failed to create AudioContext",t),null}}async function Ah(t){const e=qd.get(t);if(e)return e;const a=Ec.get(t);if(a)return a;const i=pm();if(!i)return null;const r=(async()=>{try{const n=await fetch(t);if(!n.ok)throw new Error(`HTTP ${n.status}`);const s=await n.arrayBuffer(),l=await i.decodeAudioData(s);return qd.set(t,l),l}catch(n){return Zy.error(`[sfx] failed to load ${t}`,n),null}finally{Ec.delete(t)}})();return Ec.set(t,r),r}function qA(t,e){if(typeof e.src=="string")return e.src;const a=e.src,i=(jh.get(t)??0)%a.length;return jh.set(t,i+1),a[i]}function Eh(t,e,a){const i=pm();if(!i)return;i.state==="suspended"&&i.resume();const r=i.createBufferSource();r.buffer=t,r.playbackRate.value=e;const n=i.createGain();n.gain.value=a,r.connect(n),n.connect(i.destination),r.onended=()=>{r.disconnect(),n.disconnect()},r.start()}function GA(t){function e(r,n={}){const s=t();if(!s.enabled||s.muted||s.masterVolume<=0||s.sfxVolume<=0)return;const l=Ac[r];if(!l)return;const c=l.minIntervalMs??VA,d=dl(),u=Nh.get(r)??-1/0;if(d-u<c)return;Nh.set(r,d);const p=l.rateRange?Ph(l.rateRange):1,h=(l.volumeRange?Ph(l.volumeRange):1)*s.masterVolume*s.sfxVolume*(n.volumeMultiplier??1),v=qA(r,l),g=qd.get(v);if(g){Eh(g,p,h);return}Ah(v).then(b=>{b&&dl()-d<400&&Eh(b,p,h)})}function a(r){const n=r&&["item","furniture","opening","shelf"].includes(r)?"itemDelete":"structureDelete";e(n)}function i(r){if(!pm())return;const n=new Set,s=r?r.map(l=>Ac[l]).filter(Boolean):Object.values(Ac);for(const l of s)if(typeof l.src=="string")n.add(l.src);else for(const c of l.src)n.add(c);for(const l of n)Ah(l)}return{playSfx:e,playDeleteSfx:a,preloadSfx:i}}const Ih=t=>Math.min(1,Math.max(0,t));function WA(t){return Nx()(Px(e=>({enabled:!0,muted:!1,masterVolume:.7,sfxVolume:.6,setEnabled:a=>e({enabled:a}),setMuted:a=>e({muted:a}),toggleMuted:()=>e(a=>({muted:!a.muted})),setMasterVolume:a=>e({masterVolume:Ih(a)}),setSfxVolume:a=>e({sfxVolume:Ih(a)})}),{name:t}))}const Gd=WA("boardspace-canvas-audio"),e0=GA(()=>Gd.getState()),CW=e0.playSfx,TW=e0.preloadSfx,jW=["menuClick","menuHover","itemPlace","itemPick"];function Ye(t){const e=Object.prototype.toString.call(t);return t instanceof Date||typeof t=="object"&&e==="[object Date]"?new t.constructor(+t):typeof t=="number"||e==="[object Number]"||typeof t=="string"||e==="[object String]"?new Date(t):new Date(NaN)}function xi(t,e){return t instanceof Date?new t.constructor(e):new Date(e)}const t0=6048e5,HA=864e5,ws=43200,Dh=1440;let KA={};function Yn(){return KA}function Tn(t,e){var l,c,d,u;const a=Yn(),i=(e==null?void 0:e.weekStartsOn)??((c=(l=e==null?void 0:e.locale)==null?void 0:l.options)==null?void 0:c.weekStartsOn)??a.weekStartsOn??((u=(d=a.locale)==null?void 0:d.options)==null?void 0:u.weekStartsOn)??0,r=Ye(t),n=r.getDay(),s=(n<i?7:0)+n-i;return r.setDate(r.getDate()-s),r.setHours(0,0,0,0),r}function ul(t){return Tn(t,{weekStartsOn:1})}function a0(t){const e=Ye(t),a=e.getFullYear(),i=xi(t,0);i.setFullYear(a+1,0,4),i.setHours(0,0,0,0);const r=ul(i),n=xi(t,0);n.setFullYear(a,0,4),n.setHours(0,0,0,0);const s=ul(n);return e.getTime()>=r.getTime()?a+1:e.getTime()>=s.getTime()?a:a-1}function Rh(t){const e=Ye(t);return e.setHours(0,0,0,0),e}function ml(t){const e=Ye(t),a=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return a.setUTCFullYear(e.getFullYear()),+t-+a}function YA(t,e){const a=Rh(t),i=Rh(e),r=+a-ml(a),n=+i-ml(i);return Math.round((r-n)/HA)}function QA(t){const e=a0(t),a=xi(t,0);return a.setFullYear(e,0,4),a.setHours(0,0,0,0),ul(a)}function Ms(t,e){const a=Ye(t),i=Ye(e),r=a.getTime()-i.getTime();return r<0?-1:r>0?1:r}function JA(t){return xi(t,Date.now())}function XA(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function ZA(t){if(!XA(t)&&typeof t!="number")return!1;const e=Ye(t);return!isNaN(Number(e))}function eE(t,e){const a=Ye(t),i=Ye(e),r=a.getFullYear()-i.getFullYear(),n=a.getMonth()-i.getMonth();return r*12+n}function tE(t){return e=>{const i=(t?Math[t]:Math.trunc)(e);return i===0?0:i}}function aE(t,e){return+Ye(t)-+Ye(e)}function iE(t){const e=Ye(t);return e.setHours(23,59,59,999),e}function oE(t){const e=Ye(t),a=e.getMonth();return e.setFullYear(e.getFullYear(),a+1,0),e.setHours(23,59,59,999),e}function rE(t){const e=Ye(t);return+iE(e)==+oE(e)}function nE(t,e){const a=Ye(t),i=Ye(e),r=Ms(a,i),n=Math.abs(eE(a,i));let s;if(n<1)s=0;else{a.getMonth()===1&&a.getDate()>27&&a.setDate(30),a.setMonth(a.getMonth()-r*n);let l=Ms(a,i)===-r;rE(Ye(t))&&n===1&&Ms(t,i)===1&&(l=!1),s=r*(n-Number(l))}return s===0?0:s}function sE(t,e,a){const i=aE(t,e)/1e3;
vendor: 18,255 bytes, line 552
552return tE(a==null?void 0:a.roundingMethod)(i)}function lE(t){const e=Ye(t),a=xi(t,0);return a.setFullYear(e.getFullYear(),0,1),a.setHours(0,0,0,0),a}const cE={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},dE=(t,e,a)=>{let i;const r=cE[t];return typeof r=="string"?i=r:e===1?i=r.one:i=r.other.replace("{{count}}",e.toString()),a!=null&&a.addSuffix?a.comparison&&a.comparison>0?"in "+i:i+" ago":i};function Ic(t){return(e={})=>{const a=e.width?String(e.width):t.defaultWidth;return t.formats[a]||t.formats[t.defaultWidth]}}const uE={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},mE={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},pE={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},hE={date:Ic({formats:uE,defaultWidth:"full"}),time:Ic({formats:mE,defaultWidth:"full"}),dateTime:Ic({formats:pE,defaultWidth:"full"})},gE={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},fE=(t,e,a,i)=>gE[t];function Or(t){return(e,a)=>{const i=a!=null&&a.context?String(a.context):"standalone";let r;if(i==="formatting"&&t.formattingValues){const s=t.defaultFormattingWidth||t.defaultWidth,l=a!=null&&a.width?String(a.width):s;r=t.formattingValues[l]||t.formattingValues[s]}else{const s=t.defaultWidth,l=a!=null&&a.width?String(a.width):t.defaultWidth;r=t.values[l]||t.values[s]}const n=t.argumentCallback?t.argumentCallback(e):e;return r[n]}}const bE={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},vE={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},yE={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},xE={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},wE={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},kE={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},_E=(t,e)=>{const a=Number(t),i=a%100;if(i>20||i<10)switch(i%10){case 1:return a+"st";case 2:return a+"nd";case 3:return a+"rd"}return a+"th"},SE={ordinalNumber:_E,era:Or({values:bE,defaultWidth:"wide"}),quarter:Or({values:vE,defaultWidth:"wide",argumentCallback:t=>t-1}),month:Or({values:yE,defaultWidth:"wide"}),day:Or({values:xE,defaultWidth:"wide"}),dayPeriod:Or({values:wE,defaultWidth:"wide",formattingValues:kE,defaultFormattingWidth:"wide"})};function Mr(t){return(e,a={})=>{const i=a.width,r=i&&t.matchPatterns[i]||t.matchPatterns[t.defaultMatchWidth],n=e.match(r);if(!n)return null;const s=n[0],l=i&&t.parsePatterns[i]||t.parsePatterns[t.defaultParseWidth],c=Array.isArray(l)?TE(l,p=>p.test(s)):CE(l,p=>p.test(s));let d;d=t.valueCallback?t.valueCallback(c):c,d=a.valueCallback?a.valueCallback(d):d;const u=e.slice(s.length);return{value:d,rest:u}}}function CE(t,e){for(const a in t)if(Object.prototype.hasOwnProperty.call(t,a)&&e(t[a]))return a}function TE(t,e){for(let a=0;a<t.length;a++)if(e(t[a]))return a}function jE(t){return(e,a={})=>{const i=e.match(t.matchPattern);if(!i)return null;const r=i[0],n=e.match(t.parsePattern);if(!n)return null;let s=t.valueCallback?t.valueCallback(n[0]):n[0];s=a.valueCallback?a.valueCallback(s):s;const l=e.slice(r.length);return{value:s,rest:l}}}const NE=/^(\d+)(th|st|nd|rd)?/i,PE=/\d+/i,AE={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},EE={any:[/^b/i,/^(a|c)/i]},IE={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},DE={any:[/1/i,/2/i,/3/i,/4/i]},RE={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},LE={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},OE={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},ME={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},zE={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},BE={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},FE={ordinalNumber:jE({matchPattern:NE,parsePattern:PE,valueCallback:t=>parseInt(t,10)}),era:Mr({matchPatterns:AE,defaultMatchWidth:"wide",parsePatterns:EE,defaultParseWidth:"any"}),quarter:Mr({matchPatterns:IE,defaultMatchWidth:"wide",parsePatterns:DE,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Mr({matchPatterns:RE,defaultMatchWidth:"wide",parsePatterns:LE,defaultParseWidth:"any"}),day:Mr({matchPatterns:OE,defaultMatchWidth:"wide",parsePatterns:ME,defaultParseWidth:"any"}),dayPeriod:Mr({matchPatterns:zE,defaultMatchWidth:"any",parsePatterns:BE,defaultParseWidth:"any"})},i0={code:"en-US",formatDistance:dE,formatLong:hE,formatRelative:fE,localize:SE,match:FE,options:{weekStartsOn:0,firstWeekContainsDate:1}};function $E(t){const e=Ye(t);return YA(e,lE(e))+1}function VE(t){const e=Ye(t),a=+ul(e)-+QA(e);return Math.round(a/t0)+1}function o0(t,e){var u,p,f,h;const a=Ye(t),i=a.getFullYear(),r=Yn(),n=(e==null?void 0:e.firstWeekContainsDate)??((p=(u=e==null?void 0:e.locale)==null?void 0:u.options)==null?void 0:p.firstWeekContainsDate)??r.firstWeekContainsDate??((h=(f=r.locale)==null?void 0:f.options)==null?void 0:h.firstWeekContainsDate)??1,s=xi(t,0);s.setFullYear(i+1,0,n),s.setHours(0,0,0,0);const l=Tn(s,e),c=xi(t,0);c.setFullYear(i,0,n),c.setHours(0,0,0,0);const d=Tn(c,e);return a.getTime()>=l.getTime()?i+1:a.getTime()>=d.getTime()?i:i-1}function UE(t,e){var l,c,d,u;const a=Yn(),i=(e==null?void 0:e.firstWeekContainsDate)??((c=(l=e==null?void 0:e.locale)==null?void 0:l.options)==null?void 0:c.firstWeekContainsDate)??a.firstWeekContainsDate??((u=(d=a.locale)==null?void 0:d.options)==null?void 0:u.firstWeekContainsDate)??1,r=o0(t,e),n=xi(t,0);return n.setFullYear(r,0,i),n.setHours(0,0,0,0),Tn(n,e)}function qE(t,e){const a=Ye(t),i=+Tn(a,e)-+UE(a,e);return Math.round(i/t0)+1}function Ue(t,e){const a=t<0?"-":"",i=Math.abs(t).toString().padStart(e,"0");return a+i}const ti={y(t,e){const a=t.getFullYear(),i=a>0?a:1-a;return Ue(e==="yy"?i%100:i,e.length)},M(t,e){const a=t.getMonth();return e==="M"?String(a+1):Ue(a+1,2)},d(t,e){return Ue(t.getDate(),e.length)},a(t,e){const a=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return a.toUpperCase();case"aaa":return a;case"aaaaa":return a[0];case"aaaa":default:return a==="am"?"a.m.":"p.m."}},h(t,e){return Ue(t.getHours()%12||12,e.length)},H(t,e){return Ue(t.getHours(),e.length)},m(t,e){return Ue(t.getMinutes(),e.length)},s(t,e){return Ue(t.getSeconds(),e.length)},S(t,e){const a=e.length,i=t.getMilliseconds(),r=Math.trunc(i*Math.pow(10,a-3));return Ue(r,e.length)}},ko={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Lh={G:function(t,e,a){const i=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return a.era(i,{width:"abbreviated"});case"GGGGG":return a.era(i,{width:"narrow"});case"GGGG":default:return a.era(i,{width:"wide"})}},y:function(t,e,a){if(e==="yo"){const i=t.getFullYear(),r=i>0?i:1-i;return a.ordinalNumber(r,{unit:"year"})}return ti.y(t,e)},Y:function(t,e,a,i){const r=o0(t,i),n=r>0?r:1-r;if(e==="YY"){const s=n%100;return Ue(s,2)}return e==="Yo"?a.ordinalNumber(n,{unit:"year"}):Ue(n,e.length)},R:function(t,e){const a=a0(t);return Ue(a,e.length)},u:function(t,e){const a=t.getFullYear();return Ue(a,e.length)},Q:function(t,e,a){const i=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(i);case"QQ":return Ue(i,2);case"Qo":return a.ordinalNumber(i,{unit:"quarter"});case"QQQ":return a.quarter(i,{width:"abbreviated",context:"formatting"});case"QQQQQ":return a.quarter(i,{width:"narrow",context:"formatting"});case"QQQQ":default:return a.quarter(i,{width:"wide",context:"formatting"})}},q:function(t,e,a){const i=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(i);case"qq":return Ue(i,2);case"qo":return a.ordinalNumber(i,{unit:"quarter"});case"qqq":return a.quarter(i,{width:"abbreviated",context:"standalone"});case"qqqqq":return a.quarter(i,{width:"narrow",context:"standalone"});case"qqqq":default:return a.quarter(i,{width:"wide",context:"standalone"})}},M:function(t,e,a){const i=t.getMonth();switch(e){case"M":case"MM":return ti.M(t,e);case"Mo":return a.ordinalNumber(i+1,{unit:"month"});case"MMM":return a.month(i,{width:"abbreviated",context:"formatting"});case"MMMMM":return a.month(i,{width:"narrow",context:"formatting"});case"MMMM":default:return a.month(i,{width:"wide",context:"formatting"})}},L:function(t,e,a){const i=t.getMonth();switch(e){case"L":return String(i+1);case"LL":return Ue(i+1,2);case"Lo":return a.ordinalNumber(i+1,{unit:"month"});case"LLL":return a.month(i,{width:"abbreviated",context:"standalone"});case"LLLLL":return a.month(i,{width:"narrow",context:"standalone"});case"LLLL":default:return a.month(i,{width:"wide",context:"standalone"})}},w:function(t,e,a,i){const r=qE(t,i);return e==="wo"?a.ordinalNumber(r,{unit:"week"}):Ue(r,e.length)},I:function(t,e,a){const i=VE(t);return e==="Io"?a.ordinalNumber(i,{unit:"week"}):Ue(i,e.length)},d:function(t,e,a){return e==="do"?a.ordinalNumber(t.getDate(),{unit:"date"}):ti.d(t,e)},D:function(t,e,a){const i=$E(t);return e==="Do"?a.ordinalNumber(i,{unit:"dayOfYear"}):Ue(i,e.length)},E:function(t,e,a){const i=t.getDay();switch(e){case"E":case"EE":case"EEE":return a.day(i,{width:"abbreviated",context:"formatting"});case"EEEEE":return a.day(i,{width:"narrow",context:"formatting"});case"EEEEEE":return a.day(i,{width:"short",context:"formatting"});case"EEEE":default:return a.day(i,{width:"wide",context:"formatting"})}},e:function(t,e,a,i){const r=t.getDay(),n=(r-i.weekStartsOn+8)%7||7;switch(e){case"e":return String(n);case"ee":return Ue(n,2);case"eo":return a.ordinalNumber(n,{unit:"day"});case"eee":return a.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return a.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return a.day(r,{width:"short",context:"formatting"});case"eeee":default:return a.day(r,{width:"wide",context:"formatting"})}},c:function(t,e,a,i){const r=t.getDay(),n=(r-i.weekStartsOn+8)%7||7;switch(e){case"c":return String(n);case"cc":return Ue(n,e.length);case"co":return a.ordinalNumber(n,{unit:"day"});case"ccc":return a.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return a.day(r,{width:"narrow",context:"standalone"});case"cccccc":return a.day(r,{width:"short",context:"standalone"});case"cccc":default:return a.day(r,{width:"wide",context:"standalone"})}},i:function(t,e,a){const i=t.getDay(),r=i===0?7:i;switch(e){case"i":return String(r);case"ii":return Ue(r,e.length);case"io":return a.ordinalNumber(r,{unit:"day"});case"iii":return a.day(i,{width:"abbreviated",context:"formatting"});case"iiiii":return a.day(i,{width:"narrow",context:"formatting"});case"iiiiii":return a.day(i,{width:"short",context:"formatting"});case"iiii":default:return a.day(i,{width:"wide",context:"formatting"})}},a:function(t,e,a){const r=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return a.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"aaa":return a.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return a.dayPeriod(r,{width:"narrow",context:"formatting"});case"aaaa":default:return a.dayPeriod(r,{width:"wide",context:"formatting"})}},b:function(t,e,a){const i=t.getHours();let r;switch(i===12?r=ko.noon:i===0?r=ko.midnight:r=i/12>=1?"pm":"am",e){case"b":case"bb":return a.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return a.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return a.dayPeriod(r,{width:"narrow",context:"formatting"});case"bbbb":default:return a.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(t,e,a){const i=t.getHours();let r;switch(i>=17?r=ko.evening:i>=12?r=ko.afternoon:i>=4?r=ko.morning:r=ko.night,e){case"B":case"BB":case"BBB":return a.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return a.dayPeriod(r,{width:"narrow",context:"formatting"});case"BBBB":default:return a.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(t,e,a){if(e==="ho"){let i=t.getHours()%12;return i===0&&(i=12),a.ordinalNumber(i,{unit:"hour"})}return ti.h(t,e)},H:function(t,e,a){return e==="Ho"?a.ordinalNumber(t.getHours(),{unit:"hour"}):ti.H(t,e)},K:function(t,e,a){const i=t.getHours()%12;return e==="Ko"?a.ordinalNumber(i,{unit:"hour"}):Ue(i,e.length)},k:function(t,e,a){let i=t.getHours();return i===0&&(i=24),e==="ko"?a.ordinalNumber(i,{unit:"hour"}):Ue(i,e.length)},m:function(t,e,a){return e==="mo"?a.ordinalNumber(t.getMinutes(),{unit:"minute"}):ti.m(t,e)},s:function(t,e,a){return e==="so"?a.ordinalNumber(t.getSeconds(),{unit:"second"}):ti.s(t,e)},S:function(t,e){return ti.S(t,e)},X:function(t,e,a){const i=t.getTimezoneOffset();if(i===0)return"Z";switch(e){case"X":return Mh(i);case"XXXX":case"XX":return Oi(i);case"XXXXX":case"XXX":default:return Oi(i,":")}},x:function(t,e,a){const i=t.getTimezoneOffset();switch(e){case"x":return Mh(i);case"xxxx":case"xx":return Oi(i);case"xxxxx":case"xxx":default:return Oi(i,":")}},O:function(t,e,a){const i=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+Oh(i,":");case"OOOO":default:return"GMT"+Oi(i,":")}},z:function(t,e,a){const i=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+Oh(i,":");case"zzzz":default:return"GMT"+Oi(i,":")}},t:function(t,e,a){const i=Math.trunc(t.getTime()/1e3);return Ue(i,e.length)},T:function(t,e,a){const i=t.getTime();return Ue(i,e.length)}};function Oh(t,e=""){const a=t>0?"-":"+",i=Math.abs(t),r=Math.trunc(i/60),n=i%60;return n===0?a+String(r):a+String(r)+e+Ue(n,2)}function Mh(t,e){return t%60===0?(t>0?"-":"+")+Ue(Math.abs(t)/60,2):Oi(t,e)}function Oi(t,e=""){const a=t>0?"-":"+",i=Math.abs(t),r=Ue(Math.trunc(i/60),2),n=Ue(i%60,2);return a+r+e+n}const zh=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},r0=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},GE=(t,e)=>{const a=t.match(/(P+)(p+)?/)||[],i=a[1],r=a[2];if(!r)return zh(t,e);let n;switch(i){case"P":n=e.dateTime({width:"short"});break;case"PP":n=e.dateTime({width:"medium"});break;case"PPP":n=e.dateTime({width:"long"});break;case"PPPP":default:n=e.dateTime({width:"full"});break}return n.replace("{{date}}",zh(i,e)).replace("{{time}}",r0(r,e))},WE={p:r0,P:GE},HE=/^D+$/,KE=/^Y+$/,YE=["D","DD","YY","YYYY"];function QE(t){return HE.test(t)}function JE(t){return KE.test(t)}function XE(t,e,a){const i=ZE(t,e,a);if(console.warn(i),YE.includes(t))throw new RangeError(i)}function ZE(t,e,a){const i=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${i} to the input \`${a}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const eI=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,tI=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,aI=/^'([^]*?)'?$/,iI=/''/g,oI=/[a-zA-Z]/;function Bi(t,e,a){var u,p,f,h;const i=Yn(),r=i.locale??i0,n=i.firstWeekContainsDate??((p=(u=i.locale)==null?void 0:u.options)==null?void 0:p.firstWeekContainsDate)??1,s=i.weekStartsOn??((h=(f=i.locale)==null?void 0:f.options)==null?void 0:h.weekStartsOn)??0,l=Ye(t);if(!ZA(l))throw new RangeError("Invalid time value");let c=e.match(tI).map(v=>{const g=v[0];if(g==="p"||g==="P"){const b=WE[g];return b(v,r.formatLong)}return v}).join("").match(eI).map(v=>{if(v==="''")return{isToken:!1,value:"'"};const g=v[0];if(g==="'")return{isToken:!1,value:rI(v)};if(Lh[g])return{isToken:!0,value:v};
552if(g.match(oI))throw new RangeError("Format string contains an unescaped latin alphabet character `"+g+"`");return{isToken:!1,value:v}});r.localize.preprocessor&&(c=r.localize.preprocessor(l,c));const d={firstWeekContainsDate:n,weekStartsOn:s,locale:r};return c.map(v=>{if(!v.isToken)return v.value;const g=v.value;(JE(g)||QE(g))&&XE(g,e,String(t));const b=Lh[g[0]];return b(l,g,r.localize,d)}).join("")}function rI(t){const e=t.match(aI);return e?e[1].replace(iI,"'"):t}function nI(t,e,a){const i=Yn(),r=(a==null?void 0:a.locale)??i.locale??i0,n=2520,s=Ms(t,e);if(isNaN(s))throw new RangeError("Invalid time value");const l=Object.assign({},a,{addSuffix:a==null?void 0:a.addSuffix,comparison:s});let c,d;s>0?(c=Ye(e),d=Ye(t)):(c=Ye(t),d=Ye(e));const u=sE(d,c),p=(ml(d)-ml(c))/1e3,f=Math.round((u-p)/60);let h;if(f<2)return a!=null&&a.includeSeconds?u<5?r.formatDistance("lessThanXSeconds",5,l):u<10?r.formatDistance("lessThanXSeconds",10,l):u<20?r.formatDistance("lessThanXSeconds",20,l):u<40?r.formatDistance("halfAMinute",0,l):u<60?r.formatDistance("lessThanXMinutes",1,l):r.formatDistance("xMinutes",1,l):f===0?r.formatDistance("lessThanXMinutes",1,l):r.formatDistance("xMinutes",f,l);if(f<45)return r.formatDistance("xMinutes",f,l);if(f<90)return r.formatDistance("aboutXHours",1,l);if(f<Dh){const v=Math.round(f/60);return r.formatDistance("aboutXHours",v,l)}else{if(f<n)return r.formatDistance("xDays",1,l);if(f<ws){const v=Math.round(f/Dh);return r.formatDistance("xDays",v,l)}else if(f<ws*2)return h=Math.round(f/ws),r.formatDistance("aboutXMonths",h,l)}if(h=nE(d,c),h<12){const v=Math.round(f/ws);return r.formatDistance("xMonths",v,l)}else{const v=h%12,g=Math.trunc(h/12);return v<3?r.formatDistance("aboutXYears",g,l):v<9?r.formatDistance("overXYears",g,l):r.formatDistance("almostXYears",g+1,l)}}function Bh(t,e){return nI(t,JA(t),e)}class Fh{static async exchangeToken(e,a,i){const n=typeof window<"u"&&(window.location.hostname==="boardspace.ai"||window.location.hostname==="www.boardspace.ai")?"https://boardspace.ai/auth/pinterest/callback":"http://localhost:8081/auth/pinterest/callback",s=i||n,{data:l,error:c}=await V.functions.invoke("pinterest-exchange-token",{body:{code:e,user_id:a,redirect_uri:s}});if(c)throw new Error(`Failed to exchange token: ${c.message}`);return l}static async getConnection(){var e;try{const{data:{user:a}}=await V.auth.getUser();if(!a)return null;a.id;const{data:i,error:r}=await V.from("pinterest_connections").select("id, pinterest_user_id, pinterest_username, pinterest_avatar_url, board_count, connected_at, last_synced_at").eq("user_id",a.id).single();if(r)return r.code==="PGRST116"||(e=r.message)!=null&&e.includes('relation "pinterest_connections" does not exist')||console.error("Error fetching Pinterest connection:",r),null;if(!i)return null;const n=i;return{id:n.id,pinterest_user_id:n.pinterest_user_id,pinterest_username:n.pinterest_username||void 0,pinterest_avatar_url:n.pinterest_avatar_url||void 0,board_count:n.board_count||0,connected_at:n.connected_at||new Date().toISOString(),last_synced_at:n.last_synced_at||void 0}}catch(a){return console.error("Error checking Pinterest connection:",a),null}}static async disconnect(){try{const{data:{user:e}}=await V.auth.getUser();if(!e)throw new Error("User not authenticated");const{error:a}=await V.from("pinterest_connections").delete().eq("user_id",e.id);if(a)throw new Error(`Failed to disconnect Pinterest account: ${a.message}`);return{success:!0}}catch(e){throw console.error("Error disconnecting Pinterest account:",e),e}}static async fetchBoards(e={}){const{data:a,error:i}=await V.functions.invoke("pinterest-fetch-data",{body:{type:"boards",page_size:e.page_size||25,bookmark:e.bookmark}});if(i)throw new Error(`Failed to fetch boards: ${i.message}`);return a}static async fetchPins(e,a={}){const{data:i,error:r}=await V.functions.invoke("pinterest-fetch-data",{body:{type:"pins",board_id:e,page_size:a.page_size||25,bookmark:a.bookmark}});if(r)throw new Error(`Failed to fetch pins: ${r.message}`);return i}static async importPins(e){const{data:a,error:i}=await V.functions.invoke("pinterest-import-pins",{body:e});if(i)throw new Error(`Failed to import pins: ${i.message}`);return a}static async getImportedPins(e,a={}){const{page:i=1,limit:r=20}=a,n=(i-1)*r,s=n+r-1,{data:l,error:c,count:d}=await V.from("pinterest_imported_pins").select("*",{count:"exact"}).eq("project_id",e).order("created_at",{ascending:!1}).range(n,s);if(c)throw new Error(`Failed to fetch imported pins: ${c.message}`);return{pins:l||[],count:d||0}}static async getAllImportedPins(e={}){const{page:a=1,limit:i=20}=e,r=(a-1)*i,n=r+i-1,{data:s,error:l,count:c}=await V.from("pinterest_imported_pins").select("*",{count:"exact"}).order("created_at",{ascending:!1}).range(r,n);if(l)throw new Error(`Failed to fetch imported pins: ${l.message}`);return{pins:s||[],count:c||0}}static async deleteImportedPin(e){const{error:a}=await V.from("pinterest_imported_pins").delete().eq("id",e);if(a)throw new Error(`Failed to delete pin: ${a.message}`);return{success:!0,message:"Pin deleted successfully"}}static async getConnectionStatus(){try{const{data:{user:e}}=await V.auth.getUser();if(!e)return{connected:!1};const{data:a,error:i}=await V.from("pinterest_connections").select("pinterest_username").eq("user_id",e.id).single();return i||!a?{connected:!1}:{connected:!0,username:a.pinterest_username||void 0}}catch(e){return console.error("Error checking Pinterest connection status:",e),{connected:!1}}}static async getUserProfile(){const{data:e,error:a}=await V.from("user_profiles").select("tokens_available, tokens_spent").single();if(a||!e)throw new Error(`Failed to fetch user profile: ${(a==null?void 0:a.message)||"No data returned"}`);const i=e;return{tokens_available:i.tokens_available||0,tokens_spent:i.tokens_spent||0}}static async getImportHistory(e={}){const{page:a=1,limit:i=20}=e,r=(a-1)*i,n=r+i-1,{data:s,error:l,count:c}=await V.from("pinterest_import_history").select("*",{count:"exact"}).order("created_at",{ascending:!1}).range(r,n);if(l)throw new Error(`Failed to fetch import history: ${l.message}`);return{history:s||[],count:c||0}}static async getProjects(){const{data:e,error:a}=await V.from("canvas_docs_konva").select("id, title, created_at, updated_at, thumbnail_url").order("created_at",{ascending:!1});if(a)throw new Error(`Failed to fetch projects: ${a.message}`);return{projects:e||[]}}static async createProject(e,a){const{data:{user:i}}=await V.auth.getUser();if(!i)throw new Error("User not authenticated");const{data:r,error:n}=await V.from("canvas_docs_konva").insert({title:e,owner_id:i.id}).select().single();if(n)throw new Error(`Failed to create project: ${n.message}`);return{project:r}}}const sI="/assets/boardspace-mark-light-Bvxb6wk_.png",lI="/assets/boardspace-mark-dark-Cae8OnfK.png",cI=({open:t,onClose:e})=>{const[a,i]=m.useState(!1),{refetch:r}=Nl(),n=async(s,l)=>{var c;try{i(!0);const{data:d,error:u}=await V.rpc("award_free_tokens",{p_user_id:(c=(await V.auth.getUser()).data.user)==null?void 0:c.id,p_amount:s,p_feature:"token_purchase"});if(u)throw u;le.success(`Successfully purchased ${s} tokens!`),await r(),e()}catch(d){console.error("Purchase error:",d),le.error("Failed to purchase tokens. Please try again.")}finally{i(!1)}};return t?o.jsx(Si,{open:t,onOpenChange:e,children:o.jsxs(mo,{className:"max-w-4xl",children:[o.jsx(Un,{children:o.jsx(Ci,{className:"text-3xl font-bold text-center mb-6",children:"Purchase Tokens"})}),o.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:ij.map(s=>o.jsxs("div",{className:`border-2 rounded-xl p-6 relative transition-all duration-200 hover:shadow-lg ${s.popular?"border-blue-500 shadow-lg":"border-gray-200 hover:border-gray-300"}`,children:[s.popular&&o.jsx(Ie,{className:"absolute -top-3 left-1/2 -translate-x-1/2 bg-blue-500 text-white px-4 py-1 rounded-full text-sm font-semibold",children:"Most Popular"}),o.jsxs("div",{className:"text-center",children:[o.jsx("div",{className:"text-4xl font-bold mb-2",children:s.tokens}),o.jsx("div",{className:"text-gray-600 mb-4",children:"tokens"}),o.jsxs("div",{className:"text-3xl font-bold text-blue-600 mb-6",children:["$",s.price]}),o.jsxs("div",{className:"text-sm text-gray-500 mb-6",children:["$",(s.price/s.tokens).toFixed(3)," per token"]}),o.jsx(ee,{onClick:()=>n(s.tokens,s.price),disabled:a,className:"w-full bg-blue-600 text-white py-3 rounded-lg font-semibold hover:bg-blue-700 transition disabled:opacity-50",children:a?o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(to,{className:"w-4 h-4 animate-spin"}),o.jsx("span",{children:"Processing..."})]}):o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{children:"Purchase"}),o.jsx(vl,{className:"w-4 h-4"})]})})]})]},s.tokens))}),o.jsx("div",{className:"mt-8 text-center",children:o.jsx("p",{className:"text-sm text-gray-500",children:"Tokens never expire and can be used for any feature"})})]})}):null},n0=m.forwardRef(({className:t,...e},a)=>o.jsx("div",{className:"relative w-full overflow-auto",children:o.jsx("table",{ref:a,className:y("w-full caption-bottom text-sm",t),...e})}));n0.displayName="Table";const s0=m.forwardRef(({className:t,...e},a)=>o.jsx("thead",{ref:a,className:y("[&_tr]:border-b",t),...e}));s0.displayName="TableHeader";const l0=m.forwardRef(({className:t,...e},a)=>o.jsx("tbody",{ref:a,className:y("[&_tr:last-child]:border-0",t),...e}));l0.displayName="TableBody";const dI=m.forwardRef(({className:t,...e},a)=>o.jsx("tfoot",{ref:a,className:y("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),...e}));dI.displayName="TableFooter";const Wd=m.forwardRef(({className:t,...e},a)=>o.jsx("tr",{ref:a,className:y("border-b transition-colors data-[state=selected]:bg-muted hover:bg-muted/50",t),...e}));Wd.displayName="TableRow";const Ur=m.forwardRef(({className:t,...e},a)=>o.jsx("th",{ref:a,className:y("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",t),...e}));Ur.displayName="TableHead";const qr=m.forwardRef(({className:t,...e},a)=>o.jsx("td",{ref:a,className:y("p-4 align-middle [&:has([role=checkbox])]:pr-0",t),...e}));qr.displayName="TableCell";const uI=m.forwardRef(({className:t,...e},a)=>o.jsx("caption",{ref:a,className:y("mt-4 text-sm text-muted-foreground",t),...e}));uI.displayName="TableCaption";const mI=()=>{const{user:t}=Pt(),{t:e,i18n:a}=$e(["canvas"]),{locale:i}=Dt(),r=typeof window<"u"?_i():null,n=i==="he"||a.language==="he"||r==="he"||typeof document<"u"&&document.documentElement.dir==="rtl",{data:s,isLoading:l,error:c}=ta({queryKey:["token-usage",t==null?void 0:t.id],queryFn:async()=>
552{if(!t)return[];const{data:u,error:p}=await V.from("token_ledger").select("*").eq("user_id",t.id).order("ts",{ascending:!1}).limit(100);if(p)throw console.error("Error fetching token usage:",p),p;return u||[]},enabled:!!t,retry:2}),d=u=>{const p=tj(u);if(p!=null&&p.name){if(/[\u0590-\u05FF]/.test(p.name))return p.name;let f=p.name;return f=f.replace(/Seedance\s*/gi,""),f=f.replace(/Kling\s*/gi,""),f=f.replace(/WAN\s*/gi,""),f=f.replace(/LTX\s*/gi,""),f=f.replace(/Vizio9\s*/gi,""),f=f.replace(/Trellis\s*/gi,""),f=f.replace(/NanoBanana\s*/gi,""),f=f.replace(/BRIA\s*/gi,""),f=f.replace(/\s+/g," ").trim(),/^[\d-]/.test(f)&&!f.toLowerCase().includes("video")&&(f=`Video ${f}`),f||p.name}return u.replace(/_/g," ").replace(/\b\w/g,f=>f.toUpperCase()).replace(/Seedance\s*/gi,"").replace(/Kling\s*/gi,"").replace(/WAN\s*/gi,"").replace(/LTX\s*/gi,"").replace(/Vizio9\s*/gi,"").replace(/Trellis\s*/gi,"").replace(/NanoBanana\s*/gi,"").replace(/BRIA\s*/gi,"").replace(/\s+/g," ").trim()};return l?o.jsxs("div",{className:"flex items-center justify-center py-8",children:[o.jsx(to,{className:"w-6 h-6 animate-spin"}),o.jsx("span",{className:n?"mr-2":"ml-2",children:n?e("settings.tokenUsage.loading",{ns:"canvas"}):"Loading usage data..."})]}):c?o.jsxs("div",{className:"text-center text-destructive py-8 border rounded-md",children:[o.jsx("p",{className:"font-medium",children:n?e("settings.tokenUsage.error",{ns:"canvas"}):"Failed to load token usage"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:c instanceof Error?c.message:"Unknown error"})]}):o.jsxs("div",{className:`space-y-4 ${n?"font-heebo":""}`,children:[o.jsxs("div",{children:[o.jsx("h3",{className:`text-lg font-semibold mb-2 ${n?"font-heebo":""}`,children:n?e("settings.tokenUsage.title",{ns:"canvas"}):"Token Usage"}),o.jsx("p",{className:`text-sm text-muted-foreground ${n?"font-heebo":""}`,children:n?e("settings.tokenUsage.description",{ns:"canvas"}):"Complete history of all token transactions and feature calls"})]}),s&&s.length>0?o.jsx("div",{className:"rounded-md border overflow-x-auto",children:o.jsxs(n0,{children:[o.jsx(s0,{children:o.jsxs(Wd,{children:[o.jsx(Ur,{className:n?"font-heebo":"",children:n?e("settings.tokenUsage.feature",{ns:"canvas"}):"Feature"}),o.jsx(Ur,{className:n?"font-heebo":"",children:n?e("settings.tokenUsage.tokens",{ns:"canvas"}):"Tokens"}),o.jsx(Ur,{className:n?"font-heebo":"",children:n?e("settings.tokenUsage.dateTime",{ns:"canvas"}):"Date & Time"}),o.jsx(Ur,{className:n?"font-heebo":"",children:n?e("settings.tokenUsage.type",{ns:"canvas"}):"Type"})]})}),o.jsx(l0,{children:s.map(u=>o.jsxs(Wd,{children:[o.jsx(qr,{className:`font-medium ${n?"font-heebo":""}`,children:d(u.feature)}),o.jsx(qr,{children:o.jsxs("div",{className:"flex items-center gap-2",children:[u.tokens_used<0?o.jsx(Mw,{className:"w-4 h-4 text-green-600"}):o.jsx(Ow,{className:"w-4 h-4 text-red-600"}),o.jsxs(Ie,{variant:u.tokens_used<0?"default":"destructive",className:`${u.tokens_used<0?"bg-green-600 hover:bg-green-700":"bg-red-600 hover:bg-red-700"} ${n?"font-heebo":""}`,children:[u.tokens_used<0?"+":"",Math.abs(u.tokens_used).toFixed(2)," tokens"]})]})}),o.jsx(qr,{className:`text-muted-foreground ${n?"font-heebo":""}`,children:u.ts?Bi(new Date(u.ts),"MMM dd, yyyy HH:mm:ss"):"N/A"}),o.jsx(qr,{children:o.jsx(Ie,{variant:"outline",className:n?"font-heebo":"",children:u.tokens_used<0?n?e("settings.tokenUsage.credit",{ns:"canvas"}):"Credit":n?e("settings.tokenUsage.debit",{ns:"canvas"}):"Debit"})})]},u.id))})]})}):o.jsx("div",{className:`text-center text-muted-foreground py-8 border rounded-md ${n?"font-heebo":""}`,children:n?e("settings.tokenUsage.noUsage",{ns:"canvas"}):"No token usage history yet. Your transactions will appear here."})]})};function $h(t,[e,a]){return Math.min(a,Math.max(e,t))}var pI=[" ","Enter","ArrowUp","ArrowDown"],hI=[" ","Enter"],ro="Select",[$l,Vl,gI]=Cx(ro),[jr]=so(ro,[gI,hr]),Ul=hr(),[fI,ji]=jr(ro),[bI,vI]=jr(ro),c0=t=>{const{__scopeSelect:e,children:a,open:i,defaultOpen:r,onOpenChange:n,value:s,defaultValue:l,onValueChange:c,dir:d,name:u,autoComplete:p,disabled:f,required:h,form:v}
vendor: 17,944 bytes, line 552
552=t,g=Ul(e),[b,x]=m.useState(null),[w,k]=m.useState(null),[_,j]=m.useState(!1),S=Tx(d),[C,N]=tr({prop:i,defaultProp:r??!1,onChange:n,caller:ro}),[P,E]=tr({prop:s,defaultProp:l,onChange:c,caller:ro}),L=m.useRef(null),A=b?v||!!b.closest("form"):!0,[I,R]=m.useState(new Set),B=Array.from(I).map(z=>z.props.value).join(";");return o.jsx(cu,{...g,children:o.jsxs(fI,{required:h,scope:e,trigger:b,onTriggerChange:x,valueNode:w,onValueNodeChange:k,valueNodeHasChildren:_,onValueNodeHasChildrenChange:j,contentId:Dn(),value:P,onValueChange:E,open:C,onOpenChange:N,dir:S,triggerPointerDownPosRef:L,disabled:f,children:[o.jsx($l.Provider,{scope:e,children:o.jsx(bI,{scope:t.__scopeSelect,onNativeOptionAdd:m.useCallback(z=>{R(Z=>new Set(Z).add(z))},[]),onNativeOptionRemove:m.useCallback(z=>{R(Z=>{const fe=new Set(Z);return fe.delete(z),fe})},[]),children:a})}),A?o.jsxs(R0,{"aria-hidden":!0,required:h,tabIndex:-1,name:u,autoComplete:p,value:P,onChange:z=>E(z.target.value),disabled:f,form:v,children:[P===void 0?o.jsx("option",{value:""}):null,Array.from(I)]},B):null]})})};c0.displayName=ro;var d0="SelectTrigger",u0=m.forwardRef((t,e)=>{const{__scopeSelect:a,disabled:i=!1,...r}=t,n=Ul(a),s=ji(d0,a),l=s.disabled||i,c=mt(e,s.onTriggerChange),d=Vl(a),u=m.useRef("touch"),[p,f,h]=O0(g=>{const b=d().filter(k=>!k.disabled),x=b.find(k=>k.value===s.value),w=M0(b,g,x);w!==void 0&&s.onValueChange(w.value)}),v=g=>{l||(s.onOpenChange(!0),h()),g&&(s.triggerPointerDownPosRef.current={x:Math.round(g.pageX),y:Math.round(g.pageY)})};return o.jsx(gl,{asChild:!0,...n,children:o.jsx(Xe.button,{type:"button",role:"combobox","aria-controls":s.contentId,"aria-expanded":s.open,"aria-required":s.required,"aria-autocomplete":"none",dir:s.dir,"data-state":s.open?"open":"closed",disabled:l,"data-disabled":l?"":void 0,"data-placeholder":L0(s.value)?"":void 0,...r,ref:c,onClick:Le(r.onClick,g=>{g.currentTarget.focus(),u.current!=="mouse"&&v(g)}),onPointerDown:Le(r.onPointerDown,g=>{u.current=g.pointerType;const b=g.target;b.hasPointerCapture(g.pointerId)&&b.releasePointerCapture(g.pointerId),g.button===0&&g.ctrlKey===!1&&g.pointerType==="mouse"&&(v(g),g.preventDefault())}),onKeyDown:Le(r.onKeyDown,g=>{const b=p.current!=="";!(g.ctrlKey||g.altKey||g.metaKey)&&g.key.length===1&&f(g.key),!(b&&g.key===" ")&&pI.includes(g.key)&&(v(),g.preventDefault())})})})});u0.displayName=d0;var m0="SelectValue",p0=m.forwardRef((t,e)=>{const{__scopeSelect:a,className:i,style:r,children:n,placeholder:s="",...l}=t,c=ji(m0,a),{onValueNodeHasChildrenChange:d}=c,u=n!==void 0,p=mt(e,c.onValueNodeChange);return _a(()=>{d(u)},[d,u]),o.jsx(Xe.span,{...l,ref:p,style:{pointerEvents:"none"},children:L0(c.value)?o.jsx(o.Fragment,{children:s}):n})});p0.displayName=m0;var yI="SelectIcon",h0=m.forwardRef((t,e)=>{const{__scopeSelect:a,children:i,...r}=t;return o.jsx(Xe.span,{"aria-hidden":!0,...r,ref:e,children:i||"▼"})});h0.displayName=yI;var xI="SelectPortal",g0=t=>o.jsx(nu,{asChild:!0,...t});g0.displayName=xI;var no="SelectContent",f0=m.forwardRef((t,e)=>{const a=ji(no,t.__scopeSelect),[i,r]=m.useState();if(_a(()=>{r(new DocumentFragment)},[]),!a.open){const n=i;return n?Fi.createPortal(o.jsx(b0,{scope:t.__scopeSelect,children:o.jsx($l.Slot,{scope:t.__scopeSelect,children:o.jsx("div",{children:t.children})})}),n):null}return o.jsx(v0,{...t,ref:e})});f0.displayName=no;var ba=10,[b0,Ni]=jr(no),wI="SelectContentImpl",kI=nf("SelectContent.RemoveScroll"),v0=m.forwardRef((t,e)=>{const{__scopeSelect:a,position:i="item-aligned",onCloseAutoFocus:r,onEscapeKeyDown:n,onPointerDownOutside:s,side:l,sideOffset:c,align:d,alignOffset:u,arrowPadding:p,collisionBoundary:f,collisionPadding:h,sticky:v,hideWhenDetached:g,avoidCollisions:b,...x}=t,w=ji(no,a),[k,_]=m.useState(null),[j,S]=m.useState(null),C=mt(e,W=>_(W)),[N,P]=m.useState(null),[E,L]=m.useState(null),A=Vl(a),[I,R]=m.useState(!1),B=m.useRef(!1);m.useEffect(()=>{if(k)return of(k)},[k]),sf();const z=m.useCallback(W=>{const[ue,...ke]=A().map(M=>M.ref.current),[re]=ke.slice(-1),ge=document.activeElement;for(const M of W)if(M===ge||(M==null||M.scrollIntoView({block:"nearest"}),M===ue&&j&&(j.scrollTop=0),M===re&&j&&(j.scrollTop=j.scrollHeight),M==null||M.focus(),document.activeElement!==ge))return},[A,j]),Z=m.useCallback(()=>z([N,k]),[z,N,k]);m.useEffect(()=>{I&&Z()},[I,Z]);const{onOpenChange:fe,triggerPointerDownPosRef:O}=w;m.useEffect(()=>{if(k){let W={x:0,y:0};const ue=re=>{var ge,M;W={x:Math.abs(Math.round(re.pageX)-(((ge=O.current)==null?void 0:ge.x)??0)),y:Math.abs(Math.round(re.pageY)-(((M=O.current)==null?void 0:M.y)??0))}},ke=re=>{W.x<=10&&W.y<=10?re.preventDefault():k.contains(re.target)||fe(!1),document.removeEventListener("pointermove",ue),O.current=null};return O.current!==null&&(document.addEventListener("pointermove",ue),document.addEventListener("pointerup",ke,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ue),document.removeEventListener("pointerup",ke,{capture:!0})}}},[k,fe,O]),m.useEffect(()=>{const W=()=>fe(!1);return window.addEventListener("blur",W),window.addEventListener("resize",W),()=>{window.removeEventListener("blur",W),window.removeEventListener("resize",W)}},[fe]);const[Q,Y]=O0(W=>{const ue=A().filter(ge=>!ge.disabled),ke=ue.find(ge=>ge.ref.current===document.activeElement),re=M0(ue,W,ke);re&&setTimeout(()=>re.ref.current.focus())}),K=m.useCallback((W,ue,ke)=>{const re=!B.current&&!ke;(w.value!==void 0&&w.value===ue||re)&&(P(W),re&&(B.current=!0))},[w.value]),J=m.useCallback(()=>k==null?void 0:k.focus(),[k]),oe=m.useCallback((W,ue,ke)=>{const re=!B.current&&!ke;(w.value!==void 0&&w.value===ue||re)&&L(W)},[w.value]),ve=i==="popper"?Hd:y0,je=ve===Hd?{side:l,sideOffset:c,align:d,alignOffset:u,arrowPadding:p,collisionBoundary:f,collisionPadding:h,sticky:v,hideWhenDetached:g,avoidCollisions:b}:{};return o.jsx(b0,{scope:a,content:k,viewport:j,onViewportChange:S,itemRefCallback:K,selectedItem:N,onItemLeave:J,itemTextRefCallback:oe,focusSelectedItem:Z,selectedItemText:E,position:i,isPositioned:I,searchRef:Q,children:o.jsx(rf,{as:kI,allowPinchZoom:!0,children:o.jsx(lf,{asChild:!0,trapped:w.open,onMountAutoFocus:W=>{W.preventDefault()},onUnmountAutoFocus:Le(r,W=>{var ue;(ue=w.trigger)==null||ue.focus({preventScroll:!0}),W.preventDefault()}),children:o.jsx(su,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:n,onPointerDownOutside:s,onFocusOutside:W=>W.preventDefault(),onDismiss:()=>w.onOpenChange(!1),children:o.jsx(ve,{role:"listbox",id:w.contentId,"data-state":w.open?"open":"closed",dir:w.dir,onContextMenu:W=>W.preventDefault(),...x,...je,onPlaced:()=>R(!0),ref:C,style:{display:"flex",flexDirection:"column",outline:"none",...x.style},onKeyDown:Le(x.onKeyDown,W=>{const ue=W.ctrlKey||W.altKey||W.metaKey;if(W.key==="Tab"&&W.preventDefault(),!ue&&W.key.length===1&&Y(W.key),["ArrowUp","ArrowDown","Home","End"].includes(W.key)){let re=A().filter(ge=>!ge.disabled).map(ge=>ge.ref.current);if(["ArrowUp","End"].includes(W.key)&&(re=re.slice().reverse()),["ArrowUp","ArrowDown"].includes(W.key)){const ge=W.target,M=re.indexOf(ge);re=re.slice(M+1)}setTimeout(()=>z(re)),W.preventDefault()}})})})})})})});v0.displayName=wI;var _I="SelectItemAlignedPosition",y0=m.forwardRef((t,e)=>{const{__scopeSelect:a,onPlaced:i,...r}=t,n=ji(no,a),s=Ni(no,a),[l,c]=m.useState(null),[d,u]=m.useState(null),p=mt(e,C=>u(C)),f=Vl(a),h=m.useRef(!1),v=m.useRef(!0),{viewport:g,selectedItem:b,selectedItemText:x,focusSelectedItem:w}=s,k=m.useCallback(()=>{if(n.trigger&&n.valueNode&&l&&d&&g&&b&&x){const C=n.trigger.getBoundingClientRect(),N=d.getBoundingClientRect(),P=n.valueNode.getBoundingClientRect(),E=x.getBoundingClientRect();if(n.dir!=="rtl"){const ge=E.left-N.left,M=P.left-ge,Ee=C.left-M,Ne=C.width+Ee,We=Math.max(Ne,N.width),ze=window.innerWidth-ba,Ze=$h(M,[ba,Math.max(ba,ze-We)]);l.style.minWidth=Ne+"px",l.style.left=Ze+"px"}else{const ge=N.right-E.right,M=window.innerWidth-P.right-ge,Ee=window.innerWidth-C.right-M,Ne=C.width+Ee,We=Math.max(Ne,N.width),ze=window.innerWidth-ba,Ze=$h(M,[ba,Math.max(ba,ze-We)]);l.style.minWidth=Ne+"px",l.style.right=Ze+"px"}const L=f(),A=window.innerHeight-ba*2,I=g.scrollHeight,R=window.getComputedStyle(d),B=parseInt(R.borderTopWidth,10),z=parseInt(R.paddingTop,10),Z=parseInt(R.borderBottomWidth,10),fe=parseInt(R.paddingBottom,10),O=B+z+I+fe+Z,Q=Math.min(b.offsetHeight*5,O),Y=window.getComputedStyle(g),K=parseInt(Y.paddingTop,10),J=parseInt(Y.paddingBottom,10),oe=C.top+C.height/2-ba,ve=A-oe,je=b.offsetHeight/2,W=b.offsetTop+je,ue=B+z+W,ke=O-ue;if(ue<=oe){const ge=L.length>0&&b===L[L.length-1].ref.current;l.style.bottom="0px";const M=d.clientHeight-g.offsetTop-g.offsetHeight,Ee=Math.max(ve,je+(ge?J:0)+M+Z),Ne=ue+Ee;l.style.height=Ne+"px"}else{const ge=L.length>0&&b===L[0].ref.current;l.style.top="0px";const Ee=Math.max(oe,B+g.offsetTop+(ge?K:0)+je)+ke;l.style.height=Ee+"px",g.scrollTop=ue-oe+g.offsetTop}l.style.margin=`${ba}px 0`,l.style.minHeight=Q+"px",l.style.maxHeight=A+"px",i==null||i(),requestAnimationFrame(()=>h.current=!0)}},[f,n.trigger,n.valueNode,l,d,g,b,x,n.dir,i]);_a(()=>k(),[k]);const[_,j]=m.useState();_a(()=>{d&&j(window.getComputedStyle(d).zIndex)},[d]);const S=m.useCallback(C=>{C&&v.current===!0&&(k(),w==null||w(),v.current=!1)},[k,w]);return o.jsx(CI,{scope:a,contentWrapper:l,shouldExpandOnScrollRef:h,onScrollButtonChange:S,children:o.jsx("div",{ref:c,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:_},children:o.jsx(Xe.div,{...r,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...r.style}})})})});y0.displayName=_I;var SI="SelectPopperPosition",Hd=m.forwardRef((t,e)=>{const{__scopeSelect:a,align:i="start",collisionPadding:r=ba,...n}=t,s=Ul(a);return o.jsx(lu,{...s,...n,ref:e,align:i,collisionPadding:r,style:{boxSizing:"border-box",...n.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});Hd.displayName=SI;var[CI,hm]=jr(no,{}),Kd="SelectViewport",x0=m.forwardRef((t,e)=>{const{__scopeSelect:a,nonce:i,...r}=t,n=Ni(Kd,a),s=hm(Kd,a),l=mt(e,n.onViewportChange),c=m.useRef(0);return o.jsxs(o.Fragment,{children:[o.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),o.jsx($l.Slot,{scope:a,children:o.jsx(Xe.div,{"data-radix-select-viewport":"",role:"presentation",...r,ref:l,style:{position:"relative",flex:1,overflow:"hidden auto",...r.style},onScroll:Le(r.onScroll,d=>{const u=d.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:f}=s;if(f!=null&&f.current&&p){const h=Math.abs(c.current-u.scrollTop);if(h>0){const v=window.innerHeight-ba*2,g=parseFloat(p.style.minHeight),b=parseFloat(p.style.height),x=Math.max(g,b);if(x<v){const w=x+h,k=Math.min(v,w),_=w-k;p.style.height=k+"px",p.style.bottom==="0px"&&(u.scrollTop=_>0?_:0,p.style.justifyContent="flex-end")}}}c.current=u.scrollTop})})})]})});x0.displayName=Kd;var w0="SelectGroup",[TI,jI]=jr(w0),k0=m.forwardRef((t,e)=>{const{__scopeSelect:a,...i}=t,r=Dn();return o.jsx(TI,{scope:a,id:r,children:o.jsx(Xe.div,{role:"group","aria-labelledby":r,...i,ref:e})})});k0.displayName=w0;var _0="SelectLabel",S0=m.forwardRef((t,e)=>{const{__scopeSelect:a,...i}=t,r=jI(_0,a);return o.jsx(Xe.div,{id:r.id,...i,ref:e})});S0.displayName=_0;var pl="SelectItem",[NI,C0]=jr(pl),T0=m.forwardRef((t,e)=>{const{__scopeSelect:a,value:i,disabled:r=!1,textValue:n,...s}=t,l=ji(pl,a),c=Ni(pl,a),d=l.value===i,[u,p]=m.useState(n??""),[f,h]=m.useState(!1),v=mt(e,w=>{var k;return(k=c.itemRefCallback)==null?void 0:k.call(c,w,i,r)}),g=Dn(),b=m.useRef("touch"),x=()=>{r||(l.onValueChange(i),l.onOpenChange(!1))};if(i==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return o.jsx(NI,{scope:a,value:i,disabled:r,textId:g,isSelected:d,onItemTextChange:m.useCallback(w=>{p(k=>k||((w==null?void 0:w.textContent)??"").trim())},[]),children:o.jsx($l.ItemSlot,{scope:a,value:i,disabled:r,textValue:u,children:o.jsx(Xe.div,{role:"option","aria-labelledby":g,"data-highlighted":f?"":void 0,"aria-selected":d&&f,"data-state":d?"checked":"unchecked","aria-disabled":r||void 0,"data-disabled":r?"":void 0,tabIndex:r?void 0:-1,...s,ref:v,onFocus:Le(s.onFocus,()=>h(!0)),onBlur:Le(s.onBlur,()=>h(!1)),onClick:Le(s.onClick,()=>{b.current!=="mouse"&&x()}),onPointerUp:Le(s.onPointerUp,()=>{b.current==="mouse"&&x()}),onPointerDown:Le(s.onPointerDown,w=>{b.current=w.pointerType}),onPointerMove:Le(s.onPointerMove,w=>{var k;b.current=w.pointerType,r?(k=c.onItemLeave)==null||k.call(c):b.current==="mouse"&&w.currentTarget.focus({preventScroll:!0})}),onPointerLeave:Le(s.onPointerLeave,w=>{var k;w.currentTarget===document.activeElement&&((k=c.onItemLeave)==null||k.call(c))}),onKeyDown:Le(s.onKeyDown,w=>{var _;((_=c.searchRef)==null?void 0:_.current)!==""&&w.key===" "||(hI.includes(w.key)&&x(),w.key===" "&&w.preventDefault())})})})})});T0.displayName=pl;var Gr="SelectItemText",j0=m.forwardRef((t,e)=>{const{__scopeSelect:a,className:i,style:r,...n}=t,s=ji(Gr,a),l=Ni(Gr,a),c=C0(Gr,a),d=vI(Gr,a),[u,p]=m.useState(null),f=mt(e,x=>p(x),c.onItemTextChange,x=>{var w;return(w=l.itemTextRefCallback)==null?void 0:w.call(l,x,c.value,c.disabled)}),h=u==null?void 0:u.textContent,v=m.useMemo(()=>o.jsx("option",{value:c.value,disabled:c.disabled,children:h},c.value),[c.disabled,c.value,h]),{onNativeOptionAdd:g,onNativeOptionRemove:b}=d;return _a(()=>(g(v),()=>b(v)),[g,b,v]),o.jsxs(o.Fragment,{children:[o.jsx(Xe.span,{id:c.textId,...n,ref:f}),c.isSelected&&s.valueNode&&!s.valueNodeHasChildren?Fi.createPortal(n.children,s.valueNode):null]})});j0.displayName=Gr;var N0="SelectItemIndicator",P0=m.forwardRef((t,e)=>{const{__scopeSelect:a,...i}=t;return C0(N0,a).isSelected?o.jsx(Xe.span,{"aria-hidden":!0,...i,ref:e}):null});P0.displayName=N0;var Yd="SelectScrollUpButton",A0=m.forwardRef((t,e)=>{const a=Ni(Yd,t.__scopeSelect),i=hm(Yd,t.__scopeSelect),[r,n]=m.useState(!1),s=mt(e,i.onScrollButtonChange);return _a(()=>{if(a.viewport&&a.isPositioned){let l=function(){const d=c.scrollTop>0;n(d)};const c=a.viewport;return l(),c.addEventListener("scroll",l),()=>c.removeEventListener("scroll",l)}},[a.viewport,a.isPositioned]),r?o.jsx(I0,{...t,ref:s,onAutoScroll:()=>{const{viewport:l,selectedItem:c}=a;l&&c&&(l.scrollTop=l.scrollTop-c.offsetHeight)}}):null});A0.displayName=Yd;var Qd="SelectScrollDownButton",E0=m.forwardRef((t,e)=>{const a=Ni(Qd,t.__scopeSelect),i=hm(Qd,t.__scopeSelect),[r,n]=m.useState(!1),s=mt(e,i.onScrollButtonChange);return _a(()=>{if(a.viewport&&a.isPositioned){let l=function(){const d=c.scrollHeight-c.clientHeight,u=Math.ceil(c.scrollTop)<d;n(u)};const c=a.viewport;return l(),c.addEventListener("scroll",l),()=>c.removeEventListener("scroll",l)}},[a.viewport,a.isPositioned]),r?o.jsx(I0,{...t,ref:s,onAutoScroll:()=>{const{viewport:l,selectedItem:c}=a;l&&c&&(l.scrollTop=l.scrollTop+c.offsetHeight)}}):null});E0.displayName=Qd;var I0=m.forwardRef((t,e)=>{const{__scopeSelect:a,onAutoScroll:i,...r}=t,n=Ni("SelectScrollButton",a),s=m.useRef(null),l=Vl(a),c=m.useCallback(()=>{s.current!==null&&(window.clearInterval(s.current),s.current=null)},[]);return m.useEffect(()=>()=>c(),[c]),_a(()=>{var u;const d=l().find(p=>p.ref.current===document.activeElement);(u=d==null?void 0:d.ref.current)==null||u.scrollIntoView({block:"nearest"})},[l]),o.jsx(Xe.div,{"aria-hidden":!0,...r,ref:e,style:{flexShrink:0,...r.style},onPointerDown:Le(r.onPointerDown,()=>{s.current===null&&(s.current=window.setInterval(i,50))}),onPointerMove:Le(r.onPointerMove,()=>{var d;(d=n.onItemLeave)==null||d.call(n),s.current===null&&(s.current=window.setInterval(i,50))}),onPointerLeave:Le(r.onPointerLeave,()=>{c()})})}),PI="SelectSeparator",D0=m.forwardRef((t,e)=>{const{__scopeSelect:a,...i}=t;return o.jsx(Xe.div,{"aria-hidden":!0,...i,ref:e})});D0.displayName=PI;var Jd="SelectArrow",AI=m.forwardRef((t,e)=>{const{__scopeSelect:a,...i}=t,r=Ul(a),n=ji(Jd,a),s=Ni(Jd,a);return n.open&&s.position==="popper"?o.jsx(du,{...r,...i,ref:e}):null});AI.displayName=Jd;var EI="SelectBubbleInput",R0=m.forwardRef(({__scopeSelect:t,value:e,...a},i)=>{const r=m.useRef(null),n=mt(i,r),s=dm(e);return m.useEffect(()=>{const l=r.current;if(!l)return;const c=window.HTMLSelectElement.prototype,u=Object.getOwnPropertyDescriptor(c,"value").set;if(s!==e&&u){const p=new Event("change",{bubbles:!0});u.call(l,e),l.dispatchEvent(p)}},[s,e]),o.jsx(Xe.select,{...a,style:{...jx,...a.style},ref:n,defaultValue:e})});R0.displayName=EI;function L0(t){return t===""||t===void 0}function O0(t){const e=tf(t),a=m.useRef(""),i=m.useRef(0),r=m.useCallback(s=>{const l=a.current+s;e(l),function c(d){a.current=d,window.clearTimeout(i.current),d!==""&&(i.current=window.setTimeout(()=>c(""),1e3))}(l)},[e]),n=m.useCallback(()=>{a.current="",window.clearTimeout(i.current)},[]);return m.useEffect(()=>()=>window.clearTimeout(i.current),[]),[a,r,n]}function M0(t,e,a){const r=e.length>1&&Array.from(e).every(d=>d===e[0])?e[0]:e,n=a?t.indexOf(a):-1;let s=II(t,Math.max(n,0));r.length===1&&(s=s.filter(d=>d!==a));const c=s.find(d=>d.textValue.toLowerCase().startsWith(r.toLowerCase()));return c!==a?c:void 0}function II(t,e){return t.map((a,i)=>t[(e+i)%t.length])}var DI=c0,z0=u0,RI=p0,LI=h0,OI=g0,B0=f0,MI=x0,zI=k0,F0=S0,$0=T0,BI=j0,FI=P0,V0=A0,U0=E0,q0=D0;const $I=DI,NW=zI,VI=RI,G0=m.forwardRef(({className:t,children:e,...a},i)=>o.jsxs(z0,{ref:i,className:y("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm r
552ing-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...a,children:[e,o.jsx(LI,{asChild:!0,children:o.jsx(ar,{className:"h-4 w-4 opacity-50"})})]}));G0.displayName=z0.displayName;const W0=m.forwardRef(({className:t,...e},a)=>o.jsx(V0,{ref:a,className:y("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(vw,{className:"h-4 w-4"})}));W0.displayName=V0.displayName;const H0=m.forwardRef(({className:t,...e},a)=>o.jsx(U0,{ref:a,className:y("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(ar,{className:"h-4 w-4"})}));H0.displayName=U0.displayName;const K0=m.forwardRef(({className:t,children:e,position:a="popper",...i},r)=>o.jsx(OI,{children:o.jsxs(B0,{ref:r,className:y("relative z-[210] max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:a,...i,children:[o.jsx(W0,{}),o.jsx(MI,{className:y("p-1",a==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:e}),o.jsx(H0,{})]})}));K0.displayName=B0.displayName;const UI=m.forwardRef(({className:t,...e},a)=>o.jsx(F0,{ref:a,className:y("py-1.5 pl-8 pr-2 text-sm font-semibold",t),...e}));UI.displayName=F0.displayName;const Xd=m.forwardRef(({className:t,children:e,...a},i)=>o.jsxs($0,{ref:i,className:y("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 focus:bg-accent focus:text-accent-foreground",t),...a,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(FI,{children:o.jsx(vl,{className:"h-4 w-4"})})}),o.jsx(BI,{children:e})]}));Xd.displayName=$0.displayName;const qI=m.forwardRef(({className:t,...e},a)=>o.jsx(q0,{ref:a,className:y("-mx-1 my-1 h-px bg-muted",t),...e}));qI.displayName=q0.displayName;function GI({onClose:t}){const{inviteUser:e,isInviting:a}=Rl();On();const{t:i}=$e(["canvas"]),[r,n]=m.useState(""),[s,l]=m.useState("member"),[c,d]=m.useState(null),u=async p=>{if(p.preventDefault(),d(null),!r||!r.includes("@")){d(i("settings.team.invalidEmail",{defaultValue:"Please enter a valid email address"}));return}try{await e({email:r,role:s}),n(""),l("member"),t()}catch(f){d(f.message||i("settings.team.inviteFailed",{defaultValue:"Failed to send invite"}))}};return o.jsx(Si,{open:!0,onOpenChange:t,children:o.jsxs(mo,{children:[o.jsxs(Un,{children:[o.jsxs(Ci,{className:"flex items-center gap-2",children:[o.jsx(Wa,{className:"w-5 h-5"}),i("settings.team.inviteMember",{defaultValue:"Invite Team Member"})]}),o.jsx(Al,{children:i("settings.team.inviteDescription",{defaultValue:"Send an invitation to join your organization. They will receive an email with a link to accept."})})]}),o.jsxs("form",{onSubmit:u,children:[o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(Jt,{htmlFor:"email",children:i("settings.team.email",{defaultValue:"Email Address"})}),o.jsx(Ft,{id:"email",type:"email",placeholder:"[email protected]",value:r,onChange:p=>{n(p.target.value),d(null)},disabled:a,required:!0})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(Jt,{htmlFor:"role",children:i("settings.team.role",{defaultValue:"Role"})}),o.jsxs($I,{value:s,onValueChange:p=>l(p),children:[o.jsx(G0,{id:"role",disabled:a,children:o.jsx(VI,{})}),o.jsxs(K0,{children:[o.jsxs(Xd,{value:"member",children:[i("settings.team.roleMember",{defaultValue:"Member"})," - ",i("settings.team.roleMemberDesc",{defaultValue:"Can use shared tokens"})]}),o.jsxs(Xd,{value:"admin",children:[i("settings.team.roleAdmin",{defaultValue:"Admin"})," - ",i("settings.team.roleAdminDesc",{defaultValue:"Can invite and manage members"})]})]})]})]}),c&&o.jsx("div",{className:"text-sm text-red-600 dark:text-red-400",children:c})]}),o.jsxs(wv,{children:[o.jsx(ee,{type:"button",variant:"outline",onClick:t,disabled:a,children:i("common.cancel",{defaultValue:"Cancel"})}),o.jsx(ee,{type:"submit",disabled:a||!r,children:a?o.jsxs(o.Fragment,{children:[o.jsx(to,{className:"w-4 h-4 mr-2 animate-spin"}),i("settings.team.sending",{defaultValue:"Sending..."})]}):i("settings.team.sendInvite",{defaultValue:"Send Invite"})})]})]})]})})}
552function WI({members:t,pendingInvites:e,acceptedInvites:a=[],expiredInvites:i=[],canManage:r}){const{removeUser:n,isRemoving:s}=Rl(),{t:l}=$e(["canvas"]),c=p=>{switch(p){case"owner":return o.jsx(kw,{className:"w-4 h-4 text-yellow-500"});case"admin":return o.jsx(Iw,{className:"w-4 h-4 text-blue-500"});default:return o.jsx(bu,{className:"w-4 h-4 text-gray-500"})}},d=p=>{const f={owner:l("settings.team.roleOwner",{defaultValue:"Owner"}),admin:l("settings.team.roleAdmin",{defaultValue:"Admin"}),member:l("settings.team.roleMember",{defaultValue:"Member"})},h={owner:"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200",admin:"bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200",member:"bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-200"};return o.jsx(Ie,{className:h[p]||h.member,children:f[p]||p})},u=async p=>{try{await n(p)}catch{}};return o.jsxs("div",{className:"space-y-4",children:[t.length>0&&o.jsxs("div",{children:[o.jsx("h4",{className:"text-sm font-semibold mb-3 text-gray-700 dark:text-gray-300",children:l("settings.team.activeMembers",{defaultValue:"Active Members",count:t.length})}),o.jsx("div",{className:"space-y-2",children:t.map(p=>{var f,h;return o.jsx(oa,{children:o.jsx(ma,{className:"p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[c(p.role),o.jsxs("div",{children:[o.jsx("div",{className:"font-medium",children:((f=p.profile)==null?void 0:f.email)||l("settings.team.unknownUser",{defaultValue:"Unknown User"})}),o.jsxs("div",{className:"text-xs text-gray-500 dark:text-gray-400",children:[l("settings.team.joined",{defaultValue:"Joined"})," ",Bi(new Date(p.joined_at),"MMM d, yyyy")]})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[d(p.role),r&&p.role!=="owner"&&o.jsxs(xn,{children:[o.jsx(BN,{asChild:!0,children:o.jsx(ee,{variant:"ghost",size:"sm",disabled:s,className:"text-red-600 hover:text-red-700 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-900/20 p-2",title:l("settings.team.removeMember",{defaultValue:"Remove member"}),children:o.jsx(cn,{className:"w-4 h-4"})})}),o.jsxs(lr,{children:[o.jsxs(cr,{children:[o.jsx(ur,{children:l("settings.team.removeMember",{defaultValue:"Remove Team Member"})}),o.jsx(mr,{children:l("settings.team.removeMemberConfirm",{defaultValue:"Are you sure you want to remove this member? They will lose access to the shared token pool.",email:(h=p.profile)==null?void 0:h.email})})]}),o.jsxs(dr,{children:[o.jsx(pr,{children:l("common.cancel",{defaultValue:"Cancel"})}),o.jsx(wn,{onClick:()=>u(p.user_id),className:"bg-red-600 hover:bg-red-700",children:l("settings.team.remove",{defaultValue:"Remove"})})]})]})]})]})]})})},p.id)})})]}),e.length>0&&o.jsxs("div",{children:[o.jsxs("h4",{className:"text-sm font-semibold mb-3 text-gray-700 dark:text-gray-300",children:[l("settings.team.pendingInvites",{defaultValue:"Pending Invites"})," (",e.length,")"]}),o.jsx("div",{className:"space-y-2",children:e.map(p=>o.jsx(oa,{className:"border-orange-200 dark:border-orange-800",children:o.jsx(ma,{className:"p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Wa,{className:"w-4 h-4 text-orange-500"}),o.jsxs("div",{children:[o.jsx("div",{className:"font-medium",children:p.email}),o.jsxs("div",{className:"text-xs text-gray-500 dark:text-gray-400 flex items-center gap-1",children:[o.jsx(Fs,{className:"w-3 h-3"}),l("settings.team.invited",{defaultValue:"Invited"})," ",Bi(new Date(p.created_at),"MMM d, yyyy")," • ",l("settings.team.expires",{defaultValue:"Expires"})," ",Bi(new Date(p.expires_at),"MMM d, yyyy")]})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Ie,{className:"bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-200",children:l("settings.team.pending",{defaultValue:"Pending"})}),d(p.role)]})]})})},p.id))})]}),a.length>0&&o.jsxs("div",{children:[o.jsxs("h4",{className:"text-sm font-semibold mb-3 text-gray-700 dark:text-gray-300",children:[l("settings.team.acceptedInvites",{defaultValue:"Accepted Invites"})," (",a.length,")"]}),o.jsx("div",{className:"space-y-2",children:a.map(p=>o.jsx(oa,{className:"border-green-200 dark:border-green-800 bg-green-50/50 dark:bg-green-900/10",children:o.jsx(ma,{className:"p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Wa,{className:"w-4 h-4 text-green-500"}),o.jsxs("div",{children:[o.jsx("div",{className:"font-medium",children:p.email}),o.jsxs("div",{className:"text-xs text-gray-500 dark:text-gray-400 flex items-center gap-1",children:[o.jsx(Es,{className:"w-3 h-3 text-green-500"}),l("settings.team.accepted",{defaultValue:"Accepted"})," ",p.accepted_at?Bi(new Date(p.accepted_at),"MMM d, yyyy"):""]})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Ie,{className:"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200",children:l("settings.team.accepted",{defaultValue:"Accepted"})}),d(p.role)]})]})})},p.id))})]}),i.length>0&&o.jsxs("div",{children:[o.jsxs("h4",{className:"text-sm font-semibold mb-3 text-gray-700 dark:text-gray-300",children:[l("settings.team.expiredInvites",{defaultValue:"Expired Invites"})," (",i.length,")"]}),o.jsx("div",{className:"space-y-2",children:i.map(p=>o.jsx(oa,{className:"border-gray-200 dark:border-gray-700 opacity-60",children:o.jsx(ma,{className:"p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Wa,{className:"w-4 h-4 text-gray-400"}),o.jsxs("div",{children:[o.jsx("div",{className:"font-medium text-gray-500 dark:text-gray-400",children:p.email}),o.jsxs("div",{className:"text-xs text-gray-400 dark:text-gray-500 flex items-center gap-1",children:[o.jsx(Fs,{className:"w-3 h-3"}),l("settings.team.expired",{defaultValue:"Expired"})," ",Bi(new Date(p.expires_at),"MMM d, yyyy")]})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Ie,{className:"bg-gray-100 text-gray-600 dark:bg-gray-800 dark:text-gray-400",children:l("settings.team.expired",{defaultValue:"Expired"})}),d(p.role)]})]})})},p.id))})]}),t.length===0&&e.length===0&&a.length===0&&o.jsxs("div",{className:"text-center py-8 text-gray-500 dark:text-gray-400",children:[o.jsx(ir,{className:"w-12 h-12 mx-auto mb-4 opacity-50"}),o.jsx("p",{children:l("settings.team.noMembers",{defaultValue:"No team members yet. Invite someone to get started!"})})]})]})}function HI(){const{user:t}=Pt(),{organization:e,members:a,pendingInvites:i,acceptedInvites:r,expiredInvites:n,userPendingInvites:s,isOwner:l,isAdmin:c,isLoading:d}=Rl(),[u,p]=m.useState(!1),[f,h]=m.useState(null),{t:v,i18n:g}=$e(["canvas"]),{locale:b}=Dt(),x=typeof window<"u"?_i():null,w=b==="he"||g.language==="he"||x==="he"||typeof document<"u"&&document.documentElement.dir==="rtl",{toast:k}=On(),_=yr(),j=t&&e&&a.some(C=>C.user_id===t.id&&C.status==="active"&&!l),S=l||c||t&&e&&e.owner_id===t.id;return d?o.jsx("div",{className:"flex items-center justify-center py-8",children:o.jsx(to,{className:"w-6 h-6 animate-spin text-gray-400"})}):!e&&s&&s.length>0?o.jsx("div",{className:y("space-y-6",w&&"font-heebo"),children:o.jsxs(oa,{
552className:"border-orange-200 dark:border-orange-800 bg-orange-50/50 dark:bg-orange-900/10",children:[o.jsx(Fo,{children:o.jsxs($o,{className:y("flex items-center gap-2",w&&"font-heebo"),children:[o.jsx(Wa,{className:"w-5 h-5 text-orange-500"}),v("settings.team.pendingInvitations",{defaultValue:"Pending Invitations"})," (",s.length,")"]})}),o.jsx(ma,{children:o.jsxs("div",{className:"space-y-4",children:[o.jsx("p",{className:y("text-sm text-gray-600 dark:text-gray-400",w&&"font-heebo"),children:v("settings.team.invitedToJoin",{defaultValue:"You have been invited to join the following organizations:"})}),s.map(C=>{var N;return o.jsx(oa,{className:"border-orange-200 dark:border-orange-800",children:o.jsx(ma,{className:"p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex-1",children:[o.jsx("div",{className:y("font-semibold text-lg mb-1",w&&"font-heebo"),children:((N=C.organization)==null?void 0:N.name)||v("settings.team.organization",{defaultValue:"Organization"})}),o.jsxs("div",{className:y("text-sm text-gray-600 dark:text-gray-400 mb-1",w&&"font-heebo"),children:[v("settings.team.invitedAs",{defaultValue:"Invited as"}),": ",o.jsx("span",{className:"font-medium",children:C.role==="admin"?v("settings.team.roleAdmin",{defaultValue:"Admin"}):v("settings.team.roleMember",{defaultValue:"Member"})})]}),o.jsxs("div",{className:y("text-xs text-gray-500 dark:text-gray-500",w&&"font-heebo"),children:[v("settings.team.expires",{defaultValue:"Expires"}),": ",Bi(new Date(C.expires_at),"MMM d, yyyy")]})]}),o.jsx(ee,{onClick:async()=>{var P;h(C.id);try{const{data:E,error:L}=await V.functions.invoke("accept-team-invite",{body:{invite_token:C.invite_token}});if(L)throw L;if(E!=null&&E.error)throw new Error(E.error);k({title:v("settings.team.success",{defaultValue:"Success!"}),description:v("settings.team.joinedOrganization",{defaultValue:`You have successfully joined ${((P=C.organization)==null?void 0:P.name)||"the organization"}!`}),duration:5e3}),await _.invalidateQueries({queryKey:["organization"]}),await _.invalidateQueries({queryKey:["organization-members"]}),await _.invalidateQueries({queryKey:["organization-invites"]}),await _.invalidateQueries({queryKey:["user-pending-invites"]}),await _.invalidateQueries({queryKey:["user-profile"]}),await _.refetchQueries({queryKey:["organization"]}),await _.refetchQueries({queryKey:["organization-members"]})}catch(E){k({title:v("settings.team.error",{defaultValue:"Error"}),description:E.message||v("settings.team.acceptFailed",{defaultValue:"Failed to accept invite"}),variant:"destructive"})}finally{h(null)}},disabled:f===C.id,className:y("bg-orange-600 hover:bg-orange-700 text-white ml-4 disabled:opacity-50 disabled:cursor-not-allowed",w&&"font-heebo"),children:f===C.id?o.jsxs(o.Fragment,{children:[o.jsx(to,{className:"w-4 h-4 mr-2 animate-spin"}),v("settings.team.accepting",{defaultValue:"Accepting..."})]}):v("settings.team.acceptInvite",{defaultValue:"Accept Invite"})})]})})},C.id)})]})})]})}):e?o.jsxs("div",{className:y("space-y-6",w&&"font-heebo"),children:[e&&j&&o.jsx(oa,{className:"border-green-200 dark:border-green-800 bg-green-50/50 dark:bg-green-900/10",children:o.jsx(ma,{className:"pt-6",children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Hr,{className:"w-5 h-5 text-green-600 dark:text-green-400 flex-shrink-0"}),o.jsxs("div",{children:[o.jsxs("p",{className:y("font-semibold text-green-900 dark:text-green-100",w&&"font-heebo"),children:[v("settings.team.memberOf",{defaultValue:"You are a member of"})," ",e.name]}),o.jsx("p",{className:y("text-sm text-green-700 dark:text-green-300 mt-1",w&&"font-heebo"),children:v("settings.team.memberDescription",{defaultValue:"You can now collaborate with your team and share resources."})})]})]})})}),o.jsxs(oa,{children:[o.jsx(Fo,{children:o.jsxs($o,{className:y("flex items-center gap-2",w&&"font-heebo"),children:[o.jsx(ir,{className:"w-5 h-5"}),v("settings.team.title",{defaultValue:"Team Management"})]})}),o.jsx(ma,{children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex justify-between items-center",children:[o.jsxs("div",{children:[o.jsx("h3",{className:y("font-semibold text-lg",w&&"font-heebo"),children:e.name}),o.jsxs("p",{className:y("text-sm text-gray-600 dark:text-gray-400",w&&"font-heebo"),children:[a.length," ",v("settings.team.activeMembers",{defaultValue:"active member",count:a.length}),a.length!==1?"s":""]}),j&&o.jsxs("p",{className:y("text-xs text-gray-500 dark:text-gray-500 mt-1 flex items-center gap-1",w&&"font-heebo"),children:[o.jsx(Hr,{className:"w-3 h-3 text-green-600"}),v("settings.team.yourRole",{defaultValue:"Your role: Member"})]})]}),(l||c)&&o.jsxs(ee,{onClick:()=>p(!0),className:w?"font-heebo":"",children:[o.jsx(Bw,{className:"w-4 h-4 mr-2"}),v("settings.team.inviteMember",{defaultValue:"Invite Member"})]})]}),o.jsx(WI,{members:a,pendingInvites:i,acceptedInvites:r,expiredInvites:n,canManage:S}
552)]})})]}),u&&o.jsx(GI,{onClose:()=>p(!1)})]}):o.jsx(oa,{children:o.jsx(ma,{className:"pt-6",children:o.jsx("p",{className:y("text-gray-600 dark:text-gray-400",w&&"font-heebo"),children:v("settings.team.noOrganization",{defaultValue:"You are not part of an organization. Contact support if you believe this is an error."})})})})}const KI=()=>{const{toast:t}=On(),[e,a]=m.useState(!1);return{createCheckout:async({planType:r,planName:n,planPrice:s,tokens:l,couponCode:c})=>{a(!0);try{const{data:{session:d}}=await V.auth.getSession();if(!d)throw new Error("You must be logged in to make a purchase");const{data:u,error:p}=await V.functions.invoke("create-stripe-checkout",{body:{planType:r,planName:n,planPrice:s,tokens:l,interval:r==="subscription"?"month":null,couponCode:(c==null?void 0:c.trim())||void 0},headers:{Authorization:`Bearer ${d.access_token}`}});if(u==null||u.success,u==null||u.sessionId,u!=null&&u.url,p)throw console.error("Edge function error:",p),p;if(!u.success||!u.url)throw console.error("Checkout session creation failed:",u),new Error(u.error||"Failed to create checkout session");u.sessionId,window.location.href=u.url}catch(d){console.error("Checkout error:",d),a(!1),t({title:"Payment Error",description:d instanceof Error?d.message:"Failed to initialize payment. Please try again.",variant:"destructive"})}},isLoading:e}};function ks({canvas:t,currentProjectId:e,openDropdownId:a,setOpenDropdownId:i,setRenameCanvasId:r,setRenameCanvasName:n,setDeleteCanvasId:s,setIsOpen:l,navigate:c,toast:d,isMobile:u,isHebrew:p,handleCanvasClick:f,dragHandleProps:h,boardMenuRename:v,boardMenuDelete:g,selectionMode:b,isSelected:x,isOwner:w,onToggleSelect:k}){const _=()=>{i(null),l(!1);const S=t.id,C=t.title;window.setTimeout(()=>{r(S),n(C)},u?200:0)};if(u)return o.jsxs("div",{className:y("group relative cursor-pointer rounded-2xl border p-3 transition-all duration-200 active:scale-[0.98]",b&&x?"border-[#D85D43] bg-[#D85D43]/15 shadow-[0_10px_28px_rgba(216,93,67,0.18)] ring-2 ring-[#D85D43]/40 dark:bg-[#2C1814]":e===t.id?"border-[#D85D43] bg-[#D85D43]/10 shadow-[0_8px_24px_rgba(216,93,67,0.12)] dark:bg-[#2C1814] dark:border-[#D85D43]/50":"border-[#182137]/10 bg-white shadow-[0_6px_20px_rgba(24,33,55,0.05)] hover:border-[#D85D43]/35 dark:border-white/10 dark:bg-[#1A1D26]"),onClick:S=>{const C=S.target;C.closest('[role="menu"]')||C.closest("button")||C.closest(".drag-handle")||(b?w&&k(t.id):f(t.id))},children:[o.jsxs("div",{className:"flex items-center justify-between gap-2",children:[o.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[b?w?o.jsx("div",{className:"-ms-1 flex h-7 w-7 flex-shrink-0 items-center justify-center",children:o.jsx(Ud,{checked:x,onCheckedChange:()=>k(t.id),className:"h-5 w-5 rounded-md border-[#182137]/35 data-[state=checked]:border-[#D84B2E] data-[state=checked]:bg-[#D84B2E] dark:border-white/35"})}):o.jsx("div",{className:"-ms-1 h-7 w-7 flex-shrink-0","aria-hidden":!0}):o.jsx("div",{ref:h==null?void 0:h.setActivatorNodeRef,...h==null?void 0:h.attributes,...h==null?void 0:h.listeners,className:"drag-handle -ms-1 cursor-grab touch-none rounded-full p-1 text-[#182137]/35 active:cursor-grabbing hover:text-[#182137]/60 dark:text-white/35 dark:hover:text-white/60",onPointerDown:S=>{var C,N;S.stopPropagation(),(N=(C=h==null?void 0:h.listeners)==null?void 0:C.onPointerDown)==null||N.call(C,S)},children:o.jsx(Rm,{className:"h-4 w-4"})}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsxs("div",{className:"mb-1 flex items-center gap-1",children:[e===t.id&&o.jsx("div",{className:"h-2 w-2 flex-shrink-0 animate-pulse rounded-full bg-[#91D7BD]"}),o.jsx("h3",{className:y("truncate font-heebo text-[14px] font-black text-[#182137] dark:text-[#F7F4EF]",p&&"font-heebo"),children:t.title}),t.isShared&&o.jsx("span",{className:"inline-flex flex-shrink-0 items-center gap-0.5 rounded-full bg-[#91D7BD]/30 px-1.5 py-0.5 text-[9px] font-black text-[#0E5C45] dark:bg-[#91D7BD]/20 dark:text-[#91D7BD]",children:o.jsx(ir,{className:"h-2 w-2"})})]}),o.jsxs("div",{className:"flex items-center gap-1 font-heebo text-[11px] font-bold text-[#182137]/50 dark:text-white/50",children:[o.jsx(Fs,{className:"h-3 w-3"}),o.jsx("span",{children:Bh(new Date(t.updated_at),{addSuffix:!0})})]})]})]}),!b&&o.jsxs(Id,{open:a===t.id,onOpenChange:S=>{i(S?t.id:null)},children:[o.jsx(Dd,{asChild:!0,children:o.jsx(ee,{variant:"ghost",size:"icon",className:"h-9 w-9 flex-shrink-0 rounded-full text-[#182137]/50 transition-all hover:bg-[#182137]/5 dark:text-white/50 dark:hover:bg-white/10",onClick:S=>{S.stopPropagation()},onPointerDown:S=>S.stopPropagation(),children:o.jsx(Em,{className:"h-4 w-4"})})}),o.jsxs(il,{align:"end",className:"z-[70] w-56 rounded-2xl border border-[#182137]/10 bg-[#F7F4EF] p-2 shadow-xl dark:border-white/10 dark:bg-[#0E1426]",onClick:S=>S.stopPropagation(),children:[o.jsxs(ca,{onSelect:S=>{S.preventDefault(),_()},onClick:S=>{S.stopPropagation(),S.preventDefault(),_()},onPointerDown:S=>S.stopPropagation(),className:"flex cursor-pointer items-center gap-3 rounded-xl px-4 py-3 font-heebo text-sm font-bold text-[#182137] transition-colors hover:bg-[#D85D43]/10 hover:text-[#D85D43] dark:text-[#F7F4EF]",children:[o.jsx(Om,{className:"h-4 w-4"}),o.jsx("span",{children:v})]}),o.jsx(yn,{className:"my-2 bg-[#182137]/10 dark:bg-white/10"}),o.jsxs(ca,{onSelect:S=>{S.preventDefault(),i(null),s(t.id)},onClick:S=>{S.stopPropagation(),S.preventDefault(),i(null),s(t.id)},onPointerDown:S=>S.stopPropagation(),className:"flex cursor-pointer items-center gap-3 rounded-xl px-4 py-3 font-heebo text-sm font-bold text-[#D85D43] transition-colors hover:bg-[#D85D43]/10",children:[o.jsx(cn,{className:"h-4 w-4"}),o.jsx("span",{children:g})]})]})]})]}),o.jsx("div",{className:"mt-2.5 aspect-video w-full overflow-hidden rounded-xl bg-[#182137]/5 dark:bg-white/10",children:t.thumbnail_url?o.jsx("img",{src:t.thumbnail_url,alt:"",className:"h-full w-full object-cover",loading:"lazy"}):o.jsx("div",{className:"flex h-full w-full items-center justify-center",children:o.jsx(Vs,{className:"h-8 w-8 text-[#182137]/30 dark:text-white/30"})})})]});const j=e===t.id;return o.jsxs("div",{className:y("group relative px-3 py-2.5 rounded-xl cursor-pointer transition-all duration-200 border bg-white dark:bg-[#1A1D26]",b&&x?"border-[#D84B2E] bg-[#D84B2E]/8 shadow-[0_6px_22px_rgba(216,75,46,0.18)] ring-2 ring-[#D84B2E]/40":j?"border-[#D84B2E]/40 shadow-[0_4px_18px_rgba(216,75,46,0.12)]":"border-[#182137]/10 dark:border-white/10 hover:border-[#182137]/25 dark:hover:border-white/25 hover:shadow-[0_4px_20px_rgba(24,33,55,0.06)]"),onClick:S=>{const C=S.target;C.closest('[role="menu"]')||C.closest("button")||C.closest(".drag-handle")||(b?w&&k(t.id):f(t.id))},children:[j&&!b&&o.jsx("span",{className:y("absolute top-2 bottom-2 w-[3px] rounded-full bg-[#D84B2E]",p?"right-0":"left-0"),"aria-hidden":!0}),o.jsxs("div",{className:"flex items-center justify-between gap-2",children:[o.jsxs("div",{className:"flex items-center gap-2 flex-1 min-w-0",children:[b?w?o.jsx("div",{className:"flex h-5 w-5 flex-shrink-0 items-center justify-center -ms-0.5",children:o.jsx(Ud,{checked:x,onCheckedChange:()=>
552k(t.id),className:"h-4 w-4 rounded-[4px] border-[#182137]/35 data-[state=checked]:border-[#D84B2E] data-[state=checked]:bg-[#D84B2E] dark:border-white/35"})}):o.jsx("div",{className:"-ms-0.5 h-5 w-5 flex-shrink-0","aria-hidden":!0}):o.jsx("div",{ref:h==null?void 0:h.setActivatorNodeRef,...h==null?void 0:h.attributes,...h==null?void 0:h.listeners,className:"drag-handle cursor-grab active:cursor-grabbing touch-none p-0.5 -ms-0.5 text-[#182137]/30 hover:text-[#182137]/60 dark:text-white/30 dark:hover:text-white/60",onPointerDown:S=>{var C,N;S.stopPropagation(),(N=(C=h==null?void 0:h.listeners)==null?void 0:C.onPointerDown)==null||N.call(C,S)},children:o.jsx(Rm,{className:"h-3.5 w-3.5"})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-1.5 mb-0.5",children:[j&&o.jsx("div",{className:"w-1.5 h-1.5 rounded-full bg-[#D84B2E] flex-shrink-0 animate-pulse"}),o.jsx("h3",{className:y("font-heebo text-[13px] truncate text-[#182137] dark:text-[#F7F4EF]"),style:{fontWeight:800,letterSpacing:"-0.01em"},children:t.title}),t.isShared&&o.jsx("span",{className:"flex-shrink-0 inline-flex items-center gap-0.5 px-1 py-0.5 text-[9px] font-bold bg-[#D6E9DA] text-[#1F5B36] rounded",children:o.jsx(ir,{className:"h-2 w-2"})})]}),o.jsxs("div",{className:"flex items-center gap-1 font-mono text-[10px] text-[#182137]/55 dark:text-white/55",children:[o.jsx(Fs,{className:"h-2.5 w-2.5"}),o.jsx("span",{children:Bh(new Date(t.updated_at),{addSuffix:!0})})]})]})]}),!b&&o.jsxs(Id,{open:a===t.id,onOpenChange:S=>{i(S?t.id:null)},children:[o.jsx(Dd,{asChild:!0,children:o.jsx(ee,{variant:"ghost",size:"icon",className:"h-7 w-7 rounded-lg text-[#182137]/40 hover:bg-[#182137]/[0.06] hover:text-[#182137] dark:text-white/40 dark:hover:bg-white/10 dark:hover:text-white transition-all flex-shrink-0",onClick:S=>{S.stopPropagation()},onPointerDown:S=>S.stopPropagation(),children:o.jsx(Em,{className:"h-3.5 w-3.5"})})}),o.jsxs(il,{align:"end",className:"w-52 bg-[#F7F4EF] dark:bg-[#0E1426] border border-[#182137]/10 dark:border-white/10 shadow-[0_18px_44px_rgba(24,33,55,0.16)] rounded-2xl p-2 z-[70]",onClick:S=>S.stopPropagation(),children:[o.jsxs(ca,{onSelect:S=>{S.preventDefault(),_()},onClick:S=>{S.stopPropagation(),S.preventDefault(),_()},onPointerDown:S=>S.stopPropagation(),className:"flex items-center gap-3 px-3 py-2.5 font-heebo text-sm text-[#182137] dark:text-[#F7F4EF] hover:bg-[#D84B2E]/10 hover:text-[#D84B2E] rounded-xl cursor-pointer transition-colors",style:{fontWeight:700},children:[o.jsx(Om,{className:"h-4 w-4"}),o.jsx("span",{children:v})]}),o.jsx(yn,{className:"my-1.5 bg-[#182137]/10 dark:bg-white/10"}),o.jsxs(ca,{onSelect:S=>{S.preventDefault(),i(null),s(t.id)},onClick:S=>{S.stopPropagation(),S.preventDefault(),i(null),s(t.id)},onPointerDown:S=>S.stopPropagation(),className:"flex items-center gap-3 px-3 py-2.5 font-heebo text-sm text-[#D84B2E] hover:bg-[#D84B2E]/10 rounded-xl cursor-pointer transition-colors",style:{fontWeight:700},children:[o.jsx(cn,{className:"h-4 w-4"}),o.jsx("span",{children:g})]})]})]})]}),o.jsx("div",{className:"mt-2 aspect-video w-full overflow-hidden rounded-lg bg-[#182137]/5 dark:bg-white/10",children:t.thumbnail_url?o.jsx("img",{src:t.thumbnail_url,alt:"",className:"h-full w-full object-cover",loading:"lazy"}):o.jsx("div",{className:"flex h-full w-full items-center justify-center",children:o.jsx(Vs,{className:"h-7 w-7 text-[#182137]/30 dark:text-white/30"})})})]})}function Vh({canvas:t,children:e}){const{attributes:a,listeners:i,setActivatorNodeRef:r,setNodeRef:n,transform:s,transition:l,isDragging:c}=_A({id:t.id});return o.jsx("div",{ref:n,style:{transform:Sn.Transform.toString(s),transition:l},className:y(c&&"relative z-50 opacity-70"),children:e({attributes:a,listeners:i,setActivatorNodeRef:r})})}const Y0=({currentProjectId:t,onProjectSelect:e,showGrid:a=!0,onGridToggle:i,isInCanvas:r=!1})=>{const{user:n}=Pt(),s=Vt(),l=It(),c=Gn(),{t:d}=$e(["canvas"]),{locale:u}=Dt(),{theme:p}=wi(),f=p==="dark"?lI:sI,h=Gd($=>$.muted),v=Gd($=>$.toggleMuted),g=typeof window<"u"?_i():null,b=u==="he"||g==="he"||typeof document<"u"&&document.documentElement.dir==="rtl",x=u!=="en",w=x?d("menu.renameBoard",{ns:"canvas"}):"Rename",k=x?d("menu.deleteBoard",{ns:"canvas"}):"Delete",_=x?d("menu.renameDialogTitle",{ns:"canvas"}):"Rename Boardspace",j=x?d("menu.renameDialogDescription",{ns:"canvas"}):"Enter a new name for your boardspace",S=x?d("menu.enterBoardspaceName",{ns:"canvas"}):"Enter boardspace name...",C=x?d("menu.renameDialogConfirm",{ns:"canvas"}):"Rename",N=x?d("menu.cancel",{ns:"canvas"}):"Cancel",P=x?d("menu.deleteDialogTitle",{ns:"canvas"}):"Delete Boardspace?",E=x?d("menu.deleteDialogDescription",{ns:"canvas"}):"This action cannot be undone. This will permanently delete your boardspace and all its content.",L=x?d("menu.deleteDialogConfirm",{ns:"canvas"}):"Delete",A=x?d("menu.select",{ns:"canvas"}):"Select",I=x?d("menu.selectedSuffix",{ns:"canvas"}):"selected",R=x?d("menu.deleteSelected",{ns:"canvas"}):"Delete",B=x?d("menu.bulkDeleteTitle",{ns:"canvas"}):"Delete selected boardspaces?",z=x?d("menu.bulkDeleteDescription",{ns:"canvas"}):"This action cannot be undone. All selected boardspaces and their content will be permanently deleted.",Z=x?d("menu.deleting",{ns:"canvas"}):"Deleting…",[fe,O]=m.useState(!1),[Q,Y]=m.useState(""),[K,J]=m.useState(""),[oe,ve]=m.useState(!1),[je,W]=m.useState(!1),[ue,ke]=m.useState(""),[re,ge]=m.useState(null),[M,Ee]=m.useState(null),[Ne,We]=m.useState(""),[ze,Ze]=m.useState(null),[Ve,st]=m.useState(!1),[De,xt]=m.useState(new Set),[we,lt]=m.useState(!1),[Tt,qt]=m.useState(!1),{openSettings:it,closeSettings:pt,setCanvasGrid:At}=Vn();m.useEffect(()=>
552(At({showGrid:a,onGridToggle:i}),()=>At(null)),[a,i,At]);const wt=m.useRef(!1),[Zt,ht]=m.useState(!1),[ea,Gt]=m.useState(!1),[kt,Wt]=m.useState(""),[G,te]=m.useState(""),[D,ce]=m.useState(!1),_e=async()=>{var $;if(!kt.trim()||!G.trim()){le.error(b?"נא למלא את כל השדות":"Please fill in all fields");return}ce(!0);try{const{error:se}=await V.functions.invoke("send-training-request",{body:{email:kt.trim(),message:G.trim(),userName:(($=n==null?void 0:n.user_metadata)==null?void 0:$.full_name)||(b?"לא צוין":"Not specified")}});if(se)throw se;le.success(b?"הבקשה נשלחה בהצלחה! ניצור איתך קשר בקרוב":"Request sent successfully! We'll be in touch soon"),Gt(!1),Wt(""),te(""),ht(!1)}catch(se){console.error("Error sending training request:",se),le.error(b?"שגיאה בשליחת הבקשה. נסו שוב.":"Error sending request. Please try again.")}finally{ce(!1)}};m.useEffect(()=>{je?ue.trim()?wt.current=!0:wt.current&&!ue.trim()&&(W(!1),wt.current=!1):wt.current=!1},[ue,je]);const{data:Re,isLoading:ye,refetch:ae}=ta({queryKey:["my-canvases",n==null?void 0:n.id],queryFn:async()=>{if(!n)return[];let $=null,se=null;const Be="id, title, created_at, updated_at, thumbnail_url, owner_id, invitees, display_order";try{const{data:Rt,error:dt}=await V.rpc("get_user_accessible_canvases",{p_user_id:n.id});if(!dt&&Rt)$=Rt;else{const{data:ra,error:Lt}=await V.from("canvas_docs_konva").select(Be).eq("owner_id",n.id).order("updated_at",{ascending:!1});$=ra,se=Lt}}catch{const{data:dt,error:ra}=await V.from("canvas_docs_konva").select(Be).eq("owner_id",n.id).order("updated_at",{ascending:!1});$=dt,se=ra}if(se)throw se;const jt=($||[]).map(({konva_data:Rt,...dt})=>({...dt,isOwner:dt.owner_id===n.id,isShared:dt.owner_id!==n.id&&Array.isArray(dt.invitees)&&dt.invitees.includes(n.id)}));return jt.filter(Rt=>Rt.isShared).length,jt&&jt.length>0&&"display_order"in jt[0]?[...jt].sort((ra,Lt)=>{const Ht=ra.display_order??1/0,Wl=Lt.display_order??1/0;if(Ht!==Wl)return Ht-Wl;const Hl=new Date(ra.updated_at||0).getTime();return new Date(Lt.updated_at||0).getTime()-Hl}):jt},enabled:!!n}),Oe=(Re==null?void 0:Re.filter($=>$.title.toLowerCase().includes(Q.toLowerCase())))||[],[ie,ne]=m.useState([]);m.useEffect(()=>{Re&&Re.length>0&&ne(Re)},[Re]);const Se=iP(lh(lm,{activationConstraint:{distance:6}}),lh(nm,{coordinateGetter:TA})),Qe=async $=>{var se,Be,jt,Rt,dt,ra,Lt;if(!Q.trim()){ne($);try{const Ht=await V.from("canvas_docs_konva").update({display_order:0}).eq("id",((se=$[0])==null?void 0:se.id)||"").select();if(Ht.error&&((Be=Ht.error.message)!=null&&Be.includes("column"))&&((jt=Ht.error.message)!=null&&jt.includes("display_order"))){console.warn("display_order column doesn't exist yet. Run the migration first.");return}const Hl=$.map((ja,hx)=>({id:ja.id,display_order:hx})).map(ja=>V.from("canvas_docs_konva").update({display_order:ja.display_order}).eq("id",ja.id)),Kl=(await Promise.all(Hl)).filter(ja=>ja.error);if(Kl.length>0){const ja=Kl[0].error;if(console.error("First error updating order:",ja),console.error("Total errors:",Kl.length),(Rt=ja.message)!=null&&Rt.includes("column")&&((dt=ja.message)!=null&&dt.includes("display_order"))){console.warn("display_order column doesn't exist. Please run the migration.");return}ne(Re||[]);return}await ae()}catch(Ht){if(console.error("Error updating order:",Ht),(ra=Ht==null?void 0:Ht.message)!=null&&ra.includes("column")||(Lt=Ht==null?void 0:Ht.message)!=null&&Lt.includes("display_order"))return;ne(Re||[])}}},ct=$=>{const{active:se,over:Be}=$;if(!Be||se.id===Be.id)return;const jt=ie.findIndex(dt=>dt.id===se.id),Rt=ie.findIndex(dt=>dt.id===Be.id);jt===-1||Rt===-1||Qe(cm(ie,jt,Rt))},Me=async()=>{const $=ue.trim();if(!(!n||!$)){ve(!0);try{const{data:se,error:Be}=await V.from("canvas_docs_konva").insert({title:$,owner_id:n.id}).select().single();if(Be)throw Be;se&&(ke(""),W(!1),wt.current=!1,ae(),e?e(se.id):s(`/canvas/${se.id}`),O(!1))}catch(se){console.error("Error creating boardspace:",se),le.error("Failed to create boardspace")}finally{ve(!1)}}},gt=async()=>{if(!(!M||!Ne.trim()))try{const{error:$}=await V.from("canvas_docs_konva").update({title:Ne.trim()}).eq("id",M).eq("owner_id",n==null?void 0:n.id);if($)throw $;le.success("Boardspace renamed successfully"),ae(),Ee(null),We("")}catch($){console.error("Failed to rename canvas:",$),le.error("Failed to rename boardspace")}},He=$=>{xt(se=>{const Be=new Set(se);return Be.has($)?Be.delete($):Be.add($),Be})},ot=()=>{st(!1),xt(new Set)},Pi=async $=>{if(!(n!=null&&n.id))return!1;try{const{data:se,error:Be}=await V.rpc("delete_canvas_with_chat_messages",{canvas_id:$,user_id:n.id});if(!Be&&se)return!0;await V.from("chat_messages").delete().eq("doc_id",$),await V.from("chat_messages").delete().eq("session_id",$);const{error:jt}=await V.from("canvas_docs_konva").delete().eq("id",$).eq("owner_id",n.id);return!jt}catch(se){return console.error(`Bulk delete failed for ${$}:`,se),!1}},Ai=async()=>
552{if(De.size===0||!(n!=null&&n.id))return;qt(!0);const $=Array.from(De);let se=0;try{for(const Be of $)await Pi(Be)&&se++;if(se>0&&le.success(x?`${se} ${d("menu.bulkDeleteSuccess",{ns:"canvas"})}`:`${se} boardspaces deleted`),se<$.length){const Be=$.length-se;le.error(x?`${Be} ${d("menu.bulkDeleteFailed",{ns:"canvas"})}`:`Failed to delete ${Be} boardspace${Be>1?"s":""}`)}}finally{qt(!1),lt(!1),ot(),ae()}},Ca=async $=>{try{if(!(n!=null&&n.id)){le.error("You must be logged in to delete boardspaces"),ge(null);return}const{data:se,error:Be}=await V.from("canvas_docs_konva").select("id, owner_id").eq("id",$).eq("owner_id",n.id).single();if(Be||!se){console.error("Canvas verification failed:",Be),le.error("Boardspace not found or you don't have permission to delete it"),ge(null);return}const{data:jt,error:Rt}=await V.rpc("delete_canvas_with_chat_messages",{canvas_id:$,user_id:n.id});if(!(!Rt&&jt)){const{error:dt}=await V.from("chat_messages").delete().eq("doc_id",$);dt&&console.warn("Error deleting chat messages by doc_id:",dt);const{error:ra}=await V.from("chat_messages").delete().eq("session_id",$);ra&&console.warn("Error deleting chat messages by session_id:",ra);const{error:Lt}=await V.from("canvas_docs_konva").delete().eq("id",$);if(Lt)throw console.error("Delete error:",Lt),console.error("Error message:",Lt.message),console.error("Error details:",JSON.stringify(Lt,null,2)),console.error("Error code:",Lt.code),console.error("Error hint:",Lt.hint),Lt}le.success("Boardspace deleted successfully"),ae()}catch(se){const Be=(se==null?void 0:se.message)||(se==null?void 0:se.error_description)||String(se);console.error("Failed to delete canvas - Full error:",se),console.error("Error as JSON:",JSON.stringify(se,Object.getOwnPropertyNames(se),2)),le.error(Be||"Failed to delete boardspace")}finally{ge(null)}},Ta=async $=>{O(!1),t!==$&&(e?e($):s(`/canvas/${$}`,{replace:!1}))},po=async()=>{try{await V.auth.signOut(),s("/auth")}catch($){console.error("Error signing out:",$),le.error("Failed to sign out")}};return m.useEffect(()=>{const $=se=>{se.key==="Escape"&&O(!1)};if(fe)return document.addEventListener("keydown",$),()=>document.removeEventListener("keydown",$)},[fe]),m.useEffect(()=>{const $=()=>O(!0),se=()=>O(!1);return window.addEventListener("open-projects-menu",$),window.addEventListener("close-projects-menu",se),()=>{window.removeEventListener("open-projects-menu",$),window.removeEventListener("close-projects-menu",se)}},[]),o.jsxs(o.Fragment,{children:[!c&&l.pathname.startsWith("/canvas/")&&o.jsx(Kf,{delayDuration:200,children:o.jsxs("div",{"data-projects-menu-trigger":"desktop",className:"fixed top-0 left-1.5 z-[60] flex h-[34px] items-center gap-0.5",children:[o.jsxs(k1,{children:[o.jsx(_1,{asChild:!0,children:o.jsx(ee,{type:"button",variant:"ghost",size:"icon",onClick:()=>v(),className:"h-7 w-7 shrink-0 rounded-full bg-transparent p-0 hover:bg-[#182137]/5 dark:hover:bg-white/10","aria-pressed":!h,"aria-label":h?x?d("tooltips.unmuteSounds",{ns:"canvas"}):"Unmute sounds":x?d("tooltips.muteSounds",{ns:"canvas"}):"Mute sounds",children:h?o.jsx($w,{className:"h-3.5 w-3.5 text-[#182137]/70 dark:text-white/70"}):o.jsx(Fw,{className:"h-3.5 w-3.5 text-[#182137]/70 dark:text-white/70"})})}),o.jsx(Yf,{side:"bottom",className:`text-[12px] font-semibold ${b?"font-heebo":""}`,children:h?x?d("tooltips.unmuteSounds",{ns:"canvas"}):"Unmute sounds":x?d("tooltips.muteSounds",{ns:"canvas"}):"Mute sounds"})]}),o.jsx(ee,{variant:"ghost",onClick:()=>O(!0),className:"h-8 px-1 py-0 bg-transparent border-0 hover:bg-transparent shadow-none group transition-all flex items-center gap-0.5",children:l.pathname.startsWith("/canvas/")?o.jsxs(o.Fragment,{children:[o.jsx("img",{src:f,alt:"Menu",className:"h-7 w-7 object-contain"}),o.jsx(ar,{className:"h-3 w-3 text-gray-600 dark:text-gray-300"})]}):o.jsx(Us,{className:"h-6 w-6 text-gray-700"})})]})}),c?o.jsx(Ku,{open:fe,onOpenChange:O,children:o.jsxs(Il,{side:"bottom",className:"flex h-[85vh] flex-col overflow-hidden rounded-t-[28px] border-t border-[#182137]/10 bg-[#F7F4EF] p-0 font-heebo text-[#182137] shadow-[0_-18px_44px_rgba(24,33,55,0.14)] dark:border-white/10 dark:bg-[#0E1426] dark:text-[#F7F4EF] [&>button]:hidden",children:[o.jsx("div",{className:"flex flex-shrink-0 justify-center pb-2 pt-2",children:o.jsx("div",{className:"h-1.5 w-12 rounded-full bg-[#182137]/15 dark:bg-white/20"})}),o.jsxs("div",{className:"flex-shrink-0 space-y-2 border-b border-[#182137]/10 bg-[#F7F4EF] px-3 pb-3 pt-1.5 dark:border-white/10 dark:bg-[#0E1426]",children:[je?o.jsxs("div",{className:"relative",children:[o.jsx(Ft,{placeholder:x?d("menu.enterBoardspaceName",{ns:"canvas"}):"Enter boardspace name...",value:ue,onChange:$=>ke($.target.value),onKeyDown:$=>{$.key==="Enter"&&ue.trim()&&($.preventDefault(),Me()),$.key==="Escape"&&(W(!1),ke(""))},autoFocus:!0,className:y("h-11 rounded-2xl border border-[#182137]/10 bg-white text-[14px] font-bold text-[#182137] placeholder:text-[#182137]/35 focus:border-[#D85D43] focus:ring-0 dark:border-white/10 dark:bg-[#1A1D26] dark:text-[#F7F4EF] dark:placeholder:text-white/35",b?"pe-10 ps-3 text-right font-heebo":"ps-3 pe-10")}),o.jsx("button",{onClick:Me,disabled:!ue.trim()||oe,className:y("absolute top-1/2 inline-flex h-9 w-9 -translate-y-1/2 items-center justify-center rounded-full text-[#D85D43] transition-colors hover:bg-[#D85D43]/10 disabled:cursor-not-allowed disabled:opacity-40",b?"left-1":"right-1"),children:o.jsx(ic,{className:"h-4 w-4"})})]}):o.jsxs(ee,{onClick:()=>W(!0),disabled:!n,className:y("flex h-12 w-full items-center justify-center gap-2 rounded-2xl bg-[#D85D43] font-heebo text-[15px] font-black text-white shadow-[0_10px_28px_rgba(216,93,67,0.28)] transition active:scale-[0.98] hover:bg-[#C94E35]",b&&"font-heebo tracking-wide"),children:[o.jsx(nn,{className:"h-5 w-5"}),x?d("menu.createBoardspace",{ns:"canvas"}):"Create Boardspace"]}),o.jsxs("div",{className:"relative",children:[o.jsx(Bm,{className:y("absolute top-1/2 h-4 w-4 -translate-y-1/2 text-[#182137]/35 dark:text-white/35",b?"right-3":"left-3")}),o.jsx(Ft,{placeholder:x?d("menu.searchBoardspaces",{ns:"canvas"}):"Search boardspaces...",value:Q,onChange:$=>Y($.target.value),className:y("h-11 rounded-2xl border border-[#182137]/10 bg-white text-[14px] font-bold text-[#182137] placeholder:text-[#182137]/35 focus:border-[#D85D43] focus:ring-0 dark:border-white/10 dark:bg-[#1A1D26] dark:text-[#F7F4EF] dark:placeholder:text-white/35",b?"pe-4 ps-10 text-right font-heebo":"ps-10 pe-4")})]}),Oe.length>0&&o.jsx("div",{className:"flex items-center justify-between gap-2 px-1 pt-1",children:Ve?o.jsxs(o.Fragment,{children:[o.jsxs("span",{className:"font-heebo text-[12px] font-bold text-[#182137]/70 dark:text-white/70",children:[De.size," ",I]}),o.jsxs("div",{className:"flex items-center gap-1.5",children:[o.jsx("button",{type:"button",onClick:ot,className:"rounded-full px-3 py-1.5 font-heebo text-[12px] font-bold text-[#182137]/70 transition-colors hover:bg-[#182137]/5 dark:text-white/70 dark:hover:bg-white/10",children:N}),o.jsxs("button",{type:"button",onClick:()=>lt(!0),disabled:De.size===0,className:"inline-flex items-center gap-1.5 rounded-full bg-gradient-to-br from-[#EC7357] via-[#D84B2E] to-[#B33D24] px-3 py-1.5 font-heebo text-[12px] font-black text-white shadow-[0_4px_14px_rgba(216,75,46,0.25)] transition-all disabled:cursor-not-allowed disabled:opacity-40",children:[o.jsx(cn,{className:"h-3.5 w-3.5"}),R]})]})]}):o.jsxs("button",{type:"button",onClick:()=>st(!0),className:"me-auto inline-flex items-center gap-1.5 rounded-full border border-[#D84B2E]/35 bg-[#D84B2E]/10 px-3.5 py-2 font-heebo text-[13px] font-black text-[#D84B2E] shadow-[0_2px_10px_rgba(216,75,46,0.15)] transition-all hover:border-[#D84B2E]/55 hover:bg-[#D84B2E]/15 hover:shadow-[0_4px_16px_rgba(216,75,46,0.22)] active:scale-[0.97] dark:bg-[#D84B2E]/15",style:{letterSpacing:"-0.01em"},children:[o.jsx(Fm,{className:"h-4 w-4",strokeWidth:2.6}),A]})})]}),o.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 py-3",children:ye?o.jsx("div",{className:"space-y-2",children:[...Array(3)].map(($,se)=>o.jsx("div",{className:"h-16 animate-pulse rounded-2xl bg-[#182137]/5 dark:bg-white/10"},se))}):Oe.length===0?o.jsxs("div",{className:"py-10 text-center",children:[o.jsx("div",{className:"mx-auto mb-3 flex h-14 w-14 items-center justify-center rounded-2xl bg-[#182137]/5 dark:bg-white/10",children:o.jsx(Vs,{className:"h-7 w-7 text-[#182137]/30 dark:text-white/30"})}),o.jsx("p",{className:"mb-1 font-heebo text-[15px] font-black text-[#182137] dark:text-[#F7F4EF]",children:Q?"No boardspaces found":"No boardspaces yet"}),o.jsx("p",{className:"font-heebo text-[12px] font-bold text-[#182137]/55 dark:text-white/55",children:!Q&&"Create your first boardspace above"})]}):Q.trim()?o.jsx("div",{className:"space-y-1.5",children:Oe.map($=>o.jsx(ks,{canvas:$,currentProjectId:t,openDropdownId:ze,setOpenDropdownId:Ze,setRenameCanvasId:Ee,setRenameCanvasName:We,setDeleteCanvasId:ge,setIsOpen:O,navigate:s,toast:le,isMobile:!0,isHebrew:b,handleCanvasClick:Ta,boardMenuRename:w,boardMenuDelete:k,selectionMode:Ve,isSelected:De.has($.id),isOwner:$.isOwner??!0,onToggleSelect:He},$.id))}):o.jsx(xh,{sensors:Se,collisionDetection:dh,onDragEnd:ct,children:o.jsx(_h,{items:ie.map($=>
552$.id),strategy:kh,children:o.jsx("div",{className:"space-y-2",children:ie.map($=>o.jsx(Vh,{canvas:$,children:se=>o.jsx(ks,{canvas:$,currentProjectId:t,openDropdownId:ze,setOpenDropdownId:Ze,setRenameCanvasId:Ee,setRenameCanvasName:We,setDeleteCanvasId:ge,setIsOpen:O,navigate:s,toast:le,isMobile:!0,isHebrew:b,handleCanvasClick:Ta,dragHandleProps:se,boardMenuRename:w,boardMenuDelete:k,selectionMode:Ve,isSelected:De.has($.id),isOwner:$.isOwner??!0,onToggleSelect:He})},$.id))})})})}),o.jsx("div",{className:"flex-shrink-0 border-t border-[#182137]/10 bg-[#F7F4EF] px-2 pb-[calc(0.5rem+env(safe-area-inset-bottom))] pt-2 dark:border-white/10 dark:bg-[#0E1426]",children:o.jsxs("div",{className:"grid grid-cols-5 gap-1",children:[o.jsxs("button",{onClick:()=>{s("/dashboard"),O(!1)},className:"flex min-h-[50px] flex-col items-center justify-center gap-1 rounded-2xl px-1 py-1 font-heebo text-[11px] font-black text-[#182137]/65 transition active:scale-95 hover:bg-[#182137]/5 dark:text-white/65 dark:hover:bg-white/10",children:[o.jsx(bu,{className:"h-4 w-4 text-[#D85D43]"}),o.jsx("span",{className:`text-[13px] leading-tight ${b?"font-heebo":""}`,children:x&&d("tooltips.dashboard",{ns:"canvas"})||"Home"})]}),o.jsxs("button",{onClick:()=>{s("/billing"),O(!1)},className:"flex min-h-[50px] flex-col items-center justify-center gap-1 rounded-2xl px-1 py-1 font-heebo text-[11px] font-black text-[#182137]/65 transition active:scale-95 hover:bg-[#182137]/5 dark:text-white/65 dark:hover:bg-white/10",children:[o.jsx(Am,{className:"h-4 w-4 text-[#D85D43]"}),o.jsx("span",{className:`text-[13px] leading-tight ${b?"font-heebo":""}`,children:x&&d("tooltips.tokens",{ns:"canvas"})||"Tokens"})]}),o.jsxs("button",{onClick:()=>{it("layout"),O(!1)},className:"flex min-h-[50px] flex-col items-center justify-center gap-1 rounded-2xl px-1 py-1 font-heebo text-[11px] font-black text-[#182137]/65 transition active:scale-95 hover:bg-[#182137]/5 dark:text-white/65 dark:hover:bg-white/10",children:[o.jsx(sn,{className:"h-4 w-4 text-[#D85D43]"}),o.jsx("span",{className:`text-[13px] leading-tight ${b?"font-heebo":""}`,children:x&&d("tooltips.settings",{ns:"canvas"})||"Settings"})]}),o.jsxs("button",{onClick:()=>{s("/help-center"),O(!1)},className:"flex min-h-[50px] flex-col items-center justify-center gap-1 rounded-2xl px-1 py-1 font-heebo text-[11px] font-black text-[#182137]/65 transition active:scale-95 hover:bg-[#182137]/5 dark:text-white/65 dark:hover:bg-white/10",children:[o.jsx(Bs,{className:"h-4 w-4 text-[#D85D43]"}),o.jsx("span",{className:`text-[13px] leading-tight ${b?"font-heebo":""}`,children:x&&d("tooltips.help",{ns:"canvas"})||"Help"})]}),o.jsxs("button",{onClick:()=>{po(),O(!1)},className:"flex min-h-[50px] flex-col items-center justify-center gap-1 rounded-2xl px-1 py-1 font-heebo text-[11px] font-black text-[#D85D43] transition active:scale-95 hover:bg-[#D85D43]/10",children:[o.jsx(Gc,{
552className:"h-4 w-4"}),o.jsx("span",{className:`text-[13px] leading-tight ${b?"font-heebo":""}`,children:x&&d("tooltips.signOut",{ns:"canvas"})||"Exit"})]})]})})]})}):o.jsxs(o.Fragment,{children:[fe&&o.jsx("div",{className:"fixed inset-0 bg-black/20 dark:bg-black/40 z-[59] transition-opacity duration-300",onClick:()=>O(!1),"aria-hidden":"true"}),o.jsxs("div",{"data-projects-menu":"desktop",style:{willChange:"transform"},className:`
553            fixed top-0 h-full w-72 bg-[#F7F4EF] dark:bg-[#0E1426] creators-bronze-grid-light-page shadow-[0_24px_60px_rgba(24,33,55,0.18)] z-[60] transform-gpu transition-transform duration-300 ease-out flex flex-col font-heebo text-[#182137] dark:text-[#F7F4EF]
554            ${r||!b?"left-0 border-r border-[#182137]/10 dark:border-white/10":"right-0 border-l border-[#182137]/10 dark:border-white/10"}
555            ${fe?"translate-x-0":r||!b?"-translate-x-full":"translate-x-full"}
556          `,children:[o.jsxs("div",{className:"flex items-center justify-between px-4 py-3 flex-shrink-0 border-b border-[#182137]/10 dark:border-white/10",children:[o.jsx(ee,{variant:"ghost",size:"icon",onClick:()=>O(!1),className:"h-8 w-8 rounded-lg text-[#182137]/55 hover:bg-[#182137]/[0.06] hover:text-[#182137] dark:text-white/55 dark:hover:bg-white/10 dark:hover:text-white transition-colors",children:o.jsx(Et,{className:"h-4 w-4"})}),o.jsx("img",{src:f,alt:"BoardSpace",className:"h-8 w-8 object-contain cursor-pointer",onClick:()=>s("/dashboard")})]}),o.jsxs("div",{className:"px-4 pt-3 pb-3 flex-shrink-0 space-y-2.5",children:[je?o.jsxs("div",{className:"relative",children:[o.jsx(Ft,{placeholder:x?d("menu.enterBoardspaceName",{ns:"canvas"}):"Enter boardspace name...",value:ue,onChange:$=>ke($.target.value),onKeyDown:$=>{$.key==="Enter"&&ue.trim()&&($.preventDefault(),Me()),$.key==="Escape"&&(W(!1),ke(""))},autoFocus:!0,className:y("h-11 bg-white dark:bg-[#1A1D26] border border-[#182137]/15 dark:border-white/10 rounded-xl font-heebo text-sm text-[#182137] dark:text-[#F7F4EF] placeholder:text-[#182137]/40 dark:placeholder:text-white/40 focus:border-[#D84B2E] focus:ring-2 focus:ring-[#D84B2E]/20 transition-colors",b?"pr-3 pl-9 text-right":"pl-3 pr-9")}),o.jsx("button",{onClick:Me,disabled:!ue.trim()||oe,className:y("absolute top-1/2 -translate-y-1/2 p-1.5 hover:bg-[#D84B2E]/10 rounded-md transition-colors disabled:opacity-50 disabled:cursor-not-allowed",b?"left-1":"right-1"),children:o.jsx(ic,{className:"h-3.5 w-3.5 text-[#D84B2E]"})})]}):o.jsxs(ee,{onClick:()=>W(!0),disabled:!n,className:y("w-full h-12 bg-gradient-to-br from-[#EC7357] via-[#D84B2E] to-[#B33D24] hover:shadow-[0_12px_30px_rgba(216,75,46,0.4)] text-white text-[14px] rounded-2xl shadow-[0_8px_24px_rgba(216,75,46,0.28)] flex items-center justify-center gap-2 transition-all","font-heebo"),style:{fontWeight:900,letterSpacing:"-0.01em"},children:[o.jsx(nn,{className:"h-4 w-4",strokeWidth:2.6}),x?d("menu.createBoardspace",{ns:"canvas"}):"Create Boardspace"]}),o.jsxs("div",{className:"relative",children:[o.jsx(Bm,{className:y("absolute top-1/2 -translate-y-1/2 h-4 w-4 text-[#182137]/40 dark:text-white/40",b?"right-3":"left-3")}),o.jsx(Ft,{placeholder:x?d("menu.searchBoardspaces",{ns:"canvas"}):"Search boardspaces...",value:Q,onChange:$=>Y($.target.value),className:y("h-11 bg-white dark:bg-[#1A1D26] border border-[#182137]/15 dark:border-white/10 rounded-xl font-heebo text-sm text-[#182137] dark:text-[#F7F4EF] placeholder:text-[#182137]/40 dark:placeholder:text-white/40 focus:border-[#D84B2E] focus:ring-2 focus:ring-[#D84B2E]/20 transition-colors",b?"pr-10 pl-3 text-right":"pl-10 pr-3")})]}),Oe.length>0&&o.jsx("div",{className:"flex items-center justify-between gap-2 px-0.5",children:Ve?o.jsxs(o.Fragment,{children:[o.jsxs("span",{className:"font-heebo text-[11px] font-bold text-[#182137]/70 dark:text-white/70",children:[De.size," ",I]}),o.jsxs("div",{className:"flex items-center gap-1.5",children:[o.jsx("button",{type:"button",onClick:ot,className:"rounded-md px-2.5 py-1 font-heebo text-[11px] font-bold text-[#182137]/65 transition-colors hover:bg-[#182137]/[0.06] dark:text-white/65 dark:hover:bg-white/10",children:N}),o.jsxs("button",{type:"button",onClick:()=>lt(!0),disabled:De.size===0,className:"inline-flex items-center gap-1.5 rounded-md bg-gradient-to-br from-[#EC7357] via-[#D84B2E] to-[#B33D24] px-2.5 py-1 font-heebo text-[11px] font-black text-white shadow-[0_3px_10px_rgba(216,75,46,0.25)] transition-all disabled:cursor-not-allowed disabled:opacity-40",children:[o.jsx(cn,{className:"h-3 w-3"}),R]})]})]}):o.jsxs("button",{type:"button",onClick:()=>st(!0),className:"me-auto inline-flex items-center gap-1.5 rounded-full border border-[#D84B2E]/35 bg-[#D84B2E]/10 px-3 py-1.5 font-heebo text-[12px] font-black text-[#D84B2E] shadow-[0_2px_8px_rgba(216,75,46,0.14)] transition-all hover:border-[#D84B2E]/55 hover:bg-[#D84B2E]/15 hover:shadow-[0_3px_12px_rgba(216,75,46,0.2)] active:scale-[0.97] dark:bg-[#D84B2E]/15",style:{letterSpacing:"-0.01em"}
556,children:[o.jsx(Fm,{className:"h-3.5 w-3.5",strokeWidth:2.6}),A]})})]}),o.jsx("div",{className:"flex-1 overflow-y-auto px-4 py-2 min-h-0",children:ye?o.jsx("div",{className:"space-y-2",children:[...Array(3)].map(($,se)=>o.jsx("div",{className:"h-14 bg-[#182137]/[0.05] dark:bg-white/[0.06] rounded-xl animate-pulse"},se))}):Oe.length===0?o.jsxs("div",{className:"text-center py-12",children:[o.jsx("div",{className:"w-16 h-16 mx-auto mb-4 rounded-2xl bg-white border border-[#182137]/10 dark:border-white/10 dark:bg-[#1A1D26] flex items-center justify-center",children:o.jsx(Vs,{className:"h-8 w-8 text-[#182137]/35 dark:text-white/35"})}),o.jsx("p",{className:"font-heebo text-base text-[#182137] dark:text-[#F7F4EF] mb-1.5",style:{fontWeight:900,letterSpacing:"-0.02em"},children:Q?"No boardspaces found":"No boardspaces yet"}),o.jsx("p",{className:"font-heebo text-sm text-[#182137]/55 dark:text-white/55",children:!Q&&"Create your first boardspace above"})]}):Q.trim()?o.jsx("div",{className:"space-y-1.5",children:Oe.map($=>o.jsx(ks,{canvas:$,currentProjectId:t,openDropdownId:ze,setOpenDropdownId:Ze,setRenameCanvasId:Ee,setRenameCanvasName:We,setDeleteCanvasId:ge,setIsOpen:O,navigate:s,toast:le,isMobile:!1,isHebrew:b,handleCanvasClick:Ta,boardMenuRename:w,boardMenuDelete:k,selectionMode:Ve,isSelected:De.has($.id),isOwner:$.isOwner??!0,onToggleSelect:He},$.id))}):o.jsx(xh,{sensors:Se,collisionDetection:dh,onDragEnd:ct,children:o.jsx(_h,{items:ie.map($=>$.id),strategy:kh,children:o.jsx("div",{className:"space-y-1.5",children:ie.map($=>o.jsx(Vh,{canvas:$,children:se=>o.jsx(ks,{canvas:$,currentProjectId:t,openDropdownId:ze,setOpenDropdownId:Ze,setRenameCanvasId:Ee,setRenameCanvasName:We,setDeleteCanvasId:ge,setIsOpen:O,navigate:s,toast:le,isMobile:!1,isHebrew:b,handleCanvasClick:Ta,dragHandleProps:se,boardMenuRename:w,boardMenuDelete:k,selectionMode:Ve,isSelected:De.has($.id),isOwner:$.isOwner??!0,onToggleSelect:He})},$.id))})})})}),o.jsx("div",{className:"border-t border-[#182137]/10 dark:border-white/10 px-3 py-2.5 flex-shrink-0 bg-[#F7F4EF] dark:bg-[#0E1426]",children:o.jsxs("div",{className:"space-y-0.5",children:[o.jsxs("button",{onClick:()=>s("/dashboard"),className:"w-full flex items-center gap-3 px-3 py-2 font-heebo text-[13px] text-[#182137]/75 dark:text-white/75 hover:text-[#D84B2E] hover:bg-[#D84B2E]/[0.06] rounded-lg transition-colors",style:{fontWeight:700},children:[o.jsx(Tw,{className:"h-4 w-4 text-[#182137]/45 dark:text-white/45 group-hover:text-[#D84B2E]"}),o.jsx("span",{children:x&&d("tooltips.dashboard",{ns:"canvas"})||"Dashboard"})]}),o.jsxs("button",{onClick:()=>{s("/billing"),O(!1)},className:"w-full flex items-center gap-3 px-3 py-2 font-heebo text-[13px] text-[#182137]/75 dark:text-white/75 hover:text-[#D84B2E] hover:bg-[#D84B2E]/[0.06] rounded-lg transition-colors",style:{fontWeight:700},children:[o.jsx(Am,{className:"h-4 w-4 text-[#182137]/45 dark:text-white/45"}),o.jsx("span",{children:x&&d("tooltips.buyTokens",{ns:"canvas"})||"Buy Tokens"})]}),o.jsxs("button",{onClick:()=>{it("layout"),O(!1)},className:"w-full flex items-center gap-3 px-3 py-2 font-heebo text-[13px] text-[#182137]/75 dark:text-white/75 hover:text-[#D84B2E] hover:bg-[#D84B2E]/[0.06] rounded-lg transition-colors",style:{fontWeight:700},children:[o.jsx(sn,{className:"h-4 w-4 text-[#182137]/45 dark:text-white/45"}),o.jsx("span",{children:x&&d("tooltips.settings",{ns:"canvas"})||"Settings"})]}),o.jsxs("button",{onClick:()=>{s("/help-center"),O(!1)},className:"w-full flex items-center gap-3 px-3 py-2 font-heebo text-[13px] text-[#182137]/75 dark:text-white/75 hover:text-[#D84B2E] hover:bg-[#D84B2E]/[0.06] rounded-lg transition-colors",style:{fontWeight:700},children:[o.jsx(Bs,{className:"h-4 w-4 text-[#182137]/45 dark:text-white/45"}),o.jsx("span",{children:x&&d("tooltips.help",{ns:"canvas"})||"Help"})]}),o.jsx("div",{className:"border-t border-[#182137]/10 dark:border-white/10 my-1.5"}),o.jsxs("button",{onClick:po,className:"w-full flex items-center gap-3 px-3 py-2 font-heebo text-[13px] text-[#D84B2E] hover:bg-[#D84B2E]/10 rounded-lg transition-colors",style:{fontWeight:800}
556,children:[o.jsx(Gc,{className:"h-4 w-4"}),o.jsx("span",{children:x&&d("tooltips.signOut",{ns:"canvas"})||"Sign Out"})]})]})})]})]}),o.jsx(Si,{open:!!M,onOpenChange:()=>{Ee(null),We("")},children:o.jsxs(mo,{dir:b?"rtl":"ltr",className:"sm:max-w-md bg-[#F7F4EF] border border-[#182137]/10 shadow-[0_24px_60px_rgba(24,33,55,0.18)] rounded-2xl font-heebo text-[#182137]",children:[o.jsxs(Un,{className:y("pb-4",b&&"text-right sm:text-right"),children:[o.jsx(Ci,{className:"font-heebo text-xl text-[#182137]",style:{fontWeight:900,letterSpacing:"-0.02em"},children:_}),o.jsx(Al,{className:"font-heebo text-sm text-[#182137]/60",children:j})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsx(Ft,{placeholder:S,value:Ne,onChange:$=>We($.target.value),onKeyDown:$=>{$.key==="Enter"&&Ne.trim()&&gt(),$.key==="Escape"&&(Ee(null),We(""))},autoFocus:!0,className:y("h-11 rounded-xl bg-white border border-[#182137]/15 focus:border-[#D84B2E] focus:ring-2 focus:ring-[#D84B2E]/20",b&&"text-right font-heebo")}),o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsx(ee,{variant:"outline",onClick:()=>{Ee(null),We("")},className:"rounded-xl border-[#182137]/15 bg-white text-[#182137] hover:bg-[#F7F4EF] hover:border-[#182137]/30",children:N}),o.jsx(ee,{onClick:gt,disabled:!Ne.trim(),className:"rounded-xl bg-gradient-to-br from-[#EC7357] via-[#D84B2E] to-[#B33D24] text-white shadow-[0_6px_20px_rgba(216,75,46,0.3)] hover:shadow-[0_8px_28px_rgba(216,75,46,0.45)]",style:{fontWeight:800},children:C})]})]})]})}),o.jsx(xn,{open:!!re,onOpenChange:()=>ge(null),children:o.jsxs(lr,{dir:b?"rtl":"ltr",className:"bg-[#F7F4EF] border border-[#182137]/10 shadow-[0_24px_60px_rgba(24,33,55,0.18)] rounded-2xl font-heebo text-[#182137]",children:[o.jsxs(cr,{children:[o.jsx(ur,{className:y("font-heebo text-xl text-[#182137]",b&&"text-right"),style:{fontWeight:900,letterSpacing:"-0.02em"},children:P}),o.jsx(mr,{className:y("font-heebo text-sm text-[#182137]/65 leading-relaxed",b&&"text-right"),children:E})]}),o.jsxs(dr,{children:[o.jsx(pr,{className:"rounded-xl border-[#182137]/15 bg-white text-[#182137] hover:bg-[#F7F4EF] hover:border-[#182137]/30",children:N}),o.jsx(wn,{onClick:()=>re&&Ca(re),className:"rounded-xl bg-gradient-to-br from-[#EC7357] via-[#D84B2E] to-[#B33D24] text-white shadow-[0_6px_20px_rgba(216,75,46,0.3)] hover:shadow-[0_8px_28px_rgba(216,75,46,0.45)]",style:{fontWeight:800},children:L})]})]})}),o.jsx(xn,{open:we,onOpenChange:$=>!Tt&&lt($),children:o.jsxs(lr,{dir:b?"rtl":"ltr",className:"bg-[#F7F4EF] border border-[#182137]/10 shadow-[0_24px_60px_rgba(24,33,55,0.18)] rounded-2xl font-heebo text-[#182137]",children:[o.jsxs(cr,{children:[o.jsxs(ur,{className:y("font-heebo text-xl text-[#182137]",b&&"text-right"),style:{fontWeight:900,letterSpacing:"-0.02em"},children:[De.size," · ",B]}),o.jsx(mr,{className:y("font-heebo text-sm text-[#182137]/65 leading-relaxed",b&&"text-right"),children:z})]}),o.jsxs(dr,{children:[o.jsx(pr,{disabled:Tt,className:"rounded-xl border-[#182137]/15 bg-white text-[#182137] hover:bg-[#F7F4EF] hover:border-[#182137]/30",children:N}),o.jsx(wn,{disabled:Tt,onClick:$=>{$.preventDefault(),Ai()},className:"rounded-xl bg-gradient-to-br from-[#EC7357] via-[#D84B2E] to-[#B33D24] text-white shadow-[0_6px_20px_rgba(216,75,46,0.3)] hover:shadow-[0_8px_28px_rgba(216,75,46,0.45)]",style:{fontWeight:800},children:Tt?Z:`${L} ${De.size}`})]})]})}),Zt&&o.jsxs("div",{className:"fixed inset-0 z-[100] flex items-center justify-center p-4",children:[o.jsx("div",{className:"absolute inset-0 bg-black/40",onClick:()=>ht(!1)}),o.jsxs("div",{className:"relative w-full max-w-md rounded-2xl border border-[#182137]/10 bg-[#F7F4EF] p-6 font-heebo text-[#182137] shadow-xl transition-all dark:border-white/10 dark:bg-[#0E1426] dark:text-[#F7F4EF]",dir:b?"rtl":"ltr",children:[o.jsx("button",{onClick:()=>ht(!1),className:"absolute top-4 left-4 p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors",children:o.jsx(Et,{className:"h-4 w-4 text-gray-400"})}),o.jsxs("div",{className:"space-y-5",children:[o.jsx("div",{className:b?"text-right":"text-left",children:o.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:b?"צריכים עזרה אישית?":"Need Personal Help?"})}),o.jsxs("div",{className:y("space-y-3",b?"text-right":"text-left"),children:[o.jsxs("p",{className:"text-sm text-gray-600 dark:text-gray-300 leading-relaxed",children:[o.jsx("span",{className:"font-bold text-gray-900 dark:text-white",children:b?"מעצבי פנים,":"Interior Designers,"})," ",b?"שמנו מטרה לפשט לכם את העבודה עם בינה מלאכותית — ולהפוך אותה לפשוטה, עם התוצאות הכי מדויקות.":"our goal is to simplify your work with AI — making it intuitive and delivering the most accurate results."]}),o.jsxs("p",{className:"text-sm text-gray-600 dark:text-gray-300 leading-relaxed",children:[b?"אנחנו מבינים שיש הרבה כפתורים וזה יכול להרגיש מבלבל. בגלל זה הקמנו את ":"We understand there are many features and it can feel overwhelming. That's why we created our ",o.jsx("span",{className:"font-bold text-gray-900 dark:text-white",children:b?"צוות ההדרכות שלנו":"training team"}),"."]}),o.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-300 leading-relaxed",children:b?"נשמח ללוות אתכם באופן אישי, להסביר ולהנחות. ונוכל גם להגיע אליכם למשרד להדרכת הצוות.":"We'd be happy to guide you personally, explain features, and provide training. We can even visit your office for team training."}),b&&o.jsx("p",{className:"text-sm font-bold text-gray-700 dark:text-gray-300 mt-2",children:"חיים לגזיאל, מייסד"})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsxs("a",{href:"https://chat.whatsapp.com/LwQfxmTxHw68JJBLMBTPIz",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 py-2 hover:opacity-70 transition-opacity",children:[o.jsx("svg",{className:"w-5 h-5 text-gray-500 dark:text-gray-400 flex-shrink-0",viewBox:"0 0 24 24",fill:"
556currentColor",children:o.jsx("path",{d:"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"})}),o.jsxs("div",{className:y("flex-1",b?"text-right":"text-left"),children:[o.jsx("div",{className:"font-medium text-sm text-gray-900 dark:text-white",children:b?"קהילת וואטסאפ":"WhatsApp Community"}),o.jsx("div",{className:"text-xs text-gray-500 dark:text-gray-400",children:b?"שאלות והדרכות":"Questions & tutorials"})]})]}),ea?o.jsxs("div",{className:"p-4 rounded-lg border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx("button",{onClick:()=>Gt(!1),className:"p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors",children:o.jsx(Et,{className:"w-4 h-4 text-gray-400"})}),o.jsx("div",{className:"font-medium text-sm text-gray-900 dark:text-white",children:b?"בקשה להדרכה":"Training Request"})]}),o.jsx("input",{type:"email",placeholder:b?"המייל שלך":"Your email",value:kt,onChange:$=>Wt($.target.value),className:"w-full px-3 py-2 rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 text-right text-sm focus:outline-none focus:ring-2 focus:ring-red-500 focus:border-transparent",dir:"rtl"}),o.jsx("textarea",{placeholder:b?"ספרו לנו קצת על הצוות והצרכים שלכם...":"Tell us about your team and needs...",value:G,onChange:$=>te($.target.value),rows:3,className:"w-full px-3 py-2 rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 text-right text-sm focus:outline-none focus:ring-2 focus:ring-red-500 focus:border-transparent resize-none",dir:"rtl"}),o.jsx("button",{onClick:_e,disabled:D||!kt.trim()||!G.trim(),className:"w-full py-2.5 rounded-lg bg-[#E60023] hover:bg-[#ad081b] disabled:bg-gray-300 dark:disabled:bg-gray-700 text-white font-medium text-sm transition-colors flex items-center justify-center gap-2",children:D?o.jsx("div",{className:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"}):o.jsxs(o.Fragment,{children:[o.jsx(ic,{className:"w-4 h-4"}),b?"שלח בקשה":"Send Request"]})})]}):o.jsxs("button",{onClick:()=>Gt(!0),className:"w-full flex items-center gap-3 py-2 hover:opacity-70 transition-opacity",children:[o.jsx(Wa,{className:"w-5 h-5 text-gray-500 dark:text-gray-400 flex-shrink-0"}),o.jsxs("div",{className:y("flex-1",b?"text-right":"text-left"),children:[o.jsx("div",{className:"font-medium text-sm text-gray-900 dark:text-white",children:b?"בקשת הדרכה":"Request Training"}),o.jsx("div",{className:"text-xs text-gray-500 dark:text-gray-400",children:b?"נחזור אליכם בהקדם":"We'll get back to you soon"})]})]}),o.jsxs("a",{href:"https://www.instagram.com/boardspace_il/",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 py-2 hover:opacity-70 transition-opacity",children:[o.jsx(jf,{className:"w-5 h-5 text-gray-500 dark:text-gray-400 flex-shrink-0"}),o.jsxs("div",{className:y("flex-1",b?"text-right":"text-left"),children:[o.jsx("div",{className:"font-medium text-sm text-gray-900 dark:text-white",children:b?"אינסטגרם":"Instagram"}),o.jsx("div",{className:"text-xs text-gray-500 dark:text-gray-400",children:"@boardspace_il"})]})]})]})]})]})]})]})};function YI({showGrid:t,onGridToggle:e,onClose:a}){const{t:i,i18n:r}=$e(["canvas"]),{locale:n,setLocale:s}
556=Dt();Vt();const l=typeof window<"u"?_i():null,c=n==="he"||r.language==="he"||l==="he"||typeof document<"u"&&document.documentElement.dir==="rtl",d=r.exists("settings.title",{ns:"canvas"}),{activeTab:u,setActiveTab:p}=Vn(),{theme:f,setTheme:h}=wi(),v=G=>{if(G===n)return;s(G,!0);const te={en:"Language changed to English",he:"השפה שונתה לעברית",it:"Lingua cambiata in italiano"};le.success(te[G]||te.en)},g=Gn(),[b,x]=m.useState(null),[w,k]=m.useState(null),[_,j]=m.useState(!1),[S,C]=m.useState(!1),[N,P]=m.useState(!0),[E,L]=m.useState(!1),{createCheckout:A}=KI(),{user:I}=Pt(),{tokens:R,loading:B}=Nl(),{profile:z,hasActiveSubscription:Z,getMemberSinceDate:fe,getNextPaymentDate:O,getPlanDisplayName:Q,isLoading:Y}=VN(),K=Y||B,{organization:J,userPendingInvites:oe}=Rl(),ve=(z==null?void 0:z.plan_type)==="enterprise"&&Z()||oe&&oe.length>0||J!=null,[je,W]=m.useState(!1),[ue,ke]=m.useState(null),[re,ge]=m.useState(!1),[M,Ee]=m.useState(null),[Ne,We]=m.useState(""),[ze,Ze]=m.useState(null),[Ve,st]=m.useState(0),[De,xt]=m.useState(!1),we=G=>{if(!c)return G;const te=G.toLowerCase();return i(`settings.billing.planNames.${te}`,{ns:"canvas"})||G};m.useEffect(()=>{lt(),it()},[I==null?void 0:I.id]);const lt=async()=>{try{j(!0);const G=await Fh.getConnection();x(G)}catch(G){console.error("Failed to check Pinterest connection:",G)}finally{j(!1)}},Tt=async G=>{G.preventDefault(),G.stopPropagation();try{await Fh.disconnect(),x(null),le.success("Pinterest account disconnected")}catch(te){console.error("Failed to disconnect Pinterest:",te),le.error("Failed to disconnect Pinterest account")}},qt=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),it=async()=>{if(!(I!=null&&I.id)||!qt){k(null);return}try{C(!0);const{data:G,error:te}=await V.functions.invoke("trimble-oauth",{body:{action:"status"}});if(te||!(G!=null&&G.success))throw new Error((te==null?void 0:te.message)||(G==null?void 0:G.error)||"Trimble status check failed");k({connected:!!G.connected,token_expires_at:G.token_expires_at??null,connected_at:G.connected_at??null})}catch(G){console.error("Failed to check SketchUp MCP connection:",G),k(null)}finally{C(!1)}},pt=async()=>{if(!(I!=null&&I.id)){le.error(c?"צריך להתחבר כדי לחבר SketchUp":"Please sign in to connect SketchUp");return}const G=c?"he":"en";let te=null;try{const D=await H(()=>import("./trimbleAuth-C9WB8K_k.js"),[]);te=D.trimbleConnectErrorMessage,await D.beginTrimbleAuth(window.location.pathname+window.location.search)}catch(D){le.error((te==null?void 0:te(D,G))||(c?"חיבור SketchUp נכשל. נסו שוב בעוד רגע.":"SketchUp connection failed. Please try again in a moment."),{duration:9e3})}},At=async G=>{if(G.preventDefault(),G.stopPropagation(),!!(I!=null&&I.id))try{C(!0);const{data:te,error:D}=await V.functions.invoke("trimble-oauth",{body:{action:"disconnect"}});if(D||!(te!=null&&te.success))throw new Error((D==null?void 0:D.message)||(te==null?void 0:te.error)||"Trimble disconnect failed");k({connected:!1,token_expires_at:null,connected_at:null}),le.success(c?"חיבור SketchUp נותק":"SketchUp connection disconnected")}catch(te){console.error("Failed to disconnect SketchUp MCP:",te),le.error(c?"ניתוק SketchUp נכשל":"Failed to disconnect SketchUp")}finally{C(!1)}},wt=async G=>{if(!G.trim()){Ze(null),st(0);return}xt(!0);try{const te=G.toUpperCase().trim(),{data:D,error:ce}=await V.from("invitation_codes").select("discount_percentage, status, expires_at, current_uses, max_uses, is_multi_use, code").eq("code",te).maybeSingle();if(ce){console.error("Coupon validation error:",ce),console.error("Error details:",{message:ce.message,code:ce.code,details:ce.details,hint:ce.hint}),Ze(!1),st(0);return}if(!D){Ze(!1),st(0);return}const _e=D;_e.code,_e.status,_e.discount_percentage,_e.expires_at,_e.current_uses,_e.max_uses,_e.is_multi_use;const Re=_e.expires_at&&new Date(_e.expires_at)<new Date,ye=_e.is_multi_use?_e.max_uses!==null&&_e.max_uses!==void 0?(_e.current_uses||0)>=_e.max_uses:!1:(_e.current_uses||0)>0,ae=_e.status==="available";_e.status;const Oe=_e.discount_percentage??0;if(ae&&!Re&&!ye&&Oe>0)st(Oe),Ze(!0);else{const ie=ae?Re?"Expired":ye?"Used up (max uses reached)":"Invalid":"Not active";Ze(!1),st(0)}}catch(te){console.error("Error validating coupon:",te),Ze(!1),st(0)}finally{xt(!1)}},Zt=()=>{const G="1539709",D=window.location.hostname==="boardspace.ai"||window.location.hostname==="www.boardspace.ai"?"https://boardspace.ai/auth/pinterest/callback":"http://localhost:8081/auth/pinterest/callback";if(G.trim()===""){le.error("Pinterest configuration missing - VITE_PINTEREST_CLIENT_ID n
556ot set");return}const ce=`https://www.pinterest.com/oauth/?client_id=${G}&redirect_uri=${encodeURIComponent(D)}&response_type=code&scope=boards:read,pins:read,user_accounts:read`;window.location.href=ce},ht=()=>{var ae,Oe,ie;const G=((ae=I==null?void 0:I.user_metadata)==null?void 0:ae.full_name)||((Oe=I==null?void 0:I.email)==null?void 0:Oe.split("@")[0])||"User",te=(I==null?void 0:I.email)||"",D=((ie=R==null?void 0:R.balance)==null?void 0:ie.toFixed(2))??0;R==null||R.monthly_base,R==null||R.rollover,R==null||R.payback_tokens;const ce=Q(),_e=Z(),Re=fe(),ye=O();return z==null||z.one_time_pack_name,o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:y("rounded-lg border border-gray-200 dark:border-gray-800",g?"p-3":"p-4"),children:[o.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[o.jsx("div",{className:y("bg-gray-100 dark:bg-gray-800 rounded-full flex items-center justify-center",g?"h-8 w-8":"h-10 w-10"),children:o.jsx(bu,{className:y("text-gray-600 dark:text-gray-400",g?"h-4 w-4":"h-5 w-5")})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:y("font-semibold text-gray-900 dark:text-white truncate",g?"text-sm":"text-base",c&&"font-heebo"),children:G}),o.jsxs("div",{className:"flex items-center justify-between gap-2",children:[o.jsx("p",{className:y("text-gray-500 dark:text-gray-400 truncate",g?"text-xs":"text-sm",c&&"font-heebo"),children:te}),o.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0 -mt-[30px]",children:[o.jsx(ee,{onClick:()=>p("usage"),variant:"outline",className:y("border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800",g?"h-6 px-2 text-[10px]":"h-7 px-3 text-xs",c&&"font-heebo"),size:"sm",children:d?i("settings.user.usage",{ns:"canvas"}):"Usage"}),!_e&&o.jsx(ee,{onClick:()=>window.location.href="/billing",className:y("bg-[#E60023] hover:bg-[#BD081C] text-white",g?"h-6 px-2 text-[10px]":"h-7 px-3 text-xs",c&&"font-heebo"),size:"sm",children:d?i("settings.user.upgrade",{ns:"canvas"}):"Upgrade"})]})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[K?o.jsxs("div",{className:"flex items-center justify-center gap-2 py-4 text-gray-500 dark:text-gray-400",children:[o.jsx(to,{className:y("animate-spin",g?"h-4 w-4":"h-5 w-5")}),o.jsx("span",{className:y(g?"text-xs":"text-sm",c&&"font-heebo"),children:c?"טוען...":"Loading..."})]}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx("span",{className:y("text-gray-600 dark:text-gray-400",g?"text-xs":"text-sm",c&&"font-heebo"),children:d?i("settings.user.plan",{ns:"canvas"}):"Plan"}),o.jsx("span",{className:y("text-gray-900 dark:text-white font-medium",g?"text-xs":"text-sm",c&&"font-heebo"),children:ce})]}),_e&&Re&&o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx("span",{className:y("text-gray-600 dark:text-gray-400",g?"text-xs":"text-sm",c&&"font-heebo"),children:d?i("settings.user.memberSince",{ns:"canvas"}):"Member since"}),o.jsx("span",{className:y("text-gray-900 dark:text-white font-medium",g?"text-xs":"text-sm",c&&"font-heebo"),children:Re})]}),_e&&ye&&o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx("span",{className:y("text-gray-600 dark:text-gray-400",g?"text-xs":"text-sm",c&&"font-heebo"),children:d?i("settings.user.nextPayment",{ns:"canvas"}):"Next payment"}),o.jsx("span",{className:y("text-gray-900 dark:text-white font-medium",g?"text-xs":"text-sm",c&&"font-heebo"),children:ye})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx("span",{className:y("text-gray-600 dark:text-gray-400",g?"text-xs":"text-sm",c&&"font-heebo"),children:d?i("settings.user.tokens",{ns:"canvas"}):"Tokens"}),o.jsx("span",{className:y("text-gray-900 dark:text-white font-medium",g?"text-xs":"text-sm",c&&"font-heebo"),children:D})]})]}),J&&o.jsxs("div",{className:"flex items-center justify-between pt-2 border-t border-gray-200 dark:border-gray-700",children:[o.jsxs("span",{className:y("text-gray-600 dark:text-gray-400 flex items-center gap-1.5",g?"text-xs":"text-sm",c&&"font-heebo"),children:[o.jsx(ir,{className:y("text-gray-500 dark:text-gray-400",g?"h-3 w-3":"h-3.5 w-3.5")}),d?i("settings.user.organization",{ns:"canvas"}):"Organization"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:y("text-gray-900 dark:text-white font-medium",g?"text-xs":"text-sm",c&&"font-heebo"),children:J.name}),ve&&o.jsx(ee,{onClick:()=>p("team"),variant:"ghost",size:"sm",className:y("h-5 px-2 text-[10px] text-blue-600 dar
556k:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 hover:bg-blue-50 dark:hover:bg-blue-900/20",g&&"h-4 px-1.5 text-[9px]",c&&"font-heebo"),children:d?i("settings.user.viewTeam",{ns:"canvas"}):"View Team"})]})]})]})]}),o.jsx(Os,{className:y("my-4",g&&"my-3")}),o.jsxs("div",{children:[o.jsx("h3",{className:y(g?"text-sm":"text-lg","font-bold mb-2 sm:mb-3",g?"text-gray-800 dark:text-gray-100":"text-gray-900 dark:text-white",c&&"font-heebo"),children:d?i("settings.canvas.title",{ns:"canvas"}):"Canvas Settings"}),o.jsx("div",{className:"space-y-2",children:o.jsxs("div",{className:y("flex items-center justify-between rounded-lg border shadow-sm",g?"border-gray-300 dark:border-gray-700 bg-white dark:bg-slate-800":"border-blue-200 dark:border-blue-800 bg-gradient-to-r from-blue-50 to-indigo-50 dark:from-blue-900/30 dark:to-indigo-900/30",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:y("rounded-md",g?"bg-gray-100 dark:bg-gray-700 p-1.5":"bg-blue-100 dark:bg-blue-800/50 p-2"),children:o.jsx(yl,{className:y(g?"text-gray-700 dark:text-gray-300":"text-blue-600 dark:text-blue-400",g?"h-3.5 w-3.5":"h-4 w-4")})}),o.jsxs("div",{children:[o.jsx(Jt,{className:y("font-semibold",g?"text-gray-800 dark:text-gray-200":"text-gray-900 dark:text-white",g?"text-xs":"text-sm",c&&"font-heebo"),children:d?i("settings.canvas.showGrid",{ns:"canvas"}):"Show Grid"}),o.jsx("p",{className:y("mt-0.5 font-medium",g?"text-gray-700 dark:text-gray-300":"text-gray-800 dark:text-gray-300",g?"text-[11px]":"text-xs",c&&"font-heebo"),children:d?i("settings.canvas.showGridDescription",{ns:"canvas"}):"Display dot grid pattern on canvas"})]})]}),o.jsx("div",{dir:"ltr",className:"flex-shrink-0",children:o.jsx(Vd,{checked:t,onCheckedChange:ne=>{e&&e(ne)},disabled:!e,className:y("data-[state=checked]:bg-red-500",g&&"scale-110")})})]})})]}),o.jsx(Os,{className:y("my-4",g&&"my-3")}),o.jsxs("div",{children:[o.jsx("h3",{className:y(g?"text-sm":"text-lg","font-bold mb-2 sm:mb-3",g?"text-gray-800 dark:text-gray-100":"text-gray-900 dark:text-white",c&&"font-heebo"),children:d?i("settings.theme.title",{ns:"canvas"}):"Theme Settings"}),o.jsx("div",{className:"space-y-2",children:o.jsxs("div",{className:y("flex items-center justify-between rounded-lg border shadow-sm",g?"border-gray-300 dark:border-gray-700 bg-white dark:bg-slate-800":"border-purple-200 dark:border-purple-800 bg-gradient-to-r from-purple-50 to-pink-50 dark:from-purple-900/30 dark:to-pink-900/30",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:y("rounded-md",g?"bg-gray-100 dark:bg-gray-700 p-1.5":"bg-purple-100 dark:bg-purple-800/50 p-2"),children:f==="dark"?o.jsx(rn,{className:y(g?"text-gray-700 dark:text-gray-300":"text-purple-600 dark:text-purple-400",g?"h-3.5 w-3.5":"h-4 w-4")}):o.jsx(ln,{className:y(g?"text-gray-700 dark:text-gray-300":"text-purple-600 dark:text-purple-400",g?"h-3.5 w-3.5":"h-4 w-4")})}),o.jsxs("div",{children:[o.jsx(Jt,{className:y("font-semibold",g?"text-gray-800 dark:text-gray-200":"text-gray-900 dark:text-white",g?"text-xs":"text-sm",c&&"font-heebo"),children:d?i("settings.theme.darkMode",{ns:"canvas"}):"Dark Mode"}),o.jsx("p",{className:y("mt-0.5 font-medium",g?"text-gray-700 dark:text-gray-300":"text-gray-800 dark:text-gray-300",g?"text-[11px]":"text-xs",c&&"font-heebo"),children:d?i("settings.theme.darkModeDescription",{ns:"canvas"}):"Use dark theme interface"})]})]}),o.jsx("div",{dir:"ltr",className:"flex-shrink-0",children:o.jsx(Vd,{checked:f==="dark",onCheckedChange:ne=>h(ne?"dark":"light"),className:y("data-[state=checked]:bg-red-500",g&&"scale-110")})})]})})]}),o.jsx(Os,{className:y("my-4",g&&"my-3")}),o.jsxs("div",{children:[o.jsx("h3",{className:y(g?"text-sm":"text-lg","font-bold mb-2 sm:mb-3",g?"text-gray-800 dark:text-gray-100":"text-gray-900 dark:text-white",c&&"font-heebo"),children:d?i("settings.language.title",{ns:"canvas"}):"Language Settings"}),o.jsx("div",{className:"space-y-2",children:o.jsxs("div",{className:y("flex flex-col gap-2 rounded-lg border shadow-sm",g?"border-gray-300 dark:border-gray-700 bg-white dark:bg-slate-800":"border-green-200 dark:border-green-800 bg-gradient-to-r from-green-50 to-emerald-50 dark:from-green-900/30 dark:to-emerald-900/30",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:y("roun
556ded-md",g?"bg-gray-100 dark:bg-gray-700 p-1.5":"bg-green-100 dark:bg-green-800/50 p-2"),children:o.jsx(Sw,{className:y(g?"text-gray-700 dark:text-gray-300":"text-green-600 dark:text-green-400",g?"h-3.5 w-3.5":"h-4 w-4")})}),o.jsxs("div",{children:[o.jsx(Jt,{className:y("font-semibold",g?"text-gray-800 dark:text-gray-200":"text-gray-900 dark:text-white",g?"text-xs":"text-sm",c&&"font-heebo"),children:d?i("settings.language.currentLanguage",{ns:"canvas"}):"Current Language"}),o.jsx("p",{className:y("mt-0.5 font-medium",g?"text-gray-700 dark:text-gray-300":"text-gray-800 dark:text-gray-300",g?"text-[11px]":"text-xs",c&&"font-heebo"),children:n==="he"?"עברית 🇮🇱":n==="it"?"Italiano 🇮🇹":"English 🇺🇸"})]})]}),o.jsx("div",{className:y("flex flex-wrap gap-1.5",g&&"gap-1"),children:[{code:"en",label:"English",flag:"🇺🇸"},{code:"he",label:"עברית",flag:"🇮🇱"},{code:"it",label:"Italiano",flag:"🇮🇹"}].map(ne=>o.jsxs(ee,{onClick:()=>v(ne.code),variant:n===ne.code?g?"default":"secondary":"outline",size:"sm",className:y(n===ne.code&&g&&"bg-red-500 hover:bg-red-600 text-white border-0",n===ne.code&&!g&&"border-green-500 dark:border-green-600 bg-green-50 dark:bg-green-900/30",g?"h-7 px-2 text-xs":"h-8 px-2.5 text-sm",c&&"font-heebo"),children:[ne.flag," ",ne.label]},ne.code))})]})})]})]})},ea=()=>o.jsx("div",{className:"space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:y(g?"text-base":"text-lg","font-bold mb-3 text-gray-900 dark:text-white",c&&"font-heebo"),children:d?i("settings.integrations.connectedServices",{ns:"canvas"}):"Connected Services"}),o.jsxs(oa,{className:"mb-4 border-2 border-gray-200 dark:border-slate-700 shadow-lg hover:shadow-xl transition-shadow bg-white dark:bg-slate-800",children:[o.jsx(Fo,{className:"pb-3",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:"w-8 h-8 rounded-lg bg-gradient-to-br from-red-500 to-red-600 flex items-center justify-center shadow-lg",children:o.jsx("svg",{className:"w-4 h-4 text-white",fill:"currentColor",viewBox:"0 0 24 24",children:o.jsx("path",{d:"M12 0C5.373 0 0 5.372 0 12 0 17.084 3.163 21.426 7.627 23.174c-.105-.949-.2-2.405.042-3.441.219-.937 1.407-5.965 1.407-5.965s-.359-.719-.359-1.782c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.169 1.777 2.169 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.562-5.418 5.207 0 1.031.397 2.138.893 2.738a.36.36 0 01.083.345l-.333 1.36c-.053.22-.174.267-.402.161-1.499-.698-2.436-2.889-2.436-4.649 0-3.785 2.75-7.262 7.929-7.262 4.163 0 7.398 2.967 7.398 6.931 0 4.136-2.607 7.464-6.227 7.464-1.216 0-2.357-.631-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146C9.57 23.812 10.763 24.001 12 24c6.627 0 12-5.373 12-12 0-6.628-5.373-12-12-12z"})})}),o.jsxs("div",{children:[o.jsx($o,{className:y("text-sm font-bold text-gray-900 dark:text-white",c&&"font-heebo"),children:d?i("settings.integrations.pinterest.title",{ns:"canvas"}):"Pinterest"}),o.jsx(Ls,{className:y("text-xs text-gray-800 dark:text-gray-300 font-medium",c&&"font-heebo"),children:d?i("settings.integrations.pinterest.description",{ns:"canvas"}):"Import inspiration boards and pins into your projects"})]})]}),b?o.jsxs(Ie,{className:y("bg-green-500 text-white px-2 py-1 text-xs font-semibold",c&&"font-heebo"),children:[o.jsx(Es,{className:y("h-3 w-3",c?"ml-1":"mr-1")}),d?i("settings.integrations.pinterest.connected",{ns:"canvas"}):"Connected"]}):o.jsx(Ie,{variant:"outline",className:y("border-gray-300 text-gray-600 px-2 py-1 text-xs font-semibold",c&&"font-heebo"),children:d?i("settings.integrations.pinterest.notConnected",{ns:"canvas"}):"Not Connected"})]})}),o.jsx(ma,{className:"pt-0",children:b?o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between p-3 bg-gray-50 dark:bg-slate-700 rounded-lg",children:[o.jsxs("div",{className:"flex-1",children:[o.jsxs("p",{className:"text-sm font-bold text-black dark:text-white",children:["@",b.pinterest_username]}),o.jsxs("p",{className:"text-xs text-gray-800 dark:text-gray-300 mt-0.5 font-medium",children:[b.board_count," boards • Connected ",new Date(b.connected_at).toLocaleDateString()]})]}),o.jsx("div",{className:"flex-shrink-0 ml-3",children:o.jsx(ee,{variant:"destructive",size:"sm",onClick:Tt,className:y("bg-red-600 hover:bg-red-700 text-white font-medium px-3 py-1.5 text-xs cursor-pointer transition-all duration-200 hover:shadow-md z-10 relative",c&&"font-heebo"),type:"button",children:d?i("settings.integrations.pinterest.disconnect",{ns:"canvas"}):"Disconnect"})})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[o.jsxs("div",{className:"text-center p-3 bg-gradient-to-br from-slate-50 to-slate-100 dar
556k:from-slate-800 dark:to-slate-900 rounded-lg border border-slate-200 dark:border-slate-700",children:[o.jsx("div",{className:"text-lg font-bold text-slate-700 dark:text-slate-200",children:"0"}),o.jsx("div",{className:y("text-xs font-semibold text-slate-600 dark:text-slate-400 mt-0.5",c&&"font-heebo"),children:d?i("settings.integrations.pinterest.pinsImported",{ns:"canvas"}):"Pins Imported"})]}),o.jsxs("div",{className:"text-center p-3 bg-gradient-to-br from-slate-50 to-slate-100 dark:from-slate-800 dark:to-slate-900 rounded-lg border border-slate-200 dark:border-slate-700",children:[o.jsx("div",{className:"text-lg font-bold text-slate-700 dark:text-slate-200",children:"0"}),o.jsx("div",{className:y("text-xs font-semibold text-slate-600 dark:text-slate-400 mt-0.5",c&&"font-heebo"),children:d?i("settings.integrations.pinterest.boardsUsed",{ns:"canvas"}):"Boards Used"})]})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(ee,{variant:"outline",size:"sm",onClick:lt,disabled:_,className:y("border-gray-300 dark:border-slate-600 text-gray-700 dark:text-white hover:bg-gray-50 dark:hover:bg-slate-700 text-xs px-2 py-1",c&&"font-heebo"),children:[o.jsx(ac,{className:y("h-3 w-3 dark:text-white",c?"ml-1":"mr-1")}),d?i("settings.integrations.pinterest.refresh",{ns:"canvas"}):"Refresh"]}),o.jsxs(ee,{variant:"outline",size:"sm",className:y("border-gray-300 dark:border-slate-600 text-gray-700 dark:text-white hover:bg-gray-50 dark:hover:bg-slate-700 text-xs px-2 py-1",c&&"font-heebo"),children:[o.jsx(Co,{className:y("h-3 w-3 dark:text-white",c?"ml-1":"mr-1")}),d?i("settings.integrations.pinterest.import",{ns:"canvas"}):"Import"]}),o.jsxs(ee,{variant:"outline",size:"sm",className:y("border-gray-300 dark:border-slate-600 text-gray-700 dark:text-white hover:bg-gray-50 dark:hover:bg-slate-700 text-xs px-2 py-1",c&&"font-heebo"),children:[o.jsx(Co,{className:y("h-3 w-3 dark:text-white",c?"ml-1":"mr-1")}),d?i("settings.integrations.pinterest.settings",{ns:"canvas"}):"Settings"]})]})]}):o.jsxs("div",{className:"text-center py-4",children:[o.jsx("div",{className:"w-12 h-12 bg-gray-100 dark:bg-slate-700 rounded-full flex items-center justify-center mx-auto mb-3",children:o.jsx("svg",{className:"w-6 h-6 text-gray-400 dark:text-gray-500",fill:"currentColor",viewBox:"0 0 24 24",children:o.jsx("path",{d:"M12 0C5.373 0 0 5.372 0 12 0 17.084 3.163 21.426 7.627 23.174c-.105-.949-.2-2.405.042-3.441.219-.937 1.407-5.965 1.407-5.965s-.359-.719-.359-1.782c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.169 1.777 2.169 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.562-5.418 5.207 0 1.031.397 2.138.893 2.738a.36.36 0 01.083.345l-.333 1.36c-.053.22-.174.267-.402.161-1.499-.698-2.436-2.889-2.436-4.649 0-3.785 2.75-7.262 7.929-7.262 4.163 0 7.398 2.967 7.398 6.931 0 4.136-2.607 7.464-6.227 7.464-1.216 0-2.357-.631-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146C9.57 23.812 10.763 24.001 12 24c6.627 0 12-5.373 12-12 0-6.628-5.373-12-12-12z"})})}),o.jsx("p",{className:y("text-sm text-gray-900 dark:text-white mb-3 font-semibold",c&&"font-heebo"),children:d?i("settings.integrations.pinterest.connectMessage",{ns:"canvas"}):"Connect your Pinterest account to import inspiration"}),o.jsxs(ee,{onClick:Zt,className:y("bg-gradient-to-r from-red-500 to-red-600 hover:from-red-600 hover:to-red-700 text-white px-4 py-2 text-sm font-semibold shadow-lg",c&&"font-heebo"),children:[o.jsx(Co,{className:y("h-4 w-4",c?"ml-1":"mr-1")}),d?i("settings.integrations.pinterest.connect",{ns:"canvas"}):"Connect Pinterest"]})]})})]}),o.jsxs(oa,{className:"mb-4 border-2 border-gray-200 dark:border-slate-700 shadow-lg bg-white dark:bg-slate-800",children:[o.jsx(Fo,{className:"pb-3",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:"w-8 h-8 rounded-lg bg-gradient-to-br from-orange-500 to-red-600 flex items-center justify-center shadow-lg",children:o.jsx(ts,{className:"w-4 h-4 text-white"})}),o.jsxs("div",{children:[o.jsx($o,{className:y("text-sm font-bold text-gray-900 dark:text-white",c&&"font-heebo"),children:"SketchUp MCP"}),o.jsx(Ls,{className:y("text-xs text-gray-800 dark:text-gray-300 font-medium",c&&"font-heebo"),children:qt?c?"חיבור חשבון Trimble/SketchUp שישמש את כל הבילדים (service account)":"Link the Trimble/SketchUp account that powers all builds (service account)":c?"סוכן SketchUp בונה קבצי ‎.skp אמיתיים — מובנה במערכת, אין צורך בחיבור":"The SketchUp agent builds real .skp files — built into Boardspace, no connection needed"})]})]}),!qt||w!=null&&w.connected?o.jsxs(Ie,{className:y("bg-green-500 text-white px-2 py-1 text-xs font-semibold",c&&"font-heebo"),children:[o.jsx(Es,{className:y("h-3 w-3",c?"ml-1":"mr-1")}),qt?c?"מחובר":"Connected":c?"פעיל":"Active"]}):o.jsx(Ie,{variant:"outline",className:y("border-gray-300 text-gray-600 px-2 py-1 text-xs font-semibold",c&&"font-heebo"),children:S?c?"בודק...":"Checking...":c?"לא מחובר":"Not Connected"})]})}),qt&&o.jsx(ma,{className:"pt-0",children:w!=null&&w.connected?o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between p-3 bg-gray-50 dark:bg-slate-700 rounded-lg",children:[o.jsxs("div",{className:"flex-1",children:[o.jsx("p",{className:y("text-sm font-bold text-black dark:text-white",c&&"font-heebo"),children:c?"חשבון Trimble מחובר (service account)":"Trimble service account connected"}),o.jsxs("p",{className:"text-xs text-gray-800 dark:text-gray-300 mt-0.5 font-medium",children:[w.connected_at?`${c?"חובר":"Connected"} ${new Date(w.connected_at).toLocaleDateString()}`:c?"מוכן לשימוש בסוכן SketchUp":"Ready for the SketchUp agent",w.token_expires_at?` • ${c?"תוקף עד":"Token expires"} ${new Date(w.token_expires_at).toLocaleDateString()}`:""]})]}),o.jsxs("div",{className:y("flex flex-shrink-0 gap-2",c?"mr-3":"ml-3"),children:[o.jsxs(ee,{variant:"outline",size:"sm",onClick:pt,disabled:S,className:y("border-gray-300 dark:border-slate-600 text-gray-700 dark:text-white hover:bg-gray-50 dark:hover:bg-slate-700 text-xs px-2 py-1",c&&"font-heebo"),type:"button",children:[o.jsx(Co,{className:y("h-3 w-3 dark:text-white",c?"ml-1":"mr-1")}),c?"חבר מחדש":"Reconnect"]}),o.jsx(ee,{variant:"destructive",size:"sm",onClick:At,disabled:S,className:y("bg-red-600 hover:bg-red-700 text-white font-medium px-3 py-1.5 text-xs cursor-pointer transition-all duration-200 hover:shadow-md z-10 relative",c&&"font-heebo"),type:"button",children:c?"נתק":"Disconnect"})]})]}),o.jsx("div",{className:"flex gap-2",children:o.jsxs(ee,{variant:"outline",size:"sm",onClick:it,disabled:S,className:y("border-gray-300 dark:border-slate-600 text-gray-700 dark:text-white hover:bg-gray-50 dark:hover:bg-slate-700 text-xs px-2 py-1",c&&"font-heebo"),children:[o.jsx(ac,{className:y("h-3 w-3 dark:text-white",c?"ml-1":"mr-1",S&&"animate-spin")}),c?"רענן":"Refresh"]})})]}):o.jsxs("div",{className:"text-center py-4",children:[o.jsx("div",{className:"w-12 h-12 bg-orange-50 dark:bg-slate-700 rounded-full flex items-center justify-center mx-auto mb-3",children:o.jsx(ts,{className:"w-6 h-6 text-orange-500 dark:text-orange-300"})}),o.jsx("p",{className:y("text-sm text-gray-900 dark:text-white mb-3 font-semibold",c&&"font-heebo"),children:c?"חבר את חשבון Trimble שישמש את כל הבילדים — התחבר עם חשבון המנוי":"Link the Trimble account that powers all builds — sign in with the subscription account"}),o.jsxs(ee,{onClick:pt,disabled:S,className:y("bg-gradient-to-r from-orange-500 to-red-600 hover:from-orange-600 hover:to-red-700 text-white px-4 py-2 text-sm font-semibold shadow-lg",c&&"font-heebo"),children:[o.jsx(Co,{className:y("h-4 w-4",c?"ml-1":"mr-1")}),S?c?"בודק...":"Checking...":c?"חבר SketchUp MCP":"Connect SketchUp MCP"]})]})})]}),o.jsx(oa,{className:"border-2 border-gray-200 dark:border-slate-700 shadow-lg bg-white dark:bg-slate-800",children:o.jsx(Fo,{className:"pb-3",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("div",{className:"p-2 bg-gray-100 dark:bg-slate-700 rounded-lg",children:o.jsx(es,{className:"h-4 w-4 text-gray-600 dark:text-gray-400"})}),o.jsxs("div",{children:[o.jsx($o,{className:y("text-sm font-bold text-gray-900 dark:text-white",c&&"font-heebo"),children:d?i("settings.integrations.moreIntegrations.title",{ns:"canvas"}):"More Integrations"}),o.jsx(Ls,{className:y("text-xs text-gray-800 dark:text-gray-300 font-medium",c&&"font-heebo"),children:d?i("settings.integrations.moreIntegrations.description",{ns:"canvas"}):"Instagram, Houzz, and more coming soon"})]})]}),o.jsx(Ie,{className:y("bg-gradient-to-r from-green-500 to-green-600 text-white px-2 py-1 text-xs font-semibold",c&&"font-heebo"),children:d?i("settings.integrations.moreIntegrations.comingSoon",{ns:"canvas"}):"Coming Soon"})]})})})]})}),Gt=()=>{const G=(D,ce,_e)=>{const Re=d?i(`settings.pricing.features.${D}.name`,{ns:"canvas"}):ce,ye=d?i(`settings.pricing.features.${D}.description`,{ns:"canvas"}):_e;return{name:Re,description:ye}},te=D=>D==="free"||D===0?d?i("settings.pricing.free",{ns:"canvas"}):"Free":d?`${D} ${i("settings.tokens",{ns:"canvas",defaultValue:"tokens"})}`:`${D} tokens`;
556return o.jsxs("div",{className:y(g?"space-y-3":"space-y-6"),children:[o.jsxs("div",{children:[o.jsx("h3",{className:y(g?"text-xs mb-1.5":"text-lg mb-3","font-bold text-gray-900 dark:text-white",c&&"font-heebo"),children:d?i("settings.pricing.title",{ns:"canvas"}):"Token Pricing per Call"}),o.jsx("p",{className:y(g?"text-[10px] mb-2":"text-sm mb-4","text-muted-foreground",c&&"font-heebo"),children:d?i("settings.pricing.description",{ns:"canvas"}):"Token costs for each feature when called. No USD costs shown - only token amounts."})]}),o.jsxs("div",{className:y(g?"space-y-2":"space-y-4"),children:[o.jsxs("div",{children:[o.jsx("h4",{className:y(g?"text-xs mb-1.5":"text-md mb-3","font-semibold text-gray-800 dark:text-gray-200",c&&"font-heebo"),children:d?i("settings.pricing.categories.superAgent",{ns:"canvas"}):"Super Agent Features"}),o.jsxs("div",{className:y(g?"space-y-1.5":"space-y-2"),children:[(()=>{const D=G("imageCreator","Image Creator","Generate interior/exterior design images from prompts and complex editing");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-green-50 to-green-100 dark:from-green-900/30 dark:to-green-800/30 rounded-lg border border-green-200 dark:border-green-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-green-600 text-white flex-shrink-0 whitespace-nowrap",c&&"font-heebo"),children:te(2)})]})})(),(()=>{const D=G("sketchToReality","Remove Watermarks","Remove watermarks from images");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-indigo-50 to-indigo-100 dark:from-indigo-900/30 dark:to-indigo-800/30 rounded-lg border border-indigo-200 dark:border-indigo-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-indigo-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(.5)})]})})(),(()=>{const D=G("combineImages","Combine Images","Combine furniture and fixtures (up to 10) into your own image");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-purple-50 to-purple-100 dark:from-purple-900/30 dark:to-purple-800/30 rounded-lg border border-purple-200 dark:border-purple-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-purple-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(2)})]})})(),(()=>{const D=G("agent3d","3D Agent","Generate 3D model from image");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-teal-50 to-teal-100 dark:from-teal-900/30 dark:to-teal-800/30 rounded-lg border border-teal-200 dark:border-teal-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-teal-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(3)})]})})(),(()=>{const D=G("nanoBananaPro","Nano Banana Pro","Google's state-of-the-art image generation and editing model with accurate text and professional controls");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-lime-50 to-lime-100 dar
556k:from-lime-900/30 dark:to-lime-800/30 rounded-lg border border-lime-200 dark:border-lime-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-lime-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(5)})]})})(),(()=>{const D=G("klingO1","Kling O1","Precise image edits with strong reference control (up to 10 images)");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-fuchsia-50 to-fuchsia-100 dark:from-fuchsia-900/30 dark:to-fuchsia-800/30 rounded-lg border border-fuchsia-200 dark:border-fuchsia-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-fuchsia-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(2)})]})})()]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:y(g?"text-xs mb-1.5":"text-md mb-3","font-semibold text-gray-800 dark:text-gray-200",c&&"font-heebo"),children:d?i("settings.pricing.categories.imageFeatures",{ns:"canvas"}):"Image Features"}),o.jsxs("div",{className:y(g?"space-y-1.5":"space-y-2"),children:[(()=>
556{const D=G("removeBackground","Remove Background","AI-powered background removal");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-slate-50 to-slate-100 dark:from-slate-800 dark:to-slate-900 rounded-lg border border-gray-200 dark:border-slate-700 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{variant:"secondary",className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold flex-shrink-0 whitespace-nowrap",c&&"font-heebo"),children:te("free")})]})})(),(()=>{const D=G("upscaleImage","Upscale Image","Enhance image resolution with AI");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-slate-50 to-slate-100 dark:from-slate-800 dark:to-slate-900 rounded-lg border border-gray-200 dark:border-slate-700 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{variant:"secondary",className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold flex-shrink-0 whitespace-nowrap",c&&"font-heebo"),children:te("free")})]})})(),(()=>{const D=G("imageGenerator","Image Generator","Generate images from text prompts");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-emerald-50 to-emerald-100 dark:from-emerald-900/30 dark:to-emerald-800/30 rounded-lg border border-emerald-200 dark:border-emerald-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-emerald-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(.25)})]})})(),(()=>{const D=G("boardspaceEditor","Boardspace Editor","High-fidelity image editing with strong prompt adherence");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-rose-50 to-rose-100 dark:from-rose-900/30 dark:to-rose-800/30 rounded-lg border border-rose-200 dark:border-rose-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-rose-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(1)})]})})(),(()=>{const D=G("designDna","DesignDNA","Extracts your design DNA and curates 10-15 furniture & decor items that perfectly match your aesthetic with color swatches");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-blue-50 to-blue-100 dark:from-blue-900/30 dark:to-blue-800/30 rounded-lg border border-blue-200 dark:border-blue-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-blue-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(2)})]})})(),(()=>{const D=G("kitchenBoard","KitchenBoard","Generates 6 unique material & color palette variations of your kitchen design based on Milan 2024-2025 trends");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-blue-50 to-blue-100 dar
556k:from-blue-900/30 dark:to-blue-800/30 rounded-lg border border-blue-200 dark:border-blue-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-blue-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(2)})]})})(),(()=>{const D=G("styleMatch","StyleMatch","One style, endless rooms. Instant design consistency");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-blue-50 to-blue-100 dark:from-blue-900/30 dark:to-blue-800/30 rounded-lg border border-blue-200 dark:border-blue-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-blue-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(2)})]})})(),(()=>{const D=G("ultraReal","Ultra Real","Generate ultra-realistic photorealistic interior designs with FLUX 1.1 Pro");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-blue-50 to-blue-100 dark:from-blue-900/30 dark:to-blue-800/30 rounded-lg border border-blue-200 dark:border-blue-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-blue-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(2)})]})})()]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:y(g?"text-xs mb-1.5":"text-md mb-3","font-semibold text-gray-800 dark:text-gray-200",c&&"font-heebo"),children:d?i("settings.pricing.categories.videoFeatures",{ns:"canvas"}):"Video Features"}),o.jsxs("div",{className:y(g?"space-y-1.5":"space-y-2"),children:[(()=>{const D=G("video5sNoSound","1 image to video (5s, 720p, No Sound)","Generate 5-second videos from images at 720p quality, no audio");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-purple-50 to-purple-100 dark:from-purple-900/30 dark:to-purple-800/30 rounded-lg border border-purple-200 dark:border-purple-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-purple-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(10)})]})})(),(()=>{const D=G("video5sWithSound","Image to Video with Sound (5s, 480p)","Generate 5-second videos with sound from images at 480p quality");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-purple-50 to-purple-100 dark:from-purple-900/30 dark:to-purple-800/30 rounded-lg border border-purple-200 dark:border-purple-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-purple-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(15)})]})})(),(()=>{const D=G("video10s","10 Sec Video (1080p, With Sound)","Generate 10-second cinematic videos with audio at 1080p quality");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-violet-50 to-violet-100 dar
556k:from-violet-900/30 dark:to-violet-800/30 rounded-lg border border-violet-200 dark:border-violet-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-violet-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(20)})]})})(),(()=>{const D=G("video2Image","2-Image Video","Create 10-second transition videos from 2 images");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-rose-50 to-rose-100 dark:from-rose-900/30 dark:to-rose-800/30 rounded-lg border border-rose-200 dark:border-rose-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-rose-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(15)})]})})(),(()=>{const D=G("grokVideo","Grok Video","Generate 6-30 second AI video from images");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-lime-50 to-lime-100 dark:from-lime-900/30 dark:to-lime-800/30 rounded-lg border border-lime-200 dark:border-lime-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-lime-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(8)})]})})(),(()=>{const D=G("veoVideo","Veo 3.1 Video","High-quality AI video with sound, supports 1-2 images (Google Veo 3.1)");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-sky-50 to-sky-100 dark:from-sky-900/30 dark:to-sky-800/30 rounded-lg border border-sky-200 dark:border-sky-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-sky-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(15)})]})})()]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:y(g?"text-xs mb-1.5":"text-md mb-3","font-semibold text-gray-800 dark:text-gray-200",c&&"font-heebo"),children:d?i("settings.pricing.categories.presentations",{ns:"canvas"}):"Presentations"}),o.jsx("div",{className:y(g?"space-y-1.5":"space-y-2"),children:(()=>{const D=G("priceScan","PriceScan Agent","Generate professional price quote presentations from room images");return o.jsxs("div",{className:y("flex items-center justify-between bg-gradient-to-r from-amber-50 to-amber-100 dark:from-amber-900/30 dark:to-amber-800/30 rounded-lg border border-amber-200 dark:border-amber-800 shadow-sm",g?"p-2":"p-3"),children:[o.jsxs("div",{className:"flex-1 min-w-0 pr-2",children:[o.jsx("div",{className:y(g?"text-xs":"font-medium","text-gray-900 dark:text-white",c&&"font-heebo"),children:D.name}),o.jsx("div",{className:y(g?"text-[10px]":"text-xs","text-gray-600 dark:text-gray-400",c&&"font-heebo"),children:D.description})]}),o.jsx(Ie,{className:y(g?"text-[10px] px-2 py-0.5":"text-sm","font-semibold bg-amber-600 text-white flex-shrink-0 whitespace-nowrap"),children:te(6)})]})})()})]})]})]})},kt=()=>
556o.jsx("div",{className:y(g?"space-y-3":"space-y-6"),children:o.jsx(mI,{})}),Wt=()=>ve?o.jsx(HI,{}):null;return o.jsxs(o.Fragment,{children:[g?o.jsxs("div",{className:"flex flex-col h-full overflow-hidden",children:[o.jsx("div",{className:"flex-1 overflow-y-auto overflow-x-hidden min-h-0 pb-20 px-4 py-4",children:u==="layout"?ht():u==="integrations"?ea():u==="pricing"?Gt():u==="usage"?kt():Wt()}),o.jsx("div",{className:"fixed bottom-0 left-0 right-0 z-50 bg-white dark:bg-[#0E1426] border-t border-slate-200 dark:border-white/10 shadow-lg safe-area-inset-bottom",children:o.jsxs("nav",{className:"flex items-center justify-around px-2 py-2 max-w-screen-md mx-auto",children:[o.jsxs("button",{onClick:()=>p("layout"),className:`flex flex-col items-center justify-center gap-1 px-3 py-2 rounded-xl transition-all duration-200 min-w-[60px] ${u==="layout"?"text-red-600 dark:text-red-400":"text-gray-500 dark:text-gray-400"}`,children:[o.jsx("div",{className:`p-2 rounded-lg transition-all duration-200 ${u==="layout"?"bg-red-100 dark:bg-[#2C1515]":"bg-transparent"}`,children:o.jsx(Wc,{className:`h-5 w-5 ${u==="layout"?"text-red-600 dark:text-red-400":""}`})}),o.jsx("span",{className:`text-[10px] font-semibold ${c?"font-heebo":""}`,children:d?i("settings.tabs.user",{ns:"canvas"}):"User"})]}),o.jsxs("button",{onClick:()=>p("integrations"),className:`flex flex-col items-center justify-center gap-1 px-3 py-2 rounded-xl transition-all duration-200 min-w-[60px] ${u==="integrations"?"text-blue-600 dark:text-blue-400":"text-gray-500 dark:text-gray-400"}`,children:[o.jsx("div",{className:`p-2 rounded-lg transition-all duration-200 ${u==="integrations"?"bg-blue-100 dark:bg-[#15233C]":"bg-transparent"}`,children:o.jsx(es,{className:`h-5 w-5 ${u==="integrations"?"text-blue-600 dark:text-blue-400":""}`})}),o.jsx("span",{className:`text-[10px] font-semibold ${c?"font-heebo":""}`,children:d?i("settings.tabs.integrations",{ns:"canvas"}):"Integrations"})]}),o.jsxs("button",{onClick:()=>p("pricing"),className:`flex flex-col items-center justify-center gap-1 px-3 py-2 rounded-xl transition-all duration-200 min-w-[60px] ${u==="pricing"?"text-purple-600 dark:text-purple-400":"text-gray-500 dark:text-gray-400"}`,children:[o.jsx("div",{className:`p-2 rounded-lg transition-all duration-200 ${u==="pricing"?"bg-purple-100 dark:bg-[#241C35]":"bg-transparent"}`,children:o.jsx(Lm,{className:`h-5 w-5 ${u==="pricing"?"text-purple-600 dark:text-purple-400":""}`})}),o.jsx("span",{className:`text-[10px] font-semibold ${c?"font-heebo":""}`,children:d?i("settings.tabs.pricing",{ns:"canvas"}):"Pricing"})]}),o.jsxs("button",{onClick:()=>p("usage"),className:`flex flex-col items-center justify-center gap-1 px-3 py-2 rounded-xl transition-all duration-200 min-w-[60px] ${u==="usage"?"text-teal-600 dark:text-teal-400":"text-gray-500 dark:text-gray-400"}`,children:[o.jsx("div",{className:`p-2 rounded-lg transition-all duration-200 ${u==="usage"?"bg-teal-100 dark:bg-[#0D2830]":"bg-transparent"}`,children:o.jsx(Pm,{className:`h-5 w-5 ${u==="usage"?"text-teal-600 dark:text-teal-400":""}`})}),o.jsx("span",{className:`text-[10px] font-semibold ${c?"font-heebo":""}`,children:d?i("settings.tabs.usage",{ns:"canvas"}):"Usage"})]}),ve&&o.jsxs("button",{onClick:()=>p("team"),className:`flex flex-col items-center justify-center gap-1 px-3 py-2 rounded-xl transition-all duration-200 min-w-[60px] ${u==="team"?"text-orange-600 dark:text-orange-400":"text-gray-500 dark:text-gray-400"}`,children:[o.jsxs("div",{className:`relative p-2 rounded-lg transition-all duration-200 ${u==="team"?"bg-orange-100 dark:bg-[#2C1814]":"bg-transparent"}`,children:[o.jsx(ts,{className:`h-5 w-5 ${u==="team"?"text-orange-600 dark:text-orange-400":""}`}),oe&&oe.length>0&&o.jsx("span",{className:"absolute -top-1 -right-1 bg-red-500 text-white text-[10px] font-bold rounded-full w-4 h-4 flex items-center justify-center",children:oe.length})]}),o.jsx("span",{className:`text-[10px] font-semibold ${c?"font-heebo":""}`,children:d?i("settings.tabs.team",{ns:"canvas"}):"Team"})]})]})})]}):o.jsxs("div",{className:"flex gap-8 h-full overflow-hidden",children:[o.jsx("div",{className:"w-56 flex-shrink-0",children:o.jsxs("nav",{className:"space-y-3",children:[o.jsxs("button",{onClick:()=>p("layout"),className:`w-full flex items-center gap-4 px-5 py-4 rounded-xl text-left transition-all duration-200 ${u==="layout"?"bg-gradient-to-r from-red-500 to-red-600 text-white shadow-lg":"text-gray-800 dark:text-white hover:bg-gray-50 dark:hover:bg-slate-800 hover:shadow-sm border border-gray-200 dark:border-slate-700"}`,children:[o.jsx("div",{className:`p-2 rounded-lg ${u==="layout"?"bg-white/20":"bg-gray-100 dark:bg-slate-700"}`,children:o.jsx(Wc,{className:`h-5 w-5 ${u==="layout"?"text-white":"text-gray-600 dark:text-white"}`})}),o.jsx("span",{className:`font-semibold text-base ${c?"font-heebo":""}`,children:d?i("settings.tabs.user",{ns:"canvas"}):"User"})]}),o.jsxs("button",{onClick:()=>p("integrations"),className:`w-full flex items-center gap-4 px-5 py-4 rounded-xl text-left transition-all duration-200 ${u==="integrations"?"bg-gradient-to-r from-red-500 to-red-600 text-white shadow-lg":"text-gray-800 dark:text-white hover:bg-gray-50 dark:hover:bg-slate-800 hover:shadow-sm border border-gray-200 dark:border-slate-700"}`,children:[o.jsx("div",{className:`p-2 rounded-lg ${u==="integrations"?"bg-white/20":"bg-gray-100 dark:bg-slate-700"}`,children:o.jsx(es,{className:`h-5 w-5 ${u==="integrations"?"text-white":"text-gray-600 dark:text-white"}`})}),o.jsx("span",{className:`font-semibold text-base ${c?"font-heebo":""}`,children:d?i("settings.tabs.integrations",{ns:"canvas"}):"Integrations"})]}),o.jsxs("button",{onClick:()=>p("pricing"),className:`w-full flex items-center gap-4 px-5 py-4 rounded-xl text-left transition-all duration-200 ${u==="pricing"?"bg-gradient-to-r from-red-500 to-red-600 text-white shadow-lg":"text-gray-800 dark:text-white hover:bg-gray-50 dark:hover:bg-slate-800 hover:shadow-sm border border-gray-200 dark:border-slate-700"}`,children:[o.jsx("div",{className:`p-2 rounded-lg ${u==="pricing"?"bg-white/20":"bg-gray-100 dark:bg-slate-700"}`,children:o.jsx(Lm,{className:`h-5 w-5 ${u==="pricing"?"text-white":"text-gray-600 dark:text-white"}`})}),o.jsx("span",{className:`font-semibold text-base ${c?"font-heebo":""}`,children:d?i("settings.tabs.tokenPricing",{ns:"canvas"}):"Token Pricing"})]}),o.jsxs("button",{onClick:()=>p("usage"),className:`w-full flex items-center gap-4 px-5 py-4 rounded-xl text-left transition-all duration-200 ${u==="usage"?"bg-gradient-to-r from-red-500 to-red-600 text-white shadow-lg":"text-gray-800 dark:text-white hover:bg-gray-50 dark:hover:bg-slate-800 hover:shadow-sm border border-gray-200 dark:border-slate-700"}`,children:[o.jsx("div",{className:`p-2 rounded-lg ${u==="usage"?"bg-white/20":"bg-gray-100 dark:bg-slate-700"}`,children:o.jsx(Pm,{className:`h-5 w-5 ${u==="usage"?"text-white":"text-gray-600 dark:text-white"}`})}),o.jsx("span",{className:`font-semibold text-base ${c?"font-heebo":""}`,children:d?i("settings.tabs.tokenUsage",{ns:"canvas"}):"Token Usage"})]}),ve&&o.jsxs("button",{onClick:()=>p("team"),className:`w-full flex items-center gap-4 px-5 py-4 rounded-xl text-left transition-all duration-200 ${u==="team"?"bg-gradient-to-r from-red-500 to-red-600 text-white shadow-lg":"text-gray-800 dark:text-white hover:bg-gray-50 dark:hover:bg-slate-800 hover:shadow-sm border border-gray-200 dark:border-slate-700"}`,children:[o.jsxs("div",{className:`relative p-2 rounded-lg ${u==="team"?"bg-white/20":"bg-gray-100 dark:bg-slate-700"}`,children:[o.jsx(ts,{className:`h-5 w-5 ${u==="team"?"text-white":"text-gray-600 dark:text-white"}`}),oe&&oe.length>0&&o.jsx("span",{className:`absolute -top-1 -right-1 bg-red-500 text-white text-[10px] font-bold rounded-full w-5 h-5 flex items-center justify-center ${u==="team"?"ring-2 ring-white":""}`,children:oe.length})]}),o.jsxs("span",{className:`font-semibold text-base flex items-center gap-2 ${c?"font-heebo":""}`,children:[d?i("settings.tabs.team",{ns:"canvas"}):"Team",oe&&oe.length>0&&o.jsx("span",{className:"bg-red-500 text-white text-xs font-bold rounded-full px-2 py-0.5",children:oe.length})]})]})]})}),o.jsx("div",{className:"flex-1 overflow-y-auto overflow-x-hidden min-h-0 max-h-full settings-scrollbar px-4 py-4",children:u==="layout"?ht():u==="integrations"?ea():u==="pricing"?Gt():u==="usage"?kt():Wt()})]}),o.jsx(cI,{open:E,onClose:()=>L(!1)}),o.jsx(xn,{open:re,onOpenChange:ge,children:o.jsxs(lr,{className:"bg-white dark:bg-slate-900 border border-gray-200 dark:border-slate-700 shadow-xl rounded-2xl max-w-md",children:[o.jsxs(cr,{children:[o.jsxs(ur,{className:"text-xl font-bold text-gray-900 dark:text-white flex items-center gap-2",children:[M!=null&&M.isOneTime?o.jsx(fu,{className:"h-5 w-5 text-green-600"}):o.jsx(es,{className:"h-5 w-5 text-blue-600"}),M!=null&&M.isOneTime?d?i("settings.billing.subscriptionDialog.purchaseTokenPackage",{ns:"canvas"}):"Purchase Token Package?":M!=null&&M.isNewSubscription?d?i("settings.billing.subscriptionDialog.subscribeToPlan",{ns:"canvas"}):"Subscribe to Plan?":d?i("settings.billing.subscriptionDialog.switchSubscriptionPlan",{ns:"canvas"}):"Switch Subscription Plan?"]}),o.jsx(mr,{className:"text-sm text-gray-600 dark:text-gray-300 pt-2",children:M&&o.jsxs("div",{className:"space-y-4",children:[M.isOneTime?o.jsx("p",{children:c?i("settings.billing.subscriptionDialog.purchaseTokenPackageDescription",{ns:"canvas",planName:M.planName,price:M.price}):o.jsxs(o.Fragment,{children:["Purchase ",o.jsx("strong",{className:"text-gray-900 dark:text-white",children:M.planName})," for ",o.jsxs("strong",{className:"text-gray-900 dark:text-white",children:["$",M.price]}),"."]})}):M.isNewSubscription?o.jsx("p",{children:c?i("settings.billing.subscriptionDialog.subscribeToPlanDescription",{ns:"canvas",planName:we(M.planName),price:M.price}):o.jsxs(o.Fragment,{children:["Subscribe to ",o.jsx("strong",{className:"text-gray-900 dark:text-white",children:M.planName})," plan for ",o.jsxs("strong",{className:"text-gray-900 dark:text-white",children:["$",M.price,"/month"]}),"."]})}):o.jsx("p",{children:c?i("settings.billing.subscriptionDialog.switchPlanDescription",{ns:"canvas",currentPlan:we((z==null?void 0:z.plan_type)||"free"),planName:we(M.planName)}):o.jsxs(o.Fragment,{children:["You currently have a ",o.jsx("strong",{className:"text-gray-900 dark:text-white",children:((z==null?void 0:z.plan_type)||"free").toUpperCase()})," plan. Switching to ",o.jsx("strong",{className:"text-gray-900 dark:text-white",children:M.planName})," will replace your current subscription."]})}),!M.isOneTime&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(Jt,{htmlFor:"coupon-code",className:"text-sm font-medium",children:d?i("settings.billing.subscriptionDialog.couponCode",{ns:"canvas"}):"Coupon Code (Optional)"}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Ft,{id:"coupon-code",placeholder:d?i("settings.billing.subscriptionDialog.enterCouponCode",{ns:"canvas"}):"Enter coupon code",value:Ne,onChange:G=>{We(G.target.value),ze!==null&&(Ze(null),st(0))},onKeyDown:G=>{G.key==="Enter"&&Ne.trim()&&(G.preventDefault(),wt(Ne))},className:ze===!1?"border-red-500":ze===!0?"border-green-500":"",disabled:De}),o.jsx(ee,{type:"button",variant:"outline",onClick:()=>{Ne.trim()&&wt(Ne)},disabled:De||!Ne.trim(),className:"shrink-0",children:De?o.jsxs(o.Fragment,{children:[o.jsx(ac,{className:"h-4 w-4 mr-2 animate-spin"}
556),d?i("settings.billing.subscriptionDialog.validating",{ns:"canvas"}):"Validating..."]}):d?i("settings.billing.subscriptionDialog.redeem",{ns:"canvas"}):"Redeem"})]}),ze===!0&&Ve>0&&!De&&o.jsx("div",{className:"mt-2 p-3 bg-gradient-to-r from-green-50 to-emerald-50 dark:from-green-950/30 dark:to-emerald-950/30 border border-green-200 dark:border-green-800 rounded-lg",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"p-1.5 bg-green-100 dark:bg-green-900/50 rounded-full",children:o.jsx(Es,{className:"h-4 w-4 text-green-600 dark:text-green-400"})}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-semibold text-green-900 dark:text-green-100",children:d?i("settings.billing.subscriptionDialog.couponApplied",{ns:"canvas"}):"Coupon Applied!"}),o.jsx("p",{className:"text-xs text-green-700 dark:text-green-300",children:c?i("settings.billing.subscriptionDialog.discountActive",{ns:"canvas",discount:Ve}):`${Ve}% discount active`})]})]}),o.jsxs("div",{className:y("text-right",c&&"text-left"),children:[o.jsx("p",{className:"text-lg font-bold text-green-600 dark:text-green-400",children:M&&o.jsx(o.Fragment,{children:c?i("settings.billing.subscriptionDialog.savePerMonth",{ns:"canvas",amount:(M.price*Ve/100).toFixed(2)}):`Save $${(M.price*Ve/100).toFixed(2)}/mo`})}),o.jsxs("p",{className:"text-xs text-green-600 dark:text-green-400 line-through",children:["$",M==null?void 0:M.price.toFixed(2)]}),o.jsxs("p",{className:"text-sm font-semibold text-green-700 dark:text-green-300",children:["$",M&&(M.price*(1-Ve/100)).toFixed(2)]})]})]})}),ze===!1&&!De&&o.jsx("div",{className:"mt-2 p-3 bg-red-50 dark:bg-red-950/30 border border-red-200 dark:border-red-800 rounded-lg",children:o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(yw,{className:"h-4 w-4 text-red-600 dark:text-red-400 flex-shrink-0"}),o.jsx("p",{className:"text-sm text-red-700 dark:text-red-300",children:d?i("settings.billing.subscriptionDialog.invalidCoupon",{ns:"canvas"}):"Invalid or expired coupon code. Please check and try again."})]})})]}),o.jsx("div",{className:"bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 rounded-lg p-3",children:o.jsxs("div",{className:"flex items-start gap-2",children:[o.jsx(Is,{className:"h-4 w-4 text-blue-600 dark:text-blue-400 flex-shrink-0 mt-0.5"}),o.jsxs("div",{className:"text-xs text-blue-900 dark:text-blue-100",children:[o.jsx("p",{className:"font-semibold mb-1",children:d?i("settings.billing.subscriptionDialog.whatHappensNext",{ns:"canvas"}):"What happens next:"}),o.jsx("ul",{className:"list-disc list-inside space-y-1",children:M.isOneTime?o.jsxs(o.Fragment,{children:[o.jsx("li",{children:d?i("settings.billing.subscriptionDialog.receiveTokensImmediately",{ns:"canvas",tokens:M.tokens}):`You'll receive ${M.tokens} tokens immediately`}),o.jsx("li",{children:d?i("settings.billing.subscriptionDialog.tokensNeverExpire",{ns:"canvas"}):"Tokens never expire"}),o.jsx("li",{children:d?i("settings.billing.subscriptionDialog.oneTimePayment",{ns:"canvas",price:M.price.toFixed(2)}):`One-time payment of $${M.price.toFixed(2)}`})]}):M.isNewSubscription?o.jsxs(o.Fragment,{children:[o.jsx("li",{children:d?i("settings.billing.subscriptionDialog.subscriptionStartsImmediately",{ns:"canvas"}):"Your subscription will start immediately"}),o.jsx("li",{children:d?i("settings.billing.subscriptionDialog.tokensPerMonth",{ns:"canvas",tokens:M.tokens}):`You'll receive ${M.tokens} tokens per month`}),o.jsx("li",{children:d?i("settings.billing.subscriptionDialog.billedMonthly",{ns:"canvas",price:ze===!0&&Ve>0?(M.price*(1-Ve/100)).toFixed(2):M.price.toFixed(2)}):`Billed monthly at $${ze===!0&&Ve>0?(M.price*(1-Ve/100)).toFixed(2):M.price.toFixed(2)}`})]}):o.jsxs(o.Fragment,{children:[o.jsx("li",{children:d?i("settings.billing.subscriptionDialog.billingAdjustedImmediately",{ns:"canvas"}):"Your billing will be adjusted immediately"}),o.jsx("li",{children:d?i("settings.billing.subscriptionDialog.unusedTokensRollover",{ns:"canvas"}):"Unused tokens will roll over"}),o.jsx("li",{children:d?i("settings.billing.subscriptionDialog.newTokenAllocation",{ns:"canvas",tokens:M.tokens}):`New token allocation: ${M.tokens}/month`})]})})]})]})})]})})]}),o.jsxs(dr,{className:"gap-2",children:[o.jsx(pr,{className:"border-gray-300 dark:border-slate-600 text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-slate-800",children:d?i("settings.billing.subscriptionDialog.cancel",{ns:"canvas"}):"Cancel"}),o.jsx(wn,{className:"bg-gradient-to-r from-blue-600 to-blue-700 hover:from-blue-700 hover:to-blue-800 text-white shadow-lg",onClick:async()=>
556{if(M){const G=!M.isOneTime,te=G?M.price:ze&&Ve>0?M.price*(1-Ve/100):M.price,D=ze&&Ve>0?Ne.trim().toUpperCase():void 0;M.planName;try{await A({planType:M.isOneTime?"one_time":"subscription",planName:M.planName,planPrice:te,tokens:M.tokens,couponCode:D}),Ee(null),We(""),Ze(null),st(0)}catch(ce){console.error("Checkout failed:",ce)}}},children:M!=null&&M.isOneTime?d?i("settings.billing.subscriptionDialog.purchase",{ns:"canvas",planName:(M==null?void 0:M.planName)||""}):`Purchase ${(M==null?void 0:M.planName)||""}`:M!=null&&M.isNewSubscription?d?i("settings.billing.subscriptionDialog.subscribeTo",{ns:"canvas",planName:we((M==null?void 0:M.planName)||"")}):`Subscribe to ${(M==null?void 0:M.planName)||""}`:d?i("settings.billing.subscriptionDialog.yesSwitchTo",{ns:"canvas",planName:we((M==null?void 0:M.planName)||"")}):`Yes, Switch to ${(M==null?void 0:M.planName)||""}`})]})]})})]})}const QI=Object.freeze(Object.defineProperty({__proto__:null,ProjectsHamburgerMenu:Y0,SettingsModalContent:YI},Symbol.toStringTag,{value:"Module"})),JI=({variant:t="default"})=>{var n;const{tokens:e,loading:a,error:i}=Nl(),r=y("flex items-center gap-2 px-4 py-2 rounded-full font-semibold",t==="sage"?"bg-[#D8F36A] text-[#132820]":"bg-gradient-to-r from-yellow-400 to-orange-500 text-white shadow-lg");return a?o.jsxs("div",{className:r,children:[o.jsx(to,{className:"w-5 h-5 animate-spin"}),o.jsx("span",{children:"Loading..."})]}):i?o.jsx("div",{className:"flex items-center gap-2 px-4 py-2 bg-gradient-to-r from-red-400 to-red-500 rounded-full text-white font-semibold shadow-lg",children:o.jsx("span",{children:"Error loading tokens"})}):o.jsxs(Ke,{to:"/billing",className:y(r,"transition-all duration-200 motion-reduce:transition-none",t==="sage"?"hover:bg-[#CBE75A]":"hover:from-yellow-500 hover:to-orange-600 hover:scale-105"),children:[o.jsx($s,{className:"w-5 h-5"}),o.jsx("span",{children:((n=e==null?void 0:e.balance)==null?void 0:n.toFixed(2))??0})]})};function XI(){const{isDark:t}=pa(),{t:e}=$e("dashboard");return o.jsx("header",{className:y("sticky top-0 z-40 border-b backdrop-blur-xl",t?"border-white/5 bg-[#0A0B0F]/80":"border-[#132820]/[0.08] bg-[#F3F5F3]/85"),children:o.jsxs("div",{className:"mx-auto flex h-[78px] max-w-7xl items-center justify-between px-4 md:px-6",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("button",{type:"button",onClick:()=>window.dispatchEvent(new Event("open-projects-menu")),className:y("flex h-11 w-11 items-center justify-center rounded-lg",t?"text-white/70 hover:bg-white/5 hover:text-white":"text-[#132820]/70 hover:bg-[#132820]/5 hover:text-[#132820]"),"aria-label":e("dashboard2.header.projectsMenuAria"),children:o.jsx(Us,{className:"h-5 w-5"})}),o.jsx(Ke,{to:"/dashboard",className:"flex items-center",children:o.jsx("img",{src:t?Ha:vi,alt:"boardspace",className:"h-[69px] w-auto"})})]}),o.jsxs("div",{className:"flex items-center gap-2 md:gap-3",children:[o.jsx("div",{className:"hidden md:flex md:items-center",children:o.jsx(JI,{variant:"sage"})}),o.jsx("button",{type:"button",className:y("relative flex h-11 w-11 items-center justify-center rounded-lg",t?"text-white/70 hover:bg-white/5 hover:text-white":"text-[#132820]/70 hover:bg-[#132820]/5 hover:text-[#132820]"),"aria-label":e("dashboard2.header.notificationsAria"),children:o.jsx(bw,{className:"h-5 w-5"})}),o.jsx(yv,{})]})]})})}function ZI(){const{isDark:t}=pa(),{t:e}=$e("dashboard"),{isRTL:a}=Dt(),i=[{key:"rating",value:"4.9",icon:Rw},{key:"avgTime",value:"37s",icon:xl},{key:"renders",value:"2.4M",icon:on}];return o.jsxs("section",{className:"mx-auto max-w-5xl px-4 pb-2 pt-10 text-center md:pt-12",children:[o.jsxs("h1",{className:y("font-heebo text-[clamp(3.25rem,8vw,6.875rem)] font-black leading-[1.04]",t?"text-[#F3F5F3]":"text-[#132820]"),style:{letterSpacing:a?"-0.04em":"-0.02em"},children:[o.jsx("span",{className:"block",children:e("dashboard2.heroHeadline.line1")}),o.jsxs("span",{className:"mt-2 block",children:[e("dashboard2.heroHeadline.line2Prefix")," ",o.jsx("span",{className:"box-decoration-clone bg-[#D8F36A] px-1 text-[#132820] md:px-2",children:e("dashboard2.heroHeadline.line2Highlight")})]})]}),o.jsx("div",{className:"mt-8 flex items-center justify-center md:mt-9",children:i.map(({key:r,value:n,icon:s},l)=>o.jsxs("div",{className:y("flex items-center gap-2 px-3 sm:gap-3 sm:px-7",l>0&&"border-s",t?"border-white/15 text-[#F3F5F3]":"border-[#132820]/15 text-[#132820]"),children:[o.jsx(s,{className:"hidden h-5 w-5 shrink-0 sm:block",strokeWidth:1.6,"aria-hidden":"true"}),o.jsxs("div",{children:[o.jsx("div",{dir:"ltr",className:"text-base font-bold leading-tight md:text-lg",children:n}),o.jsx("div",{className:y("mt-0.5 text-[10px] sm:text-xs",t?"text-white/60":"text-[#52665B]"),children:e(`dashboard2.heroHeadline.stats.${r}`)})]})]},r))})]})}const e3=m.memo(function({index:e,title:a,subtitle:i,cta:r,icon:n,image:s,accent:l,video:c,disabled:d,onIntent:u,onClick:p}){const{isDark:f}=pa(),{isRTL:h}=Dt(),v=h?eo:Ga;return o.jsxs("button",{type:"button",onClick:p,onPointerEnter:u,onPointerDown:u,onFocus:u,disabled:d,"aria-label":`${a}. ${r}`,className:y("group flex h-full w-full flex-col overflow-hidden rounded-2xl border text-start shadow-[0_4px_20px_rgba(19,40,32,0.04)]","transition-[transform,box-shadow,border-color] duration-200 motion-safe:hover:-translate-y-1 hover:shadow-[0_12px_32px_rgba(19,40,32,0.12)]","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#7B9631] focus-visible:ring-offset-4 motion-reduce:transition-none","disabled:cursor-wait disabled:opacity-60 disabled:hover:translate-y-0",f?"border-white/10 bg-[#1C2923]":"border-[#132820]/10 bg-white"),children:[o.jsxs("div",{className:"relative aspect-[3/2] w-full overflow-hidden bg-[#DDE6DC]","aria-hidden":"true",children:[o.jsx("img",{src:s,alt:"",width:1536,height:1024,loading:e===1?"eager":"lazy",decoding:"async",className:"h-full w-full object-cover transition-transform duration-500 motion-safe:group-hover:scale-[1.035] motion-reduce:transition-none"}),o.jsx("span",{className:"absolute end-3 top-3 rounded-md bg-[#132820]/65 px-2 py-1 font-mono text-sm font-semibold tabular-nums text-white backdrop-blur-sm",children:String(e).padStart(2,"0")}),l&&o.jsx("div",{className:"absolute left-[37%] top-[3%] h-[49%] w-[26%] border border-dashed border-[#D8F36A]",children:["-left-1 -top-1","-right-1 -top-1","-left-1 -bottom-1","-right-1 -bottom-1"].map(g=>o.jsx("span",{className:y("absolute h-2 w-2 bg-[#D8F36A]",g)},g))}),c&&o.jsx("span",{className:"absolute inset-0 flex items-center justify-center",children:o.jsx("span",{className:"flex h-14 w-14 items-center justify-center rounded-full bg-white/95 text-[#132820] shadow-lg",children:o.jsx(Bn,{className:"h-6 w-6 fill-current"})})})]}),o.jsxs("div",{className:y("flex w-full flex-1 flex-col gap-3 p-4 md:p-5",l?"bg-[#D8F36A] text-[#132820]":f?"text-[#F3F5F3]":"text-[#132820]"),children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("span",{role:"heading","aria-level":3,className:"min-w-0 flex-1 text-[25px] font-black leading-[1.1] tracking-[-0.035em]",children:a}),o.jsx("span",{className:y("flex h-10 w-10 shrink-0 items-center justify-center rounded-xl",l?"bg-white/45":f?"bg-white/10":"border border-[#132820]/5 bg-white shadow-sm"),"aria-hidden":"true",children:o.jsx(n,{className:"h-5 w-5",strokeWidth:2})})]}),o.jsx("p",{className:y("text-xs leading-relaxed",l?"text-[#132820]/75":f?"text-white/65":"text-[#52665B]"),children:i}),o.jsxs("div",{className:"mt-auto flex items-center justify-between gap-2 pt-1 text-xs font-semibold",children:[o.jsx("span",{children:r}),o.jsx("span",{className:y("flex h-9 w-9 items-center justify-center rounded-full",l?"bg-[#132820] text-[#D8F36A]":f?"bg-white/10":"bg-[#E5EBE6]"),"aria-hidden":"true",children:o.jsx(v,{className:"h-4 w-4"})})]})]})]})});function t3({feature:t,onDismiss:e}){const a=t!==null,{t:i}
556=$e("dashboard"),{isRTL:r}=Dt(),{isDark:n}=pa(),s=t==="boardstyler"?"dashboard2.heroCards.desktopOnly.boardstyler":t==="studio"?"dashboard2.heroCards.desktopOnly.studio":t==="videoEditor"?"dashboard2.heroCards.desktopOnly.videoEditor":null;return o.jsx(Si,{open:a,onOpenChange:l=>{l||e()},children:o.jsxs(Uu,{children:[o.jsx(Pl,{className:y("z-[10000] bg-[#182137]/55 backdrop-blur-md","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0")}),o.jsxs(lo,{dir:r?"rtl":"ltr",className:y("fixed left-[50%] top-[50%] z-[10001] w-[calc(100%-2rem)] max-w-md translate-x-[-50%] translate-y-[-50%]","rounded-2xl border p-6 shadow-[0_24px_70px_rgba(24,33,55,0.22)] duration-200","font-heebo text-[#182137] focus:outline-none","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",n?"border-white/10 bg-[#141416] text-white":"border-[#182137]/10 bg-[#F7F4EF]"),onOpenAutoFocus:l=>l.preventDefault(),children:[o.jsx("button",{type:"button",onClick:e,className:y("absolute top-4 grid h-11 w-11 place-items-center rounded-full transition-colors",r?"left-4":"right-4",n?"text-white/45 hover:bg-white/8 hover:text-white":"text-[#182137]/45 hover:bg-[#182137]/5 hover:text-[#182137]"),"aria-label":i("dashboard2.heroCards.desktopOnly.closeAria"),children:o.jsx(Et,{className:"h-5 w-5",strokeWidth:2.2})}),o.jsxs("div",{className:"flex flex-col items-center gap-5 pt-1 text-center",children:[o.jsx("div",{className:y("flex h-16 w-16 items-center justify-center rounded-2xl",n?"bg-white/[0.08]":"bg-white shadow-[0_2px_8px_rgba(24,33,55,0.12)]"),children:o.jsx(Wc,{className:y("h-8 w-8",n?"text-white":"text-[#182137]"),strokeWidth:2.2})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(Ci,{className:y("px-2 text-2xl font-black tracking-[-0.03em]",n?"text-white":"text-[#182137]"),children:s?i(`${s}.title`):""}),o.jsx(Al,{className:y("px-1 text-[15px] leading-relaxed",n?"text-white/65":"text-[#182137]/70"),children:s?i(`${s}.body`):""})]}),o.jsx("button",{type:"button",onClick:e,className:y("mt-1 w-full min-h-12 rounded-xl px-6 py-3 text-sm font-semibold text-white transition-colors","bg-[#182137] hover:bg-[#0E1423]"),children:s?i(`${s}.cta`):""})]})]})]})})}const a3="/assets/canvas-B6T0aI2u.webp",i3="/assets/boardstyler-BKq4iIYC.webp",o3="/assets/studio-BQMTPea4.webp",r3="/assets/video-editor-DKJxTS9w.webp",n3=(t,e)=>{const a=t==="he"?"he-IL":t==="it"?"it-IT":"en-US",i=new Date().toLocaleString(a,{dateStyle:"short",timeStyle:"short"});return`${e} · ${i}`};function Q0(){const{user:t}=Pt(),{locale:e}=Dt(),{t:a}=$e("dashboard"),i=Vt(),r=yr(),[n,s]=m.useState(!1);return{createBlank:m.useCallback(async c=>{if(!t)return le.error(a("dashboard2.projects.loginRequired")),i("/auth"),null;s(!0);try{const{data:d,error:u}=await V.from("canvas_docs_konva").insert({title:n3(e,a("dashboard2.projects.boardPrefix")),owner_id:t.id}).select("id").single();if(u||!d)throw u??new Error("Insert returned no row");r.invalidateQueries({queryKey:["my-canvases",t.id]});const p=new URLSearchParams;c!=null&&c.workflowId&&p.set("workflow",c.workflowId),c!=null&&c.openWorkflows&&p.set("openWorkflows","true"),c!=null&&c.launchWorkflowId&&p.set("launchWorkflow",c.launchWorkflowId);const f=p.toString();return i(`/canvas/${d.id}${f?`?${f}`:""}`),d.id}catch(d){return console.error("[useCreateBlankCanvas] failed:",d),le.error((d==null?void 0:d.message)||a("dashboard2.projects.createFailed")),null}finally{s(!1)}},[e,i,r,a,t]),creating:n}}let s3=null,l3=null;const Uh=()=>{s3||(s3=H(()=>import("./FloorplanEditor-BSRd8yaP.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45])))},Dc=()=>{l3||(l3=H(()=>import("./Kling3Workspace-CKmunxrP.js").then(t=>t.K),__vite__mapDeps([46,1,2,47,48,44,49,26,3,4,5,25,24,27,40,33,41,50,51,31,8,29,10,20,52,34,53])))};function c3(){const t=Vt(),{createBlank:e,creating:a}=Q0(),{t:i}=$e("dashboard"),r=Gn(),[n,s]=m.useState(null);m.useEffect(()=>{if(r)return;let f=!1;const h=[],v=window,g=()=>{f||(Uh(),h.push(window.setTimeout(Dc,900)))},b=v.requestIdleCallback?v.requestIdleCallback(g,{timeout:1200}):window.setTimeout(g,600);return()=>{f=!0,v.cancelIdleCallback&&v.requestIdleCallback?v.cancelIdleCallback(b):window.clearTimeout(b),h.forEach(x=>window.clearTimeout(x))}},[r]);const l=m.useCallback(()=>{e()},[e]),c=m.useCallback(()=>
556{if(r){s("boardstyler");return}t("/floorplan-editor")},[r,t]),d=m.useCallback(()=>{if(r){s("studio");return}t("/kling3-workspace")},[r,t]),u=m.useCallback(()=>{if(r){s("videoEditor");return}t("/kling3-workspace?open=video-editor")},[r,t]),p=m.useMemo(()=>[{id:"create-alone",title:i("dashboard2.heroCards.cards.createAlone.title"),subtitle:i("dashboard2.heroCards.cards.createAlone.subtitle"),cta:i("dashboard2.heroCards.cards.createAlone.cta"),icon:nn,accent:!0,image:a3,onClick:l},{id:"boardstyler",title:i("dashboard2.heroCards.cards.boardstyler.title"),subtitle:i("dashboard2.heroCards.cards.boardstyler.subtitle"),cta:i("dashboard2.heroCards.cards.boardstyler.cta"),icon:Sf,image:i3,onIntent:Uh,onClick:c},{id:"studio",title:i("dashboard2.heroCards.cards.studio.title"),subtitle:i("dashboard2.heroCards.cards.studio.subtitle"),cta:i("dashboard2.heroCards.cards.studio.cta"),icon:$i,image:o3,video:!0,onIntent:Dc,onClick:d},{id:"video-editor",title:i("dashboard2.heroCards.cards.videoEditor.title"),subtitle:i("dashboard2.heroCards.cards.videoEditor.subtitle"),cta:i("dashboard2.heroCards.cards.videoEditor.cta"),icon:Ew,image:r3,onIntent:Dc,onClick:u}],[c,l,u,d,i]);return o.jsxs("section",{className:"mx-auto max-w-7xl px-4 pt-10 md:px-6 md:pt-12",children:[o.jsx(t3,{feature:n,onDismiss:()=>s(null)}),o.jsx("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",children:p.map((f,h)=>o.jsx(e3,{index:h+1,title:f.title,subtitle:f.subtitle,cta:f.cta,icon:f.icon,image:f.image,video:f.video,accent:f.accent,disabled:f.id==="create-alone"&&a,onIntent:f.onIntent,onClick:f.onClick},f.id))})]})}function d3({name:t,description:e,tokenCost:a,badge:i,preview:r,isRTL:n=!1,onClick:s}){const{isDark:l}=pa(),{t:c}=$e("dashboard"),d=c("dashboard2.workflows.tokensLabel"),u=c("dashboard2.workflows.startCta");return o.jsxs("button",{type:"button",onClick:s,dir:n?"rtl":"ltr",className:y("group relative w-[280px] shrink-0 snap-start overflow-hidden rounded-[22px] border transition-all hover:-translate-y-1 md:w-[330px]",n?"text-right":"text-left",l?"border-white/10 bg-[#141416] hover:border-white/20 hover:bg-[#1A1A1B] hover:shadow-[0_16px_42px_rgba(0,0,0,0.35)]":"border-[#182137]/10 bg-white shadow-[0_8px_28px_rgba(24,33,55,0.07)] hover:border-[#182137]/22 hover:shadow-[0_16px_42px_rgba(24,33,55,0.12)]"),children:[o.jsxs("div",{className:y("relative aspect-video overflow-hidden",l?"bg-[#0A0A0A]":"bg-[#E8E3DB]"),children:[r?r.type==="video"?o.jsx("video",{src:r.url,poster:r.poster,muted:!0,loop:!0,autoPlay:!0,playsInline:!0,preload:"metadata",className:"h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"}):o.jsx("img",{src:r.url,alt:"",loading:"lazy",className:"h-full w-full object-cover transition-transform duration-500 group-hover:scale-105"}):o.jsx("div",{className:y("flex h-full w-full items-center justify-center text-xs",l?"text-white/30":"text-[#182137]/35"),children:"preview"}),o.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-black/74 via-black/12 to-transparent"}),i&&o.jsx("div",{className:"absolute start-4 end-4 top-4 flex justify-end",dir:n?"rtl":"ltr",children:o.jsx("span",{className:"rounded-full bg-[#DE735E] px-3 py-1 text-[11px] font-bold tracking-[-0.01em] text-white",children:i})}),o.jsx("span",{className:"absolute bottom-4 end-4 grid h-12 w-12 place-items-center rounded-full bg-white text-[#182137] shadow-[0_12px_30px_rgba(0,0,0,0.22)]",children:o.jsx(Bn,{className:"h-5 w-5 fill-current"})})]}),o.jsxs("div",{className:y("p-5",l&&"border-t border-white/[0.08]"),children:[o.jsx("h3",{className:y("truncate text-[21px] font-black tracking-[-0.02em]",l?"text-white":"text-[#182137]"),children:t}),o.jsx("p",{className:y("mt-2 line-clamp-2 min-h-[3em] text-[15px] font-semibold leading-snug tracking-[-0.01em]",l?"text-white/55":"text-[#182137]/56"),children:e}),o.jsx("div",{className:"mt-5 flex w-full items-center justify-between gap-4",children:n?o.jsxs(o.Fragment,{children:[o.jsxs("span",{className:y("text-sm font-black tracking-[-0.01em]",l?"text-[#F36A2D]":"text-[#D85D43]"),children:[u,o.jsx("span",{className:"pe-1","aria-hidden":!0,
556children:"←"})]}),o.jsxs("span",{className:y("shrink-0 rounded-lg px-3 py-1.5 text-[11px] font-bold tracking-[-0.01em]",l?"bg-[#2A2B2D] text-white/80":"bg-[#182137]/[0.07] text-[#182137]/72"),children:[a," ",d]})]}):o.jsxs(o.Fragment,{children:[o.jsxs("span",{className:y("rounded-lg px-3 py-1.5 text-[11px] font-bold tracking-[-0.01em]",l?"bg-[#2A2B2D] text-white/80":"bg-[#182137]/[0.07] text-[#182137]/72"),children:[a," ",d]}),o.jsxs("span",{className:y("text-sm font-black tracking-[-0.01em]",l?"text-[#F36A2D]":"text-[#D85D43]"),children:[u,o.jsx("span",{className:"ps-1","aria-hidden":!0,children:"→"})]})]})})]})]})}const u3=[...qu].reverse();function m3(){const t=m.useRef(null),{createBlank:e,creating:a}=Q0(),{isDark:i}=pa(),{t:r}=$e("dashboard"),{isRTL:n}=Dt(),[s,l]=m.useState(0),[c,d]=m.useState(!1),u=m.useCallback(()=>{const g=t.current;if(!g)return;const b=g.scrollWidth-g.clientWidth;if(b<=0){l(0),d(!1);return}d(!0),l(g.scrollLeft/b*100)},[]);m.useEffect(()=>{const g=t.current;if(!g)return;u();const b=new ResizeObserver(()=>{requestAnimationFrame(u)});return b.observe(g),()=>b.disconnect()},[u]);const p=g=>{const b=t.current;if(!b)return;const x=b.scrollWidth-b.clientWidth;if(x<=0)return;const w=b.clientWidth*.75,k=g==="next"?b.scrollLeft+w:b.scrollLeft-w;b.scrollTo({left:Math.max(0,Math.min(x,k)),behavior:"smooth"})},f=g=>{const b=t.current;if(!b)return;const x=b.scrollWidth-b.clientWidth;x<=0||(l(g),b.scrollTo({left:g/100*x,behavior:"smooth"}))},h=async g=>{a||await e({workflowId:g})},v=y("flex h-9 w-9 items-center justify-center rounded-lg border transition-colors",i?"border-white/10 bg-white/[0.03] text-white/70 hover:bg-white/[0.08] hover:text-white":"border-[#182137]/10 bg-white text-[#182137]/70 hover:bg-[#182137]/[0.04] hover:text-[#182137] shadow-[0_2px_8px_rgba(24,33,55,0.05)]");return o.jsxs("section",{className:"mx-auto max-w-7xl px-4 pt-24 md:px-6 md:pt-36",children:[o.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("span",{className:vN(i),children:qu.length}),o.jsx("h2",{className:Xu(i),children:r("dashboard2.workflows.title")}),o.jsx(oi,{className:y("h-4 w-4",i?"text-[#F36A2D]":"text-[#EC7357]")})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("button",{type:"button",onClick:()=>p("prev"),className:v,"aria-label":r("dashboard2.workflows.prevAria"),children:n?o.jsx(an,{className:"h-4 w-4"}):o.jsx(zs,{className:"h-4 w-4"})}),o.jsx("button",{type:"button",onClick:()=>p("next"),className:v,"aria-label":r("dashboard2.workflows.nextAria"),children:n?o.jsx(zs,{className:"h-4 w-4"}):o.jsx(an,{className:"h-4 w-4"})})]})]}),o.jsx("div",{ref:t,dir:"ltr",onScroll:u,style:{WebkitOverflowScrolling:"touch"},className:"flex w-full touch-pan-x snap-x snap-mandatory flex-row gap-4 overflow-x-auto scroll-smooth overscroll-x-contain pb-1 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:u3.map(g=>o.jsx(d3,{name:n?g.nameHe:r(`workflows.templates.${g.id}.name`,{defaultValue:g.nameEn}),description:n?g.descriptionHe:r(`workflows.templates.${g.id}.description`,{defaultValue:g.descriptionEn}),tokenCost:g.tokenCost,badge:g.badge,preview:Sv(g.id),isRTL:n,onClick:()=>
556h(g.id)},g.id))}),o.jsx("div",{className:"mt-2 flex min-h-11 w-full items-center sm:mt-3 sm:min-h-0",dir:"ltr",children:o.jsx("input",{type:"range",min:0,max:100,step:.5,value:Number.isFinite(s)?s:0,disabled:!c,"aria-label":r("dashboard2.workflows.sliderAria"),onChange:g=>f(Number(g.target.value)),className:y("h-2.5 w-full cursor-pointer py-3 sm:py-0 disabled:cursor-not-allowed disabled:opacity-30",i?"accent-[#F36A2D] opacity-80 hover:opacity-100":"accent-[#EC7357]")})})]})}function p3(t,e){if(t==="youtube"){const i=encodeURIComponent(e);return`https://www.youtube.com/embed/${i}?autoplay=1&mute=1&loop=1&playlist=${i}&controls=0&modestbranding=1&rel=0&playsinline=1`}return`https://www.veed.io/embed/${encodeURIComponent(e)}?watermark=0&sharing=0&title=0&autoplay=1&loop=1&controls=0&muted=1`}let _s=0;const h3=2;function g3({platform:t,videoId:e,title:a,className:i,paused:r=!1}){const[n,s]=m.useState(!1),l=m.useRef(null),c=m.useRef(null);m.useEffect(()=>{const u=l.current;if(!u||n)return;let p=!1;const f=new IntersectionObserver(h=>{h.forEach(v=>{if(v.isIntersecting&&!n&&!p){p=!0;const g=()=>{_s<h3?(_s++,c.current=setTimeout(()=>{s(!0),setTimeout(()=>{_s=Math.max(0,_s-1)},1500)},150)):c.current=setTimeout(g,400)};g(),f.unobserve(u)}})},{rootMargin:"150px",threshold:.1});return f.observe(u),()=>{c.current&&clearTimeout(c.current),f.disconnect()}},[n,e]);const d=n&&!r?p3(t,e):void 0;return o.jsx("div",{ref:l,className:"absolute inset-0 w-full h-full",children:n&&!r?o.jsx("iframe",{src:d,title:a,className:i?`absolute inset-0 w-full h-full pointer-events-none ${i}`:"absolute inset-0 w-full h-full pointer-events-none",allow:"autoplay; encrypted-media; picture-in-picture",referrerPolicy:"no-referrer",loading:"lazy"}):o.jsx("div",{className:"absolute inset-0 w-full h-full bg-gradient-to-br from-gray-200 to-gray-300 dark:from-gray-700 dark:to-gray-800 animate-pulse"})})}const f3=Gu.filter(t=>!!t.videoId).slice(0,4);function b3(t,e=!0){return _r(t)==="youtube"?`https://www.youtube.com/embed/${t.videoId}?rel=0&modestbranding=1${e?"&autoplay=1":""}`:`https://www.veed.io/embed/${t.videoId}?watermark=0&sharing=0&title=0&autoplay=${e?"1":"0"}&loop=0&controls=1&muted=0`}function v3(){const{isDark:t}=pa(),{t:e}=$e("dashboard"),[a,i]=m.useState(null),[r,n]=m.useState(null);return o.jsxs("section",{className:"mx-auto max-w-7xl px-4 pt-24 md:px-6 md:pt-36",children:[o.jsxs("div",{className:"mb-4 flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx("span",{className:y("flex h-7 w-7 items-center justify-center rounded-md",t?"bg-[#F36A2D]/15 text-[#F36A2D]":"bg-[#EC7357]/15 text-[#D84B2E]"),children:o.jsx(zn,{className:"h-4 w-4"})}),o.jsx("h2",{className:Xu(t),children:e("dashboard2.academy.title")}),o.jsx("span",{className:fN(t),children:e("dashboard2.academy.meta")})]}),o.jsxs("a",{href:"/academy/videos",className:bN(t),children:[e("dashboard2.academy.allVideos")," →"]})]}),o.jsx("div",{className:"grid grid-cols-2 gap-3 md:grid-cols-4",children:f3.map(s=>o.jsx(y3,{video:s,isHovered:r===s.id,onHoverStart:()=>n(s.id),onHoverEnd:()=>n(null),onClick:()=>i(s),modalOpen:!!a,displayTitle:e(`dashboard2.academy.videoTitles.${s.id}`,{defaultValue:s.title})},s.id))}),o.jsx(x3,{video:a,onClose:()=>i(null)})]})}function y3({video:t,isHovered:e,onHoverStart:a,onHoverEnd:i,onClick:r,modalOpen:n,displayTitle:s}){const{isDark:l}=pa(),{t:c}=$e("dashboard"),d=_r(t),u=Nv[t.id];return o.jsxs("button",{type:"button",onClick:r,onMouseEnter:a,onMouseLeave:i,className:y("group relative overflow-hidden rounded-2xl border text-right transition-all",l?"border-white/10 bg-[#141416] hover:border-white/25":"border-[#182137]/16 bg-white shadow-[0_1px_2px_rgba(24,33,55,0.06),0_4px_14px_rgba(24,33,55,0.07)] hover:border-[#182137]/24 hover:shadow-[0_8px_24px_rgba(24,33,55,0.11)]"),children:[o.jsxs("div",{className:y("relative w-full overflow-hidden",!l&&"ring-1 ring-inset ring-[#182137]/10"),style:{paddingTop:"56.25%"},children:[u?o.jsx(u,{isDark:l}):o.jsx(jv,{video:t,className:"absolute inset-0 h-full w-full object-cover"}),e&&o.jsx(g3,{platform:d,videoId:t.videoId,title:s,paused:n}),o.jsx("div",{className:y("absolute inset-0 flex items-center justify-center transition-colors",e?"bg-black/20":"bg-transparent"),children:o.jsx("div",{className:y("flex h-12 w-12 items-center justify-center rounded-full shadow-xl transition-all",e?"bg-white text-[#D84B2E] scale-110":"bg-white/90 text-[#D84B2E] opacity-0 group-hover:opacity-100"),children:o.jsx(Bn,{className:"h-5 w-5 fill-current ms-0.5"})})}
556),o.jsx("span",{className:y("absolute top-2 right-2 rounded-md px-2 py-0.5 text-[10px] font-mono font-bold backdrop-blur",l?"bg-white/10 text-white":"bg-[#182137]/90 text-white"),children:Cv(t)?c("dashboard2.academy.lessonLabel",{id:t.id}):c("dashboard2.academy.generalLabel")})]}),o.jsx("div",{className:y("p-3",!l&&"border-t border-[#182137]/10 bg-[#FAF8F5]"),children:o.jsx("h4",{className:y("line-clamp-1 text-sm font-semibold",l?"text-white":"text-[#182137]"),children:s})})]})}function x3({video:t,onClose:e}){const{t:a}=$e("dashboard");return o.jsx(Si,{open:!!t,onOpenChange:i=>!i&&e(),children:o.jsxs(mo,{className:"max-w-4xl w-[92vw] border-0 bg-black p-0 overflow-hidden",onPointerDownOutside:e,children:[o.jsx(Ci,{className:"sr-only",children:(t==null?void 0:t.title)??a("dashboard2.academy.modalTitle")}),t&&o.jsxs("div",{className:"relative bg-black",children:[o.jsx("button",{type:"button",onClick:e,className:"absolute top-3 right-3 z-10 flex h-9 w-9 items-center justify-center rounded-full bg-white/15 text-white backdrop-blur transition-colors hover:bg-white/25","aria-label":a("dashboard2.academy.closeAria"),children:o.jsx(Et,{className:"h-5 w-5"})}),o.jsx("div",{className:"relative w-full",style:{paddingTop:"56.25%"},children:o.jsx("iframe",{src:b3(t,!0),title:t.title,className:"absolute inset-0 h-full w-full border-0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen",allowFullScreen:!0},t.id)})]})]})})}const w3=[{id:"d2-pinned-01",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/19411c0d683ff4a7.mp4",type:"video",aspect:"9/16",tag:"hot"},{id:"d2-18",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/3392d7513b7798c2.mp4",type:"video",aspect:"16/9",tag:"hot"},{id:"d2-29",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/7c16bb3b6e077b66.mp4",type:"video",aspect:"16/9"},{id:"d2-41",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/a9fff06eadf8074e.mp4",type:"video",aspect:"9/16"},{id:"d2-39",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/1b77137a695efd37.mp4",type:"video",aspect:"16/9"},{id:"d2-38",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/c1c902a4f4d30b15.mp4",type:"video",aspect:"16/9",tag:"trending"},{id:"d2-27",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/32cae40a6c4d6f67.mp4",type:"video",aspect:"9/16"},{id:"d2-19",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/a7100433193205a6.mp4",type:"video",aspect:"16/9"},{id:"d2-33",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/d9d98f1821eda1b0.mp4",type:"video",aspect:"16/9"},{id:"d2-42",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/bb155d31f32cad14.mp4",type:"video",aspect:"1/1",tag:"live"},{id:"d2-37",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/34c0154831a6dd27.mp4",type:"video",aspect:"16/9"},{id:"d2-06",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/6ccf6450514f53c5.mp4",type:"video",aspect:"16/9"},{id:"d2-05",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/1c0b0315af03a95f.mp4",type:"video",aspect:"16/9"},{id:"d2-21",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/026f62684d8bf905.mp4",type:"video",aspect:"4/5",tag:"new"},{id:"d2-15",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/412e3e85c8fbca35.mp4",type:"video",aspect:"16/9"},{id:"d2-09",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/a47f7c2f7cb1f2b7.mp4",type:"video",aspect:"16/9"},{id:"d2-14",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/8278caefc6954a08.mp4",type:"video",aspect:"9/16",tag:"live"},{id:"d2-40",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/a1c85d24da187271.mp4",type:"video",aspect:"16/9"},{id:"d2-35",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/57ea249f66ec33b4.mp4",type:"video",aspect:"16/9",tag:"new"},{id:"d2-20",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/35afb6411afe6493.mp4",type:"video",aspect:"9/16"},{id:"d2-36",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/6518b6e5f1b62d31.mp4",type:"video",aspect:"16/9"},{id:"d2-02",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/ee213a7ffa200df2.mp4",type:"video",aspect:"16/9"},{id:"d2-30",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/d87785d3914ed7be.mp4",type:"video",aspect:"16/9"},{id:"d2-07",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/63b1781373ae3c73.mp4",type:"video",aspect:"1/1",tag:"new"},{id:"d2-03",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/acd04cada895e745.mp4",type:"video",aspect:"16/9"},{id:"d2-28",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/9fd0bd81e76f0d60.mp4",type:"video",aspect:"16/9",tag:"live"},{id:"d2-11",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/344af15860c8c118.mp4",type:"video",aspect:"1/1"},{id:"d2-32",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/bfb1564417e356d8.mp4",type:"video",aspect:"16/9",tag:"hot"},{id:"d2-10",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/5a8d5818b9359663.mp4",type:"video",aspect:"16/9",tag:"trending"},{id:"d2-24",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/9185ea6a3b9f2f39.mp4",type:"video",aspect:"9/16",tag:"trending"},{id:"d2-23",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/1b6bac36334e0
556db1.mp4",type:"video",aspect:"16/9"},{id:"d2-08",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/71bae3807184fa82.mp4",type:"video",aspect:"16/9"},{id:"d2-12",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/8c708ea8b44e84fb.mp4",type:"video",aspect:"9/16"},{id:"d2-04",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/4afc5d4e5b7bb482.mp4",type:"video",aspect:"16/9",tag:"hot"},{id:"d2-31",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/447f9a432923536b.mp4",type:"video",aspect:"16/9"},{id:"d2-25",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/17a04f9547ad9de1.mp4",type:"video",aspect:"4/5"},{id:"d2-17",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/2746bb98ac5ec0f8.mp4",type:"video",aspect:"16/9"},{id:"d2-01",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/4e5498d62f22fd52.mp4",type:"video",aspect:"16/9"},{id:"d2-43",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/d59da8d4460dd3b0.mp4",type:"video",aspect:"1/1"},{id:"d2-26",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/ed31c092fe98ecc9.mp4",type:"video",aspect:"16/9"},{id:"d2-13",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/ec5faf11c82cc52c.mp4",type:"video",aspect:"16/9"},{id:"d2-22",url:"https://kibuqatinwtuqlzmryvx.supabase.co/storage/v1/object/public/canvas-assets/dashboard2-videos/bec62be426e94a41.mp4",type:"video",aspect:"3/4"}],k3=3,Vo=new Map;let _3=1,Rc=!1;function Lc(){Rc||(Rc=!0,Promise.resolve().then(()=>{Rc=!1,S3()}))}function S3(){if(Vo.size===0)return;const t=[...Vo.values()].filter(a=>a.ratio>0).sort((a,i)=>i.ratio-a.ratio||a.id-i.id),e=new Set;for(let a=0;a<Math.min(k3,t.length);a++)e.add(t[a].id);for(const a of Vo.values()){const i=e.has(a.id);i!==a.allowed&&(a.allowed=i,a.notify(i))}}function C3(t){const[e,a]=m.useState(!1),i=m.useRef(null);return m.useEffect(()=>{const r=_3++;return i.current=r,Vo.set(r,{id:r,ratio:t,allowed:!1,notify:a}),Lc(),()=>{Vo.delete(r),i.current=null,Lc()}},[]),m.useEffect(()=>{const r=i.current;if(r==null)return;const n=Vo.get(r);!n||n.ratio===t||(n.ratio=t,Lc())},[t]),{allowedToPlay:e}}const T3={"9/16":"aspect-[9/16]","16/9":"aspect-video","1/1":"aspect-square","4/5":"aspect-[4/5]","3/4":"aspect-[3/4]"},j3=[0,.05,.25,.5,.75,1];function qh(t){return Ju(t,{width:700,quality:78,format:"webp",fit:"scale-down"})}function N3({url:t,type:e,aspect:a="1/1",poster:i,className:r,rounded:n="rounded-xl",muted:s=!0,autoPlayOnView:l=!0}){const c=m.useRef(null),d=m.useRef(null),[u,p]=m.useState(0),[f,h]=m.useState(!1),[v,g]=m.useState(null),b=u>0,x=e==="video"&&b,{allowedToPlay:w}=C3(l&&e==="video"?u:0);m.useEffect(()=>{const j=c.current;if(!j||typeof IntersectionObserver>"u"){p(1);return}const S=new IntersectionObserver(C=>{for(const N of C)p(N.isIntersecting?N.intersectionRatio||.01:0)},{rootMargin:"250px",threshold:j3});return S.observe(j),()=>S.disconnect()},[]),m.useEffect(()=>{h(!1),g(null)},[e,t]),m.useEffect(()=>{if(e!=="video"||!l)return;const j=d.current;j&&(w&&b?j.play().catch(()=>{}):j.pause())},[w,l,b,e]);const k=v?{aspectRatio:String(v)}:void 0,_=i?qh(i):void 0;return o.jsx("div",{ref:c,className:y(!v&&T3[a],n,"relative overflow-hidden bg-[#182137]/[0.05]",r),style:k,children:e==="video"?o.jsxs(o.Fragment,{children:[!f&&o.jsx("div",{className:"absolute inset-0 grid place-items-center bg-gradient-to-br from-[#F3EFE9] via-[#ECE6DD] to-[#DED6CB]",children:o.jsx($i,{className:"h-7 w-7 text-[#182137]/25","aria-hidden":!0})}),_&&!f&&o.jsx("img",{src:_,alt:"",loading:"lazy",decoding:"async",className:"absolute inset-0 h-full w-full object-cover","aria-hidden":!0}),x&&o.jsx("video",{ref:d,src:x?t:void 0,poster:_,muted:s,loop:!0,playsInl
556ine:!0,preload:w?"auto":"metadata",disableRemotePlayback:!0,disablePictureInPicture:!0,onLoadedMetadata:j=>{const S=j.currentTarget;S.videoWidth&&S.videoHeight&&g(S.videoWidth/S.videoHeight)},onLoadedData:()=>h(!0),className:y("relative h-full w-full object-cover transition-opacity duration-300",f?"opacity-100":"opacity-0")})]}):o.jsx("img",{src:qh(t),alt:"",loading:"lazy",decoding:"async",onLoad:j=>{const S=j.currentTarget;S.naturalWidth&&S.naturalHeight&&g(S.naturalWidth/S.naturalHeight)},className:"h-full w-full object-cover"})})}function P3(){const{isDark:t}=pa(),{isRTL:e}=Dt(),{t:a}=$e("dashboard"),i={new:a("dashboard2.community.tags.new"),hot:a("dashboard2.community.tags.hot"),trending:a("dashboard2.community.tags.trending"),live:a("dashboard2.community.tags.live")};return o.jsxs("section",{className:"mx-auto max-w-7xl px-4 pt-24 pb-28 md:px-6 md:pt-36",children:[o.jsxs("header",{className:"mb-8 w-full min-w-0 max-w-full space-y-4",children:[o.jsx("h2",{className:y(Xu(t),"block w-full min-w-0 truncate text-[17px] leading-tight sm:text-[19px] md:text-[22px] lg:text-[24px]"),title:a("dashboard2.community.title"),children:a("dashboard2.community.title")}),o.jsxs(Ke,{to:"/creators",className:y("inline-flex items-center gap-2 self-start rounded-[14px] px-5 py-3 font-heebo text-sm font-black tracking-[-0.01em] transition-all hover:-translate-y-0.5",t?"bg-[#F36A2D] text-white shadow-[0_10px_28px_rgba(243,106,45,0.35)] hover:bg-[#ff7a3d]":"bg-gradient-to-br from-[#EC7357] via-[#D84B2E] to-[#B33D24] text-white shadow-[0_10px_28px_rgba(216,75,46,0.28)] hover:shadow-[0_14px_32px_rgba(216,75,46,0.34)]"),children:[a("dashboard2.community.marketplaceCta"),e?o.jsx(eo,{className:"h-4 w-4 shrink-0 opacity-95","aria-hidden":!0}):o.jsx(Ga,{className:"h-4 w-4 shrink-0 opacity-95","aria-hidden":!0})]})]}),o.jsx("div",{className:"columns-2 gap-2 sm:columns-3 md:columns-4 [&>*]:mb-2 [&>*]:break-inside-avoid",children:w3.map(r=>o.jsxs("div",{className:"relative",children:[o.jsx(N3,{url:r.url,type:r.type,aspect:r.aspect,poster:r.poster,rounded:"rounded-xl"}),r.tag&&o.jsx("span",{className:"absolute top-2 start-2 rounded-md bg-black/70 px-1.5 py-0.5 text-[10px] font-mono font-bold text-white backdrop-blur",children:i[r.tag]}),o.jsx("span",{className:"absolute top-2 end-2 rounded-md bg-black/50 px-1.5 py-0.5 text-[10px] font-mono text-white/90 backdrop-blur",children:r.type==="video"?a("dashboard2.community.media.video"):a("dashboard2.community.media.image")})]},r.id))})]})}const A3=120;function E3({onVisibilityChange:t}){const{t:e}=$e("dashboard"),{isDark:a}=pa(),i=It(),r=A_({path:"/dashboard",end:!0}),{isOpen:n,openSettings:s}=Vn(),[l,c]=m.useState(!1),[d,u]=m.useState(!1),p=i.pathname,f=p.startsWith("/academy")||p.startsWith("/creators-academy"),h=p==="/creators"||p.startsWith("/creators/");if(m.useEffect(()=>{const _=window.matchMedia("(max-width: 767px)"),j=()=>u(_.matches);return j(),_.addEventListener("change",j),()=>_.removeEventListener("change",j)},[]),m.useEffect(()=>{if(!d){c(!1),t==null||t(!1);return}const _=()=>{const j=window.scrollY>A3;c(S=>(S!==j&&(t==null||t(j)),j))};return _(),window.addEventListener("scroll",_,{passive:!0}),()=>window.removeEventListener("scroll",_)},[d,t]),!d)return null;const v=y("fixed inset-x-0 bottom-0 z-50 px-3 transition-[transform,opacity] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] md:hidden",l?"translate-y-0 opacity-100":"pointer-events-none translate-y-[calc(100%+8px)] opacity-0"),g="flex min-h-11 min-w-[3.25rem] flex-1 flex-col items-center justify-center gap-0.5 rounded-xl px-1 py-1.5 font-heebo text-[10px] font-bold tracking-[-0.01em] transition-colors",b=a?"text-white/45":"text-[#182137]/45",x=a?"text-[#F36A2D]":"text-[#D84B2E]",w=_=>y(g,_?x:b),k=_=>y("h-5 w-5",_?x:b);return o.jsx("nav",{className:v,style:{paddingBottom:"max(10px, env(safe-area-inset-bottom, 0px))"},"aria-label":e("dashboard2.mobileNav.navAria"),children:o.jsxs("div",{className:y("mx-auto flex max-w-lg items-stretch gap-0.5 rounded-[1.35rem] border p-1.5",a?"border-white/[0.14] bg-gradient-to-b from-[#232326] via-[#18181B] to-[#0B0B0D] shadow-[0_-14px_44px_rgba(0,0,0,0.55),0_6px_18px_rgba(0,0,0,0.35),inset_0_2px_0_rgba(255,255,255,0.14),inset_0_-2px_0_rgba(0,0,0,0.55)]":"border-[#B8BEC8]/90 bg-gradient-to-b from-[#F5F6F9] via-[#E8EBF1] to-[#D5DAE3] shadow-[0_-12px_36px_rgba(24,33,55,0.14),0_8px_20px_rgba(24,33,55,0.08),inset_0_2px_0_rgba(255,255,255,0.92),inset_0_-2px_0_rgba(24,33,55,0.08)]"),children:[o.jsxs(sc,{to:"/dashboard",end:!0,className:({isActive:_})=>w(_),"aria-label":e("dashboard2.mobileNav.canvasAria"),children:[o.jsx(yl,{className:k(!!r),strokeWidth:2.2,"aria-hidden":!0}),o.jsx("span",{children:e("dashboard2.mobileNav.canvas")})]}),o.jsxs(sc,{to:"/academy/videos",className:({isActive:_})=>w(_||f),"aria-label":e("dashboard2.mobileNav.academyAria"),children:[o.jsx(zn,{className:k(f),strokeWidth:2.2,"aria-hidden":!0}),o.jsx("span",{children:e("dashboard2.mobileNav.academy")})]}),o.jsxs(sc,{to:"/creators",className:({isActive:_})=>w(_||h),"aria-label":e("dashboard2.mobileNav.marketplaceAria"),children:[o.jsx(Lw,{className:k(h),strokeWidth:2.2,"aria-hidden":!0}),o.jsx("span",{children:e("dashboard2.mobileNav.marketplace")})]}),o.jsxs("button",{type:"button",onClick:()=>s("layout"),className:w(n),"aria-label":e("dashboard2.mobileNav.settingsAria"),"aria-pressed":n,children:[o.jsx(sn,{className:k(n),strokeWidth:2.2,"aria-hidden":!0}),o.jsx("span",{children:e("dashboard2.mobileNav.settings")})]})]})})}function I3(){const{isDark:t}=pa(),{isRTL:e}=Dt(),[a,i]=m.useState(!1),r=m.useCallback(n=>{i(n)},[]);return m.useEffect(()=>{const n=document.body.style.background;return document.body.style.background=t?"#141416":"#F3F5F3",()=>{document.body.style.background=n}},[t]),o.jsxs("div",{dir:e?"rtl":"ltr",className:y("min-h-screen font-heebo",t?"bg-[#141416] text-white":"bg-[#F3F5F3] text-[#132820]",a&&"max-md:pb-[calc(5.25rem+env(safe-area-inset-bottom,0px))]"),children:[o.jsx(XI,{}),o.jsx(ZI,{}),o.jsx(c3,{}),o.jsx(m3,{}),o.jsx(v3,{}),o.jsx(P3,{}),o.jsx(_v,{}),o.jsx(Y0,{}),o.jsx(E3,{onVisibilityChange:r})]})}const D3=()=>{const t=It();return m.useEffect(()=>{console.error("404 Error: User attempted to access non-existent route:",t.pathname)},[t.pathname]),o.jsx("div",{className:"flex min-h-screen items-center justify-center bg-background px-4 pt-16",children:o.jsxs("div",{className:"text-center",children:[o.jsx("h1",{className:"mb-4 text-6xl font-bold",children:"404"}),o.jsx("p",{className:"mb-8 text-xl text-muted-foreground",children:"Oops! Page not found"}),o.jsx(ee,{asChild:!0,children:o.jsx(Ke,{to:"/",children:"Return to Home"})})]})})},hl="boardspace:app-update-transition",Zd="boardspace:app-update-recovery",eu="__bs_update",R3=5*60*1e3,L3=60*1e3;function J0(t){try{return window.sessionStorage.getItem(t)}catch{return null}}function X0(t,e){try{window.sessionStorage.setItem(t,e)}catch{}}function tu(t){try{window.sessionStorage.removeItem(t)}catch{}}function Z0(t){if(!t)return null;try{return JSON.parse(t)}catch{return null}}function O3(){if(typeof window>"u")return null;const t=Z0(J0(hl));return!t||Date.now()-t.startedAt>R3?(tu(hl),null):t}function ex(t){typeof window>"u"||X0(hl,JSON.stringify(t))}function Gh(){typeof window>"u"||(tu(hl),tu(Zd))}function tx(t,e=window.location.href){const a=new URL(e,window.location.origin);return a.searchParams.set(eu,t||String(Date.now())),a.toString()}function Wh(){if(typeof window>"u")return;const t=new URL(window.location.href);t.searchParams.has(eu)&&(t.searchParams.delete(eu),window.history.replaceState(window.history.state,"",t.toString()))}function zr(t=window.location.pathname){return t.startsWith("/canvas/")?"canvas":t.startsWith("/floorplan-editor")?"floorplan":t.startsWith("/kling3-workspace")?"studio":t.startsWith("/sketch3d-lab")?"sketch3d":t.startsWith("/dashboard")?"dashboard":t.startsWith("/auth")?"auth":"public"}function ax(t){if(typeof window>"u")return!1;const e=Z0(J0(Zd));if(e&&Date.now()-e.attemptedAt<L3)return!1;const a=Date.now();return X0(Zd,JSON.stringify({attemptedAt:a,sourceUrl:window.location.href})),ex({targetVersion:null,startedAt:a,returnUrl:window.location.href,reason:t}),window.location.replace(tx(null)),!0}function M3(){return ax("stale-chunk")}function z3(t){const e=t.message||"";return e.includes("dynamically imported module")||e.includes("Loading chunk")||e.includes("error loading dynamically imported module")||e.includes("MIME type")&&e.includes("text/html")}function B3(t){const e=t.message||"";return(e.includes("'removeChild'")||e.includes("'insertBefore'"))&&e.includes("'Node'")}function Hh(t){return ax(t)}
556class F3 extends U.Component{constructor(a){super(a);ft(this,"resetError",()=>{this.setState({hasError:!1,error:null,errorInfo:null})});this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(a){return z3(a)&&Hh("stale-chunk")?{hasError:!0,error:a}:B3(a)&&Hh("dom-recovery")?{hasError:!0,error:a}:{hasError:!0,error:a}}componentDidCatch(a,i){this.setState({errorInfo:i})}render(){var a;if(this.state.hasError){if(this.props.fallback){const i=this.props.fallback;return o.jsx(i,{error:this.state.error,resetError:this.resetError})}return o.jsx("div",{className:"flex items-center justify-center min-h-screen creators-bronze-grid-light-page font-heebo text-[#182137]",children:o.jsx("div",{className:"max-w-md w-full mx-4 text-center",children:o.jsxs("div",{className:"bg-[#FDFBF7] rounded-2xl border border-[#182137]/10 shadow-[0_20px_60px_rgba(24,33,55,0.12)] p-8",children:[o.jsx("div",{className:"mb-6",children:o.jsx("svg",{className:"mx-auto h-16 w-16 text-[#D9603B]",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),o.jsx("h1",{className:"text-2xl font-black tracking-[-0.025em] text-[#182137] mb-2",children:"Something went wrong"}),o.jsx("p",{className:"text-[#182137]/62 mb-6 font-semibold leading-relaxed",children:((a=this.state.error)==null?void 0:a.message)||"An unexpected error occurred. Please try refreshing the page."}),o.jsxs("div",{className:"space-y-3",children:[o.jsx("button",{onClick:this.resetError,className:"w-full min-h-11 px-4 py-2 bg-[#D9603B] text-[#F7F4EF] rounded-[14px] font-black tracking-[-0.01em] hover:bg-[#C95534] transition-colors",children:"Try Again"}),o.jsx("button",{onClick:()=>{const i=window.location.href.split("?")[0].split("#")[0],r=window.location.hash;window.location.href=i+"?_cb="+Date.now()+r},className:"w-full min-h-11 px-4 py-2 bg-[#182137]/8 text-[#182137] rounded-[14px] font-bold tracking-[-0.01em] hover:bg-[#182137]/12 transition-colors",children:"Reload Page"})]}),!1]})})})}return this.props.children}}const $3=()=>o.jsx("div",{className:"flex min-h-screen flex-col items-center justify-center bg-[#F7F4EF]",dir:"rtl",children:o.jsxs("div",{className:"mx-auto max-w-md text-center px-6",children:[o.jsx("div",{className:"mb-8 text-6xl animate-spin",style:{animationDuration:"3s"},children:"⚙"}),o.jsx("h1",{className:"mb-3 text-3xl font-bold text-[#182137]",children:"אנחנו משדרגים את המערכת"}),o.jsx("p",{className:"text-lg text-[#182137]/60 mb-6",children:"העדכון ייקח כ-10 דקות. תודה על הסבלנות!"}),o.jsxs("div",{className:"inline-flex items-center gap-2 rounded-full bg-[#336CFF]/10 px-4 py-2 text-sm text-[#336CFF]",children:[o.jsx("span",{className:"h-2 w-2 rounded-full bg-[#336CFF] animate-pulse"}),"עובדים על זה..."]})]})});function V3(){const{data:t,isLoading:e,error:a}=ta({queryKey:["maintenance-mode"],queryFn:async()=>{const{data:i,error:r}=await V.from("maintenance_mode").select("enabled").eq("id",1).single();return r?{enabled:!1}:{enabled:(i==null?void 0:i.enabled)??!1}},staleTime:3e4,refetchInterval:6e4,retry:!1});return{enabled:(t==null?void 0:t.enabled)??!1,isLoading:e,error:a}}function U3({children:t}){const{enabled:e}=V3();return e?o.jsx($3,{}):o.jsx(o.Fragment,{children:t})}function q3(){const t=Vt(),{user:e}=Pt();m.useEffect(()=>{if(!e)return;const a=i=>{var s;if(i.key!=="Enter")return;const r=i.target;if(!r||r.tagName!=="INPUT"&&r.tagName!=="TEXTAREA")return;((s=r.value)==null?void 0:s.toLowerCase().trim())==="/kling3go"&&(i.preventDefault(),i.stopPropagation(),r.value="",t("/kling3-workspace"))};return document.addEventListener("keydown",a,!0),()=>document.removeEventListener("keydown",a,!0)},[e,t])}const G3=m.lazy(()=>H(()=>Promise.resolve().then(()=>QI),void 0).then(t=>({default:t.SettingsModalContent})));function W3(){const{t,i18n:e}=$e(["canvas"]),{locale:a}=Dt(),{isOpen:i,closeSettings:r,canvasGrid:n}=Vn(),s=typeof window<"u"?_i():null,l=a==="he"||e.language==="he"||s==="he"||typeof document<"u"&&document.documentElement.dir==="rtl",c=e.exists("settings.title",{ns:"canvas"}),d=(n==null?void 0:n.showGrid)??!1,u=n==null?void 0:n.onGridToggle;return o.jsx(Si,{open:i,onOpenChange:p=>{p||r()},children:o.jsxs(mo,{className:y("flex h-[100dvh] max-h-[100dvh] w-[100vw] max-w-none flex-col rounded-none border-0 bg-[#F7F4EF] p-4 font-heebo text-[#182137] shadow-2xl !left-0 !top-0 !translate-x-0 !translate-y-0 dark:bg-[#0E1426] dark:text-[#F7F4EF] md:h-[85vh] md:max-h-[85vh] md:w-[95vw] md:max-w-4xl md:rounded-[28px] md:border md:border-[#182137]/10 md:bg-white md:p-6 md:!left-[50%] md:!top-[50%] md:!translate-x-[-50%] md:!translate-y-[-50%] md:dark:border-white/10 md:dark:bg-[#0E1426]",l&&"[&>button]:!right-auto [&>button]:!left-4"),children:[o.jsx(Un,{className:"pb-3 md:pb-4 flex-shrink-0",children:o.jsxs(Ci,{className:y("flex items-center gap-2 text-[22px] font-black tracking-[-0.02em] text-[#182137] dark:text-[#F7F4EF] md:gap-3 md:text-2xl",l&&"font-heebo"),children:[o.jsx("div",{className:"rounded-2xl bg-[#D85D43]/12 p-2 text-[#D85D43] dark:bg-[#D85D43]/20",children:o.jsx(sn,{className:"h-5 w-5 md:h-6 md:w-6"})}),c?t("settings.title",{ns:"canvas"}):"Settings"]})}),o.jsx(m.Suspense,{fallback:o.jsx("div",{className:"min-h-0 flex-1"}),children:o.jsx("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:o.jsx(G3,{showGrid:d,onGri
556dToggle:u,onClose:r})})})]})})}const Ss={first_gen_video:5,academy_video:5,max_academy_rewards:25},Oc=["1","2","3","4","5"];function H3(){const t=$u(),e=(t==null?void 0:t.user)??null,a=yr(),{data:i,isLoading:r,error:n,refetch:s}=ta({queryKey:["gamification-state",e==null?void 0:e.id],queryFn:async()=>{if(!e)throw new Error("No user");const{data:C,error:N}=await V.rpc("get_gamification_state",{p_user_id:e.id});return N?(console.error("Error fetching gamification state:",N),{success:!0,total_generations:0,first_generation_at:null,gamification_stage:1,token_balance:0,has_ever_paid:!1,academy_videos_watched:{},academy_completed:!1,popups:{},video_progress:{},academy_rewards:{completed_count:0,total_tokens:0},gamification_eligible:!1}):C},enabled:!!e,refetchInterval:3e4,staleTime:3e4}),l=No({mutationFn:async({popupType:C,status:N,metadata:P={}})=>{if(!e)throw new Error("No user");const{data:E,error:L}=await V.rpc("update_popup_status",{p_user_id:e.id,p_popup_type:C,p_status:N,p_metadata:P});if(L)throw L;return E},onSuccess:()=>{a.invalidateQueries({queryKey:["gamification-state",e==null?void 0:e.id]})}}),c=No({mutationFn:async({tokens:C,feature:N,popupType:P,videoId:E})=>{if(!e)throw new Error("No user");const{data:L,error:A}=await V.rpc("award_gamification_tokens",{p_user_id:e.id,p_tokens:C,p_feature:N,p_popup_type:P||null,p_video_id:E||null});if(A)throw A;return L},onSuccess:()=>{a.invalidateQueries({queryKey:["gamification-state",e==null?void 0:e.id]}),a.invalidateQueries({queryKey:["user-tokens",e==null?void 0:e.id]})}}),d=No({mutationFn:async({videoId:C,videoType:N,rewardsTokens:P=!1})=>{if(!e)throw new Error("No user");const{data:E,error:L}=await V.rpc("start_video_watch",{p_user_id:e.id,p_video_id:C,p_video_type:N,p_rewards_tokens:P});if(L)throw L;return E},onSuccess:()=>{a.invalidateQueries({queryKey:["gamification-state",e==null?void 0:e.id]})}}),u=No({mutationFn:async()=>{if(!e)throw new Error("No user");const{data:C,error:N}=await V.rpc("increment_generation_count",{p_user_id:e.id});if(N)throw N;return C},onSuccess:()=>{a.invalidateQueries({queryKey:["gamification-state",e==null?void 0:e.id]})}});return{gamificationState:i,isLoading:r,error:n,refetch:s,markPopupShown:C=>l.mutateAsync({popupType:C,status:"shown"}),markPopupDismissed:C=>l.mutateAsync({popupType:C,status:"dismissed"}),markPopupCompleted:C=>l.mutateAsync({popupType:C,status:"completed"}),shouldShowPopup:C=>{var P;if(!i||!i.gamification_eligible)return!1;const N=(P=i.popups)==null?void 0:P[C];if(N&&(N.status==="shown"||N.status==="completed"||N.status==="dismissed"))return!1;switch(C){case"first_gen_video":return i.gamification_stage>=2&&i.total_generations>=1;case"three_gen_video":case"low_balance_promo":return!1;default:return!1}},awardTokensForPopup:async C=>{const N=C==="first_gen_video"||C==="three_gen_video"?Ss.first_gen_video:0;if(N>0)return c.mutateAsync({tokens:N,feature:`gamification_${C}`,popupType:C})},startVideoWatch:(C,N)=>d.mutateAsync({videoId:C,videoType:N,rewardsTokens:N==="academy_reward"}),awardTokensForAcademyVideo:async C=>c.mutateAsync({tokens:Ss.academy_video,feature:"gamification_academy_video",videoId:`academy_${C}`}),canAcademyVideoRewardTokens:C=>{var P;if(!i||!Oc.includes(C))return!1;const N=(P=i.video_progress)==null?void 0:P[`academy_${C}`];return!(N!=null&&N.completed_at)},getAcademyRewardProgress:()=>(i==null?void 0:i.academy_rewards)||{completed_count:0,total_tokens:0},hasCompletedAllAcademyVideos:()=>{if(!i)return!1;const C=i.academy_rewards;return C?C.completed_count>=Oc.length:!1},getRemainingAcademyTokens:()=>{var P;if(!i)return Ss.max_academy_rewards;const C=((P=i.academy_rewards)==null?void 0:P.completed_count)||0;return(Oc.length-C)*Ss.academy_video},incrementGenerationCount:()=>u.mutateAsync(),isUpdatingPopup:l.isPending,isAwardingTokens:c.isPending,isIncrementingGeneration:u.isPending}}const K3=1e4,Y3=3e3,Kh={gradientFrom:"#FB7185",gradientTo:"#F43F5E"};function Q3({isOpen:t,onClose:e,tokenReward:a=25}){const i=Vt(),r=Gn(),[n,s]=m.useState(!1);m.useEffect(()=>{if(!t)return;const p=setTimeout(()=>{e()},K3);return()=>clearTimeout(p)},[t,e]),m.useEffect(()=>{if(!t)return;const p=setInterval(()=>{s(!0),setTimeout(()=>s(!1),600)},Y3);return()=>clearInterval(p)},[t]);const l=()=>{e(),i("/academy/videos")},c=()=>{e()},d={hidden:{opacity:0,y:100,x:0},visible:{opacity:1,y:0,x:0,transition:{type:"spring",damping:20,stiffness:300}},exit:{opacity:0,y:50,transition:{duration:.2}}},u={idle:{scale:1},pulse:{scale:[1,1.05,1],transition:{duration:.6}}};return t?o.jsx(Ts,{children:o.jsx(pe.div,{className:`
557          fixed z-[100]
558          ${r?"bottom-4 left-4 right-4":"bottom-5 right-5 w-[340px]"}
559        `,variants:d,initial:"hidden",animate:"visible",exit:"exit",dir:"rtl",children:o.jsxs("div",{className:"relative overflow-hidden rounded-2xl shadow-xl bg-rose-50 dark:bg-zinc-900 border border-rose-200/50 dark:border-rose-500/20",children:[o.jsx("button",{onClick:c,className:"absolute top-3 left-3 z-10 p-1.5 rounded-full bg-white/80 dark:bg-gray-800/80 hover:bg-white dark:hover:bg-gray-800 transition-colors duration-200","aria-label":"סגור",children:o.jsx(Et,{className:"w-4 h-4 text-gray-500 dark:text-gray-400"})}),o.jsxs("div",{className:"px-4 py-3",style:{background:`linear-gradient(to left, ${Kh.gradientFrom}, ${Kh.gradientTo})`},children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-lg",children:"🎁"}),o.jsx("h3",{className:"text-base font-bold text-white",children:"מגיע לך בונוס!"})]}),o.jsx("p",{className:"text-xs text-white/80 mt-0.5",children:"סיימת את היצירה הראשונה שלך"})]}),o.jsxs("div",{className:"p-4",children:[o.jsxs(pe.div,{className:"flex items-center justify-center gap-2 mb-3 py-3 px-4 roun
559ded-xl bg-rose-100/70 dark:bg-rose-500/10",variants:u,animate:n?"pulse":"idle",children:[o.jsxs("span",{className:"text-2xl font-bold text-rose-400",children:["+",a]}),o.jsx($s,{className:"w-6 h-6 text-rose-400"}),o.jsx("span",{className:"text-base font-medium text-gray-700 dark:text-gray-300",children:"טוקנים"})]}),o.jsxs("p",{className:"text-sm text-gray-600 dark:text-gray-400 text-center mb-4 leading-relaxed",children:["צפה בסרטונים קצרים באקדמיה וקבל"," ",o.jsxs("span",{className:"font-semibold text-rose-400",children:[a," טוקנים"]})," ","נוספים - בחינם!"]}),o.jsxs(ee,{onClick:l,className:"w-full h-11 text-base font-semibold rounded-full text-white transition-all duration-200 bg-rose-400 hover:bg-rose-500",children:[o.jsx(zn,{className:"w-5 h-5 ms-2"}),"לאקדמיה"]}),o.jsx("button",{onClick:c,className:"w-full mt-2 py-2 text-sm text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 transition-colors",children:"אחר כך"})]})]})})}):null}const gm=m.createContext(void 0);function J3({children:t}){const[e,a]=m.useState(!1),i=m.useCallback(()=>{a(!0)},[]),r=m.useCallback(()=>{a(!1)},[]);return o.jsx(gm.Provider,{value:{triggerGeneration:i,generationTriggered:e,markGenerationHandled:r},children:t})}function X3(){const t=m.useContext(gm);if(t===void 0)throw new Error("useGamification must be used within a GamificationProvider");return t}function PW(){const t=m.useContext(gm);return t===void 0?{triggerGeneration:()=>{console.warn("GamificationContext not available - triggerGeneration is a no-op")}}:{triggerGeneration:t.triggerGeneration}}function Z3(t={}){const{idleThreshold:e=5e3,maxWaitTime:a=3e4,enabled:i=!0,activityEvents:r=["mousemove","mousedown","keydown","touchstart","scroll","wheel"]}=t,[n,s]=m.useState(!1),[l,c]=m.useState(!1),[d,u]=m.useState(0),p=m.useRef(Date.now()),f=m.useRef(Date.now()),h=m.useRef(null),v=m.useCallback(()=>{p.current=Date.now(),f.current=Date.now(),s(!1),c(!1),u(0)},[]),g=m.useCallback(()=>{p.current=Date.now(),n&&s(!1)},[n]);return m.useEffect(()=>{if(!i){h.current&&(cancelAnimationFrame(h.current),h.current=null);return}v();const b=()=>{const x=Date.now(),w=x-p.current,k=x-f.current;u(w),!l&&k>=a&&c(!0),!n&&w>=e&&s(!0),h.current=requestAnimationFrame(b)};return h.current=requestAnimationFrame(b),()=>{h.current&&cancelAnimationFrame(h.current)}},[i,e,a,n,l,v]),m.useEffect(()=>{if(!i)return;let b=null;const x=()=>{b||(b=setTimeout(()=>{b=null},100),g())};return r.forEach(w=>{window.addEventListener(w,x,{passive:!0})}),()=>{r.forEach(w=>{window.removeEventListener(w,x)}),b&&clearTimeout(b)}},[i,r,g]),{isIdle:n,isForceTriggered:l,shouldTrigger:n||l,idleTime:d,reset:v}}const e5=5e3,t5=3e4;function a5(){const t=$u(),e=(t==null?void 0:t.user)??null,{isRTL:a}=Dt(),{generationTriggered:i,markGenerationHandled:r}=X3(),{gamificationState:n,shouldShowPopup:s,markPopupDismissed:l,incrementGenerationCount:c}=H3(),[d,u]=m.useState(!1),[p,f]=m.useState(!1),h=m.useRef(!1),{shouldTrigger:v,reset:g}=Z3({idleThreshold:e5,maxWaitTime:t5,enabled:d&&!p});m.useEffect(()=>{i&&e&&(b(),r())},[i,e,r]);const b=m.useCallback(async()=>{if(!(!e||!n)&&a)try{await c(),s("first_gen_video")&&!h.current&&!d&&(u(!0),g())}catch(w){console.error("Error handling generation:",w)}},[e,n,a,c,s,d,g]);m.useEffect(()=>{d&&v&&!p&&(l("first_gen_video"),h.current=!0,u(!1))},[d,v,p,l]);const x=m.useCallback(async()=>{try{await l("first_gen_video")}catch(w){console.error("Error dismissing popup:",w)}f(!1),g()},[l,g]);return t===null||!e||!a?null:o.jsx(Q3,{isOpen:p,onClose:x,tokenReward:25})}const i5=5*60*1e3,o5=30*60*1e3,r5=3500;function ix(t){return`boardspace:app-update-snooze:${t}`}function n5(t){try{return Number(window.sessionStorage.getItem(ix(t))||0)}catch{return 0}}function s5(t){try{window.sessionStorage.setItem(ix(t),String(Date.now()+o5))}catch{}}function Di(t,e){H(async()=>{const{trackEvent:a}=await import("./posthog-C7WKQ3r2.js");return{trackEvent:a}},[]).then(({trackEvent:a})=>a(t,e)).catch(()=>{})}function l5(t,e){return new Promise(a=>{const i=performance.now(),r=n=>{const s=Math.min(1,(n-i)/r5),l=1-Math.pow(1-s,3);t(90*l),s<1?e.current=requestAnimationFrame(r):(e.current=null,a())};e.current=requestAnimationFrame(r)})}async function c5(t){const e=new AbortController,a=window.setTimeout(()=>e.abort(),1e4);try{const i=await fetch(`/version.json?t=${Date.now()}`,{cache:"no-store",signal:e.signal});if(!i.ok)throw new Error("version_request_failed");const r=await i.json();if(String(r.version)!==t)throw new Error("version_changed_during_update");const n=new URL(window.location.href);n.searchParams.set("__bs_prepare",t);const s=await fetch(n.toString(),{cache:"no-store",headers:{Accept:"text/html"},signal:e.signal}),l=s.headers.get("content-type")||"";if(!s.ok||!l.includes("text/html"))throw new Error("app_shell_request_failed")}catch(i){throw i instanceof DOMException&&i.name==="AbortError"?new Error("update_request_timed_out"):i}finally{window.clearTimeout(a)}}function d5(){const t=It(),e=String(1790440916973),i=m.useRef(O3()).current,[r,n]=m.useState(()=>i?i.targetVersion&&i.targetVersion!==e?"error":"completing":"idle"),[s,l]=m.useState((i==null?void 0:i.targetVersion)||null),[c,d]=m.useState(i?90:0),[u,p]=m.useState(()=>i!=null&&i.targetVersion&&i.targetVersion!==e?"loaded_version_mismatch":null),f=m.useRef(r),h=m.useRef(!1),v=m.useRef(!0),g=m.useRef(null),b=m.useRef(new Set);m.useEffect(()=>{f.current=r},[r]);const x=m.useCallback(()=>({current_version:e,available_version:s,route_type:zr(t.pathname)}),[s,e,t.pathname]),w=m.useCallback(async()=>
559{if(!(h.current||["preparing","reloading","completing","error"].includes(f.current))){h.current=!0;try{const C=await fetch(`/version.json?t=${Date.now()}`,{cache:"no-store"});if(!C.ok)return;const N=await C.json(),P=String(N.version||"");if(!P)return;if(P===e){v.current&&f.current==="available"&&(l(null),n("idle"));return}if(n5(P)>Date.now()||!v.current)return;l(P),p(null),d(0),n("available"),b.current.has(P)||(b.current.add(P),Di("app_update_detected",{current_version:e,available_version:P,route_type:zr(t.pathname)}))}catch{}finally{h.current=!1}}},[e,t.pathname]);m.useEffect(()=>{if(r!=="completing"||!i)return;const C=performance.now();let N=null,P=null;const E=L=>{const A=Math.min(1,(L-C)/650);if(d(90+A*10),A<1){N=requestAnimationFrame(E);return}Di("app_update_completed",{current_version:e,available_version:i.targetVersion||e,route_type:zr(t.pathname),duration_ms:Date.now()-i.startedAt,recovery_reason:i.reason}),i.reason==="stale-chunk"&&Di("stale_chunk_recovery",{current_version:e,route_type:zr(t.pathname),duration_ms:Date.now()-i.startedAt}),P=window.setTimeout(()=>{Gh(),Wh(),l(null),n("idle")},500)};return N=requestAnimationFrame(E),()=>{N!==null&&cancelAnimationFrame(N),P!==null&&window.clearTimeout(P)}},[e,i,t.pathname,r]),m.useEffect(()=>{i&&r==="error"&&Di("app_update_failed",{current_version:e,available_version:i.targetVersion,route_type:zr(t.pathname),error_type:"loaded_version_mismatch"})},[e,i,t.pathname,r]),m.useEffect(()=>{r==="completing"||r==="error"||w()},[w,t.key,r]),m.useEffect(()=>{const C=window.setInterval(()=>void w(),i5),N=()=>{document.visibilityState==="visible"&&w()},P=()=>void w();return document.addEventListener("visibilitychange",N),window.addEventListener("online",P),()=>{window.clearInterval(C),document.removeEventListener("visibilitychange",N),window.removeEventListener("online",P)}},[w]),m.useEffect(()=>()=>{v.current=!1,g.current!==null&&cancelAnimationFrame(g.current)},[]);const k=m.useCallback(()=>{s&&(s5(s),Di("app_update_deferred",x()),n("idle"),d(0))},[s,x]),_=m.useCallback(async()=>{if(!s)return;const C=Date.now();p(null),d(0),n("preparing"),f.current="preparing",Di("app_update_started",x());try{if(await Promise.all([l5(d,g),c5(s)]),!v.current)return;d(90),n("reloading"),f.current="reloading",ex({targetVersion:s,startedAt:C,returnUrl:window.location.href,reason:"user"}),window.setTimeout(()=>{window.location.replace(tx(s))},180)}catch(N){g.current!==null&&(cancelAnimationFrame(g.current),g.current=null);const P=N instanceof Error?N.message:"unknown_error";p(P),n("error"),f.current="error",Di("app_update_failed",{...x(),duration_ms:Date.now()-C,error_type:P})}},[s,x]),j=m.useCallback(async()=>{n("available"),f.current="available",await _()},[_]),S=m.useCallback(()=>{Gh(),Wh(),k()},[k]);return{status:r,currentVersion:e,availableVersion:s,progress:c,errorCode:u,startUpdate:_,deferUpdate:k,retryUpdate:j,continueCurrentVersion:S,isUpdateActive:r!=="idle"}}const ox=m.createContext(null);function u5({children:t}){const e=d5();return o.jsx(ox.Provider,{value:e,children:t})}function m5(){const t=m.useContext(ox);if(!t)throw new Error("useAppUpdate must be used within AppUpdateProvider");return t}const Yh="boardspace-app-update-boot";function Qh({complete:t=!1}){return o.jsx("span",{"aria-hidden":!0,className:y("relative grid h-12 w-12 shrink-0 place-items-center rounded-[14px] border",t?"border-[#D85D43]/30 bg-[#D85D43] text-[#F7F4EF]":"border-[#182137]/10 bg-[#E8E3DB] text-[#182137]"),children:t?o.jsx("svg",{viewBox:"0 0 24 24",className:"h-6 w-6",fill:"none",children:o.jsx("path",{d:"m6.5 12.5 3.4 3.4 7.8-8",stroke:"currentColor",strokeWidth:"2.4",strokeLinecap:"round",strokeLinejoin:"round"})}):o.jsxs("svg",{viewBox:"0 0 24 24",className:"h-7 w-7",fill:"none",children:[o.jsx("path",{d:"M7 7.5A7 7 0 0 1 18.5 10M17 16.5A7 7 0 0 1 5.5 14",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"}),o.jsx("path",{d:"m17.7 6.8.8 3.2-3.2.8M6.3 17.2 5.5 14l3.2-.8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]})})}function p5(){const{t,i18n:e}
559=$e("common"),{status:a,progress:i,errorCode:r,startUpdate:n,deferUpdate:s,retryUpdate:l,continueCurrentVersion:c}=m5(),d=(e.resolvedLanguage||e.language)==="he",u=a==="error",p=a==="completing"&&i>=99.5,f=["preparing","reloading","completing","error"].includes(a);m.useEffect(()=>{var v,g;f&&((v=document.getElementById(Yh))==null||v.remove(),(g=document.getElementById(`${Yh}-style`))==null||g.remove())},[f]);const h=u?t("appUpdate.error.status"):p?t("appUpdate.progress.complete"):a==="completing"||a==="reloading"?t("appUpdate.progress.activating"):i<35?t("appUpdate.progress.saving"):i<70?t("appUpdate.progress.preparing"):t("appUpdate.progress.loading");return o.jsxs(o.Fragment,{children:[o.jsx(Si,{open:a==="available",onOpenChange:()=>{},children:o.jsxs(Uu,{children:[o.jsx(Pl,{className:"z-[11000] bg-[#182137]/55 backdrop-blur-md data-[state=open]:animate-in data-[state=open]:fade-in-0"}),o.jsxs(lo,{dir:d?"rtl":"ltr",onPointerDownOutside:v=>v.preventDefault(),onEscapeKeyDown:v=>v.preventDefault(),onInteractOutside:v=>v.preventDefault(),onOpenAutoFocus:v=>v.preventDefault(),className:y("fixed left-1/2 top-1/2 z-[11001] w-[calc(100%-1.5rem)] max-w-[560px] -translate-x-1/2 -translate-y-1/2 overflow-hidden","rounded-[24px] border border-[#182137]/10 bg-[#F7F4EF] text-[#182137] shadow-[0_28px_80px_rgba(24,33,55,0.28)] focus:outline-none","data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",d?"font-heebo":"font-sans"),children:[o.jsx("div",{className:"h-2 bg-[#D85D43]"}),o.jsxs("div",{className:"app-update-grid px-6 py-7 sm:px-9 sm:py-9",children:[o.jsxs("div",{className:"mb-7 flex items-start gap-4",children:[o.jsx(Qh,{}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("p",{className:"mb-2 text-[11px] font-black uppercase tracking-[0.12em] text-[#D85D43]",children:t("appUpdate.eyebrow")}),o.jsx(gr,{className:"text-[clamp(28px,6vw,42px)] font-black leading-[0.98] tracking-[-0.035em]",children:t("appUpdate.title")})]})]}),o.jsx(fr,{className:"mb-3 max-w-[48ch] text-[16px] font-medium leading-[1.6] text-[#182137]/70",children:t("appUpdate.description")}),o.jsx("p",{className:"mb-7 text-[13px] font-semibold leading-relaxed text-[#182137]/52",children:t("appUpdate.note")}),o.jsxs("div",{className:"grid gap-3 sm:grid-cols-[1fr_auto]",children:[o.jsx("button",{type:"button",onClick:()=>void n(),className:y("app-update-primary min-h-12 rounded-[14px] border border-[#B74631] bg-[#D85D43] px-6 py-3.5","text-[16px] font-black text-[#F7F4EF] shadow-[0_6px_0_#A93E2B,0_14px_28px_rgba(183,70,49,0.24)]","transition-[transform,box-shadow,background-color] hover:-translate-y-0.5 hover:bg-[#C94E35]","active:translate-y-1 active:shadow-[0_2px_0_#A93E2B,0_7px_16px_rgba(183,70,49,0.22)]","focus:outline-none focus-visible:ring-2 focus-visible:ring-[#182137] focus-visible:ring-offset-2 focus-visible:ring-offset-[#F7F4EF]"),children:t("appUpdate.updateNow")}),o.jsx("button",{type:"button",onClick:s,className:y("min-h-12 rounded-[14px] border border-[#182137]/14 bg-[#E8E3DB] px-6 py-3.5","text-[15px] font-black text-[#182137] shadow-[0_4px_0_rgba(24,33,55,0.16)]","transition-[transform,box-shadow,background-color] hover:-translate-y-0.5 hover:bg-[#E0DFD8]","active:translate-y-0.5 active:shadow-[0_1px_0_rgba(24,33,55,0.15)]","focus:outline-none focus-visible:ring-2 focus-visible:ring-[#182137] focus-visible:ring-offset-2 focus-visible:ring-offset-[#F7F4EF]"),children:t("appUpdate.later")})]})]})]})]})}),f&&o.jsx("div",{dir:d?"rtl":"ltr",role:u?"alert":"status","aria-live":"polite",className:y("app-update-grid fixed inset-0 z-[12000] flex items-center justify-center overflow-hidden bg-[#F7F4EF] px-5 text-[#182137]",d?"font-heebo":"font-sans"),children:o.jsxs("div",{className:"w-full max-w-[620px]",children:[o.jsx("div",{className:"mb-10 flex justify-center",children:o.jsx("img",{src:Ha,alt:"Boardspace",className:"h-auto w-[clamp(210px,38vw,300px)]"})}),o.jsxs("div",{className:"rounded-[24px] border border-[#182137]/10 bg-[#F7F4EF]/95 p-6 shadow-[0_24px_70px_rgba(24,33,55,0.14)] sm:p-9",children:[o.jsxs("div",{className:"mb-8 flex items-start gap-4",children:[o.jsx(Qh,{complete:p}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("p",{className:"mb-2 text-[11px] font-black uppercase tracking-[0.12em] text-[#D85D43]",children:t(u?"appUpdate.error.eyebrow":"appUpdate.eyebrow")}
559),o.jsx("h1",{className:"text-[clamp(28px,5vw,40px)] font-black leading-none tracking-[-0.035em]",children:t(u?"appUpdate.error.title":p?"appUpdate.progress.completeTitle":"appUpdate.progress.title")})]})]}),!u&&o.jsxs("div",{children:[o.jsxs("div",{className:"mb-3 flex items-end justify-between gap-4",children:[o.jsx("span",{className:"text-sm font-bold text-[#182137]/58",children:h}),o.jsxs("span",{className:"text-[32px] font-black tabular-nums tracking-[-0.04em]",children:[Math.round(i),"%"]})]}),o.jsx("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(i),"aria-label":h,className:"h-3 overflow-hidden rounded-full bg-[#182137]/10",children:o.jsx("div",{className:"app-update-fill relative h-full rounded-full bg-[#D85D43]",style:{width:`${Math.max(0,Math.min(100,i))}%`}})})]}),u&&o.jsxs("div",{children:[o.jsx("p",{className:"mb-2 text-[16px] font-semibold leading-relaxed text-[#182137]/70",children:t("appUpdate.error.description")}),r&&o.jsx("p",{className:"mb-7 text-[11px] font-bold text-[#182137]/38",children:t("appUpdate.error.code",{code:r})}),o.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[o.jsx("button",{type:"button",onClick:()=>void l(),className:"min-h-12 rounded-[14px] border border-[#B74631] bg-[#D85D43] px-5 py-3 font-black text-[#F7F4EF] shadow-[0_5px_0_#A93E2B] transition-transform hover:-translate-y-0.5 active:translate-y-1 active:shadow-none focus:outline-none focus-visible:ring-2 focus-visible:ring-[#182137]",children:t("appUpdate.error.retry")}),o.jsx("button",{type:"button",onClick:c,className:"min-h-12 rounded-[14px] border border-[#182137]/14 bg-[#E8E3DB] px-5 py-3 font-black text-[#182137] shadow-[0_4px_0_rgba(24,33,55,0.16)] transition-transform hover:-translate-y-0.5 active:translate-y-0.5 active:shadow-none focus:outline-none focus-visible:ring-2 focus-visible:ring-[#182137]",children:t("appUpdate.error.continue")})]})]})]})]})}),o.jsx("style",{children:`
560        .app-update-grid {
561          background-color: #F7F4EF;
562          background-image: radial-gradient(circle, rgba(24, 33, 55, 0.12) 1px, transparent 1.2px);
563          background-size: 30px 30px;
564        }
565        .app-update-fill {
566          box-shadow: 0 0 18px rgba(216, 93, 67, 0.32);
567          transition: width 80ms linear;
568        }
569        .app-update-fill::after {
570          content: "";
571          position: absolute;
572          inset: 0;
573          background: linear-gradient(90deg, transparent, rgba(247, 244, 239, 0.48), transparent);
574          transform: translateX(-100%);
575          animation: app-update-shimmer 1.5s linear infinite;
576        }
577        @keyframes app-update-shimmer {
578          to { transform: translateX(100%); }
579        }
580        @media (prefers-reduced-motion: reduce) {
581          .app-update-fill { transition: none; }
582          .app-update-fill::after { animation: none; }
583          .app-update-primary { transition: none; }
584        }
585      `})]})}const h5=m.lazy(()=>H(()=>import("./CanvasPage-BoYY9twN.js").then(t=>t.F),__vite__mapDeps([54,1,2,5,25,26,55,56,35,57,24,12,13,21,58,28,59,47,48,44,60,37,61,8,27,41,31,33,3,4,17,16,34,32,62,36,63,42,64,49,65,29,52,66,67,68,69,22,23,70,53,71,20,72,73,18,74,75]))),g5=m.lazy(()=>H(()=>import("./InspirationBoards-CdPzKB5w.js"),__vite__mapDeps([76,1,2,49,26,3,4,5,65,64,29,77,31,44]))),f5=m.lazy(()=>H(()=>import("./PinterestCallback-CSBqawZg.js"),__vite__mapDeps([78,1,2,70,3,4,5,44]))),b5=m.lazy(()=>H(()=>import("./TermsOfService-BNzutHmn.js"),__vite__mapDeps([79,1,2,80,3,4,5,44]))),v5=m.lazy(()=>H(()=>import("./PrivacyPolicy-28AyA6A6.js"),__vite__mapDeps([81,1,2,3,4,5,44]))),y5=m.lazy(()=>H(()=>import("./BuyerTerms-Ba7P1JlF.js"),__vite__mapDeps([82,1,2,80,3,4,5,44]))),x5=m.lazy(()=>H(()=>import("./CreatorAgreement-BU9POpke.js"),__vite__mapDeps([83,1,2,80,3,4,5,44]))),w5=m.lazy(()=>H(()=>import("./Accessibility-CWhq8M2h.js"),__vite__mapDeps([84,1,2,80,3,4,5,44]))),k5=m.lazy(()=>H(()=>import("./OurStory-CSSqYOOF.js"),__vite__mapDeps([85,1,2,44,86,3,4,5]))),_5=m.lazy(()=>H(()=>import("./PaymentSuccess-DsfVofuH.js"),__vite__mapDeps([87,1,2,3,4,5,44]))),S5=m.lazy(()=>H(()=>import("./PaymentCancelled-sNWUAKdA.js"),__vite__mapDeps([88,1,2,70,3,4,5,44]))),C5=m.lazy(()=>H(()=>import("./HelpCenter-KFmdA0RM.js"),__vite__mapDeps([89,1,2,3,4,5,44]))),T5=m.lazy(()=>H(()=>import("./SupportCenter-gm9ReBoO.js"),__vite__mapDeps([90,1,2,70,52,3,4,5,44]))),j5=m.lazy(()=>H(()=>import("./CreateTicket-C-_JldYS.js"),__vite__mapDeps([91,1,2,29,69,3,4,5,44]))),N5=m.lazy(()=>H(()=>import("./FAQ-BChbfZKK.js"),__vite__mapDeps([92,1,2,3,4,5,44]))),P5=m.lazy(()=>H(()=>import("./Careers-C_6sl0-E.js"),__vite__mapDeps([93,1,2,44,74,3,4,5]))),A5=m.lazy(()=>H(()=>import("./BlogListing-DS-X8_SC.js"),__vite__mapDeps([94,1,2,95,96,44,97,3,4,5]))),E5=m.lazy(()=>H(()=>import("./BlogArticle-CNoYQD5k.js"),__vite__mapDeps([98,1,2,95,99,96,44,97,86,27,3,4,5]))),I5=m.lazy(()=>H(()=>
585import("./BlogListingHe-CIn7xnD0.js"),__vite__mapDeps([100,1,2,101,96,44,97,3,4,5]))),D5=m.lazy(()=>H(()=>import("./BlogArticleHe-Cqw5mxYU.js"),__vite__mapDeps([102,1,2,101,99,96,77,97,3,4,5,44]))),Jh=m.lazy(()=>H(()=>import("./AuthorPage-DDZbqjk7.js"),__vite__mapDeps([103,1,2,95,101,96,44,3,4,5]))),Xh=m.lazy(()=>H(()=>import("./ComparisonPage-BbzJHWAL.js"),__vite__mapDeps([104,1,2,96,44,3,4,5]))),qe=m.lazy(()=>H(()=>import("./SEOLandingPage-Dht6iCSn.js"),__vite__mapDeps([105,1,2,96,106,44,3,4,5]))),R5=m.lazy(()=>H(()=>import("./DroneLandingPage-wZtqdYMF.js"),__vite__mapDeps([107,1,2,72,108,3,4,5,44]))),L5=m.lazy(()=>H(()=>import("./AcademyVideos-DwZZiJ2l.js"),__vite__mapDeps([109,1,2,96,10,20,44,3,4,5]))),O5=m.lazy(()=>H(()=>import("./Roadmap-BH9ZqMIw.js"),__vite__mapDeps([110,1,2,86,44,27,3,4,5]))),M5=m.lazy(()=>H(()=>import("./Documentation-D_N2l_92.js"),__vite__mapDeps([111,1,2,86,73,41,44,21,3,4,5]))),Zh=m.lazy(()=>H(()=>import("./PromptGuide-DiE_zhoV.js"),__vite__mapDeps([112,1,2,96,106,113,15,22,114,56,32,115,116,44,41,3,4,5]))),eg=m.lazy(()=>H(()=>import("./PromptGuidesHub-C6ZF-gX-.js"),__vite__mapDeps([117,1,2,96,113,44,27,3,4,5]))),tg=m.lazy(()=>H(()=>import("./VideoPromptGuide-VAnP5iuh.js"),__vite__mapDeps([118,1,2,119,96,106,113,44,24,3,4,5]))),ag=m.lazy(()=>H(()=>import("./GPTImagePromptGuide-Bxw1L611.js"),__vite__mapDeps([120,1,2,96,106,113,69,24,121,23,114,44,3,4,5]))),ig=m.lazy(()=>H(()=>import("./VeoPromptGuide-SS3V-bRm.js"),__vite__mapDeps([122,1,2,96,106,113,41,15,116,27,121,44,3,4,5]))),og=m.lazy(()=>H(()=>import("./SoraPromptGuide-Fv0vwt3Z.js"),__vite__mapDeps([123,1,2,96,106,113,41,15,116,124,121,24,44,3,4,5]))),rg=m.lazy(()=>H(()=>import("./GrokPromptGuide-3okkzHs9.js"),__vite__mapDeps([125,1,2,96,106,113,41,121,15,116,24,124,44,3,4,5]))),ng=m.lazy(()=>H(()=>import("./GPTImage2PromptGuide-M6OIBWNi.js"),__vite__mapDeps([126,1,2,96,106,113,69,24,121,71,44,3,4,5]))),sg=m.lazy(()=>H(()=>import("./SeedancePromptGuide-Epwc6Tyz.js"),__vite__mapDeps([127,1,2,119,96,106,113,44,15,53,3,4,5]))),lg=m.lazy(()=>H(()=>import("./GeminiOmniPromptGuide-BoW1-N_E.js"),__vite__mapDeps([128,1,2,119,96,106,113,44,15,24,3,4,5]))),cg=m.lazy(()=>H(()=>import("./Kling3PromptGuide-DG0m_87f.js"),__vite__mapDeps([129,1,2,119,96,106,113,44,43,24,35,22,3,4,5]))),Mc=m.lazy(()=>H(()=>import("./VideoEditorGuide-D03MNYLD.js"),__vite__mapDeps([130,1,2,96,106,131,48,18,31,68,3,4,5,44]))),z5=m.lazy(()=>H(()=>import("./BoardstylerLive-BL_jHTbo.js"),__vite__mapDeps([132,1,2,3,4,5,73,44,133,29,60]))),B5=m.lazy(()=>H(()=>import("./FloorPlanTo3D-CBnbzvd2.js"),__vite__mapDeps([134,1,2,44,108,34,16,51,135,3,4,5]))),dg=m.lazy(()=>H(()=>import("./FloorplanEditor-BSRd8yaP.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45]))),F5=m.lazy(()=>H(()=>import("./TrimbleCallback-B_sozuN5.js"),__vite__mapDeps([136,1,2,137,3,4,5,44]))),$5=m.lazy(()=>H(()=>import("./AdminLibrary-Bbn8Gyr1.js"),__vite__mapDeps([138,1,2,29,8,11,13,37,24,3,4,5,44]))),V5=m.lazy(()=>H(()=>import("./Partners-DubytQVp.js"),__vite__mapDeps([139,1,2,44,3,4,5]))),U5=m.lazy(()=>H(()=>import("./Shops-1e6Zj2wj.js"),__vite__mapDeps([140,1,2,44,3,4,5]))),q5=m.lazy(()=>H(()=>import("./Schools-r_5IbY9G.js"),__vite__mapDeps([141,1,2,44,57,21,41,56,13,3,4,5]))),G5=m.lazy(()=>H(()=>import("./Unsubscribe-Cxs_dbfD.js"),__vite__mapDeps([142,1,2,70,3,4,5,44]))),W5=m.lazy(()=>H(()=>import("./Kling3Workspace-CKmunxrP.js").then(t=>t.K),__vite__mapDeps([46,1,2,47,48,44,49,26,3,4,5,25,24,27,40,33,41,50,51,31,8,29,10,20,52,34,53]))),H5=m.lazy(()=>H(()=>import("./StudioVideo2-CbAL6O3T.js"),__vite__mapDeps([143,1,2]))),K5=m.lazy(()=>H(()=>import("./Sketch3DLab-CK_B2geF.js"),__vite__mapDeps([144,1,2,3,4,5,9,19,42,36,24,40,17,37,61,15,20,32,43,50,8,39,25,26,52,145,62,135,29,44]))),Y5=m.lazy(()=>H(()=>import("./CreatorsMarketplace-jTFa_3Sv.js"),__vite__mapDeps([146,1,2,147,148,133,16,58,37,28,44,3,4,5]))),Q5=m.lazy(()=>H(()=>import("./CreatorProfile-C1UVObbd.js"),__vite__mapDeps([149,1,2,150,147,148,151,44,133,16,30,97,152,3,4,5]))),J5=m.lazy(()=>H(()=>import("./OrderPage-BhTf3zYf.js"),__vite__mapDeps([153,1,2,150,65,69,30,16,34,63,70,31,97,44,154,29,27,155,3,4,5]))),X5=m.lazy(()=>H(()=>import("./OrderSuccess-D0hTAUDQ.js"),__vite__mapDeps([156,1,2,44,3,4,5]))),Z5=m.lazy(()=>H(()=>import("./CreatorMessages-DD1zRsQd.js"),__vite__mapDeps([157,1,2,150,52,44,3,4,5]))),eD=m.lazy(()=>H(()=>import("./CreatorRegister-BD4ng9NX.js"),__vite__mapDeps([158,1,2,44,133,38,86,42,3,4,5]))),tD=m.lazy(()=>H(()=>import("./CreatorDashboard-Dd04fN6Z.js"),__vite__mapDeps([159,1,2,150,65,147,29,19,69,27,8,154,74,30,152,52,42,44,61,3,4,5]))),aD=m.lazy(()=>H(()=>import("./SamplePage-WSzDSvF9.js"),__vite__mapDeps([160,1,2,3,4,5,44]))),iD=m.lazy(()=>H(()=>import("./Unsubscribed-BIZTtl-I.js"),__vite__mapDeps([161,1,2,3,4,5,44]))),oD=m.lazy(()=>H(()=>import("./WebinarRegistration-DjOBoNxd.js"),__vite__mapDeps([162,1,2,44,97,27,3,4,5]))),rD=m.lazy(()=>H(()=>import("./WebinarLive-CtgnlJHs.js"),__vite__mapDeps([163,1,2,44,27,3,4,5]))),nD=m.lazy(()=>H(()=>import("./CreatorsAcademy-D2kp9Bsy.js"),__vite__mapDeps([164,1,2,96,21,66,24,3,4,5,44]))),sD=m.lazy(()=>H(()=>import("./Exelerator-CBu6Jq81.js"),__vite__mapDeps([165,1,2,21,66,24,14,67,3,4,5,44]))),lD=m.lazy(()=>H(()=>import("./Billing-DF1QcMYg.js"),__vite__mapDeps([166,1,2,39,115,48,70,145,59,3,4,5,44]))),cD=m.lazy(()=>H(()=>import("./WorkflowsLandingPage-DdiRdAHq.js"),__vite__mapDeps([167,1,2,44,74,27,133,3,4,5]))),dD=m.lazy(()=>H(()=>import("./PremiumLanding-DyWYR2FQ.js"),__vite__mapDeps([168,1,2,44,27,155,29,3,4,5]))),uD=m.lazy(()=>H(()=>import("./AcceptInvite-C5E17vpN.js"),__vite__mapDeps([169,1,2,70,3,4,5,44])).then(t=>({default:t.AcceptInvite}))),mD=new W1;function pD(){return q3(),null}const hD=()=>(m.useEffect(()=>{tv()},[]),m.useEffect(()=>{const t=()=>{const a=window.innerHeight*.01;document.documentElement.style.setProperty("--vh",`${a}px`)};t();const e=()=>{setTimeout(t,100)};return window.addEventListener("resize",t),window.addEventListener("orientationchange",e),()=>{window.removeEventListener("resize",t),window.removeEventListener("orientationchange",e)}},[]),o.jsx(F3,{children:o.jsx(H1,{client:mD,children:o.jsx(c2,{defaultTheme:"light",children:o.jsx(U3,{children:o.jsx(DC,{children:o.jsx(xT,{children:o.jsx(J3,{children:o.jsx(RC,{children:o.jsxs(Kf,{children:[o.jsx(_k,{}),o.jsx(t1,{}),o.jsx(a2,{future:{v7_startTransition:!0,v7_relativeSplatPath:!0},children:o.jsxs(u5,{children:[o.jsx(p5,{}),o.jsx(pD,{}),o.jsx(IT,{}),o.jsx(W3,{}),o.jsx(a5,{}),o.jsx(m.Suspense,{fallback:o.jsx("div",{className:"flex items-center justify-center min-h-screen"}),children:o.jsxs(H_,{children:[o.jsx(F,{path:"/",element:o.jsx(Sc,{})}),o.jsx(F,{path:"/en",element:o.jsx(Sc,{})}),o.jsx(F,{path:"/it",element:o.jsx(Sc,{})}),o.jsx(F,{path:"/2",element:o.jsx(dD,{})}),o.jsx(F,{path:"/v2",element:o.jsx(pN,{})}),o.jsx(F,{path:"/auth",element:o.jsx($N,{})}),o.jsx(F,{path:"/dashboard",element:o.jsx(_t,{children:o.jsx(I3,{})})}),o.jsx(F,{path:"/canvas/:projectId",element:o.jsx(_t,{children:o.jsx(h5,{})})}),o.jsx(F,{path:"/inspiration-boards",element:o.jsx(_t,{children:o.jsx(g5,{})})}),o.jsx(F,{path:"/terms",element:o.jsx(b5,{})}),o.jsx(F,{path:"/privacy",element:o.jsx(v5,{})}),o.jsx(F,{path:"/buyer-terms",element:o.jsx(y5,{})}),o.jsx(F,{path:"/creator-agreement",element:o.jsx(x5,{})}),o.jsx(F,{path:"/accessibility",element:o.jsx(w5,{})}),o.jsx(F,{path:"/our-story",element:o.jsx(k5,{})}),o.jsx(F,{path:"/auth/pinterest/callback",element:o.jsx(f5,{})}),o.jsx(F,{path:"/careers",element:o.jsx(P5,{})}),o.jsx(F,{path:"/roadmap",element:o.jsx(O5,{})}),o.jsx(F,{path:"/workflows",element:o.jsx(cD,{})}),o.jsx(F,{path:"/drone",element:o.jsx(R5,{})}),o.jsx(F,{path:"/documentation",element:o.jsx(M5,{})}),o.jsx(F,{path:"/prompt-guides",element:o.jsx(eg,{})}),o.jsx(F,{path:"/he/prompt-guides",element:o.jsx(eg,{})}),o.jsx(F,{path:"/prompt-guide",element:o.jsx(Zh,{})}),o.jsx(F,{path:"/he/prompt-guide",element:o.jsx(Zh,{})}),o.jsx(F,{path:"/video-prompt-guide",element:o.jsx(tg,{})}),o.jsx(F,{path:"/he/video-prompt-guide",element:o.jsx(tg,{})}),o.jsx(F,{path:"/gpt-image-prompt-guide",element:o.jsx(ag,{})}),o.jsx(F,{path:"/he/gpt-image-prompt-guide",element:o.jsx(ag,{})}),o.jsx(F,{path:"/veo-prompt-guide",element:o.jsx(ig,{})}),o.jsx(F,{path:"/he/veo-prompt-guide",element:o.jsx(ig,{})}),o.jsx(F,{path:"/sora-prompt-guide",element:o.jsx(og,{})}),o.jsx(F,{path:"/he/sora-prompt-guide",element:o.jsx(og,{})}),o.jsx(F,{path:"/grok-prompt-guide",element:o.jsx(rg,{})}),o.jsx(F,{path:"/he/grok-prompt-guide",element:o.jsx(rg,{})}),o.jsx(F,{path:"/gpt-image-2-prompt-guide",element:o.jsx(ng,{})}),o.jsx(F,{path:"/he/gpt-image-2-prompt-guide",element:o.jsx(ng,{})}),o.jsx(F,{path:"/seedance-prompt-guide",element:o.jsx(sg,{})}),o.jsx(F,{path:"/he/seedance-prompt-guide",element:o.jsx(sg,{})}),o.jsx(F,{path:"/gemini-omni-prompt-guide",element:o.jsx(lg,{})}),o.jsx(F,{path:"/he/gemini-omni-prompt-guide",element:o.jsx(lg,{})}),o.jsx(F,{path:"/kling-3-prompt-guide",element:o.jsx(cg,{})}),o.jsx(F,{path:"/he/kling-3-prompt-guide",element:o.jsx(cg,{})}),o.jsx(F,{path:"/video-editor",element:o.jsx(Mc,{})}),o.jsx(F,{path:"/en/video-editor",element:o.jsx(Mc,{})}),o.jsx(F,{path:"/it/video-editor",element:o.jsx(Mc,{})}),o.jsx(F,{path:"/boardstyler-love",element:o.jsx(z5,{})}),o.jsx(F,{path:"/boardstyler-live",element:o.jsx(ju,{to:"/boardstyler-love",replace:!0})}),o.jsx(F,{path:"/floorplansto3d",element:o.jsx(B5,{})}),o.jsx(F,{path:"/floorplan-editor",element:o.jsx(_t,{children:o.jsx(eh,{children:o.jsx(dg,{})})})}),o.jsx(F,{path:"/floorplan-editor/:projectId",element:o.jsx(_t,{children:o.jsx(eh,{children:o.jsx(dg,{})})})}),o.jsx(F,{path:"/trimble-callback",element:o.jsx(_t,{children:o.jsx(F5,{})})}),o.jsx(F,{path:"/admin/library",element:o.jsx(_t,{children:o.jsx(DT,{children:o.jsx($5,{})})})}),o.jsx(F,{path:"/blog",element:o.jsx(A5,{})}),o.jsx(F,{path:"/blog/author/:slug",element:o.jsx(Jh,{})}),o.jsx(F,{path:"/blog/:slug",element:o.jsx(E5,{})}),o.jsx(F,{path:"/he/blog",element:o.jsx(I5,{})}),o.jsx(F,{path:"/he/blog/author/:slug",element:o.jsx(Jh,{})}),o.jsx(F,{path:"/he/blog/:slug",element:o.jsx(D5,{})}),o.jsx(F,{path:"/compare/:slug",element:o.jsx(Xh,{})}),o.jsx(F,{path:"/he/compare/:slug",element:o.jsx(Xh,{})}),o.jsx(F,{path:"/ai-tools-for-interior-designers",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/ai-tools-for-interior-designers",element:o.jsx(qe,{})}),o.jsx(F,{path:"/ai-moodboard-tool",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/ai-moodboard-tool",element:o.jsx(qe,{})}),o.jsx(F,{path:"/floorplan-to-3d-ai",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/floorplan-to-3d-ai",element:o.jsx(qe,{})}),o.jsx(F,{path:"/ai-rendering-for-designers",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/ai-rendering-for-designers",element:o.jsx(qe,{})}),o.jsx(F,{path:"/ai-video-interior-design",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/ai-video-interior-design",element:o.jsx(qe,{})}),o.jsx(F,{path:"/hebrew-design-software",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/hebrew-design-software",element:o.jsx(qe,{})}),o.jsx(F,{path:"/free-ai-tools-interior",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/free-ai-tools-interior",element:o.jsx(qe,{})}),o.jsx(F,{path:"/seedance-interior-design",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/seedance-interior-design",element:o.jsx(qe,{})}),o.jsx(F,{path:"/gemini-omni-interior-design",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/gemini-omni-interior-design",element:o.jsx(qe,{})}),o.jsx(F,{path:"/gpt-image-2-interior-design",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/gpt-image-2-interior-design",element:o.jsx(qe,{})}),o.jsx(F,{path:"/3d-visualization-ai",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/3d-visualization-ai",element:o.jsx(qe,{})}),o.jsx(F,{path:"/kitchen-design-ai",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/kitchen-design-ai",element:o.jsx(qe,{})}),o.jsx(F,{path:"/ai-for-architects",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/ai-for-architects",element:o.jsx(qe,{})}),o.jsx(F,{path:"/home-staging-ai",element:o.jsx(qe,{})}),o.jsx(F,{path:"/he/home-staging-ai",element:o.jsx(qe,{})}),o.jsx(F,{path:"/payment-success",element:o.jsx(_5,{})}),o.jsx(F,{path:"/payment-cancelled",element:o.jsx(S5,{})}),o.jsx(F,{path:"/billing",element:o.jsx(_t,{children:o.jsx(lD,{})})}),o.jsx(F,{path:"/help-center",element:o.jsx(C5,{})}),o.jsx(F,{path:"/help-center/faq",element:o.jsx(N5,{})}),o.jsx(F,{path:"/academy/videos",element:o.jsx(L5,{})}),o.jsx(F,{path:"/dashboard/support",element:o.jsx(_t,{children:o.jsx(T5,{})})}),o.jsx(F,{path:"/dashboard/support/new",element:o.jsx(_t,{children:o.jsx(j5,{})})}),o.jsx(F,{path:"/partners",element:o.jsx(V5,{})}),o.jsx(F,{path:"/shops",element:o.jsx(U5,{})}),o.jsx(F,{path:"/schools",element:o.jsx(q5,{})}),o.jsx(F,{path:"/unsubscribe",element:o.jsx(G5,{})}),o.jsx(F,{path:"/unsubscribed",element:o.jsx(iD,{})}),o.jsx(F,{path:"/webinar",element:o.jsx(oD,{})}),o.jsx(F,{path:"/webinarlive",element:o.jsx(rD,{})}),o.jsx(F,{path:"/creators-academy",element:o.jsx(nD,{})}),o.jsx(F,{path:"/exelerator",element:o.jsx(sD,{})}),o.jsx(F,{path:"/invite/:token",element:o.jsx(_t,{children:o.jsx(uD,{})})}),o.jsx(F,{path:"/creators",element:o.jsx(Y5,{})}),o.jsx(F,{path:"/creators/register",element:o.jsx(eD,{})}),o.jsx(F,{path:"/creators/dashboard",element:o.jsx(_t,{children:o.jsx(tD,{})})}),o.jsx(F,{path:"/creators/messages",element:o.jsx(_t,{children:o.jsx(Z5,{})})}),o.jsx(F,{path:"/creators/:slug",element:o.jsx(Q5,{})}),o.jsx(F,{path:"/sample/:token",element:o.jsx(aD,{})}),o.jsx(F,{path:"/order/success",element:o.jsx(_t,{children:o.jsx(X5,{})})}),o.jsx(F,{path:"/order/:orderId",element:o.jsx(_t,{children:o.jsx(J5,{})})}),o.jsx(F,{path:"/kling3-workspace",element:o.jsx(_t,{children:o.jsx(W5,{})})}),o.jsx(F,{path:"/studio-video2",element:o.jsx(_t,{children:o.jsx(H5,{})})}),o.jsx(F,{path:"/sketch3d-lab",element:o.jsx(_t,{children:o.jsx(K5,{})})}),o.jsx(F,{path:"*",element:o.jsx(D3,{})})]})})]})})]})})})})})})})})})),{slice:gD,forEach:fD}=[];
vendor: 1,044 bytes, line 585
585function bD(t){return fD.call(gD.call(arguments,1),e=>{if(e)for(const a in e)t[a]===void 0&&(t[a]=e[a])}),t}function vD(t){return typeof t!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(a=>a.test(t))}const ug=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,yD=function(t,e){const i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},r=encodeURIComponent(e);let n=`${t}=${r}`;if(i.maxAge>0){const s=i.maxAge-0;if(Number.isNaN(s))throw new Error("maxAge should be a Number");n+=`; Max-Age=${Math.floor(s)}`}if(i.domain){if(!ug.test(i.domain))throw new TypeError("option domain is invalid");n+=`; Domain=${i.domain}`}if(i.path){if(!ug.test(i.path))throw new TypeError("option path is invalid");n+=`; Path=${i.path}`}if(i.expires){if(typeof i.expires.toUTCString!="function")throw new TypeError("option expires is invali
585d");n+=`; Expires=${i.expires.toUTCString()}`}if(i.httpOnly&&(n+="; HttpOnly"),i.secure&&(n+="; Secure"),i.sameSite)switch(typeof i.sameSite=="string"?i.sameSite.toLowerCase():i.sameSite){case!0:n+="; SameSite=Strict";break;case"lax":n+="; SameSite=Lax";break;case"strict":n+="; SameSite=Strict";break;case"none":n+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return i.partitioned&&(n+="; Partitioned"),n},mg={create(t,e,a,i){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};a&&(r.expires=new Date,r.expires.setTime(r.expires.getTime()+a*60*1e3)),i&&(r.domain=i),document.cookie=yD(t,e,r)},read(t){const e=`${t}=`,a=document.cookie.split(";");for(let i=0;i<a.length;i++){let r=a[i];for(;r.charAt(0)===" ";)r=r.substring(1,r.length);if(r.indexOf(e)===0)return r.substring(e.length,r.length)}return null},remove(t,e){this.create(t,"",-1,e)}};var xD={name:"cookie",lookup(t){let{lookupCookie:e}=t;if(e&&typeof document<"u")return mg.read(e)||void 0},cacheUserLanguage(t,e){let{lookupCookie:a,cookieMinutes:i,cookieDomain:r,cookieOptions:n}=e;a&&typeof document<"u"&&mg.create(a,t,i,r,n)}},wD={name:"querystring",lookup(t){var i;let{lookupQuerystring:e}=t,a;if(typeof window<"u"){let{search:r}=window.location;!window.location.search&&((i=window.location.hash)==null?void 0:i.indexOf("?"))>-1&&(r=window.location.hash.substring(window.location.hash.indexOf("?")));const s=r.substring(1).split("&");for(let l=0;l<s.length;l++){const c=s[l].indexOf("=");c>0&&s[l].substring(0,c)===e&&(a=s[l].substring(c+1))}}return a}},kD={name:"hash",lookup(t){var r;let{lookupHash:e,lookupFromHashIndex:a}=t,i;if(typeof window<"u"){const{hash:n}=window.location;if(n&&n.length>2){const s=n.substring(1);if(e){const l=s.split("&");for(let c=0;c<l.length;c++){const d=l[c].indexOf("=");d>0&&l[c].substring(0,d)===e&&(i=l[c].substring(d+1))}}if(i)return i;if(!i&&a>-1){const l=n.match(/\/([a-zA-Z-]*)/g);return Array.isArray(l)?(r=l[typeof a=="number"?a:0])==null?void 0:r.replace("/",""):void 0}}}return i}};let _o=null;const pg=()=>{if(_o!==null)return _o;try{if(_o=typeof window<"u"&&window.localStorage!==null,!_o)return!1;const t="i18next.translate.boo";window.localStorage.setItem(t,"foo"),window.localStorage.removeItem(t)}catch{_o=!1}return _o};var _D={name:"localStorage",lookup(t){let{lookupLocalStorage:e}=t;if(e&&pg())return window.localStorage.getItem(e)||void 0},cacheUserLanguage(t,e){let{lookupLocalStorage:a}=e;a&&pg()&&window.localStorage.setItem(a,t)}};let So=null;const hg=()=>{if(So!==null)return So;try{if(So=typeof window<"u"&&window.sessionStorage!==null,!So)return!1;const t="i18next.translate.boo";window.sessionStorage.setItem(t,"foo"),window.sessionStorage.removeItem(t)}catch{So=!1}return So};var SD={name:"sessionStorage",lookup(t){let{lookupSessionStorage:e}=t;if(e&&hg())return window.sessionStorage.getItem(e)||void 0},cacheUserLanguage(t,e){let{lookupSessionStorage:a}=e;a&&hg()&&window.sessionStorage.setItem(a,t)}},CD={name:"navigator",lookup(t){const e=[];if(typeof navigator<"u"){const{languages:a,userLanguage:i,language:r}=navigator;if(a)for(let n=0;n<a.length;n++)e.push(a[n]);i&&e.push(i),r&&e.push(r)}return e.length>0?e:void 0}},TD={name:"htmlTag",lookup(t){let{htmlTag:e}=t,a;const i=e||(typeof document<"u"?document.documentElement:null);return i&&typeof i.getAttribute=="function"&&(a=i.getAttribute("lang")),a}},jD={name:"path",lookup(t){var r;let{lookupFromPathIndex:e}=t;if(typeof window>"u")return;const a=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(a)?(r=a[typeof e=="number"?e:0])==null?void 0:r.replace("/",""):void 0}},ND={name:"subdomain",lookup(t){var r,n;let{lookupFromSubdomainIndex:e}=t;const a=typeof e=="number"?e+1:1,i=typeof window<"u"&&((n=(r=window.location)==null?void 0:r.hostname)==null?void 0:n.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i));if(i)return i[a]}};let rx=!1;try{document.cookie,rx=!0}catch{}const nx=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];rx||nx.splice(1,1);const PD=()=>({order:nx,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:t=>t});class sx{constructor(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(e,a)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=bD(a,this.options||{},PD()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=r=>r.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=i,this.addDetector(xD),this.addDetector(wD),this.addDetector(_D),this.addDetector(SD),this.addDetector(CD),this.addDetector(TD),this.addDetector(jD),this.addDetector(ND),this.addDetector(kD)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,a=[];return e.forEach(i=>
585{if(this.detectors[i]){let r=this.detectors[i].lookup(this.options);r&&typeof r=="string"&&(r=[r]),r&&(a=a.concat(r))}}),a=a.filter(i=>i!=null&&!vD(i)).map(i=>this.options.convertDetectedLanguage(i)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?a:a.length>0?a[0]:null}cacheUserLanguage(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;a&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||a.forEach(i=>{this.detectors[i]&&this.detectors[i].cacheUserLanguage(e,this.options)}))}}sx.type="languageDetector";const AD={backToDashboard:"Back to Dashboard",getStarted:"Get Started",materials:"Materials",materialsDesc:"Material reference bank",pricing:"Pricing",pricingDesc:"Simple, transparent plans",aiAgent:"AI Agent",aiAgentDesc:"Specialized AI collaborators",features:"Features",featuresDesc:"All-in-one design toolkit"},ED={tryFree:"Try Free - No Credit Card",tryFreeShort:"Try Free - No Card",getStartedFree:"Get Started Free",learnMore:"Learn more",gotIt:"Got it",cancel:"Cancel",copyLink:"Copy Link",copied:"Copied!",openInBrowser:"Open in Browser",useEmailInstead:"Use Email Instead",toggle:"Toggle"},ID={switchToLight:"Switch to light mode",switchToDark:"Switch to dark mode"},DD={interiorVibingPlatform:"Interior vibing platform"},RD={title:"Insufficient Tokens",description:"You don't have enough tokens to use this feature.",feature:"Feature:",requiredTokens:"Required tokens:",yourBalance:"Your balance:",tokensNeeded:"Tokens needed:",cta:"Purchase more tokens to continue using AI-powered features and unlock the full potential of your creative workflow.",buyTokens:"Buy Tokens"},LD={eyebrow:"System update",title:"A new version of Boardspace is available",description:"We've improved the system. Update now to continue with the most stable version.",note:"Finish any active action before updating. You'll return to this exact screen afterward.",updateNow:"Update now",later:"Later",progress:{title:"Updating Boardspace",saving:"Waiting for your work to save…",preparing:"Preparing the new version…",loading:"Loading system components…",activating:"Starting the new version…",complete:"Update complete",completeTitle:"The new version is ready"},error:{eyebrow:"Update paused",title:"We couldn't complete the update",status:"Action required",description:"Your work is still in place. Try again or continue temporarily with the current version.",code:"Error code: {{code}}",retry:"Try again",continue:"Continue with current version"}},OD={nav:AD,buttons:ED,theme:ID,footer:DD,insufficientTokens:RD,appUpdate:LD},MD={title1:"$100 per render?",title2:"Or 10¢ with AI?",subtitle:"Stop paying studios <strong>$100-800 per render</strong> and waiting <strong>2-3 days</strong> for every revision",tokensOffer:"50 free trials • No credit card required",limitedOffer:"Start creating now"},zD={title1:"Your Design Studio,",title2:"Reimagined with",titleHighlight:"AI",subtitle:"For interior designers who ship. Every render. Every moodboard. One canvas.",trustBadge:"Free to start. No credit card required.",getStarted:"Start now",tokensOffer:"Try now — 50 free trials",limitedOffer:"without a credit card",designersSaved:"• 750 designers saved $450K last month •",freeForever:"free forever"},BD={title:"Welcome designers!",p1:"We're building a creative community—so everyone who shares their designs gets free tokens!",p2:"Join early for unlimited free usage—no credit card needed.",p3:"We want to see your ideas: publish images, videos, or 3D models related to interior/exterior design.",p4:"You choose to share as yourself or anonymously.",p5:"This is to inspire each other and help everyone grow."},FD={styleMatch:{title:"StyleMatch",description:"I'll craft 6-8 photorealistic rooms that perfectly echo your image's style, color story, and material choices—all bundled into one presentation board for you.",tooltip:"Generate multi-space design consistency"},designDNA:{title:"DesignDNA",description:"I'll study your aesthetic and handpick 10-15 furniture and decor pieces—complete with color swatches—that align flawlessly with your signature look.",tooltip:"Extract design DNA and curated items"},kitchenBoard:{title:"KitchenBoard",description:"I'll generate six unique material and color palette variations of your kitchen design, all inspired by the latest Milan 2024-2025 trends.",tooltip:"Generate 6 kitchen material & color variations"}},$D={designersSaved:"250+ designers saved $450K last month",freeForever:"Free forever"},VD={before:"Before",after:"After"},UD="See how it works",qD={headline:'Complete Client <span class="text-[#E60023] dark:text-[#FF6B6B]">Presentation: $0.75</span>',description:"SketchUp <span class='text-emerald-500 font-bold'>→</span> Render <span class='text-emerald-500 font-bold'>→</span> Materials <span class='text-emerald-500 font-bold'>→</span> StyleMatch <span class='text-emerald-500 font-bold'>→</span> Video with sound. Complete workflow in 3 minutes. Rendering studio: $500+ + week wait.",comingSoon:"Video coming soon",duration:"3 minutes",cost:"$0.75 total",output:"Video + renders",costBreakdown:{title:"This complete workflow cost <strong>$0.75</strong> and took 3 minutes:",sketch:"Sketch → Render (5¢)",material:"Material swap (10¢)",
585styleMatch:"StyleMatch presentation (10¢)",video:"Video with sound (50¢)",studio:"Rendering studio for same package: <strong>$500-800 + 1 week.</strong>"}},GD={title:"All the Best AI Models. One Vibe."},WD={badge:"Our Podcast",title:"AI in Design & Architecture 🏚️",subtitle:"Episode 150 with Chaim Legziel and Tal Benish — AI Pashtut Podcast",iframeTitle:"AI Pashtut Podcast - Episode 150",watchOnYouTube:"Watch on YouTube"},HD={title:"250+ Designers Replaced V-Ray with AI",subtitle:"They saved <strong>$450K</strong> last month. Every image below cost <strong>$0.05</strong> and took less than 10 seconds to create.",stats:{designers:"250+ designers",saved:"$450K saved",cheaper:"95% cheaper than studios"}},KD="Before (sketch)",YD="Option",QD="Actual results from the video above",JD="Voice commands coming soon",XD={title:'Explore Our <span class="text-[#E60023] dark:text-[#FF6B6B]">Material Reference Bank</span>',subtitle:"Browse our curated library of material references and visualize how they transform your designs with AI-powered rendering.",items:{brownLeather:"Brown Leather",woodWallPanel:"Wood Wall Panel",oxidizeFloor:"Oxidize Floor",warmTaupeBoucle:"Warm Taupe Boucle"},featuresList:{materialLibrary:{title:"Material Library",description:"Hundreds of real materials ready to apply"},aiTransformation:{title:"AI Transformation",description:"Instant visualization with AI-powered rendering"},realTimePreview:{title:"Real-Time Preview",description:"See changes instantly as you design"}}},ZD={title:'Choose <span class="text-[#E60023] dark:text-[#FF6B6B]">Your</span> Plan',subtitle:"Start free with 5 AI edits, then upgrade to unlock unlimited features",free:{name:"Free",description:"Perfect for getting started",features:{unlimitedBoards:"Unlimited boards",signupTokens:"5 free edits",earnTokens:"Earn tokens by watching videos"}},perMonth:"/month",tokensPerMonth:"tokens/month",everythingInFree:"Everything in Free",priorityProcessing:"Priority AI processing",unlimitedCollaborators:"Unlimited collaborators",mostPopular:"Most popular",whatCanIDo:"What can I do with {{tokens}} tokens?",getStarted:"Get started",planNames:{starter:"Starter",pro:"Professional",enterprise:"Enterprise"},tokenUsage:{quickEdit:"Quick edits + Sketch to Real",complexEditing:"Complex editing and remix images",videosWithSound:"Video with sound",interiorPresentations:"Interior design presentations","3dModels":"3D models",upscale:"Upscaling: Free, unlimited",removeBackground:"Backgroun
585d removal: free, unlimited"}},eR={title:'Transform Multiple Images Into <span class="text-[#E60023] dark:text-[#FF6B6B]">One Cohesive Design</span>',subtitle:"Watch how we seamlessly combine 3 different images into one beautifully styled living room with AI-powered design consistency"},tR={title:"Your Infinite Canvas, Endless Boardspace",subtitle:"An unlimited canvas where your ideas have no boundaries. Create, organize, and collaborate on endless design spaces without limits.",items:{endlessSpace:{title:"Endless Space",description:"No boundaries, no limits. Your boardspace expands infinitely as you add more ideas, images, and designs."},unlimitedOrganization:{title:"Unlimited Organization",description:"Create unlimited boards and projects. Organize everything from inspiration to final designs in one endless workspace."},seamlessCollaboration:{title:"Seamless Collaboration",description:"Share your infinite canvas with team members. Collaborate in real-time on endless design spaces."},everythingInOnePlace:{title:"Everything in One Place",description:"Images, videos, materials, AI generations - all on one infinite canvas that grows with your creativity."},pinterestIntegration:{title:"Pinterest Integration",description:"Import pins directly to your infinite canvas. Free forever - no tokens required. Seamlessly bring inspiration from Pinterest into your endless workspace."}}},aR={tagline:"The infinite canvas for interior design professionals and enthusiasts. Where inspiration becomes reality.",newsletter:{title:"Get design tips & updates",placeholder:"[email protected]",subscribe:"Subscribe"},sections:{product:"Product",resources:"Resources",promptGuides:"Prompt Guides for Designers",company:"Company"},links:{features:"Features",pricing:"Pricing",workflows:"Workflows",creators:"Creators",roadmap:"Roadmap",documentation:"Documentation",academy:"Academy",blog:"Blog",promptGuide:"Nano Banana Prompt Guide",videoPromptGuide:"Kling O1 Video Prompt Guide",gptImagePromptGuide:"GPT-image-1.5 Prompt Guide",veoPromptGuide:"Veo 3.1 Video Prompt Guide",soraPromptGuide:"Sora 2 Video Prompt Guide",grokPromptGuide:"Grok Video Prompt Guide",allPromptGuides:"All Prompt Guides",gptImage2PromptGuide:"GPT Image 2 Prompt Guide",seedancePromptGuide:"Seedance 2 Prompt Guide",geminiOmniPromptGuide:"Gemini Omni Prompt Guide",kling3PromptGuide:"Kling 3 Prompt Guide",floorPlanTo3D:"Floor Plan to 3D Guide",ourStory:"Our Story",careers:"Careers",privacy:"Privacy",terms:"Terms",buyerTerms:"Buyer terms",creatorAgreement:"Creator agreement",accessibility:"Accessibility"},copyright:"© 2025 BoardSpace.ai — Built with passion for design lovers",madeWith:"Made with ❤️ for the interior design community"},iR={title:'Learn to design like <span class="text-[#E60023] dark:text-[#FF6B6B]">professionals</span>'},oR={uploadImage:"Uploaded image",beforeImage:"Before image",finalResult:"Final result",demoComingSoon:"Demo coming soon",everythingAutomatic:"Everything is automatic",oneClick:"One click",workflowsCount:"{{count}} workflows",title1:"Upload an image, press play,",title2:"the workflow does everything automatically",description:"{{total}} workflows are available — {{videos}} video workflows and {{images}} image workflows. No prompts and no typing: just drag an image into a workflow, press play, and get the result.",uploadImageLabel:"Upload an image",everythingAutomaticDesc:"Just drag an image and the work begins",oneClickDesc:"Press play and the result is ready in minutes",workflowsDesc:"{{videos}} video workflows and {{images}} image workflows — all in one place"},rR={generalBadge:"general",badge:"Boardspace Academy",headline:"Learn to design like a pro",description:"Short and focused tutorial videos that will help you start creating amazing designs in minutes",watchAll:"Watch all lessons",lessonsAvailable:"{{count}} lessons available • More coming soon"},nR={badge:"what comes next",title:"road map",subtitle:"We're constantly building new features and improving Boardspace. Here's what we're working on and what's coming next.",status:{completed:"Completed",inProgress:"In Progress",planned:"Planned"},items:{2026:{title:"Expanding the platform",description:"Expanding into new markets and adding corporate features.",features:["Mobile apps (iOS and Android)","AR/VR visualization","Enterprise SSO and Security","API and webhooks","White-label solutions"]},q4_2024:{title:"The launch of the central platform",description:"We launched the Infinite Canvas with AI-powered image generation and Pinterest integration.",features:["Infinite canvas with real-time collaboration","Create AI images with multiple models","Pinterest integration and inspiration boards","Token based pricing system","Material library bank"]},q1_2025:{title:"Video AI and advanced features",description:"We've expanded AI capabilities with improved video creation and collaboration tools.",features:["Video creation (Kling, WAN, LTX, Seedance)","Multi-angle workflow automation","Client collaboration boards","Advanced AI agents (StyleMatch, DesignDNA, KitchenBoard)","Integration of 3D models"]},q2_2025:{title:"Improved AI and workflow tools",description:"Improving AI quality, adding new models, and speeding up designer workflows.",features:["Flux 2.0 Pro integration","Nano Banana Pro supp
585ort","Advanced prompt engineering","Batch processing capabilities","Custom AI model training"]},q3_2025:{title:"Collaboration and team features",description:"Building powerful collaboration and project management tools for teams.",features:["Team workspaces and permissions","Real-time collaborative editing","Project template library","Client presentation mode","Version history and rollback"]},q4_2025:{title:"Design intelligence and automation",description:"AI-based design assistance and automated workflow optimization.",features:["Smart style recommendations","Automatic material matching","Cost estimation tool","Supplier integration","Analysis of design trends"]}},cta:{badge:"Do you have any ideas?",title:"We'd love to hear your feedback and feature requests. Your input helps shape the future of Boardspace.",button:"Share your ideas"},keyFeatures:"key features"},sR={badge:"Full guide",title:"Documentation",subtitle:"Everything you need to know to create amazing designs with Boardspace",searchPlaceholder:"Search the documentation...",sections:{gettingStarted:{title:"Getting Started",description:"Learn the basics and start creating beautiful designs",articles:{creatingFirstProject:{title:"Creating your first project",content:"Start by clicking 'New Project' on your dashboard. Give it a name and choose a canvas size. You can always change the size later. Once created, you'll have an endless canvas to work with."},understandingCanvas:{title:"Understanding the canvas",content:"The canvas is your workspace where all your design elements live. You can zoom, move and arrange photos freely. Use the toolbar to the left for tools, and the sidebar to the right for AI features."},uploadingImages:{title:"Uploading Images",content:"Drag and drop images directly onto your canvas, or use the upload button. Supported formats: JPG, PNG, WebP. The images are automatically adjusted for fast loading."},navigationBasics:{title:"Navigation Basics",content:"Use the mouse wheel to zoom, click and drag to move. Double click on any image to open it in full view. Right click for context menus with quick actions."}}},aiFeatures:{title:"AI features",description:"Master our AI-powered design tools",articles:{aiImageGeneration:{title:"AI image creation",content:"Create photorealistic interior designs from textual prompts. Use descriptive prompts like 'modern living room with natural light' for best results. Each creation costs 5 Tokens ($0.05)."},videoGeneration:{title:"Video creation",content:"Create 10-second videos from 2 images using our video templates (Kling, WAN, LTX, Seedance). Upload a start and end frame, and AI will animate the transition. Video generation costs 15–30 tokens depending on quality."},aiAgentsOverview:{title:"AI Agents Overview",content:"Our professional AI agents help with specific tasks: StyleMatch creates rooms consistent in style, DesignDNA finds matching furniture, and KitchenBoard creates kitchen variations."},promptEngineeringTips:{title:"Prompt Engineering Tips",content:"Be specific about style, colors, materials and atmosphere. Include room type, lighting and ambiance. Example: 'Scandinavian bedroom with white walls, natural wood, soft morning light, minimalist design'."},imageToImageTransformations:{title:"Image-to-image transformations",content:"Upload a sketch or reference image and turn it into photorealistic renders. Perfect for quickly visualizing client ideas. Works with sketches, inspiration boards or existing photos."}}},canvasCollaboration:{title:"Canvas and collaboration",description:"Work together seamlessly",articles:{infiniteCanvas:{title:"Infinite canvas",content:"Your canvas has no limits. Organize projects horizontally or vertically. Use frames to group related images. The canvas automatically saves any changes, so you'll never lose your work."},clientCollaborationBoards:{title:"Client Collaboration Boards",content:"Share specific boards with clients for feedback. They can view, comment, and approve designs without an account. Perfect for presenting concepts and collecting approvals."},teamWorkspaces:{title:"Team workspaces",content:"Invite team members to collaborate in real time. See each other's cursors and watch changes appear instantly. Perfect for design team
585s working on the same project."},pinterestIntegration:{title:"Pinterest integration",content:"Import inspiration directly from Pinterest. Click on any Pinterest pin to add it to your canvas instantly. Keep all your inspiration in one place."},sharingExporting:{title:"Sharing and exporting",content:"Export your boards as high resolution images or PDFs. Share via a link with view-only or edit permissions. Perfect for presentations and client handovers."}}},tokenSystem:{title:"Token System",description:"Understand our pricing model",articles:{whatAreTokens:{title:"What Are Tokens?",content:"Tokens are credits used to access AI features. Each feature has a token cost. 1 token = $0.01. Most image generations cost 5 tokens ($0.05), while videos cost 15–30 tokens depending on quality."},freeTokens:{title:"Free Tokens",content:"Every new user gets 5 free tokens to start. You can earn additional tokens by watching short tutorial videos. Use them to explore all features for free."},tokenCostsByFeature:{title:"Token costs by feature",content:"Image generation: 5 tokens | Video (480p): 15 tokens | Video (720p): 20 tokens | Video (1080p): 30 tokens | AI agents: 10–15 tokens | 3D generation: 25 tokens"},purchasingTokens:{title:"Purchasing Tokens",content:"Buy token packages when you need more. Packages start at $10 for 1,000 tokens, and larger packages offer better value. Tokens never expire, so purchase them whenever convenient."},trackingUsage:{title:"Usage tracking",content:"View your token balance in the upper-right corner and see detailed usage history in Settings. You will receive an alert when your balance is low so you do not run out mid-project."}}},bestPractices:{title:"Best practices",description:"Tips from professional designers",articles:{organizingProjects:{title:"Project organization",content:"Create separate projects for each client or design phase. Use descriptive names and group related images in frames to keep your canvas easy to navigate."},optimizingAiPrompts:{title:"Optimizing AI Prompts",content:"Start with the type of room, then add style, colors, materials, lighting and atmosphere. Be specific but concise. Reference famous styles if it helps (eg, 'Mid-century modern')."},workflowEfficiency:{title:"Workflow efficiency",content:"Use AI to quickly create multiple variations. Compare side by side. Save favorites. Repeat the best concepts. Save time on manual rendering."},materialReferenceBank:{title:"Material Reference Bank",content:"Browse our curated material library, apply materials to your designs instantly, and see how different finishes look in context before purchasing."},clientPresentations:{title:"Client Presentations",content:"Create presentation boards with multiple options. Use frames to organize concepts. Export as PDF for client meetings. Get feedback directly on the canvas."}}},troubleshooting:{title:"Troubleshooting",description:"Common problems and solutions",articles:{imagesNotUploading:{title:"Images Are Not Uploading",content:"Check the file size (maximum 10MB per image). Make sure the format is JPG, PNG or WebP. Clear the browser cache. Try a different browser if problems persist."},aiGenerationFailed:{title:"AI Generation Failed",content:"Check your token balance and make sure you have enough tokens for the feature. Verify your internet connection, then try a simpler prompt if generation still fails."},canvasNotLoading:{title:"Canvas Is Not Loading",content:"Refresh the page, clear the browser cache, and check your internet connection. Disable browser extensions that may interfere, or try an incognito window."},slowPerformance:{title:"Slow performance",content:"Close other browser tabs. Clear the browser cache. Use Chrome or Firefox for best performance. Reduce the number of images on the canvas if you are working with many elements."},accountIssues:{title:"Account Issues",content:"Verify your email if you haven't already. Check your spam folder for verification emails. Reset password if you can't connect. Contact support for account recovery."}}}},cta:{badge:"Need more help?",title:"Can't find what you're looking for? Our support team is here to help.",visitHelpCenter:"Visit the help center",contactSupport:"Contact support"}},lR={badge:"Design blog",title:"Design insights and AI tools",subtitle:"Discover how AI is changing interior design workflows, reducing costs and accelerating creativity.",stayUpdated:{title:"Stay Updated",description:"Get the latest design insights, AI tool updates and workflow tips straight to your inbox.",subscribe:"Sign up",placeholder:"[email protected]"},readArticle:"Read Article"},cR={title:"Our story: turning inspiration into reality",opening:{p1:"Boardspace was born from a simple dream—to give interior designers quick and easy inspiration, so you can focus on what you love most:",highlight:"Creating beautiful space
585s",p2:"We wanted to build a place where you can manage your projects, share ideas with your team, and find fresh design materials—without having to deal with different tools or spend hours searching the Internet."},whyWeBuiltIt:{title:"We know how much you care about your profession",subtitle:"That's why Boardspace is specially adapted for you:",features:{generate:"Instantly create new ideas and style boards",organize:"Organize and run all your projects in one place",collaborate:"Collaborate privately with clients or colleagues",findMaterials:"Find real products and materials, ready to put into your designs"}},freeForever:{title:"And most importantly—you can do it all",highlight:"for free",description:"Each user starts with 5 free tokens to explore all that Boardspace has to offer. Watch short tutorial videos and earn up to 30 more tokens! So you can keep creating, testing and sharing—without strings attached."},journey:{title:"We are just getting started",description:"We are at the beginning of our journey and are always working to improve things. Your feedback and ideas are really important to us. Tell us how Boardspace can help you, and help us build a platform that makes your work easier, more fun and more creative."},closing:"Welcome to Boardspace—let's shape the future together."},dR={badge:"We are building the future of interior design",title:"Careers at Boardspace",subtitle:"Join a respectful, distributed team building tools that turn ideas into compelling experiences. We design with empathy, ship with focus, and celebrate thoughtful craft.",introduceYourself:"Introduce Yourself",whatYoullDo:"What You'll Do",whatMakesYouGreatFit:"What makes you a great match?",culture:{badge:"Culture",description:"We believe respectful collaboration, clear ownership, and curiosity lead to the best work. If you value thoughtful craft and rapid experimentation, we would love to meet you."},modal:{badge:"Introduce Yourself",title:"Send a quick hello",description:"Share a short note, your portfolio, or what excites you about joining Boardspace. We will open your email client with everything ready to send to [email protected].",message:"Message",placeholder:"Hello Boardspace team, I am excited about the position of Senior Frontend Engineer because...",cancel:"Cancel",send:"Send to [email protected]",opening:"Opening your email client...",error:"Please add a short message or introduction."}},uR={hero:MD,floatingHero:zD,welcome:BD,features:FD,credibility:$D,beforeAfter:VD,scrollIndicator:UD,video:qD,aiModels:GD,podcast:WD,gallery:HD,beforeSketch:KD,option:YD,actualResults:QD,voiceComingSoon:JD,materials:XD,pricing:ZD,aiAgent:eR,featuresSection:tR,footer:aR,academySection:iR,workflows:oR,academy:rR,roadmap:nR,documentation:sR,blog:lR,ourStory:cR,careers:dR},mR={title:"Create New Account",subtitle:"Join Boardspace and start creating",tab:"Sign Up",fullName:"Full Name",fullNamePlaceholder:"Enter your full name",createPassword:"Create a secure password",createAccount:"Create Account",creatingAccount:"Creating Account...",byContinuing:"By continuing, you agree to our",privacyPolicy:"Privacy Policy",and:"and",termsOfService:"Terms of Service",googleOneClick:"Sign up with Google in one click",orSignUpWithEmail:"Or sign up with email"},pR={title:"Welcome Back",subtitle:"Sign in to your Boardspace account",tab:"Sign In",enterPassword:"Enter your password",signIn:"Sign In",signingIn:"Signing In...",forgotPassword:"Forgot password?",resetPassword:"Reset Password",sendResetLink:"Send Reset Link",sendingResetLink:"Sending...",magicLink:"Sign in with Magic Link",sendMagicLink:"Send Magic Link",sendingMagicLink:"Sending...",magicLinkSent:"Magic link sent! Check your email.",resetLinkSent:"Password reset link sent! Check your email.",newPassword:"New Password",confirmPassword:"Confirm Password",updatePassword:"Update Password",updatingPassword:"Updating...",passwordUpdated:"Password updated successfully!",enterNewPassword:"Enter your new password",confirmNewPassword:"Confirm your new password",passwordsDoNotMatch:"Passwords do not match",orSignInWith:"Or sign in with",magicLinkHint:"Enter email above for magic link"},hR={email:"Email",emailPlaceholder:"Enter your email address",password:"Password",orContinueWith:"Or continue with",continueWithGoogle:"Continue with Google",continueWithF
585acebook:"Continue with Facebook"},gR={title:"Check your email",message:"We've sent a confirmation link to",instructions:"Click the link in the email to verify your account and get started.",checkSpam:"Didn't receive it? Check your spam folder."},fR={quickSignIn:"Quick Sign In",subtitle:"Choose your preferred sign-in method",continueWithFacebook:"Continue with Facebook",facebookRecommended:"Recommended",dividerOr:"or",emailLabel:"Email",emailPlaceholder:"[email protected]",sendMagicLinkCta:"Send me a sign-in link",sendingMagicLink:"Sending...",magicLinkSent:"Link sent! Check your email",useEmailPassword:"Sign in with email & password",needGoogleSafari:"Need Google? Open in Safari",showSafariSteps:"Show instructions",title:"Browser Required",titleIOS:"Open in Safari to Continue",titleAndroid:"Open in Chrome to Continue",titleGeneric:"Open in Browser Required",messageIOS:"Google sign-in doesn't work in {{appName}}'s browser for security reasons.",messageAndroid:"Google sign-in doesn't work in {{appName}}'s browser for security reasons.",messageGeneric:"Please open this page in Safari or Chrome to sign in with Google.",stepIOS1:"Tap the share button (□↑) at the bottom",stepIOS2:'Select "Open in Safari"',stepIOS3:"Return here and try signing in again",stepAndroid1:"Tap the menu (⋮) at the top right",stepAndroid2:'Select "Open in Chrome" or "Open in Browser"',stepAndroid3:"Return here and try signing in again",stepGeneric1:"Copy the link below",stepGeneric2:"Open Safari or Chrome",stepGeneric3:"Paste the link and try again",ctaIOS:"Copy Link to Safari",ctaAndroid:"Copy Link to Chrome",ctaGeneric:"Copy Link",toSignInWithGoogle:"To sign in with Google:",orSignWithEmail:"Or sign in with email",emailAlternative:"Use your email and password below as an alternative.",cancel:"Cancel",copyLink:"Copy Link",copied:"Copied!",openInBrowser:"Open in Browser",useEmailInstead:"Use Email Instead"},bR={enterFullName:"Please enter your full name",agreeToTerms:"Please agree to the Privacy Policy and Terms of Service",verifyEmail:"Please verify your email first",resendEmail:"Resend Email",confirmationSent:"Confirmation email sent! Please check your inbox.",confirmationSentDesc:"Check your spam folder if you don't see it.",failedResend:"Failed to resend confirmation email. Please try again.",googleSignInFailed:"Failed to sign in with Google",linkCopied:"Link copied! Paste it in Safari or Chrome",failedCopyLink:"Failed to copy link"},vR={signUp:mR,signIn:pR,common:hR,emailConfirmation:gR,webViewWarning:fR,errors:bR},yR={title:"Hey {{name}}, welcome!",subtitle:"Help us personalize your experience with 2 quick questions"},xR={title:"What best describes you?",options:{interior_designer:"I'm an Interior Designer",interior_designer_desc:"I design spaces professionally",design_lover:"I'm an Interior Design Lover",design_lover_desc:"I love exploring design ideas"}},wR={title:"How did you discover Boardspace?",options:{whatsapp_group:"WhatsApp Group",facebook_community:"Facebook Community",youtube:"YouTube",instagram:"Instagram",google_ads:"Google Ads",friend_referral:"A Friend Told Me",other:"Other"},placeholders:{whatsapp_group:"Enter WhatsApp group name",facebook_community:"Enter Facebook community name",other:"Please specify"}},kR={next:"Next",back:"Back",finish:"Start Creating"},_R={step:"Step {{current}} of {{total}}"},SR={selectOption:"Please select an option to continue",enterDetail:"Please enter the details",saveFailed:"Failed to save. Please try again."},CR={welcome:yR,step1:xR,step2:wR,navigation:kR,progress:_R,errors:SR},TR={brand:"GPT Chat",backToCanvas:"Back to canvas",newChat:"New chat",search:"Search chats",today:"Today",thisWeek:"This week",older:"Older",loadMore:"Load more",rename:"Rename",delete:"Delete",deleteTitle:"Delete this chat?",deleteDescription:"This chat and all its messages will be permanently deleted.",cancel:"Cancel",confirmDelete:"Delete chat",emptyTitle:"What are we talking about?",emptyTitleNamed:"{{name}}, what are we talking about?",placeholder:"Ask me anything",regularMode:"Regular · 0.1",webMode:"Web · 0.1",webSearch:"Search the web",attachImages:"Attach images",send:"Send",copy:"Copy",copied:"Copied",loading:"Loading conversation…",noChats:"No conversations yet",noSearchResults:"No conversations foun
585d",imageLimit:"You can attach up to 6 images",dropImages:"Drop images here",dropImagesHint:"From your computer or the canvas · up to 6",renamePlaceholder:"Conversation name",save:"Save",error:"We could not load the chat. Please try again.",showChats:"Show chats",hideChats:"Hide chats",models:{mini:"GPT-5 · 0.1",web:"Web · 0.1",gpt5Mini:"GPT-5 · 0.1",gpt5MiniWeb:"GPT-5 · 0.1 + Web"},modelPicker:"Choose model"},jR={analysis:["Analyzing","Understanding","Interpreting","Recognizing","Processing","Examining","Studying","Decoding","Scanning","Reading"],generation:["Dreaming","Imagining","Painting","Sketching","Brewing","Weaving","Generating","Creating","Rendering","Bringing to life","Materializing","Composing","Summoning","Manifesting","Spinning up","Cooking up","Working its magic","Pixelating"],sketchupBaker:["Scanning the piece","Measuring width and depth","Breaking into parts","Defining components","Organizing hierarchy","Calculating board thickness","Planning drawers and doors","Writing build prompt","Refining geometry","Choosing materials"],baker:["Writing a script","Choosing angles","Planning shots","Directing the scene","Refining the prompt","Polishing words","Examining materials","Aiming the camera","Weaving a story","Baking the prompt"],imageBaker:["Engineering the prompt","Combining materials","Scanning textures","Measuring light","Composing the scene","Choosing lenses","Calibrating colors","Weaving details","Baking the prompt","Polishing words"]},NR={sendToChat:"Send to Chat",addToCanvas:"Add to Canvas",addToBoth:"Add to Both",groups:{all:"All",materials:"Materials",models:"Models",appliances:"Appliances",stone:"Stone",uncategorized:"Uncategorized"},subCategories:{all:"All",innovus:"Innovus",veneer:"Veneers",acrylic:"Acrylics",woodFormica:"Wood Formica",matteCrystal:"Matte Crystal",formicaStone:"Formica Stone",special:"Specials",cornices:"Cornices",edges:"Edge Bands",vitrines:"Vitrines",ovens:"Ovens",cooktops:"Cooktops",refrigerators:"Refrigerators"},selectCategory:{label:"Category (required)",placeholder:"Choose a category"},upload:{formatsHint:"JPG, PNG, WebP and more. Large images are compressed automatically before upload",preparing:"Preparing images…",uploadingProgress:"Uploading {{done}} of {{total}}…",noFiles:"Please select at least one image",noCategory:"Choose a category before uploading",successOne:"Material uploaded successfully",successMany:"{{n}} materials uploaded successfully",partial:"{{ok}} of {{total}} materials uploaded. Failed: {{names}} ({{reason}})",failed:"Upload failed: {{reason}}",fileTooLarge:"{{name}}: file is too large (max {{maxMb}}MB)",fileUnsupported:"{{name}}: not an image file. Use JPG, PNG or WebP",fileDecodeFailed:"{{name}}: we could not read this image. If it is HEIC or TIFF, convert it to JPG and try again",errTooLarge:"The file is too large for storage",errUnsupported:"This file format is not supported by storage",errNoPermission:"No permission to save. Try signing out and back in",errNetwork:"Connection problem. Check your network and try again"},rename:{title:"Rename category",description:"This name is visible only to you. Materials already filed here stay where they are.",label:"New name",defaultIs:"Default: {{name}}",hint:"Right-click (or long-press) to rename",save:"Save",reset:"Reset to default",delete:"Delete subcategory",cancel:"Cancel",saved:"Name updated",resetDone:"Name reset to default",failed:"Rename failed"},customSubcategories:{add:"New subcategory",createTitle:"Create subcategory",createDescription:"Add your own section inside “{{group}}”.",nameLabel:"Subcategory name",placeholder:"For example: Caesarstone",create:"Create",created:"Subcategory created",createFailed:"Could not create the subcategory. That name may already exist.",general:"{{group}} — General",deleteConfirm:"Delete this subcategory? Its materials will move to Uncategorized.",deleted:"Subcategory deleted",deleteFailed:"Could not delete the subcategory",addChild:"New sub-subcategory",createChildTitle:"Create sub-subcategory",createChildDescription:"Add another section inside “{{group}}”.",childPlaceholder:"For example: White marble",deleteConfirmWithChildren:"Delete this subcategory? Everything nested inside it is deleted too, and its materials move to Uncategorized."},roomTypes:{all:"All",living_room:"Living Room",bedroom:"Bedroom",bathroom:"Bathroom",kitchen:"Kitchen",office:"Office",office_room:"Office Room",kids_room:"Kids Room",laundry_room:"Laundry Room",closet:"Walk-in Wardrobe"},tabs:{materials:"Materials",myMaterials:"My Materials",images:"Images",styleBoard:"Style Board"},searchPlaceholder:"Look for inspiration photos...",uploadMaterial:"Upload material",categories:{all:"All",wood:"Wood",flooring:"Flooring",metal:"Metal",stone:"Stone",fabric:"Fabric",aerial:"Aerial",terrain:"Terrain",brick:"Brick",plaster:"Plaster",concrete:"Concrete",roofing:"Roofing"}
585,loading:"Loading images...",noImagesFound:"No photos found",tryAdjustingFilters:"Try adjusting the search or filters",cancel:"Cancel",search:{placeholder:"Search all my materials…",clear:"Clear search",resultsAcrossLibrary:"{{n}} results across all categories",noResults:"No materials found for “{{query}}”",noResultsHint:"Search by name, description, tag or category"}},PR={dropImagesHere:"Drop images here",dragToWorkflow:"Drag the image here to start the workflow"},AR={group_photo:"This looks like a group photo. Please upload photos with a single person in frame.",multiple_people:"More than one person appears in the photos. Please upload photos of only one person.",face_hidden:"The face is hidden or cropped in one of the photos. A clear, visible face is required.",sunglasses:"Sunglasses are covering the eyes. Please upload a photo without sunglasses.",heavy_filter:"A heavy filter is hiding the real features. Please upload a more natural photo.",low_res:"The resolution is too low or the photos are blurry. Please upload sharper photos.",inconsistent_person:"The photos appear to show different people. Please upload photos of the same person.",no_face:"No face was detected in the photos. Please upload clear face photos.",unusable:"These photos aren't usable for a character reference. Try 2-4 clear photos of the same person."},ER={kling_3_turbo_video_generator:"Kling 3 Turbo video generated successfully!",default:"Processing completed successfully!",image_creator:"Image generated successfully! The result has been added to your canvas.",nano_banana_2_lite:"Image generated successfully! It's on your canvas. 🎨",combine_images:"Images combined successfully! The result has been added to your canvas.",character_reference:"Your character is ready! The canonical front and exact side profile were added to your canvas. 🎭",character_reference_partial:"The canonical front view was added to your canvas. The profile failed, so 4 tokens were refunded.",ultra_real_agent:"Ultra-realistic image ready! It's on your canvas.",kling_o1_image:"Your image is ready! It's on your canvas. 🎨",gpt_image_1_5:"Image editing completed successfully!",gpt_image_2_medium:"Your image is ready! It's on your canvas. 🎨",gpt_image_2_5_edit:"Your precise edit is ready! It's on your canvas. 🎨",gpt_image_2_4k:"Your 4K image is ready! It's on your canvas. 🎨",viral_prompt_creator:"Viral post created successfully!",vizio9_transform:"Image transformed successfully! The result has been added to your canvas.",openai_edit_image:"Structural image editing completed successfully!",style_switch:"Style updated successfully! The result is on your canvas.",vizio9_multiangle:"New camera angle is ready! It's on your canvas.",remove_background:"Backgroun
585d removed successfully! The result has been added to your canvas.",upscale_image:"Image upscaled successfully! The result has been added to your canvas.",upscale_image_topaz:"Image upscaled with Topaz Labs! The result has been added to your canvas.",kling_video_generator:"Video generated successfully!",wan_video_generator:"Video with sound generated successfully!",ltx_video_generator:"10-second video generated successfully!",seedance_video_generator:"2-image transition video generated successfully!",trellis_3d_generator:"3D model generated successfully!",blender_3d_agent:"Blender 3D model generated successfully!",kitchen_dae_generator:"Kitchen DAE ready — click to download the .dae file",kitchen_dae_pdf_generator:"Kitchen DAE from PDF ready — click to download the .dae file",design_dna:"Design DNA presentation generated successfully!",kitchen_board:"Kitchen board presentation generated successfully!",generate_moodboard:"Moodboard presentation generated successfully!",nano_banana_pro:"Your image was generated successfully! It's on your canvas. 🎨",nano_workflow:"Your image was generated successfully! It's on your canvas.",vizio9_image_generator:"Image generated successfully! The result has been added to your canvas.",prince_editor:"Image editing complete! It's on your canvas.",kling_o1_video:"Video generated successfully!",nano_pro_fal:"Image generated successfully!",grok_video_generator:"Grok video generated successfully!",grok_480p_cheap:"Video generated successfully!",runway_video_generator:"Video generated successfully!",runway_10s_video:"10-second video generated successfully!",grok_image_editor:"Image editing complete! It's on your canvas.",seedream_4_5_edit:"Image editing complete! It's on your canvas.",seedream_5_lite_i2i:"Image editing complete! It's on your canvas.",veo_video_generator:"Video generated successfully!",kling_3_video_generator:"Kling 3.0 video generated successfully!",kling_motion_control:"Motion control video generated successfully!",flux_2_pro:"Your image was generated 
585with Flux 2.0 Pro. It's on your canvas! ⚡",gpt_5_image:"Your image was generated with GPT Image. It's on your canvas! 🤖",request_applied_to_canvas:"All set! The update is on your canvas.",floating_edit_openai:"Image updated with Complex Edit! The result is on your canvas.",floating_edit_consistent:"Image updated with Precise Editor! The result is on your canvas.",wan_2_7_image_edit:"Precise edit complete! The variants are ready on your canvas.",seedream_5_pro_i2i:"Seedream 5 Pro edit complete! The result is on your canvas.",meshy_3d_generator:"3D model with textures successfully created!",sketchup_agent:"The SketchUp model is ready — click to download the .skp file",gemini_omni_video:"Gemini Omni video generated successfully!",minimax_h3_video_generator:"MiniMax H3 video generated successfully!"},IR={kie500:{chatMessage:`Hey, Bordi here 👋
586Looks like the GPT Image 2 4K servers are under heavy load right now. The request failed — I've already refunded {{amount}} tokens to your account 🙌
587Worth trying again in a few minutes.`,modalTitle:"Hey there! Bordi here 👋",modalBody:"Looks like the GPT Image 2 4K servers are under heavy load right now. The request failed — I've already refunded {{amount}} tokens to your account 🙌",modalSuggestion:"Why not try regular GPT Image 2 instead? It's more stable right now. Here's your prompt — just copy and paste:",copyPromptCta:"Copy prompt",promptCopied:"Prompt copied! ✓",switchAgentCta:"Open GPT Image 2",dismissCta:"Close"}},DR={title:"Workflows",guideLink:"Guide",tabs:{image:"Image",video:"Video"},watchVideoTutorial:"Click to watch video tutorial",templates:{plan_to_3d_2:{name:"Floor Plan to 3D — 2 Views",description:"Transform a floor plan into a 3D top view and an axonometric view"},sketch_to_real:{name:"Sketch to Real",description:"Transform interior design sketches into photorealistic photographs"},seed_explorer:{name:"Seed Explorer",description:"Generate 6 similar variations from one prompt using sequential seeds",badge:"New",tokenCost:"1.5 tokens",processingTime:"30-60 seconds",enterPrompt:"Enter your prompt",generate6Variations:"Generate 6 Variations",enterPromptFirst:"Enter Prompt",promptPlaceholder:"Describe the image you want to generate... (e.g., 'a modern living room with minimalist furniture and natural light')",ctrlEnterHint:"Press Ctrl+Enter to generate"},family_home_video:{name:"Family Home Video",description:"Create a 5-second video of a family of 4 inside your interior design"},construction_stages:{name:"Construction Stages",description:"Create 2 videos (8 seconds each) of construction stages from your finished room"},drone_walkthrough:{name:"Home Drone Walkthrough",description:"Upload up to 7 images (first = top-view B&W floor plan) for a smooth drone walkthrough video"},flooring_check:{name:"Flooring Options",description:"Create 6 different tiling variations on an existing image"},exterior_angles_set:{name:"Building Angles",description:"Create 6 different camera angles of your exterior building (this is for exterior design only)"},full_angles_set:{name:"6 Camera Angles",description:"Create 6 completely different camera angles from any photo"},stylematch:{name:"StyleMatch",description:"One style, endless rooms. Instant design consistency across spaces"},designdna:{name:"Design DNA",description:"Extracts the design DNA and gathers 10-15 furniture and design items"},kitchenboard:{name:"Kitchen Material Variations",description:"Create 6 variations of materials and a color palette for the kitchen"},photo_360:{name:"Professional 360° Views",description:"Create 6 professional variations of camera angles of your space"},x4_angle_board:{name:"4-Angle Board",description:"Create a 4-angle visualization board from your room photo"},day_to_night:{name:"Day-to-Night Presentation",description:"Create 8 frames of lighting transition from day to night"},shop_the_look:{name:"Shop the Look",description:"Get a complete shopping specification for every element and piece of furniture in the image"},architect_thoughts:{name:"Architect Thoughts",description:"Turn the photo into a board with pencil sketches, great for social media"},architectural_illustrator:{name:"Architectural illustrator",description:"Turn a real photo into a luxury black-and-white architectural presentation board with technical lines and a bill of materials"},room_timelapse:{name:"Timelapse room",description:"Watch the empty space come to life with furniture, colors and design. Suitable for any type of space!"},project_timelapse:{name:"Construction timelapse",description:"Watch the building rise from the ground. Perfect for ar
587chitectural visualizations!"},viral_video:{name:"Viral video",description:"Create a 5-second 360° video for social media (9:16 vertical)"},moodboard:{name:"Moodboard",description:"Create a designed inspiration board from a room image"},kitchen_technical_drawing:{name:"Kitchen technical drawing",description:"Create a professional technical drawing sheet for the kitchen"}},nodeTitles:{floorPlanStyleBoard:"Floor Plan + Style Board",isometric3DResult:"3D Isometric Result",uploadSketch:"Upload Sketch",photorealisticResult:"Photorealistic Result",enterPrompt:"Enter Prompt",seedBaseSuffix:"(Base)",seedVariation:"Seed",constructionStage1RawConcrete:"Stage 1 - Raw Concrete",constructionStage2Plastered:"Stage 2 - Plastered",constructionStage3FinishedEmpty:"Stage 3 - Finished Empty",constructionStage4Furnished:"Stage 4 - Furnished",constructionVideoBuilding:"Construction Video (8s)",constructionVideoFurnishing:"Furnishing Video (8s)",constructionUploadRoom:"Upload Furnished Room Image",uploadProjectImage:"Upload a project image",uploadRoomImage:"Upload an Image",emptyVersion:"empty version",timelapseVideo:"Timelapse video",uploadImage:"Upload an Image",styleMatchResult:"Style matching result",designDNAResult:"Design DNA result",kitchenBoardResult:"Kitchen board result",x4AnglesResult:"Result of 4 angles",dayToNightResult:"Day to night result",shopTheLookResult:"Price extraction result",architectThoughtsResult:"The result of the architect's thoughts",flooringVariation:"Flooring variation",cameraAngle:"camera angle",viralVideoResult:"Viral video"},subtitle:"AI-based automation",comingSoon:"soon",clickToStart:"Click to activate",nodes:"Nodes",tokens:"Tokens",popular:"Popular",comingSoonItems:{wallColors:"wall colors",furniture:"Furniture",lighting:"lighting"}},RR={common:{new:"New",pro:"Pro",popular:"Popular",tokens:"tokens",token:"token",click:"Click",seconds:"Seconds",secondsShort:"Sec",seconds30:"30 Seconds",input:"Input",sourceImage:"Source Image",angles6:"6 Angles",angles4:"4 Angles",options6:"6 Options",input1:"1 Input",results2:"2 Results",floorPlan:"Floor Plan",plan:"Plan",iso:"Iso",top:"Top",styleMatch:"StyleMatch",styleConsistency:"Style Consistency",sourceRoom:"Source Room",stylePresentation:"Style Presentation",designDna:"Design DNA",items10_15:"10-15 Items",roomImage:"Room Image",inspirationBoard:"Inspiration Board",kitchenBoard:"KitchenBoard",materials6:"6 Materials",originalKitchen:"Original Kitchen",variations6:"6 Variations",board4Angles:"4-Angle Board",sketch:"Sketch",photorealistic:"Photorealistic",sketchToReal:"Sketch to Real",geometryPreservation:"Geometry Preservation",supportsSketchesFrom:"Supports sketches from:",dayToNightPresentation:"Day-to-Night Presentation",times6:"6 Times",shoppingBoard:"Shopping Board",pricesAndLinks:"Prices & Links",story:"Story",post:"Post",socialReady:"Social Ready",inputImages:"Input Images",moodboard:"Moodboard",uploadImage:"Upload Image",technicalSheet:"Technical Sheet",result:"Result",technicalDrawings:"Technical Drawings",before:"Before",after:"After",demoComingSoon:"Demo coming soon",demoSoon:"Demo soon",familyOf4:"Family of 4",seconds5:"5 Seconds",landscape169:"16:9 Landscape",kitchenImage:"Kitchen Image",drawing:"Drawing",mmDimensions:"mm Dimensions",upTo10Images:"Up to 10 Images",minutes6:"up to 6 min",workflowUses4Images2Videos:"This workflow uses 4 image generations and 2 videos and can take up to 6 min",exampleResult:"Example Result",anyRoomType:"Any room type",designReveal:"Design Reveal",creationTime:"Creation time: ~2 min",creationTime3min:"Creation time: ~3 min",videoUnavailable:"Video unavailable",unavailable:"Unavailable"},exterior_angles_set:{titleBefore:"Get ",titleHighlight:"6 camera angles",titleAfter:" for your building",subtitle:"Upload a building photo and get 6 professional camera angles - drone, low-angle, dusk, and more.",subtitleShort:"Upload a building photo and get 6 professional angles."},full_angles_set:{titleBefore:"Get ",titleHighlight:"6 camera angles",titleAfter:" from completely different directions",subtitle:"Upload a photo of a room, building or space and get 6 completely different camera angles - front, sides, top-down, close-up and panoramic.",subtitleShort:"Upload a photo and get 6 completely different angles."},photo_360:{titleBefore:"Get ",titleHighlight:"6 professional angles",titleAfter:" for your space",subtitle:"Upload a photo of your space and get 6 professional camera angles - macro, wide, dramatic, and more.",subtitleShort:"Upload a photo and get 6 professional angles."},flooring_check:{titleBefore:"Get ",titleHighlight:"6 flooring variations",titleAfter:" for your room",titleHighlightMobile:"6 flooring options",subtitle:"Upload a photo of your room and get 6 different flooring suggestions - from porcelain to hardwood, concrete to terrazzo.",subtitleShort:"Upload a photo and get 6 different flooring suggestions for your room."},stylematch:{titleBefore:"One style, ",titleHighlight:"endless rooms",titleAfter:"",subtitle:"Upload a room photo and get an impressive presentation with more rooms in the exact same style and materials - instant design consistency."},designdna:{titleBefore:"Extract ",titleHighlight:"Design DNA",titleAfter:" from image",subt
587itle:"Upload a room image and get an inspiration board with 10-15 similar furniture and decor items - with purchase links."},kitchenboard:{titleBefore:"One kitchen, ",titleHighlight:"6 material options",titleAfter:"",subtitle:"Upload a kitchen photo and get a presentation with 6 variations featuring different materials - stone, wood, marble and more."},plan_to_3d_2:{titleBefore:"Layout Plan in ",titleHighlight:"3D",titleAfter:" -2",subtitle:"Upload a floor plan – get 2 images: 3D top-view and axonometric.",subtitleShort:"Upload a floor plan – get 2 images: 3D top-view and axonometric."},sketch_to_real:{titleBefore:"From sketch ",titleHighlight:"to photorealistic",titleAfter:"",subtitle:"Upload an interior design sketch and get a photorealistic image in seconds. The system preserves geometry, proportions, and materials."},x4_angle_board:{titleBefore:"Generate ",titleHighlight:"4-angle board",titleAfter:" from one image",titleBeforeMobile:"Create ",subtitle:"Upload a room render and get a professional board with 4 different camera angles - perfect for client presentations.",subtitleShort:"Upload a render and get a board with 4 camera angles."},day_to_night:{titleBefore:"Generate ",titleHighlight:"Day-to-Night",titleAfter:" presentation",subtitle:"Upload a room render and get a presentation with 6 images at different times of day - from sunrise to night."},shop_the_look:{titleHighlight:"Shopping Board",subtitle:"Get a full shopping list with prices and links for every element and piece of furniture in the image.",pricesAndLinksLabel:"Prices & Links"},architect_thoughts:{titleHighlight:"Architect Thoughts",subtitle:"Transform your render into a sepia architectural presentation board – perfect for social."},architectural_illustrator:{titleHighlight:"Architectural Illustrator",subtitle:"Turn a real photo into a premium black & white architectural presentation board – technical linework, construction details and a material legend."},moodboard:{titleHighlight:"Moodboard",inputLabel:"Input Images",subtitle:"Create a professional moodboard from up to 10 images with warm cream background."},kitchen_technical_drawing:{titleBefore:"Technical ",titleHighlight:"Drawing",titleAfter:" for your kitchen",subtitle:"Upload a kitchen image and get a professional technical drawing sheet with mm dimensions.",inputLabel:"Kitchen Image",outputLabel:"Technical Sheet"},room_timelapse:{titleBefore:"Transform your room into a ",titleHighlight:"design timelapse",subtitle:"Watch an empty space come to life with furniture, colors and design. Perfect for any space!"},project_timelapse:{titleBefore:"Transform your building into a ",titleHighlight:"construction timelapse",subtitle:"Watch a building rise from the ground. Perfect for architectural visualizations!"},viral_video:{titleBefore:"Turn your image into a ",titleHighlight:"viral video",subtitle:"Create a 5-second 360° rotation video for social media (9:16 vertical)."},family_home_video:{titleBefore:"Turn your image into a ",titleHighlight:"Family Home Video",titleHighlightMobile:"Family Video",subtitle:"Create a 5-second video of a family of 4 inside your interior design.",subtitleShort:"Create a video of a family of 4 inside your home with natural everyday activities.",before:"Before",after:"After",creationTime:"Creation time: ~3 min"},construction_stages:{titlePart1:"2 × 8-Second",titleHighlight:"Construction Timelapse",titleHighlightMobile:"Timelapse",subtitle:"AI analyzes your room and creates 2 construction stages: raw concrete and finished empty. 2 videos of 8 seconds each - construction and furnishing process!",subtitleShort:"AI creates 2 construction stages and 2 videos (8 sec each) - construction and furnishing!",workflowNote:"This workflow uses 2 image generations and 2 videos and can take up to 6 min",construction:"Construction",furnishing:"Furnishing",interiorRooms:"Interior Rooms",seconds2x8:"2 × 8 Seconds",seconds2x8short:"2 × 8 sec",stages3:"2 Stages + Original",stages3short:"2 Stages"},seed_explorer:{titleHighlight:"Set of Views",subtitle:"Enter an idea and get it from 6 different views - same space, different camera angles.",subt
587itleShort:"Enter an idea and get it from 6 different views.",views6:"6 Views",seconds30_60:"30-60 Seconds"}},LR={title:"2026 Color Palettes",description:"Add trending 2026 interior design color palettes to your canvas",searchPlaceholder:"Search color palettes...",trends:{all:"All Trends",pantone:"Pantone 2026",benjaminMoore:"Benjamin Moore 2026",sherwinWilliams:"Sherwin Williams 2026",behr:"Behr 2026",wgsn:"WGSN 2026",pinterest:"Pinterest 2026",luxury:"Quiet Luxury",dopamine:"Dopamine Colors",biophilic:"Biophilic",earthy:"Earthy Tones",timeless:"Timeless Classics"},showingCount:"Showing {{count}} palette",showingCount_other:"Showing {{count}} palettes",selectedCount:"· {{count}} selected",noResults:"No color palettes found",noResultsHint:"Try adjusting your search or filters",cancel:"Cancel",addToCanvas:"Add to Canvas",addToCanvasWithCount:"Add {{count}} to Canvas",paletteNames:{"silhouette-elegance":"Silhouette Elegance","cloud-dancer-serenity":"Cloud Dancer Serenity","hidden-gem-spa":"Hidden Gem Spa","transformative-teal":"Transformative Teal","universal-khaki-earth":"Universal Khaki Earth","warm-eucalyptus-natural":"Warm Eucalyptus Natural","rebel-pink-pop":"Rebel Pink Pop","divine-damson-drama":"Divine Damson Drama","glacier-aesthetic":"Glacier Aesthetic","subzero-sophistication":"Subzero Sophistication","electric-persimmon":"Electric Persimmon","dusty-jewels-2026":"Dusty Jewels","earthy-browns-2026":"Earthy Browns","milky-pastels-2026":"Milky Pastels","burgundy-luxe-2026":"Burgundy Luxe","color-drenching-2026":"Color Drenching","dopamine-brights-2026":"Dopamine Brights","bold-expression":"Bold Expression","quiet-luxury-2026":"Quiet Luxury","warm-minimalism":"Warm Minimalism","understated-elegance":"Understated Elegance","biophilic-sanctuary":"Biophilic Sanctuary","botanical-calm":"Botanical Calm","coastal-retreat":"Coastal Retreat","warm-neutrals":"Warm Neutrals","industrial-chic":"Industrial Chic","jewel-tones":"Jewel Tones","scandinavian-minimal":"Scandinavian Minimal","mediterranean-warmth":"Mediterranean Warmth"},trendNames:{benjamin_moore_2026:"Benjamin Moore 2026",pantone_2026:"Pantone 2026",behr_2026:"Behr 2026",wgsn_2026:"WGSN 2026",sherwin_williams_2026:"Sherwin Williams 2026",valspar_2026:"Valspar 2026",ikea_2026:"IKEA 2026",graham_brown_2026:"Graham & Brown 2026",pinterest_2026:"Pinterest 2026",luxury_2026:"Luxury 2026",earthy_2026:"Earthy 2026",technique_2026:"Technique 2026",dopamine_2026:"Dopamine 2026",quiet_luxury_2026:"Quiet Luxury 2026",biophilic_2026:"Biophilic 2026",timeless_classic:"Timeless Classic"},colorNames:{silhouette:"Silhouette",warm_cream:"Warm Cream",soft_caramel:"Soft Caramel",cloud_dancer:"Cloud Dancer",gentle_lavender:"Gentle Lavender",soft_mist:"Soft Mist",hidden_gem:"Hidden Gem",sage_cream:"Sage Cream",soft_linen:"Soft Linen",transformative_teal:"Transformative Teal",ocean_depths:"Ocean Depths",seafoam:"Seafoam",universal_khaki:"Universal Khaki",warm_walnut:"Warm Walnut",cream_ivory:"Cream Ivory",warm_eucalyptus:"Warm Eucalyptus",olive_stone:"Olive Stone",natural_linen:"Natural Linen",rebel_pink:"Rebel Pink",blush_coral:"Blush Coral",soft_cream:"Soft Cream",divine_damson:"Divine Damson",deep_burgundy:"Deep Burgundy",rose_gold:"Rose Gold",glacier_blue:"Glacier Blue",ice_crystal:"Ice Crystal",frost_white:"Frost White",cool_blue:"Cool Blue",arctic_frost:"Arctic Frost",silver_ice:"Silver Ice",electric_green:"Electric Green",persimmon_orange:"Persimmon Orange",warm_white:"Warm White",dusty_sapphire:"Dusty Sapphire",muted_emerald:"Muted Emerald",soft_amethyst:"Soft Amethyst",tobacco_brown:"Tobacco Brown",chalky_rose:"Chalky Rose",dusty_olive:"Dusty Olive",whispering_blue:"Whispering Blue",silvery_green:"Silvery Green",muted_lavender:"Muted Lavender",wine_red:"Wine Red",gold_accent:"Gold Accent",moody_green:"Moody Green",teal_immersion:"Teal Immersion",deep_charcoal:"Deep Charcoal",energy_orange:"Energy Orange",joy_pink:"Joy Pink",sunshine_yellow:"Sunshine Yellow",electric_violet:"Electric Violet",citrus_burst:"Citrus Burst",aqua_pop:"Aqua Pop",cashmere_beige:"Cashmere Beige",champagne_mist:"Champagne Mist",truffle_brown:"Truffle Brown",soft_latte:"Soft Latte",cloud_white:"Cloud White",gentle_gray:"Gentle Gray",stone_taupe:"Stone Taupe",ivory_silk:"Ivory Silk",mink_gray:"Mink Gray",forest_fern:"Forest Fern",moss_green:"Moss Green",earth_brown:"Earth Brown",sage_leaf:"Sage Leaf",dried_herb:"Dried Herb",natural_stone:"Natural Stone",sea_glass:"Sea Glass",driftwoo
587d:"Driftwood",sand_dollar:"Sand Dollar",oatmeal:"Oatmeal",taupe:"Taupe",linen_white:"Linen White",charcoal:"Charcoal",rust_orange:"Rust Orange",concrete_gray:"Concrete Gray",emerald:"Emerald",sapphire:"Sapphire",amethyst:"Amethyst",warm_beige:"Warm Beige",mushroom:"Mushroom",dove_gray:"Dove Gray",terracotta:"Terracotta",olive_green:"Olive Green",cream:"Cream"}},OR={list:["Replace flooring with warm oak wood, preserve wall colors and lighting unchanged","Swap sofa and armchairs to neutral linen set, keep layout and rug","Transform lighting to warm sunset glow, without changing materials and colors","Add built-in wall unit around TV, matching existing wood tone and hardware","Replace kitchen fronts to soft sage matte green with brass handles, preserve layout and geometry","Transform bathroom to spa look: light marble, pair of wall sconces, minimal hardware; keep tiles","Refresh facade: lime-wash warm greige, smooth modern door, narrow black spotlights; preserve windows","Outdoor terrace: add low planters, teak seating set, warm string lights; preserve deck and view","Staging for sale: remove clutter, neutral styling, soft daylight, no text or watermark","Camera shift: eye-level angle, wide lens, centered composition; preserve objects and proportions"]},MR={depthRegion:"Mark an object",depthRegionHint:"that object + a clean background",depthQuick:"Quick split",depthQuickHint:"3 layers",depthFull:"Full split",depthFullHint:"up to 6 layers",depthDetailed:"Detailed split",depthDetailedHint:"up to 10 layers"},zR={decomposeLayers:"Split into layers",uploadImages:"Attach image",promptOnlyNoReferences:"This model generates images from prompts only. Enter your request in natural language — reference images aren't supported.",send:"Send",holdToSpeak:"Hold to speak",chatUploadImage:"Upload image",chatBordi:"Bordi",chatJasonPromptWriter:"Jason, prompt writer",chatGptChat:"Chat with GPT",chatLiveWeb:"Click for live internet",chatVoiceInput:"Speak instead of typing",quickEdit:"Edit",preciseEdit:"Precise Editor",seedream5Pro:"Seedream 5 Pro",gptImage25Edit:"GPT Image 2.5 Edit",paint:"Mark",aiAssistant:"AI Assistant",assetBank:"My Assets",promptLibrary:"My Prompt Library",contextMenu:{saveToAssets:"Save to My Assets",addMusic:"Add Music (2 tokens)",to
587pazUpscaleVideo:"Topaz Video Upscale",topazUpscaleVideo720p:"Fast 720p (2 tokens)",topazUpscaleVideo1080p:"Standard 1080p (4 tokens)",topazUpscaleVideo4k:"Premium 4K (15 tokens)",topazUpscaleVideoTooLong:"Clip too long to upscale — please trim to 10 seconds",sendToChat:"Send to chat",bringToFront:"Bring to Front",bringForward:"Bring Forward",sendBackward:"Send Backward",sendToBack:"Send to Back",lock:"Lock",unlock:"Unlock",createGroup:"Create a group",finishGroup:"Finish Group",cancelGroup:"Cancel Group",ungroup:"Ungroup",removeBackground:"Remove background",upscaleImage:"Upscale Image (Free)",topazUpscaleImage:"Topaz Premium Upscale (2 tokens)",duplicate:"Duplicate",download:"Download",delete:"Delete",fillColor:"Fill color",strokeColor:"Stroke Color",textColor:"Text color",opacity:"Opacity",customColor:"Custom color",apply:"Apply"},backToDashboard:"Return to dashboard",buyTokens:"Buy Tokens",drawingTools:"drawing tool",uploadImage:"Upload an Image",uploadVideo:"Upload a video",uploadVideoFile:"Upload a video file",addYouTube:"Add a YouTube video",pinterest:"Connect Pinterest",inspiration:"inspiration",materialsReferences:"Material library",colorPalette:"color palette",colorPalettes2025:"2025 color palettes",workflows:"Automated Workflows",share:"Share",shareCanvas:"Share a board with a friend",activityLog:"Activity log",openMinimap:"Open Minimap",closeMinimap:"Close Minimap",agents:"Agents",zoomOut:"Zoom Out",zoomIn:"Zoom in",zoomLevel:"zoom level",zoomToFit:"Adjust zoom for all elements",spreadImages:"Spread images evenly across the display",downloadCanvas:"Download canvas as image",muteSounds:"Mute sounds",unmuteSounds:"Unmute sounds",switchToLightMode:"Switch to Light Mode",switchToDarkMode:"Go to dark mode",undo:"Undo",redo:"Redo",sharedWith:"shared with",person:"person",people:"people",select:"Pick and move",selectAndPan:"Pick and move",dashboard:"Dashboard",settings:"Settings",help:"Help",signOut:"Sign Out",turnImageToVideo:"Turn a photo into a video",getPresentations:"Get presentations",upscaleImage:"Upscale Image",drag:"Drag",rectangle:"rectangle",circle:"circle",arrow:"arrow",stickyNote:"sticky note",text:"sticky note",plainText:"Plain text",plaintext:"Plain text",pen:"pen",measure:"measurement",download:"Download",downloadAsJPG:"Download as JPG",downloadAsPNG:"Download as PNG",clickToStopListening:"Click to stop listening",startConversation:"Start a conversation with your AI agent",uploadImageAndDescribe:"Upload an image and describe what you want to do",tokenBalance:"Token Balance",publish:"Publish",publishToGallery:"Publish to Gallery",export:"Export",exportCanvas:"Export Canvas",home:"Home",projects:"Projects",tools:"Tools",media:"Media",references:"Materials",inputs:"Inputs",tokens:"Tokens",promptGuide:"Prompt Guide",uploadImageAndTypeIdea:"Upload an image and type your idea",klingO1VideoPlaceholder:"Reference start and end frames using @Image1 and @Image2 in prompts to set style, camera movement, and scene dynamics during the transition",showPrompts:"Show ideas for prompts",hidePrompts:"Hide ideas for prompts",clearChat:"Clear Chat",exitChat:"Exit the chat",clearSession:"Clear session",exit:"Exit",openAIAssistant:"Open an AI assistant",closeAIAssistant:"Close AI Assistant",addMedia:"Add media",addImagesFromDevice:"Add photos from the device",addVideosFromDevice:"Add video from the device",youtubeVideo:"YouTube video",embedFromYouTube:"Embed from YouTube URL",browseInspirationBoards:"Browse inspiration boards",exploreColorCombinations:"Explore color combinations",importFromPinterest:"Import from Pinterest",groupCreationMode:{title:"Group creation mode",selected:"selected",clickToAdd:"Click on elements to add",rightClickToFinish:"Right click to finish"},chatSketchPresets:"Sketch presets"},BR={title:'Share "{{title}}"',inviteDescription:"Invite others to collaborate ",inviteDescriptionHighlight:"on this canvas",viewAccessDescription:"View who has access to this canvas",emailLabel:"Email address",emailPlaceholder:"[email protected]",messageLabel:"Message (optional)",messagePlaceholder:"Let's work on this together...",userFound:"User found in system",userNotFound:"User not registered in the system",invitationsSent:"Invitations sent",pending:"Pending",owner:"Owner",you:"You",collaborators:"Collaborators",collaboratorsCount:"Collaborators ({{count}})",noCollaboratorsYet:"No collaborators yet",inviteAbove:"Invite someone to collaborate above",cancel:"Cancel"},FR={markOnImage:"Mark on Image",escToCancel:"ESC to cancel",ctrlZToUndo:"Ctrl+Z to undo",deleteToRemove:"Delete to remove",enterText:"Enter text...",undo:"Undo (Ctrl+Z)",deleteSelected:"Delete Selected",clearAll:"Clear All",addImage:"Add Image",selectColor:"Select Color",font:"Font:",cancel:"Cancel",cropAndSave:"Crop & Save",saving:"Saving...",save:"Save",tools:{arrow:"Arrow",circle:"Circle",rectangle:"Rectangle",text:"Text",crop:"Crop"}},$R={previewTitle:"Preview — Kitchen Sketch",controlsHint:"Drag to rotate · Scroll to zoom",loading:"Loading sketch…",approximateHint:"Approximate preview — some COLLADA shaders are not supported in the browser. The file itself retains all materials in SketchUp.",actions:{retry:"Try Again",close:"Close",downloadTitle:"Download the .dae file",downloadDae:"Download DAE"},errors:{openFailed:"Unable to Open the File",loadFallback:"The COLLADA file could not be loaded. The model may be too complex or invalid."}},VR={title:"Academy Videos",subtitle:"Learn to master our design tools with step-by-step video tutorials.",comingSoon:"Coming Soon",available:"Available",backToDashboard:"Back to Dashboard",page:{heroTitle:'AI <span class="text-[#D9603B] dark:text-[#EC7357]">Interior Design</span> Academy',heroSubtitle:"Learn to create AI images, photorealistic renders and videos for interior design with professional tutorials. Everything you need to start working with AI in design.",lessonOf:"Lesson {{current}} of {{total}}",overviewBadge:"Overview",videoPositionOf:"{{current}} of {{total}}",lessonsTitle:"Tutorial Lessons - AI for Interior Design",nowPlaying:"Now Playing"},tokens:{successTitle:"Awesome! You earned +{{tokens}}
587 tokens",successSubtitle:"Keep watching more videos to earn more tokens!",waitSeconds:"Wait {{seconds}} seconds...",readyToClaim:"Ready to claim tokens!",watchToEarn:"Watch video to earn tokens",plusTokens:"+{{tokens}} tokens",claimTokens:"Claim Tokens!",processing:"Processing...",alreadyEarned:"You already earned tokens for this video!",watched:"Watched",toastSuccess:"You earned +{{tokens}} tokens!",toastError:"Something went wrong. Please try again."},progressBanner:{title:"Watch and earn free tokens!",progress:"Watched {{completed}} of {{total}} videos and earned {{tokens}} tokens",possibleTokens:"+{{tokens}} possible tokens"},cta:{title:"Ready to Start Designing with AI?",subtitle:"Join thousands of interior designers already using AI to create professional renders, images and videos with Boardspace",signupButton:"Sign Up Free",loginPrompt:"Already have an account? Log in",noCreditCard:"No credit card required • 5 free edits"},faq:{title:"FAQ: AI for Interior Design",items:{whatIsAI:{question:"What is AI for interior design?",answer:"AI for interior design is technology that enables automatic creation of images, renders and videos of interior designs. With Boardspace you can transform sketches into realistic images, generate new design ideas and present professional visualizations to clients."},technicalKnowledge:{question:"Do I need technical knowledge to use AI for design?",answer:"No! Boardspace is designed for interior designers without technical background. The interface is intuitive and simple, and the academy tutorials teach step by step how to use all the tools."},contentTypes:{question:"What types of content can I create with Boardspace?",answer:"With Boardspace you can create AI images of designed spaces, photorealistic renders, 3D videos, moodboards, remove backgrounds from images, upscale image resolution and more."},cost:{question:"How much does it cost to use AI for design?",answer:"Signing up for Boardspace is free and you get 5 free edits. You can earn more tokens by watching tutorial videos. Each AI operation costs a number of tokens (e.g.: image creation 2 tokens, video 10 tokens). You can purchase token packages starting from $15."}}},seo:{title:"AI Interior Design Academy | Video Tutorials for Designers | Boardspace.ai",description:"Learn to use AI for interior design with professional video tutorials. Create AI images, photorealistic renders, videos, moodboards and more. The most comprehensive AI interior design course.",srOnly:"Comprehensive course for using AI in interior and exterior design. Video tutorials for learning AI image generation, renders, visualizations and moodboards with Boardspace tools. Suitable for interior designers, architects and design students."},videoTitles:{mixMaterials:"Mix materials for your image, up to 9 materials",extractPriceOffer:"How to extract a quote from a single image"}},UR={creator:{name:"Nano Banana 2",description:"Google's excellent Nano Banana 2 model, including Google image search"},erase:{name:"Watermark removal",description:"Remove watermarks from photos"},combine:{name:"Combine photos",description:"Combine up to 10 reference images into one"},promptHelper:{name:"Bordi",description:"A smart agent that automatically routes your request to the best specialized AI tool"},video3d:{name:"Kling v2.1",description:`One image to video
588
5895 seconds`},wanVideo:{name:"WAN 2.5",description:"5 second video with sound, 480p"},ltxVideo10s:{name:"LTX-Fast",description:"10 second video with sound, 1080p"},seedanceVideo:{name:"Seedance 2",description:"2 images to video"},generate3d:{name:"3D agent",description:"Create any 3D model in .glb format. Furniture and design products"},blender3d:{name:"Blender 3D Agent",description:"Building separated GLB furniture in Blender — Claude models in a vision-and-correction loop. Text 20 tokens, PDF 50, image 50"},kitchenDae:{name:"Kitchen sketch",description:"Converting 1-4 kitchen photos into a ready-to-use DAE file in SketchUp"},styleSwitch:{name:"Style Switch",description:"Flip interior design styles with a realistic room redesign"},ultraReal:{name:"Ultra realistic",description:"Create ultra-realistic and photorealistic interior designs with FLUX 1.1 Pro"},priceScan:{name:"Price scanning agent",description:"Create professional quote presentations from room photos"},quickEdit:{name:"Precise Editor",description:"Precise editing with marked regions, references, and variations"},imageGenerator:{name:"Image Creator",description:"Create images from text prompts using a fast FLUX model"},boardspaceEditor:{name:"Boardspace editor",description:"High quality photo editing with maximum accuracy for the prompt"},multiAngle:{name:"Camera Angles Agent",description:"Change the camera angle — rotate, tilt, and zoom while preserving objects"}
589,nanoBananaPro:{name:"Nano Banana Pro",description:"Google's advanced image editing model"},flux2Pro:{name:"Photo editing (Flux 2.0 Pro)",description:"Create and edit high-quality images with support for eight reference images"},gpt5Image:{name:"Image editing (GPT)",description:"Advanced image editing using gpt-image-1"},klingO1:{name:"Kling O1",description:"Precise image edits with strong reference control (up to 10 images)"},gptImage15:{name:"Image editing (GPT 1.5)",description:"High quality editing with fine detail preservation"},gptImage2:{name:"GPT Image 2.0",description:"High quality editing with fine detail preservation"},gptImage25Edit:{name:"GPT Image 2.5 Edit",description:"Attach one chat image, then add up to 10 precise edits in 1K, 2K, or 4K — from 3 tokens"},gptImage24k:{name:"GPT Image 2.0 4K",description:"Editing in 4K resolution"},klingO1Video:{name:"Kling O1",description:`Smooth video transition
5905 seconds, 1080p`},klingMotionControl:{name:"Kling motion control",description:"Transfer motion from video to image (8 seconds, 1080p)"},grokVideo:{name:"Grok Video",description:"AI video from photo (6-30 seconds)"},grokImageEditor:{name:"Grok Imagine Image 2.0",description:"Whole-image editing with Grok Imagine Image 2.0 at 2K — one image in, one image out"},seedream45Edit:{name:"Seedream 4.5",description:"High quality photo editing with Seedream 4.5"},seedream5Lite:{name:"Seedream 5.0",description:"Premium photo editing with Seedream 5.0 Lite"},runwayVideo:{name:"Runway Video",description:"AI video from an image (5 seconds, 720p, no sound)"},veoVideo:{name:"Veo 3.1",description:"High quality AI video with sound"},princeEditor:{name:"Prince Editor",description:"Fast image editing with up to 5 reference images"}},qR={image:"Image",video:"Video","3d":"3D"},GR={createBoardspace:"New Canvas",enterBoardspaceName:"Enter a canvas name...",searchBoardspaces:"Search canvases...",renameBoard:"Rename",deleteBoard:"Delete",renameDialogTitle:"Rename Canvas",renameDialogDescription:"Enter a new name for the canvas",renameDialogConfirm:"Update Name",cancel:"Cancel",deleteDialogTitle:"Delete this canvas?",deleteDialogDescription:"This action cannot be undone. The canvas and all its contents will be permanently deleted.",deleteDialogConfirm:"Delete",select:"Select",selectedSuffix:"selected",deleteSelected:"Delete",bulkDeleteTitle:"Delete the selected canvases?",bulkDeleteDescription:"This action cannot be undone. All selected artboards and all their content will be permanently deleted.",bulkDeleteSuccess:"Canvases deleted",bulkDeleteFailed:"Canvases could not be deleted",deleting:"Deleting..."},WR={title:"Settings",tabs:{user:"User",integrations:"Integrations",tokenPricing:"Token Pricing",pricing:"Pricing",billing:"Charges",tokenUsage:"Use of tokens",usage:"Usage"},user:{plan:"Plan",memberSince:"Member Since",nextPayment:"Next payment",tokens:"Tokens",usage:"Usage",upgrade:"Upgrade"},canvas:{title:"Canvas settings",showGrid:"Show Grid",showGridDescription:"Display a dot pattern on the canvas"},theme:{title:"Theme settings",darkMode:"Dark mode",darkModeDescription:"Use a dark interface",lightMode:"Light Mode"},language:{title:"Language settings",currentLanguage:"current language",switchToHebrew:"Go to Hebrew",switchToEnglish:"Switch to English"},integrations:{title:"Connections",connectedServices:"Connected services",pinterest:{title:"Pinterest",description:"Import inspiration boards and pins for your projects",connected:"Connected",notConnected:"Not Connected",connect:"Connect Pinterest",disconnect:"Disconnect",boards:"Boards",boardsConnected:"Boards • Connected",pinsImported:"Pins Imported",boardsUsed:"Boards Used",refresh:"Refresh",import:"Import",settings:"Settings",connectMessage:"Connect your Pinterest account to import inspiration",lastSynced:"Last sync",connectedAs:"Connected as"},moreIntegrations:{title:"Additional integrations",description:"Instagram, Houzz and more coming soon",comingSoon:"soon"}},pricing:{title:"Token pricing per call",description:"Token cost per feature use. Prices are shown in tokens only, not dollars.",feature:"Feature",cost:"cost",tokensPerUse:"Tokens per Use",free:"Free",categories:{superAgent:"Super Agent features",imageFeatures:"image features",videoFeatures:"Video features",presentations:"presentations"},features:{imageCreator:{name:"Image Creator",description:"Create interior/exterior design images from prompts and complex editing"},sketchToReality:{name:"Watermark removal",description:"Remove watermarks from photos"},combineImages:{name:"Combine photos",description:"Combine furniture and accessories (up to 10) to your image"},agent3d:{name:"3D agent",description:"Create a 3D model from a photo"}
590,nanoBananaPro:{name:"Nano Banana Pro",description:"Advanced Google image creation and editing model with accurate text and professional controls"},klingO1:{name:"Kling O1",description:"Accurate photo edits with strong reference control (up to 10 photos)"},removeBackground:{name:"Background removal",description:"AI-based background removal"},upscaleImage:{name:"Image Upscaling",description:"Improve image resolution with AI"},imageGenerator:{name:"Image Creator",description:"Create images from text prompts"},boardspaceEditor:{name:"Boardspace editor",description:"High quality photo editing with maximum accuracy for the prompt"},designDna:{name:"DesignDNA",description:"Extract your design DNA and collect 10-15 pieces of furniture and design that fit your aesthetic exactly with color swatches"},kitchenBoard:{name:"KitchenBoard",description:"Creates 6 unique variations of materials and color palette for your kitchen design based on Milan trends 2024-2025"},styleMatch:{name:"StyleMatch",description:"One style, endless rooms. Immediate design consistency"},ultraReal:{name:"Ultra Real",description:"Create ultra-realistic and photorealistic interior designs with FLUX 1.1 Pro"},video5sNoSound:{name:"Image 1 for video (5 seconds, 720p, no sound)",description:"Create a 5 second video from photos in 720p quality, without audio"},video5sWithSound:{name:"Image to video with sound (5 seconds, 480p)",description:"Create a 5 second video with sound from photos in 480p quality"},video10s:{name:"10 second video (1080p, with sound)",description:"Create a 10 second cinematic video with 1080p quality audio"},video2Image:{name:"2-Image Video",description:"Create a 10 second transition video from 2 images"},grokVideo:{name:"Grok Video",description:"Create a 6-30 second AI video from photos"},veoVideo:{name:"Veo 3.1 video",description:"High-quality AI video with sound, supports 1-2 images (Google Veo 3.1)"},priceScan:{name:"PriceScan agent",description:"Create professional quote presentations from room photos"}}},billing:{title:"Billing and Payments",currentPlan:"Current Plan",freePlan:"Free plan",subscribedPlan:"Active subscription",monthlyTokens:"Monthly Tokens",subscriptionPlans:"Subscription plans",tokenPackages:"Token Packages",oneTimePurchase:"One-Time Purchase",perMonth:"per month",popular:"Popular",bestValue:"Best Value",subscribe:"Subscribe",currentPlanBadge:"Your Plan",buyTokens:"Buy Tokens",manageSubscription:"Manage subscription",activeSubscription:"Active subscription",alreadyOnPlan:"You are already on this plan",upgradePlan:"Upgrade your plan",memberSince:"Member Since",nextPayment:"Next payment",tokensPerMonth:"Tokens/month",allFeaturesIncluded:"All features are included",tokensRollover:"Unused tokens roll over each month",whatCanIDo:"What can I do with",tokens:"Tokens",processing:"Processing...",switchPlan:"Switch to This Plan",upgrade:"Upgrade",perToken:"per token",oneTimePackages:"One-Time Token Packages",oneTimeDescription:"Running low on tokens mid-month? Buy a one-time token package and use the tokens whenever you need them. Same features, same access — simply pay as you go. * One-time purchases are available to subscribers only.",mostPopular:"Most Popular",buyOnce:"Purchase once",allFeaturesUnlimited:"All features are unlimited",tokensNeverExpire:"Tokens never expire",buyMoreBetterPrice:"Buy more = better price",allPlansInclude:"All plans include all features. Choose the amount of tokens that suits you.",planNames:{starter:"Starter plan",pro:"Professional Plan",enterprise:"Enterprise Plan"},planDescriptions:{starter:"Recommended for homeowners who keep personal inspiration boards",pro:"Perfect for active designers working on multiple projects",enterprise:"For teams and professionals who need high volume"},sampleUsage:{imageEditing:"Photo editing + watermark removal",complexEditing:"Complex editing and photo mixing",videosWithSound:"Video with sound",interiorPresentations:"Interior design presentations",models3d:"3D models",upscale:"Upscaling: Free, unlimited",removeBackground:"Backgroun
590d removal: free, unlimited"},subscriptionDialog:{subscribeToPlan:"Subscribe to this plan?",purchaseTokenPackage:"Purchase a pack of tokens?",switchSubscriptionPlan:"Change subscription plan?",subscribeToPlanDescription:"Subscribe to {{planName}} for ${{price}}/month.",purchaseTokenPackageDescription:"Purchase {{planName}} for ${{price}}.",switchPlanDescription:"You currently have the {{currentPlan}} plan. Switching to {{planName}} will replace your current subscription.",couponCode:"Coupon code (optional)",enterCouponCode:"Enter coupon code",redeem:"Redeem",validating:"Validating...",couponApplied:"Coupon has been activated!",discountActive:"{{discount}}% discount active",savePerMonth:"Save ${{amount}}/month",invalidCoupon:"Invalid or expired coupon code. Please check and try again.",whatHappensNext:"What happens next:",subscriptionStartsImmediately:"Your subscription will start immediately",tokensPerMonth:"You will receive {{tokens}} tokens every month",billedMonthly:"Monthly charge of ${{price}}",cancel:"Cancel",purchase:"Purchase {{planName}}",subscribeTo:"Subscribe to {{planName}}",yesSwitchTo:"Yes, switch to {{planName}}",receiveTokensImmediately:"You will receive {{tokens}} tokens immediately",tokensNeverExpire:"Tokens never expire",oneTimePayment:"One time payment of ${{price}}",billingAdjustedImmediately:"The charge will be updated immediately",unusedTokensRollover:"Unused tokens will roll over",newTokenAllocation:"New token allocation: {{tokens}}/month"}},tokenUsage:{title:"Use of tokens",description:"Complete history of all token transactions and feature calls",noUsage:"No token usage history yet. Your transactions will appear here.",loading:"Loading usage data...",error:"Failed to load token usage",feature:"Feature",tokens:"Tokens",dateTime:"Date and time",type:"Type",credit:"Credit",debit:"Debit"},dialogs:{rename:{title:"Change board name",description:"Enter a new name for your board",placeholder:"Enter board name...",cancel:"Cancel",rename:"Change name"},delete:{title:"Delete the board?",description:"This action cannot be undone. The board and all its contents will be permanently deleted.",cancel:"Cancel",delete:"Delete"}}},HR={title:"Help and support",subtitle:"Choose the support channel that best suits your needs",backToDashboard:"Back to dashboard",backToHelpCenter:"Back to the help center",faq:{title:"Frequently Asked Questions",subtitle:"Find quick answers to common questions about boardspace platform features and functionality.",allQuestions:"All the questions",categories:{gettingStarted:"Getting Started",canvasBoardspace:"Canvas and board",aiFeatures:"AI features",tokensPricing:"Tokens and pricing",pinterestIntegration:"Pinterest integration",publishingSharing:"Publishing and sharing",accountBilling:"Account and Billing",troubleshooting:"Troubleshooting"},stillNeedHelp:"Still need help?",cantFindAnswer:"Can't find the answer you're looking for? Our support team is here to help.",createSupportTicket:"Create a support request",emailSupport:"Send an email to support"},channels:{community:{title:"Join our community",description:"Connect with other interior designers, share projects and get instant help from our active community.",button:"Browse the community"},academy:{title:"Boardspace Academy",description:"Learn how to use Boardspace with our comprehensive documentation, pro tips, and step-by-step tutorials.",button:"Watch the Videos"},faq:{title:"Frequently Asked Questions",description:"Find quick answers to common questions about boardspace platform features and functionality.",button:"Browse through the questions"},premium:{title:"Premium support",description:"Direct support channel for paying users with priority assistance and dedicated help.",button:"Create a Ticket"}},questions:{gettingStarted:{q1:{question:"What is Boardspace.ai?",answer:"Boardspace.ai is an infinite multimedia canvas and social hub for interior design enthusiasts, creators, and professionals. Gather inspiration, create moodboards, generate AI images and videos, and collaborate with clients — all in one place."},q2:{question:"How do I get started?",answer:"Sign up for a free account at Boardspace.ai. You will get 5 free edits to explore AI features. Watch tutorial videos to earn more tokens, create your first canvas from the dashboard, and add images, Pinterest pins, or AI-generated content."},q3:{question:"Do I have to pay to use Boardspace?",answer:"No. Boardspace is free to use. You get 5 free edits when you register and can earn more by watching videos. Importing from Pinterest, saving canvase
590s, and browsing are free. You pay only when you use AI features such as image generation, video generation, and moodboard creation."},q4:{question:"What can I do with Boardspace?",answer:"Create unlimited canvases (artboards) to organize your design projects, import pins from Pinterest for free, generate AI images and videos, create professional mood boards, collaborate with clients, publish your designs to the community gallery, and remix other creators' designs."}},canvasBoardspace:{q1:{question:"What is a Boardspace canvas?",answer:"A canvas is an infinite canvas workspace. Think of it as a digital mood board with unlimited space - you can add photos, videos, text, shapes and drawings anywhere. There are no limits, so you can expand your design as needed."},q2:{question:"How do I create a new canvas?",answer:"Go to the dashboard and click 'Create New Canvas.' Give it a name and start adding content. You can import images, add Pinterest pins, generate AI images, or upload your own files."},q3:{question:"Is my canvas saved automatically?",answer:"Yes. Your canvas is saved automatically every 5 seconds while you work. You can also save manually with Ctrl+S (or Cmd+S on a Mac). All your work is stored safely in the cloud."}
590,q4:{question:"Can I organize multiple canvases?",answer:"Yes. You can create unlimited canvases for different projects. Each canvas is independent, so you can organize by client, room type, or design style and access every canvas from the dashboard."},q5:{question:"What types of files can be uploaded?",answer:"You can upload images (JPG, PNG, WebP) and videos (MP4, MOV). Photos can be up to 10MB, and videos up to 100MB. You can also import directly from Pinterest or generate AI content."},q6:{question:"Can I edit images on the canvas?",answer:"Yes. You can resize, rotate, move, and arrange any element on your canvas. For AI editing such as background removal, upscaling, or transformations, use the AI tools available on each image."}},aiFeatures:{q1:{question:"What AI features does Boardspace offer?",answer:"Boardspace offers AI image generation, image-to-video conversion, moodboard creation, background removal, image upscaling, and conversational AI image editing."},q2:{question:"How to create an image in AI?",answer:"Click the Create AI Images icon in the left sidebar, enter your text prompt describing what you want to create, and click Create. The image will appear on your canvas. Each creation costs 2 Tokens."},q3:{question:"How long does it take to produce an AI image?",answer:"Generating an AI image usually takes 10-30 seconds. You'll see a production frame appear on your canvas as the AI ​​creates your image. The image will appear automatically when ready."},q4:{question:"Can I convert photos to videos?",answer:"Yes. Select any image on your canvas and use the Image to Video feature. You can create 5- or 8-second videos. Each conversion costs 10 tokens and takes 60–90 seconds."},q5:{question:"What is creating a mood board?",answer:"Mood Board Maker creates professional interior design presentations from your images. AI analyzes your design style and creates a complete presentation with matching color palettes and spatial visualizations. Each creation costs 2 tokens."},q6:{question:"Can backgrounds be removed from photos?",answer:"Yes. Background removal is free (0 tokens). Select an image on your canvas and use the background remover tool. AI will remove the background automatically, leaving only your object."},q7:{question:"What is AI image chat?",answer:"AI Photo Chat allows you to edit photos by talking to AI. Select an image and click the chat icon, then describe what you want to change. The AI ​​will change the image according to your instructions. Each edit costs one token."}},tokensPricing:{q1:{question:"What are tokens?",answer:"Tokens are boardspace's currency for AI features. Tokens are used to generate AI images, create videos, create mood boards, and use other AI-based features. Importing from Pinterest and saving a canvas are free and require no tokens."},q2:{question:"How much do tokens cost?",answer:"Tokens can be bought through monthly subscriptions ($25-$89 per month) or one-time packages ($15-$50). Subscriptions give better value to the token. All new users get 5 free edits upon registration and can earn more."},q3:{question:"Do tokens expire?",answer:"No. Tokens never expire. Unused tokens from your monthly subscription roll over to the next month and accumulate, so you can use them whenever needed."},q4:{question:"How much do AI features cost?",answer:"Creating an AI image costs 2 tokens, image-to-video costs 10 tokens (5 or 8 seconds), creating a mood board costs 2 tokens, chatting/editing AI images costs 1 token to edit. Background removal and image enlargement are free (0 tokens)."},q5:{question:"How do I buy more tokens?",answer:"Click on your token balance in the top navigation bar, then choose a monthly subscription plan or one-time token package. Make the payment securely through Stripe, and the tokens are instantly added to your account."},q6:{question:"Can I see token usage history?",answer:"Yes. Go to Settings to view your detailed token usage history, including each feature used, its token cost, and when it was used."},q7:{question:"What happens if I run out of tokens?",answer:"If you run out of tokens, you'll see a message when you try to use AI features. You can still use free features like importing from Pinterest, saving a canvas, and browsing. Just buy more tokens to continue using AI features."}},pinterestIntegration:{q1:{question:"Can I import pins from Pinterest?",answer:"Yes. Pinterest integration is free. C
590onnect your Pinterest account in Settings, then browse and import pins directly to your canvas. Importing from Pinterest costs no tokens."},q2:{question:"How do you connect the Pinterest account?",answer:"Go to Settings and click 'Connect Pinterest.' You will be redirected to Pinterest to authorize Boardspace. Once connected, you can browse and import pins directly from the canvas sidebar."},q3:{question:"Is it possible to import several PINs at once?",answer:"Yes. When browsing Pinterest from Boardspace, select multiple pins and import them to the canvas at once. They will appear in a grid that you can rearrange."},q4:{question:"Need a Pinterest account?",answer:"Yes, you need a Pinterest account to import pins. You can still use every other Boardspace feature without Pinterest; the integration is optional."}},publishingSharing:{q1:{question:"Can I share my canvas with others?",answer:"Yes. You can publish your work to the Community Gallery for others to view and remix. You can also share private links or collaborate with team members."},q2:{question:"What does 'remix' mean?",answer:"Remixing means making your own copy of someone else's published canvas so you can edit it and make it your own. It is a great way to get inspired and build on other people's designs."},q3:{question:"Can I keep my canvases private?",answer:"Yes. All canvases are private by default. You choose which ones to publish to the Community Gallery, and private canvases are visible only to you."},q4:{question:"Can I collaborate with clients?",answer:"Yes. Share your canvas with clients through a private link or invite them to collaborate. They can view and comment on your designs, and collaboration features are available for team projects."},q5:{question:"How do I download a canvas?",answer:"Export your canvas as an image or PDF using the download button on the canvas toolbar. The export includes all elements visible on your canvas."}},accountBilling:{q1:{question:"How to change a password?",answer:"Go to Settings and click on 'Change Password'. You will receive an email with a link to reset your password. You can also use 'forgot password' on the login page if you have forgotten your current password."},q2:{question:"Can I cancel the subscription?",answer:"Yes, you can unsubscribe at any time from the settings. Your subscription will remain active until the end of the current billing period, and you will keep all tokens you have purchased."},q3:{question:"What payment methods do you accept?",answer:"We accept all major credit and debit cards through Stripe. Payments are processed securely and tokens are immediately added to your account after payment."},q4:{question:"Can I get a refund?",answer:"Refunds are handled on a case-by-case basis. If you experience issues with token purchases or feature functionality, contact [email protected] and we will help resolve the problem."},q5:{question:"How do you delete the account?",answer:"Contact [email protected] to request account deletion. We will process your request and permanently delete your account and all associated data within 30 days."}},troubleshooting:{q1:{question:"My canvas is not saved. what to do",answer:"First check your internet connection. Try saving manually with Ctrl+S (or Cmd+S on a Mac). If problems persist, refresh the page - your work should be automatically saved. If data is lost, contact support with your desktop name."},q2:{question:"AI image generation doesn't work",answer:"First, check your token balance (2 tokens are required per image). Make sure you are signed in and refresh the page. If the problem persists, clear your browser cache or try a different browser; Chrome is recommended."},q3:{question:"Video conversion failed. what happened",answer:"Make sure you have 10 tokens available. Check that your image is in PNG or JPG format and under 5MB. Try using a smaller image size. If still fails, contact support with image details."},q4:{question:"I charged but did not receive tokens",answer:"Tokens are usually added immediately. Wait 1–2 minutes, then refresh the page and check your email for payment confirmation. If the tokens still do not appear after 5 minutes, contact support with your payment confirmation."},q5:{question:"Pins from Pinterest are not imported",answer:"Make sure your Pinterest account is connected in settings. Make sure the Pinterest board is public or you have access to it. Try disconnecting and reconnecting your Pinterest account. Clear cookies and try again."},q6:{question:"I can't log in to my account",answer:"Try the 'forgot password' option on the login page. Check your email (including spam folder) for the reset link. Clear your browser's cac
590he and cookies, or try using a private/incognito browsing window. Make sure the Caps Lock key is off when entering a password."},q7:{question:"Canvas is slow or stuttering",answer:"Large canvases with many images can be slower. Try closing other browser tabs, clearing browser cache, or using a different browser. For best performance, use Chrome or Firefox on a desktop computer."},q8:{question:"My photos are not loading",answer:"Check your internet connection. Try refreshing the page. If specific images are not loading, they may have been deleted or the link is broken. Try re-uploading or re-importing these images."}}}},KR={title:"Support Center",subtitle:"Get professional help and report issues to our dedicated support team.",myTickets:"My Tickets",newTicket:"New Ticket",loadingTickets:"Loading requests...",noTicketsYet:"No support inquiries yet",noTicketsMatch:"There are no inquiries matching your search",createFirstTicket:"Create Your First Ticket",searchPlaceholder:"Search tickets by subject or ticket number...",filters:{allTickets:"All Tickets",open:"Open",inProgress:"In Progress",resolved:"Resolved",closed:"Closed"},priority:{low:"Low",medium:"Medium",high:"High",critical:"Critical"},status:{open:"Open",inProgress:"In Progress",resolved:"Resolved",closed:"Closed"},createTicket:{title:"Create a new support ticket",subtitle:"Tell us about your problem and we will get back to you as soon as possible with professional help.",category:"Category",categoryLabel:"Category",selectCategory:"Select a category",categories:{billing:"Billing",technical:"Technical Issue",feature:"Feature Request",bug:"Report a bug",other:"Other"},priority:"Priority",priorityLabel:"Priority",subject:"Subject",subjectLabel:"Subject",subjectPlaceholder:"A brief description of your problem or start typing...",description:"Description",descriptionLabel:"Description",descriptionPlaceholder:"Please provide detailed information about your problem, including recovery steps if applicable...",submitButton:"Create a support request",submitting:"Creating Ticket...",submittingButton:"Creating Ticket...",quickShortcuts:"Quick shortcuts",shortcuts:{aiImageNotWorking:"AI image generation doesn't work",videoConversionFailed:"Image to video conversion failed",tokenBalanceNotUpdating:"Token balance is not updated after payment",canvasNotSaving:"The canvas/artboard is not saved",pinterestIssues:"Pinterest integration issues",moodboardNotWorking:"Creating a mood board doesn't work"},successMessage:"Ticket created successfully! Number: {{ticketNumber}}. You will receive an AI reply within 10–15 minutes.",errorFillFields:"Please fill in all required fields",errorNotLoggedIn:"You must be signed in to create a ticket",errorCreateFailed:"Failed to create the ticket. Please try again."},fileUpload:{title:"Attachments",attachments:"Attachments",clickOrDrag:"Click to upload or drag and drop",dragDrop:"Drag and drop files here or click to select",maxSize:"Maximum size: 10MB",acceptedTypes:"Allowed files: PNG, JPG, PDF, DOC, DOCX",remove:"Remove"},ticketCard:{category:"Category"}},YR={gptWorkspace:TR,thinkingWords:jR,materialReferences:NR,dropZone:PR,characterRefReject:AR,agentSuccess:ER,bordi:IR,workflows:DR,workflowLanding:RR,colorPaletteGallery:LR,quickEditPrompts:OR,layers:MR,tooltips:zR,shareModal:BR,painting:FR,modelDaeViewer:$R,academy:VR,agents:UR,agentCategories:qR,menu:GR,settings:WR,helpCenter:HR,supportCenter:KR},QR="Prompt Guide",JR="16 expert prompts to unlock Nano Banana Pro's full potential for interior and exterior design photography",XR="Search prompts...",ZR="prompts",e4="Fill in:",t4="Copy Prompt",a4="Copy",i4="Copied!",o4="📋 Quick Reference",r4="Aspect Ratios",n4="Camera Settings Cheat Sheet",s4={title:"The Golden Rule",text:"Always include the CRITICAL section with same_room rule when editing existing images. This prevents Nano Banana Pro from generating a completely new room instead of modifying your uploaded image."},l4={title:"A Note About AI",text:"Nano Banana Pro represents the cutting edge of AI image generation, but like all AI technology, results may vary. We've crafted these prompts to help you achieve the best possible outcomes, minimizing common mistakes. The AI revolution in interior design is just beginning—we're committed to staying at the forefront with the most accurate and reliable tools available. Stay tuned for what's next."},c4={readyToCreate:"Ready to Create?",startNewProject:"Start a new project with Nano Banana Pro and create stunning interior designs.",signUpToTry:"Sign up to try these prompts with Nano Banana Pro and create stunning interior designs.",tryNanoBananaPro:"Try Nano Banana Pro",getStarted:"Get Started",creating:"Creating..."},d4={cameraAngles:"Camera Angles",shoppingBudget:"Shopping & Budget",styleLighting:"Style & Lighting",technicalProfessional:"Technical & Professional"},u4={failedToCopy:"Failed to copy",failedToCreateProject:"Failed to create project"},m4={"detail-bokeh":"Detail Shot with Bokeh","wide-establishing":"Wide Establishing Shot","low-angle-drama":"Low Angle Drama Shot","doorway-threshold":"Doorway Threshold Shot","overhead-birds-eye":"Overhead / Bird's Eye","find-products":"Find Products from Image","budget-comparison":"Budget Comparison (2 Tiers)","side-by-side-budget-comparison":"Side-by-Side Budget Comparison with Product Details","mood-board-products":"Mood Board with Real Products","time-of-day":"Time of Day Change","style-transfer":"Style Transfer","seasonal-styling":"Seasonal Styling","floor-plan-3d":"Floor Plan to 3D Visualization","material-closeup":"Material Close-Up","before-after":"Before/After Split","presentation-board":"Presentation Board"},p4={"detail-bokeh":"Close-up of a specific element with beautiful background blur","wide-establishing":"Wide shot showing the entire space","low-angle-drama":"Low angle shot to emphasize height and create drama","doorway-threshold":"Shot from the doorway - sense of discovery","overhead-birds-eye":"Top-down view showing furniture layout","find-products":"Identify products in the image and find real purchasable alternatives","budget-comparison":"Same room in two budgets - mid-range vs premium","side-by-side-budget-comparison":"Create a detailed side-by-side comparison with numbered callouts and price lists","mood-board-products":"Professional mood board with real products and prices","time-of-day":"Change the time of day - morning, golden hour, evening, or night","style-transfer":"Transform the room to a different design style","seasonal-styling":"Style the room for different seasons or holidays","floor-plan-3d":"Transform a 2D floor plan into a 3D interior visualization","material-closeup":"Macro shot of a specific material or texture","before-after":"Create a side-by-side before/after comparison","presentation-board":"Professional client presentation board"},h4={highlight_element:"What to highlight (the staircase / the fireplace / the sofa / the lighting fixture)",position:"Where to shoot from (from the entrance / from the corner / facing the window)",emphasize:"What to emphasize (ceiling height / staircase / chandelier / double-height windows)",entry_point:"Entry point (main door / archway / hallway o
590pening)",focus_area:"Focus area (seating arrangement / dining table / coffee table styling)",currency:"Currency (EUR / USD / ILS)",none:"No input required - automatic comparison",board_title:"Board title (LIVING ROOM CONCEPT / GET THIS LOOK / CLIENT: Name)",time_of_day:"Time of day (morning / golden_hour / evening / night)",new_style:"New style (Scandinavian / Mid-Century Modern / Industrial / Japandi / Mediterranean / Art Deco / Minimalist / Bohemian / Traditional / Contemporary Luxury)",season:"Season (spring / summer / autumn / winter / christmas / hanukkah)",style:"Style (Modern Minimalist / Scandinavian / Luxury Contemporary / Industrial) and View (perspective / axonometric / eye-level walkthrough)",material:"Material (marble floor / oak veneer / velvet upholstery / concrete wall / brass hardware / terrazzo / leather / linen curtains)",change_description:"What to change (renovate with modern style / change color scheme to warm tones / upgrade furniture to mid-century / add more plants and natural elements)",project_name:"Project name (Living Room Redesign / Master Bedroom / Open Kitchen) and optionally Client name"},g4={"16:9":"Wide shots, presentations, hero images","4:5":"Instagram, vertical presentations","1:1":"Square, overhead shots, social media","9:16":"Stories, vertical comparisons","2.39:1":"Cinematic widescreen"},f4={"f/1.8-2.8":"Shallow DOF, background blur, detail shots","f/5.6-8":"Everything sharp, wide shots","16-24mm":"Wide angle, full room shots","35-50mm":"Standard, natural perspective","85-100mm":"Detail shots, portraits, compression"},b4={title:"Video Prompt Guide",subtitle:"25 expert prompts for Kling O1 Image-to-Video to unlock the full potential of video generation for interior and exterior design",searchPlaceholder:"Search video prompts...",quickReference:"📋 Quick Reference",category:"Category",prompts:"Prompts",bestFor:"Best For",portfolioPresentations:"Portfolio, client presentations",renovationShowcases:"Renovation showcases",atmosphereDemos:"Atmosphere demos",materialHighlights:"Material/furniture highlights",socialMediaMarketing:"Social media, marketing",exteriorShowcases:"Real estate, property marketing",aiNote:{title:"A Note About AI Video Generation",text:"Kling O1 represents cutting-edge AI video generation technology. These prompts are designed to help you achieve professional results for interior design videos. Results may vary, and we recommend experimenting with different prompts to find what works best for your specific designs."},cta:{readyToCreate:"Ready to Create?",startNewProject:"Start a new project with Video Generator and create stunning interior design videos.",signUpToTry:"Sign up to try these prompts with Video Generator and create stunning interior design videos.",tryVideoGenerator:"Try Video Generator",getStarted:"Get Started",creating:"Creating..."}},v4={roomWalkthroughs:"Room Walkthroughs",beforeAfter:"Before/After Transformations",lightingAtmosphere:"Lighting & Atmosphere",furnitureElementFocus:"Furniture & Element Focus",virtualStagingLifestyle:"Virtual Staging & Lifestyle",exteriorArchitecture:"Exterior Architecture"},y4={"slow-room-pan":"Slow Room Pan","entry-reveal":"Entry Reveal","corner-to-corner-sweep":"Corner to Corner Sweep","window-light-walk":"Window Light Walk","circular-room-tour":"Circular Room Tour","design-morph":"Design Morph","style-evolution":"Style Evolution","renovation-reveal":"Renovation Reveal","seasonal-shift":"Seasonal Shift","day-to-night-transform":"Day-to-Night Transform","golden-hour-sweep":"Golden Hour Sweep","chandelier-activation":"Chandelier Activation","mood-lighting-shift":"Mood Lighting Shift","morning-light-animation":"Morning Light Animation","fireplace-glow":"Fireplace Glow","sofa-detail-reveal":"Sofa Detail Reveal","table-setting-showcase":"Table Setting Showcase","art-wall-focus":"Art Wall Focus","material-texture-pan":"Material Texture Pan","kitchen-island-orbit":"Kitchen Island Orbit","curtain-breeze":"Curtain Breeze","plant-life-animation":"Plant Life Animation","reflection-shimmer":"Reflection Shimmer","cozy-living-scene":"Cozy Living Scene","bathroom-spa-reveal":"Bathroom Spa Reveal","luxury-villa-aerial":"Luxury Villa Aerial Reveal","skyscraper-dramatic-rise":"Skyscraper Dramatic Rise","residential-estate-birds-eye":"Residential Estate Bird's Eye","modern-home-entrance":"Modern Home Grand Entrance","office-building-lobby":"Office Building Lobby Approach","villa-poolside-reveal":"Villa Poolside Reveal","building-corner-dramatic":"Building Corner Dramatic Low Angle","historic-villa-evening":"Historic Villa Evening Glow","commercial-tower-reflection":"Commercial Tower Reflection Study","villa-day-to-night":"Villa Day-to-Night Transition","building-entrance-activity":"Building Entrance Activity","garden-path-villa":"Garden Path to Villa","courtyard-orbit":"Courtyard Orbit","foggy-morning-estate":"Foggy Morning Estate","rainy-day-building":"Rainy Day Building Mood","sunset-silhouette-villa":"Sunset Silhouette Villa","office-campus-overview":"Office Campus Overview","luxury-condo-tower":"Luxury Condo Tower Showcase"},x4={"slow-room-pan":"Camera slowly pans from left to right across the room","entry-reveal":"Camera dollies forward from doorway into the living space","corner-to-corner-sweep":"Camera glides diagonally showcasing spatial depth","window-light-walk":"Camera tracks parallel to windows capturing natural light","circular-room-tour":"Camera orbits 180 degrees around room center","design-morph":"Smooth crossfade transition between two designs","style-evolution":"Gradual material and color transformation","renovation-reveal":"Elements dissolve and reform into upgraded de
590sign","seasonal-shift":"Decor elements transition between seasonal styles","day-to-night-transform":"Lighting shifts from daylight to evening ambiance","golden-hour-sweep":"Warm sunlight slowly sweeps across room","chandelier-activation":"Chandelier gradually illuminates the room","mood-lighting-shift":"Ambient lighting transitions from cool to warm","morning-light-animation":"Soft morning light gradually intensifies","fireplace-glow":"Fireplace flames flicker casting warm light","sofa-detail-reveal":"Camera pushes in toward sofa revealing texture","table-setting-showcase":"Camera descends revealing dining table arrangement","art-wall-focus":"Camera dollies toward feature wall artwork","material-texture-pan":"Camera glides across surface showcasing textures","kitchen-island-orbit":"Camera orbits around kitchen island","curtain-breeze":"Sheer curtains billow gently inward","plant-life-animation":"Indoor plants sway subtly","reflection-shimmer":"Mirror and glass surfaces catch light reflections","cozy-living-scene":"Steam rises from coffee cup","bathroom-spa-reveal":"Camera rises revealing bathroom design","luxury-villa-aerial":"Cinematic aerial drone shot orbiting modern luxury villa","skyscraper-dramatic-rise":"Low-angle drone shot rising along glass facade","residential-estate-birds-eye":"High-altitude aerial shot descending toward estate","modern-home-entrance":"Smooth tracking shot approaching contemporary home","office-building-lobby":"Gimbal tracking shot toward corporate glass building","villa-poolside-reveal":"Slow dolly shot along infinity pool revealing villa","building-corner-dramatic":"Static low-angle shot of modern angular building","historic-villa-evening":"Mediterranean villa at dusk with warm interior lights","commercial-tower-reflection":"Medium shot of office tower glass facade reflections","villa-day-to-night":"Static shot of villa transitioning from day to night","building-entrance-activity":"Wide shot of office building with professionals walking","garden-path-villa":"First-person walkthrough along garden pathway","courtyard-orbit":"Smooth orbital camera circling interior courtyard","foggy-morning-estate":"Grand estate emerging from morning mist","rainy-day-building":"Modern building during rain with moody atmosphere","sunset-silhouette-villa":"Villa silhouetted against dramatic sunset sky","office-campus-overview":"Aerial tracking shot of modern office campus","luxury-condo-tower":"Slow vertical pan up residential tower facade"},w4={title:"GPT-image-1.5 Prompt Guide",subtitle:"25 expert prompts for GPT-image-1.5 to unlock the full potential of AI image generation for interior design",searchPlaceholder:"Search GPT-image prompts...",tips:{title:"💡 Usage Tips",tip1:"Replace the square brackets [specify...] with specific details for your project",tip2:'For more accurate results - add quality="high" and input_fidelity="high"',tip3:'For maximum identity preservation - repeat "preserve" and "do not change" multiple times',tip4:"For multiple images - always specify Image 1 / Image 2 explicitly"},aiNote:{title:"A Note About GPT-image-1.5",text:"GPT-image-1.5 represents cutting-edge AI image generation technology. These prompts are designed to help you achieve professional results for interior design. Results may vary, and we recommend experimenting with different prompts and parameters to find what works best for your specific projects."},cta:{readyToCreate:"Ready to Create?",startNewProject:"Start a new project with Image Creator and create stunning interior designs.",signUpToTry:"Sign up to try these prompts with Image Creator and create stunning interior designs.",tryImageCreator:"Try Image Creator",getStarted:"Get Started",creating:"Creating..."}},k4={floorPlanConversion:"Floor Plan & Sketch Conversion",materialReplacement:"Material & Finish Replacement",addRemoveItems:"Add & Remove Items",lightingAtmosphere:"Lighting & Atmosphere Changes",styleTransfer:"Style Transfer & Mood Boards",cameraComposition:"Camera Angles & Composition",architecturalChanges:"Architectural Modifications",specificRooms:"Specific Rooms",beforeAfter:"Before/After & Comparisons",marketingOptimization:"Marketing Optimization"},_4={"floor-plan-isometric":"Floor Plan → Isometric 3D Render","floor-plan-top-down":"Floor Plan → Top-Down 3D Visualization","sketch-to-render":"Hand Sketch → Photorealistic Render","replace-flooring":"Replace Flooring","replace-countertop":"Replace Kitchen Countertop","change-wall-color":"Change Wall Color","replace-cabinets":"Replace Kitchen Cabinets","add-fur
590niture":"Add Furniture from Product Image","remove-furniture":"Remove Furniture","virtual-staging":"Virtual Staging - Empty to Furnished","day-to-night":"Day → Night Transformation","winter-season":"Winter Season Transformation","dramatic-lighting":"Dramatic Editorial Lighting","apply-style-reference":"Apply Style from Reference Image","mood-board-to-room":"Mood Board → Room Render","new-camera-angle":"Create New Camera Angle","panoramic-expansion":"Panoramic Wide Shot","add-architectural-element":"Add Architectural Element","modify-ceiling":"Modify Ceiling","enlarge-window":"Enlarge Window","upgrade-bathroom":"Upgrade Bathroom","outdoor-terrace":"Outdoor Terrace Design","before-after-split":"Before/After Split View","material-variations":"Material Variations Grid","real-estate-enhancement":"Real Estate Photo Enhancement"},S4={"floor-plan-isometric":"Transform floor plan into photorealistic isometric 3D render","floor-plan-top-down":"Convert architectural floor plan into top-down 3D view","sketch-to-render":"Transform hand-drawn sketch into photorealistic room render","replace-flooring":"Replace only the flooring while preserving everything else","replace-countertop":"Replace kitchen countertops with new material","change-wall-color":"Change wall color while preserving all other elements","replace-cabinets":"Replace kitchen cabinets with new style","add-furniture":"Place furniture from product image into room","remove-furniture":"Remove specific furniture item from room","virtual-staging":"Furnish empty room with modern minimalist furniture","day-to-night":"Transform daytime interior into evening scene","winter-season":"Transform interior into cozy winter evening setting","dramatic-lighting":"Create dramatic editorial atmosphere with lighting","apply-style-reference":"Apply interior design style from reference image","mood-board-to-room":"Create room render based on mood board elements","new-camera-angle":"Generate alternative camera angle of interior space","panoramic-expansion":"Expand interior view into wider panoramic shot","add-architectural-element":"Add built-in element like bookshelves to wall","modify-ceiling":"Change ceiling design while preserving room","enlarge-window":"Enlarge window to floor-to-ceiling dimensions","upgrade-bathroom":"Renovate bathroom with modern luxury finishes","outdoor-terrace":"Transform outdoor terrace into designed living space","before-after-split":"Create split-screen before/after comparison","material-variations":"Generate 4 material variations in 2x2 grid","real-estate-enhancement":"Enhance interior photo for real estate marketing"},C4={title:"Veo 3.1 Video Prompt Guide",subtitle:"Tricks toolkit + 12 ready prompts (6 from single image, 6 from two images) for Veo 3.1 interior design",searchPlaceholder:"Search Veo prompts...",imageToVideo:"Image-to-Video",imageToVideoDesc:"Tricks toolkit + 12 ready prompts (6 from single image, 6 from two images) for interior design",aiNote:{title:"A Note About Veo 3.1",text:"Google Veo 3.1 represents cutting-edge AI video generation technology. These prompts are designed to help you achieve professional results for interior design videos. Results may vary, and we recommend experimenting with different prompts to find what works best for your specific designs. For Image-to-Video prompts, always start with 'Use the uploaded image as the first frame' to ensure consistency."},cta:{readyToCreate:"Ready to Create?",startNewProject:"Start a new project with Video Generator and create stunning interior design videos.",signUpToTry:"Sign up to try these prompts with Video Generator and create stunning interior design videos.",tryVideoGenerator:"Try Video Generator",getStarted:"Get Started",creating:"Creating..."}},T4={livingRoomPublic:"Living Room / Public Space",kitchenDining:"Kitchen + Dining Area",bedroomKids:"Bedroom / Kids Rooms",bathroomSpa:"Bathroom / Home Spa",exteriorOutdoor:"Exterior: House / Yard / Facade / Pool",interiorVideoTricks:"Interior Video Tricks (Veo 3.1)",singleImageToVideo:"6 Prompts (Single Image → Video)",twoImagesTimelapse:"6 Prompts (Two Images → Timelapse/Transition)"},j4={"modern-warm-minimal-living":"Modern Warm Minimal Living Room","japandi-living-room":"Japandi Living Room","luxury-contemporary-lounge":"Luxury Contemporary Lounge","scandinavian-family-living":"Scandinavian Family Living Room","industrial-loft-living":"Industrial Loft Living Space","minimalist-kitchen-island":"Minimalist Kitchen with Large Island","cozy-mediterranean-kitchen":"Cozy Mediterranean Kitchen","dining-room-styling":"Dining Room Styling Shot","high-end-kitchen-dusk":"High-End Kitchen at Dusk","open-plan-continuity":"Open-Plan Kitchen-Dining-Living","serene-master-bedroom":"Serene Master Bedroom","kids-bedroom-pastel":"Kids Bedroom with Pastel Accents","boutique-hotel-bedroom":"Boutique-Hotel Bedroom Look","minimal-bedroom-product":"Minimal Bedroom Product-Style Shot","bedroom-daylight-evening":"Bedroom Daylight-to-Evening Mood","spa-bathroom-microcement":"Spa Bathroom with Microcement","luxury-bathroom-marble":"Luxury Bathroom with Marble","small-bathroom-makeover":"Small Bathroom Makeover Vibe","wet-room-shower-detail":"Wet-
590Room Shower Detail Shot","powder-room-moody":"Powder Room Moody","modern-villa-exterior":"Modern Villa Exterior","mediterranean-courtyard":"Mediterranean Courtyard","backyard-patio-styling":"Backyard Patio Styling","poolside-luxury":"Poolside Luxury","front-entrance-hero":"Front Entrance Hero Shot","night-exterior-facade":"Night Exterior: Facade Uplights","balcony-city-apartment":"Balcony in City Apartment","rainy-modern-house":"Rainy Modern House Exterior","garden-walkway-reveal":"Garden Walkway Reveal","architectural-detail-closeup":"Architectural Detail Close-Up","trick-lock-space":"Maximum Space Locking","trick-prevent-structure-change":"Prevent Structure Changes","trick-safe-camera-movement":"Safe Camera Movement for Interior","push-in-realistic-life":"Realistic Push-in + Subtle Life","pan-small-real-estate":'Small Pan "Real Estate"',"rack-focus-material-detail":"Rack Focus for Material Details","golden-hour-pass":'"Golden hour pass" (Light Change Only)',"night-cozy":'"Night cozy" (Practical Lights)',"clean-stabilization":'"Clean stabilization" (Almost Still but Alive)',"finish-reveal-clean":'"Finish reveal" Clean (No Workers)',"materials-install-sequence":'"Materials install sequence" (No Mess)',"same-design-staging-only":'"Same design, staging only" (Home Styling)',"day-night-between-frames":'"Day→Night between frames"',"micro-zoom-into-final":'"Micro‑zoom into final" (Maintains Stability)',"people-disallow":'"People disallow" to Avoid Accidental Characters'},N4={"modern-warm-minimal-living":"Warm minimal living room with soft morning light","japandi-living-room":"Japandi style with overcast daylight","luxury-contemporary-lounge":"Luxury lounge with golden hour lighting","scandinavian-family-living":"Family-friendly Scandinavian space","industrial-loft-living":"Industrial loft with night scene lighting","minimalist-kitchen-island":"Minimalist kitchen with marble island","cozy-mediterranean-kitchen":"Mediterranean kitchen with warm morning light","dining-room-styling":"Overhead-to-angled reveal of dining table","high-end-kitchen-dusk":"Kitchen with under-cabinet warm LEDs","open-plan-continuity":"Continuity shot across zones","serene-master-bedroom":"Pre-dawn blue ambient with warm bedside lamps","kids-bedroom-pastel":"Playful kids room with soft daylight","boutique-hotel-bedroom":"Dark wood and brass with evening light","minimal-bedroom-product":"Focus on materials with rack focus","bedroom-daylight-evening":"Smooth transition from day to night","spa-bathroom-microcement":"Spa bathroom with diffused skylight","luxury-bathroom-marble":"Marble slabs with warm indirect lighting","small-bathroom-makeover":"Bright white tile with oak vanity","wet-room-shower-detail":"Extreme close-up with water droplets","powder-room-moody":"Dark paint with single sconce","modern-villa-exterior":"White stucco with golden hour sun","mediterranean-courtyard":"Stone paving with olive trees","backyard-patio-styling":"Outdoor dining with dusk blue hour","poolside-luxury":"Travertine deck with calm water","front-entrance-hero":"Pathway with planting beds","night-exterior-facade":"Uplights washing textured wall","balcony-city-apartment":"Outdoor lounge with skyline bokeh","rainy-modern-house":"Wet pavement with reflections","garden-walkway-reveal":"Camera starts behind leaves","architectural-detail-closeup":"Wood slat façade with sunlight streaks","trick-lock-space":"Using start image and last frame","trick-prevent-structure-change":"Keep walls/doors/windows fixed","trick-safe-camera-movement":"Gentle movements with straight verticals","push-in-realistic-life":"Slow centered zoom with micro movements","pan-small-real-estate":"Slow left-to-right pan 3-5 degrees","rack-focus-material-detail":"Focus shift from foreground to background","golden-hour-pass":"Smooth transition from daylight to golden hour","night-cozy":"Transition from late afternoon to warm evening","clean-stabilization":"Perfectly locked camera with micro movements","finish-reveal-clean":"Smooth renovation transition without people","materials-install-sequence":"Realistic material installation sequence","same-design-staging-only":"Only styling changes, no furniture changes","day-night-between-frames":"Day-to-night transition with geometry preservation","micro-zoom-into-final":"Gentle zoom in with stability","people-disallow":"Prevent character appearance"},P4={title:"Sora 2 Video Prompt Guide",subtitle:"Tricks toolkit 
590+ 25 ready prompts (12 interiors, 13 exteriors) for Sora 2 interior designers",searchPlaceholder:"Search Sora prompts...",aiNote:{title:"A Note About Sora 2",text:"OpenAI Sora 2 represents cutting-edge AI video generation technology. These prompts are designed to help you achieve professional results for interior design videos. Results may vary, and we recommend experimenting with different prompts to find what works best for your specific designs. For Image-to-Video prompts, always start with 'Use the reference image as the first frame' to ensure consistency. Note: Images with faces are rejected by the API."},cta:{readyToCreate:"Ready to Create?",startNewProject:"Start a new project with Video Generator and create stunning interior design videos.",signUpToTry:"Sign up to try these prompts with Video Generator and create stunning interior design videos.",tryVideoGenerator:"Try Video Generator",getStarted:"Get Started",creating:"Creating..."}},A4={tricksTrends:"Tricks & Trends for Sora 2",singleImageInteriors:"12 Prompts: Single Image (Interiors)",singleImageExteriors:"13 Prompts: Single Image (Exteriors)"},E4={"trick-one-shot-one-move":'"One shot, one move, one action"',"trick-keep-composition":"Keep Composition Consistent","trick-timing-beats":"8-Second Timing with Beats","trick-remix":"Remix for Single Change","trick-no-faces":"Note: No Faces","soft-push-in-luxury":"Soft push‑in, luxury calm","pan-3-5-reveal":"Pan 3–5° reveal","rack-focus-material":"Rack focus material hero","golden-hour-drift":"Golden-hour drift","night-cozy-practicals":"Night cozy practicals","rainy-ambience-window":"Rainy ambience through window","ceiling-light-sway":"Ceiling light swing micro-motion","architectural-still-alive":"Architectural still, 'alive'","kitchen-steam-detail":"Kitchen steam detail","texture-pass":"Texture pass (stone/wood/fabric)","minimal-handheld-vlog":"Minimal handheld 'design vlog' (very controlled)","colorway-trend-remix":"Colorway trend remix cue (warm neutral)","drone-push-in-development":"Drone push‑in over development","orbit-10-max-safe":"Orbit 10° max (safe)","blue-hour-lights-alive":"Blue hour lights come alive","pool-water-realism":"Pool water realism","rain-wet-reflections":"Rain-wet reflections","coastal-haze-cinematic":"Coastal haze cinematic","community-life-distant":"Community life (distant, no close faces)","street-life-micro-beats":"Street life micro-action beats","wind-trees-hero":"Wind in trees hero","luxury-marketing-grade":"Luxury marketing grade cue","courtyard-cafe-ambience":"Courtyard café ambience (no signage)","amenity-reveal-gym":"Amenity reveal: gym glass reflections","minimal-hyper-real-still":"Minimal 'hyper-real' still"},I4={"trick-one-shot-one-move":"One clear camera movement + one main change","trick-keep-composition":"Instruction to keep composition/style","trick-timing-beats":"Writing actions as beats","trick-remix":"Prefer Remix instead of regenerating","trick-no-faces":"Images with faces are rejected","soft-push-in-luxury":"Slow centered zoom with subtle life","pan-3-5-reveal":"Slow left-to-right pan 3-5 degrees","rack-focus-material":"Focus shift from foreground to background","golden-hour-drift":"Smooth transition from daylight to golden hour","night-cozy-practicals":"Practical lights with beats","rainy-ambience-window":"Subtle rain through window","ceiling-light-sway":"Micro-motion of pendant light","architectural-still-alive":"Almost still but alive","kitchen-steam-detail":"Subtle steam in kitchen","texture-pass":"Emphasize material textures","minimal-handheld-vlog":"Very subtle camera movement","colorway-trend-remix":"Color palette change","drone-push-in-development":"Slow drone movement","orbit-10-max-safe":"Slow arc around building","blue-hour-lights-alive":"Lights turn on during blue hour","pool-water-realism":"Realism of pool water","rain-wet-reflections":"Reflections after rain","coastal-haze-cinematic":"Light coastal haze","community-life-distant":"Distant community life","street-life-micro-beats":"Street life with beats","wind-trees-hero":"Wind in trees","luxury-marketing-grade":"Premium marketing grading","courtyard-cafe-ambience":"Café ambience in courtyard","amenity-reveal-gym":"Glass reflections","minimal-hyper-real-still":"Almost hyper-realistic still"}
590,D4={title:"Grok Video Prompt Guide",subtitle:"Tricks toolkit + 25 ready prompts (10 safe interior, 8 styling, 7 exterior) for Grok Video interior designers",searchPlaceholder:"Search Grok prompts...",aiNote:{title:"A Note About Grok Video",text:"xAI Grok Video is a fast and simple image-to-video tool. These prompts are designed to help you achieve professional results for interior design videos. Results may vary, and we recommend experimenting with different prompts to find what works best for your specific designs. Grok Video is designed for short, quick clips with the ability to add a short prompt that guides the effect."},cta:{readyToCreate:"Ready to Create?",startNewProject:"Start a new project with Video Generator and create stunning interior design videos.",signUpToTry:"Sign up to try these prompts with Video Generator and create stunning interior design videos.",tryVideoGenerator:"Try Video Generator",getStarted:"Get Started",creating:"Creating..."}},R4={tricksTrends:"Tricks & Trends for Grok Video",interiorSafe:'10 Prompts: Interior "Safe"',interiorStylingStorytelling:'8 Prompts: Interior "Styling/Storytelling"',exteriorNeighborhoodBuilding:"7 Prompts: Exterior - Neighborhood/Building/Courtyard"},L4={"trick-video-editor-style":'Write prompt like "video editor"',"trick-reduce-complexity":"Reduce complexity if model invents","trick-camera-locked":'Most stable: "camera locked" or "gentle zoom only"',"trick-architectural-still-alive":'"Architectural still alive"',"trick-light-mood-shift":'"Light mood shift"',"trick-real-estate-gimbal":'"Real-estate gimbal"',"keep-room-same-gentle-zoom":"Keep room same, gentle zoom","lock-camera-daylight-only":"Lock camera, daylight only","slow-pan-keep-walls-straight":"Slow pan, keep walls straight","gimbal-push-premium":"Gimbal push-in, premium feel","no-camera-warm-lamps":"No camera movement, warm lamps","rack-focus-foreground-sofa":"Rack focus: foreground to sofa","minimal-handheld-micro":"Minimal handheld micro-movement","kitchen-steam-specular":"Kitchen: steam + specular highlights","bathroom-steam-reflections":"Bathroom: steam + mirror reflections","bedroom-morning-light":"Bedroom: morning light + curtain","lived-in-book-curtain":"Lived-in: book page + curtain","lifestyle-coffee-tv":"Lifestyle: coffee steam + TV flicker","cleaning-reveal-dust":"Cleaning reveal: dust motes fade","material-showcase-wood-stone":"Material showcase: wood + stone","golden-hour-glow":"Golden hour glow","night-luxury-practical-lights":"Night luxury: practical lights","calm-breeze-plants-curtains":"Calm breeze: plants + curtains","architectural-hero-still":"Architectural hero: almost still","aerial-gentle-zoom-stable":"Aerial feel: gentle zoom, stable","slow-orbit-building":"Slow orbit around building","blue-hour-path-lights":"Blue hour: path lights glow","after-rain-wet-reflections":"After rain: wet reflections","courtyard-life-distant":"Courtyard life (distant)","pool-area-ripples":"Pool area: ripples + reflections","luxury-promo-grade":"Luxury promo grade"},O4={"trick-video-editor-style":"One camera movement + small life","trick-reduce-complexity":'Less details, more "keep everything the same"',"trick-camera-locked":"Large movements cause warping","trick-architectural-still-alive":"Almost still but alive - premium and stable","trick-light-mood-shift":"Day→golden/evening - light change only","trick-real-estate-gimbal":"Gentle push-in + stable exposure","keep-room-same-gentle-zoom":"Slow zoom with subtle movements","lock-camera-daylight-only":"Only natural daylight","slow-pan-keep-walls-straight":"Small pan with straight lines","gimbal-push-premium":"Premium marketing feel","no-camera-warm-lamps":"Turn on warm lamps","rack-focus-foreground-sofa":"Focus shift from foreground to background","minimal-handheld-micro":"Very subtle camera movement","kitchen-steam-specular":"Steam and highlights in kitchen","bathroom-steam-reflections":"Steam and reflections in bathroom","bedroom-morning-light":"Morning light and curtain in bedroom","lived-in-book-curtain":"Lived-in feeling","lifestyle-coffee-tv":"Daily life","cleaning-reveal-dust":"Cleaning reveal","material-showcase-wood-stone":"Emphasize materials","golden-hour-glow":"Golden hour","night-luxury-practical-lights":"Luxury night","calm-breeze-plants-curtains":"Gentle breeze","architectural-hero-still":"Architectural hero","aerial-gentle-zoom-stable":"Aerial feel","slow-orbit-building":"Slow arc around building","blue-hour-path-lights":"Blue hour","after-rain-wet-reflections":"After rain","courtyard-life-distant":"Courtyard life","pool-area-ripples":"Pool area","luxury-promo-grade":"Premium marketing grading"},M4={title:QR,subtitle:JR,searchPlaceholder:XR,prompts:ZR,fillIn:e4,copyPrompt:t4,copy:a4,copied:i4,quickReference:o4,aspectRatios:r4,cameraSettings:n4,goldenRule:s4,aiNote:l4,cta:c4,categories:d4,errors:u4,promptTitles:m4,promptDescriptions:p4,userIn
590putDescriptions:h4,aspectRatioDescriptions:g4,cameraSettingDescriptions:f4,videoGuide:b4,videoCategories:v4,videoPromptTitles:y4,videoPromptDescriptions:x4,gptImageGuide:w4,gptImageCategories:k4,gptImagePromptTitles:_4,gptImagePromptDescriptions:S4,veoGuide:C4,veoCategories:T4,veoPromptTitles:j4,veoPromptDescriptions:N4,soraGuide:P4,soraCategories:A4,soraPromptTitles:E4,soraPromptDescriptions:I4,grokGuide:D4,grokCategories:R4,grokPromptTitles:L4,grokPromptDescriptions:O4},z4="Billing & Tokens",B4="Manage your subscription and purchase tokens",F4={title:"Active {{plan}} Subscription",cancellingTitle:"{{plan}} Subscription — Cancelling",memberSince:"Member since:",nextPayment:"Next payment:",accessUntil:"Access until:",lastPayment:"Last payment:",noBillingNotice:"You won't be charged again.",manage:"Manage subscription",cancel:"Cancel subscription",resubscribe:"Resubscribe",cancelConfirmTitle:"Cancel subscription?",cancelConfirmDescription:"Your subscription will end at the end of the current billing period. You will keep access until then.",cancelConfirmNo:"Don't cancel",cancelConfirmYes:"Yes, cancel subscription",pausedT
590itle:"{{plan}} Subscription — Frozen",pause:"Freeze subscription",resume:"Resume subscription",resumeFirstNotice:"Resume your subscription first, then you can switch plans.",frozenNotice:"Your subscription is frozen — you won't be charged. Any tokens you have left are still yours to use.",frozenCardSaved:"Your payment details are saved — resume in one click.",pauseConfirmTitle:"Freeze your subscription?",pauseConfirmDescription:"Billing stops and you pay nothing, but your subscription stays intact so you can pick up where you left off.",pauseConfirmBullet1:"You keep full access until the end of the period you already paid for ({{date}})",pauseConfirmBullet1NoDate:"You keep full access until the end of the period you already paid for",pauseConfirmBullet2:"Your remaining tokens are kept and stay usable while frozen",pauseConfirmBullet3:"After that your account behaves like a free account (BoardStyler limited, no exports)",pauseConfirmBullet4:"Your card stays on file — resume in one click, no re-entering details",pauseConfirmNo:"No, keep it active",pauseConfirmYes:"Yes, freeze my subscription",pauseInsteadHint:"Not ready to leave for good? You can just freeze your subscription and come back whenever you want.",pauseInstead:"Freeze instead",resumeConfirmTitle:"Resume your subscription?",resumeConfirmDescription:"Your saved card will be charged now and your monthly tokens are added right away.",resumeConfirmNo:"Not yet",resumeConfirmYes:"Yes, resume now",pausedToastTitle:"Subscription frozen",pausedToastDescription:"You won't be charged again. Resume anytime from the billing page.",resumedToastTitle:"Subscription resumed! 🎉",resumedToastDescription:"Your monthly tokens will land in your balance in a moment.",pauseErrors:{NOT_SUBSCRIBED:"No active subscription to freeze.",CANCEL_PENDING:"This subscription is already cancelling. Undo the cancellation first, then you can freeze it.",NOT_PAUSED:"This subscription isn't frozen.",NO_PAYMENT_METHOD:"No saved payment method found. Contact support and we'll help you resume.",UNAVAILABLE:"The freeze service is temporarily unavailable. Nothing was changed on your subscription and you were not charged. Try again in a few minutes, or contact support and we'll handle it for you.",GENERIC:"Something went wrong. Try again or contact support."}},$4={info:"You can upgrade or downgrade your plan anytime. Your billing will be adjusted accordingly, and unused tokens will roll over."},V4={title:"Monthly Token Plans",badges:{allFeatures:"All Features Unlimited",tokensNeverExpire:"Tokens Never Expire",buyMore:"Buy More = Better Price"},description:"Like an amusement park! All plans give you access to every feature. The only difference is the token price - buy more tokens monthly for better value."},U4={title:"One-Time Token Packages",description:"Ran out of tokens mid-month? Buy tokens once and use them forever. Same features, same access, just pay as you go.",subscribersOnly:"*One-time purchase for subscribers only!"},q4={currentPlan:"Current Plan",mostPopular:"Most Popular",bestValue:"Best Value",subscribeNow:"Subscribe Now",switchToPlan:"Switch to This Plan",processing:"Processing...",perMonth:"/month",tokensPerMonth:"Tokens/mo",perToken:"per token",whatYouCanDo:"What can you do with {{tokens}} tokens?",features:{allFeatures:"Access to ALL Features",rollover:"Tokens Rollover Monthly",cancelAnytime:"Cancel Anytime"},usage:{imageEditing:"Image generation & editing",complexEditing:"Complex editing & remix images",videosWithSound:"Videos with sound",interiorPresentations:"Interior presentations",models3d:"3D models",upscale:"Upscale: Free, unlimited",removeBg:"Remove background: Free, unlimited"}},G4={title:"Flexible Token System",description:"All tokens roll over and never expire. Cancel your subscription anytime and keep all unused tokens. Upgrade or downgrade plans without losing anything. No hidden fees, no surprises."},W4={title:"Have a coupon?",placeholder:"Enter coupon code",apply:"Apply",applying:"Checking...",applied:"Coupon Applied!",discount:"{{discount}}% discount",save:"Save ${{amount}} first month",firstMonth:"first month",thenRegular:"then ${{price}}
590/mo",invalid:"Invalid or expired coupon code",newPrice:"New price:"},H4="Secure payments powered by Stripe",K4={title:"Already Subscribed",description:"You already have an active {{plan}} subscription.{{nextPayment}}"},Y4="You currently have a {{current}} plan. Do you want to switch to {{new}}? This will replace your current subscription.",Q4={upgradeTitle:"Upgrade to {{plan}}",upgradeDescription:"You'll be charged ${{price}} now and the plan updates immediately.",upgradeBullet1:"Immediate charge of ${{price}} (full price, coupons don't apply)",upgradeBullet2:"{{tokens}} tokens added right away on top of your current balance",upgradeBullet3:"Next charge in exactly one month — the old subscription is closed, no double billing",upgradeConfirm:"Yes, upgrade to {{plan}}",downgradeTitle:"Switch to {{plan}} at period end",downgradeDescription:"Your plan will change to {{plan}} at the end of the current period ({{date}}). Until then everything stays as is.",downgradeBullet1:"No charge now — you keep your current plan until {{date}}",downgradeBullet2:"From {{date}}: ${{price}}/month with {{tokens}} tokens per renewal",downgradeBullet3:"You can cancel the downgrade anytime before then",downgradeConfirm:"Yes, switch to {{plan}} at period end",upgradeSuccessTitle:"Upgraded! 🎉",upgradeSuccessDescription:"Your plan is now {{plan}}. {{tokens}} tokens will be added to your balance momentarily.",downgradeSuccessTitle:"Downgrade scheduled",downgradeSuccessDescription:"Your plan will switch to {{plan}} on {{date}}.",cancelDowngradeSuccess:"The scheduled downgrade was cancelled — your subscription continues as is.",pendingDowngrade:"Scheduled switch to {{plan}} on {{date}}",cancelDowngrade:"Cancel downgrade",errorTitle:"Plan change failed",errors:{NO_PAYMENT_METHOD:"No saved payment method was found. Contact support and we'll help you upgrade.",PAYMENT_FAILED:"The charge failed. Check your payment method and try again.",CARD_AUTH_REQUIRED:"Your card requires additional verification. Contact support and we'll complete the upgrade together.",MULTIPLE_SUBSCRIPTIONS:"Multiple active subscriptions were found on your account. Contact support and we'll fix it right away.",NOT_SUBSCRIBED:"No active subscription was found. You can subscribe from the billing page.",PAYMENT_ISSUE:"There's a payment issue on your current subscription. Please resolve it before changing plans.",CANCEL_PENDING:"Your subscription is already set to cancel at period end. Undo the cancellation first to downgrade.",DOWNGRADE_ALREADY_SCHEDULED:"A downgrade is already scheduled for this subscription.",ALREADY_ON_PLAN:"You're already on this plan.",GENERIC:"Something went wrong. Try again or contact support."}},J4={verifying:"Verifying Payment...",pleaseWait:"Please wait while we confirm your payment",success:"Payment Successful!",tokensAdded:"Your tokens have been added to your account",plan:"Plan",tokensAddedLabel:"Tokens Added",subscriptionActive:"Your subscription is now active! You'll receive {{tokens}} tokens every month.",oneTimeComplete:"Your one-time token purchase is complete. Tokens never expire!",goToDashboard:"Go to Dashboard",viewBilling:"View Billing"},X4={invalidPayment:"Invalid Payment",noSession:"No payment session found. Redirecting to settings.",successTitle:"Payment Successful! 🎉",successDescription:"{{tokens}} tokens have been added to your account.",verificationError:"Verification Error",verificationFailed:"Failed to verify payment. Please contact support if tokens were not added."},Z4={title:z4,subtitle:B4,activeSubscription:F4,switchPlans:$4,monthlyPlans:V4,oneTime:U4,plan:q4,package:{tokens:"Tokens",buyOnce:"Buy Once",features:{oneTime:"One-time payment",neverExpire:"Tokens never expire",noSubscription:"No subscription needed"}},flexible:G4,coupon:W4,secure:H4,alreadySubscribed:K4,confirmSwitch:Y4,planChange:Q4,paymentSuccess:J4,toasts:X4},eL={heading:"Upload an image",body:"Click the plus button to upload an image or drag an image to the chat window"},tL={heading:"Describe your request",body:"Type in natural, simple language the changes you want to make, or choose a ready prompt from the shortcuts below"},aL={heading:"Send to create",body:"Click here and the magic begins! The AI will create your design in seconds"},iL="Step {{current}} of {{total}}",oL="Skip",rL="Next",nL="Finish",sL={step1:eL,step2:tL,step3:aL,progress:iL,skip:oL,next:rL,finish:nL},lL="What space shall we design together?",cL="What space shall we design ",dL="together?",uL="Choose your next step to create stunning interior designs",mL={badge:"New!",text:"Try the automatic workflows"},pL={sectionTitle:"Prompt shortcuts",tabs:{images:"Images",video:"Video",video2images:"Video 2 images"},video2images:{title:"Video 2 images",prompt:"Create a smooth transition video from these two images. Start from the first image and move to the second over 5–10 
590seconds with natural motion."},i2v1:{title:"Room tour 10 sec",prompt:"A 10-second video. The camera moves slowly forward into the room, pans left to right, reveals all design details, and stops at the main window."},i2v2:{title:"Natural light reveal",prompt:"Short video. The room light shifts gradually from dark to warm morning light through the windows, casting soft shadows on furniture, settling in full sun."},i2v3:{title:"Zoom on design detail",prompt:"Short video. The camera slowly moves from a wide room shot toward one central detail—texture, material or decorative element—and stops in close-up."},i2v4:{title:"Living motion with sound",prompt:"Video with sound. Curtains sway gently in a light breeze, sunlight flickers on surfaces, plant leaves move slightly, everything settles back to calm."},i2v5:{title:"Panoramic sweep 10 sec",prompt:"Long 10-second video. The camera slowly rotates 180° around the room center, revealing every wall and corner, and stops at the start point."},i2v6:{title:"Day-to-evening 10 sec",prompt:"10-second video. Room lighting shifts gradually from bright noon to warm evening with lamps and candles, settling on soft light."},i2v7:{title:"Top-down view",prompt:"Short video. The camera slowly drops from a top angle straight above the room, descends to eye level, and stops on a straight-ahead view."},i2v8:{title:"Design line follow 10 sec",prompt:"Long 10-second video. The camera follows along the kitchen/library/joinery line from one end to the other, revealing every detail and material, and stops at the end."},i2v9:{title:"Depth reveal 10 sec",prompt:"10-second video. The camera moves slowly backward from a close detail, revealing the full room layer by layer, and stops on a full wide shot."},i2v10:{title:"Living atmosphere with sound",prompt:"Video with sound. Steam rises from a coffee cup on the counter, light flickers through the window, a tree shadow moves softly on the wall, everything settles into calm."},twoImg1:{title:"Before/after renovation with sound",prompt:"Video with sound. The camera stays fixed at the same angle. The old room gradually dismantles and rebuilds into the new design, until it settles on the final result."},twoImg2:{title:"Style transition with sound",prompt:"Video with sound. From the exact same viewpoint, the room morphs gradually from one style to the other—furniture, colors and materials change in a smooth flow."},twoImg3:{title:"Empty room ← furnished with sound",prompt:"Video with sound. Camera fixed. Furniture appears one by one in the empty space—sofa, table, lighting, decor—until the room is full and ready."},twoImg4:{title:"Day ← night with sound",prompt:"Video with sound. Same camera angle. Natural light fades gradually, interior lights turn on, the mood shifts from bright to intimate and warm."},twoImg5:{title:"Wall color change, no sound",prompt:"10-second video without sound. Camera fixed. The old wall color melts gradually and is replaced by the new color, flowing top to bottom, and settles."},twoImg6:{title:"Seasonal transition with sound",prompt:"Video with sound. From the same point, the decor shifts—from bright summer styling to warm winter with blankets, cushions and soft light—and settles on the final look."},twoImg7:{title:"Kitchen upgrade 5 sec",prompt:"Fast 5-second video. Camera fixed. Worktops, cabinets and flooring morph gradually from the current state to the upgraded design, until it stops on the result."},twoImg8:{title:"Adding elements, no sound",prompt:"10-second video without sound. From a fixed angle, new elements enter the space gradually—wall art, plants, rug, lighting—until the room is complete."},twoImg9:{title:"Material transition, no sound",prompt:"10-second video without sound. Camera fixed. Floor/wall/surface morphs from one material to another—tile to wood, concrete to stone—in a smooth flow and stops."},twoImg10:{title:"Opening space with sound",prompt:"Video with sound. From the same point, a wall gradually opens and reveals another space, the room expands and merges with the new area, and settles on the open result."},mixMaterials:{title:"Mix materials",prompt:"Mix these 7 materials in the best way across this space. Create a cohesive, harmonious design that uses each material strategically."},cinematicVideo:{title:"Cinematic video",prompt:"Create a quality 10-second video with sound from this single image. Make it cinematic with smooth camera moves, ambient music, and show all design details."},viralPost:{title:"Viral post",prompt:"Turn this image into a viral social post. Make it striking and shareable."},styleMatch:{title:"Style match",prompt:"From this one reference image, create a StyleMatch presentation—extract existing furniture and design items, analyze the style, extract the color palette, and show them on one professional moodboard."},floorPlan3D:{title:"Floor plan 3D",prompt:"I want to turn these floor plans into a slight 20% angle top-down 3D view, with clear walls, doors and interior, furniture and floor in a realistic way as if a top-down camera shot the real space."},sketchReality:{title:"Sketch to reality",prompt:"Turn the following sketch into an interior render, add up-to-date 2026 materials. The output should be super realistic"},designDNA:{title:"Design DNA",prompt:"For attached image 1, create a DesignDNA presentation—extract existing furniture and design items, analyze the design style, extract the color palette, and display them on one professional moodboard."},kitchenBoard:{title:"Kitchen x6",prompt:"For attached image 1, create a KitchenBoard with 6 different material and color palette variations of this kitchen, inspired by Milan 2024–2025 trends. Show all variations on one board with the original."},"3dModel":{title:"3D model",prompt:"Convert this 2D furniture image into a 3D model I can use in SketchUp for further visualization and client presentations."},customCatalog:{title:"Custom catalog",prompt:"Based on this styled image as the hero, create a custom 16:9 presentation catalog with a clean white background—extract and isolate key furniture items, label them, and present in Milan 2025 
590style for a client-ready PDF."}},hL={creator:{name:"Nano Banana 2",description:"nano banana 2 - Google's excellent image model. Includes Google image search"},erase:{name:"Remove Watermarks",description:"Remove watermarks from images"},combine:{name:"Combine images",description:"Combine up to 10 reference images into one"},promptHelper:{name:"Boardy",description:"Smart agent that routes your request to the best AI tool"},video3d:{name:"Kling v2.1",description:`One image to video
591
5925 sec`},wanVideo:{name:"WAN 2.5",description:"5 sec video with sound, 480p"},ltxVideo10s:{name:"LTX-Fast",description:"10 sec video with sound, 1080p"},seedanceVideo:{name:"Seedance 2",description:"2 images to video"},generate3d:{name:"3D agent",description:"Create any 3D model in .glb. Furniture and design products"},styleSwitch:{name:"Style switch",description:"Switch interior styles with realistic room redesign"},ultraReal:{name:"Ultra real",description:"Create ultra realistic interior designs with FLUX 1.1 Pro"},priceScan:{name:"Price scan agent",description:"Create professional quote presentations from room images"},quickEdit:{name:"Precise Editor",description:"Region-guided editing with selections, references and variants"},imageGenerator:{name:"Image generator",description:"Create images from text prompts with fast FLUX model"},multiAngle:{name:"Multi-angle agent",description:"Camera-aware edits—rotate, tilt, zoom while keeping subject consistent"},nanoBananaPro:{name:"Nano Banana Pro",description:"Google advanced image editing model"},flux2Pro:{name:"Flux 2.0 Pro",description:"Quality image creation and editing with up to 8 reference images"},gpt5Image:{name:"GPT image edit",description:"Advanced image editing with gpt-image-1"},klingO1:{name:"Kling O1",description:"Precise image edits with strong reference control (up to 10 images)"},klingO1Video:{name:"Kling O1 2 images",description:`Smooth video transition
5935 sec, 1080p`},klingMotionControl:{name:"Motion Control",description:"Transfer motion from video to image (8s, 1080p)"},gptImage15:{name:"GPT Image 1.5",description:"High-quality editing with fine detail preservation"},gptImage2:{name:"GPT Image 2.0",description:"High-quality editing with fine detail preservation (v2)"},grokVideo:{name:"Grok Video",description:"AI video from image (6–30 sec)"},veoVideo:{name:"Veo 3.1",description:"High-quality AI video with sound"},grokImageEditor:{name:"Grok",description:"AI image editing with Grok—always returns 2 unique variations"},seedream45Edit:{name:"Seedream 4.5",description:"High-quality AI image editing with Seedream 4.5"},seedream5Lite:{name:"Seedream 5.0",description:"Premium AI image editing with Seedream 5.0 Lite"},runwayVideo:{name:"Runway Video",description:"AI video from an image (5 seconds, 720p, no sound)"},princeEditor:{name:"Prince Editor",description:"Fast image editing with up to 5 reference images"}},gL={image:{label:"Image",helper:"Detail control + editing"},video:{label:"Video",helper:"Motion + sound"},"3d":{label:"3D",helper:"Models + visualization"}},fL={inputs:"Inputs",tokens:"tokens",promptGuide:"Prompt guide",comingSoon:"New {{category}} coming soon.",clearAll:"Clear all reference images"},bL={myBoardspaces:"My Boardspaces",seeAll:"See all",showLess:"Show less"},vL={header:{projectsMenuAria:"Projects menu",notificationsAria:"Notifications"},mobileNav:{navAria:"Dashboard quick navigation",canvas:"Canvas",canvasAria:"Go to dashboard & canvas",academy:"Academy",academyAria:"Go to academy",marketplace:"Marketplace",marketplaceAria:"Go to creators marketplace",settings:"Settings",settingsAria:"Open settings"},heroHeadline:{updates:"{{count}} new updates",line1:"What space",line2Prefix:"will we design",line2Highlight:"together?",stats:{rating:"User rating",avgTime:"Average time",renders:"Total renders"}},heroCards:{eyebrow:"Choose how to start",meta:"Our four services",newBadge:"NEW",cards:{createAlone:{tag:"Canvas",title:"Create on your own",subtitle:"Best for advanced image editing with top models like Nano Banana, GPT Image 2.0, Flux and more.",cta:"Open canvas"},boardstyler:{tag:"Boardstyler",title:"Boardstyler",subtitle:"Turn a 2D floor plan into 3D. Drag in real flooring, wall cladding and furniture, then render from any angle.",cta:"Upload floor plan"},studio:{tag:"Video Studio",title:"Video Studio 2.0",subtitle:"All top video engines in one smart workspace: Kling 3.0, Seedance 2, Veo 3.1, Grok Video and more.",cta:"Start video"},videoEditor:{tag:"Video editor",title:"Video editor",subtitle:"Trim and combine clips, add music, titles and transitions — all on one timeline.",cta:"Open the editor"},marketplace:{tag:"Marketplace",title:"Hire a pro",subtitle:"Top creators approved by Boardspace, ready to start working with you right away.",cta:"Go to marketplace"}},desktopOnly:{closeAria:"Close",videoEditor:{title:"Video editing on a larger screen",body:"For comfortable timeline editing, open Boardspace in a browser on a computer or a wide-screen tablet.",cta:"Got it"},boardstyler:{title:"Boardstyler on tablet or desktop",body:"Boardstyler is available on a tablet or computer. Open Boardspace in a desktop browser to upload a plan, edit in 3D, and render.",cta:"Got it"},studio:{title:"Video Studio 2.0 on tablet or desktop",body:"The video studio is available on a tablet or computer. Open Boardspace in a wider browser window to use Kling, Seedance, Veo, Grok, and the rest of the engines.",cta:"Got it"}},boardstylerGate:{eyebrow:"Included in the monthly plan",title:"BoardStyler is open to subscribers",description:"BoardStyler is included for monthly subscribers at no extra cost. Subscribers can enter the editor, build spaces, create views, work in 3D, and produce in-editor video without an additional charge.",benefits:["Full access to BoardStyler and your projects","Views, 3D work, and in-editor video are included in the plan","The workspace stays open while your subscription is active"],cta:"Go to payment",secondaryCta:"Back to dashboard"}},webinar:{featuresHeading:"What we'll cover live",featuresLead:"The four flagship experiences in BoardSpace 2.0 — we'll walk through them in the launch webinar and take your questions."},workflows:{title:"Popular workflows",prevAria:"Previous",nextAria:"Next",sliderAria:"Browse workflows",tokensLabel:"tokens",
593startCta:"Start"},projects:{title:"My projects",prevAria:"Previous",nextAria:"Next",loading:"Loading...",untitled:"Untitled",noPreview:"No preview",shared:"Shared",imagesCount:"{{count}} images",updatedAt:"Updated {{relative}}",newProject:"New project",startBlank:"Start a blank board",loginRequired:"Sign in to create a new board",createFailed:"Failed to create a new board",boardPrefix:"New board"},academy:{title:"From our academy",meta:"First lessons",allVideos:"All videos",lessonLabel:"Lesson {{id}}",generalLabel:"Overview",modalTitle:"Academy video",closeAria:"Close",videoTitles:{1:"How to get started",2:"Getting to know the platform",3:"Creating video in Studio 2.0",4:"Precise editing",5:"Material combinations",6:"Workflows",7:"Session with Tal Benish",8:"Part 2 continued — Tal Benish",9:"Webinar part 3 — Tal Benish",10:"Q&A — webinar recap",11:"Webinar — open Q&A",12:"3D plan with Tal Benish",13:"From sketch to decision — AI in Hebrew",intro:"What is Boardspace?"}},community:{title:"Real image and video renders created by Boardspace's professional content creators",marketplaceCta:"Visit the marketplace",media:{video:"VIDEO",image:"IMAGE"},tags:{new:"NEW",hot:"HOT",trending:"TRENDING",live:"LIVE"}}},yL={greeting:lL,greetingPrefix:cL,greetingHighlight:dL,subtitle:uL,workflowsBanner:mL,promptShortcuts:pL,agents:hL,categories:gL,common:fL,galleries:bL,dashboard2:vL},xL="Successfully unsubscribed",wL="You have been successfully removed from Boardspace's mailing list. You will no longer receive marketing emails from us.",kL="Back to site",_L={title:xL,message:wL,backToSite:kL},SL="Privacy Policy – Boardspace.ai",CL="Last updated: March 16, 2026",TL={meta:{operatedBy:"Operated by: Aquala Holdings Ltd",registeredAddress:"Registered address: Anexartasias 16, Limassol, Cyprus",privacyEmailLabel:"Privacy contact email:",supportEmailLabel:"Support email:"},emails:{privacy:"[email protected]",support:"[email protected]"},sections:[{h:"1. General",paragraphs:['Welcome to Boardspace.ai ("Boardspace", "we", "us", "our"). This Privacy Policy (the "Privacy Policy" or the "Policy") explains how we collect, use, retain, share, and protect personal information relating to users, visitors, buyers, creators, creator applicants, and any other person using the website, applications, services, AI tools, community, galleries, and any other Boardspace.ai feature (collectively, the "Services").',"Please read this Policy carefully. If you do not agree to this Policy, in whole or in part, please do not use the Services."]},{h:"2. Who We Are",paragraphs:['The Services are offered and operated by Aquala Holdings Ltd, a company registered in Cyprus. For relevant privacy laws, Aquala Holdings Ltd is generally the "data controller" in relation to the personal information described in this Policy, unless stated otherwise.']},{h:"3. Scope of This Policy",paragraphs:["This Policy applies to personal information we collect when:"],list:["you visit our website;","you open an account;","you use AI tools, canvas, gallery, or other creation features;","you upload files, images, videos, text, briefs, sketches, or other materials;","you purchase services or sell services through the platform;","you contact our support team;","you subscribe to mailing lists, demos, community updates, or marketing offers;","you participate in community content, work walls, galleries, or other public displays."],afterList:["This Policy does not apply to third-party websites, services, or tools that are not under our control, even if links to them appear through the Services."]},{h:"4. Types of Information We Collect",subs:[{h3:"4.1 Information You Provide Directly",paragraphs:["We may collect information you provide to us, including:"],list:["full name, display name, business name, studio name, or username;","email address, phone number, and other contact information;","login and account details;","profile details, profile photo, professional bio, expertise areas, languages, portfolio, service area, and service details;","billing and payment details, noting that some payment details are processed by external payment providers;","content you upload or create, including images, videos, sketches, plans, references, moodboards, files, texts, prompt requests, notes, comments, feedback, and messages;","canvas data, board organization, elements, projects, creation history, versions, and outputs;","information you provide when contacting support, making legal inquiries, filing reports, or exercising privacy rights;","information provided during creator onboarding, including professional experience, service areas, external links, supporting documents, and payout details."]},{h3:"4.2 Information We Collect Automatically",paragraphs:["When you use the Services, we may automatically collect:"],list:["IP address;","browser type and version, operating system, device language, and regional settings;","device identifiers, session identifiers, cookie identifiers, and similar online identifiers;","information about logins, pages viewed, clicks, usage time, features used, and errors;","information about interactions with AI tools, including usage volume, request types, frequency, tokens, execution times, and output status;","technical and operational information for security, fraud prevention, performance monitoring, and troubleshooting."]},{h3:"4.3 Information from Third-Party Sources",paragraphs:["We may receive information from third parties, such as:"],list:["login, authentication, or social network providers when you choose to connect through them;","payment providers, to confirm payment status, identify transactions, prevent fraud, and document charges;","AI model providers, storage providers, analytics providers, security providers, support providers, or infrastru
593cture providers;","external integrations you choose to use;","public or professional sources, for business applications or creator applications."]}]},{h:"5. Sensitive Information and Content You Upload",paragraphs:["Some files, images, videos, briefs, or messages you upload may include sensitive information, business information, planning information, property details, commercial information, or information relating to third parties. Please upload only information you are authorized to share, use, and process.","We do not proactively request special categories of sensitive personal information; however, if you choose to include such information in uploaded content, you confirm that you have an appropriate legal basis to do so."]},{h:"6. Purposes of Processing",paragraphs:["We may use your personal information for the following purposes:"],list:["to provide, operate, maintain, and improve the Services;","to create and manage user accounts;","to enable content creation, canvas use, project management, AI tool operation, history retention, and output display;","to process payments, charges, refunds, credits, and fees;","to enable marketplace activity, including service offerings, service purchases, deliverable handoff, operational communication, and workflow support;","to enable display of works, galleries, community walls, portfolios, or showcases, subject to your account settings, permissions, and relevant contractual documents;","to provide customer service, solve issues, respond to inquiries, and support users;","to monitor abnormal activity, detect fraud, enforce terms of use, and protect the platform, users, and third parties;","to analyze usage, improve performance, measure engagement, and conduct research and development;","to send operational, service, security, legal, and marketing notices, subject to applicable law and your preferences;","to comply with legal, regulatory, accounting, tax, enforcement, and legal process obligations;","to train, calibrate, test, evaluate, and improve AI systems and automated processes, subject to your choices, relevant agreements, and applicable law."]},{h:"7. Legal Bases for Processing",paragraphs:["Where required by applicable law, we process personal information on one or more of the following bases:"],list:["performance of a contract or steps prior to entering into a contract;","our legitimate interest in operating, securing, improving, and developing the Services;","compliance with legal obligations;","your consent, where consent is required by law;","protection of vital interests;","another legal basis permitted under applicable law."],afterList:["Where processing is based on consent, you may withdraw consent at any time, provided that withdrawal does not affect processing lawfully carried out before withdrawal."]},{h:"8. AI, Prompts, and Uploaded or Generated Content",paragraphs:["When you use Boardspace AI tools, we may process prompts, input files, images, videos, outputs, and related content for:"],list:["generating outputs;","quality checks, troubleshooting, and security monitoring;","improving user experience and performance;","research, evaluation, and improvement of AI processes, where permitted under applicable law and your account settings."],afterList:["Where available in the product, we will try to provide control mechanisms or opt-out options for certain uses of content for model or system improvement. However, some technical processing may always be necessary to operate the service, secure it, prevent abuse, comply with legal obligations, and maintain system integrity."]},{h:"9. Gallery, Community, Work Walls, and Public Content",paragraphs:["If you choose to publish work, projects, images, videos, comments, profiles, portfolios, or other content in public areas of the platform, that information may become accessible to other users or to the public. Publicly posted content may include, depending on context:"],list:["display name or business name;","profile details;","creative outputs;","service descriptions;","comments, likes, interactions, and community activity."],afterList:["Please carefully consider what information you choose to publish. When you publish content publicly, others may be able to view, share, or quote it, subject to legal limitations and our terms of use."]},{h:"10. With Whom We Share Information",paragraphs:["We may share personal information with:"],subs:[{h3:"10.1 Service Providers",paragraphs:["Storage providers, cloud infrastru
593cture providers, analytics providers, support providers, security providers, CRM providers, email and messaging providers, monitoring providers, payment providers, AI providers, media storage providers, and other providers that help us operate the Services."]},{h3:"10.2 Other Users Based on Service Nature",paragraphs:["Where a service requires interaction between a buyer, creator, team member, or project collaborator, we may share information reasonably required to perform the service, such as display name, operational communication, brief, deliverables, work status, or delivery details."]},{h3:"10.3 Gallery and Community",paragraphs:["When you choose to publish public content, information may be displayed to other users or the public."]},{h3:"10.4 Advisors and Professional Parties",paragraphs:["Accountants, consultants, lawyers, auditors, and security advisors, subject to appropriate confidentiality obligations."]},{h3:"10.5 Regulators, Enforcement Authorities, or Courts",paragraphs:["Where required by law, court order, regulatory request, legal process, or to protect rights, safety, property, or legitimate interests."]},{h3:"10.6 Corporate Transactions",paragraphs:["In case of merger, acquisition, asset sale, investment, reorganization, or ownership change, personal information may be transferred as part of the transaction, subject to reasonable safeguards."]},{h3:"10.7 Your Consent or Instruction",paragraphs:["Where you explicitly ask us to share information with a specific third party."]}],afterList:['We do not sell personal information in the commonly understood sense of "selling data" for monetary consideration, unless explicitly stated otherwise.']},{h:"11. AI Providers, Infrastructure, and Payments",paragraphs:["The Services may rely on AI providers, storage providers, payment providers, messaging providers, analytics providers, community providers, and external integrations. These providers may process personal information on our behalf or according to the applicable legal relationship.","We are not responsible for independent policies or practices of third parties that do not act on our behalf as processors; therefore, we recommend reviewing the privacy policies of relevant external services as well."]},{h:"12. Cookies and Similar Technologies",paragraphs:["We may use cookies, pixels, local storage, SDKs, tags, and similar technologies for:"],list:["operating the website and Services;","retaining sessions and preferences;","security and fraud detection;","measurement, analytics, and performance;","personalization;","marketing, remarketing, or campaigns, where permitted and subject to required consents."],afterList:["Where required by law, we will request your consent for non-essential cookies. You may also manage some preferences through browser settings or consent tools we provide."]},{h:"13. Data Retention",paragraphs:["We retain personal information for as long as reasonably required for the purposes for which it was collected, including:"],list:["providing and operating Services;","account management and activity history;","meeting contractual obligations;","resolving disputes;","enforcing terms and policies;","complying with legal, regulatory, tax, and accounting requirements;","maintaining security, system logs, and backups."],afterList:["When information is no longer required, we will delete it, anonymize it, or keep it in a restricted form where legally required."]},{h:"14. Information Security",paragraphs:["We implement reasonable technical, organizational, and managerial measures designed to protect personal information against unauthorized access, loss, alteration, misuse, disclosure, or destruction. These measures may include access controls, encryption, permission separation, monitoring, backups, vendor management, incident response processes, and employee training.","However, no security method is perfect, and we cannot guarantee absolute security."]},{h:"15. International Transfers",paragraphs:["Your personal information may be transferred, stored, or processed outside your country of residence, including in Cyprus, the European Union, the United States, and other countries where we, our affiliates, or our providers operate. Where required by law, we will implement appropriate safeguards for international transfers, such as contractual mechanisms, protective commitments, or other legal bases."]},{h:"16. Your Rights",paragraphs:["Subject to applicable law, you may have the following rights:"],list:["to receive confirmation whether we process personal information about you;","to request access to personal information;","to request correction of inaccurate or incomplete information;
593","to request deletion of personal information;","to request restriction of processing;","to object to certain processing;","to receive a portable copy of data where applicable;","to withdraw consent;","to request that data not be used for direct marketing;","to lodge a complaint with a competent data protection authority."],afterList:["To exercise your rights, you may contact us using the contact details in this Policy. We may request identity verification information before processing your request."]},{h:"17. Privacy in Israel",paragraphs:["If you are located in Israel, you may have additional rights under the Israeli Protection of Privacy Law, 5741-1981, related regulations, and guidance of the Israeli Privacy Protection Authority, as updated from time to time. We will seek to handle requests lawfully and within a reasonable time, subject to identity verification, request basis review, and relevant legal exceptions."]},{h:"18. Children's Privacy",paragraphs:["The Services are not intended for children under 13, and we do not knowingly collect personal information from children under that age. If we learn that we collected personal information from a child under 13 without required legal authorization, we will take reasonable steps to delete it promptly.","If you believe a child has provided us personal information in violation of this Policy, please contact us."]},{h:"19. Third-Party Websites and Services",paragraphs:["The Services may include links, embeds, integrations, or referrals to external websites and services.","We do not control the privacy policies or practices of such third parties and are not responsible for them.","We recommend reviewing the relevant policy of each external service before using it."]},{h:"20. Changes to this Privacy Policy",paragraphs:["We may update this Policy from time to time to reflect legal, operational, business, or technological changes.","When we make material changes, we will take reasonable measures to notify you, for example through a website notice, in-account notice, or email.","The date at the top of the Policy indicates when it was last updated. Continued use of the Services after changes take effect is subject to applicable law and required consent procedures."]},{h:"21. Contact",paragraphs:["For questions, requests, or complaints regarding this Privacy Policy or how we process personal information, you may contact us:"],contactBlock:{org:"Boardspace.ai / Aquala Holdings Ltd",address:"Anexartasias 16, Limassol, Cyprus",privacyEmailLabel:"Privacy email:",supportEmailLabel:"Support email:",phoneNote:"[Phone / WhatsApp — listed on the support page]",closing:"We aim to respond within a reasonable time, and in some cases within timelines required by law."}}],footer:{acknowledgment:"If you do not agree to this Policy, do not use the Services. Continued use is subject to applicable law and policy updates.",lastUpdated:"Last updated: March 16, 2026"}},gg={title:SL,lastUpdated:CL,document:TL},jL="Terms of Use – Boardspace.ai",NL="Last updated: March 26, 2026",PL='By accessing the services, creating an account, clicking "I agree", or otherwise using the services, you confirm that you have read, understood, and agreed to be bound by these terms and our <link>Privacy Policy</link>.',AL={meta:{operatedByLabel:"Operated by:",company:"Aquala Holdings Ltd",registeredAddress:"Registered address: Anexartasias 16, Limassol, Cyprus",contactLabel:"Contact:"},email:"[email protected]",sections:[{h:"1. Introduction and Acceptance of Terms",paragraphs:['Welcome to Boardspace.ai ("Boardspace", the "Platform", "we", "us", "our"). These Terms of Use (the "Terms") govern your access to and use of our website, applications, AI tools, canvas, galleries, community features, and any services, features, functionality, or content we offer from time to time (collectively, the "Services").'],paragraphsContinued:["If you do not agree to these Terms, in whole or in part, you may not use the Services.","If you use the Services on behalf of a company, studio, office, or other entity, you represent that you are authorized to bind that entity to these Terms."]},{h:"2. Who May Use the Services",paragraphs:["The Services are intended for private and business users. You must provide true, accurate, and up-to-date information during registration and keep it current.","The Services may only be used by persons legally capable of entering into a binding agreement under applicable law. If you are under 18, use is permitted only with the approval and supervision of a parent or legal guardian. The Services are not intended for children under 13."]},{h:"3. User Account and Account Security",paragraphs:["Some Services may require account creation. You are responsible for keeping your login credentials confidential and for all activity that occurs through your account.","You may not:"],list:["transfer your account to another person;","share account access without our express permission;","impersonate any person or entity;","create accounts through automated or deceptive methods."],afterList:["You must notify us promptly if you suspect unauthorized access, a security breach, or unauthorized use of your account."]},{h:"4. Description of Services",paragraphs:["Boardspace provides a digital platform for creating, editing, organizing, sharing, presenting, and managing visual and creative content, including through AI tools. Services may include, among other things, canvas tools, file uploads, image generation, video generation, galleries, community features, marketplace activity, work showcases, third-party integrations, and collaboration interfaces between users.","We may change, add, remove, suspend, or discontinue services or features, in whole or in part, at any time, temporarily or permanently, at our discretion."]},{h:"5. Permitted and Prohibited Use",paragraphs:["You agree to use the Services only lawfully, fairly, and reasonably.","Without limiting the above, you may 
593not:"],list:["violate any law, regulation, or binding directive;","upload, publish, share, or process content you have no legal right to use;","infringe copyrights, trademarks, trade secrets, privacy, publicity rights, or any third-party rights;","use the Services for fraud, impersonation, deception, phishing, or manipulation;","distribute offensive, threatening, inciting, discriminatory, violent, sexually unlawful, or otherwise illegal content;","upload malicious code, viruses, bots, harmful scripts, or other disruptive mechanisms;","perform scraping, crawling, harvesting, reverse engineering, or extraction of data, models, prompts, outputs, code, or system components without authorization;","bypass security mechanisms, usage limits, rate limits, or access controls;","use the Services to develop a competing product, train other systems without authorization, or build systematic data repositories;","harm or attempt to harm normal operation of the Services or other users' experience."],afterList:["We reserve the right to investigate any suspected violation and take any action we deem appropriate, including restricting access, suspension, deletion, reporting to authorities, or legal action."]},{h:"6. User Content",paragraphs:['"Input" includes any file, image, video, text, brief, sketch, prompt, comment, message, data, link, opinion, or other content you upload, submit, create, publish, or make available through the Services. "Output" includes any result, deliverable, version, visual, image, video, text, or other material generated, displayed, or delivered through the Services.',"Subject to applicable law and any specific agreement that applies to a given service, you remain responsible for the content you upload and share. You represent and warrant that you have all rights, permissions, and legal bases required for all Input you provide.","You bear sole responsibility for the accuracy, legality, quality, and use of your content."]},{h:"7. Operational License to Boardspace",paragraphs:["To provide, operate, maintain, secure, improve, back up, and protect the Services; prevent fraud; enforce these Terms; comply with legal obligations; and deliver functionality you request, you grant us a worldwide, non-exclusive, royalty-free license, transferable to service providers acting on our behalf, to use, store, host, copy, process, adapt, display, transmit, and distribute your Input and Output to the extent reasonably required for these purposes.","This license does not grant us ownership of your content. If you publish content publicly through community or showcase features, your selected permissions and any specific terms for those features will also apply."]},{h:"8. AI and Automated Outputs",paragraphs:["The Services may include AI features, automation, and algorithms for generating outputs, analyzing content, improving suggestions, visual adjustments, and producing different outputs. AI-generated outputs may be inaccurate, incomplete, biased, similar to outputs of other users, or unsuitable for a specific context.","You may not rely on such outputs as professional, legal, engineering, medical, safety, financial, or regulatory advice. You are solely responsible for reviewing, verifying, and approving any output before use."]},{h:"9. Payments, Credits, Tokens, and Subscriptions",paragraphs:["Some Services may be paid, subscription-based, package-based, credit-based, token-based, fee-based, or offered under another model shown on the Platform from time to time. Prices, billing terms, credit validity, token usage, automatic renewal terms, taxes, and refunds will be presented during purchase or in a relevant designated document.","Unless explicitly stated otherwise:"],list:["charges do not include taxes, levies, or governmental fees applicable to you;","unused tokens, credits, or usage rights are not redeemable for cash;","we may change future prices or plan structures, subject to applicable law."],afterList:["If a chargeback, payment reversal, disputed transaction, or non-payment occurs, we may limit use, suspend services, offset amounts, or take additional actions under law and the relevant terms."]},{h:"10. Marketplace, User-to-User Services, and Supplemental Terms",paragraphs:["Some Services may include a marketplace, service listings, work orders, service purchases, deliverable sharing, or interactions among buyers, creators, and other users.","In such cases, supplemental documents may apply, including:"],list:["Buyer Terms;","Creator Agreement;","Order terms or transaction documents;","specific rules for pricing, delivery, revisions, cancellations, payments, ownership, or work dis
593play."],afterList:["If there is a conflict between these Terms and a designated document for a specific service, the designated document prevails for that service."]},{h:"11. Third-Party Integrations and Services",paragraphs:["The Services may integrate with third-party services, APIs, platforms, models, payment providers, storage providers, analytics providers, social networks, or third-party tools. Use of such integrations may also be subject to those parties' terms, licenses, and privacy policies.","We are not responsible for the content, functionality, availability, security, or policies of such third parties.","Your use of third-party services is at your own responsibility and subject to their applicable documents."]},{h:"12. Boardspace Intellectual Property",paragraphs:["The Services, including software, design, interface, logo, trademarks, platform structure, texts, graphics, components, code, databases, and content owned by us or licensed to us, are protected by intellectual property laws and other laws.","Except for the limited right of use granted under these Terms, these Terms do not grant you ownership, license, or other rights in Boardspace intellectual property.","You may not copy, reproduce, distribute, sell, license, modify, decompile, translate, or create derivative works from platform components unless explicitly permitted in writing."]},{h:"13. IP Infringement Complaints",paragraphs:["If you believe any content on the Services infringes your copyright, trademark, privacy, or other rights, you may contact us at:","Where possible, your notice should include:"],insertEmailAfterParagraphIndex:0,list:["identifying information for the allegedly infringing content;","a description of the claimed right;","your contact details;","a good-faith statement."],afterList:["We reserve the right to remove content, restrict access, or take other actions at our discretion."]},{h:"14. Suspension, Termination, and Service Discontinuation",paragraphs:["At our discretion, we may limit, suspend, block, delete, or terminate access to an account or Services, in whole or in part, if:"],list:["you breached these Terms;","you created legal, security, commercial, or operational risk;","we are required to do so by law, court order, or authority request;","you failed to pay amounts due;","or continued provision of the service is impractical or unreasonable for us."],afterList:["You may stop using the Services at any time. Termination does not cancel obligations that arose before termination, including payment, confidentiality, indemnity, liability, or usage restrictions."]},{h:"15. Disclaimers",paragraphs:['The Services are provided "as is" and "as available." To the maximum extent permitted by law, we make no representations or warranties, express or implied, including as to fitness for a particular purpose, merchantability, accuracy, continuity, reliability, security, availability, or absence of errors.',"We do not guarantee that the Services will be available at all times, uninterrupted, bug-free, or suitable for your business, professional, or regulatory needs."]},{h:"16. Limitation of Liability",paragraphs:["To the maximum extent permitted by law, Aquala Holdings Ltd, its directors, employees, suppliers, partners, and representatives will not be liable for any indirect, special, consequential, incidental, punitive damages, or loss of profits, revenue, goodwill, data, customers, business opportunities, or use.","In any case, our total aggregate liability in connection with the Services, these Terms, or your use of them will not exceed the higher of:"],list:["(a) the amount you actually paid us during the 12 months preceding the event giving rise to the claim;","or","(b) USD $50."],afterList:["Nothing in these Terms limits liability that cannot be limited under applicable law."]},{h:"17. Indemnification",paragraphs:["You agree to indemnify, defend, and hold harmless Aquala Holdings Ltd, its affiliates, officers, employees, representatives, and suppliers from any claim, damage, liability, loss, expense, or cost, including reasonable attorneys' fees, arising from:"],list:["your use of the Services;","content you upload or create;
593","your breach of these Terms;","or your violation of third-party rights or applicable law."]},{h:"18. Changes to Services and Terms",paragraphs:["We may update the Services or these Terms from time to time. When material changes are made, we will take reasonable steps to notify you, for example via the website, your account, or email.","The date at the top of this document indicates the latest update date. Continued use after changes take effect is subject to applicable law and any required consent procedures."]},{h:"19. Governing Law and Jurisdiction",paragraphs:["These Terms are governed by the laws of Cyprus, without prejudice to applicable conflict-of-law principles.","Subject to applicable law and mandatory consumer protections, the courts of Limassol, Cyprus will have exclusive jurisdiction over disputes arising out of these Terms or the Services."]},{h:"20. General Provisions",paragraphs:["If any provision of these Terms is found invalid or unenforceable, the remaining provisions will remain in full force.","Failure by us to exercise a right or remedy does not constitute a waiver.","You may not assign your rights or obligations under these Terms without our prior written consent.","We may assign or transfer our rights and obligations under these Terms, in whole or in part, at our discretion."]},{h:"21. Contact",paragraphs:["For questions, requests, or notices regarding these Terms, you may contact us at:"],insertEmailAfterParagraphIndex:0,contactBlock:{org:"Aquala Holdings Ltd",address:"Anexartasias 16, Limassol, Cyprus"}}]},EL={acknowledgment:"By accessing or using the Services, you acknowledge that you have read and understood these Terms of Use and the Privacy Policy.",lastUpdated:"Last updated: March 26, 2026"},fg={title:jL,lastUpdated:NL,agreementPrivacyLine:PL,document:AL,footer:EL},IL="Accessibility Statement",DL="Last Updated: January 2025",RL={operatedBy:"Operated by:",registeredAddress:"Registered Address:"},LL={commitment:{title:"Our Commitment to Accessibility",text:"Boardspace.ai is committed to ensuring digital accessibility for people with disabilities. We are continually improving the user experience for everyone and applying the relevant accessibility standards to achieve these goals."},standards:{title:"Accessibility Standards",text:"We aim to conform to the <strong>Web Content Accessibility Guidelines (WCAG) 2.1</strong> at Level AA, which explains how to make web content more accessible for people with disabilities. These guidelines are internationally recognized standards for web accessibility.",efforts:"Our efforts include:",points:["Ensuring sufficient color contrast between text and backgrounds","Providing alternative text for images and visual content","Making all functionality available from a keyboard","Ensuring content is readable and functional when text size is increased","Providing clear focus indicators for keyboard navigation","Using semantic HTML and ARIA labels where appropriate","Respecting user preferences for reduced motion"]},ongoingEfforts:{title:"Ongoing Efforts",text:"We regularly review our website and applications to identify and address accessibility barriers. Our development process includes:",points:["Regular accessibility audits and testing","User testing with people who have disabilities","Training our team on accessibility best practices","Monitoring and addressing accessibility issues as they arise"]},knownLimitations:{title:"Known Limitations",text:"Despite our best efforts to ensure accessibility, there may be some limitations. We are aware of the following areas and are working to address them:",points:["Some third-party integrations may not fully meet accessibility standards","Certain AI-generated content may require additional accessibility considerations","Older content may not fully conform to current accessibility standards"],committed:"We are committed to addressing these limitations and improving accessibility across all areas of our platform."},feedback:{title:"Feedback and Contact",text:"We welcome your feedback on the accessibility of Boardspace.ai. If you encounter any accessibility barriers or have suggestions for improvement, please contact us:",email:"Email:",subjectLine:"Subject Line:",response:"We aim to respond to accessibility feedback within 5 business days. Your input helps us improve the experience for all users."},thirdPartyContent:{title:"Third-Party Content",text:"Our website may include third-party content or links to third-party websites. We do not control the accessibility features of these external sites and are not responsible for their accessibility compliance."},updates:{title:"Updates to This Statement",text:'We will review and update this accessibility statement regularly to reflect our ongoing commitment and any changes to our accessibility practices. The "Last Updated" date at the top of this page indicates when the statement was last revised.'}},OL={commitment:"We are committed to making Boardspace.ai accessible to everyone. Thank y
593ou for helping us improve.",lastUpdated:"Last Updated: January 2025"},ML={title:IL,lastUpdated:DL,company:RL,sections:LL,footer:OL},zL="Che spazio progettiamo insieme?",BL="Che spazio progettiamo ",FL="insieme?",$L="Scegli il prossimo passo per creare splendidi design d'interni",VL={badge:"Nuovo!",text:"Prova i workflow automatici"},UL={sectionTitle:"Scorciatoie per i prompt",tabs:{images:"Immagini",video:"Video",video2images:"Video 2 immagini"},video2images:{title:"Video 2 immagini",prompt:"Crea un video di transizione fluido da queste due immagini. Inizia dalla prima e passa alla seconda in 5-10 secondi con movimento naturale."},i2v1:{title:"Giro nella stanza 10 sec",prompt:"Video di 10 secondi. La telecamera avanza lentamente nella stanza, panora da sinistra a destra, rivela tutti i dettagli del design e si ferma sulla finestra principale."},i2v2:{title:"Luce naturale",prompt:"Video breve. La luce nella stanza passa gradualmente dal buio alla calda luce mattutina attraverso le finestre, proiettando ombre morbide sui mobili, fino al sole pieno."},i2v3:{title:"Zoom su dettaglio",prompt:"Video breve. La telecamera si avvicina lentamente da una inquadratura ampia verso un dettaglio centrale—tessitura, materiale o elemento decorativo—e si ferma in primo piano."},i2v4:{title:"Scena viva con audio",prompt:"Video con audio. Le tende si muovono dolcemente con una leggera brezza, il sole tremola sulle superfici, le foglie delle piante si muovono leggermente, tutto torna alla calma."},i2v5:{title:"Panoramica 180° 10 sec",prompt:"Video lungo 10 secondi. La telecamera ruota lentamente di 180° intorno al centro della stanza, rivela ogni parete e angolo, e si ferma al punto di partenza."},i2v6:{title:"Giorno → sera 10 sec",prompt:"Video 10 secondi. L'illuminazione della stanza cambia gradualmente dal mezzogiorno luminoso alla calda serata con lampade e candele, fino alla luce soffusa."},i2v7:{title:"Vista dall'alto",prompt:"Video breve. La telecamera scende lentamente da un'angolazione superiore sopra la stanza, scende all'altezza degli occhi e si ferma sulla vista frontale."},i2v8:{title:"Linea design 10 sec",prompt:"Video lungo 10 secondi. La telecamera segue la linea cucina/library/falegnameria da un capo all'altro, rivela ogni dettaglio e materiale, e si ferma alla fine."},i2v9:{title:"Profondità stanza 10 sec",prompt:"Video 10 secondi. La telecamera si allontana lentamente da un dettaglio ravvicinato, rivela l'intera stanza strato dopo strato, e si ferma su un piano largo."},i2v10:{title:"Atmosfera con audio",prompt:"Video con audio. Il vapore sale da una tazza di caffè sul bancone, la luce tremola dalla finestra, un'ombra d'albero si muove dolcemente sul muro, tutto si placa."},twoImg1:{title:"Prima/dopo con audio",prompt:"Video con audio. La telecamera resta fissa. La stanza vecchia si smonta e si ricostruisce gradualmente nel nuovo design, fino al risultato finale."},twoImg2:{title:"Cambio stile con audio",prompt:"Video con audio. Dallo stesso punto di vista, la stanza si trasforma gradualmente da uno stile all'altro—mobili, colori e materiali cambiano in un flusso fluido."},twoImg3:{title:"Vuota → arredata con audio",prompt:"Video con audio. Telecamera fissa. I mobili compaiono uno a uno nello spazio vuoto—divano, tavolo, illuminazione, decor—fino a stanza piena e pronta."},twoImg4:{title:"Giorno → notte con audio",prompt:"Video con audio. Stessa inquadratura. La luce naturale svanisce gradualmente, si accendono le luci interne, l'atmosfera passa da luminosa a intima e calda."},twoImg5:{title:"Colore pareti senza audio",prompt:"Video 10 secondi senza audio. Telecamera fissa. Il vecchio colore delle pareti si scioglie e viene sostituito dal nuovo, scorrendo dall'alto in basso."},twoImg6:{title:"Stagioni con audio",prompt:"Video con audio. Dall stesso punto, la decor cambia—dallo stile estivo luminoso allo stile invernale caldo con coperte, cuscini e luce soffusa."},twoImg7:{title:"Ristruttura cucina 5 sec",prompt:"Video veloce 5 secondi. Telecamera fissa. Piano lavoro, mobili e pavimento si trasformano dallo stato attuale al design aggiornato, fino al risultato."},twoImg8:{title:"Aggiungi elementi senza audio",prompt:"Video 10 secondi senza audio. Da un angolo fisso, nuovi elementi entrano gradualmente—quadri, piante, tappeto, illuminazione—fino a stanza completa."},twoImg9:{title:"Materiali senza audio",prompt:"Video 10 secondi senza audio. Telecamera fissa. Pavimento/parete/superficie si trasforma da un materiale all'altro—piastrella a legno, cemento a marmo—in un flusso fluido."},twoImg10:{title:"Apri spazio con audio",prompt:"Video con audio. Dall stesso punto, una parete si apre gradualmente e rivela un altro spazio, la stanza si espande e si fonde con la nuova area."}
593,mixMaterials:{title:"Combina materiali",prompt:"Combina questi 7 materiali nel modo migliore in questo spazio. Crea un design coerente e armonioso che usa ogni materiale in modo strategico."},cinematicVideo:{title:"Video cinema",prompt:"Crea un video di qualità 10 secondi con audio da questa singola immagine. Rendilo cinematografico con movimenti fluidi di camera, musica ambient e mostra tutti i dettagli del design."},viralPost:{title:"Post virale",prompt:"Trasforma questa immagine in un post social virale. Rendila accattivante e condivisibile."},styleMatch:{title:"Style match",prompt:"Da questa immagine di riferimento, crea una presentazione StyleMatch—estrai mobili e elementi di design esistenti, analizza lo stile, estrai la palette colori e mostrali su un moodboard professionale."},floorPlan3D:{title:"Planimetria 3D",prompt:"Trasforma queste planimetrie in una vista 3D dall'alto con leggera inclinazione 20%, pareti e porte chiare, mobili e pavimento realistici come ripresi dall'alto."},sketchReality:{title:"Schizzo → realtà",prompt:"Trasforma questo schizzo in un render d'interni, aggiungi materiali aggiornati 2026, professionale. L'output deve essere super realistico"},designDNA:{title:"Design DNA",prompt:"Per l'immagine allegata 1, crea una presentazione DesignDNA—estrai mobili e elementi di design esistenti, analizza lo stile, estrai la palette colori e presentali su un moodboard professionale."},kitchenBoard:{title:"Kitchen x6",prompt:"Per l'immagine allegata 1, crea una KitchenBoard con 6 diverse variazioni di materiali e palette colori di questa cucina, ispirata alle tendenze Milano 2024-2025. Mostra tutte le variazioni su una board con l'originale."},"3dModel":{title:"Modello 3D",prompt:"Converti questa immagine 2D di mobili in un modello 3D utilizzabile in SketchUp per visualizzazione e presentazioni clienti."},customCatalog:{title:"Catalogo personalizzato",prompt:"Basandoti su questa immagine stilizzata come hero, crea un catalogo presentazione 16:9 con sfondo bianco pulito—estrai e isola i mobili chiave, etichettali e presentali in stile Milano 2025 per un PDF pronto al cliente."}},qL={creator:{name:"Creatore immagini",description:"Crea immagini design interni/esterni da prompt"},erase:{name:"Schizzo a realtà",description:"Trasforma schizzi in immagini super realistiche"},combine:{name:"Combina immagini",description:"Combina fino a 10 immagini di riferimento in una"},promptHelper:{name:"Boardy",description:"Agente intelligente che indirizza la tua richiesta allo strumento AI migliore"},video3d:{name:"Kling v2.1",description:`Un'immagine in video
594
5955 sec`},wanVideo:{name:"WAN 2.5",description:"Video 5 sec con audio, 480p"},ltxVideo10s:{name:"LTX-Fast",description:"Video 10 sec con audio, 1080p"},seedanceVideo:{name:"Seedance 2",description:"2 immagini in video"},generate3d:{name:"Agente 3D",description:"Crea qualsiasi modello 3D in .glb. Mobili e prodotti design"},styleSwitch:{name:"Cambio stile",description:"Cambia stili d'interni con redesign realistico della stanza"},ultraReal:{name:"Ultra real",description:"Crea design d'interni ultra realistici con FLUX 1.1 Pro"},priceScan:{name:"Agente scan prezzi",description:"Crea presentazioni preventivo professionali da immagini di stanze"},quickEdit:{name:"Modifica coerente",description:"Editing immagini AI coerente—rimuovi oggetti, cambia colori e altro"},imageGenerator:{name:"Generatore immagini",description:"Crea immagini da prompt di testo con modello FLUX veloce"},multiAngle:{name:"Agente multi-angolo",description:"Modifiche consapevoli della camera—ruota, inclina, zoom mantenendo il soggetto coerente"},nanoBananaPro:{name:"Nano Banana Pro",description:"Modello Google avanzato per editing immagini"},flux2Pro:{name:"Flux 2.0 Pro",description:"Creazione e editing immagini di qualità con fino a 8 immagini di riferimento"},gpt5Image:{name:"Editing immagine GPT",description:"Editing avanzato con gpt-image-1"},klingO1:{name:"Kling O1",description:"Editing immagini precisi con forte controllo riferimento (fino a 10 immagini)"},klingO1Video:{name:"Kling O1 2 immagini",description:`Transizione video fluida
5965 sec, 1080p`},gptImage15:{name:"GPT Image 1.5",description:"Editing di alta qualità con conservazione dei dettagli"},gptImage2:{name:"GPT Image 2.0",description:"Editing di alta qualità con conservazione dei dettagli (v2)"},grokVideo:{name:"Grok Video",description:"Video AI da immagine (6-30 sec)"},veoVideo:{name:"Veo 3.1",description:"Video AI di alta qualità con audio"},grokImageEditor:{name:"Grok",description:"Editing immagini AI con Grok—restituisce sempre 2 variazioni uniche"},seedream45Edit:{name:"Seedream 4.5",description:"Editing immagini AI di alta qualità con Seedream 4.5"},seedream5Lite:{name:"Seedream 5.0",description:"Editing immagini AI premium con Seedream 5.0 Lite"}},GL={image:{label:"Immagine",helper:"Controllo dettagli + editing"},video:{label:"Video",helper:"Movimento + audio"},"3d":{label:"3D",helper:"Modelli + visualizzazione"}}
596,WL={inputs:"Input",tokens:"token",promptGuide:"Guida prompt",comingSoon:"Nuovo {{category}} in arrivo.",clearAll:"Cancella tutte le immagini di riferimento"},HL={myBoardspaces:"Le mie board",seeAll:"Vedi tutti",showLess:"Mostra meno"},KL={title:"Workflows",tabs:{image:"Immagini",video:"Video"},tokens:"token",badge:{popular:"Popolare",new:"Nuovo"},templates:{flooring_check:{name:"Pavimenti",description:"Genera 6 opzioni uniche di materiali per pavimenti per il tuo design della stanza"},exterior_angles_set:{name:"Angolazioni",description:"Genera 6 diverse angolazioni di ripresa dell'edificio esterno"},stylematch:{name:"StyleMatch",description:"Uno stile, infinite stanze. Coerenza di design istantanea tra gli spazi"},designdna:{name:"DesignDNA",description:"Estrae il DNA di design e cura 10-15 elementi di arredi e decorazioni"},kitchenboard:{name:"Cucina",description:"Genera 6 varianti di materiali e palette colori per la cucina"},photo_360:{name:"Fotografia 360°",description:"Genera 6 varianti professionali di angolazioni della tua stanza"},x4_angle_board:{name:"Angoli x4",description:"Genera una board di visualizzazione a 4 angoli dal render della stanza"},day_to_night:{name:"Giorno e notte",description:"Genera 8 frame timelapse del passaggio luce dal giorno alla notte"},shop_the_look:{name:"Prezzi dall'immagine",description:"Ottieni un elenco acquisti completo per elementi e mobili nell'immagine"},architect_thoughts:{name:"Pensieri dell'architetto",description:"Trasforma l'immagine in una board con schizzi a matita, ideale per i social"},room_timelapse:{name:"Timelapse stanza",description:"Guarda lo spazio vuoto prendere vita con mobili, colori e design"},project_timelapse:{name:"Timelapse costruzione",description:"Guarda l'edificio nascere dal terreno. Perfetto per visualizzazioni architettoniche"},viral_video:{name:"Video virale",description:"Genera un video 360° di 5 secondi per i social (9:16 verticale)"},plan_to_3d:{name:"Planimetria in 3D",description:"Trasforma una planimetria in un render tridimensionale"},sketch_to_real:{name:"Schizzo a realtà",description:"Trasforma uno schizzo di design d'interni in un'immagine fotorealistica"},seed_explorer:{name:"Esplora varianti",description:"Genera 6 varianti di design da un'unica immagine"},moodboard:{name:"Moodboard",description:"Genera un moodboard coerente con il tuo stile"},family_home_video:{name:"Video casa familiare",description:"Video walkthrough degli interni della casa"},construction_stages:{name:"Fasi di costruzione",description:"Timelapse in 3 immagini e 2 video delle fasi di cantiere"}}},YL={header:{projectsMenuAria:"Menu progetti",notificationsAria:"Notifiche"},mobileNav:{navAria:"Navigazione rapida dashboard",canvas:"Canvas",canvasAria:"Vai alla dashboard e canvas",academy:"Accademia",academyAria:"Vai all’accademia",marketplace:"Marketplace",marketplaceAria:"Vai al marketplace creator",settings:"Impostazioni",settingsAria:"Apri impostazioni"},heroHeadline:{updates:"{{count}} nuovi aggiornamenti",line1:"Quale spazio",line2Prefix:"progettiamo",line2Highlight:"insieme?",stats:{rating:"Valutazione utenti",avgTime:"Tempo medio",renders:"Render totali"}},heroCards:{eyebrow:"Scegli come iniziare",meta:"I nostri quattro servizi",newBadge:"NUOVO",cards:{createAlone:{tag:"Canvas",title:"Crea in autonomia",subtitle:"Ideale per editing avanzato con i migliori modelli: Nano Banana, GPT Image 2.0, Flux e altri.",cta:"Apri canvas"},boardstyler:{tag:"Boardstyler",title:"Boardstyler",subtitle:"Trasforma una planimetria 2D in 3D. Trascina pavimenti, rivestimenti e arredi reali, poi renderizza da ogni angolazione.",cta:"Carica planimetria"},studio:{tag:"Studio Video",title:"Studio Video 2.0",subtitle:"Tutti i motori video più avanzati in un unico workspace: Kling 3.0, Seedance 2, Veo 3.1, Grok Video e altri.",cta:"Inizia video"},videoEditor:{tag:"Editor video",title:"Editor video",subtitle:"Taglia e unisci clip, aggiungi musica, titoli e transizioni — tutto su una timeline.",cta:"Apri l’editor"},marketplace:{tag:"Marketplace",title:"Affidati a un professionista",subtitle:"Creator top approvati da Boardspace, disponibili da subito per lavorare con te.",cta:"Vai al marketplace"}},desktopOnly:{closeAria:"Chiudi",videoEditor:{title:"Editor video su uno schermo più grande",body:"Per lavorare comodamente sulla t
596imeline, apri Boardspace nel browser di un computer o di un tablet con schermo ampio.",cta:"Ho capito"},boardstyler:{title:"Boardstyler su tablet o desktop",body:"Boardstyler è disponibile su tablet o computer. Apri Boardspace nel browser su uno schermo più ampio per caricare la planimetria, modificare in 3D e fare i render.",cta:"OK"},studio:{title:"Studio Video 2.0 su tablet o desktop",body:"Lo studio video è disponibile su tablet o computer. Apri Boardspace nel browser su uno schermo più ampio per usare Kling, Seedance, Veo, Grok e gli altri motori.",cta:"OK"}},boardstylerGate:{eyebrow:"Incluso nel piano mensile",title:"BoardStyler è aperto agli abbonati",description:"BoardStyler è incluso per gli abbonati mensili senza costi aggiuntivi. Gli abbonati possono entrare nell'editor, costruire ambienti, creare viste, lavorare in 3D e produrre video nell'editor.",benefits:["Accesso completo a BoardStyler e ai tuoi progetti","Viste, lavoro 3D e video nell'editor sono inclusi nel piano","Il workspace resta aperto finché l'abbonamento è attivo"],cta:"Vai al pagamento",secondaryCta:"Torna alla dashboard"}},webinar:{featuresHeading:"Di cosa parleremo nel webinar",featuresLead:"Le quattro esperienze centrali di BoardSpace 2.0 — le approfondiremo nel webinar di lancio e risponderemo alle domande."},workflows:{title:"Workflow popolari",prevAria:"Precedente",nextAria:"Successivo",sliderAria:"Scorri tra i workflow",tokensLabel:"token",startCta:"Inizia"},projects:{title:"I miei progetti",prevAria:"Precedente",nextAria:"Successivo",loading:"Caricamento...",untitled:"Senza titolo",noPreview:"Nessuna anteprima",shared:"Condiviso",imagesCount:"{{count}} immagini",updatedAt:"Aggiornato {{relative}}",newProject:"Nuovo progetto",startBlank:"Inizia da una board vuota",loginRequired:"Accedi per creare una nuova board",createFailed:"Impossibile creare una nuova board",boardPrefix:"Nuova board"},academy:{title:"Dalla nostra academy",meta:"Prime lezioni",allVideos:"Tutti i video",lessonLabel:"Lezione {{id}}",generalLabel:"Panoramica",modalTitle:"Video academy",closeAria:"Chiudi",videoTitles:{1:"Come iniziare?",2:"Conoscere la piattaforma",3:"Creare video in Studio 2.0",4:"Modifica precisa",5:"Combinazione materiali",6:"Workflow",7:"Sessione con Tal Benish",8:"Parte 2 — Tal Benish",9:"Webinar parte 3 — Tal Benish",10:"Q&A — riepilogo webinar",11:"Webinar — Q&A aperta",12:"Piano 3D con Tal Benish",13:"Da schizzo a decisione — AI in ebraico",intro:"Cos'è Boardspace?"}},community:{title:"Render reali di immagini e video creati dai content creator professionisti di Boardspace",marketplaceCta:"Visita il marketplace",media:{video:"VIDEO",image:"IMMAGINE"},tags:{new:"NEW",hot:"HOT",trending:"TRENDING",live:"LIVE"}}},QL={greeting:zL,greetingPrefix:BL,greetingHighlight:FL,subtitle:$L,workflowsBanner:VL,promptShortcuts:UL,agents:qL,categories:GL,common:WL,galleries:HL,workflows:KL,dashboard2:YL},JL="Rimosso con successo",XL="Sei stato rimosso con successo dalla mailing list di Boardspace. Non riceverai più email di marketing da parte nostra.",ZL="Torna al sito",eO={title:JL,message:XL,backToSite:ZL},tO={gpt_image_2_5_edit:"La modifica precisa è pronta ed è stata aggiunta alla tua canvas. 🎨",kling_3_turbo_video_generator:"Video Kling 3 Turbo generato con successo!",minimax_h3_video_generator:"Video MiniMax H3 generato con successo!"},aO={brand:"Chat GPT",backToCanvas:"Torna alla canvas",newChat:"Nuova chat",search:"Cerca nelle chat",today:"Oggi",thisWeek:"Questa settimana",older:"Più vecchie",loadMore:"Carica altro",rename:"Rinomina",delete:"Elimina",deleteTitle:"Eliminare questa chat?",deleteDescription:"La chat e tutti i suoi messaggi verranno eliminati definitivamente.",cancel:"Annulla",confirmDelete:"Elimina chat",emptyTitle:"Di cosa parliamo?",emptyTitleNamed:"{{name}}, di cosa parliamo?",placeholder:"Chiedimi qualsiasi cosa",regularMode:"Normale · 0.1",webMode:"Internet · 0.1",webSearch:"Cerca su Internet",attachImages:"Allega immagini",send:"Invia",copy:"Copia",copied:"Copiato",loading:"Caricamento conversazione…",noChats:"Ancora nessuna chat",noSearchResults:"Nessuna chat trovata",imageLimit:"Puoi allegare fino a 6 immagini",dropImages:"Trascina le immagini qui",dropImagesHint:"Dal computer o dalla canvas · fino a 6",renamePlaceholder:"Nome della chat",save:"Salva",error:"Impossibile caricare la chat. Riprova.",showChats:"Mostra chat",hideChats:"Nascondi chat",models:{mini:"GPT-5 
596· 0.1",web:"Web · 0.1",gpt5Mini:"GPT-5 · 0.1",gpt5MiniWeb:"GPT-5 · 0.1 + Web"},modelPicker:"Scegli modello"},iO={analysis:["Analizzando","Comprendendo","Interpretando","Riconoscendo","Elaborando","Esaminando","Studiando","Decodificando","Scansionando","Leggendo"],generation:["Sognando","Immaginando","Dipingendo","Disegnando","Preparando","Intrecciando","Generando","Creando","Renderizzando","Dando vita","Materializzando","Componendo","Evocando","Manifestando","Avviando","Preparando la magia","Facendo magie","Pixelando"]},oO={createBoardspace:"Nuova board",enterBoardspaceName:"Inserisci il nome della board...",searchBoardspaces:"Cerca board...",cancel:"Annulla",deleteDialogTitle:"Eliminare la board?",deleteDialogDescription:"Questa azione non può essere annullata. La board e tutto il suo contenuto verranno eliminati definitivamente.",deleteDialogConfirm:"Elimina",select:"Seleziona",selectedSuffix:"selezionate",deleteSelected:"Elimina",bulkDeleteTitle:"Eliminare le board selezionate?",bulkDeleteDescription:"Questa azione non può essere annullata. Tutte le board selezionate e i loro contenuti verranno eliminati definitivamente.",bulkDeleteSuccess:"board eliminate",bulkDeleteFailed:"board non eliminate",deleting:"Eliminazione…"},rO={aiAssistant:"Assistente AI",backToDashboard:"Torna alla dashboard",buyTokens:"Acquista token",drawingTools:"Strumenti di disegno",uploadImage:"Carica immagine",uploadVideo:"Carica video",uploadVideoFile:"Carica file video",addYouTube:"Aggiungi video YouTube",pinterest:"Connetti Pinterest",inspiration:"Ispirazione",materialsReferences:"Libreria materiali",colorPalette:"Palette colori",colorPalettes2025:"Palette colori 2025",workflows:"Workflows automatici",share:"Condividi",shareCanvas:"Condividi board con un amico",activityLog:"Registro attività",openMinimap:"Mappa della board",closeMinimap:"Chiudi mappa",agents:"Agenti",zoomOut:"Riduci zoom",zoomIn:"Aumenta zoom",zoomLevel:"Livello zoom",zoomToFit:"Adatta zoom a tutti gli elementi",spreadImages:"Distribuisci immagini uniformemente",downloadCanvas:"Scarica canvas come immagine",muteSounds:"Disattiva suoni",unmuteSounds:"Attiva suoni",switchToLightMode:"Passa alla modalità chiara",switchToDarkMode:"Passa alla modalità scura",undo:"Annulla",redo:"Ripristina",sharedWith:"Condiviso con",person:"persona",people:"persone",select:"Seleziona e sposta",selectAndPan:"Seleziona e sposta",dashboard:"Dashboard",settings:"Impostazioni",help:"Aiuto",signOut:"Esci",quickEdit:"Modifica coerente",paint:"Segna",turnImageToVideo:"Trasforma immagine in video",getPresentations:"Ottieni presentazioni",upscaleImage:"Migliora immagine",drag:"Trascina",rectangle:"Rettangolo",circle:"Cerchio",arrow:"Freccia",stickyNote:"Nota adesiva",text:"Nota adesiva",plainText:"Testo semplice",plaintext:"Testo semplice",pen:"Penna",measure:"Misura",download:"Scarica",downloadAsJPG:"Scarica come JPG",downloadAsPNG:"Scarica come PNG",uploadImages:"Allega immagine",promptOnlyNoReferences:"Questo modello genera immagini solo da prompt. Scrivi la richiesta in linguaggio naturale — senza immagini di riferimento.",send:"Invia",holdToSpeak:"Tieni premuto per parlare",chatUploadImage:"Carica immagine",chatBordi:"Bordi",chatJasonPromptWriter:"Jason, scrittore di prompt",chatGptChat:"Chatta con GPT",chatLiveWeb:"Clicca per internet live",chatVoiceInput:"Parla invece di digitare",clickToStopListening:"Clicca per smettere di ascoltare",startConversation:"Inizia una conversazione con il tuo agente AI",uploadImageAndDescribe:"Carica un'immagine e descrivi cosa vorresti fare",tokenBalance:"Saldo token",publish:"Pubblica",publishToGallery:"Pubblica nella galleria",export:"Esporta",exportCanvas:"Esporta canvas",home:"Home",projects:"Progetti",tools:"Strumenti",media:"Media",references:"Riferimenti",inputs:"Input",tokens:"Token",promptGuide:"Guida prompt",uploadImageAndTypeIdea:"Carica un'immagine e scrivi la tua idea",klingO1VideoPlaceholder:"Fai riferimento ai frame iniziale e finale usando @Image1 e @Image2 nei prompt per guidare stile, movimento camera e dinamiche della scena durante la transizione",showPrompts:"Mostra idee prompt",hidePrompts:"Nascondi idee prompt",clearChat:"Cancella chat",exitChat:"Esci dalla chat",clearSession:"Cancella sessione",exit:"Esci",openAIAssistant:"Apri assistente AI",closeAIAssistant:"Chiudi assistente AI",addMedia:"Aggiungi media",addImagesFromDevice:"Aggiungi immagini dal dispositivo",addVideosFromDevice:"Aggiungi video dal dispositivo",youtubeVideo:"Video YouTube",embedFromYouTube:"Incorpora da URL YouTube",browseInspirationBo
596ards:"Sfoglia le board di ispirazione",exploreColorCombinations:"Esplora combinazioni di colori",importFromPinterest:"Importa da Pinterest",groupCreationMode:{title:"Modalità creazione gruppo",selected:"Selezionati",clickToAdd:"Clicca sugli elementi per aggiungerli",rightClickToFinish:"Clic destro per terminare"},contextMenu:{sendToChat:"Invia alla chat",bringToFront:"Porta in primo piano",bringForward:"Porta avanti",sendBackward:"Porta indietro",sendToBack:"Porta in fondo",lock:"Blocca",unlock:"Sblocca",createGroup:"Crea gruppo",finishGroup:"Termina gruppo",cancelGroup:"Annulla gruppo",ungroup:"Separa gruppo",removeBackground:"Rimuovi sfondo",upscaleImage:"Migliora immagine",duplicate:"Duplica",download:"Scarica",delete:"Elimina",fillColor:"Colore riempimento",strokeColor:"Colore bordo",textColor:"Colore testo",opacity:"Opacità",customColor:"Colore personalizzato",apply:"Applica"},chatSketchPresets:"Preset per schizzo"},nO={title:'Condividi "{{title}}"',inviteDescription:"Invita altri a collaborare ",inviteDescriptionHighlight:"su questa board",viewAccessDescription:"Vedi chi ha accesso a questa board",emailLabel:"Indirizzo email",emailPlaceholder:"[email protected]",messageLabel:"Messaggio (opzionale)",messagePlaceholder:"Lavoriamo insieme su questo...",userFound:"Utente trovato nel sistema",userNotFound:"Utente non registrato nel sistema",invitationsSent:"Inviti inviati",pending:"In attesa",owner:"Proprietario",you:"Tu",collaborators:"Collaboratori",collaboratorsCount:"Collaboratori ({{count}})",noCollaboratorsYet:"Ancora nessun collaboratore",inviteAbove:"Invita qualcuno a collaborare sopra",cancel:"Annulla"},sO={markOnImage:"Segna sull'immagine",escToCancel:"ESC per annullare",ctrlZToUndo:"Ctrl+Z per annullare",deleteToRemove:"Canc per eliminare",enterText:"Inserisci testo...",undo:"Annulla (Ctrl+Z)",deleteSelected:"Elimina selezionato",clearAll:"Cancella tutto",addImage:"Aggiungi immagine",selectColor:"Seleziona colore",font:"Font:",cancel:"Annulla",cropAndSave:"Ritaglia e salva",saving:"Salvataggio...",save:"Salva",tools:{arrow:"Freccia",circle:"Cerchio",rectangle:"Rettangolo",text:"Testo",crop:"Ritaglia"}},lO={title:"Impostazioni",tokens:"token",tabs:{user:"Utente",integrations:"Integrazioni",tokenPricing:"Prezzi token",pricing:"Prezzi",billing:"Fatturazione",tokenUsage:"Uso token",usage:"Utilizzo"},user:{plan:"Piano",memberSince:"Membro dal",nextPayment:"Prossimo pagamento",tokens:"Token",usage:"Utilizzo",upgrade:"Upgrade"},canvas:{title:"Impostazioni canvas",showGrid:"Mostra griglia",showGridDescription:"Mostra pattern a punti sul canvas"},theme:{title:"Impostazioni tema",darkMode:"Modalità scura",darkModeDescription:"Usa interfaccia scura",lightMode:"Modalità chiara"},language:{title:"Impostazioni lingua",currentLanguage:"Lingua corrente",switchToHebrew:"Passa all'ebraico",switchToEnglish:"Passa all'inglese",switchToItalian:"Passa all'italiano"},integrations:{title:"Connessioni",connectedServices:"Servizi connessi",pinterest:{title:"Pinterest",description:"Importa board di ispirazione e pin nei tuoi progetti",connected:"Connesso",notConnected:"Non connesso",connect:"Connetti Pinterest",disconnect:"Disconnetti",boards:"Board",boardsConnected:"Board • Connesso",pinsImported:"Pin importati",boardsUsed:"Board usate",refresh:"Aggiorna",import:"Importa",settings:"Impostazioni",connectMessage:"Connetti il tuo account Pinterest per importare ispirazione",lastSynced:"Ultima sincronizzazione",connectedAs:"Connesso come"},moreIntegrations:{title:"Altre integrazioni",description:"Instagram, Houzz e altro in arrivo",comingSoon:"Prossimamente"}},pricing:{title:"Prezzi token per chiamata",description:"Costo in token per ogni funzione. Nessun costo in euro - solo quantità di token.",feature:"Funzione",cost:"Costo",tokensPerUse:"Token per uso",free:"Gratis",categories:{superAgent:"Funzioni Super Agent",imageFeatures:"Funzioni immagine",videoFeatures:"Funzioni video",presentations:"Presentazioni"}}},cO={sendToChat:"Invia alla chat",addToCanvas:"Aggiungi al canvas",addToBoth:"Aggiungi a entrambi",groups:{all:"Tutti",materials:"Materiali",models:"Modelli",appliances:"Elettrodomestici",stone:"Pietra",uncategorized:"Senza categoria"},subCategories:{all:"Tutti",innovus:"Innovus",veneer:"Impiallacciature",acrylic:"Acrilici",woodFormica:"Formica legno",matteCrystal:"Cristallo opaco",formicaStone:"Formica Stone",special:"Speciali",cornices:"Cornici",edges:"Bordi",vitrines:"Vetrine",ovens:"Forni",cooktops:"Piani cottura",refrigerators:"Frigoriferi"},selectCategory:{label:"Categoria (obbligatoria)",placeholder:"Scegli una categoria"},upload:{formatsHint:"JPG, PNG, WebP e altri. Le immagini grandi vengono compresse automaticamente prima del caricamento",preparing:"Preparazione delle immagini…",uploadingProgress:"Caricamento {{done}} di {{total}}…",noFiles:"Seleziona almeno un'immagine",noCategory:"Scegli una categoria prima di caricare",successOne:"Materiale caricato con successo",successMany:"{{n}} materiali caricati con successo",partial:"{{ok}} di {{total}} materiali caricati. Non riusciti: {{names}} ({{reason}})",failed:"Caricamento non riuscito: {{reason}}",fileTooLarge:"{{name}}: il file è troppo grande (max {{maxMb}}MB)",fileUnsupported:"{{name}}: non è un file immagine. Usa JPG, PNG o WebP",fileDecodeFailed:"{{name}}: impossibile leggere l'immagine. Se è HEIC o TIFF, convertila in JPG e riprova",errTooLarge:"Il file è troppo grande per l'archiviazione",errUnsupported:"Formato del file non supportato dall'archiviazione",errNoPermission:"Nessun permesso per salvare. Prova a uscire e rientrare",errNetwork:"Problema di connessione. Controlla la rete e riprova"},rename:{title:"Rinomina categoria",description:"Questo nome è visibile solo a te. I materiali già archiviati qui non si spostano.",label:"Nuovo nome",defaultIs:"Predefinito: {{name}}",hint:"Clic destro (o pressione prolungata) per rinominare",save:"Salva",reset:"Ripristina predefinito",delete:"Elimina sottocategoria",cancel:"Annulla",saved:"Nome aggiornato",resetDone:"Nome ripristinato",failed:"Rinomina non riuscita"},customSubcategories:{add:"Nuova sottocategoria",createTitle:"Crea sottocategoria",createDescription:"Aggiungi una sezione personale dentro “{{group}}”.",nameLabel:"Nome sottocategoria",placeholder:"Ad esempio: Caesarstone",create:"Crea",created:"Sottocategoria creata",createFailed:"Impossibile creare la sottocategoria. Il nome potrebbe già esistere.",general:"{{group}} — Generale",deleteConfirm:"Eliminare questa sottocategoria? I materiali verranno spostati in Senza categoria.",deleted:"Sottocategoria eliminata",deleteFailed:"Impossibile eliminare la sottocategoria",addChild:"Nuova sotto-sottocategoria",createChildTitle:"Crea sotto-sottocategoria",createChildDescription:"Aggiungi un'altra sezione dentro “{{group}}”.",childPlaceholder:"Ad esempio: Marmo bianco",deleteConfirmWithChildren:"Eliminare questa sottocategoria? Anche tutto ciò che è annidato al suo interno verrà eliminato e i materiali passeranno a Senza categoria."},tabs:{materials:"Materiali",myMaterials:"I miei materiali",styleBoard:"StyleBoard"},categories:{all:"Tutti",wood:"Legno",flooring:"Pavimenti",metal:"Metallo",stone:"Pietra",fabric:"Tessuto",aerial:"Aerea",terrain:"Terreno",brick:"Mattone",plaster:"Intonaco",concrete:"Cemento",roofing:"Coperture"},uploadMaterial:"Carica materiale",loading:"Caricamento immagini...",noImagesFound:"Nessuna immagine trovata",tryAdjustingFilters:"Prova a modificare la ricerca o i filtri",roomTypes:{all:"Tutti",living_room:"Soggiorno",bedroom:"Camera da letto",bathroom:"Bagno",kitchen:"Cucina",office:"Ufficio",office_room:"Studio",kids_room:"Camera bambini",laundry_room:"Lavanderia",closet:"Guardaroba"},search:{placeholder:"Cerca in tutti i miei materiali…",clear:"Cancella la ricerca",resultsAcrossLibrary:"{{n}} risultati in tutte le categorie",noResults:"Nessun materiale trovato per “{{query}}”",noResultsHint:"Cerca per nome, descrizione, tag o categoria"}},dO={dropImagesHere:"Trascina le immagini qui",dragToWorkflow:"Trascina l'immagine qui per avviare il workflow"},uO={title:"Workflows",guideLink:"Guida",tabs:{image:"Immagine",video:"Video"},tokens:"token",watchVideoTutorial:"Clicca per guardare il video tutorial",templates:{flooring_check:{name:"Pavimenti",description:"Genera 6 opzioni di materiali per pavimenti per il tuo spazio"},exterior_angles_set:{name:"Angoli",description:"Genera 6 angoli camera diversi per il tuo edificio esterno"},stylematch:{name:"StyleMatch",description:"Uno stile, infinite stanze. Coerenza di design istantanea tra gli spazi"},designdna:{name:"DesignDNA",description:"Estrae il DNA del design e cura 10-15 elementi di arredo e decor"},kitchenboard:{name:"Cucina",description:"Genera 6 varianti di materiali e palette colori per la cucina"},photo_360:{name:"Fotografia 360°",description:"Genera 6 varianti professionali di angoli camera del tuo spazio"},plan_to_3d:{name:"Piano in 3D",description:"Trasforma le piante in rendering 3D"},sketch_to_real:{name:"Schizzo a reale",description:"Trasforma schizzi di interior design in fotografie fotorealistiche"},seed_explorer:{name:"Set di viste",description:"Inserisci un'idea e ottienila da 6 angoli camera diversi",badge:"Nuovo",tokenCost:"1.5 token",processingTime:"30-60 secondi",enterPrompt:"Inserisci il prompt",generate6Variations:"Genera 6 varianti",enterPromptFirst:"Inserisci prompt",promptPlaceholder:"Descrivi l'immagine che vuoi generare... (es. 'soggiorno moderno con mobili minimalisti e luce naturale')",ctrlEnterHint:"Premi Ctrl+Invio per generare"},x4_angle_board:{name:"4 Angoli",description:"Genera una board di 4 angoli dalla render della tua stanza"},day_to_night:{name:"Giorno e notte",description:"Genera 8 frame timelapse del passaggio luce gi
596orno-notte"},shop_the_look:{name:"Shop the Look",description:"Genera visualizzazione stanza acquistabile con callout prodotti"},architect_thoughts:{name:"Pensieri dell'architetto",description:"Trasforma la render in una board presentazione architettonica seppia"},architectural_illustrator:{name:"Illustratore Architettonico",description:"Trasforma una foto reale in un raffinato pannello architettonico in bianco e nero con linee tecniche e legenda dei materiali"},moodboard:{name:"Moodboard",description:"Crea un moodboard professionale da fino a 10 immagini con sfondo crema caldo"},kitchen_technical_drawing:{name:"Disegno tecnico",description:"Genera una scheda di disegno tecnico cucina professionale"},room_timelapse:{name:"Timelapse stanza",description:"Genera un video timelapse di 5 secondi che rivela il design d'interni"},project_timelapse:{name:"Timelapse cantiere",description:"Genera un video timelapse di 5 secondi della costruzione dell'edificio"},viral_video:{name:"Video virale",description:"Genera un video di rotazione 360° di 5 secondi per i social (9:16 verticale)"},family_home_video:{name:"Famiglia in casa",description:"Genera un video di 5 secondi di una famiglia nel tuo interior design"},construction_stages:{name:"Fasi di costruzione",description:"Genera 2 video (8 secondi ciascuno) delle fasi di costruzione dalla stanza finita"}}},mO={common:{new:"Nuovo",pro:"Pro",popular:"Popolare",tokens:"token",token:"token",click:"Clicca",seconds:"Secondi",secondsShort:"Sec",seconds30:"30 secondi",input:"Input",sourceImage:"Immagine sorgente",angles6:"6 Angoli",angles4:"4 Angoli",options6:"6 Opzioni",input1:"1 Input",results2:"2 Risultati",floorPlan:"Piano",plan:"Piano",iso:"Iso",top:"Dall'alto",styleMatch:"StyleMatch",styleConsistency:"Coerenza di stile",sourceRoom:"Stanza sorgente",stylePresentation:"Presentazione stile",designDna:"Design DNA",items10_15:"10-15 elementi",roomImage:"Immagine stanza",inspirationBoard:"Board ispirazione",kitchenBoard:"KitchenBoard",materials6:"6 Materiali",originalKitchen:"Cucina originale",variations6:"6 Varianti",board4Angles:"Board 4 angoli",sketch:"Schizzo",photorealistic:"Fotorealistico",sketchToReal:"Schizzo a reale",geometryPreservation:"Preservazione geometria",supportsSketchesFrom:"Supporta schizzi da:",dayToNightPresentation:"Presentazione giorno-notte",times6:"6 Orari",shoppingBoard:"Board acquisti",pricesAndLinks:"Prezzi e link",story:"Story",post:"Post",socialReady:"Pronto per i social",inputImages:"Immagini input",moodboard:"Moodboard",uploadImage:"Carica immagine",technicalSheet:"Scheda tecnica",result:"Risultato",technicalDrawings:"Disegni tecnici",before:"Prima",after:"Dopo",demoComingSoon:"Demo in arrivo",demoSoon:"Demo in arrivo",familyOf4:"Famiglia di 4",seconds5:"5 secondi",landscape169:"16:9 orizzontale",kitchenImage:"Immagine cucina",drawing:"Disegno",mmDimensions:"Dimensioni in mm",upTo10Images:"Fino a 10 immagini",minutes6:"fino a 6 min",workflowUses4Images2Videos:"Questo workflow usa 4 generazioni immagine e 2 video e può richiedere fino a 6 min",exampleResult:"Risultato di esempio",anyRoomType:"Qualsiasi tipo di stanza",designReveal:"Rivelazione design",creationTime:"Tempo di creazione: ~2 min",creationTime3min:"Tempo di creazione: ~3 min",videoUnavailable:"Video non disponibile",unavailable:"Non disponibile"},exterior_angles_set:{titleBefore:"Ottieni ",titleHighlight:"6 angoli camera",titleAfter:" per il tuo edificio",subtitle:"Carica una foto dell'edificio e ottieni 6 angoli camera professionali - drone, bassa angolazione, crepuscolo e altro.",subtitleShort:"Carica una foto dell'edificio e ottieni 6 angoli professionali."},photo_360:{titleBefore:"Ottieni ",titleHighlight:"6 angoli professionali",titleAfter:" per il tuo spazio",subtitle:"Carica una foto del tuo spazio e ottieni 6 angoli camera professionali - macro, ampio, drammatico e altro.",subtitleShort:"Carica una foto e ottieni 6 angoli professionali."},flooring_check:{titleBefore:"Ottieni ",titleHighlight:"6 varianti pavimenti",titleAfter:" per la tua stanza",titleHighlightMobile:"6 opzioni pavimenti",subtitle:"Carica una foto della stanza e ottieni 6 proposte di pavimentazione - da porcellana a legno, cemento a terrazzo.",subtitleShort:"Carica una foto e ottieni 6 proposte di pavimentazione per la tua stanza."},stylematch:{titleBefore:"Uno stile, ",titleHighlight:"stanze infinite",titleAfter:"",subtitle:"Carica una foto di una stanza e ottieni una presentazione con altre stanze nello stesso stile e materiali - coerenza di design istantanea."},designdna:{titleBefore:"Estrai ",titleHighlight:"Design DNA",titleAfter:" dall'immagine",subtitle:"Carica un'immagine di una stanza e ottieni una board ispirazione con 10-15 elementi di arredo simili - con link d'acquisto."},kitchenboard:{titleBefore:"Una cucina, ",titleHighlight:"6 opzioni materiali",t
596itleAfter:"",subtitle:"Carica una foto della cucina e ottieni una presentazione con 6 varianti di materiali - pietra, legno, marmo e altro."},plan_to_3d:{titleBefore:"Piano in ",titleHighlight:"3D",titleAfter:"",subtitle:"Carica una pianta – ottieni 2 immagini: piano isometrico e vista dall'alto.",subtitleShort:"Carica una pianta – ottieni 2 immagini: isometrica e dall'alto."},sketch_to_real:{titleBefore:"Da schizzo ",titleHighlight:"a fotorealistico",titleAfter:"",subtitle:"Carica uno schizzo di interior design e ottieni un'immagine fotorealistica in secondi. Il sistema preserva geometria, proporzioni e materiali."},x4_angle_board:{titleBefore:"Genera ",titleHighlight:"board 4 angoli",titleAfter:" da un'immagine",titleBeforeMobile:"Crea ",subtitle:"Carica un render di una stanza e ottieni una board professionale con 4 angoli camera - perfetta per presentazioni clienti.",subtitleShort:"Carica un render e ottieni una board con 4 angoli camera."},day_to_night:{titleBefore:"Genera presentazione ",titleHighlight:"Giorno-notte",titleAfter:"",subtitle:"Carica un render di una stanza e ottieni una presentazione con 6 immagini a orari diversi - dall'alba alla notte."},shop_the_look:{titleHighlight:"Board acquisti",subtitle:"Ottieni un elenco acquisti completo con prezzi e link per ogni elemento e mobile nell'immagine.",pricesAndLinksLabel:"Prezzi e link"},architect_thoughts:{titleHighlight:"Pensieri dell'architetto",subtitle:"Trasforma il tuo render in una board presentazione architettonica seppia – perfetta per i social."},architectural_illustrator:{titleHighlight:"Illustratore Architettonico",subtitle:"Trasforma una foto reale in un raffinato pannello architettonico in bianco e nero – linee tecniche, dettagli costruttivi e legenda dei materiali."},moodboard:{titleHighlight:"Moodboard",inputLabel:"Immagini input",subtitle:"Crea un moodboard professionale da fino a 10 immagini con sfondo crema caldo."},kitchen_technical_drawing:{titleBefore:"Disegno ",titleHighlight:"tecnico",titleAfter:" per la tua cucina",subtitle:"Carica un'immagine della cucina e ottieni una scheda di disegno tecnico professionale con dimensioni in mm.",inputLabel:"Immagine cucina",outputLabel:"Scheda tecnica"},room_timelapse:{titleBefore:"Trasforma la tua stanza in un ",titleHighlight:"timelapse di design",subtitle:"Guarda uno spazio vuoto prendere vita con mobili, colori e design. Perfetto per ogni spazio!"},project_timelapse:{titleBefore:"Trasforma il tuo edificio in un ",titleHighlight:"timelapse di costruzione",subtitle:"Guarda un edificio nascere dal terreno. Perfetto per visualizzazioni architettoniche!"},viral_video:{titleBefore:"Trasforma la tua immagine in un ",titleHighlight:"video virale",subtitle:"Crea un video di rotazione 360° di 5 secondi per i social (9:16 verticale)."},family_home_video:{titleBefore:"Trasforma la tua immagine in un ",titleHighlight:"video famiglia in casa",titleHighlightMobile:"Video famiglia",subtitle:"Crea un video di 5 secondi di una famiglia di 4 nel tuo interior design.",subtitleShort:"Crea un video di una famiglia di 4 nella tua casa con attività quotidiane naturali.",before:"Prima",after:"Dopo",creationTime:"Tempo di creazione: ~3 min"},construction_stages:{titlePart1:"2 × 8 secondi",titleHighlight:"Timelapse costruzione",titleHighlightMobile:"Timelapse",subtitle:"L'AI analizza la stanza e crea 2 fasi di costruzione: cemento grezzo e finito vuoto. 2 video di 8 secondi - processo di costruzione e arredamento!",subtitleShort:"L'AI crea 2 fasi di costruzione e 2 video (8 sec ciascuno) - costruzione e arredamento!",workflowNote:"Questo workflow usa 2 generazioni immagine e 2 video e può richiedere fino a 6 min",construction:"Costruzione",furnishing:"Arredamento",interiorRooms:"Stanze interne",seconds2x8:"2 × 8 secondi",seconds2x8short:"2 × 8 sec",stages3:"2 fasi + originale",stages3short:"2 fasi"},seed_explorer:{titleHighlight:"Set di viste",subtitle:"Inserisci un'idea e ottienila da 6 viste diverse - stesso spazio, angoli camera diversi.",subtitleShort:"Inserisci un'idea e ottienila da 6 viste diverse.",views6:"6 viste",seconds30_60:"30-60 secondi"}},pO={image:"Immagine",video:"Video","3d":"3D"},hO={myBoardspaces:"Le mie board",showLess:"Mostra meno",seeAll:"Vedi tutte"}
596,gO={agentSuccess:tO,gptWorkspace:aO,thinkingWords:iO,menu:oO,tooltips:rO,shareModal:nO,painting:sO,settings:lO,materialReferences:cO,dropZone:dO,workflows:uO,workflowLanding:mO,agentCategories:pO,galleries:hO},fO={title1:"$100 per render?",title2:"O 10¢ con l'AI?",subtitle:"Basta pagare studi <strong>$100-800 per render</strong> e aspettare <strong>2-3 giorni</strong> per ogni revisione",tokensOffer:"50 prove gratuite • Nessuna carta di credito",limitedOffer:"Inizia a creare ora"},bO={title1:"Il Tuo Studio di Design,",title2:"Reinventato con",titleHighlight:"AI",subtitle:"Per interior designer che realizzano. Ogni render. Ogni moodboard. Un solo canvas.",trustBadge:"Gratis per iniziare. Nessuna carta di credito.",getStarted:"Inizia ora",freeTries:"50 prove gratuite",limitedTime:"Tempo limitato",timeLeft:"Rimangono:",ended:"Terminato"},vO={title:"Benvenuti designer!",p1:"Stiamo costruendo una community creativa—quindi tutti quelli che condividono i loro progetti ricevono token gratuiti!",p2:"Unisciti presto per un utilizzo gratuito illimitato—nessuna carta di credito necessaria.",p3:"Vogliamo vedere le tue idee: pubblica immagini, video o modelli 3D relativi al design d'interni/esterni.",p4:"Puoi scegliere di condividere con il tuo nome o in modo anonimo.",p5:"Questo per ispirarci a vicenda e aiutare tutti a crescere."},yO={styleMatch:{title:"StyleMatch",description:"Creerò 6-8 stanze fotorealistiche che rispecchiano perfettamente lo stile, i colori e i materiali della tua immagine—tutto raccolto in una presentazione per te.",tooltip:"Genera coerenza di design multi-ambiente"},designDNA:{title:"DesignDNA",description:"Studierò la tua estetica e selezionerò 10-15 mobili e complementi d'arredo—completi di palette colori—che si allineano perfettamente al tuo stile distintivo.",tooltip:"Estrai il DNA del design e gli articoli curati"},kitchenBoard:{title:"KitchenBoard",description:"Genererò sei variazioni uniche di materiali e palette colori per la tua cucina, tutte ispirate alle ultime tendenze Milano 2024-2025.",tooltip:"Genera 6 variazioni di materiali e colori per cucina"}},xO={designersSaved:"250+ designer hanno risparmiato $450K il mese scorso",freeForever:"Gratis per sempre"},wO={before:"Prima",after:"Dopo"},kO="Scopri come funziona",_O={headline:"Presentazione Completa per il Cliente: $0.75",description:"SketchUp → Render → Materiali → StyleMatch → Video con audio. Workflow completo in 3 minuti. Studio di rendering: $500+ + settimana di attesa.",comingSoon:"Video in arrivo",duration:"3 minuti",cost:"$0.75 totale",output:"Video + render",costBreakdown:{title:"Questo workflow completo è costato <strong>$0.75</strong> e ha richiesto 3 minuti:",sketch:"Sketch → Render (5¢)",material:"Cambio materiale (10¢)",styleMatch:"Presentazione StyleMatch (10¢)",video:"Video con audio (50¢)",studio:"Studio di rendering per lo stesso pacchetto: <strong>$500-800 + 1 settimana.</strong>"}},SO={title:"Tutti i Migliori Modelli AI. Un Solo Stile."},CO={badge:"Il Nostro Podcast",title:"AI nel Design & Architettura 🏚️",subtitle:"Episodio 150 con Chaim Legziel e Tal Benish — AI Pashtut Podcast",iframeTitle:"AI Pashtut Podcast - Episodio 150",watchOnYouTube:"Guarda su YouTube"},TO={title:"250+ Designer Hanno Sostituito V-Ray con l'AI",subtitle:"Hanno risparmiato <strong>$450K</strong> il mese scorso. Ogni immagine qui sotto è costata <strong>$0.05</strong> e ha richiesto meno di 10 secondi.",stats:{designers:"250+ designer",saved:"$450K risparmiati",cheaper:"95% più economico degli studi"}},jO="Prima (schizzo)",NO="Opzione",PO="Risultati reali dal video sopra",AO="Comandi vocali in arrivo",EO={title:"Esplora la Nostra Librer
596ia di Materiali",subtitle:"Sfoglia la nostra collezione curata di materiali e visualizza come trasformano i tuoi progetti con il rendering AI.",items:{brownLeather:"Pelle Marrone",woodWallPanel:"Pannello Parete in Legno",oxidizeFloor:"Pavimento Ossidato",warmTaupeBoucle:"Bouclé Taupe Caldo"},featuresList:{materialLibrary:{title:"Libreria Materiali",description:"Centinaia di materiali reali pronti da applicare"},aiTransformation:{title:"Trasformazione AI",description:"Visualizzazione istantanea con rendering AI"},realTimePreview:{title:"Anteprima in Tempo Reale",description:"Vedi i cambiamenti istantaneamente mentre progetti"}}},IO={title:'Scegli il <span class="text-[#E60023] dark:text-[#FF6B6B]">Tuo</span> Piano',subtitle:"Inizia gratis con 5 modifiche AI, poi passa a un piano per sbloccare funzioni illimitate",free:{name:"Gratis",description:"Perfetto per iniziare",features:{unlimitedBoards:"Board illimitate",signupTokens:"5 modifiche gratuite",earnTokens:"Guadagna token guardando video"}},perMonth:"/mese",tokensPerMonth:"token/mese",everythingInFree:"Tutto del piano Gratis",priorityProcessing:"Elaborazione AI prioritaria",unlimitedCollaborators:"Collaboratori illimitati",mostPopular:"Più popolare",whatCanIDo:"Cosa posso fare con {{tokens}} token?",getStarted:"Inizia"}
596,DO={title:"Trasforma Più Immagini in Un Design Coerente",subtitle:"Guarda come combiniamo perfettamente 3 immagini diverse in un soggiorno armonioso con coerenza di design AI"},RO={title:"Il Tuo Canvas Infinito, Spazio Senza Limiti",subtitle:"Un canvas illimitato dove le tue idee non hanno confini. Crea, organizza e collabora su spazi di design infiniti senza limiti.",items:{endlessSpace:{title:"Spazio Infinito",description:"Nessun confine, nessun limite. Il tuo spazio si espande infinitamente mentre aggiungi idee, immagini e progetti."},unlimitedOrganization:{title:"Organizzazione Illimitata",description:"Crea board e progetti illimitati. Organizza tutto, dall'ispirazione ai progetti finali, in un unico spazio di lavoro infinito."},seamlessCollaboration:{title:"Collaborazione Fluida",description:"Condividi il tuo canvas infinito con i membri del team. Collabora in tempo reale su spazi di design infiniti."},everythingInOnePlace:{title:"Tutto in Un Solo Posto",description:"Immagini, video, materiali, generazioni AI - tutto su un unico canvas infinito che cresce con la tua creatività."},pinterestIntegration:{title:"Integrazione Pinterest",description:"Importa i pin direttamente nel tuo canvas infinito. Gratis per sempre - nessun token richiesto. Porta facilmente l'ispirazione da Pinterest nel tuo spazio di lavoro infinito."}}},LO={uploadImage:"Immagine caricata",beforeImage:"Immagine prima",finalResult:"Risultato finale",demoComingSoon:"Demo in arrivo",everythingAutomatic:"Tutto automatico",oneClick:"Un solo click",workflowsCount:"{{count}} Workflow",title1:"Carica un'immagine, premi play,",title2:"il workflow fa tutto automaticamente",description:"{{total}} workflow disponibili - {{videos}} video e {{images}} immagini. Gli utenti lo adorano perché non servono prompt, non serve scrivere nulla - basta trascinare un'immagine nel workflow, premere play e ottenere il risultato.",uploadImageLabel:"Carica immagine",everythingAutomaticDesc:"Basta trascinare un'immagine e il lavoro inizia",oneClickDesc:"Premi play e il risultato è pronto in pochi minuti",workflowsDesc:"{{videos}} video e {{images}} immagini - tutto in un unico posto"},OO={title:"Boardspace Academy",watchAll:"Guarda tutte le lezioni",lessonsAvailable:"{{count}} lezioni disponibili • Altre in arrivo",badge:"Boardspace Academy",headline:"Impara a Progettare come un Professionista",description:"Video tutorial brevi e mirati per aiutarti a creare design straordinari in pochi minuti"},MO={tagline:"Il canvas infinito per professionisti e appassionati di interior design. Dove l'ispirazione diventa realtà.",newsletter:{title:"Ricevi consigli di design e aggiornamenti",placeholder:"[email protected]",subscribe:"Iscriviti"},sections:{product:"Prodotto",resources:"Risorse",company:"Azienda"},links:{features:"Funzionalità",pricing:"Prezzi",workflows:"Workflow",creators:"Creatori",roadmap:"Roadmap",documentation:"Documentazione",academy:"Academy",blog:"Blog",promptGuide:"Guida Prompt Nano Banana",videoPromptGuide:"Guida Prompt Video Kling O1",gptImagePromptGuide:"Guida Prompt GPT-image-1.5",veoPromptGuide:"Guida Prompt Video Veo 3.1",soraPromptGuide:"Guida Prompt Video Sora 2",grokPromptGuide:"Guida Prompt Video Grok",floorPlanTo3D:"Guida Piano a 3D",ourStory:"La Nostra Storia",careers:"Carriere",privacy:"Privacy",terms:"Termini",buyerTerms:"Condizioni acquirenti",creatorAgreement:"Accordo creator",accessibility:"Accessibilità"},copyright:"© 2025 BoardSpace.ai — Costruito con passione per gli amanti del design",madeWith:"Fatto con ❤️ per la community dell'interior design"},zO={hero:fO,floatingHero:bO,welcome:vO,features:yO,credibility:xO,beforeAfter:wO,scrollIndicator:kO,video:_O,aiModels:SO,podcast:CO,gallery:TO,beforeSketch:jO,option:NO,actualResults:PO,voiceComingSoon:AO,materials:EO,pricing:IO,aiAgent:DO,featuresSection:RO,workflows:LO,academy:OO,footer:MO},BO={backToDashboard:"Torna alla Dashboard",getStarted:"Inizia",materials:"Materiali",materialsDesc:"Archivio di riferimento materiali",pricing:"Prezzi",pricingDesc:"Piani semplici e trasparenti",aiAgent:"Agente AI",aiAgentDesc:"Collaboratori AI specializzati",features:"Funzionalità",featuresDesc:"Toolkit di design tutto-in-uno"},FO={tryFree:"Prova Gratis - Nessuna Carta",tryFreeShort:"Prova Gratis - No Carta",getStartedFree:"Inizia Gratis",learnMore:"Scopri di più",gotIt:"Capito",cancel:"Annulla",copyLink:"Copia Link",copied:"Copiato!",openInBrowser:"Apri nel Browser",useEmailInstead:"Usa l'Email",toggle:"Attiva/Disattiva"},$O={switchToLight:"Passa alla modalità chiara",switchToDark:"Passa alla modalità scura"}
596,VO={interiorVibingPlatform:"Piattaforma di ispirazione per l'interior design"},UO={title:"Token Insufficienti",description:"Non hai abbastanza token per usare questa funzionalità.",feature:"Funzionalità:",requiredTokens:"Token richiesti:",yourBalance:"Il tuo saldo:",tokensNeeded:"Token necessari:",cta:"Acquista altri token per continuare a usare le funzionalità AI e sfruttare al massimo il tuo flusso di lavoro creativo.",buyTokens:"Acquista Token"},qO={eyebrow:"Aggiornamento di sistema",title:"È disponibile una nuova versione di Boardspace",description:"Abbiamo migliorato il sistema. Aggiorna ora per continuare con la versione più stabile.",note:"Termina le operazioni in corso prima di aggiornare. Tornerai esattamente a questa schermata.",updateNow:"Aggiorna ora",later:"Più tardi",progress:{title:"Aggiornamento di Boardspace",saving:"Attendo il salvataggio del lavoro…",preparing:"Preparo la nuova versione…",loading:"Carico i componenti di sistema…",activating:"Avvio la nuova versione…",complete:"Aggiornamento completato",completeTitle:"La nuova versione è pronta"},error:{eyebrow:"Aggiornamento in pausa",title:"Non è stato possibile completare l'aggiornamento",status:"Azione richiesta",description:"Il tuo lavoro è ancora al suo posto. Riprova o continua temporaneamente con la versione attuale.",code:"Codice errore: {{code}}",retry:"Riprova",continue:"Continua con la versione attuale"}},GO={nav:BO,buttons:FO,theme:$O,footer:VO,insufficientTokens:UO,appUpdate:qO},WO={title:"Crea un Nuovo Account",subtitle:"Unisciti a Boardspace e inizia a creare",tab:"Registrati",fullName:"Nome Completo",fullNamePlaceholder:"Inserisci il tuo nome completo",createPassword:"Crea una password sicura",createAccount:"Crea Account",creatingAccount:"Creazione account in corso...",byContinuing:"Continuando, accetti la nostra",privacyPolicy:"Informativa sulla Privacy",and:"e",termsOfService:"Termini di Servizio",googleOneClick:"Registrati con Google in un clic",orSignUpWithEmail:"Oppure registrati con email"},HO={title:"Bentornato",subtitle:"Accedi al tuo account Boardspace",tab:"Accedi",enterPassword:"Inserisci la tua password",signIn:"Accedi",signingIn:"Accesso in corso...",forgotPassword:"Password dimenticata?",resetPassword:"Reimposta Password",sendResetLink:"Invia Link di Reimpostazione",sendingResetLink:"Invio in corso...",magicLink:"Accedi con Magic Link",sendMagicLink:"Invia Magic Link",sendingMagicLink:"Invio in corso...",magicLinkSent:"Magic link inviato! Controlla la tua email.",resetLinkSent:"Link per reimpostare la password inviato! Controlla la tua email.",newPassword:"Nuova Password",confirmPassword:"Conferma Password",updatePassword:"Aggiorna Password",updatingPassword:"Aggiornamento in corso...",passwordUpdated:"Password aggiornata con successo!",enterNewPassword:"Inserisci la tua nuova password",confirmNewPassword:"Conferma la tua nuova password",passwordsDoNotMatch:"Le password non corrispondono",orSignInWith:"Oppure accedi con",magicLinkHint:"Inserisci l'email sopra per il magic link"},KO={email:"Email",emailPlaceholder:"Inserisci il tuo indirizzo email",password:"Password",orContinueWith:"Oppure continua con",continueWithGoogle:"Continua con Google",continueWithFacebook:"Continua con Facebook"},YO={title:"Controlla la tua email",message:"Abbiamo inviato un link di conferma a",instructions:"Clicca il link nell'email per verificare il tuo account e iniziare.",checkSpam:"Non lo hai ricevuto? Controlla la cartella spam."},QO={quickSignIn:"Accesso Rapido",subtitle:"Scegli il metodo di accesso preferito",continueWithFacebook:"Continua con Facebook",facebookRecommended:"Consigliato",dividerOr:"oppure",emailLabel:"Email",emailPlaceholder:"[email protected]",sendMagicLinkCta:"Inviami un link di accesso",sendingMagicLink:"Invio in corso...",magicLinkSent:"Link inviato! Controlla la tua email",useEmailPassword:"Accedi con email e password",needGoogleSafari:"Hai bisogno di Google? Apri in Safari",showSafariSteps:"Mostra istruzioni",title:"Browser Richiesto",titleIOS:"Apri in Safari per Continuare",titleAndroid:"Apri in Chrome per Continuare",titleGeneric:"Apertura nel Browser Richiesta",messageIOS:"L'accesso con Google non funziona nel browser di {{appName}} per motivi di sicurezza.",messageAndroid:"L'accesso con Google non funziona nel browser di {{appName}} per motivi di sicurezza.",messageGeneric:"Apri questa pagina in Safari o Chrome per accedere con Google.",stepIOS1:"Tocca il pulsante di condivisione (□↑) in basso",stepIOS2:'Seleziona "Apri in Safari"',stepIOS3:"Torna qui e riprova ad accedere",stepAndroid1:"Tocca il menu (⋮) in alto a destra",stepAndroid2:'Seleziona "Apri in Chrome" o "Apri nel Browser"',stepAndroid3:"Torna qui e riprova ad accedere",stepGeneric1:"Copia il link qui sotto",stepGeneric2:"Apri Safari o Chrome",stepGeneric3:"Incolla il link e riprova",ctaIOS:"Copia Link per Safari",ctaAndroid:"Copia Link per Chrome",ctaGeneric:"Copia Link",toSignInWithGoogle:"Per accedere con Google:",orSignWithEmail:"Oppure accedi con email",emailAlternative:"Usa la tua email e password qui sotto come alternativa.",cancel:"Annulla",copyLink:"Copia Link",copied:"Copiato!",openInBrowser:"Apri nel Browser",useEmailInstead:"Usa l'Email"},JO={enterFullName:"Inserisci il tuo nome completo",agreeToTerms:"Accetta l'Informativa sulla Privacy e i Termini di Servizio",verifyEmail:"Verifica prima la tua email",resendEmail:"Reinvia Email",confirmationSe
596nt:"Email di conferma inviata! Controlla la tua casella di posta.",confirmationSentDesc:"Controlla la cartella spam se non la vedi.",failedResend:"Invio dell'email di conferma fallito. Riprova.",googleSignInFailed:"Accesso con Google non riuscito",linkCopied:"Link copiato! Incollalo in Safari o Chrome",failedCopyLink:"Copia del link non riuscita"},XO={signUp:WO,signIn:HO,common:KO,emailConfirmation:YO,webViewWarning:QO,errors:JO},ZO={title:"Ciao {{name}}, benvenuto!",subtitle:"Aiutaci a personalizzare la tua esperienza con 2 brevi domande"},eM={title:"Cosa ti descrive meglio?",options:{interior_designer:"Sono un Interior Designer",interior_designer_desc:"Progetto spazi professionalmente",design_lover:"Sono un Appassionato di Interior Design",design_lover_desc:"Amo esplorare idee di design"}},tM={title:"Come hai scoperto Boardspace?",options:{whatsapp_group:"Gruppo WhatsApp",facebook_community:"Community Facebook",youtube:"YouTube",instagram:"Instagram",google_ads:"Google Ads",friend_referral:"Me lo ha detto un amico",other:"Altro"},placeholders:{whatsapp_group:"Inserisci il nome del gruppo WhatsApp",facebook_community:"Inserisci il nome della community Facebook",other:"Specifica"}},aM={next:"Avanti",back:"Indietro",finish:"Inizia a Creare"},iM={step:"Passo {{current}} di {{total}}"},oM={selectOption:"Seleziona un'opzione per continuare",enterDetail:"Inserisci i dettagli",saveFailed:"Salvataggio non riuscito. Riprova."},rM={welcome:ZO,step1:eM,step2:tM,navigation:aM,progress:iM,errors:oM},nM="Fatturazione e Token",sM="Gestisci il tuo abbonamento e acquista token",lM={title:"Abbonamento {{plan}} Attivo",cancellingTitle:"Abbonamento {{plan}} — Disdetta in corso",memberSince:"Membro dal:",nextPayment:"Prossimo pagamento:",accessUntil:"Accesso fino al:",lastPayment:"Ultimo pagamento:",noBillingNotice:"Non ti verrà addebitato nulla in futuro.",manage:"Gestisci abbonamento",cancel:"Disdici abbonamento",resubscribe:"Riabbonati",cancelConfirmTitle:"Disdire l'abbonamento?",cancelConfirmDescription:"Il tuo abbonamento terminerà alla fine del periodo di fatturazione corrente. Manterrai l'accesso fino ad allora.",cancelConfirmNo:"Non disdire",cancelConfirmYes:"Sì, disdici abbonamento",pausedT
596itle:"Abbonamento {{plan}} — In pausa",pause:"Metti in pausa",resume:"Riattiva abbonamento",resumeFirstNotice:"Riattiva prima l'abbonamento, poi potrai cambiare piano.",frozenNotice:"Il tuo abbonamento è in pausa — non ti verrà addebitato nulla. I token che ti restano sono ancora tuoi da usare.",frozenCardSaved:"I tuoi dati di pagamento sono salvati — riattiva con un clic.",pauseConfirmTitle:"Mettere in pausa l'abbonamento?",pauseConfirmDescription:"La fatturazione si ferma e non paghi nulla, ma il tuo abbonamento resta intatto e puoi riprendere quando vuoi.",pauseConfirmBullet1:"Mantieni l'accesso completo fino alla fine del periodo già pagato ({{date}})",pauseConfirmBullet1NoDate:"Mantieni l'accesso completo fino alla fine del periodo già pagato",pauseConfirmBullet2:"I token che ti restano vengono conservati e restano utilizzabili durante la pausa",pauseConfirmBullet3:"Dopodiché l'account si comporta come un account gratuito (BoardStyler limitato, nessuna esportazione)",pauseConfirmBullet4:"La tua carta resta salvata — riattiva con un clic, senza reinserire i dati",pauseConfirmNo:"No, mantieni attivo",pauseConfirmYes:"Sì, metti in pausa",pauseInsteadHint:"Non vuoi andartene del tutto? Puoi semplicemente mettere in pausa l'abbonamento e tornare quando vuoi.",pauseInstead:"Metti in pausa invece",resumeConfirmTitle:"Riattivare l'abbonamento?",resumeConfirmDescription:"La tua carta salvata verrà addebitata ora e i token mensili verranno aggiunti subito.",resumeConfirmNo:"Non ancora",resumeConfirmYes:"Sì, riattiva ora",pausedToastTitle:"Abbonamento in pausa",pausedToastDescription:"Non ti verrà più addebitato nulla. Riattiva quando vuoi dalla pagina di fatturazione.",resumedToastTitle:"Abbonamento riattivato! 🎉",resumedToastDescription:"I tuoi token mensili arriveranno sul tuo saldo tra un momento.",pauseErrors:{NOT_SUBSCRIBED:"Nessun abbonamento attivo da mettere in pausa.",CANCEL_PENDING:"Questo abbonamento è già in fase di disdetta. Annulla prima la disdetta, poi potrai metterlo in pausa.",NOT_PAUSED:"Questo abbonamento non è in pausa.",NO_PAYMENT_METHOD:"Nessun metodo di pagamento salvato. Contatta l'assistenza e ti aiuteremo a riattivare.",UNAVAILABLE:"Il servizio di pausa non è al momento disponibile. Nessuna modifica è stata applicata al tuo abbonamento e non ti è stato addebitato nulla. Riprova tra qualche minuto o contatta l'assistenza e ce ne occuperemo noi.",GENERIC:"Qualcosa è andato storto. Riprova o contatta l'assistenza."}},cM={info:"Puoi passare a un piano superiore o inferiore in qualsiasi momento. La fatturazione verrà adeguata di conseguenza e i token non utilizzati verranno trasferiti."},dM={title:"Piani Token Mensili",badges:{allFeatures:"Tutte le Funzionalità Illimitate",tokensNeverExpire:"I Token Non Scadono Mai",buyMore:"Acquista di Più = Prezzo Migliore"},description:"Come un parco divertimenti! Tutti i piani danno accesso a ogni funzionalità. L'unica differenza è il prezzo dei token — acquista più token mensili per un maggiore valore."},uM={title:"Pacchetti Token una Tantum",description:"Hai esaurito i token a metà mese? Acquista token una volta e usali per sempre. Stesse funzionalità, stesso accesso, paghi solo ciò che consumi.",subscribersOnly:"*Acquisto una tantum riservato agli abbonati!"},mM={currentPlan:"Piano Attuale",mostPopular:"Più Popolare",bestValue:"Miglior Valore",subscribeNow:"Abbonati Ora",switchToPlan:"Passa a Questo Piano",processing:"Elaborazione...",perMonth:"/mese",tokensPerMonth:"Token/mese",perToken:"per token",whatYouCanDo:"Cosa puoi fare con {{tokens}} token?",features:{allFeatures:"Accesso a TUTTE le Funzionalità",rollover:"I Token si Trasferiscono Mensilmente",cancelAnytime:"Disdici in Qualsiasi Momento"},usage:{imageEditing:"Generazione e modifica di immagini",complexEditing:"Modifica avanzata e remix di immagini",videosWithSound:"Video con audio",interiorPresentations:"Presentazioni di interni",models3d:"Modelli 3D",upscale:"Upscale: Gratuito, illimitato",removeBg:"Rimozione sfondo: Gratuita, illimitata"}},pM={title:"Sistema di Token Flessibile",description:"Tutti i token si trasferiscono e non scadono mai. Disdici il tuo abbonamento in qualsiasi momento e conserva tutti i token non utilizzati. Cambia piano senza perdere nulla. Nessun costo nascosto, nessuna sorpresa."},hM={title:"Hai un coupon?",placeholder:"Inserisci il codice coupon",apply:"Applica",applying:"Verifica in corso...",applied:"Coupon Applicato!",discount:"{{discount}}% di sconto",save:"Risparmia ${{amount}} il primo mese",firstMonth:"primo mese",thenRegular:"poi ${{price}}/mese",invalid:"Codice coupon non valido o scaduto",newPrice:"Nuovo prezzo:"},gM="Pagamenti sicuri gestiti da Stripe",fM={title:"Già Abbonato",description:"Hai già un abbonamento {{plan}} attivo.{{nextPayment}}"},bM="Hai attualmente un piano {{current}}. Vuoi passare a {{new}}? Questo sostituirà il tuo abbonamento attuale.",vM={upgradeTitle:"Passa a {{plan}}",upgradeDescription:"Verrai addebitato di ${{price}} ora e il piano si aggiorna immediatamente.",upgradeBullet1:"Addebito immediato di ${{price}} (prezzo pieno, i coupon non si applicano)",upgradeBullet2:"{{tokens}} token aggiunti subito al tuo saldo attuale",upgradeBullet3:"Prossimo addebito tra esattamente un mese — il vecchio abbonamento viene chiuso, nessun doppio addebito",upgradeConfirm:"Sì, passa a {{plan}}",downgradeTitle:"Passa a {{plan}}
596 a fine periodo",downgradeDescription:"Il piano passerà a {{plan}} alla fine del periodo corrente ({{date}}). Fino ad allora tutto resta invariato.",downgradeBullet1:"Nessun addebito ora — mantieni il piano attuale fino al {{date}}",downgradeBullet2:"Dal {{date}}: ${{price}}/mese con {{tokens}} token a ogni rinnovo",downgradeBullet3:"Puoi annullare il downgrade in qualsiasi momento prima di allora",downgradeConfirm:"Sì, passa a {{plan}} a fine periodo",upgradeSuccessTitle:"Piano aggiornato! 🎉",upgradeSuccessDescription:"Il tuo piano è ora {{plan}}. {{tokens}} token saranno aggiunti al tuo saldo a breve.",downgradeSuccessTitle:"Downgrade programmato",downgradeSuccessDescription:"Il tuo piano passerà a {{plan}} il {{date}}.",cancelDowngradeSuccess:"Il downgrade programmato è stato annullato — l'abbonamento continua invariato.",pendingDowngrade:"Passaggio programmato a {{plan}} il {{date}}",cancelDowngrade:"Annulla downgrade",errorTitle:"Cambio piano non riuscito",errors:{NO_PAYMENT_METHOD:"Nessun metodo di pagamento salvato. Contatta il supporto e ti aiuteremo con l'upgrade.",PAYMENT_FAILED:"L'addebito non è riuscito. Controlla il metodo di pagamento e riprova.",CARD_AUTH_REQUIRED:"La carta richiede una verifica aggiuntiva. Contatta il supporto e completeremo l'upgrade insieme.",MULTIPLE_SUBSCRIPTIONS:"Sono stati trovati più abbonamenti attivi sul tuo account. Contatta il supporto e lo risolveremo subito.",NOT_SUBSCRIBED:"Nessun abbonamento attivo trovato. Puoi abbonarti dalla pagina di fatturazione.",PAYMENT_ISSUE:"C'è un problema di pagamento sull'abbonamento attuale. Risolvilo prima di cambiare piano.",CANCEL_PENDING:"L'abbonamento è già impostato per essere annullato a fine periodo. Annulla prima la cancellazione per il downgrade.",DOWNGRADE_ALREADY_SCHEDULED:"Un downgrade è già programmato per questo abbonamento.",ALREADY_ON_PLAN:"Sei già su questo piano.",GENERIC:"Qualcosa è andato storto. Riprova o contatta il supporto."}},yM={verifying:"Verifica Pagamento...",pleaseWait:"Attendi mentre confermiamo il tuo pagamento",success:"Pagamento Riuscito!",tokensAdded:"I tuoi token sono stati aggiunti all'account",plan:"Piano",tokensAddedLabel:"Token Aggiunti",subscriptionActive:"Il tuo abbonamento è ora attivo! Riceverai {{tokens}} token ogni mese.",oneTimeComplete:"Il tuo acquisto di token una tantum è completato. I token non scadono mai!",goToDashboard:"Vai alla Dashboard",viewBilling:"Visualizza Fatturazione"},xM={invalidPayment:"Pagamento Non Valido",noSession:"Nessuna sessione di pagamento trovata. Reindirizzamento alle impostazioni.",successTitle:"Pagamento Riuscito! 🎉",successDescription:"{{tokens}} token sono stati aggiunti al tuo account.",verificationError:"Errore di Verifica",verificationFailed:"Impossibile verificare il pagamento. Contatta il supporto se i token non sono stati accreditati."},wM={title:nM,subtitle:sM,activeSubscription:lM,switchPlans:cM,monthlyPlans:dM,oneTime:uM,plan:mM,package:{tokens:"Token",buyOnce:"Acquista una Volta",features:{oneTime:"Pagamento unico",neverExpire:"I token non scadono mai",noSubscription:"Nessun abbonamento richiesto"}},flexible:pM,coupon:hM,secure:gM,alreadySubscribed:fM,confirmSwitch:bM,planChange:vM,paymentSuccess:yM,toasts:xM},kM={heading:"Carica un'immagine",body:"Clicca il pulsante più per caricare un'immagine oppure trascina un'immagine nella finestra della chat"},_M={heading:"Descrivi la tua richiesta",body:"Scrivi in linguaggio naturale e semplice le modifiche che vuoi apportare, oppure scegli un prompt pronto dalle scorciatoie qui sotto"},SM={heading:"Invia per creare",body:"Clicca qui e la magia ha inizio! L'AI creerà il tuo design in pochi secondi"},CM="Passo {{current}} di {{total}}",TM="Salta",jM="Avanti",NM="Fine",PM={step1:kM,step2:_M,step3:SM,progress:CM,skip:TM,next:jM,finish:NM},AM={title:"Commissiona Lavori AI Professionali",subtitle:"Creativi esperti che usano gli strumenti Boardspace per creare contenuti straordinari per te",filters:{all:"Tutti",video:"Video",render:"Render",moodboard:"Moodboard",floor_plan:"Planimetria"},noResults:"Nessun creativo trovato in questa categoria",fromPrice:"Da "},EM={all:"Tutti",render:"Render",video:"Video",moodboard:"Moodboard",floor_plan:"Planimetrie",general:"Generale",sketches:"Schizzi",images:"Immagini"},IM={verified:"Verificato",orders:"Ordini",rating:"Valutazione",tabs:{services:"Servizi",portfolio:"Portfolio",reviews:"Recensioni"},deliveryDays:"Giorni di consegna",revisions:"Revisioni",orderNow:"Ordina Ora",noReviews:"Ancora nessuna recensione",noPortfolio:"Ancora nessun elemento nel portfolio"},DM={title:"Ordine",brief:"Descrizione del progetto",briefPlaceholder:"Descrivi il tuo progetto nel dettaglio...",attachments:"Allegati",attachmentsHint:"Carica file pertinenti (immagini, documenti)",proceedToPayment:"Procedi al Pagamento",price:"Prezzo",delivery:"Consegna",days:"giorni",status:{pending_payment:"In Attesa di Pagamento",paid:"Pagato",in_progress:"In Corso",delivered:"Consegnato",revision_requested:"Revisione Richiesta",completed:"Completato",disputed:"In Disputa",cancelled:"Annullato",refunded:"Rimborsato"}
596,actions:{startWork:"Inizia Lavoro",deliver:"Consegna Lavoro",acceptDelivery:"Accetta Consegna",requestRevision:"Richiedi Revisione",cancel:"Annulla Ordine",leaveReview:"Lascia Recensione"},chat:{placeholder:"Scrivi un messaggio...",send:"Invia",systemMessage:"Messaggio di sistema"},success:{title:"Ordine inviato con successo!",subtitle:"Il creativo riceverà una notifica e inizierà a lavorare a breve",viewOrder:"Visualizza Ordine",backToCreators:"Torna ai Creativi"},deliverySection:{title:"Consegna",uploadDelivery:"Carica file di consegna",deliveryNote:"Nota di consegna",submitDelivery:"Invia Consegna"}},RM={title:"I Miei Messaggi",noMessages:"Ancora nessun messaggio",unread:"non letti"},LM={title:"Registrati come Creativo",subtitle:"Unisciti alla piattaforma e vendi i tuoi servizi AI",requireSubscription:"Per registrarti come creativo, devi passare a un piano a pagamento",upgrade:"Aggiorna Ora",form:{displayName:"Nome completo (privato)",displayNameHint:"Il tuo nome non sarà mostrato pubblicamente",nickname:"Nickname",nicknameHint:"Questo nickname verrà mostrato al posto del tuo nome reale",nicknamePlaceholder:"Scegli un nickname univoco (o lascia vuoto per generazione automatica)",bio:"Chi sei",bioPlaceholder:"Raccontaci di te e della tua esperienza (fino a 300 caratteri)",avatar:"Foto Profilo",portfolio:"Esempi di Lavoro",portfolioHint:"Carica fino a 6 immagini o video",submit:"Invia Candidatura",submitting:"Invio in corso..."},success:{title:"Candidatura ricevuta!",subtitle:"Ti risponderemo al più presto"}},OM={title:"Dashboard Creativo",stats:{activeOrders:"Ordini Attivi",completedOrders:"Ordini Completati",totalEarnings:"Guadagni (al netto della commissione)",avgRating:"Valutazione Media"}
596,services:{title:"I Miei Servizi",addNew:"Aggiungi Nuovo Servizio",edit:"Modifica",toggle:"Attiva/Disattiva"},serviceForm:{title:"Servizio",category:"Categoria",description:"Descrizione",price:"Prezzo ($)",deliveryDays:"Giorni di Consegna",revisions:"Numero di Revisioni",requirements:"Requisiti del Cliente",examples:"Esempi (fino a 4 file)",save:"Salva",cancel:"Annulla"}},MM={marketplace:AM,categories:EM,profile:IM,order:DM,messages:RM,register:LM,dashboard:OM},zM="Guida ai Prompt",BM="16 prompt esperti per sbloccare tutto il potenziale di Nano Banana Pro per la fotografia di interni ed esterni",FM="Cerca prompt...",$M="prompt",VM="Compila:",UM="Copia Prompt",qM="Copia",GM="Copiato!",WM="📋 Riferimento Rapido",HM="Proporzioni",KM="Scheda Tecnica Impostazioni Fotocamera",YM={title:"La Regola d'Oro",text:"Includi sempre la sezione CRITICA con la regola same_room quando modifichi immagini esistenti. Questo impedisce a Nano Banana Pro di generare una stanza completamente nuova invece di modificare l'immagine caricata."},QM={title:"Una Nota sull'IA",text:"Nano Banana Pro rappresenta il massimo dell'intelligenza artificiale per la generazione di immagini, ma come tutta la tecnologia IA i risultati possono variare. Abbiamo elaborato questi prompt per aiutarti a ottenere i migliori risultati possibili, riducendo al minimo gli errori comuni. La rivoluzione dell'IA nel design d'interni è appena iniziata: siamo impegnati a restare all'avanguardia con gli strumenti più precisi e affidabili disponibili. Resta sintonizzato per le novità."},JM={readyToCreate:"Pronto a Creare?",startNewProject:"Avvia un nuovo progetto con Nano Banana Pro e crea straordinari design d'interni.",signUpToTry:"Registrati per provare questi prompt con Nano Banana Pro e crea straordinari design d'interni.",tryNanoBananaPro:"Prova Nano Banana Pro",getStarted:"Inizia",creating:"Creazione in corso..."},XM={cameraAngles:"Angoli di Ripresa",shoppingBudget:"Shopping e Budget",styleLighting:"Stile e Illuminazione",technicalProfessional:"Tecnico e Professionale"},ZM={failedToCopy:"Copia non riuscita",failedToCreateProject:"Creazione del progetto non riuscita"},e6={"detail-bokeh":"Dettaglio con Bokeh","wide-establishing":"Ripresa Grandangolare d'Insieme","low-angle-drama":"Ripresa in Piconat a Basso Angolo","doorway-threshold":"Ripresa dalla Soglia della Porta","overhead-birds-eye":"Vista Dall'alto / Occhio d'Uccello","find-products":"Trova Prodotti dall'Immagine","budget-comparison":"Confronto Budget (2 Fasce)","side-by-side-budget-comparison":"Confronto Budget Affiancato con Dettagli Prodotto","mood-board-products":"Mood Board con Prodotti Reali","time-of-day":"Cambio Ora del Giorno","style-transfer":"Trasferimento di Stile","seasonal-styling":"Styling Stagionale","floor-plan-3d":"Planimetria in Visualizzazione 3D","material-closeup":"Primo Piano Materiale","before-after":"Divisione Prima/Dopo","presentation-board":"Tavola di Presentazione"},t6={"detail-bokeh":"Primo piano di un elemento specifico con bellissima sfocatura dello sfondo","wide-establishing":"Ripresa grandangolare che mostra l'intero spazio","low-angle-drama":"Ripresa dal basso per enfatizzare l'altezza e creare drammaticità","doorway-threshold":"Ripresa dalla soglia della porta - senso di scoperta","overhead-birds-eye":"Vista dall'alto che mostra la disposizione dei mobili","find-products":"Identificare i prodotti nell'immagine e trovare alternative reali acquistabili","budget-comparison":"La stessa stanza in due budget: fascia media vs premium","side-by-side-budget-comparison":"Crea un confronto dettagliato affiancato con callout numerati ed elenchi prezzi","mood-board-products":"Mood board professionale con prodotti reali e prezzi","time-of-day":"Cambia l'ora del giorno: mattina, ora d'oro, sera o notte","style-transfer":"Trasforma la stanza in uno stile di design diverso","seasonal-styling":"Decora la stanza per diverse stagioni o festività","floor-plan-3d":"Trasforma una planimetria 2D in una visualizzazione 3D degli interni","material-closeup":"Macro di un materiale o di una texture specifica","before-after":"Crea un confronto affiancato prima/d
596opo","presentation-board":"Tavola di presentazione professionale per clienti"},a6={highlight_element:"Cosa mettere in evidenza (la scala / il camino / il divano / il corpo illuminante)",position:"Da dove riprendere (dall'ingresso / dall'angolo / verso la finestra)",emphasize:"Cosa enfatizzare (altezza del soffitto / scala / lampadario / finestre a doppia altezza)",entry_point:"Punto di ingresso (porta principale / arco / apertura del corridoio)",focus_area:"Area di messa a fuoco (disposizione dei posti a sedere / tavolo da pranzo / styling del tavolino)",currency:"Valuta (EUR / USD / ILS)",none:"Nessun input richiesto - confronto automatico",board_title:"Titolo della tavola (CONCEPT SOGGIORNO / GET THIS LOOK / CLIENTE: Nome)",time_of_day:"Ora del giorno (morning / golden_hour / evening / night)",new_style:"Nuovo stile (Scandinavo / Mid-Century Modern / Industriale / Japandi / Mediterraneo / Art Deco / Minimalista / Bohémien / Tradizionale / Lusso Contemporaneo)",season:"Stagione (spring / summer / autumn / winter / christmas / hanukkah)",style:"Stile (Moderno Minimalista / Scandinavo / Lusso Contemporaneo / Industriale) e Visuale (perspective / axonometric / eye-level walkthrough)",material:"Materiale (pavimento in marmo / impiallacciatura in rovere / tappezzeria in velluto / parete in cemento / ferramenta in ottone / terrazzo / pelle / tende in lino)",change_description:"Cosa modificare (ristrutturare in stile moderno / cambiare la palette cromatica in toni caldi / aggiornare i mobili al mid-century / aggiungere più piante ed elementi naturali)",project_name:"Nome del progetto (Restyling Soggiorno / Camera da Letto Principale / Cucina Open Space) e opzionalmente nome del cliente"},i6={"16:9":"Riprese grandangolari, presentazioni, immagini hero","4:5":"Instagram, presentazioni verticali","1:1":"Quadrato, riprese dall'alto, social media","9:16":"Stories, confronti verticali","2.39:1":"Widescreen cinematografico"},o6={"f/1.8-2.8":"Profondità di campo ridotta, sfocatura sfondo, riprese di dettaglio","f/5.6-8":"Tutto a fuoco, riprese grandangolari","16-24mm":"Grandangolo, riprese dell'intera stanza","35-50mm":"Standard, prospettiva naturale","85-100mm":"Riprese di dettaglio, ritratti, compressione"},r6={title:"Guida ai Prompt Video",subtitle:"25 prompt esperti per Kling O1 Image-to-Video per sbloccare il pieno potenziale della generazione video per il design di interni ed esterni",searchPlaceholder:"Cerca prompt video...",quickReference:"📋 Riferimento Rapido",category:"Categoria",prompts:"Prompt",bestFor:"Ideale Per",portfolioPresentations:"Portfolio, presentazioni clienti",renovationShowcases:"Presentazioni di ristrutturazioni",atmosphereDemos:"Dimostrazioni di atmosfera",materialHighlights:"Valorizzazione di materiali/mobili",socialMediaMarketing:"Social media, marketing",exteriorShowcases:"Immobiliare, marketing di proprietà",aiNote:{title:"Una Nota sulla Generazione Video con IA",text:"Kling O1 rappresenta la tecnologia all'avanguardia per la generazione video con IA. Questi prompt sono progettati per aiutarti a ottenere risultati professionali per i video di design d'interni. I risultati possono variare e ti consigliamo di sperimentare prompt diversi per trovare ciò che funziona meglio per i tuoi design specifici."},cta:{readyToCreate:"Pronto a Creare?",startNewProject:"Avvia un nuovo progetto con Video Generator e crea straordinari video di design d'interni.",signUpToTry:"Registrati per provare questi prompt con Video Generator e crea straordinari video di design d'interni.",tryVideoGenerator:"Prova Video Generator",getStarted:"Inizia",creating:"Creazione in corso..."}},n6={roomWalkthroughs:"Tour delle Stanze",beforeAfter:"Trasformazioni Prima/Dopo",lightingAtmosphere:"Illuminazione e Atmosfera",furnitureElementFocus:"Focus su Mobili ed Elementi",virtualStagingLifestyle:"Virtual Staging e Lifestyle",exteriorArchitecture:"Architettura Esterna"},s6={"slow-room-pan":"Panoramica Lenta della Stanza","entry-reveal":"Rivelazione dall'Ingresso","corner-to-corner-sweep":"Scorrimento da Angolo ad Angolo","window-light-walk":"Passeggiata con Luce delle Finestre","circular-room-tour":"Tour Circolare della Stanza","design-morph":"Morphing del Design","style-evolution":"Evoluzione di Stile","renovation-reveal":"Rivelazione della Ristrutturazione","seasonal-shift":"Cambiamento Stagionale","day-to-night-transform":"Trasformazione Giorno-Notte","golden-hour-sweep":"Scorrimento all'Ora d'Oro","chandelier-activation":"Attivazione del Lampadario","mood-lighting-shift":"Cambiamento Illuminazione Atmosferica","morning-light-animation":"Animazione della Luce Mattutina","fireplace-glow":"Bagliore del Camino","sofa-detail-reveal":"Rivelazione Dettaglio Divano","table-setting-showcase":"Presentazione Apparecchiatura Tavola","art-wall-focus":"Focus sulla Parete Arte","material-texture-pan":"Panoramica Texture Materiale","kitchen-island-orbit":"Orbita attorno all'Isola Cucina","curtain-breeze":"Brezza sulle Tende","plant-life-animation":"Animazione delle Piante","reflection-shimmer"
596:"Riflessi Scintillanti","cozy-living-scene":"Scena Living Accogliente","bathroom-spa-reveal":"Rivelazione Bagno Spa","luxury-villa-aerial":"Rivelazione Aerea Villa di Lusso","skyscraper-dramatic-rise":"Ascesa Drammatica del Grattacielo","residential-estate-birds-eye":"Vista Aerea di Tenuta Residenziale","modern-home-entrance":"Grand Entrata di Casa Moderna","office-building-lobby":"Avvicinamento alla Lobby dell'Edificio Uffici","villa-poolside-reveal":"Rivelazione Bordo Piscina della Villa","building-corner-dramatic":"Angolo dell'Edificio a Basso Angolo Drammatico","historic-villa-evening":"Bagliore Serale di Villa Storica","commercial-tower-reflection":"Studio di Riflessione Torre Commerciale","villa-day-to-night":"Transizione Giorno-Notte della Villa","building-entrance-activity":"Attività all'Ingresso dell'Edificio","garden-path-villa":"Percorso Giardino verso la Villa","courtyard-orbit":"Orbita nel Cortile","foggy-morning-estate":"Tenuta nella Nebbia Mattutina","rainy-day-building":"Atmosfera Edificio sotto la Pioggia","sunset-silhouette-villa":"Silhouette della Villa al Tramonto","office-campus-overview":"Panoramica del Campus Uffici","luxury-condo-tower":"Presentazione Torre Residenziale di Lusso"},l6={"slow-room-pan":"La fotocamera scorre lentamente da sinistra a destra nella stanza","entry-reveal":"La fotocamera avanza dalla soglia verso lo spazio living","corner-to-corner-sweep":"La fotocamera scorre diagonalmente mostrando la profondità spaziale","window-light-walk":"La fotocamera segue parallelamente alle finestre catturando la luce naturale","circular-room-tour":"La fotocamera orbita di 180 gradi attorno al centro della stanza","design-morph":"Transizione a dissolvenza incrociata tra due design","style-evolution":"Trasformazione graduale di materiali e colori","renovation-reveal":"Gli elementi si dissolvono e si riformano nel design rinnovato","seasonal-shift":"Gli elementi decorativi transitano tra stili stagionali","day-to-night-transform":"L'illuminazione passa dalla luce diurna all'atmosfera serale","golden-hour-sweep":"La luce calda del sole scorre lentamente attraverso la stanza","chandelier-activation":"Il lampadario illumina gradualmente la stanza","mood-lighting-shift":"L'illuminazione ambientale transita dal freddo al caldo","morning-light-animation":"La luce mattutina soffusa si intensifica gradualmente","fireplace-glow":"Le fiamme del camino tremolano proiettando luce calda","sofa-detail-reveal":"La fotocamera si avvicina al divano rivelando la texture","table-setting-showcase":"La fotocamera scende rivelando l'apparecchiatura della tavola da pranzo","art-wall-focus":"La fotocamera si avvicina all'opera d'arte sulla parete principale","material-texture-pan":"La fotocamera scorre sulla superficie mettendo in risalto le texture","kitchen-island-orbit":"La fotocamera orbita attorno all'isola della cucina","curtain-breeze":"Le tende trasparenti ondeggiano dolcemente verso l'interno","plant-life-animation":"Le piante da interno oscillano leggermente","reflection-shimmer":"Specchi e superfici in vetro catturano riflessi di luce","cozy-living-scene":"Il vapore sale da una tazza di caffè","bathroom-spa-reveal":"La fotocamera si alza rivelando il design del bagno","luxury-villa-aerial":"Ripresa aerea cinematografica con drone in orbita attorno a una villa moderna di lusso","skyscraper-dramatic-rise":"Ripresa con drone dal basso che sale lungo la facciata in vetro","residential-estate-birds-eye":"Ripresa aerea ad alta quota in discesa verso la tenuta","modern-home-entrance":"Ripresa di tracking fluida che si avvicina a una casa contemporanea","office-building-lobby":"Ripresa con gimbal verso un edificio corporativo in vetro","villa-poolside-reveal":"Lenta ripresa in avanzamento lungo la piscina a sfioro rivelando la villa","building-corner-dramatic":"Ripresa statica dal basso di un edificio moderno angolare","historic-villa-evening":"Villa mediterranea al crepuscolo con calde luci interne","commercial-tower-reflection":"Ripresa media dei riflessi sulla facciata in vetro di una torre uffici","villa-day-to-night":"Ripresa statica della villa in transizione dal giorno alla notte","building-entrance-activity":"Ripresa grandangolare dell'edificio uffici con professionisti in movimento","garden-path-villa":"Walkthrough in prima persona lungo il percorso del giardino","courtyard-orbit":"Telec
596amera in orbita fluida attorno al cortile interno","foggy-morning-estate":"Grande tenuta che emerge dalla nebbia mattutina","rainy-day-building":"Edificio moderno sotto la pioggia con atmosfera suggestiva","sunset-silhouette-villa":"Villa in silhouette contro un cielo al tramonto drammatico","office-campus-overview":"Ripresa aerea di tracking del campus uffici moderno","luxury-condo-tower":"Lenta panoramica verticale verso l'alto della facciata della torre residenziale"},c6={title:"Guida ai Prompt GPT-image-1.5",subtitle:"25 prompt esperti per GPT-image-1.5 per sbloccare il pieno potenziale della generazione immagini IA per il design d'interni",searchPlaceholder:"Cerca prompt GPT-image...",tips:{title:"💡 Consigli d'Uso",tip1:"Sostituisci le parentesi quadre [specifica...] con dettagli specifici del tuo progetto",tip2:'Per risultati più precisi - aggiungi quality="high" e input_fidelity="high"',tip3:`Per la massima conservazione dell'identità - ripeti "preserva" e "non modificare" più volte`,tip4:"Per più immagini - specifica sempre in modo esplicito Immagine 1 / Immagine 2"},aiNote:{title:"Una Nota su GPT-image-1.5",text:"GPT-image-1.5 rappresenta la tecnologia all'avanguardia per la generazione di immagini con IA. Questi prompt sono progettati per aiutarti a ottenere risultati professionali nel design d'interni. I risultati possono variare e ti consigliamo di sperimentare prompt e parametri diversi per trovare ciò che funziona meglio per i tuoi progetti specifici."},cta:{readyToCreate:"Pronto a Creare?",startNewProject:"Avvia un nuovo progetto con Image Creator e crea straordinari design d'interni.",signUpToTry:"Registrati per provare questi prompt con Image Creator e crea straordinari design d'interni.",tryImageCreator:"Prova Image Creator",getStarted:"Inizia",creating:"Creazione in corso..."}},d6={floorPlanConversion:"Conversione Planimetria e Schizzo",materialReplacement:"Sostituzione Materiali e Finiture",addRemoveItems:"Aggiunta e Rimozione Elementi",lightingAtmosphere:"Cambiamenti di Illuminazione e Atmosfera",styleTransfer:"Trasferimento di Stile e Mood Board",cameraComposition:"Angoli di Ripresa e Composizione",architecturalChanges:"Modifiche Architettoniche",specificRooms:"Stanze Specifiche",beforeAfter:"Prima/Dopo e Confronti",marketingOptimization:"Ottimizzazione Marketing"},u6={"floor-plan-isometric":"Planimetria → Render 3D Isometrico","floor-plan-top-down":"Planimetria → Visualizzazione 3D dall'Alto","sketch-to-render":"Schizzo a Mano → Render Fotorealistico","replace-flooring":"Sostituisci Pavimento","replace-countertop":"Sostituisci Piano Cucina","change-wall-color":"Cambia Colore Pareti","replace-cabinets":"Sostituisci Mobili Cucina","add-furniture":"Aggiungi Mobili da Immagine Prodotto","remove-furniture":"Rimuovi Mobili","virtual-staging":"Virtual Staging - da Vuoto ad Arredato","day-to-night":"Trasformazione Giorno → Notte","winter-season":"Trasformazione Stagione Invernale","dramatic-lighting":"Illuminazione Editoriale Drammatica","apply-style-reference":"Applica Stile da Immagine di Riferimento","mood-board-to-room":"Mood Board → Render Stanza","new-camera-angle":"Crea Nuovo Angolo di Ripresa","panoramic-expansion":"Ripresa Panoramica Grandangolare","add-architectural-element":"Aggiungi Elemento Architettonico","modify-ceiling":"Modifica Soffitto","enlarge-window":"Allarga Finestra","upgrade-bathroom":"Rinnova Bagno","outdoor-terrace":"Design Terrazza Esterna","before-after-split":"Vista Divisa Prima/Dopo","material-variations":"Griglia Varianti Materiali","real-estate-enhancement":"Ottimizzazione Foto Immobiliare"},m6={"floor-plan-isometric":"Trasforma la planimetria in un render 3D isometrico fotorealistico","floor-plan-top-down":"Converti la planimetria architettonica in vista 3D dall'alto","sketch-to-render":"Trasforma uno schizzo disegnato a mano in un render fotorealistico della stanza","replace-flooring":"Sostituisci solo il pavimento preservando tutto il resto","replace-countertop":"Sostituisci i piani della cucina con un nuovo materiale","change-wall-color":"Cambia il colore delle pareti preservando tutti gli altri elementi","replace-cabinets":"Sostituisci i mobili della cucina con un nuovo stile","add-fur
596niture":"Inserisci mobili dall'immagine del prodotto nella stanza","remove-furniture":"Rimuovi un elemento di arredo specifico dalla stanza","virtual-staging":"Arreda una stanza vuota con mobili moderni minimalisti","day-to-night":"Trasforma un interno diurno in una scena serale","winter-season":"Trasforma l'interno in un'accogliente ambientazione invernale serale","dramatic-lighting":"Crea un'atmosfera editoriale drammatica con l'illuminazione","apply-style-reference":"Applica lo stile di interior design dall'immagine di riferimento","mood-board-to-room":"Crea un render della stanza basato sugli elementi del mood board","new-camera-angle":"Genera un angolo di ripresa alternativo dello spazio interno","panoramic-expansion":"Espandi la vista dell'interno in una ripresa panoramica più ampia","add-architectural-element":"Aggiungi un elemento integrato come librerie a parete","modify-ceiling":"Cambia il design del soffitto preservando la stanza","enlarge-window":"Allarga la finestra fino alle dimensioni pavimento-soffitto","upgrade-bathroom":"Ristruttura il bagno con finiture moderne di lusso","outdoor-terrace":"Trasforma la terrazza esterna in uno spazio living progettato","before-after-split":"Crea un confronto split-screen prima/dopo","material-variations":"Genera 4 varianti di materiali in una griglia 2x2","real-estate-enhancement":"Migliora la foto degli interni per il marketing immobiliare"},p6={title:"Guida ai Prompt Video Veo 3.1",subtitle:"Toolkit di trucchi + 12 prompt pronti (6 da immagine singola, 6 da due immagini) per il design d'interni con Veo 3.1",searchPlaceholder:"Cerca prompt Veo...",imageToVideo:"Immagine-a-Video",imageToVideoDesc:"Toolkit di trucchi + 12 prompt pronti (6 da immagine singola, 6 da due immagini) per il design d'interni",aiNote:{title:"Una Nota su Veo 3.1",text:"Google Veo 3.1 rappresenta la tecnologia all'avanguardia per la generazione video con IA. Questi prompt sono progettati per aiutarti a ottenere risultati professionali per i video di design d'interni. I risultati possono variare e ti consigliamo di sperimentare prompt diversi per trovare ciò che funziona meglio per i tuoi design specifici. Per i prompt Immagine-a-Video, inizia sempre con 'Usa l'immagine caricata come primo fotogramma' per garantire la coerenza."},cta:{readyToCreate:"Pronto a Creare?",startNewProject:"Avvia un nuovo progetto con Video Generator e crea straordinari video di design d'interni.",signUpToTry:"Registrati per provare questi prompt con Video Generator e crea straordinari video di design d'interni.",tryVideoGenerator:"Prova Video Generator",getStarted:"Inizia",creating:"Creazione in corso..."}},h6={livingRoomPublic:"Soggiorno / Spazio Pubblico",kitchenDining:"Cucina + Zona Pranzo",bedroomKids:"Camera da Letto / Camerette",bathroomSpa:"Bagno / Home Spa",exteriorOutdoor:"Esterno: Casa / Giardino / Facciata / Piscina",interiorVideoTricks:"Trucchi Video per Interni (Veo 3.1)",singleImageToVideo:"6 Prompt (Immagine Singola → Video)",twoImagesTimelapse:"6 Prompt (Due Immagini → Timelapse/Transizione)"},g6={"modern-warm-minimal-living":"Soggiorno Moderno Caldo Minimalista","japandi-living-room":"Soggiorno Japandi","luxury-contemporary-lounge":"Lounge di Lusso Contemporaneo","scandinavian-family-living":"Soggiorno Scandinavo per la Famiglia","industrial-loft-living":"Spazio Living Loft Industriale","minimalist-kitchen-island":"Cucina Minimalista con Grande Isola","cozy-mediterranean-kitchen":"Cucina Mediterranea Accogliente","dining-room-styling":"Ripresa Styling Sala da Pranzo","high-end-kitchen-dusk":"Cucina di Alta Gamma al Tramonto","open-plan-continuity":"Cucina-Pranzo-Living Open Space","serene-master-bedroom":"Camera da Letto Principale Serena","kids-bedroom-pastel":"Cameretta con Tocchi Pastello","boutique-hotel-bedroom":"Camera da Letto Stile Boutique Hotel","minimal-bedroom-product":"Camera Minimalista in Stile Product Shot","bedroom-daylight-evening":"Camera da Letto dal Giorno alla Sera","spa-bathroom-microcement":"Bagno Spa con Microcemento","luxury-bathroom-marble":"Bagno di Lusso con Marmo","small-bathroom-makeover":"Restyling Bagno Piccolo","wet-room-shower-detail":"Dettaglio Doccia Wet Room","powder-room-moody":"Bagno di Servizio Suggestivo","modern-v
596illa-exterior":"Esterno Villa Moderna","mediterranean-courtyard":"Cortile Mediterraneo","backyard-patio-styling":"Styling Patio Giardino","poolside-luxury":"Lusso Bordo Piscina","front-entrance-hero":"Ripresa Hero dell'Ingresso Principale","night-exterior-facade":"Esterno Notturno: Luci in Facciata","balcony-city-apartment":"Balcone in Appartamento in Città","rainy-modern-house":"Esterno Casa Moderna sotto la Pioggia","garden-walkway-reveal":"Rivelazione del Vialetto del Giardino","architectural-detail-closeup":"Primo Piano Dettaglio Architettonico","trick-lock-space":"Blocco Massimo dello Spazio","trick-prevent-structure-change":"Prevenire Modifiche Strutturali","trick-safe-camera-movement":"Movimento Fotocamera Sicuro per Interni","push-in-realistic-life":"Push-in Realistico + Vita Sottile","pan-small-real-estate":'Piccola Panoramica "Immobiliare"',"rack-focus-material-detail":"Rack Focus per Dettagli Materiali","golden-hour-pass":`"Passaggio ora d'oro" (Solo Cambio Luce)`,"night-cozy":'"Notte accogliente" (Luci Pratiche)',"clean-stabilization":'"Stabilizzazione pulita" (Quasi Fermo ma Vivo)',"finish-reveal-clean":'"Rivelazione finitura" Pulita (Senza Operai)',"materials-install-sequence":'"Sequenza installazione materiali" (Senza Disordine)',"same-design-staging-only":'"Stesso design, solo staging" (Home Styling)',"day-night-between-frames":'"Giorno→Notte tra i fotogrammi"',"micro-zoom-into-final":'"Micro-zoom nel finale" (Mantiene Stabilità)',"people-disallow":'"Vieta persone" per Evitare Personaggi Accidentali'},f6={"modern-warm-minimal-living":"Soggiorno minimalista caldo con soffice luce mattutina","japandi-living-room":"Stile Japandi con luce diurna coperta","luxury-contemporary-lounge":"Lounge di lusso con illuminazione all'ora d'oro","scandinavian-family-living":"Spazio scandinavo adatto alla famiglia","industrial-loft-living":"Loft industriale con illuminazione notturna","minimalist-kitchen-island":"Cucina minimalista con isola in marmo","cozy-mediterranean-kitchen":"Cucina mediterranea con calda luce mattutina","dining-room-styling":"Rivelazione dall'alto fino all'angolazione della tavola","high-end-kitchen-dusk":"Cucina con LED caldi sotto i pensili","open-plan-continuity":"Ripresa di continuità tra le zone","serene-master-bedroom":"Luce ambientale blu pre-alba con lampade da comodino calde","kids-bedroom-pastel":"Cameretta vivace con soffusa luce diurna","boutique-hotel-bedroom":"Legno scuro e ottone con luce serale","minimal-bedroom-product":"Focus sui materiali con rack focus","bedroom-daylight-evening":"Transizione fluida dal giorno alla notte","spa-bathroom-microcement":"Bagno spa con luce zenitale diffusa","luxury-bathroom-marble":"Lastre di marmo con illuminazione indiretta calda","small-bathroom-makeover":"Piastrelle bianche brillanti con vanity in rovere","wet-room-shower-detail":"Primo piano estremo con gocce d'acqua","powder-room-moody":"Vernice scura con singola applique","modern-villa-exterior":"Intonaco bianco con sole all'ora d'oro","mediterranean-courtyard":"Pavimentazione in pietra con ulivi","backyard-patio-styling":"Pranzo all'aperto nell'ora blu del tramonto","poolside-luxury":"Deck in travertino con acqua calma","front-entrance-hero":"Vialetto con aiuole piantate","night-exterior-facade":"Luci che lavano la parete strutturata","balcony-city-apartment":"Lounge outdoor con bokeh dello skyline","rainy-modern-house":"Pavimento bagnato con riflessi","garden-walkway-reveal":"La fotocamera inizia dietro le foglie","architectural-detail-closeup":"Facciata con doghe in legno e raggi di sole","trick-lock-space":"Utilizzo dell'immagine iniziale e dell'ultimo fotogramma","trick-prevent-structure-change":"Mantieni fissi pareti/porte/finestre","trick-safe-camera-movement":"Movimenti delicati con verticali diritte","push-in-realistic-life":"Zoom centrato lento con micro movimenti","pan-small-real-estate":"Lenta panoramica da sinistra a destra 3-5 gradi","rack-focus-material-detail":"Cambio di messa a fuoco dal primo piano allo sfondo","golden-hour-pass":"Transizione fluida dalla luce diurna all'ora d'oro","night-cozy":"Transizione dal tardo pomeriggio alla calda serata","clean-stabilization":"Fotocamera perfettamente ferma con micro movimenti","finish-reveal-clean":"Transizione di ristrutturazione fluida senza persone","materials-install-sequence":"Sequenza realistica di installazione materiali","same-design-staging-only":"Solo modifiche allo styling, nessun camb
596io di mobili","day-night-between-frames":"Transizione giorno-notte con preservazione della geometria","micro-zoom-into-final":"Leggero zoom in entrata con stabilità","people-disallow":"Impedisce la comparsa di personaggi"},b6={title:"Guida ai Prompt Video Sora 2",subtitle:"Toolkit di trucchi + 25 prompt pronti (12 interni, 13 esterni) per designer d'interni con Sora 2",searchPlaceholder:"Cerca prompt Sora...",aiNote:{title:"Una Nota su Sora 2",text:"OpenAI Sora 2 rappresenta la tecnologia all'avanguardia per la generazione video con IA. Questi prompt sono progettati per aiutarti a ottenere risultati professionali per i video di design d'interni. I risultati possono variare e ti consigliamo di sperimentare prompt diversi per trovare ciò che funziona meglio per i tuoi design specifici. Per i prompt Immagine-a-Video, inizia sempre con 'Usa l'immagine di riferimento come primo fotogramma' per garantire la coerenza. Nota: le immagini con volti vengono rifiutate dall'API."},cta:{readyToCreate:"Pronto a Creare?",startNewProject:"Avvia un nuovo progetto con Video Generator e crea straordinari video di design d'interni.",signUpToTry:"Registrati per provare questi prompt con Video Generator e crea straordinari video di design d'interni.",tryVideoGenerator:"Prova Video Generator",getStarted:"Inizia",creating:"Creazione in corso..."}},v6={tricksTrends:"Trucchi e Tendenze per Sora 2",singleImageInteriors:"12 Prompt: Immagine Singola (Interni)",singleImageExteriors:"13 Prompt: Immagine Singola (Esterni)"},y6={"trick-one-shot-one-move":`"Un'inquadratura, un movimento, un'azione"`,"trick-keep-composition":"Mantieni la Composizione Coerente","trick-timing-beats":"Temporizzazione a 8 Secondi con Battute","trick-remix":"Remix per un Singolo Cambiamento","trick-no-faces":"Nota: Nessun Volto","soft-push-in-luxury":"Push‑in morbido, calma di lusso","pan-3-5-reveal":"Panoramica 3–5° rivela","rack-focus-material":"Rack focus materiale hero","golden-hour-drift":"Deriva all'ora d'oro","night-cozy-practicals":"Notte accogliente con luci pratiche","rainy-ambience-window":"Atmosfera piovosa dalla finestra","ceiling-light-sway":"Micro-movimento oscillante luce soffitto","architectural-still-alive":"Architettura ferma, 'viva'","kitchen-steam-detail":"Dettaglio vapore in cucina","texture-pass":"Passaggio texture (pietra/legno/tessuto)","minimal-handheld-vlog":"Handheld minimale 'design vlog' (molto controllato)","colorway-trend-remix":"Remix palette colori tendenza (neutro caldo)","drone-push-in-development":"Drone push‑in su sviluppo edilizio","orbit-10-max-safe":"Orbita 10° massimo (sicuro)","blue-hour-lights-alive":"Le luci si accendono nell'ora blu","pool-water-realism":"Realismo dell'acqua in piscina","rain-wet-reflections":"Riflessi dopo la pioggia","coastal-haze-cinematic":"Foschia costiera cinematografica","community-life-distant":"Vita comunitaria (distante, senza volti ravvicinati)","street-life-micro-beats":"Vita di strada con micro battute d'azione","wind-trees-hero":"Vento tra gli alberi hero","luxury-marketing-grade":"Grading di qualità marketing luxury","courtyard-cafe-ambience":"Atmosfera caffè nel cortile (senza insegne)","amenity-reveal-gym":"Rivelazione servizi: riflessi vetri palestra","minimal-hyper-real-still":"Fermo 'iper-reale' minimale"},x6={"trick-one-shot-one-move":"Un movimento di fotocamera netto + un cambiamento principale","trick-keep-composition":"Istruzione per mantenere composizione/stile","trick-timing-beats":"Scrivere le azioni come battute","trick-remix":"Preferire il Remix invece di rigenerare","trick-no-faces":"Le immagini con volti vengono rifiutate","soft-push-in-luxury":"Zoom centrato lento con vita sottile","pan-3-5-reveal":"Lenta panoramica da sinistra a destra 3-5 gradi","rack-focus-material":"Cambio di messa a fuoco dal primo piano allo sfondo","golden-hour-drift":"Transizione fluida dalla luce diurna all'ora d'oro","night-cozy-practicals":"Luci pratiche con battute","rainy-ambience-window":"Pioggia sottile dalla finestra","ceiling-light-sway":"Micro-movimento del lampadario a sospensione","architectural-still-alive":"Quasi fermo ma vivo","kitchen-steam-detail":"Vapore sottile in cucina","texture-pass":"Enfatizzare le texture dei materiali","minimal-handheld-vlog":"Movimento di fotocamera molto sottile","colorway-trend-remix":"Cambio di palette cromatica","drone-push-in-development":"Movimento lento del drone","orbit-10-max-safe":"Lento arco attorno all'edificio","blue-hour-lights-alive":"Le luci si accendono durante l'ora blu","pool-water-realism":"Realismo dell'acqua in piscina","rain-wet-reflections":"Riflessi dopo la pioggia","coastal-haze-cinematic":"Leggera foschia costiera","community-life-distant":"Vita comunitaria in lontananza","street-life-micro-beats":"Vita di strada con battute","wind-trees-hero":"Vento tra gli alberi","luxury-marketing-grade":"Grading marketing premium","courtyard-cafe-ambience":"Atmosfera caffè nel cortile","amenity-reveal-gym":"Riflessi in vetro","minimal-hyper-real-still":"Quasi iper-realistico fermo"},w6={title:"Guida ai Prompt Video Grok",subtitle:"Toolkit di trucchi + 25 prompt pronti (10 interni sicuri, 8 styling, 7 esterni) per designer d'interni con Grok Video",searchPlaceholder:"Cerca prompt Grok...",aiNote:{title:"Una Nota su Grok Video",text:"xAI Grok Video è uno strumento rapido e semplice da immagine a video. Questi prompt sono progettati per aiutarti a ottenere risultati professionali per i video di design d'interni. I risultati possono variare e ti consigliamo di sperimentare prompt diversi per trovare ciò che funziona meglio per i tuoi de
596sign specifici. Grok Video è progettato per clip brevi e veloci con la possibilità di aggiungere un prompt breve che guida l'effetto."},cta:{readyToCreate:"Pronto a Creare?",startNewProject:"Avvia un nuovo progetto con Video Generator e crea straordinari video di design d'interni.",signUpToTry:"Registrati per provare questi prompt con Video Generator e crea straordinari video di design d'interni.",tryVideoGenerator:"Prova Video Generator",getStarted:"Inizia",creating:"Creazione in corso..."}},k6={tricksTrends:"Trucchi e Tendenze per Grok Video",interiorSafe:'10 Prompt: Interni "Sicuri"',interiorStylingStorytelling:'8 Prompt: Interni "Styling/Storytelling"',exteriorNeighborhoodBuilding:"7 Prompt: Esterni - Quartiere/Edificio/Cortile"},_6={"trick-video-editor-style":'Scrivi il prompt come "video editor"',"trick-reduce-complexity":"Riduci la complessità se il modello inventa","trick-camera-locked":'Più stabile: "fotocamera fissa" o "solo zoom delicato"',"trick-architectural-still-alive":'"Architettura ferma viva"',"trick-light-mood-shift":'"Cambio atmosfera luminosa"',"trick-real-estate-gimbal":'"Gimbal immobiliare"',"keep-room-same-gentle-zoom":"Mantieni la stanza uguale, zoom delicato","lock-camera-daylight-only":"Fotocamera fissa, solo luce diurna","slow-pan-keep-walls-straight":"Panoramica lenta, mantieni pareti diritte","gimbal-push-premium":"Push-in con gimbal, sensazione premium","no-camera-warm-lamps":"Nessun movimento fotocamera, lampade calde","rack-focus-foreground-sofa":"Rack focus: dal primo piano al divano","minimal-handheld-micro":"Handheld minimale con micro-movimento","kitchen-steam-specular":"Cucina: vapore + riflessi speculari","bathroom-steam-reflections":"Bagno: vapore + riflessi dello specchio","bedroom-morning-light":"Camera da letto: luce mattutina + tenda","lived-in-book-curtain":"Vissuto: pagina libro + tenda","lifestyle-coffee-tv":"Lifestyle: vapore caffè + sfarfallio TV","cleaning-reveal-dust":"Rivelazione pulizia: particelle di polvere che svaniscono","material-showcase-wood-stone":"Showcase materiali: legno + pietra","golden-hour-glow":"Bagliore dell'ora d'oro","night-luxury-practical-lights":"Notte luxury: luci pratiche","calm-breeze-plants-curtains":"Brezza tranquilla: piante + tende","architectural-hero-still":"Hero architettonico: quasi fermo","aerial-gentle-zoom-stable":"Sensazione aerea: zoom delicato, stabile","slow-orbit-building":"Orbita lenta attorno all'edificio","blue-hour-path-lights":"Ora blu: bagliore luci vialetto","after-rain-wet-reflections":"Dopo la pioggia: riflessi bagnati","courtyard-life-distant":"Vita nel cortile (in lontananza)","pool-area-ripples":"Zona piscina: increspature + riflessi","luxury-promo-grade":"Grading promozionale luxury"},S6={"trick-video-editor-style":"Un movimento di fotocamera + piccola vita","trick-reduce-complexity":'Meno dettagli, più "mantieni tutto uguale"',"trick-camera-locked":"Movimenti ampi causano distorsioni","trick-architectural-still-alive":"Quasi fermo ma vivo - premium e stabile","trick-light-mood-shift":"Giorno→oro/sera - solo cambio luce","trick-real-estate-gimbal":"Leggero push-in + esposizione stabile","keep-room-same-gentle-zoom":"Zoom lento con movimenti sottili","lock-camera-daylight-only":"Solo luce diurna naturale","slow-pan-keep-walls-straight":"Piccola panoramica con linee dritte","gimbal-push-premium":"Sensazione di marketing premium","no-camera-warm-lamps":"Accendi le lampade calde","rack-focus-foreground-sofa":"Cambio di messa a fuoco dal primo piano allo sfondo","minimal-handheld-micro":"Movimento di fotocamera molto sottile","kitchen-steam-specular":"Vapore e riflessi speculari in cucina","bathroom-steam-reflections":"Vapore e riflessi nel bagno","bedroom-morning-light":"Luce mattutina e tenda in camera da letto","lived-in-book-curtain":"Sensazione vissuta","lifestyle-coffee-tv":"Vita quotidiana","cleaning-reveal-dust":"Rivelazione della pulizia","material-showcase-wood-stone":"Enfatizzare i materiali","golden-hour-glow":"Ora d'oro","night-luxury-practical-lights":"Notte di lusso","calm-breeze-plants-curtains":"Brezza delicata","architectural-hero-still":"Hero architettonico","aerial-gentle-zoom-stable":"Sensazione aerea","slow-orbit-building":"Lento arco attorno all'edificio","blue-hour-path-lights":"Ora blu","after-rain-wet-reflections":"Dopo la pioggia","courtyard-life-distant":"Vita nel cortile","pool-area-ripples":"Zona piscina","luxury-promo-grade":"Grading marketing premium"},C6={title:zM,subtitle:BM,searchPlaceholder:FM,prompts:$M,fillIn:VM,copyPrompt:UM,copy:qM,copied:GM,quickReference:WM,aspectRatios:
596HM,cameraSettings:KM,goldenRule:YM,aiNote:QM,cta:JM,categories:XM,errors:ZM,promptTitles:e6,promptDescriptions:t6,userInputDescriptions:a6,aspectRatioDescriptions:i6,cameraSettingDescriptions:o6,videoGuide:r6,videoCategories:n6,videoPromptTitles:s6,videoPromptDescriptions:l6,gptImageGuide:c6,gptImageCategories:d6,gptImagePromptTitles:u6,gptImagePromptDescriptions:m6,veoGuide:p6,veoCategories:h6,veoPromptTitles:g6,veoPromptDescriptions:f6,soraGuide:b6,soraCategories:v6,soraPromptTitles:y6,soraPromptDescriptions:x6,grokGuide:w6,grokCategories:k6,grokPromptTitles:_6,grokPromptDescriptions:S6},T6={studioTitle:"Kling Video Studio",desktopOnly:"Lo studio è disponibile su tablet e desktop",minScreenWidth:"Larghezza minima schermo: 768px",defaultProjectName:"Progetto Kling 3.0"},j6={darkModeTitle:"Modalità chiara",lightModeTitle:"Modalità scura",grokSubtitle:"Fino a 7 immagini",grok15Subtitle:"1080p · fino a 7 immagini · 5-15s",geminiOmniSubtitle:"1080p · fino a 7 immagini",generating:"Generazione in corso...",sendToGenerate:"Genera",balance:"Saldo",videoEditor:"Editor video",videoEditorNew:"Nuovo"},N6={home:"Home",videos:"Video",frames:"Fotogrammi",characters:"Personaggi",boardCut:"Editor video",clearCanvas:"Pulisci canvas",resetScreen:"Reimposta schermo"}
596,P6={imageToVideo:"Immagine in video",multiShot:"Multi-shot"},A6={imageToVideo:"Primo / ultimo fotogramma",referenceToVideo:"Riferimento → video",videoEdit:"Modifica video",styleTransfer:"Riferimento video"},E6={imageToVideo:"Immagine in video",firstLast:"Primo + ultimo fotogramma",ingredients:"Ingredienti"},I6={title:"Agente intelligente — Bordi",activeChat:"Chat attiva",settingsAndTips:"Impostazioni e suggerimenti",creationSettings:"Impostazioni di creazione",duration:"Durata",totalDuration:"Durata totale",resolution:"Risoluzione",mode:"Modalità",modeNormal:"Normale",modeFun:"Divertente",aspectRatio:"Proporzioni",model:"Modello",quality:"Qualità",qualityStd:"720p Standard",qualityPro:"1080p Pro",quality4K:"4K Ultra",seconds:"secondi",secondsSource:"secondi (sorgente)",durationAutomatic:"~8 secondi (automatico)",aspectRatioAuto:"Auto",sound:"Audio",soundMultiShotNote:"(richiesto per multi-shot)",keepOriginalSound:"Mantieni audio originale",costForCreation:"Costo per creazione",veoResolution:"Risoluzione",costVeoDetail:"{{resolution}} — {{tokens}} token",costGeminiOmniDetail:"{{seconds}}s · 1080p — {{tokens}} token",costGeminiOmniVideoDetail:"video→video · 1080p — {{tokens}} token",geminiOmniVideoDurationNote:"Durata decisa dal modello · 40 token",costStdRate:"{{rate}}t/sec",costO1Formula:"{{rate}} t/s × {{seconds}}s = {{total}} token",costSeedance2Rate:"480p — 4 token/sec · 720p — 6 token/sec",describeYourIdea:"Descrivi la tua idea e ti scriverò un prompt",writeScriptIdeas:"Scrivimi delle idee in base ai fotogrammi che vedi",uploadHintGrok:"Carica almeno un'immagine per iniziare",uploadHintGeminiOmni:"Carica almeno un'immagine di riferimento per usare Baker",uploadHintVeoIngredients:"Carica almeno un'immagine di riferimento",uploadHintVeo:"Carica un'immagine in un fotogramma per iniziare",uploadHintO1Video:"Carica un video per iniziare",uploadHintO1ImageGuided:"Carica almeno un'immagine di riferimento",uploadHintDefault:"Carica un'immagine in un fotogramma per iniziare",tokens:"token",costSeedance25Rate:"480p — 6 token/s · 720p — 12 token/s",costSeedance25Detail:"{{rate}}t/s × {{seconds}}s = {{total}} token",costSeedance25DetailWithRef:"{{rate}}t/s × {{seconds}}s + {{refRate}}t/s × {{refSeconds}}s video di riferimento = {{total}} token"},D6={conversation:"Chat",thinking:"Elaborazione in corso...",placeholder:"Scrivi qui...",stopListeningTitle:"Clicca per fermare",startListeningTitle:"Clicca per parlare",speechNotSupported:"Il browser non supporta il riconoscimento vocale. Prova Chrome, Edge o Safari.",manualModeHint:"Il prompt verrà inserito direttamente — gratuito",tokenCostHint:"0,5 token per messaggio"},R6={title:"Prompt"},L6={title:"Shot",duration:"Durata",cameraPlaceholder:"Tipo di camera",characterRef:"@Personaggio"},O6={none:"Nessuno",panRight:"Pan destro",panLeft:"Pan sinistro",zoomIn:"Zoom avanti",zoomOut:"Zoom indietro",tracking:"Tracking",orbit:"Orbita"},M6={title:"Risultato",generatingText:"Generazione in corso...",resultWillAppear:"Il risultato apparirà qui",statusWillAppear:"Lo stato della creazione apparirà qui",oneVideoInProgress:"1 video in elaborazione",multipleVideosInProgress:"{{count}} video in elaborazione",oneVideoReady:"1 video pronto",multipleVideosReady:"{{count}} video pronti",inWorkLabel:"video in elaborazione",readyLabel:"video pronti",openToolbarHintBefore:"Clicca",openToolbarHintAfter:"nella barra degli strumenti a sinistra per guardare i tuoi video",viewVideos:"Guarda i video"},z6={title:"Immagine iniziale",required:"Obbligatoria",altText:"Immagine iniziale",dropzoneText:"Carica l'immagine da cui partire",dropzoneHint:"Trascina o clicca"},B6={title:"Immagine finale",optional:"(Opzionale)",altText:"Immagine finale",dropzoneText:"Aggiungi un'immagine finale per il controllo del movimento",dropzoneHint:"Trascina o clicca"},F6={title:"Immagine sorgente",required:"Obbligatoria",altText:"Immagine sorgente",dropzoneText:"Carica un'immagine sorgente per tutti gli shot",dropzoneHint:"Trascina o clicca"},$6={title:"Carica video",required:"Obbligatorio",dropzoneText:"Carica un file video"}
596,V6={title:"Immagini di riferimento",emptyHint:"Aggiungi immagini di riferimento per guidare lo stile"},U6={title:"Immagini",emptyHint:"Carica fino a 7 immagini per la generazione del video"},q6={label:"Aggiungi shot"},G6={title:"Personaggio / Oggetto",namePlaceholder:"Nome del personaggio",descriptionPlaceholder:"Breve descrizione (obbligatoria) — es. donna con camicia bianca",addButton:"Personaggio / Oggetto"},W6={title:"Personaggi / Oggetti",emptyHint:"Aggiungi personaggi o oggetti che appariranno nel video.",emptyHintSub:"Usa @nome nel prompt di ogni shot.",addButton:"Aggiungi personaggio / oggetto",namePlaceholder:"Nome (in inglese, es.: cat_1)"},H6={title:"Video",resultsCount:"{{count}} risultati",generatingSingle:"Generazione in corso...",generatingMultiple:"Generazione di {{count}} video in corso...",emptyState:"I video generati appariranno qui",deleteConfirm:"Eliminare il video? Questa azione non può essere annullata.",deleteError:"Errore durante l'eliminazione del video",deleteSuccess:"Video eliminato",defaultVideoLabel:"Video",expandTitle:"Estendi video",downloadTitle:"Scarica",deleteTitle:"Elimina",sendToAssetsMenuItem:"Invia ai miei asset",sendToAssetsSuccess:"Video salvato nei tuoi asset",sendToAssetsError:"Errore nel salvataggio negli asset",sendToAssetsInProgress:"Salvataggio in corso..."},K6={modelLabel:"Modello:",promptLabel:"Prompt",copyPromptTitle:"Copia prompt",copied:"Copiato",copy:"Copia",copyPrompt:"Copia prompt",expandVideo:"Estendi video",download:"Scarica"},Y6={title:"Risultati recenti",emptyState:"I risultati appariranno qui dopo la prima generazione",defaultVideoLabel:"Video",downloadButton:"Scarica"},Q6={title:"Estensione video",titleGrok:"Estensione video - Grok",titleVeo:"Estensione video - Veo",segments:"{{count}} segmenti",shrinkTitle:"Riduci",expandTitle:"Espandi",exitEditingTitle:"Termina modifica",noVideo:"Nessun video",segmentOf:"Segmento {{current}}/{{total}}",maxSegmentsReached:"Raggiunto il massimo di {{max}} segmenti ({{minutes}} minuti)",totalLabel:"Totale:",exitEditing:"Termina modifica",durationSeconds:"{{count}} secondi",durationMinutes:"{{minutes}}:{{seconds}} minuti"},J6={placeholder:"Descrivi la continuazione del video...",writeNextForMe:"Scrivimi una continuazione",extending:"Estensione in corso...",addSeconds:"Aggiungi {{count}} secondi",keyboardHint:"Cmd+Enter per estensione rapida"},X6={title:"Timeline",segmentsCount:"{{count}}/{{max}} segmenti",segmentTitle:"Segmento {{index}}: {{duration}}s",addSegmentTitle:"Aggiungi segmento"},Z6={pickTitle:"Seleziona immagini",browseTitle:"Fotogrammi",selectedCount:"{{count}}/{{max}} selezionate",imageCount:"{{count}} immagini",newFolderTitle:"Nuova cartella",uploadTitle:"Carica immagini",folderNamePlaceholder:"Nome cartella",breadcrumbRoot:"Fotogrammi",clickToRename:"Clicca per rinominare",folderItemCount:"{{count}} fotogrammi",sendToStartTitle:"Invia al fotogramma iniziale",sendToEndTitle:"Invia al fotogramma finale",sendToStart:"Invia al fotogramma iniziale",sendToEnd:"Invia al fotogramma finale",rename:"Rinomina",moveToFolder:"Sposta nella cartella",rootFolder:"Radice (Fotogrammi)",delete:"Elimina",deleteFolder:"Elimina cartella",emptyPickState:"Nessuna immagine ancora",emptyPickHint:"Carica immagini per selezionarle",emptyBrowseState:"Carica immagini nei fotogrammi",emptyBrowseHint:"Trascina nei fotogrammi o clicca con il tasto destro",uploadButton:"Carica immagini",emptyFolder:"La cartella è vuota",emptyFolderHint:"Trascina immagini qui",sendImages:"Invia {{count}} immagini",uploadMore:"Carica altre"},ez={pickTitle:"Seleziona personaggi",browseTitle:"Personaggi",selectedCount:"{{count}}/{{max}} selezionati",characterCount:"{{count}} personaggi",addCharacterTitle:"Aggiungi personaggio",clickToRename:"Clicca per rinominare",rename:"Rinomina",delete:"Elimina",emptyPickState:"Nessun personaggio ancora",emptyPickHint:"Carica immagini per selezionarle",emptyBrowseState:"Salva personaggi per riutilizzarli",emptyBrowseHint:"Carica immagini dei personaggi ricorrenti",addCharacterButton:"Aggiungi personaggio",sendCharacters:"Invia {{count}} personaggi",addMore:"Aggiungi altri"},tz={actionSetPrompt:"Prompt aggiornato",actionUpdateElement:"Elemento aggiornato",actionRemoveElement:"Elemento rimosso",actionUpdateShot:"Shot aggiornato",actionSetQuality:"Qualità modificata",actionSetSound:"Audio modificato",actionSetDuration:"Durata modificata",actionSetAspectRatio:"Proporzioni modificate",loginRequired:"Accesso richiesto per usare l'assistente",communicationError:"Errore di comunicazione con l'assistente",unexpectedError:"Errore imprevisto",insufficientTokens:"Token insufficienti. Richiesti: {{required}}, Saldo: {{current}}",explainFirstInstruction:"Dimmi cosa vuoi vedere nel video — movimento della camera, atmosfera, illuminazione o qualsiasi altra idea. Analizzerò le immagini e scriverò un prompt su misura per te.",greetingWritePrompt:"Dammi un momento per analizzare le immagini...",greetingImprovePrompt:"Dammi un momento per 
596controllare il prompt...",greetingRecommendSettings:"Controllo delle impostazioni in corso...",qualityProLabel:"1080p Pro",qualityStdLabel:"720p Standard",soundOn:"Attivato",soundOff:"Disattivato",changedModel:"Modello cambiato:",defaultElementName:"Elemento"},az={smartAssistantError:"Errore dell'assistente intelligente",enterPromptOrUploadImage:"Inserisci un prompt o carica almeno un'immagine",uploadAtLeastOneImage:"Carica almeno un'immagine",uploadStartImage:"Carica un'immagine iniziale",ingredientsFastOnly:"La modalità Ingredienti è disponibile solo con il modello Fast",uploadAtLeastOneRef:"Carica almeno un'immagine di riferimento",cannotCombineEndWithRef:"Non è possibile combinare l'immagine finale con le immagini di riferimento",uploadVideoFile:"Carica un file video",uploadSourceImage:"Carica un'immagine sorgente",addAtLeastOneShot:"Aggiungi almeno uno shot",fillAllShotPrompts:"Compila i prompt per tutti gli shot",loginToCreateVideo:"Accesso richiesto per creare un video",videoSentForPreparation:"Video inviato per la preparazione! A causa del carico e della coda, potrebbe richiedere fino a 15 minuti",videoSentForPreparationShort:"Video inviato per la preparazione! Potrebbe richiedere fino a 5 minuti",insufficientTokens:"Token insufficienti. Richiesti: {{required}}, Saldo: {{current}}",videoCreationError:"Errore nella creazione del video",videoReady:"Il video è pronto!",videoReadyToast:{title:"Il tuo video è pronto!",titlePlural:"{{count}} video sono pronti!",cta:"Guarda il video",dismiss:"Chiudi"},videoCreationFailed:"Creazione del video non riuscita",videoCreationTimeout:"Timeout nella creazione del video",unexpectedServerResponse:"Risposta inattesa dal server",noServerResponse:"La richiesta non ha raggiunto il server — non ti è stato addebitato nulla. Riprova.",unexpectedVideoError:"Errore imprevisto nella creazione del video",loginToExtendVideo:"Accesso richiesto per estendere il video",openExtendModeFirst:"Apri prima la modalità di estensione",enterExtendDescription:"Inserisci una descrizione per la continuazione del video",missingSegmentId:"ID del segmento precedente mancante",extendError:"Errore nell'estensione del video",extendReady:"L'estensione è pronta!",extendInProgress:"Estensione in preparazione...",extendFailed:"Estensione non riuscita",extendTimeout:"Estensione non riuscita - timeout",unexpectedExtendError:"Errore imprevisto nell'estensione del video",elementsMissingImages:"Gli elementi {{names}} richiedono almeno 2 immagini ciascuno. Aggiungi immagini prima di generare.",noElementName:"(senza nome)",elementNeedsDescription:`L'elemento "{{name}}" non ha una descrizione. Aggiungi una breve descrizione nella sua scheda (ad esempio: donna con camicia bianca) prima di generare.`,promptRefsNoElements:"Il prompt fa riferimento a elementi (@nome) ma non sono definiti elementi. Aggiungi un elemento con immagini.",elementUploadFailed:"Caricamento dell'immagine dell'elemento non riuscito. Verifica che ogni elemento abbia almeno 2 immagini.",imageUploadFailed:"Caricamento dell'immagine non riuscito",unsupportedImageFormat:"Una delle immagini è in un formato non supportato da questo modello (solo JPG/PNG). Sostituiscila e riprova — nessun token è stato addebitato."},iz={modelName:"Seedance 2",workflowLabel:"Modalità di generazione",workflows:{t2v:"Testo in video",firstFrame:"Da immagine",firstLast:"Primo e ultimo",multimodalRef:"Riferimenti"},workflowDescriptions:{t2v:"Genera video solo da testo — nessuna immagine",firstFrame:"Anima da una singola immagine iniziale",firstLast:"Transizione controllata tra fotogramma iniziale e finale",multimodalRef:"Guidato da immagini / video / audio di riferimento"},settings:{resolution:"Risoluzione",resolution480p:"Standard 480p",resolution720p:"Qualità 720p",aspectRatio:"Proporzioni",duration:"Durata",generateAudio:"Genera audio (+2 token)",generateAudioOff:"Nessun audio"},referenceImages:{title:"Immagini di riferimento",hint:"Fino a 9 immagini — ognuna come ancoraggio per stile / materiali / illuminazione / identità"},referenceVideos:{title:"Video di riferimento",hint:"Fino a 3 video, totale ≤{{maxSeconds}} secondi — guida il ritmo e il movimento",addVideo:"Aggiungi video",totalDuration:"Durata totale",totalLimit:"Limitato a 15 secondi totali"},referenceAudios:{title:"Audio di riferimento",hint:"Fino a 3 file audio, totale ≤{{maxSeconds}} secondi — ritmo emotivo e cadenza",addAudio:"Aggiungi audio",totalDuration:"Durata totale"},baker:{title:"Bordi — scrittore di prompt per Seedance 2",tellIdea:"Clicca e dimmi la tua idea",writeForMe:"Scrivi tu il prompt per me (0,5 🪙)"},errors:{needStartImage:"Immagine iniziale obbligatoria",needBothFrames:"Sono richiesti sia il fotogramma iniziale che quello finale",needAtLeastOneRef:"È richiesto almeno un riferimento (immagine / video / audio)",promptTooShort:"Il prompt deve contenere almeno 3 caratteri",promptTooLong:"Il prompt non può superare i 2500 caratteri",tooManyRefImages:"Massimo 9 immagini di riferimento",tooManyRefVideos:"Massimo 3 video di riferimento",tooManyRefAudios:"Massimo 3 file audio di riferimento",totalVideoTooLong:"La durata totale dei video di riferimento supera i 15 secondi",totalAudioTooLong:"La durata totale dell'audio supera i 15 secondi",mixedScenarios:"Non è possibile combinare scenari. Scegli immagine / video / audio / riferimenti — ma non tutti insieme"}},oz={"16:9":"16:9","9:16":"9:16","1:1":"1:1","2:3":"2:3","3:2":"3:2","4:3":"4:3","3:4":"3:4","21:9":"21:9",auto:"Auto",automatic:"Automatico"},rz={defaults:{projectName:"Nuovo video",headline:"Titolo principale",lowerThird:"Terzo inferiore",credits:"Crediti",newText:"Nuovo testo",caption:"Sottotitolo",cta:"Contattaci"},overlay:{selectAudio:"Scegli un file audio",musicAdded:"Musica aggiunta 🎵",musicLoadFailed:"Caricamento musica non riuscito",selectVideo:"Scegli un file video",oneVideoAdded:"Video aggiunto alla timeline",oneImageAdded:"Immagine aggiunta alla timeline",manyVideosAdded:"{{count}} video aggiunti alla timeline",manyClipsAdded:"{{count}} clip aggiunte alla timeline",videoLoadFailed:"Caricamento media non riuscito",selectMedia:"Scegli un file video, audio o immagine",selectVideoOrImage:"Scegli un file video o immagine",mediaAdded:"Media aggiunto alla timeline",mediaLoadFailed:"Caricamento media non riuscito",backToDashboard:"Torna alla dashboard",backToStudio:"Torna allo studio",productLabel:"Editor video",projectName:"Nome progetto",projectNamePlaceholder:"Inserisci un nome",exportMp4:"Esporta MP4",undo:"Annulla",redo:"Ripeti",saving:"Salvataggio…",saveError:"Salvataggio non riuscito",saved:"Salvato",savedLocal:"Salvato solo su questo dispositivo",logoAdded:"Logo / immagine aggiunti",logoFailed:"Caricamento immagine non riuscito",tabMedia:"Media",tabTools:"Strumenti",hideSidebar:"Nascondi pannello",showSidebar:"Mostra pannello",cloudHint:"Salvataggio cloud + Results — utenti a pagamento",closeBlockedRecording:"Ferma o annulla la registrazione prima di uscire dall'editor"},empty:{videoOrAudioOnly:"Solo file video o audio",videoAudioOrImage:"Solo file video, audio o immagine",loadFailed:"Caricamento non riuscito",videoLoadFailed:"Caricamento video non riuscito",seedCorsHint:"Questo clip potrebbe non esportarsi (CORS) — se l'export fallisce, carica un file locale",seedFallback:"Video",eyebrow:"Board-Cut",title:"Facciamo un video 🎬",subtitle:"Carica video/immagini o registra lo schermo — e inizia a montare",uploadVideos:"Carica media",dragOrChoose:"Video · audio · immagine",dropHere:"Rilascia qui per caricare",myCreations:"Le mie creazioni",videoCount:"{{count}} video",noneYet:"Ancora nessuno",screenRecord:"Registrazione schermo",screenRecordSub:"Schermo + microfono + cerchio camera",webcamBadge:"Fotocamera"},timeline:{clearConfirm:"Cancellare la timeline e ricominciare? Tutte le clip caricate verranno rimosse dall’editor. Assicurati di aver già esportato il video sul computer — non è salvato qui.",clearTitle:"Cancella timeline — nuovo progetto",clear:"Cancella timeline",zoomOut:"Zoom out",zoomIn:"Zoom in",splitTitle:"Dividi alla testina (S)",cut:"Taglia",videoEmpty:"Traccia media — trascina qui video o immagine",musicEmpty:"Traccia musica 🎵",textEmpty:"Traccia testo 🔤",splitAtPlayhead:"Dividi alla testina",splitNeedPlayhead:"Sposta la testina dentro la clip e poi dividi",deleteClip:"Elimina clip",textFallback:"Testo",pipEmpty:"Traccia video fluttuante",pipLabel:"Video fluttuante",overlayEmpty:"Traccia logo / grafica",zoomEmpty:"Traccia zoom",zoomLabel:"Zoom",resize:"Trascina per ridimensionare la timeline"},tools:{title:"Strumenti",chooseGroup:"Scegli una categoria — trascina ≡ per riordinare",groupEdit:"Modifica e movimento",groupEditHint:"Taglio, zoom e video fluttuante",groupText:"Testo e sottotitoli",groupTextHint:"Titoli, sottotitoli automatici e stile",groupAudio:"Audio e musica",groupAudioHint:"Carica musica e registra un doppiaggi
596o",groupElements:"Elementi",groupElementsHint:"Libreria creativa — forme, cornici, icone e sticker",groupGraphics:"Grafica e brand",groupGraphicsHint:"Loghi e kit del brand",guideTitle:"Guida completa all’editor video",guideHint:"Tutti gli strumenti, passo dopo passo",guideBadge:"Importante",guideAria:"Apri la guida completa a Board-Cut in una nuova scheda",groupNarration:"Narrazione AI",groupNarrationHint:"Crea la narrazione e clona la tua voce",cut:"Taglia",text:"Testo",addText:"Aggiungi testo",captionsWorking:"Creazione sottotitoli…",music:"Carica musica",addMedia:"Aggiungi media",content:"Contenuto",size:"Dimensione",color:"Colore",verticalPosition:"Posizione verticale ({{percent}}%)",bold:"Grassetto",headline:"Titolo",lowerThird:"Sottopancia",credits:"Crediti",volume:"Volume ({{percent}}%)",fitToVideo:"Adatta alla durata del video",videoClip:"Clip video",videoControls:"Clip video",videoControlsHint:"Velocità, transizione, look e colore",videoControlsEmpty:"Seleziona o aggiungi una clip video per modificarla",chooseVideoClip:"Scegli clip",videoClipNumber:"Clip video {{number}}",speed:"Velocità {{value}}",slower:"Più lento 🐢",faster:"Più veloce 🚀",normalSpeed:"Velocità normale",durationHint:"Durata: {{duration}}s · Trascina le maniglie sui bordi della timeline",captions:"Sottotitoli",overlay:"Carica grafica",voiceover:"Registra doppiaggio",voiceoverStop:"Interrompi doppiaggio",smartClips:"Clip intelligenti",pip:"Video fluttuante",zoom:"Zoom",zoomInspector:"Zoom",zoomPeak:"Intensità zoom ({{n}}×)",zoomDuration:"Durata ({{n}}s)",zoomEaseIn:"Entrata ({{n}}%)",zoomEaseOut:"Uscita ({{n}}%)",zoomPickFocal:"Imposta il focus sull’anteprima",zoomPickCancel:"Annulla selezione",zoomDragHint:"Nell’anteprima: trascina il bersaglio rosa — o clicca il fotogramma — per mirare lo zoom",zoomFocalX:"Focus orizzontale ({{n}}%)",zoomFocalY:"Focus verticale ({{n}}%)",zoomHint:"Lo zoom entra, resta al picco e poi esce — come CapCut. Puoi anche trascinare la traccia sulla timeline.",zoomAdded:"Traccia zoom aggiunta — trascina il bersaglio rosa sull’anteprima",font:"Carattere",align:"Allineamento",background:"Sfondo",outline:"Contorno",animIn:"Animazione in entrata",animOut:"Animazione in uscita",captionStyle:"Stile sottotitoli",transition:"Transizione",filter:"Filtro",brightness:"Luminosità",contrast:"Contrasto",saturation:"Saturazione",kenBurns:"Movimento camera lento",speedRamp:"Rampa di velocità",fadeIn:"Dissolvenza in entrata ({{n}}s)",fadeOut:"Dissolvenza in uscita ({{n}}s)",brandKit:"Kit del brand",slowToFast:"Lento → veloce",fastToSlow:"Veloce → lento",overlayScale:"Scala",overlayOpacity:"Opacità",overlayRotation:"Rotazione ({{deg}}°)",overlayTint:"Colore",overlayX:"X ({{percent}}%)",overlayY:"Y ({{percent}}%)",overlayInspector:"Livello logo",stickerInspector:"Elemento",stickers:"Adesivi",stickersTitle:"Libreria stickers",stickerAdded:"Sticker aggiunto",elementsTitle:"Elementi",elementsHint:"Cerca e aggiungi forme, cornici, icone e sticker al montaggio",elementsSearch:"Cerca elementi…",elementsClearSearch:"Cancella ricerca",elementsCount:"{{count}} elementi",elementsEmpty:"Nessun elemento trovato",elementsEmptyHint:"Prova un’altra parola o scegli un’altra categoria",elementAdded:"Elemento aggiunto",elementsCatAll:"Tutti",elementsCat:{shapes:"Forme",lines:"Linee",frames:"Cornici",icons:"Icone",stickers:"Sticker",arrows:"Frecce",badges:"Badge",decor:"Decor"},posX:"Posizione X",posY:"Posizione Y",horizontalPosition:"Posizione orizzontale ({{percent}}%)",fillMode:"Riempimento",fillSolid:"Tinta unita",fillGradient:"Gradiente",gradientTo:"Colore fine gradiente",bgStyle:"Stile sfondo",shadowPreset:"Ombra",cta:"CTA",quickLooks:"Look rapidi",colorFilter:"Filtro colore",recordingVoice:"Registrazione… clicca per interrompere",startVoice:"Registra doppiaggio",ttsTitle:"Narrazione AI",tts:"Crea narrazione",ttsPlaceholder:"Scrivi il testo della narrazione…",ttsVoice:"Voce",ttsCost:"{{cost}} token",ttsNeedText:"Inserisci il testo della narrazione",ttsPaid:"La narrazione AI è disponibile solo per gli abbonati",ttsAdded:"Narrazione aggiunta alla traccia",ttsFailed:"Narrazione AI non riuscita — riprova",ttsDesignPronunciation:"Pronuncia per interior design (marmo, rivestimenti…)",voiceCloneTitle:"Registra la tua voce",voiceCloneCost:"{{cost}} token",voiceCloneHint:"Stanza silenziosa, microfono vicino — leggi il testo per 
596circa 30–60 secondi. Poi scegli “La mia voce” per la narrazione.",voiceCloneStart:"Registra la tua voce",voiceCloneReplace:"Registra di nuovo",voiceCloneStop:"Interrompi registrazione",voiceCloneUploading:"Caricamento…",voiceCloneCreating:"Creazione voce…",voiceCloneStatusReady:"Pronto",voiceCloneMine:"La mia voce",voiceCloneReady:"La tua voce è pronta — selezionala per la narrazione",voiceCloneFailed:"Creazione voce non riuscita — riprova in una stanza silenziosa",voiceCloneProviderFailed:"Servizio di clonazione voce non riuscito — riprova (registrazione chiara, 30–60 secondi)",voiceCloneNoId:"Il servizio non ha restituito un id voce — riprova",voiceClonePaid:"La registrazione della voce è disponibile solo per gli abbonati",voiceCloneTooShort:"Registra almeno {{sec}} secondi",voiceCloneTooLong:"Massimo {{sec}} secondi",voiceCloneDelete:"Elimina",voiceCloneDeleted:"La tua voce è stata eliminata",voiceCloneDeleteFailed:"Impossibile eliminare la voce",voiceCloneNoTokens:"Token insufficienti per creare la voce",voiceCloneTooLarge:"Registrazione troppo grande — prova una presa più breve",voiceCloneBadDuration:"La registrazione deve durare tra 15 e 90 secondi",voiceCloneRejected:"Registrazione rifiutata — riprova in una stanza silenziosa, microfono vicino",voiceCloneQuota:"Crediti di clonazione voce esauriti — contatta il supporto o riprova più tardi",voiceCloneSlotLimit:"Limite voci raggiunto — elimina “La mia voce” e riprova, o contatta il supporto",voiceCloneRateLimit:"Troppi tentativi — attendi un momento e riprova",voiceCloneConfig:"Servizio di clonazione voce non disponibile al momento",voiceCloneEmpty:"Nessuna registrazione valida — riprova",selectionHint:"Selezionato per la modifica — apri solo le impostazioni necessarie",selected:"Selezionato",durationShort:"{{duration}}s",audioClip:"Clip audio",textClip:"Testo selezionato",systemLogo:"Logo del sistema",myLogo:"Il mio logo",brandAdded:"Logo aggiunto",overlayAdded:"Grafica aggiunta",overlayFailed:"Impossibile caricare la grafica",overlayImageOnly:"Scegli un file immagine",smartClipsDone:"Clip intelligenti create",smartClipsNeedSelection:"Carica un video nella timeline (o seleziona una clip video)",smartClipsNeedVideo:"Le clip intelligenti funzionano solo sui video, non sulle immagini",smartClipsTooShort:"Il video è troppo corto — prova una clip di almeno ~8 secondi",smartClipsFailed:"Impossibile creare clip intelligenti",smartClipsHint:"Serve un video nella timeline",pipAdded:"Video fluttuante aggiunto",pipNeedVideo:"Aggiungi prima un video",addAsPip:"Aggiungi come video fluttuante",pipClip:"Video fluttuante",pipX:"Posizione orizzontale",pipY:"Posizione verticale",pipScale:"Dimensione",captionPlain:"Semplice",captionBox:"Riquadro",captionWord:"Parola attiva",captionHighlight:"Riga evidenziata",captionPreviewHint:"Anteprima",captionPreviewStart:"Questa è",captionPreviewActive:"la tua",captionPreviewEnd:"casa",captionsDone:"Sottotitoli aggiunti",captionsNeedVideo:"Seleziona una narrazione, un audio o una clip video con parlato",captionsNoMedia:"Impossibile trovare il media da trascrivere",captionsPaid:"I sottotitoli automatici sono disponibili solo per gli abbonati",captionsTooLarge:"Il file è troppo grande per creare i sottotitoli",captionsCors:"Questo media non è leggibile per i sottotitoli — carica un file locale",captionsEmpty:"Non è stato rilevato alcun parlato",captionsFailed:"Creazione sottotitoli non riuscita — riprova",textStyle:"Stile",textStyleHint:"Font, colore, sfondo e stile sottotitoli",position:"Posizione",positionHint:"Allineamento e posizione nel fotogramma",animation:"Animazione",animationHint:"Entrata e uscita",fontFamily:"Carattere",alignStart:"Destra",alignCenter:"Centro",alignEnd:"Sinistra",clearBackground:"Cancella",volumeTitle:"Volume",audioFades:"Entrata e uscita",audioFadesHint:"Transizioni graduali del volume",voiceoverAdded:"Doppiaggio aggiunto",voiceoverFailed:"Registrazione vocale non riuscita",micDenied:"Accesso al microfono negato",speedTitle:"Velocità",moreOptions:"Altre opzioni",speedRampFriendly:"Cambia la velocità lungo la clip",rampSlowFast:"Lento → veloce",rampFastSlow:"Veloce → lento",clearRamp:"Ripristina variazione di velocità",transitionOut:"Transizione",transitionDur:"Durata transizione ({{n}}
596s)",lookAndColor:"Look e colore",moreLooks:"Altri look",manualColor:"Regolazione manuale",resetColor:"Ripristina regolazioni",motionAndFrame:"Movimento e inquadratura",motionHint:"Movimento camera e video fluttuante",sizeAndPosition:"Dimensione e posizione",colorAndOpacity:"Colore e opacità",focusPoint:"Punto focale",zoomTiming:"Intensità e temporizzazione",ttsInsertFailed:"La narrazione è stata creata ma non è stato possibile aggiungerla alla timeline",ttsVoiceInvalid:"Scegli una voce valida per la narrazione",filterLabels:{none:"Nessuno",warm:"Caldo",cinematic:"Cinematografico",bright:"Luminoso",bw:"Bianco e nero",vivid:"Vivido",soft:"Morbido",cool:"Freddo",vintage:"Vintage",noir:"Noir",tealOrange:"Teal e arancione"},animLabels:{none:"Nessuna",fade:"Dissolvenza",slide:"Scorrimento",slideUp:"Dal basso",pop:"Pop",zoom:"Zoom",bounce:"Rimbalzo",blur:"Sfocatura soft",wipeLeft:"Tendina ←",wipeRight:"Tendina →"},shadowLabels:{none:"Nessuna",soft:"Morbida",hard:"Netta",glow:"Bagore"},bgLabels:{none:"Nessuno",box:"Riquadro",pill:"Pillola"},transitionLabels:{none:"Nessuna",fade:"Dissolvenza",dissolve:"Dissolvenza incrociata",wipe:"Tendina",zoom:"Zoom"},ttsVoices:{womanCalm:"Donna — calma",womanWarm:"Donna — calda",womanNarrator:"Donna — narratrice",manTrustworthy:"Uomo — affidabile",manDeep:"Uomo — profondo",manAuthoritative:"Uomo — autorevole"},upgrade:"Upgrade",transitionHint:"La transizione compare alla fine della clip. Selezionandola si salta lì per vederla.",transitionPreview:"Transizione a fine clip — riproduzione per mostrarla",lookHint:"Il look si aggiorna subito nell’anteprima — prova B&N o Vivid.",kenBurnsOn:"Movimento camera attivo",kenBurnsHint:"Zoom e pan lenti sulla clip — attivalo e guarda l’anteprima.",kenBurnsPreview:"Movimento camera attivo — riproduzione dall’inizio",dragReorder:"Trascina per riordinare",rateLimited:"Troppe richieste — attendi un momento e riprova",secondsShort:"{{sec}}s"},preview:{empty:"Trascina una clip sulla timeline per iniziare 🎬",muteOriginalTitle:"Silenzia l’audio originale del video",muteOriginal:"Silenzia audio originale",exportFrame:"Fotogramma di export",pause:"Pausa",play:"Play",enhanceSpeech:"Migliora voce",enhanceSpeechTitle:"Pulisci il dialogo con un filtro vocale",pickFocal:"Clicca il punto di messa a fuoco",dragFocal:"Trascina il punto di focus · o clicca il fotogramma",dragElement:"Trascina per spostare l’elemento · angoli per ridimensionare",dragText:"Trascina per spostare il testo",scaleElement:"Trascina un angolo per ridimensionare"},export:{unsupported:"Questo browser non supporta l’esportazione (WebCodecs). Prova Chrome o Edge su desktop.",noVideo:"Non c’è video da esportare — aggiungi una clip alla timeline",finishing:"Finalizzazione…",rendering:"Rendering…",ready:"Il video è pronto! 🎉 Il download è iniziato",readyResults:"Il video è pronto! Download + salvato nei Risultati 🎉",emptyTimeline:"La timeline è vuota",unsupportedShort:"Questo browser non supporta l’esportazione",audioDropped:"Video esportato senza musica/narrazione — controlla il file audio",corsTainted:"Impossibile esportare media esterni senza CORS — carica un file locale o salva prima sul cloud",mediaLoadFailed:"Caricamento media per l’export fallito — controlla i file e riprova",failed:"Esportazione fallita — riprova",title:"Esporta MP4",keepOpen:"Non chiudere la finestra durante il rendering",aspect:"Formato — il video riempie il fotogramma (i lati vengono ritagliati se il formato cambia)",resolution:"Risoluzione",exportNow:"Esporta ora",preset:"Destinazione",thumbnail:"Miniatura preferita (Risultati / anteprima)",saveResults:"Salva anche nei Risultati Studio",saveResultsHint:"Il download locale è sempre gratuito. Questa opzione carica il file nei Risultati.",saveResultsLocked:"Il salvataggio nei Risultati è disponibile per gli utenti a pagamento. ",upgrade:"Upgrade",uploadingResults:"Salvataggio nei Risultati…",resultsPaid:"Download riuscito. Il salvataggio nei Risultati è per utenti a pagamento.",resultsFailed:"Download riuscito, ma il salvataggio nei Risultati è fallito",upsellResults:"Vuoi salvare il video anche nei Risultati Studio? Passa a un piano a pagamento",downloadOnlyHint:"Il video viene scaricato solo sul tuo computer — non viene salvato nel nostro cloud.",cancel:"Annulla esportazione",cancelled:"Esportazione annullata",seekStalled:"Il video non risponde all'esportazione — prova a ricaricare la pagina o a caricare di nuovo il file",preparingAudio:"Preparazione audio…",fourKHint:"Il 4K è più lento e richiede una sorgente di alta qualità. Se la sorgente è 1080 — non c’è un vero guadagno.",fourKUnsupported:"Questo computer/browser non supporta l’esportazione a questa risoluzione — prova 1080p",subscribersOnly:"Il download del video è disponibile solo per gli abbonati",subscribersOnlyHint:"Il download è riservato agli abbonati. La modifica resta gratuita — per scaricare serve un abbonamento attivo."},coach:{recordTitle:"Registra qui",recordBody:"Registra lo schermo (con microfono) o carica clip dal pannello media / le tue creazioni.",cutTitle:"Taglia qui",cutBody:"Sposta la testina sulla timeline e clicca le forbici (o S). Puoi anche registrare lo schermo o trascinare dalle tue creazioni.",captionsTitle:"Sottotitoli e testo qui",captionsBody:"Aggiungi titoli, loghi e sottotitoli automatici in ebraico dal pulsante didascalie in Strumenti.",musicTitle:"Aggiungi musica qui",musicBody:"Scegli dalla libreria musicale o carica una traccia — regola volume e fade.",exportTitle:"Esporta qui",exportBody:"L’export MP4 scarica sempre in locale. Il salvataggio nei Risultati Studio è per utenti a pagamento.",skip:"Salta",next:"Avanti",done:"Andiamo 🎬"}
596,recorder:{title:"Registrazione schermo",hint:"Scegli schermo o scheda nel browser. Spunta “Share tab audio” per l’audio di sistema.",mic:"Microfono",systemAudio:"Audio di sistema / scheda",webcam:"Fotocamera in cerchio",webcamHint:"Un piccolo cerchio con te appare nell’angolo — incluso nella registrazione (non solo nell’anteprima).",webcamDenied:"Impossibile accedere alla fotocamera — continuiamo solo con lo schermo",micDenied:"Continuiamo senza microfono",corner:"Posizione del cerchio",cornerTl:"In alto a sinistra",cornerTr:"In alto a destra",cornerBl:"In basso a sinistra",cornerBr:"In basso a destra",chromeNote:"Funziona meglio su Chrome / Edge",start:"Avvia registrazione",acquiring:"Scegli cosa registrare…",getReady:"Preparati…",livePreview:"Anteprima dal vivo di ciò che viene registrato (solo visualizzazione)",previewHint:"Così apparirà la registrazione — incluso il cerchio della fotocamera se attivo.",recording:"Registrazione…",processing:"Elaborazione…",stop:"Stop",cancel:"Annulla",retake:"Registra di nuovo",addToEdit:"Aggiungi all’editor",cancelled:"Registrazione annullata",failed:"Impossibile avviare la registrazione",stopFailed:"Arresto registrazione non riuscito",added:"Registrazione aggiunta all’editor 🎬",addFailed:"Impossibile aggiungere alla timeline",longWarning:"La registrazione si avvicina al limite — si fermerà automaticamente tra 5 minuti",maxReached:"Limite di durata raggiunto — la registrazione è stata fermata e salvata",liveError:"Errore di registrazione — fermiamo e salviamo quanto registrato",hiddenTabNotice:"Quando la scheda dell'editor è nascosta, la registrazione con la bolla viene salvata a frame rate ridotto",webcamFpsHint:"Suggerimento: tieni visibile la scheda dell'editor durante la registrazione — se nascosta, il frame rate della bolla diminuisce."},media:{title:"Media",record:"Registra",upload:"Carica",empty:"Nessun media — trascina file qui o clicca Carica",onlyMedia:"Solo file video, audio o immagine",addedOne:"Aggiunto ai media",addedMany:"{{count}} file aggiunti",loadFailed:"Caricamento media non riuscito",sendToTimeline:"Invia alla timeline",delete:"Elimina"},premium:{checking:"Verifichiamo l'abbonamento…",checkFailed:"Non siamo riusciti a verificare l'abbonamento. Riproviamo…"}},nz={title:"Il video non è riuscito questa volta",defaultReason:"A volte succede per il carico del provider video. Riprova tra un momento.",refundNote:"Se sono stati addebitati token per questo tentativo, sono stati rimborsati automaticamente.",close:"Ho capito, riproverò"},sz={modelName:"Seedance 2.5",settings:{resolution:"Risoluzione",resolution480p:"Standard 480p",resolution720p:"Qualità 720p",aspectRatio:"Formato",aspectRatioFromImage:"Impostato automaticamente dall'immagine iniziale",duration:"Durata",generateAudio:"Genera audio (+2 token)",generateAudioOff:"Senza audio"}},lz={costDetail:"{{rate}} token/sec × {{seconds}} secondi fatturati (minimo 5)",inputHint:"Immagine JPG o PNG fino a 10MB · 3–15 secondi"},cz={subtitle:"Video da riferimenti · 2K",inputHint:"Combina riferimenti immagine, video e audio. Descrivi cosa usare da ciascun riferimento.",videoTitle:"Riferimenti video",audioTitle:"Riferimenti audio",addVideo:"Aggiungi video",addAudio:"Aggiungi audio",removeReference:"Rimuovi riferimento",maxFileSize:"Fino a {{max}} MB per file",costDetail:"3 token × {{seconds}} secondi = {{total}} token",errors:{promptRequired:"Descrivi il video prima di generarlo.",needReference:"Aggiungi almeno un riferimento immagine, video o audio.",tooManyReferences:"Puoi usare fino a 9 immagini, 3 video e 3 file audio.",invalidSettings:"Scegli una durata di 4–15 secondi e un formato valido. È supportato solo 2K.",fileTooLarge:"{{name}}: la dimensione massima è {{max}} MB.",unsupportedFormat:"Formato file non supportato: {{name}}"}},dz={workspace:T6,topBar:j6,leftRail:N6,modeToggle:P6,o1WorkflowToggle:A6,veoWorkflowToggle:E6,assistantPanel:I6,assistantChat:D6,promptCard:R6,shotCard:L6,cameraOptions:O6,resultCard:M6,startImageCard:z6,endImageCard:B6,sourceImageCard:F6,videoUploadCard:$6,referenceImagesPanel:V6,grokImagesCard:U6,addShotButton:q6,elementCard:G6,elementsPanel:W6,resultsSidebar:H6,videoLightbox:K6,resultsDock:Y6,extendedResultCard:Q6,extendPromptInput:J6,timelineVisualization:X6,mediaSidebar:Z6,characterSidebar:ez,assistant:tz,toasts:az,seedance2:iz,aspectRatios:oz,boardCut:rz,failureModal:nz,seedance25:sz,kling3Turbo:lz,minimaxH3:cz},uz={backToDashboard:"חזרה ללוח הבקרה",getStarted:"התחל עכשיו",materials:"חומרים",materialsDesc:"מאגר חומרים להשראה",pricing:"מחירים",pricingDesc:"תוכניות פשוטות ושקופות",aiAgent:"סוכן AI",aiAgentDesc:"שותפי AI מתמחים",features:"יכולות",featuresDesc:"כל הכלים במקום אחד"},mz={tryFree:"נסו חינם - ללא כרטיס אשראי",tryFreeShort:"נסו חינם",getStartedFree:"התחל בחינם",learnMore:"למד עוד",gotIt:"הבנתי",cancel:"ביטול",copyLink:"העתק קישור",copied:"הועתק!",openInBrowser:"פתח בדפדפן",useEmailInstead:"השתמש באימייל במקום",toggle:"החלף"},pz={switchToLight:"עבור למצב בהיר",switchToDark:"עבור למצב כהה"},hz={interiorVibingPlatform:"פלטפורמת עיצוב פנים"},gz={title:"אין מספיק טוקנים",description:"אין לך מספיק טוקנים כדי להשתמש ביכולת הזו.",feature:"יכולת:",requiredTokens:"טוקנים נדרשים:",yourBalance:"יתרתך:",tokensNeeded:"טוקנים חסרים:",cta:"רכשו טוקנים נוספים כדי להמשיך להשתמש ביכולות מבוססות AI ולממש את מלוא הפוטנציאל של תהליך העבודה היצירתי שלכם.",buyTokens:"רכישת טוקנים"},fz={eyebrow:"עדכון מערכת",title:"גרסה חדשה של Boardspace זמינה",description:"עדכנו ושיפרנו את המערכת. מומלץ לעדכן כדי להמשיך בגרסה היציבה ביותר.",note:"כדאי לסיים פעולה פעילה לפני העדכון. לאחר מכן תחזרו בדיוק לאותו המסך.",updateNow:"עדכון עכשיו",later:"אחר כך",progress:{title:"מעדכנים את Boardspace",saving:"ממתין לשמירת העבודה…",preparing:"מכין את הגרסה החדשה…",loading:"טוען רכיבי מערכת…",activating:"מפעיל את הגרסה החדשה…",complete:"העדכון הושלם",completeTitle:"הגרסה החדשה מוכנה"},error:{eyebrow:"העדכון נעצר",title:"לא הצלחנו להשלים את העדכון",status:"נדרשת פעולה",description:"העבודה נשארה במקומה. אפשר לנסות שוב או להמשיך זמנית בגרסה הנוכחית.",code:"קוד תקלה: {{
596code}}",retry:"נסה שוב",continue:"המשך בגרסה הנוכחית"}},bz={nav:uz,buttons:mz,theme:pz,footer:hz,insufficientTokens:gz,appUpdate:fz},vz={title1:"סקיצה להדמיה מקצועית",title2:"ב-30 שניות",subtitle:"נמאס לשלם לסטודיו <strong>400-2,000 ש״ח</strong> לרנדר ולחכות <strong>2-3 ימים</strong> לכל שינוי",tokensOffer:"נסו עכשיו — 50 נסיונות חינם",limitedOffer:"ללא כרטיס אשראי"},yz={title1:"הסטודיו החדש שלך,",title2:"היא",titleHighlight:"בינה מלאכותית",subtitle:"הכירו את בורדי - מעצבת פנים, היא חכמה וגם מבינה עברית",tokensOffer:"נסו עכשיו — 50 נסיונות חינם",limitedOffer:"ללא כרטיס אשראי",getStarted:"התחילו עכשיו",designersSaved:"• 750 מעצבים חסכו $450K בחודש שעבר •",freeForever:"חינם לנצח",trustBadge:"50 נסיונות חינם — ללא כרטיס אשראי"},xz={title:"ברוכים הבאים מעצבים!",p1:"אנחנו בונים קהילה יצירתית - כל מי שמשתף את העיצובים שלו מקבל טוקנים בחינם!",p2:"הצטרפו מוקדם לשימוש חינמי בלתי מוגבל - ללא צורך בכרטיס אשראי.",p3:"אנחנו רוצים לראות את הרעיונות שלכם: פרסמו תמונות, סרטונים או מודלים תלת-ממדיים של עיצוב פנים/חוץ.",p4:"אתם בוחרים לשתף בשמכם או באנונימיות.",p5:"זה כדי לעורר השראה אחד בשני ולעזור לכולם לצמוח."},wz={styleMatch:{title:"StyleMatch",description:"ניצור עבורכם 6-8 חדרים פוטוריאליסטיים שמשקפים בדיוק את הסגנון, סיפור הצבע ובחירות החומרים של התמונה שלכם - הכל מאוגד בלוח הצגה אחד.",tooltip:"יצירת עקביות עיצובית רב-חללית"},designDNA:{title:"DesignDNA",description:"נלמד את האסתטיקה שלכם ונבחר ידנית 10-15 פריטי ריהוט ועיצוב - כולל דוגמיות צבע - שמתאימים בצורה מושלמת למראה הייחודי שלכם.",tooltip:"חילוץ DNA עיצובי ופריטים נבחרים"},kitchenBoard:{title:"KitchenBoard",description:"נייצר שש וריאציות ייחודיות של חומרים ופלטות צבעים לעיצוב המטבח שלכם, בהשראת טרנדים העדכניים ממילאנו 2024-2025.",tooltip:"יצירת 6 וריאציות של חומרים וצבעים למטבח"}},kz={designersSaved:"250+ מעצבים חסכו $450K בחודש שעבר",freeForever:"חינם לנצח"},_z={before:"לפני",after:"אחרי"},Sz="ראו איך זה עובד",Cz={headline:'האיצו את קבלת <span class="text-[#E60023] dark:text-[#FF6B6B]">החלטות הלקוח</span>',description:"מסקאצ׳ <span class='text-emerald-500 font-bold'>›</span> לרנדר <span class='text-emerald-500 font-bold'>›</span> הוספת חומרים <span class='text-emerald-500 font-bold'>›</span> התאמת סגנון <span class='text-emerald-500 font-bold'>›</span> וידאו עם סאונד. תהליך עבודה מלא 3 דק, עלות 3 שקלים. סטודיו רנדרינג: 6000 ש״ח _ שבועיים המתנה",comingSoon:"וידאו בקרוב",duration:"3 דקות",cost:"סה״כ 3 ש״ח",output:"וידאו + רנדרים",costBreakdown:{title:"כל תהליך העבודה הזה עלה <strong>3 ש״ח</strong> ולקח 3 דקות:",sketch:"סקיצה ← רנדר (20 אג׳)",material:"החלפת חומר (40 אג׳)",styleMatch:"מצגת StyleMatch (40 אג׳)",video:"וידאו עם סאונד (2 ש״ח)",studio:"סטודיו רנדרינג לאותה חבילה: <strong>2,000-3,000 ש״ח + שבוע.</strong>"}},Tz={title:'למדו לעצב כמו <span class="text-[#E60023] dark:text-[#FF6B6B]">מקצוענים</span>'},jz={uploadImage:"תמונה שהועלתה",beforeImage:"תמונה לפני",finalResult:"תוצאה סופית",demoComingSoon:"דמו בקרוב",everythingAutomatic:"הכל אוטומטי",oneClick:"לחיצה אחת",workflowsCount:"{{count}} וורקפלאוז",title1:"העלו תמונה, לחצו play,",title2:"הוורקפלאוז עושה הכל אוטומטית",de
596scription:"{{total}} וורקפלאוז זמינים - {{videos}} סרטונים ו-{{images}} תמונות. המשתמשים אוהבים את זה כי אין צורך בפרומפטים, אין צורך לכתוב - פשוט גררו תמונה לוורקפלאוז, לחצו play וקבלו את התוצאה.",uploadImageLabel:"העלה תמונה",everythingAutomaticDesc:"פשוט גררו תמונה והעבודה מתחילה",oneClickDesc:"לחצו play והתוצאה מוכנה תוך דקות",workflowsDesc:"{{videos}} סרטונים ו-{{images}} תמונות - הכל במקום אחד"},Nz={generalBadge:"כללי",badge:"אקדמיית Boardspace",headline:"למדו לעצב כמו מקצוענים",description:"סרטוני הדרכה קצרים וממוקדים שיעזרו לכם להתחיל ליצור עיצובים מדהימים תוך דקות",watchAll:"צפו בכל השיעורים",lessonsAvailable:"{{count}} שיעורים זמינים • עוד בקרוב"},Pz={badge:"פודקאסט שלנו",title:"בינה מלאכותית בעולמות העיצוב והאדריכלות 🏚️",subtitle:"פרק 150 עם חיים לגזיאל וטל בניש — פודקאסט AI פשוט",iframeTitle:"פודקאסט AI פשוט - פרק 150",watchOnYouTube:"צפו ב-YouTube"},Az={title:"כל מודלי ה-AI הטובים ביותר. ווייב אחד."},Ez={title:"250+ מעצבים החליפו V-Ray ב-AI",subtitle:"הם חסכו <strong>1.8 מיליון ש״ח</strong> בחודש שעבר. כל תמונה למטה עלתה <strong>20 אג׳</strong> ולקחה פחות מ-10 שניות ליצירה.",stats:{designers:"250+ מעצבים",saved:"נחסכו 1.8M ש״ח",cheaper:"95% זול יותר מסטודיו"}},Iz="לפני (סקיצה)",Dz="אפשרות",Rz="תוצאות אמיתיות מהוידאו למעלה",Lz="פקודות קוליות בקרוב",Oz={title:'גלו את <span class="text-[#E60023] dark:text-[#FF6B6B]">ספריית החומרים</span> שלנו',subtitle:"עיינו בספריית החומרים המאורגנת שלנו וראו איך הם משנים את העיצובים שלכם עם רנדרינג מבוסס AI.",items:{brownLeather:"עור חום",woodWallPanel:"פנל קיר עץ",oxidizeFloor:"רצפה מחומצנת",warmTaupeBoucle:"בוקלה טאופ חם"},featuresList:{materialLibrary:{title:"ספריית חומרים",description:"מאות חומרים אמיתיים מוכנים ליישום"},aiTransformation:{title:"טרנספורמציה AI",description:"הדמיה מיידית עם רנדרינג מבוסס AI"},realTimePreview:{title:"תצוגה מקדימה בזמן אמת",description:"ראו שינויים מיד בזמן העיצוב"}}},Mz={title:'בחרו את התוכנית <span class="text-[#E60023] dark:text-[#FF6B6B]">שלכם</span>',subtitle:"התחילו בחינם עם 5 עריכות AI, ואז שדרגו לפתיחת יכולות ללא הגבלה",free:{name:"חינם",description:"מושלם להתחלה",features:{unlimitedBoards:"לוחות ללא הגבלה",signupTokens:"5 עריכות חינם",earnTokens:"הרווח טוקנים על ידי צפייה בסרטונים"}},perMonth:"/חודש",tokensPerMonth:"טוקנים/חודש",everythingInFree:"הכל מהחבילה החינמית",priorityProcessing:"עיבוד AI מועדף",unlimitedCollaborators:"משתפי פעולה ללא הגבלה",mostPopular:"הכי פופולרי",whatCanIDo:"מה אפשר לעשות עם {{tokens}} טוקנים?",getStarted:"התחילו עכשיו",planNames:{starter:"התחלה",pro:"מקצועי",enterprise:"ארגוני"},tokenUsage:{quickEdit:"עריכות מהירות + סקיצה למציאות",complexEditing:"עריכה מורכבת ותמונות רמיקס",videosWithSound:"וידאו עם סאונד",interiorPresentations:"מצגות פנים","3dModels":"מודלים תלת-ממדיים",upscale:"הגדלה: חינם, ללא הגבלה",removeBackground:"הסרת רקע: חינם, ללא הגבלה"}},zz={title:'מספר תמונות ל<span class="text-[#E60023] dark:text-[#FF6B6B]">עיצוב אחיד</span>
596 אחד',subtitle:"צפו איך אנחנו משלבים בצורה חלקה 3 תמונות שונות לסלון מעוצב אחד עם עקביות עיצובית מבוססת AI"},Bz={title:"הקנבס האינסופי שלכם, Boardspace ללא גבולות",subtitle:"קנבס ללא הגבלה שבו לרעיונות שלכם אין גבולות. צרו, ארגנו ושתפו פעולה על מרחבי עיצוב אינסופיים ללא מגבלות.",items:{endlessSpace:{title:"מרחב אינסופי",description:"ללא גבולות, ללא הגבלות. ה-Boardspace שלכם מתרחב לאינסוף ככל שאתם מוסיפים רעיונות, תמונות ועיצובים."},unlimitedOrganization:{title:"פרוייקטים ללא הגבלה",description:"צרו לוחות ופרויקטים ללא הגבלה. ארגנו הכל מהשראה ועד עיצובים סופיים במרחב עבודה אינסופי אחד."},seamlessCollaboration:{title:"שיתוף עם חברי צוות",description:"שתפו את הקנבס האינסופי שלכם עם חברי צוות. שתפו פעולה בזמן אמת על מרחבי עיצוב אינסופיים."},everythingInOnePlace:{title:"הכל במקום אחד",description:"תמונות, סרטונים, חומרים, יצירות AI - הכל על קנבס אינסופי אחד שגדל עם היצירתיות שלכם."},pinterestIntegration:{title:"אינטגרציה עם Pinterest",description:"ייבאו פינים ישירות לקנבס האינסופי שלכם. חינם לנצח - ללא צורך בטוקנים. הביאו השראה מ-Pinterest למרחב העבודה האינסופי שלכם."}}},Fz={tagline:"הקנבס האינסופי למעצבי פנים מקצועיים וחובבים. איפה שהשראה הופכת למציאות.",newsletter:{title:"קבלו טיפים ועדכונים לעיצוב",placeholder:"[email protected]",subscribe:"הירשם"},sections:{product:"מוצר",resources:"משאבים",promptGuides:"מדריכי פרומפטים למעצבי פנים",company:"חברה"},links:{features:"יכולות",pricing:"מחירים",workflows:"וורקפלאוז",creators:"יוצרים",roadmap:"מפת דרכים",documentation:"תיעוד",academy:"אקדמיה",blog:"תובנות עיצוב וכלי AI",promptGuide:"מדריך פרומפטים ננו בננה",videoPromptGuide:"מדריך פרומפטים Kling O1 Image to Video",gptImagePromptGuide:"מדריך פרומפטים GPT-image-1.5",veoPromptGuide:"מדריך פרומפטים Veo 3.1",soraPromptGuide:"מדריך פרומפטים Sora 2",grokPromptGuide:"מדריך פרומפטים Grok Video",allPromptGuides:"כל מדריכי הפרומפטים",gptImage2PromptGuide:"מדריך פרומפטים GPT Image 2",seedancePromptGuide:"מדריך פרומפטים Seedance 2",geminiOmniPromptGuide:"מדריך פרומפטים Gemini Omni",kling3PromptGuide:"מדריך פרומפטים Kling 3",floorPlanTo3D:"מתוכנית קומה לתלת מימד",ourStory:"הסיפור שלנו: הפיכת השראה למציאות",careers:"קריירה ב-Boardspace",privacy:"פרטיות",terms:"תנאים",buyerTerms:"תנאי קונים",creatorAgreement:"הסכם קריאייטורים",accessibility:"נגישות"},copyright:"© 2025 BoardSpace.ai — נבנה עם אהבה לאוהבי עיצוב",madeWith:"נעשה עם ❤️ עבור קהילת עיצוב הפנים"},$z={badge:"מה מגיע בהמשך",title:"מפת דרכים",subtitle:"אנחנו בונים כל הזמן תכונות חדשות ומשפרים את Boardspace. הנה מה שאנחנו עובדים עליו ומה מגיע בהמשך.",status:{completed:"הושלם",inProgress:"בתהליך",planned:"מתוכנן"},items:{2026:{title:"הרחבת הפלטפורמה",description:"התרחבות לשווקים חדשים והוספת תכונות ארגוניות.",features:["אפליקציות מובייל (iOS ו-Android)","ויזואליזציה AR/VR","SSO ארגוני ואבטחה","API ו-webhooks","פתרונות White-label"]}
596,q4_2024:{title:"השקת הפלטפורמה המרכזית",description:"השקנו את הקנבס האינסופי עם יצירת תמונות מבוססת AI ואינטגרציית Pinterest.",features:["קנבס אינסופי עם שיתוף פעולה בזמן אמת","יצירת תמונות AI עם מודלים מרובים","אינטגרציית Pinterest ולוחות השראה","מערכת תמחור מבוססת טוקנים","בנק ספריית חומרים"]},q1_2025:{title:"וידאו AI ותכונות מתקדמות",description:"הרחבנו את יכולות ה-AI עם יצירת וידאו וכלי שיתוף פעולה משופרים.",features:["יצירת וידאו (Kling, WAN, LTX, Seedance)","אוטומציה של זרימת עבודה מרובת זוויות","לוחות שיתוף פעולה עם לקוחות","סוכני AI מתקדמים (StyleMatch, DesignDNA, KitchenBoard)","אינטגרציית מודלים תלת-ממדיים"]},q2_2025:{title:"AI משופר וכלי זרימת עבודה",description:"שיפור איכות ה-AI, הוספת מודלים חדשים, וזירוז זרימות עבודה של מעצבים.",features:["אינטגרציית Flux 2.0 Pro","תמיכה ב-Nano Banana Pro","הנדסת פרומפטים מתקדמת","יכולות עיבוד אצווה","אימון מודל AI מותאם אישית"]},q3_2025:{title:"שיתוף פעולה ותכונות צוות",description:"בניית כלי שיתוף פעולה וניהול פרויקטים חזקים לצוותים.",features:["מרחבי עבודה של צוות והרשאות","עריכה משותפת בזמן אמת","ספריית תבניות פרויקטים","מצב מצגת לקוח","היסטוריית גרסאות וחזרה"]},q4_2025:{title:"בינה עיצובית ואוטומציה",description:"סיוע עיצובי מבוסס AI ואופטימיזציה אוטומטית של זרימת עבודה.",features:["המלצות סגנון חכמות","התאמת חומרים אוטומטית","כלי הערכת עלויות","אינטגרציית ספקים","ניתוח טרנדים עיצוביים"]}},cta:{badge:"יש לך רעיונות?",title:"אנחנו נשמח לשמוע את המשוב שלכם ובקשות תכונות. הקלט שלכם עוזר לעצב את העתיד של Boardspace.",button:"שתפו את הרעיונות שלכם"},keyFeatures:"תכונות מרכזיות"},Vz={badge:"מדריך מלא",title:"תיעוד",subtitle:"כל מה שאתם צריכים לדעת כדי ליצור עיצובים מדהימים עם Boardspace",searchPlaceholder:"חפש בתיעוד...",sections:{gettingStarted:{title:"התחלה",description:"למדו את היסודות והתחילו ליצור עיצובים יפים",articles:{creatingFirstProject:{title:"יצירת הפרויקט הראשון שלכם",content:"התחילו בלחיצה על 'פרויקט חדש' בדשבורד שלכם. תנו לו שם ובחרו גודל קנבס. תמיד תוכלו לשנות את הגודל מאוחר יותר. לאחר יצירה, יהיה לכם קנבס אינסופי לעבוד איתו."},understandingCanvas:{title:"הבנת הקנבס",content:"הקנבס הוא מרחב העבודה שלכם שבו כל אלמנטי העיצוב שלכם חיים. אתם יכולים לעשות זום, להזיז ולארגן תמונות בחופשיות. השתמשו בסרגל הכלים משמאל לכלים, ובסרגל הצד מימין לתכונות AI."},uploadingImages:{title:"העלאת תמונות",content:"גררו ושחררו תמונות ישירות על הקנבס שלכם, או השתמשו בכפתור ההעלאה. פורמטים נתמכים: JPG, PNG, WebP. התמונות מותאמות אוטומטית לטעינה מהירה."},navigationBasics:{title:"יסודות ניווט",content:"השתמשו בגלגל העכבר לעשות זום, לחצו וגררו כדי להזיז. לחצו פעמיים על כל תמונה כדי לפתוח אותה בתצוגה מלאה. לחצו ימני לתפריטי הקשר עם פעולות מהירות."}}},aiFeatures:{title:"תכונות AI",description:"שלטו בכלי העיצוב המונעים על ידי AI שלנו",articles:{aiImageGeneration:{title:"יצירת תמונות AI",content:"צרו עיצובי פנים פוטוריאליסטיים מפרומפטים טקסטואליים. השתמשו בפרומפטים תיאוריים כמו 'סלון מודרני עם אור טבעי' לתוצאות הטובות ביותר. כל יצירה עולה 5 טוקנים ($0.05)."},videoGeneration:{title:"יצירת וידאו",content:"צרו סרטונים של 10 שניות מ-2 תמונות באמצעות מודלי הווידאו שלנו (Kling, WAN, LTX, Seedance). העלו מסגרת התחלה וסיום, וה-AI יאנימציה את המעבר. עולה 15-30 טוקנים בהתאם לאיכות."},aiAgentsOverview:{title:"סקירת סוכני AI",content:"סוכני ה-AI המקצועיים שלנו עוזרים במשימות ספציפיות: StyleMatch יוצר חדרים עקביים בסגנון, DesignDNA מוצא ריהוט תואם, ו-KitchenBoard מייצר וריאציות מטבח."},promptEngineeringTips:{title:"טיפים להנדסת פרומפטים",content:"היה ספציפי לגבי סגנון, צבעים, חומרים ואווירה. כלול סוג חדר, תאורה ואווירה. דוגמה: 'חדר שינה סקנדינבי עם קירות לבנים, ×¢×¥ טבעי, אור בוקר רך, עיצוב מינימליסטי'."},imageToImageTransformations:{title:"טרנספורמציות תמונה לתמונה",content:"העלו סקיצה או תמונת התייחסות והפכו אותה לרנדרים פוטוריאליסטיים. מושלם לוויזואליזציה מהירה של רעיונות לקוח. עובד עם סקיצות, לוחות השראה או תמונות קיימות."}}},canvasCollaboration:{title:"קנבס ושיתוף פעולה",description:"עבדו יחד בצורה חלקה",articles:{infiniteCanvas:{title:"קנבס אינסופי",content:"לקנבס שלכם אין ×
596’בולות. ארגנו פרויקטים אופקית או אנכית. השתמשו במסגרות כדי לקבץ תמונות קשורות. הקנבס שומר אוטומטית כל שינוי, כך שלעולם לא תאבדו את העבודה שלכם."},clientCollaborationBoards:{title:"לוחות שיתוף פעולה עם לקוחות",content:"שתפו לוחות ספציפיים עם לקוחות למשוב. הם יכולים לצפות, להגיב ולאשר עיצובים ללא צורך בחשבון. מושלם להצגת קונספטים ואיסוף אישורים."},teamWorkspaces:{title:"מרחבי עבודה של צוות",content:"הזמינו חברי צוות לשתף פעולה בזמן אמת. ראו את הסמנים של זה, שינויים מופיעים מיידית. מושלם לצוותי עיצוב שעובדים על אותו פרויקט."},pinterestIntegration:{title:"אינטגרציית Pinterest",content:"ייבאו השראה ישירות מ-Pinterest. לחצו על כל סיכה של Pinterest כדי להוסיף אותה לקנבס שלכם מיידית. שמרו את כל ההשראה שלכם במקום אחד."},sharingExporting:{title:"שיתוף וייצוא",content:"ייצאו את הלוחות שלכם כתמונות ברזולוציה גבוהה או PDFs. שתפו דרך קישור עם הרשאות צפייה בלבד או עריכה. מושלם למצגות ומסירות לקוח."}}},tokenSystem:{title:"מערכת טוקנים",description:"הבינו את מודל התמחור שלנו",articles:{whatAreTokens:{title:"מה הם טוקנים?",content:"טוקנים הם נקודות זכות המשמשות לגישה לתכונות AI. לכל תכונה יש עלות טוקנים. 1 טוקן = $0.01. רוב יצירות התמונות עולות 5 טוקנים ($0.05), סרטונים עולים 15-30 טוקנים בהתאם לאיכות."},freeTokens:{title:"טוקנים חינם",content:"כל משתמש חדש מקבל 5 טוקנים חינם להתחלה. תוכלו להרוויח טוקנים נוספים על ידי צפייה בסרטוני הדרכה קצרים. השתמשו בהם כדי לחקור את כל התכונות ללא תשלום."},tokenCostsByFeature:{title:"עלויות טוקנים לפי תכונה",content:"יצירת תמונה: 5 טוקנים | וידאו (480p): 15 טוקנים | וידאו (720p): 20 טוקנים | וידאו (1080p): 30 טוקנים | סוכני AI: 10-15 טוקנים | יצירה תלת-ממדית: 25 טוקנים"},purchasingTokens:{title:"רכישת טוקנים",content:"קנו חבילות טוקנים כשאתם צריכים יותר. חבילות מתחילות ב-$10 עבור 1,000 טוקנים. חבילות גדולות יותר מציעות ערך טוב יותר. טוקנים לעולם לא פגים, אז קנו מתי שנוח."},trackingUsage:{title:"מעקב שימוש",content:"צפו במאזן הטוקנים שלכם בפינה הימנית העליונה. ראו היסטוריית שימוש מפורטת בהגדרות. קבלו התראה כשיש מעט טוקנים כדי שלא תגמרו באמצע פרויקט."}}},bestPractices:{title:"שיטות עבודה מומלצות",description:"טיפים ממעצבים מקצועיים",articles:{organizingProjects:{title:"ארגון פרויקטים",content:"צרו פרויקטים נפרדים לכל לקוח או שלב עיצוב. השתמשו בשמות תיאוריים. קבצו תמונות קשורות במסגרות. שמרו על הקנבס שלכם מאורגן לניווט קל."},optimizingAiPrompts:{title:"אופטימיזציה של פרומפטים AI",content:"התחילו עם סוג החדר, ואז הוסיפו סגנון, צבעים, חומרים, תאורה ואווירה. היו ספציפיים אבל תמציתיים. התייחסו לסגנונות מפורסמים אם זה עוזר (למשל, 'Mid-century modern')."},workflowEfficiency:{title:"יעילות זרימת עבודה",content:"השתמשו ב-AI כדי ליצור וריאציות מרובות במהירות. השוו זה לצד זה. שמרו מועדפים. חזרו על הקונספטים הטובים ביותר. חסכו זמן על רנדור ידני."},materialReferenceBank:{title:"בנק ספריית חומרים",content:"עיינו בספריית החומרים המתועשת שלנו. החילו חומרים על העיצובים שלכם מיידית. ראו איך חומרים שונים נראים בהקשר לפני רכישה."},clientPresentations:{title:"מצגות לקוח",content:"צרו לוחות מצגת עם אפשרויות מרובות. השתמשו במסגרות כדי לארגן קונספטים. ייצאו כ-PDF לפגישות לקוח. קבלו משוב ישירות על הקנבס."}}},troubleshooting:{title:"פתרון בעיות",description:"בעיות נפוצות ופתרונות",articles:{imagesNotUploading:{title:"תמונות לא מעלות",content:"בדקו את גודל הקובץ (מקסימום 10MB לתמונה). ודאו שהפורמט הוא JPG, PNG או WebP. נקו את מטמון הדפדפן. נסו דפדפן אחר אם הבעיות נמשכות."},aiGenerationFailed:{title:"יצירת AI נכשלה",content:"בדקו את מאזן הטוקנים שלכם. ודאו שיש לכם מספיק טוקנים לתכונה. בדקו את חיבור האינטרנט שלכם. נסו פרומפט פשוט יותר אם היצירה נכשלת."},canvasNotLoading:{title:"קנבס לא נטען",content:"רעננו את הדף. נקו את מטמון הדפדפן. בדקו את חיבור האינטרנט. השביתו תוספות דפדפן שעלולות להפריע. נסו מצב גלישה בסתר."},slowPerformance:{title:"ביצועים איטיים",content:"סגרו כרטיסיות דפדפן אחרות. נקו את מטמון הדפדפן. השתמשו ב-Chrome או Firefox לביצועים הטובים ביותר. הקטנו את מספר התמונות על הקנבס אם אתם עובדים עם אלמנטים רבים."},accountIssues:{title:"בעיות חשבון",content:"אמתו את האימייל שלכם אם עדיין לא עשיתם זאת. בדקו תיקיית דואר זבל לאימיילי אימות. אפסו סיסמה אם אתם לא יכולים להתחבר. פנו לתמיכה לשחזור חשבון."}}}},cta:{badge:"צריך עזרה נוספת?",title:"לא מוצאים מה שאתם מחפשים? צוות התמיכה שלנו כאן לעזור.",visitHelpCenter:"בקרו במרכז העזרה",contactSupport:"צור קשר עם התמיכה"}},Uz={badge:"בלוג עיצוב",title:"תובנות עיצוב וכלי AI",subtitle:"גלו איך AI משנה את זרימות העבודה של עיצוב פנים, מפחית עלויות ומאיץ יצירתיות.",stayUpdated:{title:"הישארו מעודכנים",description:"קבלו את התובנות העדכניות ביותר בעיצוב, עדכוני כלי AI וטיפים לזרימת עבודה ישירות לתיבת הדואר שלכם.",subscribe:"הירשם",placeholder:"[email protected]"},readArticle:"קרא מאמר"},qz={title:"הסיפור שלנו: הפיכת השראה למציאות",opening:{p1:"Boardspace נולד מחלום פשוט—לתת למעצבי פנים השראה מהירה וקלה, כדי שתוכלו להתמקד במה שאתם הכי אוהבים:",highlight:"יצירת מרחבים יפים",p2:"רצינו לבנות מקום שבו תוכלו לנהל את הפרויקטים שלכם, לשתף רעיונות עם הצוות שלכם, ולמצוא חומרי עיצוב טריים—בלי צורך להתמודד עם כלים שונים או לבלות שעות בחיפוש באינטרנט."},whyWeBuiltIt:{title:"אנחנו יודעים כמה אכפת לכם מהמקצוע שלכם",subtitle:"לכן Boardspace מותאם במיוחד עבורכם:",features:{generate:"צרו מיידית רעיונות חדשים ולוחות סגנון",organize:"ארגנו והפעילו את כל הפרויקטים שלכם במקום אחד",collaborate:"שתפו פעולה באופן פרטי עם לקוחות או עמיתים",findMaterials:"מצאו מוצרים וחומרים אמיתיים, מוכנים להכניס לעיצובים שלכם"}},freeForever:{title:"והכי חשוב—אתם יכולים לעשות את הכל",highlight:"בחינם",description:"כל משתמש מתחיל עם 5 טוקנים חינם לחקור את כל מה שיש ל-Boardspace להציע. צפו בסרטוני הדרכה קצרים והרוויחו עד 30 טוקנים נוספים! כך שתוכלו להמשיך ליצור, לבדוק ולשתף—ללא תנאים."},journey:{title:"אנחנו רק מתחילים",description:"אנחנו בתחילת המסע שלנו ותמיד עובדים כדי לשפר את הדברים. המשוב והרעיונות שלכם באמת חשובים לנו. ספרו לנו איך Boardspace יכול לעזור לכם, ועזרו לנו לבנות פלטפורמה שהופכת את העבודה שלכם לקלה יותר, מהנה יותר ויצירתית יותר."},closing:"ברוכים הבאים ל-Boardspace—בואו נעצב את העתיד יחד."},Gz={badge:"אנחנו בונים את העתיד של יצירתיות פנים",title:"קריירה ב-Boardspace",subtitle:"הצטרפו לצוות מכבד ומבוזר של בונים שיוצרים כלים שהופכים רעיונות לחוויות מרתקות. אנחנו מעצבים באמפתיה, משחררים במיקוד, וחוגגים מלאכה מחשבה.",introduceYourself:"הצג את עצמך",whatYoullDo:"מה תעשה",whatMakesYouGreatFit:"מה הופך אותך להתאמה מצוינת",culture:{badge:"תרבות",description:"אנחנו מאמינים ששיתוף פעולה מכבד, בעלות ברורה וסקרנות מובילים לעבודה הטובה ביותר. אם אתם מעריכים מלאכה מחשבה וניסוי מהיר, נשמח לפגוש אתכם."},modal:{badge:"הצג את עצמך",title:"שלח שלום מהיר",description:"שתפו הערה קצרה, התיק שלכם, או מה מרגש אתכם בהצטרפות ל-Boardspace. נפתח את לקוח הדואר שלכם עם הכל מוכן לשליחה ל[email protected].",message:"הודעה",placeholder:"שלום צוות Boardspace, אני מתרגש מתפקיד Senior Frontend Engineer כי...",cancel:"ביטול",send:"שלח ל[email protected]",opening:"פותח את הדואר שלכם...",error:"אנא הוסף הודעה קצרה או הצגה."}},Wz={hero:vz,floatingHero:yz,welcome:xz,features:wz,credibility:kz,beforeAfter:_z,scrollIndicator:Sz,video:Cz,academySection:Tz,workflows:jz,academy:Nz,podcast:Pz,aiModels:Az,gallery:Ez,beforeSketch:Iz,option:Dz,actualResults:Rz,voiceComingSoon:Lz,materials:Oz,pricing:Mz,aiAgent:zz,featuresSection:Bz,footer
596:Fz,roadmap:$z,documentation:Vz,blog:Uz,ourStory:qz,careers:Gz},Hz={title:"יצירת חשבון חדש",subtitle:"הצטרף ל-Boardspace והתחל ליצור",tab:"הרשמה",fullName:"שם מלא",fullNamePlaceholder:"הכנס את שמך המלא",createPassword:"צור סיסמה מאובטחת",createAccount:"צור חשבון",creatingAccount:"יוצר חשבון...",byContinuing:"בהמשך, את/ה מסכים/ה ל",privacyPolicy:"מדיניות הפרטיות",and:"ול",termsOfService:"תנאי השירות",googleOneClick:"התחבר דרך גוגל בקליק",orSignUpWithEmail:"או הרשם עם אימייל"},Kz={title:"ברוך הבא בחזרה",subtitle:"התחבר לחשבון ה-Boardspace שלך",tab:"התחברות",enterPassword:"הכנס את הסיסמה שלך",signIn:"התחבר",signingIn:"מתחבר...",forgotPassword:"שכחת סיסמה?",resetPassword:"איפוס סיסמה",sendResetLink:"שלח קישור לאיפוס",sendingResetLink:"שולח...",magicLink:"התחברות עם קישור קסם",sendMagicLink:"שלח קישור קסם",sendingMagicLink:"שולח...",magicLinkSent:"קישור קסם נשלח! בדוק את האימייל שלך.",resetLinkSent:"קישור לאיפוס סיסמה נשלח! בדוק את האימייל שלך.",newPassword:"סיסמה חדשה",confirmPassword:"אשר סיסמה",updatePassword:"עדכן סיסמה",updatingPassword:"מעדכן...",passwordUpdated:"הסיסמה עודכנה בהצלחה!",enterNewPassword:"הכנס סיסמה חדשה",confirmNewPassword:"אשר את הסיסמה החדשה",passwordsDoNotMatch:"הסיסמאות לא תואמות",orSignInWith:"או התחבר עם",magicLinkHint:"הכנס אימייל למעלה לקישור קסם"},Yz={email:"אימייל",emailPlaceholder:"הכנס את כתובת האימייל שלך",password:"סיסמה",orContinueWith:"או המשך עם",continueWithGoogle:"התחבר עם Google",continueWithFacebook:"המשך עם Facebook"},Qz={title:"בדוק את האימייל שלך",message:"שלחנו קישור אישור אל",instructions:"לחץ על הקישור באימייל כדי לאמת את החשבון שלך ולהתחיל.",checkSpam:"לא קיבלת? בדוק בתיקיית הספאם."},Jz={quickSignIn:"התחברות מהירה",subtitle:"בחרו את שיטת ההתחברות הנוחה לכם",continueWithFacebook:"המשך עם Facebook",facebookRecommended:"מומלץ",dividerOr:"או",emailLabel:"אימייל",emailPlaceholder:"[email protected]",sendMagicLinkCta:"שלחו לי קישור התחברות",sendingMagicLink:"שולחים...",magicLinkSent:"הקישור נשלח! בדקו את האימייל",useEmailPassword:"התחברות באימייל וסיסמה",needGoogleSafari:"צריכים Google? פתחו ב-Safari",showSafariSteps:"הצג הוראות",title:"נדרש דפדפן רגיל",titleIOS:"פתחו ב-Safari כדי להמשיך",titleAndroid:"פתחו ב-Chrome כדי להמשיך",titleGeneric:"נדרש לפתוח בדפדפן",messageIOS:"התחברות עם Google לא עובדת בדפדפן של {{appName}} מסיבות אבטחה.",messageAndroid:"התחברות עם Google לא עובדת בדפדפן של {{appName}} מסיבות אבטחה.",messageGeneric:"אנא פתחו את הדף ב-Safari או ב-Chrome כדי להתחבר עם Google.",stepIOS1:"לחצו על כפתור השיתוף (□↑) למטה",stepIOS2:'בחרו ב-"פתיחה ב-Safari"',stepIOS3:"חזרו לכאן ונסו להתחבר שוב",stepAndroid1:"לחצו על התפריט (⋮) בפינה הימנית למעלה",stepAndroid2:'בחרו ב-"פתיחה ב-Chrome" או "פתיחה בדפדפן"',stepAndroid3:"חזרו לכאן ונסו להתחבר שוב",stepGeneric1:"העתיקו את הקישור למטה",stepGeneric2:"פתחו את Safari או Chrome",stepGeneric3:"הדביקו את הקישור ונסו שוב",ctaIOS:"העתקת קישור ל-Safari",ctaAndroid:"העתקת קישור ל-Chrome",ctaGeneric:"העתקת קישור",toSignInWithGoogle:"כדי להתחבר עם Google:",orSignWithEmail:"או התחברו באמצעות אימייל",emailAlternative:"השתמשו באימייל ובסיסמה למטה כחלופה.",cancel:"ביטול",copyLink:"העתקת קישור",copied:"הועתק!",openInBrowser:"פתיחה בדפדפן",useEmailInstead:"התחברות באימייל"},Xz={enterFullName:"אנא הכנס את שמך המלא",agreeToTerms:"אנא הסכם למדיניות הפרטיות ותנאי השירות",verifyEmail:"אנא אמת את האימייל שלך תחילה",resendEmail:"שלח אימייל שוב",confirmationSe
596nt:"!אימייל אישור נשלח! בדוק את תיבת הדואר",confirmationSentDesc:"בדוק בתיקיית הספאם אם אינך רואה אותו.",failedResend:"שליחת אימייל האישור נכשלה. נסה שוב.",googleSignInFailed:"ההתחברות עם Google נכשלה",linkCopied:"הקישור הועתק! הדבק ב-Safari או Chrome",failedCopyLink:"העתקת הקישור נכשלה"},Zz={signUp:Hz,signIn:Kz,common:Yz,emailConfirmation:Qz,webViewWarning:Jz,errors:Xz},eB={title:"היי {{name}}, כיף שהצטרפת!",subtitle:"רק 2 שאלות קצרצרות ומתחילים ✨"},tB={title:"מי את/ה?",options:{interior_designer:"מעצב/ת פנים",interior_designer_desc:"מעצב/ת חללים באופן מקצועי",design_lover:"חובב/ת עיצוב",design_lover_desc:"אוהב/ת לחקור רעיונות עיצוב"}},aB={title:"איך הגעת אלינו?",options:{whatsapp_group:"קבוצת וואטסאפ",facebook_community:"קהילת פייסבוק",youtube:"יוטיוב",instagram:"אינסטגרם",google_ads:"פרסומות גוגל",friend_referral:"חבר/ה סיפר/ה לי",other:"אחר"},placeholders:{whatsapp_group:"הזינו את שם קבוצת הוואטסאפ",facebook_community:"הזינו את שם קהילת הפייסבוק",other:"אנא פרטו"}},iB={next:"הבא",back:"חזרה",finish:"בואו נתחיל ליצור"},oB={step:"שלב {{current}} מתוך {{total}}"},rB={selectOption:"אנא בחרו אפשרות כדי להמשיך",enterDetail:"אנא הזינו את הפרטים",saveFailed:"השמירה נכשלה. אנא נסו שוב."},nB={welcome:eB,step1:tB,step2:aB,navigation:iB,progress:oB,errors:rB},sB="מדיניות פרטיות – Boardspace.ai",lB="עודכן לאחרונה: 16.3.26",cB={meta:{operatedBy:"מופעל על ידי: Aquala Holdings Ltd",registeredAddress:"כתובת רשומה: Anexartasias 16, Limassol, Cyprus",privacyEmailLabel:'דוא"ל ליצירת קשר בענייני פרטיות:',supportEmailLabel:'דוא"ל תמיכה:'},emails:{privacy:"[email protected]",support:"[email protected]"},sections:[{h:"1. כללי",paragraphs:['ברוכים הבאים ל־Boardspace.ai ("Boardspace", "אנחנו", "שלנו"). מדיניות פרטיות זו ("מדיניות הפרטיות" או "המדיניות") מסבירה כיצד אנו אוספים, משתמשים, שומרים, משתפים ומגנים על מידע אישי הנוגע למשתמשים, מבקרים, קונים, קריאייטורים, מועמדים לקריאייטור וכל אדם אחר העושה שימוש באתר, באפליקציות, בשירותים, בכלי ה־AI, בקהילה, בגלריות, ובכל תכונה אחרת של Boardspace.ai (יחד: "השירותים").',"אנא קרא מדיניות זו בעיון. אם אינך מסכים למדיניות זו, כולם או חלקם, אנא אל תשתמש בשירותים."]},{h:"2. מי אנחנו",paragraphs:['השירותים מוצעים ומופעלים על ידי Aquala Holdings Ltd, חברה הרשומה בקפריסין. לצורכי דיני פרטיות רלוונטיים, Aquala Holdings Ltd היא בדרך כלל "בקר המידע" או "controller" ביחס למידע האישי המתואר במדיניות זו, אלא אם צוין אחרת.']},{h:"3. היקף המדיניות",paragraphs:["מדיניות זו חלה על מידע אישי שאנו אוספים כאשר:"],list:["אתה מבקר באתר שלנו.","אתה פותח חשבון.","אתה משתמש בכלי AI, קנבס, גלריה או תכונות יצירה אחרות.","אתה מעלה קבצים, תמונות, סרטונים, טקסטים, בריפים, שרטוטים או חומרים אחרים.","אתה רוכש שירותים או מוכר שירותים דרך הפלטפורמה.","אתה יוצר קשר עם התמיכה שלנו.","אתה נרשם לרשימות דיוור, הדגמות, קהילה, או הצעות שיווקיות.","אתה משתתף בתוכן קהילתי, בקיר עבודות, בגלריה או בתצוגה ציבורית אחרת."],afterList:["מדיניות זו אינה חלה על אתרים, שירותים או כלים של צדדים שלישיים שאינם בשליטתנו, גם אם קיימים אליהם קישורים דרך השירותים."]},{h:"4. סוגי המידע שאנו אוספים",subs:[{h3:"4.1 מידע שאתה מספק לנו ישירות",paragraphs:["אנו עשויים לאסוף מידע שאתה מוסר לנו, לרבות:"],list:["שם מלא, שם תצוגה, שם עסק, שם סטודיו או שם משתמש.",'כתובת דוא"ל, מספר טלפון, ופרטי יצירת קשר אחרים.',"פרטי התחברות וחשבון.","פרטי פרופיל, תמונת פרופיל, ביוגרפיה מקצועית, תחומי התמחות, שפות, תיק עבודות, אזור פעילות ופרטי שירות.","פרטי חיוב ותשלום, בכפוף לכך שחלק מפרטי התשלום יעובדו על ידי ספקי תשלום חיצוניים.","תוכן שאתה מעלה או יוצר, לרבות תמונות, סרטונים, שרטוטים, תוכניות, רפרנסים, moodboards, קבצים, טקסטים, בקשות פרומפט, הערות, תגובות, פידבק, והודעות.","נתוני קנבס, ארגון לוחות, אלמנטים, פרויקטים, היסטוריית יצירה, גרסאות ותוצרים.","מידע שאתה מוסר בעת פנייה לתמיכה, פנייה משפטית, דיווח, או מימוש זכויות פרטיות.","מידע שנמסר במסגרת תהליך הצטרפות כקריאייטור, לרבות ניסיון מקצועי, תחומי שירות, קישורים חיצוניים, מסמכים תומכים ופרטי תשלום לקבלת כספים."]},{h3:"4.2 מידע שאנו אוספים באופן אוטומטי",paragraphs:["כאשר אתה משתמש בשירותים, אנו עשויים לאסוף באופן אוטומטי:"],list:["כתובת IP.","סוג דפדפן, גרסה, מערכת הפעלה, שפת מכשיר והגדרות אזור.","מזהי מכשיר, מזהי session, מזהי cookies ומזהים מקוונים דומים.","מידע על כניסות, עמודים נצפים, הקלקות, זמני שימוש, תכונות שבהן השתמשת, ושגיאות.","מידע על אינטראקציות עם כלי AI, לרבות נפח שימוש, סוגי בקשות, תדירות, טוקנים, זמני ביצוע וסטטוסי תוצרים.","מידע טכני ותפעולי לצורך אבטחה, מניעת הונאה, ניטור ביצועים ופתרון תקלות."]},{h3:"4.3 מידע ממקורות צד שלישי",paragraphs:["אנו עשויים לקבל מידע מצדדים שלישיים, כגון:"],list:["ספקי התחברות, אימות או רשתות חברתיות, אם בחרת להתחבר דרכם.","ספקי תשלום, לצורך אישור סטטוס תשלום, זיהוי עסקאות, מניעת הונאה ותיעוד חיובים.","ספקי מודלי AI, אחסון, אנליטיקה, אבטחה, תמיכה או תשתית.","אינטגרציות חיצוניות שבהן בחרת להשתמש.","מקורות ציבוריים או מקצועיים, כאשר אתה מגיש מועמדות לשימוש עסקי או להצטרפות כקריאייטור."]}]},{h:"5. מידע רגיש ותוכן שאתה בוחר להעלות",paragraphs:["חלק מהקבצים, התמונות, הסרטונים, הבריפים או ההודעות שאתה מעלה עשויים לכלול מידע רגיש, מידע עסקי, מידע תכנוני, פרטי נכס, מידע מסחרי, או מידע הנוגע לצדדים שלישיים. אנא העלה לשירותים רק מידע שאתה מורשה לשתף, להשתמש בו ולעבדו.","איננו מבקשים באופן יזום מידע אישי רגיש מסוגים מיוחדים, אך אם תבחר לכלול מידע כזה בתוכן שתעלה, אתה מאשר שיש לך בסיס חוקי מתאים לעשות כן."]},{h:"6. מטרות השימוש במידע",paragraphs:["אנו עשויים להשתמש במידע האישי שלך למטרות הבאות:"],list:["לספק, להפעיל, לתחזק ולשפר את השירותים.","ליצור ולנהל חשבונות משתמש.","לאפשר יצירת תוכן, שימוש בקנבס, ניהול פרויקטים, הפעלת כלי AI, שמירת היסטוריה והצגת תוצרים.","לעבד תשלומים, חיובים, החזרים, זיכויים ועמלות.","לאפשר פעילות marketplace, לרבות הצעת שירותים, רכישת שירותים, מסירת תוצרים, תקשורת תפעולית, ותמיכה בתהליך העבודה.","לאפשר הצגה של עבודות, גלריות, קיר קהילה, תיקי עבודות או showcase, בכפוף להגדרות החשבון שלך, להרשאותיך, ולמסמכים החוזיים הרלוונטיים.","לספק שירות לקוחות, לפתור בעיות, להשיב לפניות ולתמוך במשתמשים.","לנטר פעילות חריגה, לזהות הונאה, לאכוף את תנאי השימוש, ולהגן על הפלטפורמה, המשתמשים והצדדים השלישיים.","לנתח שימוש, לשפר ביצועים, למדוד מעורבות, ולבצע מחקר ופיתוח.","לשלוח לך הודעות תפעוליות, שירותיות, אבטחתיות, משפטיות ושיווקיות, בכפוף לדין החל ולהעדפותיך.","לעמוד בדרישות חוקיות, רגולטוריות, חשבונאיות, מיסוי, אכיפה והליכים משפטיים.","לאמן, לכייל, לבדוק, להעריך ולשפר מערכות AI ותהליכים אוטומטיים, בכפוף לבחירותיך, להסכמים הרלוונטיים, ולדין החל."]},{h:"7. בסיסים משפטיים לעיבוד",paragraphs:["כאשר הדין החל מחייב זאת, אנו מעבדים מידע אישי על בסיס אחד או יותר מהבסיסים הבאות:"],list:["ביצוע חוזה או נקיטת צעדים טרם התקשרות.","אינטרס לגיטימי שלנו לנהל, לאבטח, לשפר ולפתח את השירותים.","עמידה בחובה משפטית.","הסכמתך, כאשר נדרשת הסכמה לפי דין.","הגנה על אינטרסים חיוניים.","בסיס חוקי אחר המותר לפי הדין החל."],afterList:["כאשר אנו מסתמכים על הסכמה, באפשרותך לחזור בך מהסכמתך בכל עת, בכפוף לכך שהחזרה לא תשפיע על חוקיות עיבוד שבוצע לפני כן."]},{h:"8. AI, פרומפטים ותוכן שנוצר או מועלה",paragraphs:["כאשר אתה משתמש בכלי AI של Boardspace, ייתכן שנעבד פרומפטים, קבצי קלט, תמונות, וידאו, פלטים ותוכן נלווה לצורך:"],list:["הפקת תוצרים.","בדיקות איכות, ניטור תקלות ואבטחה.","שיפור חוויית המשתמש והתאמת הביצועים.","מחקר, הערכה ושיפור של תהליכי AI, אם מותר לפי הדין החל ולפי בחירות החשבון שלך."],afterList:["ככל שהדבר מוצע במוצר, ננסה לאפשר לך שליטה או אפשרות opt-out ביחס לשימושים מסוימים של תוכן לצורכי שיפור מודלים או מערכות. עם זאת, ייתכן שחלק מהעיבודים הטכניים יידרשו תמיד לצורך הפעלת השירות, אבטחתו, מניעת שימוש לרעה, עמידה בדרישות חוקיות ושמירת תקינותו."]},{h:"9. גלריה, קהילה, קיר עבודות ותוכן פומבי",paragraphs:["אם אתה בוחר לפרסם עבודה, פרויקט, תמונה, וידאו, תגובה, פרופיל, תיק עבודות, או כל תוכן אחר באזורים ציבוריים של הפלטפורמה, המידע עשוי להפוך לנגיש למשתמשים אחרים או לציבור. תוכן שפורסם באופן פומבי עשוי לכלול, לפי ההקשר:"],list:["שם תצוגה או שם עסק.","פרטי פרופיל.","תוצרים יצירתיים.","תיאורי שירותים.","תגובות, לייקים, אינטראקציות ופעילות קהילתית."],afterList:["אנא שקול היטב איזה מידע אתה בוחר לפרסם. כאשר אתה מפרסם תוכן בפומבי, ייתכן שאנשים אחרים יוכלו לצפות בו, לשתף אותו או לצטט אותו, בכפוף להגבלות החוק ולתנאי השימוש שלנו."]},{h:"10. עם מי אנו משתפים מידע",paragraphs:["אנו עשויים לשתף מידע אישי עם:"],subs:[{h3:"10.1 ספקי שירותים",paragraphs:["ספקי אחסון, תשתית ענן, אנליטיקה, תמיכה, אבטחה, CRM, אימייל, הודעות, ניטור, ספקי תשלום, ספקי AI, ספקי אחסון מדיה, וכל ספק אחר המסייע לנו להפעיל את השירותים."]},{h3:"10.2 משתמשים אחרים לפי אופי השירות",paragraphs:["אם השירות מחייב אינטראקציה בין קונה, קריאייטור, חבר צוות, או שותף לפרויקט, אנו עשויים לשתף את המידע הנדרש באופן סביר לביצוע השירות, כגון שם תצוגה, תכתובות תפעוליות, בריף, תוצרים, סטטוס עבודה או פרטי מסירה."]},{h3:"10.3 גלריה וקהילה",paragraphs:["כאשר אתה בוחר לפרסם תוכן פומבי, המידע עשוי להיות מוצג למשתמשים אחרים או לציבור."]},{h3:"10.4 יועצים וגורמים מקצועיים",paragraphs:["רואי חשבון, יועצים, עורכי דין, מבקרים ויועצי אבטחה, בכפוף לחובות סודיות מתאימות."]},{h3:"10.5 גורמים רגולטוריים, אכיפה או בתי משפט",paragraphs:["כאשר נדרש לפי חוק, צו, דרישה רגולטורית, הליך משפטי, או לצורך הגנה על זכויות, בטיחות, רכוש או אינטרסים לגיטימיים."]},{h3:"10.6 עסקאות תאגידיות",paragraphs:["במקרה של מיזוג, רכישה, מכירת נכסים, השקעה, ארגון מחדש או שינוי בעלות, מידע אישי עשוי להיות מועבר כחלק מהעסקה, בכפוף לאמצעי הגנה סבירים."]},{h3:"10.7 בהסכמתך או לפי הוראתך",paragraphs:["כאשר אתה מבקש מאיתנו במפורש לשתף מידע עם צד שלישי מסוים."]}],afterList:['איננו מוכרים מידע אישי במובן המקובל של "מכירת מידע" תמורת תמורה כספית, אלא אם נציין אחרת באופן מפורש.']}
596,{h:"11. ספקי AI, תשתית ותשלומים",paragraphs:["השירותים עשויים להסתמך על ספקי AI, ספקי אחסון, ספקי תשלום, ספקי הודעות, ספקי אנליטיקה, ספקי קהילה, ואינטגרציות חיצוניות. ספקים אלה עשויים לעבד מידע אישי מטעמנו או בהתאם למערכת היחסים המשפטית הרלוונטית עמם.","איננו אחראים למדיניות או לפרקטיקות העצמאיות של צדדים שלישיים שאינם פועלים מטעמנו כבעלי תפקיד מעבדי מידע, ולכן מומלץ לעיין גם במדיניות הפרטיות של שירותים חיצוניים רלוונטיים."]},{h:"12. עוגיות וטכנולוגיות דומות",paragraphs:["אנו עשויים להשתמש בעוגיות, pixels, local storage, SDKs, tags וטכנולוגיות דומות לצורך:"],list:["הפעלת האתר והשירותים.","שמירת session והעדפות.","אבטחה וזיהוי הונאה.","מדידה, אנליטיקה וביצועים.","התאמה אישית.","שיווק, רימרקטינג או קמפיינים, ככל שהדבר מותר ובהתאם להסכמות הנדרשות."],afterList:["במקומות שבהם הדין מחייב, נבקש את הסכמתך לשימוש בעוגיות לא חיוניות. באפשרותך גם לנהל חלק מהעדפותיך דרך הגדרות הדפדפן או כלי ההסכמה שנעמיד לרשותך."]},{h:"13. שמירת מידע",paragraphs:["אנו שומרים מידע אישי כל עוד הוא נדרש באופן סביר למטרות שלשמן נאסף, לרבות:"],list:["מתן השירותים ותפעולם.","ניהול החשבון והיסטוריית הפעילות.","עמידה בהתחייבויות חוזיות.","פתרון מחלוקות.","אכיפה של תנאים ומדיניות.","עמידה בדרישות חוק, רגולציה, מס וחשבונאות.","שמירת אבטחה, יומני מערכת, וגיבויים."],afterList:["כאשר המידע אינו נדרש עוד, נמחק אותו, נהפוך אותו לאנונימי, או נשמור אותו בצורה חסומה ומצומצמת לפי הצורך החוקי."]},{h:"14. אבטחת מידע",paragraphs:["אנו מיישמים אמצעים טכניים, ארגוניים ומנהליים סבירים שנועדו להגן על מידע אישי מפני גישה בלתי מורשית, אובדן, שינוי, שימוש לרעה, חשיפה או השמדה. אמצעים אלה עשויים לכלול בקרות גישה, הצפנה, הפרדת הרשאות, ניטור, גיבויים, ניהול ספקים, תהליכי תגובה לאירועים והכשרת עובדים.","עם זאת, אין שיטת אבטחה מושלמת, ולכן איננו יכולים להבטיח אבטחה מוחלטת."]},{h:"15. העברות בינלאומיות",paragraphs:["המידע האישי שלך עשוי להיות מועבר, מאוחסן או מעובד מחוץ למדינת מגוריך, לרבות בקפריסין, באיחוד האירופי, בארצות הברית ובמדינות נוספות שבהן אנו, חברות קשורות שלנו, או הספקים שלנו פועלים. כאשר הדין מחייב זאת, ננקוט באמצעי הגנה מתאימים להעברות בינלאומיות, כגון מנגנונים חוזיים, התחייבויות הגנה, או בסיסים חוקיים אחרים."]},{h:"16. זכויותיך",paragraphs:["בכפוף לדין החל, ייתכן שעומדות לך הזכויות הבאות:"],list:["לקבל אישור אם אנו מעבדים מידע אישי על אודותיך.","לבקש גישה למידע אישי.","לבקש תיקון של מידע לא מדויק או לא שלם.","לבקש מחיקה של מידע אישי.","לבקש הגבלת עיבוד.","להתנגד לעיבוד מסוים.","לקבל עותק נייד של מידע במקרים המתאימים.","לחזור בך מהסכמה.","לבקש שלא להשתמש במידע למטרות שיווק ישיר.","להגיש תלונה לרשות הגנת מידע מוסמכת."],afterList:["כדי לממש את זכויותיך, ניתן לפנות אלינו לפי פרטי הקשר המופיעים במדיניות זו. אנו עשויים לבקש מידע לאימות זהותך לפני טיפול בבקשה."]},{h:"17. פרטיות בישראל",paragraphs:['אם אתה נמצא בישראל, ייתכן שעומדות לך זכויות נוספות לפי חוק הגנת הפרטיות, התשמ"א–1981, התקנות מכוחו, והנחיות רשות הגנת הפרטיות, כפי שיעודכנו מעת לעת. אנו נשתדל לטפל בבקשות כדין ובמועד סביר, בכפוף לאימות זהות, לבדיקת בסיס הבקשה, ולחריגים החוקיים הרלוונטיים.']},{h:"18. פרטיות ילדים",paragraphs:["השירותים אינם מיועדים לילדים מתחת לגיל 13, ואיננו אוספים ביודעין מידע אישי מילדים מתחת לגיל זה. אם נלמד שאספנו מידע אישי מילד מתחת לגיל 13 ללא אישור נדרש כדין, נפעל למחוק את המידע בהקדם הסביר.","אם אתה סבור שילד מסר לנו מידע אישי בניגוד למדיניות זו, אנא צור איתנו קשר."]},{h:"19. אתרים ושירותים של צדדים שלישיים",paragraphs:["השירותים עשויים לכלול קישורים, embeds, אינטגרציות או הפניות לאתרים ושירותים חיצוניים.","אין לנו שליטה על מדיניות הפרטיות או הנוהגים של צדדים שלישיים אלה, ואיננו אחראים להם.","מומלץ לעיין במדיניות הרלוונטית של כל שירות חיצוני לפני שימוש בו."]},{h:"20. שינויים במדיניות הפרטיות",paragraphs:["אנו רשאים לעדכן מדיניות זו מעת לעת כדי לשקף שינויים משפטיים, תפעוליים, עסקיים או טכנולוגיים.",'כאשר נבצע שינויים מהותיים, ננקוט באמצעים סבירים כדי להודיע על כך, למשל באמצעות הודעה באתר, בתוך החשבון, או בדוא"ל.',"התאריך בראש המדיניות מציין מתי עודכנה לאחרונה. המשך שימוש בשירותים לאחר כניסת השינויים לתוקף כפוף לדין החל ולהליכי ההסכמה הנדרשים."]},{h:"21. יצירת קשר",paragraphs:["לשאלות, בקשות או תלונות בנוגע למדיניות פרטיות זו או לאופן שבו אנו מעבדים מידע אישי, ניתן לפנות אלינו:"],contactBlock:{org:"Boardspace.ai / Aquala Holdings Ltd",address:"Anexartasias 16, Limassol, Cyprus",privacyEmailLabel:'דוא"ל פרטיות:',supportEmailLabel:'דוא"ל תמיכה:',phoneNote:"[טלפון / WhatsApp – מופיע באתר בתמיכה]",closing:"אנו שואפים להשיב לפניות בפרק זמן סביר, ובמקרים מסוימים בתוך פרק הזמן הנדרש לפי דין."}}],footer:{acknowledgment:"אם אינך מסכים למדיניות זו, אל תשתמש בשירותים. המשך שימוש כפוף לדין החל ולעדכוני המדיניות.",lastUpdated:"עודכן לאחרונה: 16.3.26"}},dB={title:sB,lastUpdated:lB,document:cB},uB="תנאי שימוש – Boardspace.ai",mB="עודכן לאחרונה: 26.3.26",pB='על ידי גישה לשירותים, יצירת חשבון, לחיצה על "אני מסכים", או שימוש בפועל בשירותים, אתה מאשר שקראת, הבנת והסכמת להיות כפוף לתנאים אלה ול<link>מדיניות הפרטיות</link> שלנו.',hB={meta:{operatedByLabel:"מופעל על ידי:",company:"Aquala Holdings Ltd",registeredAddress:"כתובת רשומה: Anexartasias 16, Limassol, Cyprus",contactLabel:"יצירת קשר:"},email:"[email protected]",sections:[{h:"1. מבוא והסכמה לתנאים",paragraphs:['ברוכים הבאים ל-Boardspace.ai ("Boardspace", "הפלטפורמה", "אנחנו", "שלנו"). תנאי שימוש אלה ("התנאים") מסדירים את הגישה שלך והשימוש שלך באתר, באפליקציות, בכלי ה-AI, בקנבס, בגלריות, בקהילה, ובכל שירות, תכונה, פונקציונליות או תוכן המוצעים על ידינו מעת לעת (יחד: "השירותים").'],paragraphsContinued:["אם אינך מסכים לתנאים אלה, כולם או חלקם, אינך רשאי להשתמש בשירותים.","אם אתה משתמש בשירותים בשם חברה, סטודיו, משרד או כל גוף אחר, אתה מצהיר כי אתה מוסמך לחייב את אותו גוף בתנאים אלה."]},{h:"2. מי רשאי להשתמש בשירותים",paragraphs:["השירותים מיועדים למשתמשים פרטיים ועסקיים. עליך לספק מידע נכון, מדויק ומעודכן בעת ההרשמה ולשמור אותו מעודכן לאורך זמן.","השימוש בשירותים מותר רק למי שרשאי להתקשר בהסכם מחייב לפי הדין החל. אם אתה מתחת לגיל 18, השימוש מותר רק באישור ובהשגחת הורה או אפוטרופוס חוקי. השירותים אינם מיועדים לילדים מתחת לגיל 13."]},{h:"3. חשבון משתמש ואבטחת חשבון",paragraphs:["ייתכן שחלק מהשירותים ידרשו יצירת חשבון. אתה אחראי לשמירה על סודיות פרטי ההתחברות שלך ולכל פעילות שמתבצעת באמצעות חשבונך.","אינך רשאי:"],list:["להעביר את חשבונך לאחר;","לשתף גישה עם אחרים ללא אישור מפורש מאיתנו;","להתחזות לאדם או גוף אחר;","ליצור חשבונות בדרכים אוטומטיות או מטעות."],afterList:["עליך להודיע לנו בהקדם אם אתה חושד בגישה לא מורשית, הפרת אבטחה או שימוש בלתי מורשה בחשבונך."]},{h:"4. תיאור השירותים",paragraphs:["Boardspace מספקת פלטפורמה דיגיטלית ליצירה, עריכה, ארגון, שיתוף, המחשה וניהול של תוכן ויזואלי, עיצובי וקריאטיבי, לרבות באמצעות כלי AI. השירותים עשויים לכלול, בין היתר, קנבס, העלאת קבצים, יצירת תמונות, יצירת וידאו, גלריות, פיצ'רי קהילה, מרקטפלייס, תצוגות עבודות, אינטגרציות חיצוניות, וממשקי עבודה בין משתמשים שונים.","אנו רשאים לשנות, להוסיף, לגרוע, להשעות או להפסיק שירותים או תכונות, כולם או חלקם, בכל עת, באופן זמני או קבוע, לפי שיקול דעתנו."]},{h:"5. שימוש מותר ושימוש אסור",paragraphs:["אתה מתחייב להשתמש בשירותים באופן חוקי, הוגן וסביר בלבד.","מבלי לגרוע מכלליות האמור, אינך רשאי:"],list:["להפר כל דין, תקנה או הוראה מחייבת;","להעלות, לפרסם, לשתף או לעבד תוכן שאין לך זכות חוקית להשתמש בו;","להפר זכויות יוצרים, סימני מסחר, סודות מסחריים, פרטיות, פרסום או כל זכות אחרת של צד שלישי;","להשתמש בשירותים לצורך הונאה, התחזות, הטעיה, פישינג או מניפולציה;","להפיץ תוכן פוגעני, מאיים, מסית, מפלה, אלים, מיני באופן אסור, או בלתי חוקי;","להעלות קוד זדוני, וירוסים, בוטים, סקריפטים מזיקים או אמצעי שיבוש אחרים;","לבצע scraping, crawling, harvesting, reverse engineering או extraction של נתונים, מודלים, prompts, outputs, קוד או רכיבי מערכת ללא הרשאה;","לעקוף מנגנוני אבטחה, הגבלות שימוש, rate limits או בקרות גישה;","להשתמש בשירותים כדי לפתח מוצר מתחרה, לאמן מערכות אחרות באופן לא מורשה, או להפיק מאגרי נתונים שיטתיים;","לפגוע או לנסות לפגוע בפעילות התקינה של השירותים או בחוויית משתמשים אחרים."],afterList:["אנו שומרים לעצמנו את הזכות לחקור כל הפרה אפשרית ולנקוט כל פעולה שנמצא לנכון, לרבות הגבלת גישה, השעיה, מחיקה, דיווח לרשויות או נקיטת הליכים משפטיים."]},{h:"6. תוכן משתמש",paragraphs:['"בקלט" ייכללו כל קובץ, תמונה, סרטון, טקסט, בריף, שרטוט, פרומפט, תגובה, הודעה, נתון, קישור, חוות דעת או תוכן אחר שאתה מעלה, שולח, יוצר, מפרסם או מעמיד לרשות השירותים. "בפלט" ייכללו כל תוצאה, תוצר, גרסה, המחשה, תמונה, וידאו, טקסט או חומר אחר שנוצרים, מוצגים או נמסרים באמצעות השירותים.',"בכפוף לדין החל ולהסכמים ספציפיים אחרים שיחולו על שירות מסוים, אתה נשאר אחראי לתוכן שאתה מעלה ומשתף. אתה מצהיר ומתחייב כי יש לך את כל הזכויות, ההרשאות והבסיסים המשפטיים הנדרשים בקשר לכל קלט שאתה מספק.","אתה נושא באחריות הבלעדית לדיוק, לחוקיות, לאיכות ולשימוש בתוכן המשתמש שלך."]},{h:"7. רישיון תפעולי ל-Boardspace",paragraphs:["לצורך אספקת השירותים, תפעולם, תחזוקתם, אבטחתם, שיפורם, גיבויים, מניעת הונאה, אכיפת תנאים אלה, עמידה בדרישות חוק, ומתן פונקציונליות שאתה מבקש להשתמש בה, אתה מעניק לנו רישיון עולמי, לא-בלעדי, ללא תמלוגים, ניתן להעברה לספקים הפועלים מטעמנו, להשתמש, לאחסן, לארח, להעתיק, לעבד, להתאים, להציג, להעביר ולהפיץ את הקלט והפלט שלך במידה הדרושה באופן סביר למטרות אלה.","רישיון זה אינו מקנה לנו בעלות בתוכן שלך. ככל שאתה מפרסם תוכן באופן פומבי דרך תכונות קהילה או showcase, יחולו גם ההרשאות וההגדרות שבחרת וכן התנאים הייעודיים החלים על אותן תכונות."]},{h:"8. AI ותוצרים אוטומטיים",paragraphs:["השירותים עשויים לכלול תכונות AI, אוטומציה ואלגוריתמים ליצירת תוצרים, ניתוח תוכן, שיפור הצעות, התאמות חזותיות, והפקת outputs שונים. פלטים שנוצרים באמצעות AI עשויים להיות לא מדויקים, לא מלאים, מוטים, דומים לתוצרים של משתמשים אחרים, או בלתי מתאימים להקשר מסוים.","אינך רשאי להסתמך על תוצרים כאלה כהמלצה מקצועית, משפטית, הנדסית, רפואית, בטיחותית, פיננסית או רגולטורית. האחריות לבדוק, לאמת ולאשר כל תוצר לפני שימוש בו חלה עליך בלבד."]},{h:"9. תשלומים, קרדיטים, טוקנים ומנויים",paragraphs:["חלק מהשירותים עשויים להיות בתשלום, על בסיס מנוי, חבילות, קרדיטים, טוקנים, עמלות, או מודל אחר כפי שיוצג בפלטפורמה מעת לעת. המחירים, ×
596ª× ××™ החיוב, תוקף הקרדיטים, השימוש בטוקנים, מדיניות חידוש אוטומטי, מיסים והחזרים יוצגו בעת הרכישה או במסמך ייעודי רלוונטי.","אלא אם צוין אחרת במפורש:"],list:["חיובים אינם כוללים מסים, היטלים או עמלות ממשלתיות החלות עליך;","טוקנים, קרדיטים או זכויות שימוש שלא נוצלו אינם ניתנים לפדיון כספי;","אנו רשאים לשנות מחירים או מבני תוכנית לעתיד, בכפוף לדין החל."],afterList:["אם יתבצע chargeback, ביטול חיוב, הכחשת עסקה או אי-תשלום, אנו רשאים להגביל שימוש, להשעות שירותים, לקזז סכומים, או לנקוט פעולות נוספות לפי הדין ולפי התנאים הרלוונטיים."]},{h:"10. מרקטפלייס, שירותים בין משתמשים ותנאים משלימים",paragraphs:["חלק מהשירותים עשויים לכלול מרקטפלייס, תצוגת שירותים, הזמנת עבודות, רכישת שירותים, שיתוף תוצרים, או אינטראקציות בין קונים, קריאייטורים ומשתמשים אחרים.","במקרים אלה, עשויים לחול מסמכים משלימים, לרבות:"],list:["תנאי קונים;","הסכם קריאייטורים;","תנאי הזמנה או מסמך עסקה;","כללים ייעודיים לתמחור, מסירה, תיקונים, ביטולים, תשלומים, בעלות או הצגת עבודות."],afterList:["במקרה של סתירה בין תנאים אלה לבין מסמך ייעודי החל על שירות מסוים, יגבר המסמך הייעודי ביחס לאותו שירות."]},{h:"11. אינטגרציות ושירותי צד שלישי",paragraphs:["השירותים עשויים להשתלב עם שירותים, API-ים, פלטפורמות, מודלים, ספקי תשלום, ספקי אחסון, ספקי אנליטיקה, רשתות חברתיות או כלים של צדדים שלישיים. השימוש באינטגרציות כאלה עשוי להיות כפוף גם לתנאים, רישיונות ומדיניות פרטיות של אותם צדדים שלישיים.","איננו אחראים לתוכן, לפונקציונליות, לזמינות, לאבטחה או למדיניות של צדדים שלישיים כאלה.","השימוש בהם נעשה באחריותך ובהתאם למסמכים החלים עליהם."]},{h:"12. קניין רוחני של Boardspace",paragraphs:["השירותים, לרבות התוכנה, העיצוב, הממשק, הלוגו, הסימנים המסחריים, מבנה הפלטפורמה, טקסטים, אלמנטים גרפיים, קומפוננטות, קוד, מאגרי מידע, ותכנים שבבעלותנו או ברישיון אלינו, מוגנים לפי דיני קניין רוחני ודינים אחרים.","למעט זכות השימוש המוגבלת שניתנת לך לפי תנאים אלה, אין בתנאים אלה כדי להעניק לך כל זכות בעלות, רישיון או אינטרס אחר בקניין הרוחני של Boardspace.","אינך רשאי להעתיק, לשכפל, להפיץ, למכור, להעניק רישיון, לשנות, לפרק, לתרגם, או ליצור יצירות נגזרות של רכיבי הפלטפורמה, אלא אם הותר במפורש בכתב."]},{h:"13. תלונות על הפרת זכויות",paragraphs:["אם אתה סבור שתוכן כלשהו בשירותים מפר זכויות יוצרים, סימן מסחר, פרטיות, או זכות אחרת שלך, ניתן לפנות אלינו לכתובת:","הפנייה צריכה לכלול, במידת האפשר:"],insertEmailAfterParagraphIndex:0,list:["פרטי מזהה של התוכן הנטען כמפר;","תיאור הזכות הנטענת;","פרטי יצירת קשר;","והצהרה כי הפנייה נעשית בתום לב."],afterList:["אנו שומרים לעצמנו את הזכות להסיר תוכן, להגביל גישה, או לנקוט צעדים אחרים לפי שיקול דעתנו."]},{h:"14. השעיה, סיום והפסקת שירות",paragraphs:["אנו רשאים, לפי שיקול דעתנו, להגביל, להשעות, לחסום, למחוק או לסיים גישה לחשבון או לשירותים, כולם או חלקם, אם:"],list:["הפרת תנאים אלה;","יצרת סיכון משפטי, אבטחתי, מסחרי או תפעולי;","נדרשנו לכך לפי דין, צו או דרישת רשות;","לא שילמת סכומים המגיעים;","או אם המשך מתן השירות אינו מעשי או סביר מבחינתנו."],afterList:["אתה רשאי להפסיק להשתמש בשירותים בכל עת. סיום השימוש אינו מבטל התחייבויות שצמחו לפני הסיום, לרבות התחייבויות תשלום, סודיות, שיפוי, אחריות או הגבלות שימוש."]},{h:"15. הצהרות פטור",paragraphs:['השירותים מסופקים "כמות שהם" ו"כפי שהם זמינים". במידה המרבית המותרת לפי דין, אנו איננו נותנים כל מצג או התחייבות, מפורשים או משתמעים, לרבות לגבי התאמה למטרה מסוימת, סחירות, דיוק, רציפות, אמינות, אבטחה, זמינות או היעדר שגיאות.',"אין התחייבות שהשירותים יהיו זמינים בכל עת, נטולי הפרעות, חפים מבאגים, או תואמים לכל צורך עסקי, מקצועי או רגולטורי שלך."]},{h:"16. הגבלת אחריות",paragraphs:["במידה המרבית המותרת לפי דין, Aquala Holdings Ltd, הדירקטורים, העובדים, הספקים, השותפים והנציגים שלה לא יהיו אחראים לכל נזק עקיף, מיוחד, תוצאתי, אגבי, עונשי או אובדן רווחים, הכנסות, מוניטין, נתונים, לקוחות, הזדמנויות עסקיות או שימוש.","בכל מקרה, אחריותנו המצטברת הכוללת בקשר לשירותים, לתנאים אלה או לשימוש שלך בהם לא תעלה על הגבוה מבין:"],list:["(א) הסכום ששילמת לנו בפועל במהלך 12 החודשים שקדמו לאירוע נשוא הטענה;","או",'(ב) 50 דולר ארה"ב.'],afterList:["שום דבר בתנאים אלה לא יגביל אחריות שלא ניתן להגביל לפי הדין החל."]},{h:"17. שיפוי",paragraphs:["אתה מסכים לשפות, להגן ולפטור מאחריות את Aquala Holdings Ltd, חברות קשורות, מנהלים, עובדים, נציגים וספקים, מפני כל תביעה, נזק, חבות, הפסד, הוצאה או עלות, לרבות שכר טרחת עורכי דין סביר, הנובעים מ:"],list:["השימוש שלך בשירותים;","התוכן שאתה מעלה או יוצר;","הפרה של תנאים אלה;","או הפרה של זכויות צד שלישי או של דין חל."]},{h:"18. שינויים בשירותים ובתנאים",paragraphs:['אנו רשאים לעדכן את השירותים או תנאים אלה מעת לעת. כאשר יבוצעו שינויים מהותיים, ננקוט באמצעים סבירים למסור הודעה, למשל באמצעות האתר, החשבון, או דוא"ל.',"התאריך בראש המסמך מציין את מועד העדכון האחרון. המשך שימוש לאחר כניסת שינויים לתוקף כפוף לדין החל ולהליכי הסכמה נדרשים."]},{h:"19. דין חל וסמכות שיפוט",paragraphs:["תנאים אלה יהיו כפופים לדיני קפריסין, מבלי לגרוע מכללי ברירת הדין החלים.","בכפוף לדין החל ולהוראות צרכניות שלא ניתן להתנות עליהן, הסמכות הבלעדית לדון בכל מחלוקת הנובעת מתנאים אלה או מהשירותים תהיה נתונה לבתי המשפט המוסמכים בלימסול, קפריסין."]},{h:"20. הוראות כלליות",paragraphs:["אם הוראה כלשהי בתנאים אלה תיקבע כבלתי תקפה או בלתי אכיפה, יתר ההוראות יישארו בתוקפן המלא.","אי מימוש זכות או סעד מצדנו לא ייחשב כוויתור עליהם.","אינך רשאי להמחות את זכויותיך או התחייבויותיך לפי תנאים אלה ללא הסכמתנו מראש ובכתב.","אנו רשאים להמחות או להעביר את זכויותינו והתחייבויותינו לפי תנאים אלה, כולם או חלקם, לפי שיקול דעתנו."]},{h:"21. יצירת קשר",paragraphs:["לשאלות, פניות או הודעות בקשר לתנאים אלה, ניתן ליצור איתנו קשר בכתובת:"],insertEmailAfterParagraphIndex:0,contactBlock:{org:"Aquala Holdings Ltd",address:"Anexartasias 16, Limassol, Cyprus"}}]},gB={acknowledgment:"על ידי גישה לשירותים או שימוש בהם, אתה מאשר שקראת והבנת את תנאי השימוש ואת מדיניות הפרטיות.",lastUpdated:"עודכן לאחרונה: 26.3.26"},fB={title:uB,lastUpdated:mB,agreementPrivacyLine:pB,document:hB,footer:gB},bB="הצהרת נגישות",vB="עודכן לאחרונה: ינואר 2025",yB={operatedBy:"מופעל על ידי:",registeredAddress:"כתובת רשומה:"},xB={commitment:{title:"המחויבות שלנו לנגישות",text:"Boardspace.ai מחויבת להבטיח נגישות דיגיטלית לאנשים עם מוגבלויות. אנחנו משפרים ללא הרף את חוויית המשתמש לכולם ומיישמים את תקני הנגישות הרלוונטיים כדי להשיג את המטרות האלה."},standards:{title:"תקני נגישות",text:"אנחנו שואפים לעמוד ב-<strong>הנחיות נגישות תוכן האינטרנט (WCAG) 2.1</strong> ברמה AA, שמסבירות איך להפוך תוכן אינטרנט לנגיש יותר לאנשים עם מוגבלויות. ההנחיות האלה הן תקנים מוכרים בינלאומית לנגישות אינטרנט.",efforts:"המאמצים שלנו כוללים:",points:["הבטחת ניגודיות צבע מספקת בין טקסט ורקעים","מתן טקסט חלופי לתמונות ותוכן ויזואלי","הפיכת כל הפונקציונליות לזמינה מהמקלדת","הבטחת שהתוכן קריא ופונקציונלי כאשר גודל הטקסט מוגדל","מתן אינדיקטורי מיקוד ברורים לניווט במקלדת","שימוש ב-HTML סמנטי ותוויות ARIA במקום המתאים","כיבוד העדפות משתמש לתנועה מופחתת"]},ongoingEfforts:{title:"מאמצים מתמשכים",text:"אנחנו בודקים באופן קבוע את האתר והאפליקציות שלנו כדי לזהות ולטפל במכשולי נגישות. תהליך הפיתוח שלנו כולל:",points:["ביקורות נגישות ובדיקות קבועות","בדיקות משתמשים עם אנשים עם מוגבלויות","הכשרת הצוות שלנו על שיטות עבודה מומלצות לנגישות","ניטור וטיפול בבעיות נגישות ככל שהן עולות"]},knownLimitations:{title:"מגבלות ידועות",text:"למרות המאמצים הטובים ביותר שלנו להבטיח נגישות, עשויות להיות כמה מגבלות. אנחנו מודעים לאזורים הבאים ועובדים על טיפול בהם:",points:["כמה אינטגרציות של צדדים שלישיים עשויות לא לעמוד במלואן בתקני נגישות","תוכן מסוים שנוצר על ידי AI עשוי לדרוש שיקולי נגישות נוספים","תוכן ישן יותר עשוי לא לעמוד במלואו בתקני נגישות נוכחיים"],committed:"אנחנו מחויבים לטפל במגבלות האלה ולשפר נגישות בכל האזורים של הפלטפורמה שלנו."},feedback:{title:"משוב ויצירת קשר",text:"אנחנו מברכים על המשוב שלך על הנגישות של Boardspace.ai. אם נתקלת במכשולי נגישות כלשהם או שיש לך הצעות לשיפור, אנא צור איתנו קשר:",email:"אימייל:",subjectLine:"שורת נושא:",response:"אנחנו שואפים להגיב למשוב נגישות תוך 5 ימי עסקים. הקלט שלך עוזר לנו לשפר את החוויה עבור כל המשתמשים."},thirdPartyContent:{title:"תוכן של צדדים שלישיים",text:"האתר שלנו עשוי לכלול תוכן של צדדים שלישיים או קישורים לאתרי אינטרנט של צדדים שלישיים. אנחנו לא שולטים בתכונות הנגישות של האתרים החיצוניים האלה ואיננו אחראים לציות הנגישות שלהם."},updates:{title:"עדכונים להצהרה זו",text:'אנחנו נבדוק ונעדכן את הצהרת הנגישות הזו באופן קבוע כדי לשקף את המחויבות המתמשכת שלנו וכל שינוי בפרקטיקות הנגישות שלנו. התאריך "עודכן לאחרונה" בראש העמוד מציין מתי ההצהרה עודכנה לאחרונה.'}},wB={commitment:"אנחנו מחויבים להפוך את Boardspace.ai לנגיש לכולם. תודה על עזרתך לנו להשתפר.",lastUpdated:"עודכן לאחרונה: ינואר 2025"},kB={title:bB,lastUpdated:vB,company:yB,sections:xB,footer:wB},_B="איזה חלל נעצב יחד?",SB="איזה חלל נעצב ",CB="יחד?",TB="בחרו את הצעד הבא שלכם כדי ליצור עיצובי פנים מרהיבים",jB={badge:"חדש!",text:"נסו את הוורקפלואוז האוטומטיים"},NB={sectionTitle:"קיצורי דרך לפרומפטים",tabs:{images:"תמונות",video:"וידאו",video2images:"וידאו 2 תמונות"},video2images:{title:"וידאו 2 תמונות",prompt:"צור וידאו מעבר חלק משתי התמונות האלה. התחל מהתמונה הראשונה ועבור לתמונה השנייה על פני 5–10 שניות עם תנועה טבעית."},i2v1:{title:"סיור בחדר 10 שנ׳",prompt:"וידאו של 10 שניות. המצלמה נעה לאט קדימה לתוך החדר, סורקת מימין לשמאל, חושפת את כל פרטי העיצוב, ונעצרת בחלון הראשי."},i2v2:{title:"חשיפת תאורה טבעית",prompt:"וידאו קצר. האור בחדר משתנה בהדרגה מחושך לאור בוקר חם שחודר דרך החלונות, מטיל צללים רכים על הרהיטים, ונח על מצב של שמש מלאה."},i2v3:{title:"זום על פרט עיצובי",prompt:"וידאו קצר. המצלמה מתקרבת באיטיות מתמונה רחבה של החדר אל פרט מרכזי אחד - מרקם, חומר או אלמנט דקורטיבי - ונעצרת בקלוז-אפ."},i2v4:{title:"תנועת חיים עם סאונד",prompt:"וידאו עם סאונד. הווילונות נעים בעדינות ברוח קלה, אור השמש מרצד על המשטחים, עלי צמח נעים מעט, והכל שוקע חזרה לשקט."},i2v5:{title:"סיבוב פנורמי 10 שנ׳",prompt:"וידאו ארוך של 10 שניות. המצלמה מסתובבת 180 מעלות באיטיות סביב מרכז החדר, חושפת כל קיר ופינה, ונעצרת בנקודת ההתחלה."},i2v6:{title:"מעבר יום-ערב 10 שנ׳",prompt:"וידאו של 10 שניות. התאורה בחדר משתנה בהדרגה מאור צהריים בהיר לאווירת ערב חמימה עם נורות דולקות ונרות, ומתייצבת על תאורה רכה."},i2v7:{title:"מבט מלמעלה",prompt:"וידאו קצר. המצל
596מה צונחת באיטיות מזווית עילית ישירות מעל החדר, יורדת בהדרגה לגובה עיניים, ונעצרת על מבט ישר קדימה."},i2v8:{title:"מעקב אחר קו עיצובי 10 שנ׳",prompt:"וידאו ארוך של 10 שניות. המצלמה עוקבת לאורך קו המטבח/ספרייה/קיר הנגרות מצד אחד לשני, חושפת כל פרט וחומר, ונעצרת בקצה."},i2v9:{title:"חשיפת עומק החלל 10 שנ׳",prompt:"וידאו של 10 שניות. המצלמה נעה לאחור באיטיות מפרט קרוב, חושפת את כל החדר שכבה אחרי שכבה, ונעצרת על תמונה רחבה מלאה."},i2v10:{title:"אווירה חיה עם סאונד",prompt:"וידאו עם סאונד. אדים עולים מכוס קפה על השיש, אור מרצד דרך החלון, צל ×¢×¥ × ×¢ בעדינות על הקיר, והכל שוקע לרוגע."},twoImg1:{title:"שיפוץ לפני/אחרי עם סאונד",prompt:"וידאו עם סאונד. המצלמה נשארת קבועה באותה זווית. החדר הישן מתפרק בהדרגה ונבנה מחדש לעיצוב המחודש, עד שמתייצב על התוצאה הסופית."},twoImg2:{title:"מעבר סגנון עיצובי עם סאונד",prompt:"וידאו עם סאונד. מאותה נקודת מבט בדיוק, החדר מורפ בהדרגה מסגנון אחד לסגנון השני - רהיטים, צבעים וחומרים משתנים בזרימה חלקה."},twoImg3:{title:"חדר ריק ← מרוהט עם סאונד",prompt:"וידאו עם סאונד. המצלמה קבועה. הרהיטים מופיעים אחד אחרי השני בחלל הריק - ספה, שולחן, תאורה, דקורציה - עד שהחדר מלא ומוכן."},twoImg4:{title:"מעבר יום ← לילה עם סאונד",prompt:"וידאו עם סאונד. אותה זווית מצלמה בדיוק. האור הטבעי נעלם בהדרגה, נורות פנים נדלקות, האווירה משתנה מבהירה לאינטימית חמימה."},twoImg5:{title:"שינוי צבע קירות ללא סאונד",prompt:"וידאו ללא סאונד של 10 שניות. המצלמה קבועה במקום. הצבע הישן של הקירות נמס בהדרגה ומוחלף בצבע החדש, גולש מלמעלה למטה, ומתייצב."},twoImg6:{title:"מעבר עונתי עם סאונד",prompt:"וידאו עם סאונד. מאותה נקודה, הדקורציה משתנה - מעיצוב קיצי בהיר לעיצוב חורפי חמים עם שמיכות, כריות ותאורה רכה, ונח על המצב הסופי."},twoImg7:{title:"שדרוג מטבח 5 שנ׳",prompt:"וידאו מהיר של 5 שניות. המצלמה קבועה. משטחי העבודה, הארונות והריצוף מורפים בהדרגה מהמצב הקיים לעיצוב המשודרג, עד שנעצר על התוצאה."},twoImg8:{title:"הוספת אלמנטים ללא סאונד",prompt:"וידאו ללא סאונד של 10 שניות. מזווית קבועה, אלמנטים חדשים נכנסים לחלל בהדרגה - תמונות על הקיר, צמחים, שטיח, גופי תאורה - עד שהחדר מושלם."},twoImg9:{title:"מעבר חומרים ללא סאונד",prompt:"וידאו ללא סאונד של 10 שניות. המצלמה קבועה. הרצפה/קיר/משטח מורפ מחומר אחד לאחר - מאריח לפרקט, מבטון לשיש - בזרימה חלקה ונעצר."},twoImg10:{title:"פתיחת חלל עם סאונד",prompt:"וידאו עם סאונד. מאותה נקודה, קיר מתפרק בהדרגה וחושף חלל נוסף, החדר מתרחב ומתמזג עם האזור החדש, ונח על התוצאה הפתוחה."},mixMaterials:{title:"שלב חומרים",prompt:"שלב את 7 החומרים האלה בצורה הטובה ביותר בכל החלל הזה. צור עיצוב מגובש והרמוני שמשתמש אסטרטגית בכל חומר."},cinematicVideo:{title:"וידאו קולנועי",prompt:"צור וידאו איכותי של 10 שניות עם סאונד מתמונה אחת זו. הפוך אותו לקולנועי עם תנועות מצלמה חלקות, מוזיקה אמביינטית, והצג את כל פרטי העיצוב."},viralPost:{title:"פוסט ויראלי",prompt:"הפוך את התמונה הזו לפוסט מדיה חברתית ויראלי. הפוך אותו למרשים ושיתופי."},styleMatch:{title:"העתקת סגנון",prompt:"צור מצגת StyleMatch מתמונת ייחוס אחת זו וצור 6-8 חללים קשורים ששומרים על אותה פלטת צבעים, חומרים ואווירה."},floorPlan3D:{title:"תוכנית העמדה 3D",prompt:"אני רוצה להפוך את התוכניות העמדה למבט-על תלת מימדי עם הטייה זווית קלה של 20 אחוז , לראות את הקירות, הדלתות פנים יפות וברורות, הרהיטים והרצפה בצורה ריאליסטית כאילו מצלמה מלמעלה צילמה את הבית האמיתי. שולחן אוכל ×¢×¥ אלון, מטבח טופ שחור עם ורידים אפורים קררה, רצפת בטון מוחלק כהה קצת מודרנית, ×¢×¥ אלון פישבון בחדרי שינה"},sketchReality:{title:"סקיצה למציאות",prompt:"הפוך את הסקיצה הבאה לרנדר פנים, שלב חומרים עדכניים ל 2026 ומודרניים, מקצועית. התמונה שתצא תהיה סופר ריאליסטית"},designDNA:{title:"די.אנ.איי עיצובי",prompt:"עבור התמונה המצורפת 1, צור מצגת DesignDNA—חלץ את פריטי הריהוט והעיצוב הקיימים מהתמונה הזו, נתח את סגנון העיצוב, חלץ את פלטת הצבעים, והצג אותם על לוח מצב רוח מקצועי אחד."},kitchenBoard:{title:"מטבח x6",prompt:"עבור התמונה המצורפת 1, צור מצגת KitchenBoard עם 6 וריאציות שונות של חומרים ופלטת צבעים של המטבח הזה, בהשראת טרנדים ממילאנו 2024-2025. הצג לי את כל הווריאציות על לוח מצ×
596’ת אחד עם המקור."},"3dModel":{title:"מודל 3D",prompt:"המר את תמונת הריהוט הדו-ממדית הזו למודל תלת-ממדי שאפשר להשתמש בו בתוכנת SketchUp שלי להדמיה נוספת ומצגות לקוחות."},customCatalog:{title:"קטלוג אישי",prompt:"בהתבסס על התמונה המבוימת הזו כתמונה ראשית, צור קטלוג מצגת מותאם אישית ביחס 16:9 עם רקע לבן נקי—חלץ ובודד את פריטי הריהוט המרכזיים, תייג אותם, והצג אותם בסגנון מילאנו 2025 למצגת לקוח מוכנה ל-PDF."}},PB={creator:{name:"Nano Banana 2",description:"nano banana 2 - המודל המצויין של גוגל. כולל חיפוש תמונות בגוגל"},erase:{name:"הסרת ווטרמארק",description:"הסר ווטרמארקים מתמונות"},combine:{name:"שלב תמונות",description:"שלב עד 10 תמונות ייחוס לאחת"},promptHelper:{name:"בורדי",description:"סוכן חכם שמנתב אוטומטית את הבקשה שלך לכלי AI המתמחה הטוב ביותר"},video3d:{name:"Kling v2.1",description:`תמונה אחת לוידאו
597
5985 שניות`},wanVideo:{name:"WAN 2.5",description:"וידאו 5 שניות עם סאונד, 480p"},ltxVideo10s:{name:"LTX-Fast",description:"וידאו 10 שניות עם סאונד, 1080p"},seedanceVideo:{name:"Seedance 2",description:"2 תמונות לוידאו"},generate3d:{name:"סוכן תלת-ממדי",description:"צור כל מודל תלת-ממדי בפורמט .glb. ריהוט ומוצרי עיצוב"},styleSwitch:{name:"החלפת סגנון",description:"הפוך סגנונות עיצוב פנים עם עיצוב מחדש ריאליסטי של חדר"},ultraReal:{name:"אולטרה ריאליסטי",description:"צור עיצובי פנים אולטרה ריאליסטיים ופוטוריאליסטיים עם FLUX 1.1 Pro"},priceScan:{name:"סוכן סריקת מחירים",description:"צור מצגות הצעת מחיר מקצועיות מתמונות חדרים"},quickEdit:{name:"העורך המדוייק",description:"עריכה מדויקת עם סימון אזורים, רפרנסים ווריאציות"},imageGenerator:{name:"יוצר תמונות",description:"צור תמונות מפרומפטי טקסט באמצעות מודל FLUX מהיר"},multiAngle:{name:"סוכן זוויות צילום",description:"שינוי זווית צילום - סיבוב, הטיה, זום תוך שמירה על האובייקטים"},nanoBananaPro:{name:"Nano Banana Pro",description:"מודל עריכת תמונות מתקדם של Google"},flux2Pro:{name:"עריכת תמונות (Flux 2.0 Pro)",description:"יצירת ועריכת תמונות איכותיות עם תמיכה בשמונה תמונות ייחוס"},gpt5Image:{name:"עריכת תמונות (GPT)",description:"עריכת תמונות מתקדמת באמצעות gpt-image-1"},klingO1:{name:"Kling O1",description:"עריכות תמונה מדויקות עם בקרת ייחוס חזקה (עד 10 תמונות)"},klingO1Video:{name:"Kling O1",description:`מעבר וידאו חלק
5995 שניות, 1080p`},klingMotionControl:{name:"Kling שליטה בתנועה",description:"העבר תנועה מסרטון לתמונה (8 שניות, 1080p)"},gptImage15:{name:"עריכת תמונות (GPT 1.5)",description:"עריכה באיכות גבוהה עם שימור פרטים עדינים"},gptImage2:{name:"GPT Image 2.0",description:"עריכה באיכות גבוהה עם שימור פרטים עדינים"},grokVideo:{name:"Grok Video",description:"וידאו AI מתמונה (6-30 שניות)"},veoVideo:{name:"Veo 3.1",description:"וידאו AI באיכות גבוהה עם סאונד"},grokImageEditor:{name:"Grok",description:"עריכת תמונות AI עם Grok — תמיד מחזיר 2 וריאציות ייחודיות"},seedream45Edit:{name:"Seedream 4.5",description:"עריכת תמונות באיכות גבוהה עם Seedream 4.5"},seedream5Lite:{name:"Seedream 5.0",description:"עריכת תמונות פרימיום עם Seedream 5.0 Lite"},runwayVideo:{name:"וידאו Runway",description:"וידאו AI מתמונה (5 שניות, 720p, ללא סאונד)"},princeEditor:{name:"העורך הנסיך",description:"עריכת תמונות מהירה עם עד 5 תמונות ייחוס"}},AB={image:{label:"תמונה",helper:"בקרת פרטים + עריכה"},video:{label:"וידאו",helper:"כלי תנועה + סאונד"},"3d":{label:"תלת מיימד",helper:"מודלים + ויזואליזציה"}}
599,EB={inputs:"קלטים",tokens:"טוקנים",promptGuide:"מדריך פרומפטים",comingSoon:"{{category}} חדש בקרוב.",clearAll:"נקה את כל תמונות הייחוס"},IB={myBoardspaces:"לוחות העבודה שלי",seeAll:"ראה הכל",showLess:"הצג פחות"},DB={header:{projectsMenuAria:"תפריט פרויקטים",notificationsAria:"התראות"},mobileNav:{navAria:"ניווט מהיר בדשבורד",canvas:"קנבס",canvasAria:"מעבר לדשבורד וקנבס",academy:"אקדמיה",academyAria:"מעבר לאקדמיה",marketplace:"מרקטפלייס",marketplaceAria:"מעבר למרקטפלייס יוצרים",settings:"הגדרות",settingsAria:"פתיחת הגדרות"},heroHeadline:{updates:"{{count}} עדכונים חדשים",line1:"איזה חלל",line2Prefix:"נעצב",line2Highlight:"יחד?",stats:{rating:"דירוג משתמשים",avgTime:"זמן ממוצע",renders:"רנדרים עד כה"}},heroCards:{eyebrow:"בחרו איך להתחיל",meta:"ארבעת השירותים שלנו",newBadge:"חדש",cards:{createAlone:{tag:"קנבס",title:"צור על קנבס",subtitle:"בעיקר לעריכת תמונות מורכבות עם מודלים מובילים כמו Nano Banana, GPT Image 2.0, Flux ועוד.",cta:"פתח קנבס"},boardstyler:{tag:"בורדסטיילר",title:"בורדסטיילר",subtitle:"הפוך תוכנית דו-ממדית לתלת-ממד. גרור פנימה ריצוף, חיפויים ורהיטים אמיתיים, ובצע רנדר מכל זווית.",cta:"העלאת תוכנית"},studio:{tag:"סטודיו וידאו",title:"סטודיו 2.0 לוידאו",subtitle:"כל מנועי הווידאו המובילים במקום אחד נוח וחכם: Kling 3.0, Seedance 2, Veo 3.1, Grok Video ועוד.",cta:"התחל סרטון"},videoEditor:{tag:"עורך וידאו",title:"עורך וידאו",subtitle:"חתכו וחברו קליפים, הוסיפו מוזיקה, כותרות ומעברים — הכול על טיימליין אחד.",cta:"פתח את העורך"},marketplace:{tag:"מרקטפלייס",title:"תן למקצוען",subtitle:"יוצרי תוכן מובילים, מאושרים על ידי Boardspace וזמינים לעבודה מיידית.",cta:"אל המרקטפלייס"}},desktopOnly:{closeAria:"סגור",videoEditor:{title:"עורך הווידאו במסך רחב",body:"לעריכה נוחה על הטיימליין, פתחו את Boardspace בדפדפן במחשב או בטאבלט במסך רחב.",cta:"הבנתי"},boardstyler:{title:"בורדסטיילר במחשב או בטאבלט",body:"הכלי זמין כרגע במחשב או בטאבלט. פתחו את Boardspace בדפדפן במסך רחב כדי להעלות תוכנית, לערוך בתלת־ממד ולבצע רנדרים.",cta:"הבנתי"},studio:{title:"סטודיו 2.0 במחשב או בטאבלט",body:"סטודיו הווידאו זמין כרגע במחשב או בטאבלט. פתחו את Boardspace בדפדפן במסך רחב כדי לעבוד עם Kling, Seedance, Veo, Grok ושאר המנועים.",cta:"הבנתי"}},boardstylerGate:{eyebrow:"כלול במנוי החודשי",title:"בורדסטיילר פתוח ללקוחות מנויים",description:"בורדסטיילר כלול בחינם ללקוחות המנוי החודשי. מי שמנוי יכול להיכנס לעורך, לבנות חללים, ליצור מבטים, לעבוד בתלת־ממד ולהפיק וידאו מתוך העורך ללא עלות נוספת.",benefits:["גישה מלאה לבורדסטיילר ולפרויקטים שלכם","מבטים, תלת־ממד ווידאו מתוך העורך כלולים במנוי","כל כלי העבודה נשארים פתוחים כל עוד המנוי פעיל"],cta:"לעמוד התשלום",secondaryCta:"חזרה לדשבורד"}},webinar:{featuresHeading:"מה יהיה בוובינר",featuresLead:"ארבעת השירותים המרכזיים של BoardSpace 2.0 — בוובינר נסביר, נדגים ונענה על שאלות."},workflows:{title:"וורקפלואים פופולריים",prevAria:"הקודם",nextAria:"הבא",sliderAria:"גלול בין הוורקפלואים",tokensLabel:"טוקנים",startCta:"התחל"},projects:{title:"הפרויקטים שלי",prevAria:"הקודם",nextAria:"הבא",loading:"טוען...",untitled:"ללא שם",noPreview:"אין תצוגה מקדימה",shared:"משותף",imagesCount:"{{count}} תמונות",updatedAt:"עודכן {{relative}}",newProject:"פרויקט חדש",startBlank:"התחל לוח ריק",loginRequired:"יש להתחבר כדי ליצור לוח חדש",createFailed:"נכשל ביצירת לוח חדש",boardPrefix:"לוח חדש"},academy:{title:"מהאקדמיה שלנו",meta:"הסרטונים הראשונים",allVideos:"לכל הסרטונים",lessonLabel:"שיעור {{id}}",generalLabel:"כללי",modalTitle:"סרטון אקדמיה",closeAria:"סגור",videoTitles:{1:"איך מתחילים?",2:"הכרות עם המערכת",3:"יצירת וידאו בסטודיו 2.0",4:"עריכה מדויקת",5:"שילוב חומרים",6:"וורקפלאוז",7:"הדרכה עם טל בניש",8:"המשך חלק 2 - טל בניש",9:"וובינר חלק 3 - טל בניש",10:"שאלות ותשובות - סיכום וובינר",11:"וובינר - דיאלוג פתוח שאלות ותשובות",12:"תוכנית לתלת מימד עם טל בניש",13:"מסקיצה להחלטה — שינוי דלת, בחירת כניסה, הכל ב-AI רק בגרסה עברית!",intro:"מה זה בורדספייס?"}},community:{title:"הדמיות וידאו ותמונה אמיתיות שנוצרו ע״י יוצרי תוכן מקצוענים של Boardspace",marketplaceCta:"בקר במרקטפלייס",media:{video:"וידאו",image:"תמונה"},tags:{new:"NEW",hot:"HOT",trending:"TRENDING",live:"LIVE"}}},RB={greeting:_B,greetingPrefix:SB,greetingHighlight:CB,subtitle:TB,workflowsBanner:jB,promptShortcuts:NB,agents:PB,categories:AB,common:EB,galleries:IB,dashboard2:DB},LB={brand:"GPT לצ׳אט",backToCanvas:"חזרה לקנבס",newChat:"שיחה חדשה",search:"חיפוש בשיחות",today:"היום",thisWeek:"השבוע",older:"ישן יותר",loadMore:"טען עוד",rename:"שינוי שם",delete:"מחיקה",deleteTitle:"למחוק את השיחה?",deleteDescription:"השיחה וכל ההודעות שבה יימחקו לצמיתות.",cancel:"ביטול",confirmDelete:"כן, למחוק",emptyTitle:"על מה מדברים?",emptyTitleNamed:"{{name}}, על מה מדברים?",placeholder:"אפשר לשאול אותי כל דבר",regularMode:"רגיל · 0.1",webMode:"אינטרנט · 0.1",webSearch:"חיפוש באינטרנט",attachImages:"העלאת תמונות",send:"שליחה",copy:"העתקה",copied:"הועתק",loading:"טוען את השיחה…",noChats:"עדיין אין שיחות",noSearchResults:"לא נמצאו שיחות",imageLimit:"אפשר לצרף עד 6 תמונות",dropImages:"גררו תמונות לכאן",dropImagesHint:"מהמחשב או מהקנבס · עד 6 תמונות",renamePlaceholder:"שם השיחה",save:"שמירה",error:"לא הצלחנו לטעון את הצ׳אט. נסו שוב.",showChats:"הצג שיחות",hideChats:"הסתר שיחות",models:{mini:"GPT-5 
599· 0.1",web:"Web · 0.1",gpt5Mini:"GPT-5 · 0.1",gpt5MiniWeb:"GPT-5 · 0.1 + אינטרנט"},modelPicker:"בחירת מודל"},OB={analysis:["מעבדת","מפענחת","קוראת","מזהה","חוקרת","בוחנת","לומדת","פורמת","סורקת","מנתחת"],generation:["חולמת","מדמיינת","צובעת","משרטטת","מבשלת","אורגת","מייצרת","יוצרת","מרנדרת","מפיחה חיים","מממשת","מלחינה","מכשפת","מגשימה","טווה","מבשלת קסם","עושה קסמים","מפקסלת"],baker:["כותבת תסריט","בוחרת זוויות","מתכננת שוטים","מנהלת במה","מתבלת פרומפט","מלטשת מילים","בוחנת חומרים","מכוונת מצלמה","טווה סיפור","אופה פרומפט"],imageBaker:["מהנדסת פרומפט","תופרת חומרים","סורקת טקסטורות","מודדת אור","מלחינה סצנה","בוחרת עדשות","מכיילת צבעים","אורגת פרטים","אופה פרומפט","מלטשת מילים"],sketchupBaker:["סורקת את הרהיט","מודדת רוחב ועומק","מפרקת לחלקים","מגדירה קומפוננטות","מארגנת היררכיה","מחשבת עובי לוח","מתכננת מגירות ודלתות","כותבת פרומפט בנייה","מלטשת גיאומטריה","בוחרת חומרים"]},MB={creator:{name:"Nano Banana 2",description:"nano banana 2 - המודל המצויין של גוגל. כולל חיפוש תמונות בגוגל"},erase:{name:"הסרת ווטרמארק",description:"הסר ווטרמארקים מתמונות"},combine:{name:"שלב תמונות",description:"שלב עד 10 תמונות ייחוס לאחת"},promptHelper:{name:"בורדי",description:"סוכן חכם שמנתב אוטומטית את הבקשה שלך לכלי AI המתמחה הטוב ביותר"},video3d:{name:"Kling v2.1",description:`תמונה אחת לוידאו
600
6015 שניות`},wanVideo:{name:"WAN 2.5",description:"וידאו 5 שניות עם סאונד, 480p"},ltxVideo10s:{name:"LTX-Fast",description:"וידאו 10 שניות עם סאונד, 1080p"},seedanceVideo:{name:"Seedance 2",description:"2 תמונות לוידאו"},generate3d:{name:"סוכן תלת-ממדי",description:"צור כל מודל תלת-ממדי בפורמט .glb. ריהוט ומוצרי עיצוב"},blender3d:{name:"סוכן Blender 3D",description:"בניית רהיטי GLB מופרדי-חלקים בבלנדר — קלוד מדגמן בלולאת ראייה-ותיקון. טקסט 20 טוקנים, PDF 50, תמונה 50"},kitchenDae:{name:"סקיצת מטבח",description:"הפיכת 1-4 תמונות מטבח לקובץ DAE מוכן לעבודה ב-SketchUp"},styleSwitch:{name:"החלפת סגנון",description:"הפוך סגנונות עיצוב פנים עם עיצוב מחדש ריאליסטי של חדר"},ultraReal:{name:"אולטרה ריאליסטי",description:"צור עיצובי פנים אולטרה ריאליסטיים ופוטוריאליסטיים עם FLUX 1.1 Pro"},priceScan:{name:"סוכן סריקת מחירים",description:"צור מצגות הצעת מחיר מקצועיות מתמונות חדרים"},quickEdit:{name:"העורך המדוייק",description:"עריכה מדויקת עם סימון אזורים, רפרנסים ווריאציות"},imageGenerator:{name:"יוצר תמונות",description:"צור תמונות מפרומפטי טקסט באמצעות מודל FLUX מהיר"},boardspaceEditor:{name:"עורך Boardspace",description:"עריכת תמונות באיכות גבוהה עם דיוק מקסימלי לפרומפט"},multiAngle:{name:"סוכן זוויות צילום",description:"שינוי זווית צילום - סיבוב, הטיה, זום תוך שמירה על האובייקטים"},nanoBananaPro:{name:"Nano Banana Pro",description:"מודל עריכת תמונות מתקדם של Google"},flux2Pro:{name:"עריכת תמונות (Flux 2.0 Pro)",description:"יצירת ועריכת תמונות איכותיות עם תמיכה בשמונה תמונות ייחוס"},gpt5Image:{name:"עריכת תמונות (GPT)",description:"עריכת תמונות מתקדמת באמצעות gpt-image-1"},klingO1:{name:"Kling O1",description:"עריכות תמונה מדויקות עם בקרת ייחוס חזקה (עד 10 תמונות)"},gptImage15:{name:"עריכת תמונות (GPT 1.5)",description:"עריכה באיכות גבוהה עם שימור פרטים עדינים"},gptImage2:{name:"GPT Image 2.0",description:"עריכה באיכות גבוהה עם שימור פרטים עדינים"},gptImage25Edit:{name:"GPT Image 2.5 עריכה",description:"צרפו תמונה אחת לצ׳אט, ואז הוסיפו עד 10 עריכות מדויקות ב־1K,‏ 2K או 4K — החל מ־3 טוקנים"},gptImage24k:{name:"GPT Image 2.0 4K",description:"עריכה ברזולוציית 4K"},klingO1Video:{name:"Kling O1",description:`מעבר וידאו חלק
6025 שניות, 1080p`},klingMotionControl:{name:"Kling שליטה בתנועה",description:"העבר תנועה מסרטון לתמונה (8 שניות, 1080p)"},grokVideo:{name:"Grok Video",description:"וידאו AI מתמונה (6-30 שניות)"},grokImageEditor:{name:"Grok Imagine Image 2.0",description:"עריכת תמונה שלמה עם Grok Imagine Image 2.0 באיכות 2K — תמונה אחת נכנסת, אחת יוצאת"},seedream45Edit:{name:"Seedream 4.5",description:"עריכת תמונות באיכות גבוהה עם Seedream 4.5"},seedream5Lite:{name:"Seedream 5.0",description:"עריכת תמונות פרימיום עם Seedream 5.0 Lite"},runwayVideo:{name:"וידאו Runway",description:"וידאו AI מתמונה (5 שניות, 720p, ללא סאונד)"},veoVideo:{name:"Veo 3.1",description:"וידאו AI באיכות גבוהה עם סאונד"},princeEditor:{name:"העורך הנסיך",description:"עריכת תמונות מהירה עם עד 5 תמונות ייחוס"}},zB={image:"תמונה",video:"וידאו","3d":"תלת מיימד"},BB={createBoardspace:"לוח עבודה חדש",enterBoardspaceName:"הז×
602Ÿ שם ללוח העבודה...",searchBoardspaces:"חיפוש לוחות עבודה...",renameBoard:"שנה שם",deleteBoard:"מחק",renameDialogTitle:"שינוי שם לוח העבודה",renameDialogDescription:"הזינו שם חדש ללוח העבודה",renameDialogConfirm:"עדכן שם",cancel:"ביטול",deleteDialogTitle:"למחוק את לוח העבודה?",deleteDialogDescription:"הפעולה הזו לא ניתנת לביטול. לוח העבודה וכל התוכן שבו יימחקו לצמיתות.",deleteDialogConfirm:"מחק",select:"בחירה",selectedSuffix:"נבחרו",deleteSelected:"מחק",bulkDeleteTitle:"למחוק את הלוחות שנבחרו?",bulkDeleteDescription:"הפעולה הזו לא ניתנת לביטול. כל לוחות העבודה שנבחרו וכל התוכן שבהם יימחקו לצמיתות.",bulkDeleteSuccess:"לוחות עבודה נמחקו",bulkDeleteFailed:"לוחות עבודה לא נמחקו",deleting:"מוחק..."},FB={depthRegion:"סימון אובייקט",depthRegionHint:"האובייקט + רקע נקי מאחוריו",depthQuick:"פירוק מהיר",depthQuickHint:"3 שכבות",depthFull:"פירוק מלא",depthFullHint:"עד 6 שכבות",depthDetailed:"פירוק מפורט",depthDetailedHint:"עד 10 שכבות"},$B={decomposeLayers:"פירוק לשכבות",aiAssistant:"עוזר AI",backToDashboard:"חזור לדשבורד",buyTokens:"קנה טוקנים",drawingTools:"כלי ציור",uploadImage:"העלו תמונה",uploadVideo:"העלה וידאו",uploadVideoFile:"העלה קובץ וידאו",addYouTube:"הוסף סרטון YouTube",pinterest:"חבר את פינטרסט",inspiration:"השראה",materialsReferences:"ספריית חומרים",colorPalette:"פלטת צבעים",colorPalettes2025:"פלטות צבעים 2025",workflows:"וורקפלאו אוטומטי",assetBank:"הנכסים שלך",promptLibrary:"ספריית הפרומפטים שלי",share:"שתף",shareCanvas:"שתף לוח עם חבר",activityLog:"יומן פעילות",openMinimap:"מפת הלוח",closeMinimap:"סגור מפת הלוח",agents:"סוכנים",zoomOut:"הקטן זום",zoomIn:"הגדל זום",zoomLevel:"רמת זום",zoomToFit:"התאם זום לכל האלמנטים",spreadImages:"פזר תמונות באופן שווה בתצוגה",downloadCanvas:"הורד קנבס כתמונה",muteSounds:"השתק צלילים",unmuteSounds:"הפעל צלילים",switchToLightMode:"עבור למצב בהיר",switchToDarkMode:"עבור למצב כהה",undo:"בטל",redo:"בצע שוב",sharedWith:"משותף עם",person:"אדם",people:"אנשים",select:"בחירה והזזה",selectAndPan:"בחירה והזזה",dashboard:"דשבורד",settings:"הגדרות",help:"עזרה",signOut:"יציאה",quickEdit:"עריכה",preciseEdit:"העורך המדוייק",seedream5Pro:"Seedream 5 Pro",gptImage25Edit:"GPT Image 2.5 עריכה",paint:"סימון",turnImageToVideo:"הפוך תמונה לוידאו",getPresentations:"קבל מצגות",upscaleImage:"חדד תמונה",drag:"גרור",rectangle:"מלבן",circle:"עיגול",arrow:"חץ",stickyNote:"פתק דביק",text:"פתק דביק",plainText:"טקסט רגיל",plaintext:"טקסט רגיל",pen:"עט",measure:"מדידה",download:"הורד",downloadAsJPG:"הורד כ-JPG",downloadAsPNG:"הורד כ-PNG",uploadImages:"צרף תמונה",promptOnlyNoReferences:"המודל הזה יודע לייצר תמונות מפרומפט בלבד. יש להכניס בקשה בשפה טבעית — בלי תמונות רפרנס.",send:"שלח",holdToSpeak:"לחץ כדי לדבר",chatUploadImage:"העלה תמונה",chatBordi:"בורדי",chatJasonPromptWriter:"ג׳ייסון כותב הפרומפטים",chatGptChat:"שוחח עם צ׳ט",chatLiveWeb:"לחץ לחיבור לאינטרנט לייב",chatVoiceInput:"דבר במקום להקליט",clickToStopListening:"לחץ כדי להפסיק להאזין",startConversation:"התחל שיחה עם סוכן ה-AI שלך",uploadImageAndDescribe:"העלו תמונה ותארו מה תרצו לעשות",tokenBalance:"מצב טוקנים",publish:"פרסם",publishToGallery:"פרסם לגלריה",export:"ייצוא",exportCanvas:"ייצא לוח",home:"בית",projects:"פרויקטים",tools:"כלים",media:"מדיה",references:"חומרים",inputs:"קלטים",tokens:"טוקנים",promptGuide:"מדריך פרומפטים",uploadImageAndTypeIdea:"העלו תמונה והקלידו את הרעיון שלכם",klingO1VideoPlaceholder:"הפנה למסגרות התחלה וסיום באמצעות @Image1 ו-@Image2 בפרומפטים כדי לכוון סגנון, תנועת מצלמה ודינמיקת סצנה במהלך המעבר",showPrompts:"הצג רעיונות לפרומפטים",hidePrompts:"הסתר רעיונות לפרומפטים",clearChat:"נקה צ'אט",exitChat:"צא מהצ'אט",clearSession:"נקה סשן",exit:"יציאה",openAIAssistant:"פתח עוזר AI",closeAIAssistant:"סגור עוזר AI",addMedia:"הוסף מדיה",addImagesFromDevice:"הוסף תמונות מהמכשיר",addVideosFromDevice:"הוסף וידאו מהמכשיר",youtubeVideo:"סרטון YouTube",embedFromYouTube:"הטמע מכתובת YouTube",browseInspirationBo
602ards:"עיין בלוחות השראה",exploreColorCombinations:"חקור שילובי צבעים",importFromPinterest:"ייבא מ-Pinterest",groupCreationMode:{title:"מצב יצירת קבוצה",selected:"נבחרו",clickToAdd:"לחץ על אלמנטים להוספה",rightClickToFinish:"קליק ימני לסיום"},contextMenu:{sendToChat:"שלח לצ'אט",bringToFront:"הבא לחזית",bringForward:"הבא קדימה",sendBackward:"שלח אחורה",sendToBack:"שלח לאחור",lock:"נעל",unlock:"בטל נעילה",createGroup:"צור קבוצה",finishGroup:"סיים קבוצה",cancelGroup:"בטל קבוצה",ungroup:"בטל קיבוץ",removeBackground:"הסר רקע",upscaleImage:"חדד תמונה (חינם)",topazUpscaleImage:"Topaz חידוד פרימיום (2 טוקנים)",topazUpscaleVideo:"Topaz שדרוג וידאו",topazUpscaleVideo720p:"מהיר 720p (2 טוקנים)",topazUpscaleVideo1080p:"סטנדרט 1080p (4 טוקנים)",topazUpscaleVideo4k:"פרימיום 4K (15 טוקנים)",topazUpscaleVideoTooLong:"הקליפ ארוך מדי לשדרוג, חתוך אותו ל-10 שניות",addMusic:"הוסף מוזיקה (2 טוקנים)",duplicate:"שכפל",download:"הורד",delete:"מחק",fillColor:"צבע מילוי",strokeColor:"צבע קו",textColor:"צבע טקסט",opacity:"שקיפות",customColor:"צבע מותאם אישית",apply:"החל",saveToAssets:"שמור לנכסים שלי"},chatSketchPresets:"פריסטים לסקיצה"},VB={title:'שתף "{{title}}"',inviteDescription:"הזמן אחרים לשתף פעולה ",inviteDescriptionHighlight:"על הלוח הזה",viewAccessDescription:"צפה במי שיש לו גישה ללוח הזה",emailLabel:"כתובת אימייל",emailPlaceholder:"[email protected]",messageLabel:"הודעה (אופציונלי)",messagePlaceholder:"בואו נעבוד על זה ביחד...",userFound:"המשתמש נמצא במערכת",userNotFound:"המשתמש לא רשום במערכת",invitationsSent:"הזמנות נשלחו",pending:"ממתין",owner:"בעלים",you:"את/ה",collaborators:"משתפי פעולה",collaboratorsCount:"משתפי פעולה ({{count}})",noCollaboratorsYet:"עדיין אין משתפי פעולה",inviteAbove:"הזמן מישהו לשיתוף פעולה למעלה",cancel:"ביטול"},UB={markOnImage:"סימון על תמונה",escToCancel:"ESC לביטול",ctrlZToUndo:"Ctrl+Z לביטול",deleteToRemove:"Delete למחיקה",enterText:"הזן טקסט...",undo:"בטל (Ctrl+Z)",deleteSelected:"מחק נבחר",clearAll:"נקה הכל",addImage:"הוסף תמונה",selectColor:"בחר צבע",font:"פונט:",cancel:"ביטול",cropAndSave:"חתוך ושמור",saving:"שומר...",save:"שמור",tools:{arrow:"חץ",circle:"עיגול",rectangle:"ריבוע",text:"טקסט",crop:"חיתוך"}},qB={title:"הגדרות",tabs:{user:"משתמש/ת",integrations:"אינטגרציות",tokenPricing:"תמחור טוקנים",pricing:"תמחור",billing:"חיובים",tokenUsage:"שימוש בטוקנים",usage:"שימוש"},user:{plan:"תוכנית",memberSince:"חבר מאז",nextPayment:"תשלום הבא",tokens:"טוקנים",usage:"שימוש",upgrade:"שדרג"},canvas:{title:"הגדרות קנבס",showGrid:"הצג רשת",showGridDescription:"הצג תבנית נקודות על הקנבס"},theme:{title:"הגדרות ערכת נושא",darkMode:"מצב כהה",darkModeDescription:"השתמש בממשק כהה",lightMode:"מצב בהיר"},language:{title:"הגדרות שפה",currentLanguage:"שפה נוכחית",switchToHebrew:"עבור לעברית",switchToEnglish:"עבור לאנגלית"},integrations:{title:"חיבורים",connectedServices:"שירותים מחוברים",pinterest:{title:"Pinterest",description:"ייבא לוחות השראה ופינים לפרויקטים שלך",connected:"מחובר",notConnected:"לא מחובר",connect:"חבר Pinterest",disconnect:"נתק",boards:"לוחות",boardsConnected:"לוחות • מחובר",pinsImported:"פינים שיובאו",boardsUsed:"לוחות בשימוש",refresh:"רענן",import:"ייבא",settings:"הגדרות",connectMessage:"חבר את חשבון Pinterest שלך כדי לייבא השראה",lastSynced:"סנכרון אחרון",connectedAs:"מחובר כ"},moreIntegrations:{title:"אינטגרציות נוספות",description:"Instagram, Houzz ועוד בקרוב",comingSoon:"בקרוב"}},pricing:{title:"תמחור טוקנים לכל קריאה",description:"עלות הטוקנים לכל תכונה בזמן הקריאה. ללא עלות בדולרים - רק כמויות טוקנים.",feature:"תכונה",cost:"עלות",tokensPerUse:"טוקנים לשימוש",free:"חינם",categories:{superAgent:"תכונות Super Agent",imageFeatures:"תכונות תמונה",videoFeatures:"תכונות וידאו",presentations:"מצגות"},features:{imageCreator:{name:"יוצר תמונות",description:"צור תמונות עיצוב פנים/חוץ מפרומפטים ועריכה מורכבת"},sketchToReality:{name:"הסרת ווטרמארק",description:"הסר ווטרמארקים מתמונות"},combineImages:{name:"שלב תמונות",description:"שלב ריהוט ואביזרים (עד 10) לתמונה שלך"},agent3d:{name:"סוכן תלת-ממדי",description:"צור מודל תלת-ממדי מתמונה"}
602,nanoBananaPro:{name:"Nano Banana Pro",description:"מודל יצירת ועריכת תמונות מתקדם של Google עם טקסט מדויק ובקרות מקצועיות"},klingO1:{name:"Kling O1",description:"עריכות תמונה מדויקות עם בקרת ייחוס חזקה (עד 10 תמונות)"},removeBackground:{name:"הסרת רקע",description:"הסרת רקע מבוססת AI"},upscaleImage:{name:"חידוד תמונה",description:"שפר רזולוציית תמונה עם AI"},imageGenerator:{name:"יוצר תמונות",description:"צור תמונות מפרומפטי טקסט"},boardspaceEditor:{name:"עורך Boardspace",description:"עריכת תמונות באיכות גבוהה עם דיוק מקסימלי לפרומפט"},designDna:{name:"DesignDNA",description:"מחלץ את ה-DNA העיצובי שלך ואוסף 10-15 פריטי ריהוט ועיצוב שמתאימים בדיוק לאסתטיקה שלך עם דוגמיות צבע"},kitchenBoard:{name:"KitchenBoard",description:"יוצר 6 וריאציות ייחודיות של חומרים ופלטת צבעים לעיצוב המטבח שלך בהתבסס על טרנדים של מילאנו 2024-2025"},styleMatch:{name:"StyleMatch",description:"סגנון אחד, חדרים אינסופיים. עקביות עיצובית מיידית"},ultraReal:{name:"Ultra Real",description:"צור עיצובי פנים אולטרה ריאליסטיים ופוטוריאליסטיים עם FLUX 1.1 Pro"},video5sNoSound:{name:"תמונה 1 לוידאו (5 שניות, 720p, ללא צליל)",description:"צור וידאו 5 שניות מתמונות באיכות 720p, ללא אודיו"},video5sWithSound:{name:"תמונה לוידאו עם סאונד (5 שניות, 480p)",description:"צור וידאו 5 שניות עם סאונד מתמונות באיכות 480p"},video10s:{name:"וידאו 10 שניות (1080p, עם סאונד)",description:"צור וידאו קולנועי 10 שניות עם אודיו באיכות 1080p"},video2Image:{name:"וידאו 2 תמונות",description:"צור וידאו מעבר 10 שניות מ-2 תמונות"},grokVideo:{name:"Grok Video",description:"צור וידאו AI 6-30 שניות מתמונות"},veoVideo:{name:"Veo 3.1 וידאו",description:"וידאו AI איכותי עם סאונד, תומך ב-1-2 תמונות (Google Veo 3.1)"},priceScan:{name:"סוכן PriceScan",description:"צור מצגות הצעת מחיר מקצועיות מתמונות חדרים"}}},billing:{title:"חיובים ותשלומים",currentPlan:"תוכנית נוכחית",freePlan:"תוכנית חינמית",subscribedPlan:"מנוי פעיל",monthlyTokens:"טוקנים חודשיים",subscriptionPlans:"תוכניות מנוי",tokenPackages:"חבילות טוקנים",oneTimePurchase:"רכישה חד-פעמית",perMonth:"לחודש",popular:"פופולרי",bestValue:"הכי משתלם",subscribe:"הירשם",currentPlanBadge:"התוכנית שלך",buyTokens:"רכישת טוקנים",manageSubscription:"נהל מנוי",activeSubscription:"מנוי פעיל",alreadyOnPlan:"אתה כבר בתוכנית",upgradePlan:"שדרג את התוכנית שלך",memberSince:"חבר מאז",nextPayment:"תשלום הבא",tokensPerMonth:"טוקנים/חודש",allFeaturesIncluded:"כל התכונות כלולות",tokensRollover:"הטוקנים מתגלגלים מדי חודש",whatCanIDo:"מה אני יכול לעשות עם",tokens:"טוקנים",processing:"מעבדת...",switchPlan:"עבור לתוכנית זו",upgrade:"שדרג",perToken:"לטוקן",oneTimePackages:"חבילות טוקנים חד-פעמיות",oneTimeDescription:"נגמנו הטוקנים באמצע החודש? - רכוש טוקנים פעם אחת והשתמש בהם לנצח. אותן תכונות, אותה גישה, רק תשלום לפי שימוש. *רכישה חד פעמית למנויים בלבד!",mostPopular:"הכי פופולרי",buyOnce:"רכוש פעם אחת",allFeaturesUnlimited:"כל התכונות ללא הגבלה",tokensNeverExpire:"הטוקנים לא פגים לעולם",buyMoreBetterPrice:"רכוש יותר = מחיר טוב יותר",allPlansInclude:"כל התוכניות כוללות את כל התכונות. בחר את כמות הטוקנים שמתאימה לך.",planNames:{starter:"תוכנית התחלה",pro:"תוכנית מקצועית",enterprise:"תוכנית ארגונית"},planDescriptions:{starter:"מומלץ לבעלי בתים ששומרים לוחות השראה אישיים",pro:"מושלם למעצבים פעילים העובדים על פרויקטים רבים",enterprise:"לצוותים ואנשי מקצוע הזקוקים לנפח גבוה"},sampleUsage:{imageEditing:"עריכת תמונות + הסרת ווטרמארק",complexEditing:"עריכה מורכבת ומיקס תמונות",videosWithSound:"וידאו עם סאונד",interiorPresentations:"מצגות פנים",models3d:"מודלים תלת-ממדיים",upscale:"הגדלה: חינם, ללא הגבלה",removeBackgroun
602d:"הסרת רקע: חינם, ללא הגבלה"},subscriptionDialog:{subscribeToPlan:"הירשם לתוכנית?",purchaseTokenPackage:"רכוש חבילת טוקנים?",switchSubscriptionPlan:"החלף תוכנית מנוי?",subscribeToPlanDescription:"הירשם לתוכנית {{planName}} תמורת ${{price}}/חודש.",purchaseTokenPackageDescription:"רכוש {{planName}} תמורת ${{price}}.",switchPlanDescription:"כרגע יש לך תוכנית {{currentPlan}}. החלפה ל-{{planName}} תחליף את המנוי הנוכחי שלך.",couponCode:"קוד קופון (אופציונלי)",enterCouponCode:"הזן קוד קופון",redeem:"מימוש",validating:"בודק...",couponApplied:"קופון הופעל!",discountActive:"הנחה של {{discount}}% פעילה",savePerMonth:"חסוך ${{amount}}/חודש",invalidCoupon:"קוד קופון לא תקין או שפג תוקפו. אנא בדוק ונסה שוב.",whatHappensNext:"מה קורה הלאה:",subscriptionStartsImmediately:"המנוי שלך יתחיל מיד",tokensPerMonth:"תקבל {{tokens}} טוקנים מדי חודש",billedMonthly:"חיוב חודשי של ${{price}}",cancel:"ביטול",purchase:"רכוש {{planName}}",subscribeTo:"הירשם ל-{{planName}}",yesSwitchTo:"כן, החלף ל-{{planName}}",receiveTokensImmediately:"תקבל {{tokens}} טוקנים מיד",tokensNeverExpire:"הטוקנים לא פגים לעולם",oneTimePayment:"תשלום חד-פעמי של ${{price}}",billingAdjustedImmediately:"החיוב יתעדכן מיד",unusedTokensRollover:"טוקנים שלא נעשה בהם שימוש יתגלגלו",newTokenAllocation:"הקצאת טוקנים חדשה: {{tokens}}/חודש"}},tokenUsage:{title:"שימוש בטוקנים",description:"היסטוריה מלאה של כל העסקאות בטוקנים וקריאות תכונות",noUsage:"עדיין אין היסטוריית שימוש בטוקנים. העסקאות שלך יופיעו כאן.",loading:"טוען נתוני שימוש...",error:"טעינת שימוש בטוקנים נכשלה",feature:"תכונה",tokens:"טוקנים",dateTime:"תאריך ושעה",type:"סוג",credit:"זיכוי",debit:"חיוב"},dialogs:{rename:{title:"שנה שם לוח",description:"הזן שם חדש ללוח שלך",placeholder:"הזן שם לוח...",cancel:"ביטול",rename:"שנה שם"},delete:{title:"למחוק את הלוח?",description:"פעולה זו לא ניתנת לביטול. הלוח וכל התוכן שלו יימחקו לצמיתות.",cancel:"ביטול",delete:"מחק"}}},GB={title:"עזרה ותמיכה",subtitle:"בחר את ערוץ התמיכה המתאים ביותר לצרכיך",backToDashboard:"חזרה לדשבורד",backToHelpCenter:"חזרה למרכז העזרה",faq:{title:"שאלות נפוצות",subtitle:"מצא תשובות מהירות לשאלות נפוצות על תכונות פלטפורמת boardspace ופונקציונליות.",allQuestions:"כל השאלות",categories:{gettingStarted:"התחלה",canvasBoardspace:"קנבס ולוח עבודה",aiFeatures:"תכונות AI",tokensPricing:"טוקנים ותמחור",pinterestIntegration:"אינטגרציית Pinterest",publishingSharing:"פרסום ושיתוף",accountBilling:"חשבון וחיובים",troubleshooting:"פתרון בעיות"},stillNeedHelp:"עדיין צריך עזרה?",cantFindAnswer:"לא מוצא את התשובה שאתה מחפש? צוות התמיכה שלנו כאן לעזור.",createSupportTicket:"צור פניית תמיכה",emailSupport:"שלח מייל לתמיכה"},channels:{community:{title:"הצטרף לקהילה שלנו",description:"התחבר עם מעצבי פנים אחרים, שתף פרויקטים וקבל עזרה מיידית מהקהילה הפעילה שלנו.",button:"עיין בקהילה"},academy:{title:"אקדמיית boardspace",description:"למד איך להשתמש ב-boardspace עם התיעוד המקיף שלנו, טיפים מקצועיים והדרכות צעד אחר צעד.",button:"עיין בסרטונים"},faq:{title:"שאלות נפוצות",description:"מצא תשובות מהירות לשאלות נפוצות על תכונות פלטפורמת boardspace ופונקציונליות.",button:"עיין בשאלות"},premium:{title:"תמיכת פרימיום",description:"ערוץ תמיכה ישיר למשתמשים משלמים עם סיוע בעדיפות ועזרה ייעודית.",button:"צור פניה"}},questions:{gettingStarted:{q1:{question:"מה זה boardspace.ai?",answer:"boardspace.ai הוא קנבס מולטימדיה אינסופי ומרכז חברתי לחובבי עיצוב פנים, יוצרים ומקצוענים. זה כמו Pinterest אבל עם קנבס אינסופי שבו אפשר לאסוף השראה, ליצור לוחות מצב רוח, לייצר תמונות וסרטונים מבוססי AI, ולשתף פעולה עם לקוחות - הכל במקום אחד."},q2:{question:"איך מתחילים?",answer:"פשוט הירשם לחשבון חינם ב-boardspace.ai. תקבל 5 עריכות חינם כדי להתחיל לחקור תכונות AI. צפה בסרטוני הדרכה והרווח עוד טוקנים. צור את לוח העבודה הראשון שלך מהדשבורד, והתחל להוסיף תמונות, פינים מ-Pinterest, או לייצר תמונות AI כדי להתחיל לעצב."},q3:{question:"האם צריך לשלם כדי להשתמש ב-boardspace?",answer:"לא! boardspace הוא חינמי לשימוש. מקבלים 5 עריכות חינם בהרשמה ואפשר להרוויח עוד על ידי צפייה בסרטונים. ייבוא מ-Pinterest, שמירת קנבס וגלישה הם חינם לחלוטין. משלמים רק על תכונות מבוססות AI כמו יצירת תמונות, יצירת וידאו ויצירת לוחות מצב רוח כשמשתמשים בהם."},q4:{question:"מה אפשר לעשות עם boardspace?",answer:"אפשר ליצור קנבסים (לוחות עבודה) ללא הגבלה לארגון פרויקטי העיצוב שלך, לייבא פינים מ-Pinterest בחינם, לייצר תמונות וסרטונים ב-AI, ליצור לוחות מצב רוח מקצועיים, לשתף פעולה עם לקוחות, לפרסם את העיצובים שלך לגלריית הקהילה, ולעשות רימיקס לעיצובים של יוצרים אחרים."}},canvasBoardspace:{q1:{question:"מה זה לוח עבודה (boardspace)?",answer:"לוח עבודה הוא סביבת עבודה של קנבס אינסופי. חשוב על זה כלוח מצב רוח דיגיטלי עם מרחב בלתי מוגבל - אפשר להוסיף תמונות, סרטונים, טקסט, צורות וציורים בכל מקום. אין ×
602’בולות, אז אפשר להרחיב את העיצוב שלך כמה שצריך."},q2:{question:"איך יוצרים לוח עבודה חדש?",answer:"לך לדשבורד ולחץ על 'צור לוח עבודה חדש'. תן לו שם והתחל להוסיף תוכן. אפשר לייבא תמונות, להוסיף פינים מ-Pinterest, לייצר תמונות AI, או להעלות קבצים משלך."},q3:{question:"האם לוח העבודה שלי נשמר אוטומטית?",answer:"כן! לוח העבודה שלך נשמר אוטומטית כל 5 שניות בזמן שאתה עובד. אפשר גם לשמור ידנית עם Ctrl+S (או Cmd+S במק). כל העבודה שלך מאוחסנת בבטחה בענן."},q4:{question:"אפשר לארגן מספר לוחות עבודה?",answer:"בהחלט! אפשר ליצור לוחות עבודה ללא הגבלה לפרויקטים שונים. כל לוח עבודה הוא עצמאי, אז אפשר לארגן לפי לקוח, סוג חדר, או סגנון עיצוב. גישה לכל לוחות העבודה שלך מהדשבורד."},q5:{question:"אילו סוגי קבצים אפשר להעלות?",answer:"אפשר להעלות תמונות (JPG, PNG, WebP) וסרטונים (MP4, MOV). תמונות יכולות להיות עד 10MB, וסרטונים עד 100MB. אפשר גם לייבא ישירות מ-Pinterest או לייצר תוכן AI."},q6:{question:"אפשר לערוך תמונות על הקנבס?",answer:"כן! אפשר לשנות גודל, לסובב, להזיז ולסדר כל אלמנט על הקנבס שלך. לעריכה מבוססת AI (כמו הסרת רקע, הגדלה או טרנספורמציות), השתמש בכלי ה-AI הזמינים על כל תמונה."}},aiFeatures:{q1:{question:"אילו תכונות AI מציע boardspace?",answer:"boardspace מציע יצירת תמונות AI (צור תמונות מפרומפטי טקסט), המרת תמונה לוידאו (הפוך תמונות לסרטונים של 5 או 8 שניות), יצירת לוחות מצב רוח (צור מצגות עיצוב מקצועיות), הסרת רקע, הגדלת תמונות, וצ'אט תמונות AI (ערוך תמונות עם AI)."},q2:{question:"איך מייצרים תמונה ב-AI?",answer:"לחץ על אייקון יצירת תמונות ה-AI בסרגל הצד השמאלי, הזן את פרומפט הטקסט שלך שמתאר מה אתה רוצה ליצור, ולחץ על ייצר. התמונה תופיע על הקנבס שלך. כל יצירה עולה 2 טוקנים."},q3:{question:"כמה זמן לוקח ייצור תמונת AI?",answer:"ייצור תמונת AI לוקח בדרך כלל 10-30 שניות. תראה מסגרת ייצור מופיעה על הקנבס שלך בזמן שה-AI יוצר את התמונה שלך. התמונה תופיע אוטומטית כשתהיה מוכנה."},q4:{question:"אפשר להמיר תמונות לסרטונים?",answer:"כן! בחר כל תמונה על הקנבס שלך והשתמש בתכונה 'תמונה לוידאו'. אפשר ליצור סרטונים של 5 או 8 שניות. כל המרת וידאו עולה 10 טוקנים ולוקחת 60-90 שניות לייצר."},q5:{question:"מה זה יצירת לוח מצב רוח?",answer:"יצירת לוח מצב רוח יוצרת מצגות עיצוב פנים מקצועיות מהתמונות שלך. ה-AI מנתח את סגנון העיצוב שלך ויוצר מצגת מקיפה עם פלטות צבעים והמחשות מרחב קשורות. עולה 2 טוקנים ליצירה."},q6:{question:"אפשר להסיר רקעים מתמונות?",answer:"כן! הסרת רקע היא חינם לגמרי (0 טוקנים). בחר כל תמונה על הקנבס שלך והשתמש בכלי הסרת הרקע. ה-AI יסיר אוטומטית את הרקע, וישאיר רק את האובייקט שלך."},q7:{question:"מה זה צ'אט תמונות AI?",answer:"צ'אט תמונות AI מאפשר לך לערוך תמונות על ידי שיחה עם AI. בחר תמונה ולחץ על אייקון הצ'אט, ואז תאר מה אתה רוצה לשנות. ה-AI ישנה את התמונה בהתאם להוראות שלך. כל עריכה עולה טוקן אחד."}},tokensPricing:{q1:{question:"מה הם טוקנים?",answer:"טוקנים הם המטבע של boardspace לתכונות AI. משתמשים בטוקנים לייצור תמונות AI, יצירת סרטונים, יצירת לוחות מצב רוח, ושימוש בתכונות מבוססות AI אחרות. ייבוא מ-Pinterest ושמירת קנבס הם חינם ולא דורשים טוקנים."},q2:{question:"כמה עולים טוקנים?",answer:"אפשר לקנות טוקנים דרך מנויים חודשיים ($25-$89 לחודש) או חבילות חד-פעמיות ($15-$50). מנויים נותנים ערך טוב יותר לטוקן. כל המשתמשים החדשים מקבלים 5 עריכות חינם בהרשמה ויכולים להרוויח עוד."},q3:{question:"האם הטוקנים פגים?",answer:"לא! טוקנים לעולם לא פגים. טוקנים לא מנוצלים מהמנוי החודשי שלך מתגלגלים לחודש הבא ומצטברים. אפשר להשתמש בהם מתי שצריך."},q4:{question:"כמה עולות תכונות AI?",answer:"יצירת תמונת AI עולה 2 טוקנים, תמונה-לוידאו עולה 10 טוקנים (5 או 8 שניות), יצירת לוח מצב רוח עולה 2 טוקנים, צ'אט/עריכת תמונות AI עולה טוקן אחד לעריכה. הסרת רקע והגדלת תמונות הם חינם (0 טוקנים)."},q5:{question:"איך קונים עוד טוקנים?",answer:"לחץ על יתרת הטוקנים שלך בסרגל הניווט העליון, ואז בחר תוכנית מנוי חודשית או חבילת טוקנים חד-פעמית. השלם את התשלום בבטחה דרך Stripe, והטוקנים מתווספים מיד לחשבון שלך."},q6:{question:"אפשר לראות היסטוריית שימוש בטוקנים?",answer:"כן! לך להגדרות וצפה בהיסטוריית השימוש המפורטת בטוקנים שלך. אפשר לראות כל תכונה שהשתמשת בה, כמה טוקנים עלתה כל אחת, ומתי השתמשת בה."},q7:{question:"מה קורה אם נגמרים לי הטוקנים?",answer:"אם נגמרו לך הטוקנים, תראה הודעה כשתנסה להשתמש בתכונות AI. עדיין אפשר להשתמש בתכונות חינמיות כמו ייבוא מ-Pinterest, שמירת קנבס וגלישה. פשוט קנה עוד טוקנים כדי להמשיך להשתמש בתכונות AI."}},pinterestIntegration:{q1:{question:"אפשר לייבא פינים מ-Pinterest?",answer:"כן! אינטגרציית P
602interest היא חינם לגמרי. חבר את חשבון ה-Pinterest שלך בהגדרות, ואז עיין וייבא פינים ישירות לקנבס שלך. ייבוא מ-Pinterest לא עולה טוקנים."},q2:{question:"איך מחברים את חשבון ה-Pinterest?",answer:"לך להגדרות ולחץ על 'חבר Pinterest'. תועבר ל-Pinterest לאישור boardspace. אחרי החיבור, אפשר לעיין ולייבא פינים ישירות מסרגל הצד של הקנבס."},q3:{question:"אפשר לייבא מספר פינים בבת אחת?",answer:"כן! כשגולשים ב-Pinterest מ-boardspace, אפשר לבחור מספר פינים ולייבא את כולם לקנבס בבת אחת. הם יופיעו בפריסת רשת שאפשר לסדר מחדש."},q4:{question:"צריך חשבון Pinterest?",answer:"כן, צריך חשבון Pinterest כדי לייבא פינים. עם זאת, עדיין אפשר להשתמש בכל תכונות boardspace האחרות בלי Pinterest. אינטגרציית Pinterest היא אופציונלית."}},publishingSharing:{q1:{question:"אפשר לשתף את לוח העבודה עם אחרים?",answer:"כן! אפשר לפרסם את לוח העבודה שלך לגלריית הקהילה, מה שהופך אותו לציבורי כדי שאחרים יוכלו לצפות ולעשות רימיקס. אפשר גם לשתף קישורים פרטיים או לשתף פעולה עם חברי צוות."},q2:{question:"מה המשמעות של 'רימיקס'?",answer:"רימיקס אומר ליצור עותק משלך של לוח עבודה מפורסם של מישהו אחר. אז אפשר לערוך, לשנות ולהפוך אותו לשלך. זו דרך מצוינת לקבל השראה ולבנות על עיצובים של אחרים."},q3:{question:"אפשר לשמור את לוחות העבודה שלי פרטיים?",answer:"כן! כברירת מחדל, כל לוחות העבודה הם פרטיים. אתה בוחר אילו לפרסם לגלריית הקהילה. לוחות העבודה הפרטיים שלך נראים רק לך."},q4:{question:"אפשר לשתף פעולה עם לקוחות?",answer:"כן! אפשר לשתף את לוח העבודה שלך עם לקוחות דרך קישור פרטי או להזמין אותם לשתף פעולה. הם יכולים לצפות ולהגיב על העיצובים שלך. תכונות שיתוף פעולה זמינות לפרויקטים צוותיים."},q5:{question:"איך מורידים את לוח העבודה?",answer:"אפשר לייצא את לוח העבודה שלך כתמונה או PDF. השתמש בכפתור ההורדה בסרגל הכלים של הקנבס כדי לשמור את העיצוב שלך. הייצוא כולל את כל האלמנטים הנראים על הקנבס שלך."}},accountBilling:{q1:{question:"איך משנים סיסמה?",answer:"לך להגדרות ולחץ על 'שנה סיסמה'. תקבל מייל עם קישור לאיפוס סיסמה. אפשר גם להשתמש ב'שכחתי סיסמה' בדף ההתחברות אם שכחת את הסיסמה הנוכחית."},q2:{question:"אפשר לבטל את המנוי?",answer:"כן, אפשר לבטל את המנוי בכל עת מההגדרות. המנוי שלך יישאר פעיל עד סוף תקופת החיוב הנוכחית, ותשמור את כל הטוקנים שרכשת."},q3:{question:"אילו אמצעי תשלום אתם מקבלים?",answer:"אנחנו מקבלים את כל כרטיסי האשראי והחיוב העיקריים דרך Stripe. התשלומים מעובדים בבטחה והטוקנים מתווספים מיד לחשבון שלך אחרי התשלום."},q4:{question:"אפשר לקבל החזר?",answer:"החזרים מטופלים לפי מקרה. אם נתקלת בבעיות עם רכישות טוקנים או פונקציונליות של תכונות, צור קשר עם התמיכה ב[email protected] ונעזור לפתור את הבעיה."},q5:{question:"איך מוחקים את החשבון?",answer:"צור קשר עם התמיכה ב[email protected] כדי לבקש מחיקת חשבון. נעבד את הבקשה שלך ונמחק לצמיתות את החשבון שלך ואת כל הנתונים הקשורים תוך 30 יום."}},troubleshooting:{q1:{question:"הקנבס שלי לא נשמר. מה לעשות?",answer:"קודם בדוק את חיבור האינטרנט שלך. נסה לשמור ידנית עם Ctrl+S (או Cmd+S במק). אם הבעיות נמשכות, רענן את הדף - העבודה שלך צריכה להיות שמורה אוטומטית. אם נתונים אבדו, צור קשר עם התמיכה עם שם לוח העבודה שלך."},q2:{question:"יצירת תמונות AI לא עובדת",answer:"קודם, בדוק את יתרת הטוקנים שלך (צריך 2 טוקנים לתמונה). ודא שאתה מחובר ונסה לרענן את הדף. אם הבעיה נמשכת, נקה את הקאש של הדפדפן או נסה דפדפן אחר (מומלץ Chrome)."},q3:{question:"המרת וידאו נכשלה. מה קרה?",answer:"ודא שיש לך 10 טוקנים זמינים. בדוק שהתמונה שלך בפורמט PNG או JPG ומתחת ל-5MB. נסה להשתמש בגודל תמונה קטן יותר. אם עדיין נכשל, צור קשר עם התמיכה עם פרטי התמונה."},q4:{question:"חויבתי אבל לא קיבלתי טוקנים",answer:"טוקנים בדרך כלל מתווספים מיד. המתן 1-2 דקות, ואז רענן את הדף. בדוק את המייל שלך לאישור תשלום. אם הטוקנים עדיין לא מופיעים אחרי 5 דקות, צור קשר עם התמיכה עם אישור התשלום שלך."},q5:{question:"פינים מ-Pinterest לא מיובאים",answer:"ודא שחשבון ה-Pinterest שלך מחובר בהגדרות. ודא שלוח ה-Pinterest ציבורי או שיש לך גישה אליו. נסה לנתק ולחבר מחדש את חשבון ה-Pinterest שלך. נקה עוגיות ונסה שוב."},q6:{question:"אני לא מצליח להתחבר לחשבון שלי",answer:"נסה את אפשרות 'שכחתי סיסמה' בדף ההתחברות. בדוק את המייל שלך (כולל תיקיית ספאם) לקישור האיפוס. נקה את הקאש והעוגיות של הדפדפן, או נסה להשתמש בחלון גלישה פרטית/אינקוגניטו. ודא שמקש Caps Lock כבוי כשמזינים סיסמה."},q7:{question:"הקנבס איטי או מגמגם",answer:"קנבסים גדולים עם הרבה תמונות יכולים להיות יותר איטיים. נסה לסגור לשוניות דפדפן אחרות, לנקות קאש דפדפן, או להשתמש בדפדפן אחר. לביצועים הטובים ביותר, השתמש ב-Chrome או Firefox על מחשב שולחני."},q8:{question:"התמונות שלי לא נטענות",answer:"בדוק את חיבור האינטרנט שלך. נסה לרענן את הדף. אם תמונות ספציפיות לא נטענות, ייתכן שהן נמחקו או שהקישור שבור. נסה להעלות מחדש או לייבא מחדש את התמונות האלה."}}}},WB={title:"סרטוני אקדמיה",subtitle:"למד לשלוט בכלי העיצוב שלנו עם הדרכות וידאו צעד אחר צעד.",comingSoon:"בקרוב",available:"זמין",backToDashboard:"חזרה לדשבורד",videoTitles:{mixMaterials:"ערבב חומרים לתמונה שלך, עד 9 חומרים",extractPriceOffer:"איך לחלץ הצעת מחיר מתמונה בודדת"},page:{heroTitle:'אקדמיית בינה מלאכותית <span class="text-[#D9603B] dark:text-[#EC7357]">לעיצוב פנים</span>',heroSubtitle:"למד ליצור תמונות AI, רנדרים פוטוריאליסטיים ווידאו לעיצוב פנים עם הדרכות מקצועיות בעברית. כל מה שצריך כדי להתחיל לעבוד עם בינה מלאכותית בעיצוב.",lessonOf:"שיעור {{current}} מתוך {{total}}",overviewBadge:"כללי",videoPositionOf:"{{current}} מתוך {{total}}",lessonsTitle:"שיעורי הדרכה - בינה מלאכותית לעיצוב פנים",nowPlaying:"מנגן עכשיו"},tokens:{successTitle:"מעולה! קיבלת +{{tokens}} טוקנים",successSubtitle:"המשך לצפות בסרטונים נוספים לקבלת עוד טוקנים!",waitSeconds:"המתן {{seconds}} שניות...",readyToClaim:"מוכן לקבלת טוקנים!",watchToEarn:"צפה בסרטון לקבלת טוקנים",plusTokens:"+{{tokens}} טוקנים",claimTokens:"קבל טוקנים!",processing:"מעבד...",alreadyEarned:"כבר קיבלת טוקנים עבור סרטון זה!",watched:"נצפה",toastSuccess:"קיבלת +{{tokens}} טוקנים!",toastError:"משהו השתבש. נסה שוב."},progressBanner:{title:"צפה וקבל טוקנים בחינם!",progress:"צפית ב-{{completed}} מתוך {{total}} סרטונים וקיבלת {{tokens}} טוקנים",possibleTokens:"+{{tokens}} טוקנים אפשריים"},cta:{title:"מוכן להתחיל לעצב עם בינה מלאכותית?",subtitle:"הצטרף לאלפי מעצבי פנים שכבר משתמשים בבינה מלאכותית ליצירת רנדרים, תמונות ווידאו מקצועיים עם Boardspace",signupButton:"הרשמה בחינם",loginPrompt:"כבר יש לך חשבון? התחבר",noCreditCard:"ללא כרטיס אשראי • 5 עריכות חינם"},faq:{title:"שאלות נפוצות על בינה מלאכותית לעיצוב פנים",items:{whatIsAI:{question:"מה זה בינה מלאכותית לעיצוב פנים?",answer:"בינה מלאכותית לעיצוב פנים היא טכנולוגיה שמאפשרת ליצור תמונות, רנדרים ווידאו של עיצובי פנים באופן אוטומטי. עם Boardspace אפשר להפוך סקיצות לתמונות ריאליסטיות, לייצר רעיונות עיצוביים חדשים ולהציג ללקוחות ויזואליזציות מקצועיות."},technicalKnowledge:{question:"האם צריך ידע טכני כדי להשתמש ב-AI לעיצוב?",answer:"לא! Boardspace מיועד למעצבי פנים ללא רקע טכני. הממשק אינטואיטיבי ופשוט, וסרטוני ההדרכה באקדמיה מלמדים צעד אחר צעד איך להשתמש בכל הכלים."},contentTypes:{question:"איזה סוגי תוכן אפשר ליצור עם Boardspace?",answer:"עם Boardspace אפשר ליצור תמונות AI של חללים מעוצבים, רנדרים פוטוריאליסטיים, וידאו תלת-ממדי, לוחות מצב רוח (מודבורדים), להסיר רקעים מתמונות, להגדיל רזולוציה של תמונות ועוד."},cost:{question:"כמה עולה להשתמש בבינה מלאכותית לעיצוב?",answer:"ההרשמה ל-Boardspace חינמית ומקבלים 5 עריכות חינם. אפשר להרוויח עוד טוקנים על ידי צפייה בסרטוני הדרכה. כל פעולת AI עולה מספר טוקנים (למשל: יצירת תמונה 2 טוקנים, וידאו 10 טוקנים). אפשר לרכוש חבילות טוקנים החל מ-15$."}}},seo:{title:"אקדמיית בינה מלאכותית לעיצוב פנים | הדרכות AI למעצבים | Boardspace",description:"למד להשתמש בבינה מלאכותית לעיצוב פנים עם סרטוני הדרכה מקצועיים בעברית. יצירת תמונות AI, רנדרים פוטוריאליסטיים, וידאו, לוחות מצב רוח ועוד. הקורס המקיף ביותר ל-AI בעיצוב פנים בישראל.",srOnly:"קורס מקיף לשימוש בבינה מלאכותית בעיצוב פנים וחוץ. הדרכות וידאו ללימוד יצירת תמונות AI, רנדרים, ויזואליזציות ולוחות מצב רוח עם כלי Boardspace. מתאים למעצבי פנים, אדריכלים וסטודנטים לעיצוב."}},HB={title:"מרכז תמיכה",subtitle:"קבל עזרה מקצועית ודווח על בעיות לצוות התמיכה הייעודי שלנו.",myTickets:"הפניות שלי",newTicket:"פניה חדשה",loadingTickets:"טוען פניות...",noTicketsYet:"עדיין אין פניות תמיכה",noTicketsMatch:"אין פניות שתואמות לחיפוש שלך",createFirstTicket:"צור את הפניה הראשונה שלך",searchPlaceholder:"חפש פניות לפי נושא או מספר פניה...",filters:{allTickets:"כל הפניות",open:"פתוח",inProgress:"בטיפול",resolved:"נפתר",closed:"סגור"},priority:{low:"נמוך",medium:"בינוני",high:"גבוה",critical:"קריטי"},status:{open:"פתוח",inProgress:"בטיפול",resolved:"נפתר",closed:"סגור"},createTicket:{title:"צור פניית תמיכה חדשה",subtitle:"ספר לנו על הבעיה שלך ונחזור אליך בהקדם האפשרי עם עזרה מקצועית.",category:"קטגוריה",categoryLabel:"קטגוריה",selectCategory:"בחר קטגוריה",categories:{billing:"חיובים",technical:"בעיה טכנית",feature:"בקשת תכונה",bug:"דיווח על באג",other:"אחר"}
602,priority:"עדיפות",priorityLabel:"עדיפות",subject:"נושא",subjectLabel:"נושא",subjectPlaceholder:"תיאור קצר של הבעיה שלך או התחל להקליד...",description:"תיאור",descriptionLabel:"תיאור",descriptionPlaceholder:"אנא ספק מידע מפורט על הבעיה שלך, כולל צעדים לשחזור אם רלוונטי...",submitButton:"צור פניית תמיכה",submitting:"יוצר פניה...",submittingButton:"יוצר פניה...",quickShortcuts:"קיצורי דרך מהירים",shortcuts:{aiImageNotWorking:"יצירת תמונות AI לא עובדת",videoConversionFailed:"המרת תמונה לוידאו נכשלה",tokenBalanceNotUpdating:"יתרת טוקנים לא מתעדכנת אחרי תשלום",canvasNotSaving:"הקנבס/לוח העבודה לא נשמר",pinterestIssues:"בעיות באינטגרציית Pinterest",moodboardNotWorking:"יצירת לוח מצב רוח לא עובדת"},successMessage:"הפניה נוצרה בהצלחה! מספר: {ticketNumber}. תקבל תשובת AI תוך 10-15 דקות.",errorFillFields:"אנא מלא את כל השדות הנדרשים",errorNotLoggedIn:"עליך להיות מחובר כדי ליצור פניה",errorCreateFailed:"יצירת הפניה נכשלה. אנא נסה שוב."},fileUpload:{title:"קבצים מצורפים",attachments:"קבצים מצורפים",clickOrDrag:"לחץ להעלאה או גרור ושחרר",dragDrop:"גרור ושחרר קבצים כאן או לחץ לבחירה",maxSize:"גודל מקסימלי: 10MB",acceptedTypes:"קבצים מותרים: PNG, JPG, PDF, DOC, DOCX",remove:"הסר"},ticketCard:{category:"קטגוריה"}},KB={tabs:{materials:"חומרים",myMaterials:"החומרים שלי",images:"תמונות",styleBoard:"לוח סגנון"},searchPlaceholder:"חפש תמונות השראה...",uploadMaterial:"העלה חומר",groups:{all:"הכל",materials:"חומרים",models:"דגמים",appliances:"מוצרי חשמל",stone:"שיש",uncategorized:"ללא קטגוריה"},subCategories:{all:"הכל",innovus:"אינובוס",veneer:"פורנירים",acrylic:"אקרילים",woodFormica:"פורמיקת ×¢×¥",matteCrystal:"קריסטל מט",formicaStone:"פורמייקה סטון",special:"מיוחדים",cornices:"קורניזים",edges:"קנטים",vitrines:"ויטרינות",ovens:"תנורים",cooktops:"כיריים",refrigerators:"מקררים"},selectCategory:{label:"קטגוריה (חובה)",placeholder:"בחרו קטגוריה"},upload:{formatsHint:"JPG, PNG, WebP ועוד. תמונות גדולות מכווצות אוטומטית לפני ההעלאה",preparing:"מכין את התמונות…",uploadingProgress:"מעלה {{done}} מתוך {{total}}…",noFiles:"בחרו לפחות תמונה אחת",noCategory:"בחרו קטגוריה לפני ההעלאה",successOne:"החומר הועלה בהצלחה",successMany:"{{n}} חומרים הועלו בהצלחה",partial:"{{ok}} מתוך {{total}} חומרים הועלו. נכשלו: {{names}} ({{reason}})",failed:"ההעלאה נכשלה: {{reason}}",fileTooLarge:"{{name}}: הקובץ גדול מדי (מקסימום {{maxMb}}MB)",fileUnsupported:"{{name}}: זה לא קובץ תמונה. השתמשו ב-JPG, PNG או WebP",fileDecodeFailed:"{{name}}: לא הצלחנו לקרוא את התמונה. אם זה HEIC או TIFF, המירו ל-JPG ונסו שוב",errTooLarge:"הקובץ גדול מדי לאחסון",errUnsupported:"פורמט הקובץ לא נתמך באחסון",errNoPermission:"אין הרשאה לשמור. נסו להתנתק ולהתחבר מחדש",errNetwork:"בעיית תקשורת. בדקו את החיבור ונסו שוב"},rename:{title:"שינוי שם קטגוריה",description:"השם הזה יופיע רק אצלכם. התמונות ששמורות בקטגוריה לא זזות.",label:"שם חדש",defaultIs:"ברירת המחדל: {{name}}",hint:"לחצן ימני (או לחיצה ארוכה) לשינוי השם",save:"שמירה",reset:"איפוס לברירת מחדל",delete:"מחיקת תת־קטגוריה",cancel:"ביטול",saved:"השם עודכן",resetDone:"השם הוחזר לברירת המחדל",failed:"שינוי השם נכשל"},customSubcategories:{add:"תת־קטגוריה חדשה",createTitle:"יצירת תת־קטגוריה",createDescription:"הוסיפו חלוקה אישית בתוך ×´{{group}}×´.",nameLabel:"שם תת־הקטגוריה",placeholder:"לדוגמה: אבן קיסר",create:"יצירה",created:"תת־הקטגוריה נוצרה",createFailed:"יצירת תת־הקטגוריה נכשלה. ייתכן שכבר קיים שם כזה.",general:"{{group}} — כללי",deleteConfirm:"למחוק את תת־הקטגוריה? החומרים שבתוכה יועברו ל״ללא קטגוריה״.",deleted:"תת־הקטגוריה נמחקה",deleteFailed:"מחיקת תת־הקטגוריה נכשלה",addChild:"תת־תת־קטגוריה חדשה",createChildTitle:"יצירת תת־תת־קטגוריה",createChildDescription:"הוסיפו חלוקה נוספת בתוך ×´{{group}}×´.",childPlaceholder:"לדוגמה: שיש לבן",deleteConfirmWithChildren:"למחוק את תת־הקטגוריה? גם כל תת־תת־הקטגוריות שבתוכה יימחקו, והחומרים יועברו ל״ללא קטגוריה״."},categories:{all:"הכל",wood:"×¢×¥",flooring:"רצפה",metal:"מתכת",stone:"אבן",fabric:"בד",aerial:"אוויר",terrain:"שטח",brick:"לבנים",plaster:"טיח",concrete:"בטון",roofing:"גגות"},roomTypes:{all:"הכל",living_room:"סלון",bedroom:"חדר שינה",bathroom:"מקלחת",kitchen:"מטבח",office:"חדר עבודה",office_room:"משרד",kids_room:"חדר ילדים",laundry_room:"חדר כביסה",closet:"חדר ארונות"},loading:"טוען תמונות...",noImagesFound:"לא נמצאו תמונות",tryAdjustingFilters:"נסה להתאים את החיפוש או המסננים",cancel:"ביטול",sendToChat:"שלח לצ'אט",addToCanvas:"הוסף לקנבס",addToBoth:"הוסף לשניהם",search:{placeholder:"חיפוש בכל החומרים שלי…",clear:"ניקוי החיפוש",resultsAcrossLibrary:"{{n}} תוצאות בכל הקטגוריות",noResults:"לא נמצאו חומרים עבור ×´{{query}}×´",noResultsHint:"אפשר לחפש לפי שם, תיאור, תגית או שם של קטגוריה"}},YB={dropImagesHere:"שחררו תמונות כאן",dragToWorkflow:"גרור את התמונה לכא×
602Ÿ כדי להתחיל את הוורקפלאו"},QB={group_photo:"זוהתה תמונה קבוצתית. העלו תמונות של אדם יחיד בפריים.",multiple_people:"יש יותר מאדם אחד בתמונות. העלו תמונות של אדם יחיד בלבד.",face_hidden:"הפנים מוסתרות או חתוכות באחת התמונות. צריך פנים גלויות וברורות.",sunglasses:"יש משקפי שמש שמסתירים את העיניים. העלו תמונה ללא משקפי שמש.",heavy_filter:"יש פילטר כבד שמסתיר את התווים האמיתיים. העלו תמונה טבעית יותר.",low_res:"הרזולוציה נמוכה מדי או שהתמונות מטושטשות. העלו תמונות חדות יותר.",inconsistent_person:"נראה שמדובר באנשים שונים. העלו תמונות של אותו אדם.",no_face:"לא זוהו פנים בתמונות. העלו תמונות פנים ברורות.",unusable:"התמונות לא מתאימות ליצירת דמות. נסו 2-4 תמונות ברורות של אותו אדם."},JB={kling_3_turbo_video_generator:"וידאו Kling 3 Turbo נוצר בהצלחה!",default:"העיבוד הושלם בהצלחה!",image_creator:"התמונה נוצרה בהצלחה! התוצאה נוספה לקנבס.",nano_banana_2_lite:"התמונה נוצרה בהצלחה! היא על הקנבס. 🎨",combine_images:"התמונות שולבו בהצלחה! התוצאה נוספה לקנבס.",character_reference:"הדמות מוכנה! החזית הקנונית ופרופיל הצד המדויק נוספו לקנבס. 🎭",character_reference_partial:"החזית הקנונית נוספה לקנבס. יצירת הפרופיל נכשלה, ולכן הוחזרו 4 טוקנים.",ultra_real_agent:"תמונה אולטרה־ריאליסטית מוכנה! היא על הקנבס.",kling_o1_image:"התמונה מוכנה! היא מחכה לך על הקנבס. 🎨",gpt_image_1_5:"עריכת התמונה הושלמה בהצלחה!",gpt_image_2_medium:"התמונה מוכנה! היא מחכה לך על הקנבס. 🎨",gpt_image_2_5_edit:"העריכה המדויקת מוכנה! היא מחכה לך על הקנבס. 🎨",gpt_image_2_4k:"התמונה ב-4K מוכנה! היא מחכה לך על הקנבס. 🎨",viral_prompt_creator:"פוסט ויראלי נוצר בהצלחה!",vizio9_transform:"התמונה שונתה בהצלחה! התוצאה נוספה לקנבס.",openai_edit_image:"עריכת תמונה מבנית הושלמה בהצלחה!",style_switch:"הסגנון עודכן בהצלחה! התוצאה מופיעה על הקנבס.",vizio9_multiangle:"זווית צילום חדשה מוכנה! היא על הקנבס.",remove_background:"הרקע הוסר בהצלחה! התוצאה נוספה לקנבס.",upscale_image:"התמונה הוגדלה בהצלחה! התוצאה נוספה לקנבס.",upscale_image_topaz:"התמונה הוגדלה עם Topaz Labs! התוצאה נוספה לקנבס.",kling_video_generator:"הווידאו נוצר בהצלחה!",wan_video_generator:"וידאו עם סאונד נוצר בהצלחה!",ltx_video_generator:"וידאו של 10 שניות נוצר בהצלחה!",seedance_video_generator:"וידאו מעבר בין 2 תמונות נוצר בהצלחה!",trellis_3d_generator:"מודל תלת־ממדי נוצר בהצלחה!",meshy_3d_generator:"מודל תלת-ממדי עם טקסטורות נוצר בהצלחה!",blender_3d_agent:"מודל Blender 3D נוצר בהצלחה!",kitchen_dae_generator:"סקיצת המטבח מוכנה — לחץ להוריד את קובץ ה-DAE",kitchen_dae_pdf_generator:"סקיצת המטבח מ-PDF מוכנה — לחץ להוריד את קובץ ה-DAE",sketchup_agent:"מודל ה-SketchUp מוכן — לחץ להורדת קובץ ה-.skp",design_dna:"מצגת Design DNA נוצרה בהצלחה!",kitchen_board:"מצגת מטבח נוצרה בהצלחה!",generate_moodboard:"מצגת מודבורד נוצרה בהצלחה!",nano_banana_pro:"התמונה שלך נוצרה בהצלחה והיא על הקנבס! 🎨",vizio9_image_generator:"התמונה נוצרה בהצלחה! התוצאה נוספה לקנבס.",prince_editor:"העריכה הסתיימה! התמונה על הקנבס.",kling_o1_video:"הווידאו נוצר בהצלחה!",nano_pro_fal:"התמונה נוצרה בהצלחה!",nano_workflow:"התמונה נוצרה בהצלחה והיא על הקנבס.",grok_video_generator:"הווידאו נוצר בהצלחה!",grok_480p_cheap:"הווידאו נוצר בהצלחה!",runway_video_generator:"הווידאו נוצר בהצלחה!",runway_10s_video:"וידאו של 10 שניות נוצר בהצלחה!",grok_image_editor:"העריכה הסתיימה! התמונה על הקנבס.",seedream_4_5_edit:"העריכה הסתיימה! התמונה על הקנבס.",seedream_5_lite_i2i:"העריכה הסתיימה! התמונה על הקנבס.",veo_video_generator:"הווידאו נוצר בהצלחה!",kling_3_video_generator:"וידאו Kling 3.0 נוצר בהצלחה!",gemini_omni_video:"וידאו ג'מיני אומני נוצר בהצלחה!",kling_motion_control:"וידאו בקרת תנועה נוצר בהצלחה!",flux_2_pro:"התמונה נוצרה עם Flux 2.0 Pro והיא על הקנבס! ⚡",gpt_5_image:"התמונה נוצרה עם GPT Image והיא על הקנבס! 🤖",request_applied_to_canvas:"הבקשה בוצעה! השינוי מופיע על הקנבס.",floating_edit_openai:"התמונה עודכנה עם «עריכה מורכבת»! התוצאה על הקנבס.",floating_edit_consistent:"התמונה עודכנה עם «העורך המדוייק»! התוצאה על הקנבס.",wan_2_7_image_edit:"העריכה המדויקת הושלמה! הווריאציות מוכנות על הקנבס.",seedream_5_pro_i2i:"Seedream 5 Pro — העריכה הושלמה! התוצאה על הקנבס.",minimax_h3_video_generator:"הסרטון של MiniMax H3 נוצר בהצלחה!"},XB={kie500:{chatMessage:`היי, בורדי כאן 👋
603נראה שיש כרגע עומס על השרתים של GPT Image 2 באיכות 4K. הבקשה נכשלה — כבר זיכיתי אותך ב-{{amount}} טוקנים בחזרה לחשבון 🙌
604שווה לנסות שוב בעוד כמה דקות.`,modalTitle:"היי מה הולך? בורדי כאן 👋",modalBody:"נראה שיש כרגע עומס על השרתים של GPT Image 2 באיכות 4K. הבקשה נכשלה — כבר זיכיתי אותך ב-{{amount}} טוקנים בחזרה לחשבון 🙌",modalSuggestion:"מציעה לנסות עכשיו עם GPT Image 2 הרגיל — הוא יותר יציב כרגע. הנה הפרומפט שלך, פשוט להעתיק ולהדביק:",copyPromptCta:"העתק פרומפט",promptCopied:"הפרומפט הועתק! ✓",switchAgentCta:"פתחי לי את GPT Image 2",dismissCta:"סגור"}},ZB={title:"וורקפלאו אוטומטיים",guideLink:"מדריך",subt
604itle:"אוטומציה מבוססת AI",comingSoon:"בקרוב",clickToStart:"לחץ להפעלה",nodes:"צמתים",tokens:"טוקנים",popular:"פופולרי",tabs:{image:"תמונה",video:"וידאו"},watchVideoTutorial:"לחץ צפה בוידאו איך לעבוד על וורקפלאו",templates:{flooring_check:{name:"בדיקת ריצוף",description:"צור 6 וריאציות שונות של ריצוף על תמונה קיימת"},exterior_angles_set:{name:"זוויות לבניין",description:"צור 6 זוויות מצלמה שונות של הבניין החיצוני שלך (זה רק לעיצוב חוץ)"},full_angles_set:{name:"6 זוויות מצלמה",description:"צור 6 זוויות מצלמה שונות לגמרי מכל תמונה"},stylematch:{name:"התאמת סגנון",description:"סגנון אחד, חדרים אינסופיים. עקביות עיצובית מיידית בין חללים"},designdna:{name:"די.אנד.איי עיצובי",description:"מחלץ את ה-DNA העיצובי ומאגד 10-15 פריטי ריהוט ועיצוב"},kitchenboard:{name:"החלפת חומרים מטבח",description:"צור 6 וריאציות של חומרים ופלטת צבעים למטבח"},photo_360:{name:"צילום 360 מקצועי",description:"צור 6 וריאציות מקצועיות של זוויות מצלמה של החלל שלך"},x4_angle_board:{name:"זוויות x4 פנים",description:"צור לוח ויזואליזציה של 4 זוויות מתמונת החדר שלך"},day_to_night:{name:"מצגת שעות היום",description:"צור 8 פריימים של מעבר תאורה מיום ללילה"},shop_the_look:{name:"חלץ מחירים מתמונה",description:"קבל מפרט קניות מלא על כל האלמנטים והרהיטים שבתמונה"},architect_thoughts:{name:"מחשבות האדריכל",description:"הפוך את התמונה ללוח עם סקיצות בעיפרון, מעולה לסושיאל"},architectural_illustrator:{name:"מאייר אדריכלי",description:"הפכו תמונה אמיתית ללוח הצגה אדריכלי יוקרתי בשחור-לבן עם קווים טכניים ומקרא חומרים"},room_timelapse:{name:"טיימלאפס חדר",description:"צפה בחלל הריק מתעורר לחיים עם רהיטים, צבעים ועיצוב. מתאים לכל סוג חלל!"},project_timelapse:{name:"טיימלאפס בנייה",description:"צפה בבניין קם מהקרקע. מושלם לויזואליזציות אדריכליות!"},viral_video:{name:"סרטון ויראלי",description:"צור סרטון 360° בן 5 שניות לרשתות חברתיות (9:16 אנכי)"},plan_to_3d_2:{name:"מתוכנית ל 3D-2",description:"הפוך תוכנית קומה למבט על 3D ואיזומטרי"},sketch_to_real:{name:"מסקיצה לתמונה",description:"הפוך סקיצת עיצוב פנים לתמונה פוטוריאליסטית תוך שניות"},seed_explorer:{name:"סט מבטים",description:"קבל 6 וריאציות דומות מפרומפט אחד באמצעות סידים עוקבים",badge:"חדש",tokenCost:"1.5 טוקנים",processingTime:"30-60 שניות",enterPrompt:"הזן פרומפט",generate6Variations:"צור 6 וריאציות",enterPromptFirst:"הזן פרומפט",promptPlaceholder:"תאר את התמונה שברצונך ליצור... (לדוגמה, 'סלון מודרני עם ריהוט מינימליסטי ואור טבעי')",ctrlEnterHint:"לחץ Ctrl+Enter ליצירה"},family_home_video:{name:"סרטון משפחתי בבית",description:"צור סרטון של משפחה בת 4 נפשות בתוך העיצוב הפנימי שלך"},construction_stages:{name:"שלבי בנייה",description:"צור 2 סרטונים (8 שניות כל אחד) של שלבי הבנייה מהחדר המוגמר שלך"},moodboard:{name:"מודבורד",description:"צור לוח השראה מעוצב מתמונת חדר"},drone_walkthrough:{name:"תנועת רחפן בחלל הבית",description:"העלה עד 7 תמונות (הראשונה = תוכנית העמדה במבט-על שחור-לבן) וקבל סרטון תנועת רחפן בחלל הבית"},kitchen_technical_drawing:{name:"שרטוט טכני מטבח",description:"צור גיליון שרטוט טכני מקצועי למטבח"}},comingSoonItems:{wallColors:"צבעי קירות",furniture:"ריהוט",lighting:"תאורה"},nodeTitles:{uploadProjectImage:"העלה תמונת פרויקט",uploadRoomImage:"העלה תמונה",emptyVersion:"גרסה ריקה",timelapseVideo:"וידאו טיימלאפס",uploadImage:"העלו תמונה",styleMatchResult:"תוצאת התאמת סגנון",designDNAResult:"תוצאת DNA עיצובי",kitchenBoardResult:"תוצאת לוח מטבח",x4AnglesResult:"תוצאת 4 זוויות",dayToNightResult:"תוצאת יום ללילה",shopTheLookResult:"תוצאת חלץ מחירים",architectThoughtsResult:"תוצאת מחשבות האדריכל",uploadSketch:"העלה סקיצה",photorealisticResult:"תוצאה פוטוריאליסטית",flooringVariation:"וריאציית ריצוף",cameraAngle:"זווית מצלמה",viralVideoResult:"סרטון ויראלי",floorPlanStyleBoard:"תוכנית + לוח סגנון",isometric3DResult:"תוצאת תלת מימד איזומטרי",enterPrompt:"הז×
604Ÿ פרומפט",seedBaseSuffix:"(בסיס)",seedVariation:"סיד",constructionStage1RawConcrete:"שלב 1 - בטון גולמי",constructionStage2Plastered:"שלב 2 - טיח",constructionStage3FinishedEmpty:"שלב 3 - גמור ריק",constructionStage4Furnished:"שלב 4 - מרוהט",constructionVideoBuilding:"וידאו בנייה (8 שניות)",constructionVideoFurnishing:"וידאו ריהוט (8 שניות)",constructionUploadRoom:"העלה תמונת חדר מרוהט"}},eF={title:"פלטות צבעים 2026",description:"הוסף פלטות צבעים טרנדיות 2026 לעיצוב פנים לקנבס שלך",searchPlaceholder:"חפש פלטות צבעים...",trends:{all:"כל הטרנדים",pantone:"פנטון 2026",benjaminMoore:"בנג'מין מור 2026",sherwinWilliams:"שרווין וויליאמס 2026",behr:"ביר 2026",wgsn:"WGSN 2026",pinterest:"פינטרסט 2026",luxury:"לוקסוס שקט",dopamine:"צבעי דופמין",biophilic:"ביוֹפילי",earthy:"גווני אדמה",timeless:"קלאסיקה נצחית"},showingCount:"מציג {{count}} פלטה",showingCount_other:"מציג {{count}} פלטות",selectedCount:"· {{count}} נבחרו",noResults:"לא נמצאו פלטות צבעים",noResultsHint:"נסה לשנות את החיפוש או המסננים",cancel:"ביטול",addToCanvas:"הוסף לקנבס",addToCanvasWithCount:"הוסף {{count}} לקנבס",paletteNames:{"silhouette-elegance":"אלגנטיות סילואט","cloud-dancer-serenity":"רוקדים על ענן","hidden-gem-spa":"ספא פנינה נסתרת","transformative-teal":"טיל טרנספורמטיבי","universal-khaki-earth":"חאקי אוניברסלי","warm-eucalyptus-natural":"אקליפטוס טבעי חם","rebel-pink-pop":"ורוד מורד","divine-damson-drama":"דרמה שזיף אלוהית","glacier-aesthetic":"אסתטיקה קרחונית","subzero-sophistication":"תחכום תת-אפסי","electric-persimmon":"אפרסמון חשמלי","dusty-jewels-2026":"תכשיטים מאובקים","earthy-browns-2026":"חומים ארציים","milky-pastels-2026":"פסטלים חלביים","burgundy-luxe-2026":"בורדו יוקרתי","color-drenching-2026":"טבילת צבע","dopamine-brights-2026":"בהירי דופמין","bold-expression":"ביטוי נועז","quiet-luxury-2026":"לוקסוס שקט","warm-minimalism":"מינימליזם חם","understated-elegance":"אלגנטיות מאופקת","biophilic-sanctuary":"מקדש ביוֹפילי","botanical-calm":"רוגע בוטני","coastal-retreat":"מפלט חופי","warm-neutrals":"נייטרלים חמים","industrial-chic":"אינדוסטריאל צ'יק","jewel-tones":"גווני אבני חן","scandinavian-minimal":"מינימל סקנדינבי","mediterranean-warmth":"חום ים תיכוני"},trendNames:{benjamin_moore_2026:"בנג'מין מור 2026",pantone_2026:"פנטון 2026",behr_2026:"ביר 2026",wgsn_2026:"WGSN 2026",sherwin_williams_2026:"שרווין וויליאמס 2026",valspar_2026:"וולספאר 2026",ikea_2026:"איקאה 2026",graham_brown_2026:"גראהם ובראון 2026",pinterest_2026:"פינטרסט 2026",luxury_2026:"לוקסוס 2026",earthy_2026:"ארצי 2026",technique_2026:"טכניקה 2026",dopamine_2026:"דופמין 2026",quiet_luxury_2026:"לוקסוס שקט 2026",biophilic_2026:"ביוֹפילי 2026",timeless_classic:"קלאסיקה נצחית"},colorNames:{silhouette:"סילואט",warm_cream:"קרם חם",soft_caramel:"קרמל רך",cloud_dancer:"רוקד ענן",gentle_lavender:"לבנדר עדין",soft_mist:"ערפל רך",hidden_gem:"פנינה נסתרת",sage_cream:"קרם מרווה",soft_linen:"פשתן רך",transformative_teal:"טיל טרנספורמטיבי",ocean_depths:"עומקי אוקיינוס",seafoam:"קצף ים",universal_khaki:"חאקי אוניברסלי",warm_walnut:"אגוז חם",cream_ivory:"שנהב קרם",warm_eucalyptus:"אקליפטוס חם",olive_stone:"אבן זית",natural_linen:"פשתן טבעי",rebel_pink:"ורוד מורד",blush_coral:"אלמוג סמוק",soft_cream:"קרם רך",divine_damson:"שזיף אלוהי",deep_burgundy:"בורדו עמוק",rose_gold:"זהב ורד",glacier_blue:"כחול קרחוני",ice_crystal:"גביש קרח",frost_white:"לבן כפור",cool_blue:"כחול קריר",arctic_frost:"כפור ארקטי",silver_ice:"קרח כסף",electric_green:"ירוק חשמלי",persimmon_orange:"כתום אפרסמון",warm_white:"לבן חם",dusty_sapphire:"ספיר מאובק",muted_emerald:"אמרלד עמום",soft_amethyst:"אמטיסט רך",tobacco_brown:"חום טבק",chalky_rose:"ורד גירי",dusty_olive:"זית מאובק",whispering_blue:"כחול לוחש",silvery_green:"ירוק כסוף",muted_lavender:"לבנדר עמום",wine_red:"אדום יין",gold_accent:"הדגש זהב",moody_green:"ירוק מצב רוח",teal_immersion:"טבילת טיל",deep_charcoal:"פחם עמוק",energy_orange:"כתום אנרגיה",joy_pink:"ורוד שמחה",sunshine_yellow:"צהוב שמש",electric_violet:"סגול חשמלי",citrus_burst:"פרץ הדרים",aqua_pop:"פופ אקווה",cashmere_beige:"בז' קשמיר",champagne_mist:"ערפל שמפניה",truffle_brown:"חום טרופל",soft_latte:"לאטה רך",cloud_white:"לבן ענן",gentle_gray:"אפור עדין",stone_taupe:"טופ אבן",ivory_silk:"משי שנהב",mink_gray:"אפור מינק",forest_fern:"שרך יער",moss_green:"ירוק טחב",earth_brown:"חום אדמה",sage_leaf:"עלה מרווה",dried_herb:"עשב יבש",natural_stone:"אבן טבעית",sea_glass:"זכוכית ים",driftwoo
604d:"עץ סחף",sand_dollar:"דולר חול",oatmeal:"שיבולת שועל",taupe:"טופ",linen_white:"לבן פשתן",charcoal:"פחם",rust_orange:"כתום חלוד",concrete_gray:"אפור בטון",emerald:"אמרלד",sapphire:"ספיר",amethyst:"אמטיסט",warm_beige:"בז' חם",mushroom:"פטריה",dove_gray:"אפור יונה",terracotta:"טרקוטה",olive_green:"ירוק זית",cream:"קרם"}},tF={list:["החלף לריצוף עץ אלון חם, שמור צבעי קירות ותאורה זהים","החלף ספה וכורסאות לסט פשתן נייטרלי, שמור פריסה ושטיח","הפוך את התאורה לאור שקיעה חם, בלי לשנות חומרים וצבעים","הוסף ארון קיר מובנה סביב הטלוויזיה, בהתאמת גוון העץ והידיות הקיימים","החלף חזיתות מטבח לירוק מרווה מט עם ידיות פליז, שמור על גבשושית ופריסה","הפוך את האמבטיה ללוק ספא: שיש בהיר, זוג ספי קיר, ידיות מינימליות; השאר אריחים","רענון חזית: ליים-ווש גרייג׳ חם, דלת חלקה מודרנית, ספוטים שחורים צרים; לשמור חלונות","טרסת חוץ: הוסף אדניות נמוכות, סט ישיבה טיק, שרשרת תאורה חמה; שמור דק ונוף","העמדת דירה למכירה: הסר עומס, סטייל נייטרלי, אור יום רך, בלי טקסט או ווטרמרק","שינוי מצלמה: זווית בגובה עיניים, עדשה רחבה, קומפוזיציה מרכזית; שמור חפצים ופרופורציות"]},aF={gptWorkspace:LB,thinkingWords:OB,agents:MB,agentCategories:zB,menu:BB,layers:FB,tooltips:$B,shareModal:VB,painting:UB,settings:qB,helpCenter:GB,academy:WB,supportCenter:HB,materialReferences:KB,dropZone:YB,characterRefReject:QB,agentSuccess:JB,bordi:XB,workflows:ZB,colorPaletteGallery:eF,quickEditPrompts:tF},iF="מדריך פרומפטים",oF="16 פרומפטים מקצועיים למיצוי הפוטנציאל המלא של Nano Banana Pro לצילום עיצוב פנים וחוץ",rF="חפש פרומפטים...",nF="פרומפטים",sF="מלא:",lF="העתק פרומפט",cF="העתק",dF="הועתק!",uF="📋 עיון מהיר",mF="יחסי גובה-רוחב",pF="גיליון עזר להגדרות מצלמה",hF={title:"הכלל הזהב",text:"תמיד כלול את הסעיף CRITICAL עם הכלל same_room בעת עריכת תמונות קיימות. זה מונע מ-Nano Banana Pro ליצור חדר חדש לחלוטין במקום לשנות את התמונה שהעלית."},gF={title:"הערה על AI",text:"Nano Banana Pro מייצג את החזית של יצירת תמונות AI, אך כמו כל טכנולוגיית AI, התוצאות עשויות להשתנות. יצרנו את הפרומפטים האלה כדי לעזור לך להשיג את התוצאות הטובות ביותר, תוך מזעור טעויות נפוצות. המהפכה של AI בעיצוב פנים רק מתחילה—אנחנו מחויבים להישאר בחזית עם הכלים המדויקים והאמינים ביותר הזמינים. הישאר מעודכן למה שקורה הלאה."},fF={readyToCreate:"מוכן ליצור?",startNewProject:"התחל פרויקט חדש עם Nano Banana Pro וצור עיצובי פנים מרהיבים.",signUpToTry:"הירשם כדי לנסות את הפרומפטים האלה עם Nano Banana Pro וצור עיצובי פנים מרהיבים.",tryNanoBananaPro:"נסה את Nano Banana Pro",getStarted:"התחל עכשיו",creating:"יוצר..."},bF={cameraAngles:"זוויות מצלמה",shoppingBudget:"קניות ותקציב",styleLighting:"סטייל ותאורה",technicalProfessional:"טכני ומקצועי"},vF={failedToCopy:"העתקה נכשלה",failedToCreateProject:"יצירת פרויקט נכשלה"},yF={"detail-bokeh":"צילום פרט עם בוקה","wide-establishing":"צילום רחב של החלל","low-angle-drama":"צילום בזווית נמוכה לדרמה","doorway-threshold":"צילום מסף הדלת","overhead-birds-eye":"מבט על / מבט ציפור","find-products":"מציאת מוצרים מהתמונה","budget-comparison":"השוואת תקציב (2 רמות)","side-by-side-budget-comparison":"השוואת תקציב צד-לצד עם פרטי מוצרים","mood-board-products":"לוח השראה עם מוצרים אמיתיים","time-of-day":"שינוי זמן היום","style-transfer":"העברת סגנון","seasonal-styling":"עיצוב עונתי","floor-plan-3d":"תכנית קומה לוויזואליזציה תלת-ממדית","material-closeup":"צילום מקרוב של חומר","before-after":"השוואה לפני/אחרי","presentation-board":"לוח פרזנטציה מקצועי"},xF={"detail-bokeh":"צילום מקרוב של אלמנט ספציפי עם טשטוש רקע יפה","wide-establishing":"צילום רחב המציג את כל החלל","low-angle-drama":"צילום בזווית נמוכה להדגשת גובה וליצירת דרמה","doorway-threshold":"צילום מסף הדלת - תחושת גילוי","overhead-birds-eye":"מבט מלמעלה המציג את פריסת הרהיטים","find-products":"זיהוי מוצרים בתמונה ומציאת חלופות אמיתיות לרכישה","budget-comparison":"אותו חדר בשני תקציבים - בינוני מול פרימיום","side-by-side-budget-comparison":"יצירת השוואה מפורטת צד-לצד עם סימונים ממוספרים ורשימת מחירים","mood-board-products":"לוח השראה מקצועי עם מוצרים אמיתיים ומחירים","time-of-day":"שינוי זמן היום - בוקר, שעת זהב, ערב או לילה","style-transfer":"הפיכת החדר לסגנון עיצוב שונה","seasonal-styling":"עיצוב החדר לעונות שונות או חגים","floor-plan-3d":"הפיכת תכנית קומה דו-ממדית לוויזואליזציה תלת-ממדית","material-closeup":"צילום מקרוב של חומר או טקסטורה ספציפיים","before-after":"יצירת השוואה לפני/אחרי צד-לצד","presentation-board":"לוח פרזנטציה מקצועי ללקוח"},wF={highlight_element:"מה להדגיש (המדרגות / האח / הספה / גוף התאורה)",position:"מאיפה לצלם (מהכניסה / מהפינה / מול החלון)",emphasize:"מה להדגיש (גובה תקרה / מדרגות / נברשת / חלונות כפולי גובה)",entry_point:"נקודת כניסה (דלת ראשית / קשת / פתח מסדרון)",focus_area:"אזור מיקוד (סידור ישיבה / שולחן אוכל / עיצוב שולחן קפה)",currency:"מטבע (EUR / USD / ILS)",none:"לא נדרש קלט 
604- השוואה אוטומטית",board_title:"כותרת הלוח (קונספט סלון / קבל את המראה הזה / לקוח: שם)",time_of_day:"זמן היום (בוקר / שעת_זהב / ערב / לילה)",new_style:"סגנון חדש (סקנדינבי / מיד-סנטורי מודרני / אינדוסטריאלי / ג'פנדי / ים תיכוני / ארט דקו / מינימליסטי / בוהמי / מסורתי / יוקרה עכשווית)",season:"עונה (אביב / קיץ / סתיו / חורף / חג_מולד / חנוכה)",style:"סגנון (מינימליסטי מודרני / סקנדינבי / יוקרה עכשווית / אינדוסטריאלי) ותצוגה (פרספקטיבה / אקסונומטרי / סיור בגובה עיניים)",material:"חומר (רצפת שיש / ציפוי אלון / ריפוד קטיפה / קיר בטון / חומרה פליז / טראצו / עור / וילונות פשתן)",change_description:"מה לשנות (שיפוץ בסגנון מודרני / שינוי סכמת צבעים לטונים חמים / שדרוג רהיטים למיד-סנטורי / הוספת יותר צמחים ואלמנטים טבעיים)",project_name:"שם הפרויקט (עיצוב מחדש סלון / חדר שינה ראשי / מטבח פתוח) ואופציונלית שם הלקוח"},kF={"16:9":"צילומים רחבים, פרזנטציות, תמונות גיבור","4:5":"אינסטגרם, פרזנטציות אנכיות","1:1":"ריבוע, צילומים מלמעלה, מדיה חברתית","9:16":"סטוריז, השוואות אנכיות","2.39:1":"מסך רחב קולנועי"},_F={"f/1.8-2.8":"עומק שדה רדוד, טשטוש רקע, צילומי פרט","f/5.6-8":"הכל חד, צילומים רחבים","16-24mm":"זווית רחבה, צילומי חדר מלא","35-50mm":"סטנדרטי, פרספקטיבה טבעית","85-100mm":"צילומי פרט, פורטרטים, דחיסה"},SF={title:"מדריך פרומפטים לווידאו",subtitle:"25 פרומפטים מקצועיים ל-Kling O1 Image-to-Video למיצוי הפוטנציאל המלא של יצירת וידאו לעיצוב פנים וחוץ",searchPlaceholder:"חפש פרומפטי וידאו...",quickReference:"📋 עיון מהיר",category:"קטגוריה",prompts:"פרומפטים",bestFor:"מתאים ל",portfolioPresentations:"תיק עבודות, פרזנטציות ללקוחות",renovationShowcases:"תצוגות שיפוץ",atmosphereDemos:"הדגמות אווירה",materialHighlights:"הדגשת חומרים/רהיטים",socialMediaMarketing:"מדיה חברתית, שיווק",exteriorShowcases:'נדל"ן, שיווק נכסים',aiNote:{title:"הערה על יצירת וידאו AI",text:"Kling O1 מייצג טכנולוגיית יצירת וידאו AI מתקדמת. הפרומפטים האלה נועדו לעזור לך להשיג תוצאות מקצועיות לווידאו עיצוב פנים. התוצאות עשויות להשתנות, ואנו ממליצים להתנסות בפרומפטים שונים כדי למצוא מה עובד הכי טוב לעיצובים הספציפיים שלך."},cta:{readyToCreate:"מוכן ליצור?",startNewProject:"התחל פרויקט חדש עם Video Generator וצור סרטוני עיצוב פנים מרהיבים.",signUpToTry:"הירשם כדי לנסות את הפרומפטים האלה עם Video Generator וצור סרטוני עיצוב פנים מרהיבים.",tryVideoGenerator:"נסה את Video Generator",getStarted:"התחל עכשיו",creating:"יוצר..."}},CF={roomWalkthroughs:"סיורים בחדר",beforeAfter:"השוואות לפני/אחרי",lightingAtmosphere:"תאורה ואווירה",furnitureElementFocus:"מיקוד רהיטים ואלמנטים",virtualStagingLifestyle:"סטיילינג וירטואלי ואורח חיים",exteriorArchitecture:"אדריכלות חיצונית"},TF={"slow-room-pan":"פאן איטי של החדר","entry-reveal":"חשיפה מהכניסה","corner-to-corner-sweep":"מעבר מפינה לפינה","window-light-walk":"מעבר לאורך החלונות","circular-room-tour":"סיור מעגלי בחדר","design-morph":"מורפינג עיצוב","style-evolution":"אבולוציית סגנון","renovation-reveal":"חשיפת שיפוץ","seasonal-shift":"מעבר עונתי","day-to-night-transform":"מעבר יום-לילה","golden-hour-sweep":"מעבר שעת זהב","chandelier-activation":"הפעלת נברשת","mood-lighting-shift":"מעבר תאורת אווירה","morning-light-animation":"אנימציית אור בוקר","fireplace-glow":"זוהר אח","sofa-detail-reveal":"חשיפת פרטי ספה","table-setting-showcase":"תצוגת עיצוב שולחן","art-wall-focus":"מיקוד קיר אמנות","material-texture-pan":"פאן טקסטורת חומר","kitchen-island-orbit":"מסלול סביב אי מטבח","curtain-breeze":"רוח וילונות","plant-life-animation":"אנימציית צמחים","reflection-shimmer"
604:"נצנוץ השתקפויות","cozy-living-scene":"סצנת מגורים נעימה","bathroom-spa-reveal":"חשיפת ספא אמבטיה","luxury-villa-aerial":"צילום אווירי של וילה יוקרתית","skyscraper-dramatic-rise":"עלייה דרמטית על גורד שחקים","residential-estate-birds-eye":"מבט ממעוף הציפור על אחוזה","modern-home-entrance":"כניסה מפוארת לבית מודרני","office-building-lobby":"גישה ללובי בניין משרדים","villa-poolside-reveal":"חשיפת וילה מקצה הבריכה","building-corner-dramatic":"זווית נמוכה דרמטית של פינת בניין","historic-villa-evening":"וילה היסטורית בזוהר ערב","commercial-tower-reflection":"מחקר השתקפויות מגדל מסחרי","villa-day-to-night":"מעבר וילה מיום ללילה","building-entrance-activity":"פעילות כניסה לבניין","garden-path-villa":"שביל גינה לווילה","courtyard-orbit":"הקפה סביב חצר","foggy-morning-estate":"אחוזה בוקר ערפלי","rainy-day-building":"בניין ביום גשום","sunset-silhouette-villa":"צללית וילה בשקיעה","office-campus-overview":"סקירת קמפוס משרדים","luxury-condo-tower":"תצוגת מגדל דירות יוקרה"},jF={"slow-room-pan":"מצלמה עוברת לאט משמאל לימין על פני החדר","entry-reveal":"מצלמה מתקדמת קדימה מסף הדלת אל החלל","corner-to-corner-sweep":"מצלמה גולשת באלכסון המדגישה עומק מרחבי","window-light-walk":"מצלמה עוקבת במקביל לחלונות ותופסת אור טבעי","circular-room-tour":"מצלמה מקיפה 180 מעלות סביב מרכז החדר","design-morph":"מעבר חלק בין שני עיצובים","style-evolution":"שינוי הדרגתי של חומרים וצבעים","renovation-reveal":"אלמנטים מתמוססים ומתעצבים מחדש לעיצוב משודרג","seasonal-shift":"אלמנטי עיצוב עוברים בין סגנונות עונתיים","day-to-night-transform":"תאורה משתנה מאור יום לאווירת ערב","golden-hour-sweep":"אור שמש חם עובר לאט על פני החדר","chandelier-activation":"נברשת נדלקת בהדרגה ומאירה את החדר","mood-lighting-shift":"תאורת אווירה עוברת מקרירה לחמה","morning-light-animation":"אור בוקר רך מתחזק בהדרגה","fireplace-glow":"להבות אח מנצנצות ומטילות אור חם","sofa-detail-reveal":"מצלמה מתקרבת לספה וחושפת טקסטורה","table-setting-showcase":"מצלמה יורדת מלמעלה וחושפת עיצוב שולחן","art-wall-focus":"מצלמה מתקרבת לקיר אמנות","material-texture-pan":"מצלמה גולשת על פני משטח וחושפת טקסטורות","kitchen-island-orbit":"מצלמה מקיפה סביב אי מטבח","curtain-breeze":"וילונות שקופים מתנפנפים פנימה בעדינות","plant-life-animation":"צמחי בית מתנועעים בעדינות","reflection-shimmer":"משטחי מראה וזכוכית תופסים השתקפויות אור","cozy-living-scene":"אדים עולים מכוס קפה","bathroom-spa-reveal":"מצלמה עולה ומגלה את עיצוב האמבטיה","luxury-villa-aerial":"צילום אווירי דרמטי של וילה יוקרתית מודרנית","skyscraper-dramatic-rise":"צילום דרון מזווית נמוכה עולה לאורך חזית זכוכית","residential-estate-birds-eye":"צילום אווירי גבוה יורד לאחוזה","modern-home-entrance":"צילום מעקב חלק המתקרב לבית עכשווי","office-building-lobby":"צילום גימבל לכיוון בניין זכוכית תאגידי","villa-poolside-reveal":"צילום דולי איטי לאורך בריכת אינסוף חושף וילה","building-corner-dramatic":"צילום סטטי מזווית נמוכה של בניין זוויתי מודרני","historic-villa-evening":"וילה ים-תיכונית בשקיעה עם אורות פנימיים חמים","commercial-tower-reflection":"צילום אמצעי של השתקפויות חזית זכוכית מגדל משרדים","villa-day-to-night":"צילום סטטי של וילה במעבר מיום ללילה","building-entrance-activity":"צילום רחב של בניין משרדים עם אנשי מקצוע הולכים","garden-path-villa":"מעבר ראשון אישי לאורך שביל גינה","courtyard-orbit":"תנועת מצלמה אורביטלית חלקה סביב חצר פנימית","foggy-morning-estate":"אחוזה מפוארת צצה מערפל בוקר","rainy-day-building":"בניין מודרני בגשם עם אווירה קודרת","sunset-silhouette-villa":"צללית וילה על רקע שמי שקיעה דרמטיים","office-campus-overview":"צילום מעקב אווירי של קמפוס משרדים מודרני","luxury-condo-tower":"פאן אנכי איטי למעלה על חזית מגדל מגורים"},NF={title:"מדריך פרומפטים GPT-image-1.5",subtitle:"25 פרומפטים מקצועיים ל-GPT-image-1.5 למיצוי הפוטנציאל המלא של יצירת תמונות AI לעיצוב פנים",searchPlaceholder:"חפש פרומפטי GPT-image...",tips:{title:"
604💡 טיפים לשימוש",tip1:"החלף את הסוגריים המרובעים [specify...] בפרטים הספציפיים לפרויקט",tip2:'לתוצאות מדויקות יותר - הוסף quality="high" ו-input_fidelity="high"',tip3:'לשמירה מקסימלית על הזהות - חזור על "preserve" ו-"do not change" מספר פעמים',tip4:"לתמונות מרובות - תמיד ציין Image 1 / Image 2 באופן מפורש"},aiNote:{title:"הערה על GPT-image-1.5",text:"GPT-image-1.5 מייצג טכנולוגיית יצירת תמונות AI מתקדמת. הפרומפטים האלה נועדו לעזור לך להשיג תוצאות מקצועיות לעיצוב פנים. התוצאות עשויות להשתנות, ואנו ממליצים להתנסות בפרומפטים ופרמטרים שונים כדי למצוא מה עובד הכי טוב לפרויקטים הספציפיים שלך."},cta:{readyToCreate:"מוכן ליצור?",startNewProject:"התחל פרויקט חדש עם Image Creator וצור עיצובי פנים מרהיבים.",signUpToTry:"הירשם כדי לנסות את הפרומפטים האלה עם Image Creator וצור עיצובי פנים מרהיבים.",tryImageCreator:"נסה את Image Creator",getStarted:"התחל עכשיו",creating:"יוצר..."}},PF={floorPlanConversion:"המרת תכניות ושרטוטים",materialReplacement:"החלפת חומרים וגימורים",addRemoveItems:"הוספה והסרה של פריטים",lightingAtmosphere:"שינויי תאורה ואווירה",styleTransfer:"העברת סגנון ומודבורד",cameraComposition:"זוויות וקומפוזיציה",architecturalChanges:"שינויים אדריכליים",specificRooms:"חדרים ספציפיים",beforeAfter:"Before/After והשוואות",marketingOptimization:"אופטימיזציה לשיווק"},AF={"floor-plan-isometric":"תכנית קומה → רנדר 3D איזומטרי","floor-plan-top-down":"תכנית קומה → מבט עליון תלת-ממדי","sketch-to-render":"סקיצה ידנית → הדמיה פוטוריאליסטית","replace-flooring":"החלפת ריצוף","replace-countertop":"החלפת משטח עבודה במטבח","change-wall-color":"שינוי צבע קירות","replace-cabinets":"החלפת ארונות מטבח","add-furniture":"הוספת רהיט מתמונת מוצר","remove-furniture":"הסרת רהיט","virtual-staging":"Virtual Staging - חדר ריק לחדר מעוצב","day-to-night":"יום → לילה","winter-season":"שינוי עונה - חורף","dramatic-lighting":"שינוי מצב רוח - תאורה דרמטית","apply-style-reference":"יישום סגנון מתמונת השראה","mood-board-to-room":"מודבורד → הדמיית חדר","new-camera-angle":"יצירת זווית צילום חדשה","panoramic-expansion":"מבט פנורמי רחב","add-architectural-element":"הוספת אלמנט אדריכלי","modify-ceiling":"שינוי תקרה","enlarge-window":"הרחבת חלון","upgrade-bathroom":"שדרוג חדר רחצה","outdoor-terrace":"מבט חוץ - שדרוג מרפסת","before-after-split":"יצירת השוואת Before/After","material-variations":"גרסאות חומרים מרובות","real-estate-enhancement":'הכנת תמונה לפרסום נדל"ן'},EF={"floor-plan-isometric":"הפיכת תכנית קומה לרנדר 3D איזומטרי פוטוריאליסטי","floor-plan-top-down":"המרת תכנית קומה אדריכלית לוויזואליזציה תלת-ממדית מלמעלה","sketch-to-render":"הפיכת סקיצה ידנית לרנדר חדר פוטוריאליסטי","replace-flooring":"החלפת הריצוף בלבד תוך שמירה על כל השאר","replace-countertop":"החלפת משטחי עבודה במטבח בחומר חדש","change-wall-color":"שינוי צבע הקירות תוך שמירה על כל האלמנטים האחרים","replace-cabinets":"החלפת ארונות מטבח בסגנון חדש","add-furniture":"הצבת רהיט מתמונת מוצר בחדר","remove-furniture":"הסרת פריט רהיט ספציפי מהחדר","virtual-staging":"ריהוט חדר ריק בריהוט מינימליסטי מודרני","day-to-night":"הפיכת תמונת פנים יומית לסצנת ערב","winter-season":"הפיכת פנים להגדרה ערבית חורפית נעימה","dramatic-lighting":"יצירת אווירה עריכה דרמטית עם תאורה","apply-style-reference":"יישום סגנון עיצוב פנים מתמונת התייחסות","mood-board-to-room":"יצירת רנדר חדר על בסיס אלמנטי מודבורד","new-camera-angle":"יצירת זווית מצלמה חלופית של חלל פנים","panoramic-expansion":"הרחבת מבט פנים לצילום פנורמי רחב יותר","add-architectural-element":"הוספת אלמנט מובנה כמו ספריות לקיר","modify-ceiling":"שינוי עיצוב תקרה תוך שמירה על החדר","enlarge-window":"הרחבת חלון למידות רצפה-תקרה","upgrade-bathroom":"שיפוץ חדר רחצה עם גימורים יוקרתיים מודרניים","outdoor-terrace":"הפיכת מרפסת חיצונית לחלל מגורים מעוצב","before-after-split":"יצירת השוואה לפני/אחרי במסך מפוצל","material-variations":"יצירת 4 וריאציות חומרים ברשת 2x2","real-estate-enhancement":'שיפור תמונת פנים לשיווק נדל"ן'},IF={title:"מדריך פרומפטים לווידאו Veo 3.1",subtitle:"ערכת טריקים + 12 פרומפטים מוכנים (6 מתמונה אחת, 6 משתי תמונות) ל-Veo 3.1 לעיצוב פנים",searchPlaceholder:"חפש פרומפטי Veo...",imageToVideo:"Image-to-Video",imageToVideoDesc:"ערכת טריקים + 12 פרומפטים מוכנים (6 מתמונה אחת, 6 משתי תמונות) לעיצוב פנים",aiNote:{title:"הערה על Veo 3.1",text:"Google Veo 3.1 מייצג טכנולוגיית יצירת וידאו AI מתקדמת. הפרומפטים האלה נועדו לעזור לך להשיג תוצאות מקצועיות לווידאו עיצוב פנים. התוצאות עשויות להשתנות, ואנו ממליצים להתנסות בפרומפטים שונים כדי למצוא מה עובד הכי טוב לעיצובים הספציפיים שלך. עבור פרומפטי Image-to-Video, תמיד התחל ב-'Use the uploaded image as the first frame' כדי להבטיח עקביות."},cta:{readyToCreate:"מוכן ליצור?",startNewProject:"התחל פרויקט חדש עם Video Generator וצור סרטוני עיצוב פנים מרהיבים.",signUpToTry:"הירשם כדי לנסות את הפרומפטים האלה עם Video Generator וצור סרטוני עיצוב פנים מרהיבים.",tryVideoGenerator:"נסה את Video Generator",getStarted:"התחל עכשיו",creating:"יוצר..."}},DF={livingRoomPublic:"סלון / חלל ציבורי",kitchenDining:"מטבח + פינת אוכל",bedroomKids:"חדר שינה / חדרי ילדים",bathroomSpa:"חדר רחצה / ספא ביתי",exteriorOutdoor:"חוץ: בית / חצר / חזית / בריכה",interiorVideoTricks:"טריקים שעובדים ל-Interior (Veo 3.1)",singleImageToVideo:"6 פרומפטים (תמונה אחת → וידאו)",twoImagesTimelapse:"6 פרומפטים (שתי תמונות → טיימלאפס/מעבר מבוקר)"},RF={"modern-warm-minimal-living":"סלון מינימליסטי חם מודרני","japandi-living-room":"סלון ג'פנדי","luxury-contemporary-lounge":"סלון יוקרתי עכשווי","scandinavian-family-living":"סלון משפחתי סקנדינבי","industrial-loft-living":"חלל מגורים לופט אינדוסטריאלי","minimalist-kitchen-island":"מטבח מינימליסטי עם אי גדול","cozy-mediterranean-kitchen":"מטבח ים תיכוני נעים","dining-room-styling":"צילום סטיילינג פינת אוכל","high-end-kitchen-dusk":"מטבח יוקרתי בשקיעה","open-plan-continuity":"מטבח-אוכל-סלון פתוח","serene-master-bedroom":"חדר שינה ראשי שליו","kids-bedroom-pastel":"חדר ילדים עם גוונים פסטליים","boutique-hotel-bedroom":"חדר שינה בסגנון בוטיק-הוטל","minimal-bedroom-product":"צילום מוצר מינימליסטי של חדר שינה","bedroom-daylight-evening":"מעבר יום-ערב בחדר שינה","spa-bathroom-microcement":"חדר רחצה ספא עם מיקרו-צמנט","luxury-bathroom-marble":"חדר רחצה יוקרתי עם שיש","small-bathroom-makeover":"שיפוץ חדר רחצה קטן","wet-room-shower-detail":"צילום פרט מקלחת חדר רטוב","powder-room-moody":"חדר שירותים קודר","modern-v
604illa-exterior":"חזית וילה מודרנית","mediterranean-courtyard":"חצר ים תיכונית","backyard-patio-styling":"סטיילינג פטיו בחצר","poolside-luxury":"יוקרה ליד הבריכה","front-entrance-hero":"צילום גיבור כניסה קדמית","night-exterior-facade":"חוץ לילי: תאורת עלייה על חזית","balcony-city-apartment":"מרפסת בדירת עיר","rainy-modern-house":"בית מודרני ביום גשום","garden-walkway-reveal":"חשיפת שביל גינה","architectural-detail-closeup":"צילום מקרוב פרט אדריכלי","trick-lock-space":"נעילה מקסימלית של חלל","trick-prevent-structure-change":"מניעת שינוי מבנה","trick-safe-camera-movement":"תנועת מצלמה בטוחה באינטריור","push-in-realistic-life":"Push‑in ריאליסטי + חיים עדינים","pan-small-real-estate":'Pan קטן "ריל אסטייט"',"rack-focus-material-detail":"Rack focus לפרטי חומר","golden-hour-pass":'"Golden hour pass" (שינוי אור בלבד)',"night-cozy":'"Night cozy" (הדלקת פרקטיקלים)',"clean-stabilization":'"Clean stabilization" (כמעט סטילס אבל חי)',"finish-reveal-clean":'"Finish reveal" נקי (בלי עובדים)',"materials-install-sequence":'"Materials install sequence" (בלי בלגן)',"same-design-staging-only":'"Same design, staging only" (הום‑סטיילינג)',"day-night-between-frames":'"Day→Night between frames"',"micro-zoom-into-final":'"Micro‑zoom into final" (שומר על יציבות)',"people-disallow":'"People disallow" כדי לא להכניס דמויות בטעות'},LF={"modern-warm-minimal-living":"סלון מינימליסטי חם עם אור בוקר רך","japandi-living-room":"סגנון ג'פנדי עם אור יום מעונן","luxury-contemporary-lounge":"סלון יוקרתי עם תאורת שעת זהב","scandinavian-family-living":"חלל סקנדינבי ידידותי למשפחה","industrial-loft-living":"לופט אינדוסטריאלי עם תאורת סצנת לילה","minimalist-kitchen-island":"מטבח מינימליסטי עם אי שיש","cozy-mediterranean-kitchen":"מטבח ים תיכוני עם אור בוקר חם","dining-room-styling":"חשיפה מלמעלה-לזווית של שולחן אוכל","high-end-kitchen-dusk":"מטבח עם תאורת LED חמה מתחת לארונות","open-plan-continuity":"צילום המשכיות בין אזורים","serene-master-bedroom":"אווירה כחולה לפני שחר עם מנורות ליד המיטה חמות","kids-bedroom-pastel":"חדר ילדים משחקי עם אור יום רך","boutique-hotel-bedroom":"עץ כהה ונחושת עם אור ערב","minimal-bedroom-product":"מיקוד בחומרים עם מיקוד ראק","bedroom-daylight-evening":"מעבר חלק מיום ללילה","spa-bathroom-microcement":"חדר רחצה ספא עם אור שמיים מפוזר","luxury-bathroom-marble":"לוחות שיש עם תאורה עקיפה חמה","small-bathroom-makeover":"אריחים לבנים בוהקים עם כיור אלון","wet-room-shower-detail":"צילום מקרוב קיצוני עם טיפות מים","powder-room-moody":"צבע כהה עם פנס בודד","modern-villa-exterior":"טיח לבן עם שמש שעת זהב","mediterranean-courtyard":"ריצוף אבן עם עצי זית","backyard-patio-styling":"אוכל חוץ עם שעת כחול שקיעה","poolside-luxury":"מרצפת טראצו עם מים רגועים","front-entrance-hero":"שביל עם ערוגות שתילה","night-exterior-facade":"תאורת עלייה על קיר מחוספס","balcony-city-apartment":"סלון חוץ עם בוקה קו רקיע","rainy-modern-house":"מדרכה רטובה עם השתקפויות","garden-walkway-reveal":"מצלמה מתחילה מאחורי עלים","architectural-detail-closeup":"חזית לוחות עץ עם פסי שמש","trick-lock-space":"שימוש בתמונת התחלה ו-last frame","trick-prevent-structure-change":"שמירה על קירות/דלתות/חלונות קבועים","trick-safe-camera-movement":"תנועות עדינות עם שמירה על אנכים ישרים","push-in-realistic-life":"זום מרכזי איטי עם תנועות מיקרו","pan-small-real-estate":"פאן שמאלה-ימינה איטי 3-5 מעלות","rack-focus-material-detail":"מעבר מיקוד מחזית לרקע","golden-hour-pass":"מעבר חלק מאור יום לשעת זהב","night-cozy":"מעבר משעות אחר הצהריים לערב חם","clean-stabilization":"מצלמה נעולה לחלוטין עם תנועות מיקרו","finish-reveal-clean":"מעבר חלק משיפוץ ללא דמויות","materials-install-sequence":"רצף התקנת חומרים מצויר","same-design-staging-only":"רק שינויי סטיילינג ללא שינויי ריהוט","day-night-between-frames":"מעבר יום-לילה עם שמירה על גאומטריה","micro-zoom-into-final":"זום עדין פנימה עם יציבות","people-disallow":"מניעת הופעת דמויות"},OF={title:"מדריך פרומפטים לווידאו Sora 2",subtitle:"ערכת טריקים + 25 פרומפטים מוכנים (12 אינטריור, 13 חוץ) ל-Sora 2 למעצבי פנים",searchPlaceholder:"חפש פרומפטי Sora...",aiNote:{title:"הערה על Sora 2",text:"OpenAI Sora 2 מייצג טכנולוגיית יצירת וידאו AI מתקדמת. הפרומפטים האלה נועדו לעזור לך להשיג תוצאות מקצועיות לווידאו עיצוב פנים. התוצאות עשויות להשתנות, ואנו ממליצים להתנסות בפרומפטים שונים כדי למצוא מה עובד הכי טוב לעיצובים הספציפיים שלך. עבור פרומפטי Image-to-Video, תמיד התחל ב-'Use the reference image as the first frame' כדי להבטיח עקביות. שימו לב: תמונות עם פנים נדחות על ידי ה-API."},cta:{readyToCreate:"מוכן ליצור?",startNewProject:"התחל פרויקט חדש עם Video Generator וצור סרטוני עיצוב פנים מרהיבים.",signUpToTry:"הירשם כדי לנסות את הפרומפטים האלה עם Video Generator וצור סרטוני עיצוב פנים מרהיבים.",tryVideoGenerator:"נסה את Video Generator",getStarted:"התחל עכשיו",creating:"יוצר..."}},MF={tricksTrends:"טריקים וטרנדים ל-Sora 2",singleImageInteriors:"12 פרומפטים: תמונה אחת (Interiors)",singleImageExteriors:"13 פרומפטים: תמונה אחת (Exteriors)"},zF={"trick-one-shot-one-move":'"One shot, one move, one action"',"trick-keep-composition":"שמירה על קומפוזיציה","trick-timing-beats":"קצב ב-8 שניות","trick-remix":"Remix לשינוי יחיד","trick-no-faces":"שימו לב: אין פנים","soft-push-in-luxury":"Soft push‑in, luxury calm","pan-3-5-reveal":"Pan 3–5° reveal","rack-focus-material":"Rack focus material hero","golden-hour-drift":"Golden-hour drift","night-cozy-practicals":"Night cozy practicals","rainy-ambience-window":"Rainy ambience through window","ceiling-light-sway":"Ceiling light swing micro-motion","architectural-still-alive":"Architectural still, 'alive'","kitchen-steam-detail":"Kitchen steam detail","texture-pass":"Texture pass (stone/wood/fabric)","minimal-handheld-vlog":"Minimal handheld 'design vlog' (very controlled)","colorway-trend-remix":"Colorway trend remix cue (warm neutral)","drone-push-in-development":"Drone push‑in over development","orbit-10-max-safe":"Orbit 10° max (safe)","blue-hour-lights-alive":"Blue hour lights come alive","pool-water-realism":"Pool water realism","rain-wet-reflections":"Rain-wet reflections","coastal-haze-cinematic":"Coastal haze cinematic","community-life-distant":"Community life (distant, no close faces)","street-life-micro-beats":"Street life micro-action beats","wind-trees-hero":"Wind in trees hero","luxury-marketing-grade":"Luxury marketing grade cue","courtyard-cafe-ambience":"Courtyard café ambience (no signage)","amenity-reveal-gym":"Amenity reveal: gym glass reflections","minimal-hyper-real-still":"Minimal 'hyper-real' still"},BF={"trick-one-shot-one-move":"תנועת מצלמה אחת ברורה + שינוי אחד עיקרי","trick-keep-composition":"הנחיה לשמירה על קומפוזיציה/סטייל","trick-timing-beats":"כתיבת actions כ-beats","trick-remix":"עדיף Remix במקום לייצר מחדש","trick-no-faces":"תמונות עם פנים נדחות","soft-push-in-luxury":"זום מרכזי איטי עם חיים עדינים","pan-3-5-reveal":"פאן שמאלה-ימינה איטי 3-5 מעלות","rack-focus-material":"מעבר מיקוד מחזית לרקע","golden-hour-drift":"מעבר חלק מאור יום לשעת זהב","night-cozy-practicals":"הדלקת פרקטיקלים עם beats","rainy-ambience-window":"גשם עדין דרך החלון","ceiling-light-sway":"תנועת מיקרו של נברשת","architectural-still-alive":"כמעט סטילס אבל חי","kitchen-steam-detail":"אדים עדינים במטבח","texture-pass":"הדגשת טקסטורות חומרים","minimal-handheld-vlog":"תנועת מצלמה עדינה מאוד","colorway-trend-remix":"שינוי פלטת צבעים","drone-push-in-development":"תנועת דרון איטית","orbit-10-max-safe":"קשת איטית סביב בניין","blue-hour-lights-alive":"הדלקת תאורה בשעת כחול","pool-water-realism":"ריאליזם של מים בבריכה","rain-wet-reflections":"השתקפויות אחרי גשם","coastal-haze-cinematic":"ערפל קל לחוף","community-life-distant":"חיים קהילתיים רחוקים","street-life-micro-beats":"חיי רחוב עם beats","wind-trees-hero":"רוח בעצים","luxury-marketing-grade":"גרדינג שיווקי יוקרתי","courtyard-cafe-ambience":"אווירת קפה בחצר","amenity-reveal-gym":"השתקפויות זכוכית","minimal-hyper-real-still":"כמעט סטילס היפר-ריאליסטי"},FF={title:"מדריך פרומפטים לווידאו Grok",subtitle:"ערכת טריקים + 25 פרומפטים מוכנים (10 אינטריור בטוח, 8 סטיילינג, 7 אקסטריור) ל-Grok Video למעצבי פנים",searchPlaceholder:"חפש פרומפטי Grok...",aiNote:{title:"הערה על Grok Video",text:"xAI Grok Video הוא כלי image-to-vi
604deo מהיר ופשוט. הפרומפטים האלה נועדו לעזור לך להשיג תוצאות מקצועיות לווידאו עיצוב פנים. התוצאות עשויות להשתנות, ואנו ממליצים להתנסות בפרומפטים שונים כדי למצוא מה עובד הכי טוב לעיצובים הספציפיים שלך. Grok Video מיועד לקליפים קצרים ומהירים, עם אפשרות להוסיף פרומפט קצר שמכוון את האפקט."},cta:{readyToCreate:"מוכן ליצור?",startNewProject:"התחל פרויקט חדש עם Video Generator וצור סרטוני עיצוב פנים מרהיבים.",signUpToTry:"הירשם כדי לנסות את הפרומפטים האלה עם Video Generator וצור סרטוני עיצוב פנים מרהיבים.",tryVideoGenerator:"נסה את Video Generator",getStarted:"התחל עכשיו",creating:"יוצר..."}},$F={tricksTrends:"טריקים וטרנדים ל-Grok Video",interiorSafe:'10 פרומפטים: אינטריור "בטוח"',interiorStylingStorytelling:'8 פרומפטים: אינטריור "סטיילינג/סטוריטלינג"',exteriorNeighborhoodBuilding:"7 פרומפטים: אקסטריור - שכונה/בניין/חצר"},VF={"trick-video-editor-style":'כתוב פרומפט כמו "עורך וידאו"',"trick-reduce-complexity":"הפחת מורכבות אם המודל ממציא","trick-camera-locked":'הכי יציב: "camera locked" או "gentle zoom only"',"trick-architectural-still-alive":'"Architectural still alive"',"trick-light-mood-shift":'"Light mood shift"',"trick-real-estate-gimbal":'"Real-estate gimbal"',"keep-room-same-gentle-zoom":"Keep room same, gentle zoom","lock-camera-daylight-only":"Lock camera, daylight only","slow-pan-keep-walls-straight":"Slow pan, keep walls straight","gimbal-push-premium":"Gimbal push-in, premium feel","no-camera-warm-lamps":"No camera movement, warm lamps","rack-focus-foreground-sofa":"Rack focus: foreground to sofa","minimal-handheld-micro":"Minimal handheld micro-movement","kitchen-steam-specular":"Kitchen: steam + specular highlights","bathroom-steam-reflections":"Bathroom: steam + mirror reflections","bedroom-morning-light":"Bedroom: morning light + curtain","lived-in-book-curtain":"Lived-in: book page + curtain","lifestyle-coffee-tv":"Lifestyle: coffee steam + TV flicker","cleaning-reveal-dust":"Cleaning reveal: dust motes fade","material-showcase-wood-stone":"Material showcase: wood + stone","golden-hour-glow":"Golden hour glow","night-luxury-practical-lights":"Night luxury: practical lights","calm-breeze-plants-curtains":"Calm breeze: plants + curtains","architectural-hero-still":"Architectural hero: almost still","aerial-gentle-zoom-stable":"Aerial feel: gentle zoom, stable","slow-orbit-building":"Slow orbit around building","blue-hour-path-lights":"Blue hour: path lights glow","after-rain-wet-reflections":"After rain: wet reflections","courtyard-life-distant":"Courtyard life (distant)","pool-area-ripples":"Pool area: ripples + reflections","luxury-promo-grade":"Luxury promo grade"},UF={"trick-video-editor-style":"תנועת מצלמה אחת + חיים קטנים","trick-reduce-complexity":'פחות פרטים, יותר "keep everything the same"',"trick-camera-locked":"תנועות גדולות גורמות ל-warping","trick-architectural-still-alive":"כמעט סטילס אבל חי - יוקרתי ויציב","trick-light-mood-shift":"יום→זהוב/ערב - שינוי תאורה בלבד","trick-real-estate-gimbal":"Push-in עדין + חשיפה יציבה","keep-room-same-gentle-zoom":"זום איטי עם תנועות עדינות","lock-camera-daylight-only":"רק תאורת יום טבעית","slow-pan-keep-walls-straight":"פאן קטן עם שמירה על קווים ישרים","gimbal-push-premium":"תחושה שיווקית יוקרתית","no-camera-warm-lamps":"הדלקת מנורות חמות","rack-focus-foreground-sofa":"מעבר מיקוד מחזית לרקע","minimal-handheld-micro":"תנועת מצלמה עדינה מאוד","kitchen-steam-specular":"אדים והארות במטבח","bathroom-steam-reflections":"אדים והשתקפויות בחדר רחצה","bedroom-morning-light":"אור בוקר ווילון בחדר שינה","lived-in-book-curtain":"תחושה של מקום מחיה","lifestyle-coffee-tv":"חיים יומיומיים","cleaning-reveal-dust":"חשיפת ניקיון","material-showcase-wood-stone":"הדגשת חומרים","golden-hour-glow":"שעת זהב","night-luxury-practical-lights":"יוקרתי לילי","calm-breeze-plants-curtains":"רוח עדינה","architectural-hero-still":"גיבור אדריכלי","aerial-gentle-zoom-stable":"תחושה אווירית","slow-orbit-building":"קשת איטית סביב בניין","blue-hour-path-lights":"שעת כחול","after-rain-wet-reflections":"אחרי גשם","courtyard-life-distant":"חיים בחצר","pool-area-ripples":"אזור בריכה","luxury-promo-grade":"גרדינג שיווקי יוקרתי"},qF={title:iF,subtitle:oF,searchPlaceholder:rF,prompts:nF,fillIn:sF,copyPrompt:lF,copy:cF,copied:dF,quickReference:uF,aspectRatios:mF,cameraSettings:pF,goldenRule:hF,aiNote:gF,cta:fF,categories:bF,errors:vF,promptTitles:yF,promptDescriptions:xF,userInputDescriptions:wF,aspectRatioDescriptions:kF,cameraSettingDescriptions:_F,videoGuide:SF,videoCategories:CF,videoPromptTitles:TF,videoPromptDescriptions:jF,gptImageGuide:NF,gptImageCategories:PF,gptImagePromptTitles:AF,gptImagePromptDescriptions:EF,veoGuide:IF,veoCategories:DF,veoPromptTitles:RF,veoPromptDescriptions:LF,soraGuide:OF,soraCategories:MF,soraPromptTitles:zF,soraPromptDescriptions:BF,grokGuide:FF,grokCategories:$F,grokPromptTitles:VF,grokPromptDescriptions:UF},GF="חיוב וטוקנים",WF="נהל את המנוי שלך ורכוש טוקנים",HF={title:"מנוי {{plan}} פעיל",cancellingTitle:"מנוי {{plan}} — מבוטל",memberSince:"חבר מאז:",nextPayment:"תשלום הבא:",accessUntil:"גישה עד:",lastPayment:"תשלום אחרון:",noBillingNotice:"לא יחויב חיוב נוסף.",manage:"נהל מנוי",cancel:"ביטול מנוי",resubscribe:"הירשם מחדש",cancelConfirmTitle:"לבטל את המנוי?",cancelConfirmDescription:"המנוי יסתיים בסוף תקופת החיוב הנוכחית. תמשיך לקבל גישה עד אז.",cancelConfirmNo:"לא לבטל",cancelConfirmYes:"כן, לבטל מנוי",pausedT
604itle:"מנוי {{plan}} — מוקפא",pause:"הקפאת מנוי",resume:"חידוש המנוי",resumeFirstNotice:"כדי להחליף חבילה צריך קודם לחדש את המנוי.",frozenNotice:"המנוי מוקפא — לא תחויב. הטוקנים שנשארו לך נשמרים ואפשר להשתמש בהם.",frozenCardSaved:"פרטי התשלום שמורים — חידוש בלחיצה אחת.",pauseConfirmTitle:"להקפיא את המנוי?",pauseConfirmDescription:"החיוב נעצר ואתה לא משלם כלום, אבל המנוי נשאר שמור ואפשר לחדש בכל רגע.",pauseConfirmBullet1:"הגישה המלאה נשמרת עד סוף התקופה ששילמת עליה ({{date}})",pauseConfirmBullet1NoDate:"הגישה המלאה נשמרת עד סוף התקופה ששילמת עליה",pauseConfirmBullet2:"הטוקנים שנשארו לך נשמרים ותוכל להשתמש בהם גם בהקפאה",pauseConfirmBullet3:"אחרי כן החשבון עובר להתנהגות של חשבון חינמי (בורדסטיילר מוגבל, ללא ייצוא)",pauseConfirmBullet4:"פרטי האשראי נשארים שמורים — חידוש בלחיצה אחת, בלי למלא שוב",pauseConfirmNo:"לא, השאר פעיל",pauseConfirmYes:"כן, הקפא את המנוי",pauseInsteadHint:"לא רוצה לוותר לגמרי? אפשר פשוט להקפיא את המנוי ולחדש כשתרצה.",pauseInstead:"הקפא במקום",resumeConfirmTitle:"לחדש את המנוי?",resumeConfirmDescription:"הכרטיס השמור יחויב עכשיו והטוקנים החודשיים יתווספו מיד.",resumeConfirmNo:"עוד לא",resumeConfirmYes:"כן, חדש עכשיו",pausedToastTitle:"המנוי הוקפא",pausedToastDescription:"לא תחויב יותר. אפשר לחדש בכל רגע מעמוד החיובים.",resumedToastTitle:"המנוי חודש! 🎉",resumedToastDescription:"הטוקנים החודשיים יתווספו ליתרה שלך תוך רגע.",pauseErrors:{NOT_SUBSCRIBED:"לא נמצא מנוי פעיל להקפאה.",CANCEL_PENDING:"המנוי כבר בתהליך ביטול. בטל קודם את הביטול ואז אפשר להקפיא.",NOT_PAUSED:"המנוי אינו מוקפא.",NO_PAYMENT_METHOD:"לא נמצא אמצעי תשלום שמור. פנה לתמיכה ונעזור לך לחדש.",UNAVAILABLE:"שירות ההקפאה אינו זמין כרגע. לא בוצע שום שינוי במנוי ולא חויבת. נסה שוב בעוד מספר דקות או פנה לתמיכה ונטפל בזה עבורך.",GENERIC:"משהו השתבש. נסה שוב או פנה לתמיכה."}},KF={info:"ניתן לשדרג או לשנמך את התוכנית בכל עת. החיוב יותאם בהתאם, וטוקנים שלא נוצלו יישמרו."},YF={title:"תוכניות טוקנים חודשיות",badges:{allFeatures:"כל הפיצ'רים ללא הגבלה",tokensNeverExpire:"טוקנים לא פגים",buyMore:"יותר טוקנים = מחיר טוב יותר"},description:"כמו פארק שעשועים! כל התוכניות נותנות גישה לכל הפיצ'רים. ההבדל היחיד הוא מחיר הטוקן - קנה יותר טוקנים בחודש לערך טוב יותר."},QF={title:"חבילות טוקנים חד-פעמיות",description:"נגמרו הטוקנים באמצע החודש? - רכוש טוקנים פעם אחת והשתמש בהם לנצח. אותן תכונות, אותה גישה, רק תשלום לפי שימוש.",subscribersOnly:"*רכישה חד פעמית למנויים בלבד!"},JF={currentPlan:"התוכנית הנוכחית",mostPopular:"הכי פופולרי",bestValue:"הכי משתלם",subscribeNow:"הירשם עכשיו",switchToPlan:"עבור לתוכנית זו",processing:"מעבד...",perMonth:"/חודש",tokensPerMonth:"טוקנים/חודש",perToken:"לטוקן",whatYouCanDo:"מה אפשר לעשות עם {{tokens}} טוקנים?",features:{allFeatures:"גישה לכל הפיצ'רים",rollover:"טוקנים מועברים בין חודשים",cancelAnytime:"בטל בכל עת"},usage:{imageEditing:"עריכת תמונות + סקיצה לריאליסטי",complexEditing:"עריכה מורכבת ושילוב תמונות",videosWithSound:"סרטונים עם צליל",interiorPresentations:"מצגות עיצוב פנים",models3d:"מודלים תלת מימדיים",upscale:"הגדלת איכות: חינם, ללא הגבלה",removeBg:"הסרת רקע: חינם, ללא הגבלה"}},XF={title:"מערכת טוקנים גמישה",description:"כל הטוקנים נשמרים ולא פגים. בטל את המנוי בכל עת ושמור את כל הטוקנים שלא נוצלו. שדרג או שנמך תוכניות בלי לאבד כלום. ללא עמלות נסתרות, ללא הפתעות."},ZF={title:"יש לך קופון?",placeholder:"הזן קוד קופון",apply:"החל",applying:"בודק...",applied:"הקופון הופעל!",discount:"{{discount}}% הנחה",save:"חוסך ${{amount}} בחודש הראשון",firstMonth:"חודש ראשון",thenRegular:"לאחר מכן ${{price}}/חודש",invalid:"קוד קופון לא תקף או פג תוקף",newPrice:"מחיר חדש:"},e8="תשלומים מאובטחים באמצעות Stripe",t8={title:"כבר רשום",description:"יש לך כבר מנוי {{plan}} פעיל.{{nextPayment}}"},a8="יש לך כרגע תוכנית {{current}}. האם ברצונך לעבור ל-{{new}}? זה יחליף את המנוי הנוכחי שלך.",i8={upgradeTitle:"שדרוג ל-{{plan}}",upgradeDescription:"תחויב עכשיו ב-${{price}} והתוכנית מתעדכנת מיידית.",upgradeBullet1:"חיוב מיידי של ${{price}} (מחיר מלא, ללא קופונים)",upgradeBullet2:"{{tokens}} טוקנים נוספים מיד ליתרה הקיימת שלך",upgradeBullet3:"החיוב הבא בעוד חודש בדיוק — המנוי הקודם נסגר, בלי חיוב כפול",upgradeConfirm:"כן, שדרג ל-{{plan}}",downgradeTitle:"מעבר ל-{{plan}} בסוף התקופה",downgradeDescription:"התוכנית תרד ל-{{plan}} בסוף התקופה הנוכחית ({{date}}). עד אז הכל נשאר כרגיל.",downgradeBullet1:"אין חיוב עכשיו — אתה ממשיך ליהנות מהתוכנית הנוכחית עד {{date}}",downgradeBullet2:"מ-{{date}}: ${{price}} לחודש, {{tokens}} טוקנים בכל חידוש",downgradeBullet3:"אפשר לבטל את השינמוך בכל רגע עד אז",downgradeConfirm:"כן, עבור ל-{{plan}} בסוף התקופה",upgradeSuccessTitle:"שודרג בהצלחה! 🎉",upgradeSuccessDescription:"התוכנית עודכנה ל-{{plan}}. {{tokens}} טוקנים יתווספו ליתרה שלך תוך רגע.",downgradeSuccessTitle:"השינמוך תוזמן",downgradeSuccessDescription:"התוכנית תעבור ל-{{plan}} ב-{{date}}.",cancelDowngradeSuccess:"השינמוך המתוזמן בוטל — המנוי ממשיך כרגיל.",pendingDowngrade:"מתוזמן מעבר ל-{{plan}} ב-{{date}}",cancelDowngrade:"בטל שינמוך",errorTitle:"שינוי התוכנית נכשל",errors:{NO_PAYMENT_METHOD:"לא נמצא אמצעי תשלום שמור. פנה לתמיכה ונעזור לך לשדרג.",PAYMENT_FAILED:"החיוב נכשל. בדוק את אמצעי התשלום ונסה שוב.",CARD_AUTH_REQUIRED:"הכרטיס דורש אימות נוסף. פנה לתמיכה ונשלים את השדרוג יחד.",MULTIPLE_SUBSCRIPTIONS:"נמצאו כמה מנויים פעילים בחשבון. פנה לתמיכה ונטפל בזה מיד.",NOT_SUBSCRIBED:"לא נמצא מנוי פעיל. ניתן להירשם לתוכנית מעמוד החיובים.",PAYMENT_ISSUE:"יש בעיית תשלום במנוי הנוכחי. יש להסדיר את התשלום לפני שינוי תוכנית.",CANCEL_PENDING:"המנוי כבר מבוטל בסוף התקופה. בטל קודם את הביטול כדי לשנמך.",DOWNGRADE_ALREADY_SCHEDULED:"כבר קיים שינמוך מתוזמן למנוי הזה.",ALREADY_ON_PLAN:"אתה כבר בתוכנית הזו.",GENERIC:"משהו השתבש. נסה שוב או פנה לתמיכה."}},o8={verifying:"מאמת תשלום...",pleaseWait:"אנא המתן בזמן שאנחנו מאשרים את התשלום",success:"התשלום הצליח!",tokensAdded:"הטוקנים נוספו לחשבון שלך",plan:"תוכנית",tokensAddedLabel:"טוקנים שנוספו",subscriptionActive:"המנוי שלך פעיל כעת! תקבל {{tokens}} טוקנים מדי חודש.",oneTimeComplete:"רכישת הטוקנים הושלמה. הטוקנים לא פגים לעולם!",goToDashboard:"לדשבורד",viewBilling:"צפה בחיובים"}
604,r8={invalidPayment:"תשלום לא תקין",noSession:"לא נמצא סשן תשלום. מעביר להגדרות.",successTitle:"התשלום הצליח! 🎉",successDescription:"{{tokens}} טוקנים נוספו לחשבון שלך.",verificationError:"שגיאת אימות",verificationFailed:"אימות התשלום נכשל. אנא צור קשר עם התמיכה אם הטוקנים לא נוספו."},n8={title:GF,subtitle:WF,activeSubscription:HF,switchPlans:KF,monthlyPlans:YF,oneTime:QF,plan:JF,package:{tokens:"טוקנים",buyOnce:"קנה פעם אחת",features:{oneTime:"תשלום חד פעמי",neverExpire:"טוקנים לא פגים",noSubscription:"ללא מנוי"}},flexible:XF,coupon:ZF,secure:e8,alreadySubscribed:t8,confirmSwitch:a8,planChange:i8,paymentSuccess:o8,toasts:r8},s8={heading:"העלו תמונה",body:"לחצו על ה + כדי להעלות תמונה"},l8={heading:"תארו את הבקשה שלכם",body:"בחלון השיחה, הקלידו את השינוי שברצונכם לבצע, או בחרו מהתבניות למטה 👇"},c8={heading:"שלחו ליצירה",body:"לחצו כאן והקסם יתחיל! תועברו לקנבס שלנו, שם ה-AI ייצור לכם את העיצוב תוך שניות!"},d8="שלב {{current}} מתוך {{total}}",u8="דלג",m8="הבא",p8="סיום",h8={step1:s8,step2:l8,step3:c8,progress:d8,skip:u8,next:m8,finish:p8},g8="הוסרת בהצלחה",f8="הוסרת בהצלחה מרשימת התפוצה של Boardspace. לא תקבל/י יותר מיילים שיווקיים מאיתנו.",b8="חזרה לאתר",v8={title:g8,message:f8,backToSite:b8},y8={title:"Order Professional AI Work",subtitle:"Expert creators using Boardspace tools to create amazing content for you",filters:{all:"All",video:"Video",render:"Render",moodboard:"Moodboard",floor_plan:"Floor Plan"},noResults:"No creators found in this category",fromPrice:"From "},x8={all:"All",render:"Renders",video:"Video",moodboard:"Moodboard",floor_plan:"Floor Plans",general:"General",sketches:"Sketches",images:"Images"},w8={verified:"Verified",orders:"Orders",rating:"Rating",tabs:{services:"Services",portfolio:"Portfolio",reviews:"Reviews"},deliveryDays:"Delivery days",revisions:"Revisions",orderNow:"Order Now",noReviews:"No reviews yet",noPortfolio:"No portfolio items yet"},k8={title:"Order",brief:"Project description",briefPlaceholder:"Describe your project in detail...",attachments:"Attachments",attachmentsHint:"Upload relevant files (images, documents)",proceedToPayment:"Proceed to Payment",price:"Price",delivery:"Delivery",days:"days",status:{pending_payment:"Pending Payment",paid:"Paid",in_progress:"In Progress",delivered:"Delivered",revision_requested:"Revision Requested",completed:"Completed",disputed:"Disputed",cancelled:"Cancelled",refunded:"Refunded"},actions:{startWork:"Start Work",deliver:"Deliver Work",acceptDelivery:"Accept Delivery",requestRevision:"Request Revision",cancel:"Cancel Order",leaveReview:"Leave Review"},chat:{placeholder:"Write a message...",send:"Send",systemMessage:"System message"},success:{title:"Order placed successfully!",subtitle:"The creator will be notified and will start working soon",viewOrder:"View Order",backToCreators:"Back to Creators"},deliverySection:{title:"Delivery",uploadDelivery:"Upload delivery files",deliveryNote:"Delivery note",submitDelivery:"Submit Delivery"}},_8={title:"My Messages",noMessages:"No messages yet",unread:"unread"},S8={title:"Register as a Creator",subtitle:"Join the platform and sell your AI services",requireSubscription:"To register as a creator, you need to upgrade to a paid plan",upgrade:"Upgrade Now",form:{displayName:"Full Name (private)",displayNameHint:"Your name won't be shown publicly",nickname:"Nickname",nicknameHint:"This 
604nickname will be shown instead of your real name",nicknamePlaceholder:"Choose a unique nickname (or leave empty for auto-generated)",bio:"About",bioPlaceholder:"Tell us about yourself and your expertise (up to 300 characters)",avatar:"Profile Photo",portfolio:"Work Samples",portfolioHint:"Upload up to 6 images or videos",submit:"Submit Application",submitting:"Submitting..."},success:{title:"Application received!",subtitle:"We'll get back to you soon"}},C8={title:"Creator Dashboard",stats:{activeOrders:"Active Orders",completedOrders:"Completed Orders",totalEarnings:"Earnings (after commission)",avgRating:"Average Rating"},services:{title:"My Services",addNew:"Add New Service",edit:"Edit",toggle:"Toggle"},serviceForm:{title:"Service",category:"Category",description:"Description",price:"Price ($)",deliveryDays:"Delivery Days",revisions:"Number of Revisions",requirements:"Client Requirements",examples:"Examples (up to 4 files)",save:"Save",cancel:"Cancel"}},T8={marketplace:y8,categories:x8,profile:w8,order:k8,messages:_8,register:S8,dashboard:C8},j8={title:"הזמן עבודת AI מקצועית",subtitle:"קריאייטורים מומחים שמשתמשים בכלים של Boardspace כדי ליצור תוכן מדהים עבורך",filters:{all:"הכל",video:"וידאו",render:"רנדר",moodboard:"מודבורד",floor_plan:"תוכנית קומה"},noResults:"לא נמצאו קריאייטורים בקטגוריה זו",fromPrice:"החל מ-"},N8={all:"הכל",render:"רנדרים",video:"וידאו",moodboard:"מודבורד",floor_plan:"תוכניות קומה",general:"כללי",sketches:"סקיצות",images:"תמונות"},P8={verified:"מאומת",orders:"הזמנות",rating:"דירוג",tabs:{services:"שירותים",portfolio:"תיק עבודות",reviews:"ביקורות"},deliveryDays:"ימי אספקה",revisions:"ריביזיות",orderNow:"הזמן עכשיו",noReviews:"אין ביקורות עדיין",noPortfolio:"אין עבודות בתיק עדיין"},A8={title:"הזמנה",brief:"תיאור הפרויקט",briefPlaceholder:"תאר את הפרויקט שלך בפירוט...",attachments:"קבצים מצורפים",attachmentsHint:"העלה קבצים רלוונטיים (תמונות, מסמכים)",proceedToPayment:"המשך לתשלום",price:"מחיר",delivery:"אספקה",days:"ימים",status:{pending_payment:"ממתין לתשלום",paid:"שולם",in_progress:"בעבודה",delivered:"נמסר",revision_requested:"ביקורת מבוקשת",completed:"הושלם",disputed:"מחלוקת",cancelled:"בוטל",refunded:"הוחזר"},actions:{startWork:"התחל עבודה",deliver:"מסור עבודה",acceptDelivery:"אשר קבלה",requestRevision:"בקש ריביזיה",cancel:"בטל הזמנה",leaveReview:"השאר ביקורת"},chat:{placeholder:"כתוב הודעה...",send:"שלח",systemMessage:"הודעת מערכת"},success:{title:"ההזמנה בוצעה בהצלחה!",subtitle:"הקריאייטור יקבל הודעה ויתחיל לעבוד בקרוב",viewOrder:"צפה בהזמנה",backToCreators:"חזרה לקריאייטורים"},deliverySection:{title:"משלוח",uploadDelivery:"העלה קבצי משלוח",deliveryNote:"הערה למשלוח",submitDelivery:"שלח משלוח"}},E8={title:"ההודעות שלי",noMessages:"אין הודעות עדיין",unread:"לא נקראו"},I8={title:"הירשם כקריאייטור",subtitle:"הצטרף לפלטפורמה ומכור את שירותי ה-AI שלך",requireSubscription:"כדי להירשם כקריאייטור, יש לשדרג למנוי",upgrade:"שדרג עכשיו",form:{displayName:"שם מלא (פרטי)",displayNameHint:"השם שלך לא יוצג בפומבי",nickname:"כינוי",nicknameHint:"הכינוי יוצג במקום השם האמיתי שלך",nicknamePlaceholder:"בחר כינוי ייחודי (או השאר ריק לכינוי אוטומטי)",bio:"אודות",bioPlaceholder:"ספר על עצמך ועל ההתמחות שלך (עד 300 תווים)",avatar:"תמונת פרופיל",portfolio:"דוגמאות עבודה",portfolioHint:"העלה עד 6 תמונות או סרטונים",submit:"שלח בקשה",submitting:"שולח..."},success:{title:"קיבלנו את בקשתך!",subtitle:"נחזור אליך בקרוב"}}
604,D8={title:"לוח בקרה קריאייטור",stats:{activeOrders:"הזמנות פעילות",completedOrders:"הזמנות שהושלמו",totalEarnings:"הכנסות (אחרי עמלה)",avgRating:"דירוג ממוצע"},services:{title:"השירותים שלי",addNew:"הוסף שירות חדש",edit:"ערוך",toggle:"הפעל/כבה"},serviceForm:{title:"שירות",category:"קטגוריה",description:"תיאור",price:"מחיר ($)",deliveryDays:"ימי אספקה",revisions:"מספר ריביזיות",requirements:"דרישות מהלקוח",examples:"דוגמאות (עד 4 קבצים)",save:"שמור",cancel:"ביטול"}},R8={marketplace:j8,categories:N8,profile:P8,order:A8,messages:E8,register:I8,dashboard:D8},L8={studioTitle:"Kling Video Studio",desktopOnly:"The studio is available on tablet and desktop",minScreenWidth:"Minimum screen width: 768px",defaultProjectName:"Kling 3.0 Project"},O8={darkModeTitle:"Light mode",lightModeTitle:"Dark mode",grokSubtitle:"Up to 7 images",grok15Subtitle:"1080p · up to 7 images · 5-15s",geminiOmniSubtitle:"1080p · up to 7 images",generating:"Generating...",sendToGenerate:"Generate",balance:"Balance",videoEditor:"Video editor",videoEditorNew:"New"},M8={home:"Home",videos:"Videos",frames:"Frames",characters:"Characters",boardCut:"Video editor",clearCanvas:"Clear canvas",resetScreen:"Reset screen"},z8={defaults:{projectName:"New video",headline:"Main headline",lowerThird:"Lower third",credits:"Credits",newText:"New text",caption:"Caption",cta:"Talk to us"},overlay:{selectAudio:"Choose an audio file",musicAdded:"Music added 🎵",musicLoadFailed:"Failed to load the music",selectVideo:"Choose a video file",selectVideoOrImage:"Choose a video or image file",oneVideoAdded:"Video added to the timeline",oneImageAdded:"Image added to the timeline",manyVideosAdded:"{{count}} videos added to the timeline",manyClipsAdded:"{{count}} clips added to the timeline",videoLoadFailed:"Failed to load the media",selectMedia:"Choose a video, audio, or image file",mediaAdded:"Media added to the timeline",mediaLoadFailed:"Failed to load the media",backToDashboard:"Back to dashboard",backToStudio:"Back to studio",productLabel:"Video editor",projectName:"Project name",projectNamePlaceholder:"Enter a name",exportMp4:"Export MP4",undo:"Undo",redo:"Redo",saving:"Saving…",saveError:"Save failed",saved:"Saved",savedLocal:"Saved on this device only",logoAdded:"Logo / image added",logoFailed:"Failed to load the image",tabMedia:"Media",tabTools:"Tools",hideSidebar:"Hide panel",showSidebar:"Show panel",cloudHint:"Cloud save + Results — for paid users",closeBlockedRecording:"Stop or cancel the recording before leaving the editor"},empty:{videoOrAudioOnly:"Video or audio files only",videoAudioOrImage:"Video, audio, or image files only",loadFailed:"Failed to load files",videoLoadFailed:"Failed to load the video",seedCorsHint:"This clip may fail to export (CORS) — if export fails, upload a local file",seedFallback:"Video",eyebrow:"Board-Cut",title:"Let's make a video 🎬",subtitle:"Upload videos/images or record your screen — and start editing",uploadVideos:"Upload media",dragOrChoose:"Video · audio · image",dropHere:"Drop files here to upload",myCreations:"My creations",videoCount:"{{count}} videos",noneYet:"None yet",screenRecord:"Screen recording",screenRecordSub:"Screen + mic + camera circle",webcamBadge:"Camera"},timeline:{clearConfirm:"Clear the timeline and start over? All clips you uploaded will be removed from the editor. Make sure you have already exported the video to your computer — it is not stored here.",clearTitle:"Clear timeline — start a new project",clear:"Clear timeline",zoomOut:"Zoom out",zoomIn:"Zoom in",splitTitle:"Split at playhead (S)",cut:"Cut",videoEmpty:"Media track — drag video or image here",musicEmpty:"Music track 🎵",textEmpty:"Text track 🔤",splitAtPlayhead:"Split at playhead",splitNeedPlayhead:"Move the playhead into the clip, then split",deleteClip:"Delete clip",textFallback:"Text",pipEmpty:"Floating video track",pipLabel:"Floating video",overlayEmpty:"Logo / graphics track",zoomEmpty:"Zoom track",zoomLabel:"Zoom",resize:"Drag to resize the timeline"},tools:{title:"Tools",chooseGroup:"Choose a category — drag ≡ to reorder",groupEdit:"Edit & motion",groupEditHint:"Cut, zoom, and floating video",groupText:"Text & captions",groupTextHint:"Titles, automatic captions, and styling",groupAudio:"Audio & music",groupAudioHint:"Upload music and record a voiceover",groupElements:"Elements",groupElementsHint:"Creative library — shapes, frames, icons, and stickers",groupGraphics:"Graphics & brand",groupGraphicsHint:"Logos and brand kit",guideTitle:"Complete video editor guide",guideHint:"Every tool, step by step",guideBadge:"Important",guideAria:"Open the complete Board-Cut guide in a 
604new tab",groupNarration:"AI narration",groupNarrationHint:"Generate narration and clone your voice",cut:"Cut",text:"Text",addText:"Add text",captionsWorking:"Creating captions…",music:"Upload music",addMedia:"Add media",content:"Content",size:"Size",color:"Color",verticalPosition:"Vertical position ({{percent}}%)",bold:"Bold",headline:"Headline",lowerThird:"Lower third",credits:"Credits",volume:"Volume ({{percent}}%)",fitToVideo:"Fit to video length",videoClip:"Video clip",videoControls:"Video clip",videoControlsHint:"Speed, transition, look, and color",videoControlsEmpty:"Select or add a video clip to edit it",chooseVideoClip:"Choose clip",videoClipNumber:"Video clip {{number}}",speed:"Speed {{value}}",slower:"Slower 🐢",faster:"Faster 🚀",normalSpeed:"Normal speed",durationHint:"Duration: {{duration}}s · Drag the edge handles on the timeline",captions:"Captions",overlay:"Upload graphic",voiceover:"Record voiceover",voiceoverStop:"Stop voiceover",smartClips:"Smart clips",pip:"Floating video",zoom:"Zoom",zoomInspector:"Zoom",zoomPeak:"Zoom strength ({{n}}×)",zoomDuration:"Duration ({{n}}s)",zoomEaseIn:"Ease in ({{n}}%)",zoomEaseOut:"Ease out ({{n}}%)",zoomPickFocal:"Set focus point on preview",zoomPickCancel:"Cancel picking",zoomDragHint:"On the preview: drag the pink target — or click the frame — to aim where the zoom focuses",zoomFocalX:"Focus horizontal ({{n}}%)",zoomFocalY:"Focus vertical ({{n}}%)",zoomHint:"Zooms in, holds at peak, then zooms out — like CapCut. You can also drag the track on the timeline.",zoomAdded:"Zoom track added — drag the pink target on the preview",font:"Font",align:"Align",background:"Backgroun
604d",outline:"Outline",animIn:"Enter animation",animOut:"Exit animation",captionStyle:"Caption style",transition:"Transition",filter:"Filter",brightness:"Brightness",contrast:"Contrast",saturation:"Saturation",kenBurns:"Slow camera move",speedRamp:"Speed ramp",fadeIn:"Fade in ({{n}}s)",fadeOut:"Fade out ({{n}}s)",brandKit:"Brand kit",slowToFast:"Slow → fast",fastToSlow:"Fast → slow",overlayScale:"Scale",overlayOpacity:"Opacity",overlayRotation:"Rotation ({{deg}}°)",overlayTint:"Color",overlayX:"X ({{percent}}%)",overlayY:"Y ({{percent}}%)",overlayInspector:"Logo layer",stickerInspector:"Element",stickers:"Stickers",stickersTitle:"Sticker library",stickerAdded:"Sticker added",elementsTitle:"Elements",elementsHint:"Search and add shapes, frames, icons, and stickers to your edit",elementsSearch:"Search elements…",elementsClearSearch:"Clear search",elementsCount:"{{count}} elements",elementsEmpty:"No elements found",elementsEmptyHint:"Try another word or pick a different category",elementAdded:"Element added",elementsCatAll:"All",elementsCat:{shapes:"Shapes",lines:"Lines",frames:"Frames",icons:"Icons",stickers:"Stickers",arrows:"Arrows",badges:"Badges",decor:"Decor"},posX:"X position",posY:"Y position",horizontalPosition:"Horizontal position ({{percent}}%)",fillMode:"Fill",fillSolid:"Solid",fillGradient:"Gradient",gradientTo:"Gradient end color",bgStyle:"Background style",shadowPreset:"Shadow",cta:"CTA",quickLooks:"Quick looks",colorFilter:"Color filter",recordingVoice:"Recording… click to stop",startVoice:"Record voiceover",ttsTitle:"AI narration",tts:"Create narration",ttsPlaceholder:"Write text for narration…",ttsVoice:"Voice",ttsCost:"{{cost}} token",ttsNeedText:"Enter narration text",ttsPaid:"AI narration is available to subscribers only",ttsAdded:"Narration added to the track",ttsFailed:"AI narration failed — try again",ttsDesignPronunciation:"Interior-design pronunciation (marble, cladding…)",voiceCloneTitle:"Record your voice",voiceCloneCost:"{{cost}} tokens",voiceCloneHint:"Quiet room, mic close — read the script for about 30–60 seconds. Then pick “My voice” for narration.",voiceCloneStart:"Record your voice",voiceCloneReplace:"Re-record",voiceCloneStop:"Stop recording",voiceCloneUploading:"Uploading…",voiceCloneCreating:"Creating voice…",voiceCloneStatusReady:"Ready",voiceCloneMine:"My voice",voiceCloneReady:"Your voice is ready — select it for narration",voiceCloneFailed:"Voice creation failed — try again in a quiet room",voiceCloneProviderFailed:"Voice clone service failed — try again (clear recording, 30–60 seconds)",voiceCloneNoId:"Service did not return a voice id — try again",voiceClonePaid:"Voice recording is available to subscribers only",voiceCloneTooShort:"Record at least {{sec}} seconds",voiceCloneTooLong:"Up to {{sec}} seconds",voiceCloneDelete:"Delete",voiceCloneDeleted:"Your voice was deleted",voiceCloneDeleteFailed:"Could not delete your voice",voiceCloneNoTokens:"Not enough tokens to create a voice",voiceCloneTooLarge:"Recording is too large — try a shorter take",voiceCloneBadDuration:"Recording must be between 15 and 90 seconds",voiceCloneRejected:"Recording rejected — try again in a quiet room, mic close",voiceCloneQuota:"Voice-clone credits ran out — contact support or try again later",voiceCloneSlotLimit:"Voice slot limit reached — delete “My voice” and try again, or contact support",voiceCloneRateLimit:"Too many attempts — wait a moment and try again",voiceCloneConfig:"Voice clone service is unavailable right now",voiceCloneEmpty:"No valid recording received — try again",selectionHint:"Selected for editing — open only the settings you need",selected:"Selected",durationShort:"{{duration}}s",audioClip:"Audio clip",textClip:"Selected text",systemLogo:"System logo",myLogo:"My logo",brandAdded:"Logo added",overlayAdded:"Graphic added",overlayFailed:"Could not load the graphic",overlayImageOnly:"Choose an image file",smartClipsDone:"Smart clips created",smartClipsNeedSelection:"Upload a video to the timeline (or select a video clip)",smartClipsNeedVideo:"Smart clips work on video only, not still images",smartClipsTooShort:"Video is too short — try a clip of at least ~8 seconds",smartClipsFailed:"Could not create smart clips",smartClipsHint:"Needs a video on the timeline",pipAdded:"Floating video added",pipNeedVideo:"Add a video first",addAsPip:"Add as floating video",pipClip:"Floating video",pipX:"Horizontal position",pipY:"Vertical position",pipScale:"Size",captionPlain:"Plain",captionBox:"Box",captionWord:"Active word",captionHighlight:"Highlighted line",captionPreviewHint:"Preview",captionPreviewStart:"This is",captionPreviewActive:"your",captionPreviewEnd:"home",captionsDone:"Captions added",captionsNeedVideo:"Select narration, audio, or a video clip with speech",captionsNoMedia:"Could not find media for transcription",captionsPaid:"Automatic captions are available to subscribers only",captionsTooLarge:"The media file is too large for captions",captionsCors:"This media cannot be read for captions — upload a local file",captionsEmpty:"No speech was detected",captionsFailed:"Caption generation failed — try again",textStyle:"Design",textStyleHint:"Font, color, background, and caption style",position:"Position",positionHint:"Alignment and position in the frame",animation:"Animation",animationHint:"Enter and exit",fontFamily:"Font",alignStart:"Right",alignCenter:"Center",alignEnd:"Left",clearBackgroun
604d:"Clear",volumeTitle:"Volume",audioFades:"Fade in and out",audioFadesHint:"Gradual volume transitions",voiceoverAdded:"Voiceover added",voiceoverFailed:"Voice recording failed",micDenied:"Microphone access was denied",speedTitle:"Speed",moreOptions:"More options",speedRampFriendly:"Change speed across the clip",rampSlowFast:"Slow → fast",rampFastSlow:"Fast → slow",clearRamp:"Reset speed change",transitionOut:"Transition",transitionDur:"Transition duration ({{n}}s)",lookAndColor:"Look and color",moreLooks:"More looks",manualColor:"Manual adjustment",resetColor:"Reset adjustments",motionAndFrame:"Motion and framing",motionHint:"Camera movement and floating video",sizeAndPosition:"Size and position",colorAndOpacity:"Color and opacity",focusPoint:"Focus point",zoomTiming:"Strength and timing",ttsInsertFailed:"Narration was created but could not be added to the timeline",ttsVoiceInvalid:"Choose a valid narration voice",filterLabels:{none:"None",warm:"Warm",cinematic:"Cinematic",bright:"Bright",bw:"Black and white",vivid:"Vivid",soft:"Soft",cool:"Cool",vintage:"Vintage",noir:"Noir",tealOrange:"Teal and orange"},animLabels:{none:"None",fade:"Fade",slide:"Slide",slideUp:"Slide up",pop:"Pop",zoom:"Zoom",bounce:"Bounce",blur:"Soft blur",wipeLeft:"Wipe ←",wipeRight:"Wipe →"},shadowLabels:{none:"None",soft:"Soft",hard:"Hard",glow:"Glow"},bgLabels:{none:"None",box:"Box",pill:"Pill"},transitionLabels:{none:"None",fade:"Fade",dissolve:"Dissolve",wipe:"Wipe",zoom:"Zoom"},ttsVoices:{womanCalm:"Woman — calm",womanWarm:"Woman — warm",womanNarrator:"Woman — narrator",manTrustworthy:"Man — trustworthy",manDeep:"Man — deep",manAuthoritative:"Man — authoritative"},upgrade:"Upgrade",transitionHint:"The transition plays at the end of the clip. Choosing one jumps there so you can see it.",transitionPreview:"End-of-clip transition — playing now to show it",lookHint:"The look updates instantly in the preview — try B&W or Vivid.",kenBurnsOn:"Camera move on",kenBurnsHint:"Slow zoom and pan on the clip — turn it on and watch the preview.",kenBurnsPreview:"Camera move on — playing from the start",dragReorder:"Drag to reorder",rateLimited:"Too many requests — wait a moment and try again",secondsShort:"{{sec}}s"},preview:{empty:"Drag a clip to the timeline to begin 🎬",muteOriginalTitle:"Mute the video's original audio",muteOriginal:"Mute original audio",exportFrame:"Export frame",pause:"Pause",play:"Play",enhanceSpeech:"Enhance speech",enhanceSpeechTitle:"Clean up dialogue with a speech filter",pickFocal:"Click the focus point",dragFocal:"Drag the focus point · or click the frame",dragElement:"Drag to move the element · corners to resize",dragText:"Drag to move the text",scaleElement:"Drag a corner to resize"},export:{unsupported:"This browser does not support export (WebCodecs). Try desktop Chrome or Edge.",noVideo:"There is no video to export — add a clip to the timeline",finishing:"Finishing…",rendering:"Rendering…",ready:"Your video is ready! 🎉 The download has started",readyResults:"Your video is ready! Download + saved to Results 🎉",emptyTimeline:"The timeline is empty",unsupportedShort:"This browser does not support export",audioDropped:"Video exported without music/narration — check the audio file",corsTainted:"Cannot export external media without CORS — upload a local file or save to cloud first",mediaLoadFailed:"Failed to load media for export — check the files and try again",failed:"Export failed — try again",title:"Export MP4",keepOpen:"Keep this window open while rendering",aspect:"Aspect ratio — the video fills the frame (sides are cropped when ratios differ)",resolution:"Resolution",exportNow:"Export now",preset:"Publish target",thumbnail:"Preferred thumbnail (Results / preview)",saveResults:"Also save to Studio Results",saveResultsHint:"Local download is always free. This uploads the file to Results.",saveResultsLocked:"Saving to Results is available for paid users. ",upgrade:"Upgrade",uploadingResults:"Saving to Results…",resultsPaid:"Download succeeded. Saving to Results is available for paid users.",resultsFailed:"Download succeeded, but saving to Results failed",upsellResults:"Want the video saved in Studio Results too? Upgrade your plan",downloadOnlyHint:"The video downloads to your computer only — it is not saved in our cloud.",cancel:"Cancel export",cancelled:"Export cancelled",seekStalled:"The video is not responding to export — try refreshing the page or re-uploading the file",preparingAudio:"Preparing audio…",fourKHint:"4K is slower and needs a high-quality source. If the source is 1080 — there is no real quality gain.",fourKUnsupported:"This computer/browser cannot export at this resolution — try 1080p",subscribersOnly:"Downloading the video is available to subscribers only",subscribersOnlyHint:"Downloads are for subscribers only. Editing stays free — the download needs an active subscription."},coach:{recordTitle:"Record here",recordBody:"Record your screen (with mic) or upload clips from the media panel / your creations.",cutTitle:"Cut here",cutBody:"Move the playhead on the timeline and click the scissors (or S). You can also record the screen or drag from your creations.",captionsTitle:"Captions & text here",captionsBody:"Add titles, logos, and auto Hebrew captions from the captions button in Tools.",musicTitle:"Add music here",musicBody:"Pick from the music library or upload a track — adjust volume and fade.",exportTitle:"Export here",exportBody:"MP4 export always downloads locally. Saving to Studio Results is available for paid users.",ski
604p:"Skip",next:"Next",done:"Let's go 🎬"},recorder:{title:"Screen recording",hint:"Pick a screen or tab in the browser. Tick “Share tab audio” for system sound.",mic:"Microphone",systemAudio:"System / tab audio",webcam:"Camera in a circle",webcamHint:"A small circle of you appears in the corner — baked into the recording itself (not just the preview).",webcamDenied:"Couldn’t access the camera — continuing with screen recording only",micDenied:"Continuing without microphone",corner:"Bubble position",cornerTl:"Top left",cornerTr:"Top right",cornerBl:"Bottom left",cornerBr:"Bottom right",chromeNote:"Works best in Chrome / Edge",start:"Start recording",acquiring:"Choose what to record…",getReady:"Get ready…",livePreview:"Live view of what’s being recorded (view only)",previewHint:"This is how the recording looks — including the camera circle if enabled.",recording:"Recording…",processing:"Processing…",stop:"Stop",cancel:"Cancel",retake:"Record again",addToEdit:"Add to edit",cancelled:"Recording cancelled",failed:"Could not start recording",stopFailed:"Failed to stop recording",added:"Recording added to the editor 🎬",addFailed:"Failed to add to the timeline",longWarning:"Recording is nearing the limit — it will stop automatically in 5 minutes",maxReached:"Length limit reached — the recording was stopped and saved",liveError:"Recording error — stopping and saving what was captured",hiddenTabNotice:"While the editor tab is hidden, the bubble recording is saved at a reduced frame rate",webcamFpsHint:"Tip: keep the editor tab visible while recording — when hidden, the bubble frame rate drops."},media:{title:"Media",record:"Record",upload:"Upload",empty:"No media yet — drag files here or click Upload",onlyMedia:"Video, audio, or image files only",addedOne:"Added to media",addedMany:"{{count}} files added",loadFailed:"Failed to load media",sendToTimeline:"Send to timeline",delete:"Delete"},premium:{checking:"Checking your subscription…",checkFailed:"We couldn't verify your subscription. Retrying…"}}
604,B8={imageToVideo:"Image to video",multiShot:"Multi-shot"},F8={imageToVideo:"First / last frame",referenceToVideo:"Reference → video",videoEdit:"Video edit",styleTransfer:"Video reference"},$8={imageToVideo:"Image to video",firstLast:"First + last frame",ingredients:"Ingredients"},V8={title:"Smart Agent — Bordi",activeChat:"Active chat",settingsAndTips:"Settings & tips",creationSettings:"Creation settings",duration:"Duration",totalDuration:"Total duration",resolution:"Resolution",mode:"Mode",modeNormal:"Normal",modeFun:"Fun",aspectRatio:"Aspect ratio",model:"Model",quality:"Quality",qualityStd:"720p Standard",qualityPro:"1080p Pro",quality4K:"4K Ultra",seconds:"seconds",secondsSource:"seconds (source)",durationAutomatic:"~8 seconds (automatic)",aspectRatioAuto:"Auto",sound:"Sound",soundMultiShotNote:"(required for multi-shot)",keepOriginalSound:"Keep original sound",costForCreation:"Cost per creation",veoResolution:"Resolution",costVeoDetail:"{{resolution}} — {{tokens}} tokens",costGeminiOmniDetail:"{{seconds}}s · 1080p — {{tokens}} tokens",costGeminiOmniVideoDetail:"video→video · 1080p — {{tokens}} tokens",geminiOmniVideoDurationNote:"Length decided by the model · 40 tokens",costStdRate:"{{rate}}t/sec",costO1Formula:"{{rate}} t/s × {{seconds}}s = {{total}} tokens",costSeedance2Rate:"480p — 4 tokens/sec · 720p — 6 tokens/sec",describeYourIdea:"Describe your idea and I'll write you a prompt",writeScriptIdeas:"Write me ideas based on the frames you see",uploadHintGrok:"Upload at least one image to start",uploadHintGeminiOmni:"Upload at least one reference image to use Baker",uploadHintVeoIngredients:"Upload at least one reference image",uploadHintVeo:"Upload an image to a frame to start",uploadHintO1Video:"Upload a video to start",uploadHintO1ImageGuided:"Upload at least one reference image",uploadHintDefault:"Upload an image to a frame to start",tokens:"tokens",costSeedance25Rate:"480p — 6 tokens/s · 720p — 12 tokens/s",costSeedance25Detail:"{{rate}}t/s × {{seconds}}s = {{total}} tokens",costSeedance25DetailWithRef:"{{rate}}t/s × {{seconds}}s + {{refRate}}t/s × {{refSeconds}}s reference video = {{total}} tokens"},U8={conversation:"Chat",thinking:"Thinking...",placeholder:"Type here...",stopListeningTitle:"Click to stop",startListeningTitle:"Click to speak",speechNotSupported:"Browser doesn't support speech recognition. Try Chrome, Edge, or Safari.",manualModeHint:"Prompt will be entered directly — free",tokenCostHint:"0.5 tokens per message"},q8={title:"Prompt"},G8={title:"Shot",duration:"Duration",cameraPlaceholder:"Camera type",characterRef:"@Character"},W8={none:"None",panRight:"Pan right",panLeft:"Pan left",zoomIn:"Zoom in",zoomOut:"Zoom out",tracking:"Tracking",orbit:"Orbit"},H8={title:"Result",generatingText:"Generating...",resultWillAppear:"Result will appear here",statusWillAppear:"Creation status will appear here",oneVideoInProgress:"1 video in progress",multipleVideosInProgress:"{{count}} videos in progress",oneVideoReady:"1 video ready",multipleVideosReady:"{{count}} videos ready",inWorkLabel:"video in progress",readyLabel:"videos ready",openToolbarHintBefore:"Click",openToolbarHintAfter:"in the left toolbar to watch your videos",viewVideos:"View videos"},K8={title:"Start image",required:"Required",altText:"Start image",dropzoneText:"Upload the image to start from",dropzoneHint:"Drag or click"},Y8={title:"End image",optional:"(Optional)",altText:"End image",dropzoneText:"Add an end image for motion control",dropzoneHint:"Drag or click"},Q8={title:"Source image",required:"Required",altText:"Source image",dropzoneText:"Upload a source image for all shots",dropzoneHint:"Drag or click"},J8={title:"Upload video",required:"Required",dropzoneText:"Upload a video file"},X8={title:"Reference images",emptyHint:"Add reference images to guide the style"},Z8={title:"Images",emptyHint:"Upload up to 7 images for video generation"},e7={label:"Add shot"},t7={title:"Character / Object",namePlaceholder:"Character name",descriptionPlaceholder:"Short description (required) — e.g. woman in a white shirt",addButton:"Character / Object"},a7={title:"Characters / Objects",emptyHint:"Add characters or objects that will appear in the video.",emptyHintSub:"Use @name in each shot's prompt.",addButton:"Add character / object",namePlaceholder:"Name (English, e.g.: cat_1)"},i7={title:"Videos",resultsCount:"{{count}} results",generatingSingle:"Generating...",generatingMultiple:"Generating {{count}} videos...",emptyState:"Videos you generate will appear here",deleteConfirm:"Delete the video? This action cannot be undone.",deleteError:"Error deleting video",deleteSuccess:"Video deleted",defaultVideoLabel:"Video",expandTitle:"Extend video",downloadTitle:"Download",deleteTitle:"Delete",sendToAssetsMenuItem:"Send to My Assets",sendToAssetsSuccess:"Video saved to your assets",sendToAssetsError:"Error saving to assets",sendToAssetsInProgress:"Saving..."},o7={modelLabel:"Model:",promptLabel:"Prompt",copyPromptTitle:"Copy prompt",copied:"Copied",copy:"Copy",copyPrompt:"Copy prompt",expandVideo:"Extend video",download:"Download"},r7={title:"Recent results",emptyState:"Results will appear here after the first generation",defaultVideoLabel:"Video",downloadButton:"Download"},n7={title:"Video extension",titleGrok:"Video extension - Grok",titleVeo:"Video extension - Veo",segments:"{{count}} segments",shrinkTitle:"Shrink",expandTitle:"Expand",exitEditingTitle:"Finish editing",noVideo:"No video",segmentOf:"Segment {{current}}/{{total}}",maxSegmentsReached:"Reached maximum {{max}} segments ({{minutes}} minutes)",totalLabel:"Total:",exitEditing:"Finish editing",durationSeconds:"{{count}} seconds",durationMinutes:"{{minutes}}:{{seconds}} minutes"},s7={placeholder:"Describe the continuation of the video...",writeNextForMe:"Write me a continuation",extending:"Extending...",addSeconds:"Add {{count}} seconds",keyboardHint:"Cmd+Enter for quick extension"},l7={title:"Timeline",segmentsCount:"{{count}}/{{max}} segments",segmentTitle:"Segment {{index}}: {{duration}}s",addSegmentTitle:"Add segment"},c7={pickTitle:"Select images",browseTitle:"Frames",selectedCount:"{{count}}/{{max}} selected",imageCount:"{{count}} images",newFolderTitle:"New folder",uploadTitle:"Upload images",folderNamePlaceholder:"Folder name",breadcrumbRoot:"Frames",clickToRename:"Click to rename",folderItemCount:"{{count}}
604 frames",sendToStartTitle:"Send to start frame",sendToEndTitle:"Send to end frame",sendToStart:"Send to start frame",sendToEnd:"Send to end frame",sendToCharacters:"Send to Characters",sendToCharactersSuccess:"Moved to Characters",sendToCharactersError:"Failed to move to Characters",rename:"Rename",moveToFolder:"Move to folder",rootFolder:"Root (Frames)",delete:"Delete",deleteFolder:"Delete folder",emptyPickState:"No images yet",emptyPickHint:"Upload images to select",emptyBrowseState:"Upload images to frames",emptyBrowseHint:"Drag to frames or right-click",uploadButton:"Upload images",emptyFolder:"Folder is empty",emptyFolderHint:"Drag images here",sendImages:"Send {{count}} images",uploadMore:"Upload more"},d7={pickTitle:"Select characters",browseTitle:"Characters",selectedCount:"{{count}}/{{max}} selected",characterCount:"{{count}} characters",newFolderTitle:"New folder",addCharacterTitle:"Add character",folderNamePlaceholder:"Folder name",breadcrumbRoot:"Characters",clickToRename:"Click to rename",folderItemCount:"{{count}} characters",sendToFrames:"Send to Frames",sendToFramesSuccess:"Moved to Frames",sendToFramesError:"Failed to move to Frames",rename:"Rename",moveToFolder:"Move to folder",rootFolder:"Root (Characters)",delete:"Delete",deleteFolder:"Delete folder",emptyPickState:"No characters yet",emptyPickHint:"Upload images to select",emptyBrowseState:"Save characters for reuse",emptyBrowseHint:"Upload images of recurring characters",emptyFolder:"Folder is empty",emptyFolderHint:"Drag characters here",addCharacterButton:"Add character",sendCharacters:"Send {{count}} characters",addMore:"Add more"},u7={actionSetPrompt:"Updated the prompt",actionUpdateElement:"Updated element",actionRemoveElement:"Removed element",actionUpdateShot:"Updated shot",actionSetQuality:"Changed quality",actionSetSound:"Changed sound",actionSetDuration:"Changed duration",actionSetAspectRatio:"Changed aspect ratio",loginRequired:"Login required to use the assistant",communicationError:"Communication error with the assistant",unexpectedError:"Unexpected error",insufficientTokens:"Insufficient tokens. Required: {{required}}, Balance: {{current}}",explainFirstInstruction:"Tell me what you want to see in the video — camera movement, atmosphere, lighting, or any other idea. I'll analyze the images and write a tailored prompt for you.",greetingWritePrompt:"Give me a moment to analyze the images...",greetingImprovePrompt:"Give me a moment to check the prompt...",greetingRecommendSettings:"Checking the settings...",qualityProLabel:"1080p Pro",qualityStdLabel:"720p Standard",soundOn:"Enabled",soundOff:"Disabled",changedModel:"Changed model:",defaultElementName:"Element"},m7={smartAssistantError:"Smart assistant error",enterPromptOrUploadImage:"Enter a prompt or upload at least one image",uploadAtLeastOneImage:"Please upload at least one image",uploadStartImage:"Please upload a start image",ingredientsFastOnly:"Ingredients mode is only available with Fast model",uploadAtLeastOneRef:"Please upload at least one reference image",cannotCombineEndWithRef:"Cannot combine end image with reference images",uploadVideoFile:"Please upload a video file",videoTooLarge:"Video file is too large ({{actual}}MB). Maximum size is {{max}}MB — try a shorter or compressed clip.",videoUploadFailed:"Video upload failed",videoDurationInvalid:"Video must be between {{min}} and {{max}} seconds (yours is {{actual}}s). Trim it to a clip of up to {{max}}
604 seconds and try again.",videoResolutionTooLow:"Video resolution is too low ({{actual}}px). At least {{min}}px on the shorter side is required.",videoUnreadable:"Couldn't read the video file. Make sure it's a valid MP4 or MOV.",uploadSourceImage:"Please upload a source image",addAtLeastOneShot:"Please add at least one shot",fillAllShotPrompts:"Please fill in prompts for all shots",loginToCreateVideo:"Login required to create a video",videoSentForPreparation:"Video sent for preparation! Due to load and queue, it may take up to 15 minutes",videoSentForPreparationShort:"Video sent for preparation! It may take up to 5 minutes",insufficientTokens:"Insufficient tokens. Required: {{required}}, Balance: {{current}}",videoCreationError:"Error creating video",videoReady:"Video is ready!",videoReadyToast:{title:"Your video is ready!",titlePlural:"{{count}} videos are ready!",cta:"Watch video",dismiss:"Dismiss"},videoCreationFailed:"Video creation failed",videoCreationTimeout:"Video creation timed out",unexpectedServerResponse:"Unexpected response from server",noServerResponse:"The request didn't reach the server — you were not charged. Please try again.",unexpectedVideoError:"Unexpected error creating video",loginToExtendVideo:"Login required to extend video",openExtendModeFirst:"Please open extend mode first",enterExtendDescription:"Please enter a description for the video continuation",missingSegmentId:"Missing ID for previous segment",extendError:"Error extending video",extendReady:"Extension is ready!",extendInProgress:"Extension is being prepared...",extendFailed:"Extension failed",extendTimeout:"Extension failed - timeout",unexpectedExtendError:"Unexpected error extending video",elementsMissingImages:"Elements {{names}} need at least 2 images each. Add images before generating.",noElementName:"(unnamed)",elementNeedsDescription:'Element "{{name}}" has no description. Add a short description on its card (for example: woman in a white shirt) before generating.',promptRefsNoElements:"Prompt references elements (@name) but no elements are defined. Add an element with images.",elementUploadFailed:"Element image upload failed. Check that each element has at least 2 images.",imageUploadFailed:"Image upload failed",unsupportedImageFormat:"One of the images is in a format this model does not support (only JPG/PNG). Replace it and try again — no tokens were charged."},p7={referenceVideo:{title:"Reference video",addVideo:"Add video",hint:"One video (up to 30s) for video-to-video. The model decides the output length · 40 tokens"}},h7={modelName:"Seedance 2",workflowLabel:"Generation mode",workflows:{t2v:"Text to Video",firstFrame:"From Image",firstLast:"First & Last",multimodalRef:"References"},workflowDescriptions:{t2v:"Generate video from text only — no images",firstFrame:"Animate from a single starting image",firstLast:"Controlled transition between start and end frames",multimodalRef:"Guided by reference images / videos / audio"},settings:{resolution:"Resolution",resolution480p:"Standard 480p",resolution720p:"Quality 720p",aspectRatio:"Aspect ratio",duration:"Duration",generateAudio:"Generate audio (+2 tokens)",generateAudioOff:"No audio"},referenceImages:{title:"Reference images",hint:"Up to 9 images — each an anchor for style / materials / lighting / identity"},referenceVideos:{title:"Reference videos",hint:"Up to 3 videos, total ≤{{maxSeconds}} seconds, ≤50MB each — guides pacing and motion",addVideo:"Add video",totalDuration:"Total duration",totalLimit:"Limited to 15 seconds total",videoTooLarge:"Video file is too large ({{actual}}MB). Max is {{max}}MB per video — compress or lower the resolution (e.g. 1080p 30fps) and try again.",durationExceeded:"Video duration ({{actual}}s) exceeds the remaining time ({{remaining}}s).",videoUnreadable:"Couldn't read the video file. Make sure it's a valid MP4/MOV/MKV."},referenceAudios:{title:"Reference audio",hint:"Up to 3 audio files, total ≤{{maxSeconds}} seconds — emotional timing and rhythm",addAudio:"Add audio",totalDuration:"Total duration"},baker:{title:"Bordi — Seedance 2 prompt writer",tellIdea:"Click and tell me your idea",writeForMe:"Just write the prompt for me (0.5 🪙)"},errors:{needStartImage:"Start image required",needBothFrames:"Both start and end frames required",needAtLeastOneRef:"At least one reference required (image / video / audio)",promptTooShort:"Prompt must be at least 3 characters",promptTooLong:"Prompt cannot exceed 2500 characters",tooManyRefImages:"Maximum 9 reference images",tooManyRefVideos:"Maximum 3 reference videos",tooManyRefAudios:"Maximum 3 reference audio files",totalVideoTooLong:"Total reference video duration exceeds 15 seconds",totalAudioTooLong:"Total audio duration exceeds 15 seconds",mixedScenarios:"Cannot mix scenarios. Choose image / video / audio / references — but not all together"}},g7={modelName:"Seedance 2 Mini",settings:{resolution:"Resolution",resolution480p:"Standard 480p",resolution720p:"Quality 720p",aspectRatio:"Aspect ratio",duration:"Duration",generateAudio:"Generate audio (+2 tokens)",generateAudioOff:"No audio"}},f7={"16:9":"16:9","9:16":"9:16","1:1":"1:1","2:3":"2:3","3:2":"3:2","4:3":"4:3","3:4":"3:4","21:9":"21:9",auto:"Auto",automatic:"Automatic"},b7={title:"The video didn't come out this time",defaultReason:"This sometimes happens due to load at the video provider. Please try again in a moment.",refundNote:"If tokens were charged for this attempt, they were automatically refunded.",close:"Got it, I'll try again"},v7={modelName:"Seedance 2.5",settings:{resolution:"Resolution",resolution480p:"Standard 480p",resolution720p:"Quality 720p",aspectRatio:"Aspect ratio",aspectRatioFromImage:"Set automatically from the start image",duration:"Duration",generateAudio:"Generate audio (+2 tokens)",generateAudioOff:"No audio"}},y7={costDetail:"{{rate}} tokens/sec × {{seconds}} billable seconds (minimum 5)",inputHint:"JPG or PNG image up to 10MB · 3–15 seconds"},x7={subtitle:"Reference to video · 2K",inputHint:"Combine image, video and audio references. Describe what to use from each reference.",videoTitle:"Video references",audioTitle:"Audio references",addVideo:"Add video",addAudio:"Add audio",removeReference:"Remove reference",maxFileSize:"Up to {{max}} MB per file",costDetail:"3 tokens × {{seconds}} seconds = {{total}} tokens",errors:{promptRequired:"Describe your video before generating.",needReference:"Add at least one image, video or audio reference.",tooManyReferences:"Use up to 9 images, 3 videos and 3 audio files.",invalidSettings:"Choose 4–15 seconds and a valid aspect ratio. Only 2K is supported.",fileTooLarge:"{{name}}: maximum file size is {{max}} MB.",unsupportedFormat:"Unsupported file format: {{name}}"}}
604,w7={workspace:L8,topBar:O8,leftRail:M8,boardCut:z8,modeToggle:B8,o1WorkflowToggle:F8,veoWorkflowToggle:$8,assistantPanel:V8,assistantChat:U8,promptCard:q8,shotCard:G8,cameraOptions:W8,resultCard:H8,startImageCard:K8,endImageCard:Y8,sourceImageCard:Q8,videoUploadCard:J8,referenceImagesPanel:X8,grokImagesCard:Z8,addShotButton:e7,elementCard:t7,elementsPanel:a7,resultsSidebar:i7,videoLightbox:o7,resultsDock:r7,extendedResultCard:n7,extendPromptInput:s7,timelineVisualization:l7,mediaSidebar:c7,characterSidebar:d7,assistant:u7,toasts:m7,geminiOmni:p7,seedance2:h7,seedance2_mini:g7,aspectRatios:f7,failureModal:b7,seedance25:v7,kling3Turbo:y7,minimaxH3:x7},k7={studioTitle:"סטודיו Kling Video",desktopOnly:"הסטודיו זמין בטאבלט או במחשב",minScreenWidth:"רוחב מסך מינימלי: 768px",defaultProjectName:"פרויקט Kling 3.0"},_7={darkModeTitle:"מצב בהיר",lightModeTitle:"מצב כהה",grokSubtitle:"עד 7 תמונות",grok15Subtitle:"1080p · עד 7 תמונות · 5-15 שנ'",geminiOmniSubtitle:"1080p · עד 7 תמונות",generating:"מייצר...",sendToGenerate:"שלח ליצירה",balance:"יתרה",videoEditor:"עורך וידאו",videoEditorNew:"חדש"},S7={home:"בית",videos:"סרטונים",frames:"פריימים",characters:"דמויות",boardCut:"עורך וידאו",clearCanvas:"נקה קנבס",resetScreen:"אפס מסך"},C7={imageToVideo:"תמונה לוידאו",multiShot:"מולטי-שוט"},T7={imageToVideo:"פריים ראשון/אחרון",referenceToVideo:"רפרנס לווידאו",videoEdit:"עריכת וידאו",styleTransfer:"וידאו רפרנס"},j7={imageToVideo:"תמונה לוידאו",firstLast:"פריים ראשון + אחרון",ingredients:"מרכיבים"},N7={title:"הסוכנת החכמה — בורדי",activeChat:"שיחה פעילה",settingsAndTips:"הגדרות וטיפים",creationSettings:"הגדרות יצירה",duration:"משך",totalDuration:"משך כולל",resolution:"רזולוציה",mode:"מצב",modeNormal:"רגיל",modeFun:"כיפי",aspectRatio:"יחס מסך",model:"מודל",quality:"איכות",qualityStd:"720p רגיל",qualityPro:"1080p פרו",quality4K:"4K אולטרה",seconds:"שניות",secondsSource:"שניות (מקור)",durationAutomatic:"~8 שניות (אוטומטי)",aspectRatioAuto:"אוטו",sound:"סאונד",soundMultiShotNote:"(חובה במולטי-שוט)",keepOriginalSound:"שמור סאונד מקורי",costForCreation:"עלות ליצירה",veoResolution:"רזולוציה",costVeoDetail:"{{resolution}} — {{tokens}} טוקנים",costGeminiOmniDetail:"{{seconds}} שנ׳ · 1080p — {{tokens}} טוקנים",costGeminiOmniVideoDetail:"וידאו→וידאו · 1080p — {{tokens}} טוקנים",geminiOmniVideoDurationNote:"אורך נקבע ע״י המודל · 40 טוקנים",costStdRate:"{{rate}}ט׳/שנ׳",costO1Formula:"{{rate}}ט׳/שנ׳ × {{seconds}} שנ׳ = {{total}} טוקנים",costSeedance2Rate:"480p — 4 טוקן/שנ׳ · 720p — 6 טוקן/שנ׳",describeYourIdea:"תאר את הרעיון ואכתוב לך פרומפט",writeScriptIdeas:"תכתבי רעיונות לפי הפריימים שלי",uploadHintGrok:"העלו לפחות תמונה אחת כדי להתחיל",uploadHintGeminiOmni:"העלו לפחות תמונת רפרנס אחת כדי להשתמש בבייקר",uploadHintVeoIngredients:"העלו לפחות תמונת רפרנס אחת",uploadHintVeo:"העלו תמונה לפריים כדי להתחיל",uploadHintO1Video:"העלו וידאו כדי להתחיל",uploadHintO1ImageGuided:"העלו לפחות תמונת רפרנס אחת",uploadHintDefault:"העלו תמונה לפריים כדי להתחיל",tokens:"טוקנים",costSeedance25Rate:"480p — 6 טוקן/שנ׳ · 720p — 12 טוקן/שנ׳",costSeedance25Detail:"{{rate}}ט׳/שנ׳ × {{seconds}} שנ׳ = {{total}} טוקנים",costSeedance25DetailWithRef:"{{rate}}ט׳/שנ׳ × {{seconds}} שנ׳ + {{refRate}}ט׳/שנ׳ × {{refSeconds}} שנ׳ וידאו ייחוס = {{total}} טוקנים"},P7={conversation:"שיחה",thinking:"חושב...",placeholder:"כתבו כאן...",stopListeningTitle:"לחצו לעצור",startListeningTitle:"לחצו לדבר",speechNotSupported:"הדפדפן לא תומך בזיהוי דיבור. נסו Chrome, Edge או Safari.",manualModeHint:"הפרומפט יוזן ישירות — חינם",tokenCostHint:"0.5 טוקנים לכל הודעה"},A7={title:"פרומפט"},E7={title:"שוט",duration:"משך זמן השוט",cameraPlaceholder:"סוג מצלמה",characterRef:"@דמות"},I7={none:"ללא",panRight:"פאן ימינה",panLeft:"פאן שמאלה",zoomIn:"זום אין",zoomOut:"זום אאוט",tracking:"מעקב",orbit:"סיבוב"},D7={title:"תוצאה",generatingText:"...מייצר",resultWillAppear:"התוצאה תופיע כאן",statusWillAppear:"כאן יוצג סטטוס היצירה",oneVideoInProgress:"וידאו 1 בעבודה",multipleVideosInProgress:"{{count}} וידאו בעבודה",oneVideoReady:"סרטון 1 מוכן",multipleVideosReady:"{{count}} סרטונים מוכנים",inWorkLabel:"וידאו בעבודה",readyLabel:"סרטונים מוכנים",openToolbarHintBefore:"לחץ על",openToolbarHintAfter:"בסרגל הכלים משמאל כדי לצפות בסרטונים שלך",viewVideos:"צפה בסרטונים"},R7={title:"תמונת התחלה",required:"חובה",altText:"תמונת התחלה",dropzoneText:"העלו את התמונה שממנה נתחיל",dropzoneHint:"גרירה או לחיצה"},L7={title:"תמונת סיום",optional:"(אופציונלי)",altText:"תמונת סיום",dropzoneText:"הוסיפו תמונת סיום לשליטה בתנועה",dropzoneHint:"גרירה או לחיצה"},O7={title:"תמונת מקור",required:"חובה",altText:"תמונת מקור",dropzoneText:"העלו תמונת מקור לכל השוטים",dropzoneHint:"גרירה או לחיצה"},M7={title:"העלאת וידאו",required:"חובה",dropzoneText:"העלו קובץ וידאו"},z7={title:"תמונות עזר",emptyHint:"הוסיפו תמונות עזר לכיוון הסגנון"},B7={title:"תמונות",emptyHint:"העלו עד 7 תמונות לייצור וידאו"},F7={label:"הוסף שוט"},$7={title:"דמות / אובייקט",namePlaceholder:"שם הדמות",descriptionPlaceholder:"תיאור קצר (חובה) — למשל: אישה בחולצה לבנה",addButton:"דמות / אובייקט"},V7={title:"דמויות / אובייקטים",emptyHint:"הוסיפו דמויות או אובייקטים שיופיעו בסרטון.",emptyHintSub:"השתמשו ב-@שם בפרומפט של כל שוט.",addButton:"הוסף דמות / אובייקט",namePlaceholder:"שם (אנגלית, למשל: cat_1)"},U7={title:"סרטונים",resultsCount:"{{count}} תוצאות",generatingSingle:"מייצר...",generatingMultiple:"מייצר {{count}} סרטונים...",emptyState:"הסרטונים שתייצרו יופיעו כאן",deleteConfirm:"למחוק את הסרטון? הפעולה לא ניתנת לביטול.",deleteError:"שגיאה במחיקת הסרטון",deleteSuccess:"הסרטון נמחק",defaultVideoLabel:"סרטון",expandTitle:"הרחב וידאו",downloadTitle:"הורד",deleteTitle:"מחק",sendToAssetsMenuItem:"שלח לנכסים שלי",sendToAssetsSuccess:"הסרטון נשמר בנכסים שלך",sendToAssetsError:"שגיאה בשמירה לנכסים",sendToAssetsInProgress:"שומר..."},q7={modelLabel:"מודל:",promptLabel:"פרומפט",copyPromptTitle:"העתק פרומפט",copied:"הועתק",copy:"העתק",copyPrompt:"העתק פרומפט",expandVideo:"הרחב וידאו",download:"הורד"},G7={title:"תוצאות אחרונות",emptyState:"התוצאות יופיעו כאן אחרי יצירה ראשונה",defaultVideoLabel:"סרטון",downloadButton:"הורדה"},W7={title:"הרחבת וידאו",titleGrok:"הרחבת וידאו - Grok",titleVeo:"הרחבת וידאו - Veo",segments:"{{count}} קטעים",shrinkTitle:"הקטן",expandTitle:"הגדל",exitEditingTitle:"סיום עריכה",noVideo:"אין וידאו",segmentOf:"קטע {{current}}/{{total}}",maxSegmentsReached:"הגעת למקסימום {{max}} קטעים ({{minutes}} דקות)",totalLabel:'סה"כ:',exitEditing:"סיום עריכה",durationSeconds:"{{count}} שניות",durationMinutes:"{{minutes}}:{{seconds}} דקות"},H7={placeholder:"תאר את ההמשך של הסרטון...",writeNextForMe:"כתוב לי המשך",extending:"מרחיב...",addSeconds:"הוסף {{count}} שניות",keyboardHint:"⌘+Enter להרחבה מהירה"},K7={title:"ציר הזמן",segmentsCount:"{{count}}/{{max}} קטעים",segmentTitle:"קטע {{index}}: {{duration}}s",addSegmentTitle:"הוסף קטע"},Y7={pickTitle:"בחרו תמונות",browseTitle:"פריימים",selectedCount:"{{count}}/{{max}} נבחרו",imageCount:"{{count}} תמונות",newFolderTitle:"תיקיה חדשה",uploadTitle:"העלה תמונות",folderNamePlaceholder:"שם התיקיה",breadcrumbRoot:"פריימים",clickToRename:"לחץ לשינוי שם",folderItemCount:"{{count}} פריימים",sendToStartTitle:"שלח לפריים פתיחה",sendToEndTitle:"שלח לפריים סגירה",sendToStart:"שלח לפריים פתיחה",sendToEnd:"שלח לפריים סגירה",sendToCharacters:"שלח לדמויות",
604sendToCharactersSuccess:"הועבר לדמויות",sendToCharactersError:"שגיאה בהעברה לדמויות",rename:"שנה שם",moveToFolder:"העבר לתיקיה",rootFolder:"שורש (פריימים)",delete:"מחק",deleteFolder:"מחק תיקיה",emptyPickState:"אין תמונות עדיין",emptyPickHint:"העלו תמונות כדי לבחור",emptyBrowseState:"העלו תמונות לפריימים",emptyBrowseHint:"גררו לפריימים או לחצו ימני",uploadButton:"העלה תמונות",emptyFolder:"התיקיה ריקה",emptyFolderHint:"גררו תמונות לכאן",sendImages:"שלח {{count}} תמונות",uploadMore:"העלה עוד"},Q7={pickTitle:"בחרו דמויות",browseTitle:"דמויות",selectedCount:"{{count}}/{{max}} נבחרו",characterCount:"{{count}} דמויות",newFolderTitle:"תיקיה חדשה",addCharacterTitle:"הוסף דמות",folderNamePlaceholder:"שם התיקיה",breadcrumbRoot:"דמויות",clickToRename:"לחץ לשינוי שם",folderItemCount:"{{count}} דמויות",sendToFrames:"שלח לפריימים",sendToFramesSuccess:"הועבר לפריימים",sendToFramesError:"שגיאה בהעברה לפריימים",rename:"שנה שם",moveToFolder:"העבר לתיקיה",rootFolder:"שורש (דמויות)",delete:"מחק",deleteFolder:"מחק תיקיה",emptyPickState:"אין דמויות עדיין",emptyPickHint:"העלו תמונות כדי לבחור",emptyBrowseState:"שמרו דמויות לשימוש חוזר",emptyBrowseHint:"העלו תמונות של דמויות קבועות",emptyFolder:"התיקיה ריקה",emptyFolderHint:"גררו דמויות לכאן",addCharacterButton:"הוסף דמות",sendCharacters:"שלח {{count}} דמויות",addMore:"הוסף עוד"},J7={actionSetPrompt:"עדכנתי את הפרומפט",actionUpdateElement:"עדכנתי אלמנט",actionRemoveElement:"הסרתי אלמנט",actionUpdateShot:"עדכנתי שוט",actionSetQuality:"שיניתי איכות",actionSetSound:"שיניתי סאונד",actionSetDuration:"שיניתי משך",actionSetAspectRatio:"שיניתי יחס מסך",loginRequired:"יש להתחבר כדי להשתמש בעוזרת",communicationError:"שגיאה בתקשורת עם העוזרת",unexpectedError:"שגיאה לא צפויה",insufficientTokens:"אין מספיק טוקנים. נדרש: {{required}}, יתרה: {{current}}",explainFirstInstruction:"ספרו לי מה אתם רוצים לראות בוידאו — תנועת מצלמה, אווירה, תאורה, או כל רעיון אחר. אני אנתח את התמונות ואכתוב לכם פרומפט מותאם.",greetingWritePrompt:"תני לי רגע לנתח את התמונות...",greetingImprovePrompt:"תני לי רגע לבדוק את הפרומפט...",greetingRecommendSettings:"בודקת את ההגדרות...",qualityProLabel:"1080p פרו",qualityStdLabel:"720p רגיל",soundOn:"מופעל",soundOff:"כבוי",changedModel:"שיניתי מודל:",defaultElementName:"אלמנט"},X7={smartAssistantError:"שגיאה בעוזר החכם",enterPromptOrUploadImage:"יש להזין פרומפט או להעלות לפחות תמונה אחת",uploadAtLeastOneImage:"יש להעלות לפחות תמונה אחת",uploadStartImage:"יש להעלות תמונת התחלה",ingredientsFastOnly:"מצב מרכיבים זמין רק עם מודל Fast",uploadAtLeastOneRef:"יש להעלות לפחות תמונת רפרנס אחת",cannotCombineEndWithRef:"לא ניתן לשלב תמונת סיום עם תמונות עזר",uploadVideoFile:"יש להעלות קובץ וידאו",videoTooLarge:"קובץ הווידאו גדול מדי ({{actual}}MB). הגודל המרבי הוא {{max}}MB — נסו קליפ קצר יותר או דחוס.",videoUploadFailed:"העלאת הווידאו נכשלה",videoDurationInvalid:"אורך הווידאו חייב להיות בין {{min}} ל-{{max}} שניות (העליתם {{actual}} שניות). חתכו את הקליפ לקטע של עד {{max}}
604 שניות ונסו שוב.",videoResolutionTooLow:"רזולוציית הווידאו נמוכה מדי ({{actual}}px). נדרש לפחות {{min}}px בצד הקצר.",videoUnreadable:"לא ניתן לקרוא את קובץ הווידאו. ודאו שזה MP4 או MOV תקין.",uploadSourceImage:"יש להעלות תמונת מקור",addAtLeastOneShot:"יש להוסיף לפחות שוט אחד",fillAllShotPrompts:"יש למלא פרומפט לכל השוטים",loginToCreateVideo:"יש להתחבר כדי ליצור סרטון",videoSentForPreparation:"הסרטון נשלח להכנה! בגלל עומס ותור, זה יכול לקחת עד 15 דקות",videoSentForPreparationShort:"הסרטון נשלח להכנה! זה יכול לקחת עד 5 דקות",insufficientTokens:"אין מספיק טוקנים. נדרש: {{required}}, יתרה: {{current}}",videoCreationError:"שגיאה ביצירת הסרטון",videoReady:"הסרטון מוכן!",videoReadyToast:{title:"הסרטון שלך מוכן!",titlePlural:"{{count}} סרטונים מוכנים!",cta:"צפה בסרטון",dismiss:"סגור"},videoCreationFailed:"יצירת הסרטון נכשלה",videoCreationTimeout:"הזמן הקצוב ליצירת הסרטון עבר",unexpectedServerResponse:"תגובה לא צפויה מהשרת",noServerResponse:"הבקשה לא הגיעה לשרת ולא חויבתם — נסו שוב בעוד רגע.",unexpectedVideoError:"שגיאה לא צפויה ביצירת הסרטון",loginToExtendVideo:"יש להתחבר כדי להרחיב סרטון",openExtendModeFirst:"יש לפתוח מצב הרחבה קודם",enterExtendDescription:"יש להזין תיאור להמשך הסרטון",missingSegmentId:"חסר מזהה לקטע הקודם",extendError:"שגיאה בהרחבת הסרטון",extendReady:"ההרחבה מוכנה!",extendInProgress:"ההרחבה בתהליך הכנה...",extendFailed:"ההרחבה נכשלה",extendTimeout:"ההרחבה נכשלה - timeout",unexpectedExtendError:"שגיאה לא צפויה בהרחבת הסרטון",elementsMissingImages:"האלמנטים {{names}} צריכים לפחות 2 תמונות כל אחד. הוסיפו תמונות לפני היצירה.",noElementName:"(ללא שם)",elementNeedsDescription:'לדמות "{{name}}" חסר תיאור. הוסיפו תיאור קצר בכרטיס שלה (למשל: אישה בחולצה לבנה) לפני היצירה.',promptRefsNoElements:"הפרומפט מפנה לאלמנטים (@שם) אבל לא הוגדרו אלמנטים. הוסיפו אלמנט עם תמונות.",elementUploadFailed:"העלאת תמונות האלמנטים נכשלה. בדקו שלכל אלמנט יש לפחות 2 תמונות.",imageUploadFailed:"העלאת התמונות נכשלה",unsupportedImageFormat:"אחת התמונות בפורמט שלא נתמך במודל הזה (נתמכות רק JPG/PNG). החליפו אותה ונסו שוב — לא חויבתם בטוקנים."},Z7={referenceVideo:{title:"וידאו ייחוס",addVideo:"הוסף וידאו",hint:"וידאו אחד (עד 30 שניות) להפיכת וידאו-לוידאו. המודל קובע את אורך הפלט · 40 טוקנים"}},e$={modelName:"Seedance 2",workflowLabel:"מצב יצירה",workflows:{t2v:"טקסט לוידאו",firstFrame:"מתמונה",firstLast:"פתיחה וסיום",multimodalRef:"רפרנסים"},workflowDescriptions:{t2v:"יצירת וידאו מטקסט בלבד — בלי תמונות",firstFrame:"אנימציה מתמונת פתיחה יחידה",firstLast:"מעבר מבוקר בין פריים פתיחה לפריים סיום",multimodalRef:"הנחיה לפי תמונות / וידאו / אודיו"},settings:{resolution:"רזולוציה",resolution480p:"רגיל 480p",resolution720p:"איכות 720p",aspectRatio:"יחס מסך",duration:"משך",generateAudio:"צור פסקול (+2 טוקנים)",generateAudioOff:"ללא פסקול"},referenceImages:{title:"תמונות ייחוס",hint:"עד 9 תמונות — כל אחת עוגן לסגנון / חומרים / תאורה / דמות"},referenceVideos:{title:"וידאו ייחוס",hint:"עד 3 סרטונים, סך הכל עד {{maxSeconds}} שניות, עד 50MB כל אחד — מנחה את הקצב והתנועה",addVideo:"הוסף וידאו",totalDuration:"סך משך",totalLimit:"מוגבל ל־15 שניות סך הכל",videoTooLarge:"קובץ הווידאו גדול מדי ({{actual}}MB). המרבי הוא {{max}}MB לסרטון — דחסו או הקטינו רזולוציה (למשל 1080p 30fps) ונסו שוב.",durationExceeded:"משך הווידאו ({{actual}} שניות) חורג מהזמן שנותר ({{remaining}} שניות).",videoUnreadable:"לא ניתן לקרוא את קובץ הווידאו. ודאו שזה MP4/MOV/MKV תקי×
604Ÿ."},referenceAudios:{title:"אודיו ייחוס",hint:"עד 3 קבצי אודיו, סך הכל עד {{maxSeconds}} שניות — תזמון רגשי וריתם",addAudio:"הוסף אודיו",totalDuration:"סך משך"},baker:{title:"בורדי — כותבת הפרומפטים של Seedance 2",tellIdea:"לחץ וספר לי את הרעיון שלך",writeForMe:"מעדיף שאני תכתוב את הפרומפט (0.5 🪙)"},errors:{needStartImage:"צריך תמונת פתיחה",needBothFrames:"צריך גם תמונת פתיחה וגם תמונת סיום",needAtLeastOneRef:"צריך לפחות רפרנס אחד (תמונה / וידאו / אודיו)",promptTooShort:"הפרומפט חייב להיות לפחות 3 תווים",promptTooLong:"הפרומפט לא יכול לעבור 2500 תווים",tooManyRefImages:"מקסימום 9 תמונות ייחוס",tooManyRefVideos:"מקסימום 3 סרטוני ייחוס",tooManyRefAudios:"מקסימום 3 קבצי אודיו ייחוס",totalVideoTooLong:"סך משך סרטוני הייחוס עובר את 15 שניות",totalAudioTooLong:"סך משך האודיו עובר את 15 שניות",mixedScenarios:"אי אפשר לערבב מצבים שונים. בחר תמונה / וידאו / אודיו / רפרנסים — אבל לא הכל ביחד"}},t$={modelName:"Seedance 2 Mini",settings:{resolution:"רזולוציה",resolution480p:"רגיל 480p",resolution720p:"איכות 720p",aspectRatio:"יחס מסך",duration:"משך",generateAudio:"צור פסקול (+2 טוקנים)",generateAudioOff:"ללא פסקול"}},a$={"16:9":"16:9","9:16":"9:16","1:1":"1:1","2:3":"2:3","3:2":"3:2","4:3":"4:3","3:4":"3:4","21:9":"21:9",auto:"אוטו",automatic:"אוטומטי"},i$={title:"הסרטון לא נוצר הפעם",defaultReason:"זה קורה לפעמים בגלל עומס אצל ספק הווידאו. אפשר לנסות שוב בעוד רגע.",refundNote:"אם חויבתם בטוקנים על הניסיון הזה — הם הוחזרו אליכם אוטומטית.",close:"הבנתי, אנסה שוב"},o$={modelName:"Seedance 2.5",settings:{resolution:"רזולוציה",resolution480p:"רגיל 480p",resolution720p:"איכות 720p",aspectRatio:"יחס מסך",aspectRatioFromImage:"נקבע אוטומטית לפי תמונת הפתיחה",duration:"משך",generateAudio:"צור פסקול (+2 טוקנים)",generateAudioOff:"ללא פסקול"}},r$={costDetail:"{{rate}} טוקנים לשנייה × {{seconds}} שניות לחיוב (מינימום 5)",inputHint:"תמונת JPG או PNG עד 10MB · סרטון באורך 3–15 שניות"},n$={subtitle:"וידאו מרפרנסים · 2K",inputHint:"שלבו תמונות, וידאו ואודיו. הגדירו בפרומפט מה לקחת מכל רפרנס.",videoTitle:"רפרנסים של וידאו",audioTitle:"רפרנסים של אודיו",addVideo:"הוספת וידאו",addAudio:"הוספת אודיו",removeReference:"הסרת רפרנס",maxFileSize:"עד {{max}} MB לקובץ",costDetail:"3 טוקנים × {{seconds}} שניות = {{total}} טוקנים",errors:{promptRequired:"כתבו תיאור לסרטון לפני היצירה.",needReference:"הוסיפו לפחות תמונה, וידאו או אודיו כרפרנס.",tooManyReferences:"אפשר להוסיף עד 9 תמונות, 3 סרטונים ו־3 קובצי אודיו.",invalidSettings:"בחרו משך של 4–15 שניות ויחס מסך תקין. היצירה ב־2K בלבד.",fileTooLarge:"{{name}}: גודל הקובץ המרבי הוא {{max}} MB.",unsupportedFormat:"פורמט הקובץ אינו נתמך: {{name}}"}},s$={workspace:k7,topBar:_7,leftRail:S7,modeToggle:C7,o1WorkflowToggle:T7,veoWorkflowToggle:j7,assistantPanel:N7,assistantChat:P7,promptCard:A7,shotCard:E7,cameraOptions:I7,resultCard:D7,startImageCard:R7,endImageCard:L7,sourceImageCard:O7,videoUploadCard:M7,referenceImagesPanel:z7,grokImagesCard:B7,addShotButton:F7,elementCard:$7,elementsPanel:V7,resultsSidebar:U7,videoLightbox:q7,resultsDock:G7,extendedResultCard:W7,extendPromptInput:H7,timelineVisualization:K7,mediaSidebar:Y7,characterSidebar:Q7,assistant:J7,toasts:X7,geminiOmni:Z7,seedance2:e$,seedance2_mini:t$,aspectRatios:a$,failureModal:i$,seedance25:o$,kling3Turbo:r$,minimaxH3:n$},l$="Buyer Terms – Boardspace.ai",c$="Last updated: April 12, 2026",d$="The
604se Buyer Terms apply in addition to our <terms>General Terms of Use</terms> and <privacy>Privacy Policy</privacy>.",u$={meta:{operatedByLabel:"Operated by:",company:"Aquala Holdings Ltd",registeredAddress:"Registered address: Anexartasias 16, Limassol, Cyprus",contactLabel:"Contact:"},email:"[email protected]",sections:[{h:"1. Introduction and Scope",paragraphs:['These Buyer Terms ("Buyer Terms") govern the purchase, ordering, receipt, and use of services, outputs, works, files, deliverables, and other content ordered or purchased through Boardspace.ai by customers, purchasers, ordering parties, or business users ("Buyer", "you").'],paragraphsContinued:["If there is any conflict between these Buyer Terms and the General Terms of Use, these Buyer Terms prevail with respect to purchases made through the platform."]},{h:"2. Role of the Platform",paragraphs:["Boardspace.ai is a digital platform enabling, among other things, ordering services, creative deliverables, AI services, and services performed by creators, providers, and approved participants operating through the platform.","Unless explicitly stated otherwise for a specific service, Boardspace is not an architecture firm, interior design firm, engineering provider, licensed professional advisor, or provider of certified professional opinions. Boardspace may operate, coordinate, assign, supervise, present, make available, or manage service delivery, but does not guarantee that any deliverable will fit a specific purpose, regulatory requirement, or specific business use."]},{h:"3. Placing an Order",paragraphs:["An order may be placed through service cards, quotations, checkout, briefs, messages, or any other mechanism we provide from time to time. Completing an order constitutes a binding purchase request, subject to payment approval, availability, brief suitability, and any additional conditions presented in the platform.","You are responsible for ensuring that all information provided in connection with the order is complete, accurate, lawful, and authorized for use. If you provide missing, misleading, unlawful, or unsuitable materials, this may delay, prevent, or harm order execution, and we will not be responsible for that."]},{h:"4. Brief, Materials, and Instructions",paragraphs:["To enable order execution, you may be required to provide a brief, files, images, videos, plans, texts, examples, style preferences, brand materials, inspiration boards, or other information. You represent that:"],list:["you have all required rights, permissions, and consents to upload and provide such materials;","the materials do not infringe third-party rights;","the materials do not include information you are prohibited from sharing or processing through the platform."],afterList:["We and/or creators operating through the platform may rely on the information you provide to perform the work.","We are not responsible for defects resulting from incorrect, missing, misleading, or outdated materials provided by you."]},{h:"5. Pricing, Taxes, and Payment",paragraphs:["All prices, fees, charges, or costs will be presented in the platform, in the quotation, or during purchase flow. Unless stated otherwise, prices do not include taxes, VAT, levies, conversion fees, or banking charges that may apply to you depending on your location and applicable law.","Payment may be required upfront, in stages, upon order approval, upon deliverable handoff, or under another mechanism shown for the specific service. We may condition work start, deliverable release, access activation, or rights transfer on full payment of all amounts due."]},{h:"6. Tokens, Credits, and Internal Usage Units",paragraphs:["If the platform offers purchase or use of tokens, credits, creation rights, or similar usage units, the designated terms shown in the purchase flow also apply. Unless explicitly stated otherwise, unused tokens or credits are not convertible to cash, transferable, or redeemable."]},{h:"7. Cancellations, Refunds, and Non-Performance",paragraphs:["Because some services are digital, personalized, or begin shortly after ordering, you may 
604not be entitled to cancel an order or receive a full refund after work has started, content has been accessed, credits have been used, or deliverables were provided, unless otherwise required by law.","Unless otherwise stated on the service page or quotation:"],list:["if work has not started, we may allow full or partial cancellation at our discretion;","if work has started but no final deliverable has been provided, we may offer a partial refund, platform credit, or alternative solution;","if a deliverable was provided in line with the order, brief, and service level purchased, there is no automatic refund entitlement solely because the deliverable is not to your taste;","if a material failure, non-delivery, or clear material deviation from an approved order occurred, we will act in good faith to assess correction, substitute delivery, credit, or appropriate refund."],afterList:["Nothing in these Buyer Terms limits non-waivable consumer rights under applicable law."]},{h:"8. Revisions, Changes, and Approvals",paragraphs:['Unless stated otherwise, each service may include a limited number of revisions, feedback rounds, adjustments, or changes. The scope of revisions, timelines, and what constitutes a "material change" or "new work" will be determined by the service page, brief, in-platform communication, or other designated terms.',"If you request changes beyond the original brief, purchased scope, or included revision count, we may require additional payment, additional timelines, or opening a new order.","If you do not respond, approve, provide materials, or submit feedback within a reasonable time, we may treat the work as delayed by you, pause handling, close the order, or treat the deliverable as approved for process continuation, depending on circumstances."]},{h:"9. Delivery and Acceptance",paragraphs:["Deliverables may be provided through the platform, links, downloads, canvas, galleries, files, messages, or other digital means we provide.","You are responsible for reviewing deliverables promptly upon delivery and notifying us of material defects within a reasonable time. If no reasoned objection is submitted within the period defined in the interface, quote, or a reasonable period under the circumstances, we may treat the deliverable as received and approved."]},{h:"10. Ownership and Rights in Deliverables",paragraphs:["Subject to full payment of all amounts due for the order, and subject to any limitation stated in the service page, these Buyer Terms, or a designated document, you receive rights in the final deliverable supplied to you for use according to the purpose of the purchased service.","Unless explicitly stated otherwise:"],list:["rights transfer, where applicable, occurs only after full payment;","rights in source files, working versions, drafts, non-selected elements, prompts, templates, workflows, methods, generic assets, and Boardspace or creator system tools are not automatically included in transfer;","third-party rights, stock materials, licensed assets, or any element with restricted rights remain subject to their applicable license terms."],afterList:["You may not register, present, or claim ownership rights beyond those explicitly granted to you."]},{h:"11. Display License to Boardspace and Creator",paragraphs:["As part of using the platform, you agree that unless you selected or were granted a confidential/private track, or unless we approve otherwise in writing, Boardspace and the relevant creator may display the final deliverable or reasonable parts of it for:"],list:["portfolio;","work wall;","gallery;","case studies;","marketing materials;","social media;","professional capability showcase."],afterList:["This license is non-exclusive, worldwide, royalty-free, and for display, self-promotion, and work showcase only. It does not permit resale, sublicensing, or misleading use suggesting Boardspace or the creator owns exclusive commercial rights in the deliverable.","If an order includes sensitive information, a confidential project, private property, or unpublished material, you must notify us in advance. In such cases, we may restrict, delay, or prevent publication or display of the work."]},{h:"12. Opt-Out or Confidential Track",paragraphs:["For certain services, we may offer a confidential/non-publication/deferred publication option. If available, its terms, price, and scope will be shown in the platform or relevant quote. Absent explicit selection of such option, Section 11 display terms apply."]},{h:"13. Creators, Providers, and Direct Engagement",paragraphs:["Certain services may be performed by creators, providers, or service professionals operating through Boardspace. Unless otherwise authorized in writing, you may 
604not use the platform to bypass Boardspace, engage directly with creators introduced through the platform for off-platform transactions, or request off-system work intended to bypass fees, payment mechanisms, or platform processes.","We may take action in cases of bypass, including account restrictions, order cancellation, or other contractual enforcement measures, subject to applicable law."]},{h:"14. Prohibited Use of Deliverables",paragraphs:["You may not use the Services or deliverables:"],list:["for unlawful activity;","for deception, fraud, or impersonation;","to infringe third-party rights;","for misleading or harmful advertising;","for high-risk professional or safety decisions without independent validation;","in any way that violates applicable law, license terms, or regulatory obligations."]},{h:"15. AI-Based Deliverables and No Professional Advice",paragraphs:["Some deliverables are generated, edited, or influenced by AI tools or automated processes. Such deliverables may contain errors, inaccuracies, bias, similarities to other outputs, or may be unsuitable for a particular purpose.","We do not provide professional architectural, engineering, legal, safety, valuation, commercial, or regulatory advice. You must review all deliverables before practical, business, marketing, contractual, professional, or public use."]},{h:"16. Complaints, Disputes, and Support",paragraphs:["If you have a claim regarding an order, deliverable, charge, delivery, or conduct through the platform, you should contact us promptly at:","We may, but are not obligated to, review information, request documents, delay delivery, freeze funds, offer a commercial solution, or define a dispute-handling mechanism at reasonable discretion and according to applicable policies."],insertEmailAfterParagraphIndex:0},{h:"17. Platform's Limited Responsibility",paragraphs:["Boardspace operates as a technological and operational platform. To the maximum extent permitted by law, we are not liable for acts, omissions, representations, professional errors, rights infringements, delays, or conduct of creators, providers, clients, or third parties, except where applicable law imposes non-limitable liability on us.","We do not guarantee that every order will be completed, every creator will be available, or every deliverable will meet your subjective expectations."]},{h:"18. Limitation of Liability",paragraphs:["To the maximum extent permitted by law, Aquala Holdings Ltd, its affiliates, officers, employees, representatives, and suppliers are not liable for indirect, consequential, special, incidental, punitive damages, lost profits, lost data, lost goodwill, or lost business opportunity arising from orders, deliverables, or use of the platform.","In all cases, our total aggregate liability to you in connection with an order or these Buyer Terms will not exceed the amount you actually paid for the disputed order during the 12 months preceding the event giving rise to the claim.","Nothing in these Buyer Terms limits rights that cannot be waived under applicable law."]},{h:"19. Changes to Buyer Terms",paragraphs:["We may update these Buyer Terms from time to time. When material changes are made, we will take reasonable steps to notify you. The date at the top of this document indicates the latest update date."]},{h:"20. Governing Law and Jurisdiction",paragraphs:["These Buyer Terms are governed by the laws of Cyprus, subject to mandatory consumer protections that cannot be waived.","Subject to applicable law, the competent courts in Limassol, Cyprus will have exclusive jurisdiction over matters arising from these Buyer Terms or use of the platform."]},{h:"21. Contact",paragraphs:["For questions, requests, cancellation notices, clarifications, or disputes, you may contact us at:"],insertEmailAfterParagraphIndex:0,contactBlock:{org:"Aquala Holdings Ltd",address:"Anexartasias 16, Limassol, Cyprus"}}]},m$={acknowledgment:"By continuing to purchase or place orders through the platform, you acknowledge that you have read and understood these Buyer Terms together with the Terms of Use and Privacy Policy.",lastUpdated:"Last updated: April 12, 2026"},bg={title:l$,lastUpdated:c$,termsPrivacyIntroLine:d$,document:u$,footer:m$},p$="תנאי קונים – Boardspace.ai",h$="עודכן לאחרונה: 12.4.26",g$="תנאי קונים אלה חלים בנוסף ל<terms>תנאי השימוש הכלליים</terms> של Boardspace.ai ול<privacy>מדיניות הפרטיות</privacy> שלנו.",f$={meta:{operatedByLabel:"מופעל על ידי:",company:"Aquala Holdings Ltd",registeredAddress:"כתובת רשומה: Anexartasias 16, Limassol, Cyprus",contactLabel:"יצירת קשר:"},email:"[email protected]",sections:[{h:"1. מבוא ותחולה",paragraphs:['תנאי קונים אלה ("תנאי הקונים") מסדירים את הרכישה, ההזמנה, הקבלה והשימוש בשירותים, תוצרים, עבודות, קבצים, deliverables, ותוכן אחר המוזמנים או נרכשים באמצעות Boardspace.ai על ידי לקוחות, מזמינים, רוכשים או משתמשים עסקיים ("הקונה", "אתה").'],paragraphsContinued:["במקרה של סתירה בין תנאי הקונים לבין תנאי השימוש הכלליים, יגברו תנאי קונים אלה ביחס לעסקאות קנייה דרך הפלטפורמה."]},{h:"2. תפקיד הפלטפורמה",paragraphs:["Boardspace.ai היא פלטפורמה דיגיטלית המאפשרת, בין היתר, הזמנת שירותים, תוצרים יצירתיים, שירותי AI, ושירותים המבוצעים על ידי קריאייטורים, ספקים, יוצרים, או משתתפים שאושרו או פועלים דרך הפלטפורמה.","אלא אם צוין אחרת במפורש ביחס לשירות מסוים, Boardspace אינה משרד אדריכלים, משרד עיצוב פנים, ספק הנדסי, יועץ מקצועי מורשה, או נותן חוות דעת מקצועית מוסמכת. Boardspace עשויה להפעיל, לתאם, להקצות, לפקח, להציג, להנגיש או לנהל את אספקת השירותים, אך אינה מתחייבת כי כל תוצר יתאים למטרה מסוימת, לדרישה רגולטורית, או לשימוש עסקי ספציפי."]},{h:"3. יצירת הזמנה",paragraphs:["הזמנה דרך הפלטפורמה עשויה להתבצע באמצעות כרטיס שירות, הצעת מחיר, checkout, בריף, הודעה, או כל מנגנון אחר שנעמיד מעת לעת. השלמת הזמנה מהווה בקשה מחייבת מצדך לרכישת השירות הרלוונטי, בכפוף לאישור התשלום, זמינות, התאמת הבריף, וכל תנאי נוסף שיוצג בפלטפורמה.","אתה אחראי לכך שכל מידע שתספק במסגרת ההזמנה יהיה מלא, מדויק, חוקי, ושיש לך הרשאה להשתמש בו. אם תספק חומרים חסרים, מטעים, בלתי חוקיים או בלתי מתאימים, הדבר עלול לעכב, למנוע או לפגוע בביצוע ההזמנה, ואנו לא נהיה אחראים לכך."]},{h:"4. בריף, חומרים והנחיות",paragraphs:["כדי לאפשר ביצוע הזמנה, ייתכן שתידרש למסור בריף, קבצים, תמונות, סרטונים, תוכניות, טקסטים, דוגמאות, העדפות סגנון, חומרי מותג, לוחות השראה, או מידע אחר. אתה מצהיר כי:"],list:["יש לך את כל הזכויות, ההרשאות וההסכמות הדרושות להעלות ולמסור חומרים אלה;","החומרים אינם מפרים זכויות של צדדים שלישיים;","והם אינם כוללים מידע שאסור לך למסור או לעבד באמצעות הפלטפורמה."],afterList:["אנו ו/או הקריאייטורים הפועלים דרך הפלטפורמה רשאים להסתמך על המידע שמסרת לצורך ביצוע העבודה.","איננו אחראים לליקויים הנובעים מחומרים שגויים, חסרים, מטעהים או לא מעודכנים שנמסרו על ידך."]},{h:"5. תמחור, מסים ותשלום",paragraphs:['כל המחירים, העמלות, החיובים או העלויות יוצגו בפלטפורמה, בהצעת המחיר, או בתהליך הרכישה. אלא אם צוין אחרת, המחירים אינם כוללים מסים, מע"מ, היטלים, עמלות המרה או חיובים בנקאיים שעשויים לחול עליך בהתאם למקום מושבך ולדין החל.',"התשלום עשוי להתבצע מראש, בשלבים, עם אישור הזמנה, במסירת תוצר, או לפי מנגנון אחר שיוצג ביחס לשירות. אנו רשאים להתנות התחלת עבודה, מסירת תוצר, פתיחת גישה, או העברת זכויות בתשלום מלא של כל הסכומים המגיעים."]},{h:"6. טוקנים, קרדיטים ושימושים פנימיים",paragraphs:["אם הפלטפורמה מציעה רכישה או שימוש בטוקנים, קרדיטים, זכויות יצירה, או יחידות שימוש דומות, יחולו גם התנאים הייעודיים שיוצגו בממשק הרכישה. אלא אם נאמר אחרת במפורש, טוקנים או קרדיטים שלא נוצלו אינם ניתנים להמרה לכסף, להעברה, או לפדיון."]},{h:"7. ביטולים, החזרים ואי-ביצוע",paragraphs:["מאחר שחלק מהשירותים בפלטפורמה הם שירותים דיגיטליים, מותאמים אישית, או כאלה שהביצוע שלהם מתחיל זמן קצר לאחר ההזמנה, ייתכן שלא תהיה זכאי לבטל הזמנה או לקבל החזר מלא לאחר תחילת העבודה, גישה לתוכן, שימוש בקרדיטים, או מסירת תוצר, אלא אם נדרש אחרת לפי דין.","אלא אם צוין אחרת בדף השירות או בהצעת המחיר:"],list:["אם העבודה טרם החלה, ייתכן שנוכל לאפשר ביטול מלא או חלקי לפי שיקול דעתנו.","אם העבודה החלה אך לא נמסר תוצר סופי, ייתכן שנציע החזר חלקי, קרדיט פלטפורמה, או פתרון חלופי.","אם נמסר תוצר בהתאם להזמנה, לבריף ולרמת השירות שהוזמנה, לא תהיה זכאות אוטומטית להחזר רק משום שהתוצר אינו לטעמך.","אם אירעה תקלה מהותית, אי-מסירה, או חריגה ברורה מהותית מהזמנה שאושרה, נפעל בתום לב לבחינת תיקון, מסירה חלופית, קרדיט, או החזר מתאים."],afterList:["שום דבר בתנאי קונים אלה אינו גורע מזכויות קוגנטיות של צרכנים לפי הדין החל."]},{h:"8. תיקונים, שינויים ואישורים",paragraphs:['אלא אם צוין אחרת, כל שירות עשוי לכלול מספר מוגבל של תיקונים, סבבי הערות, התאמות או שינויים. היקף התיקונים, לוחות הזמנים, ומה נחשב ל"שינוי מהותי" או "עבודה חדשה" ייקבעו לפי דף השירות, הבריף, התקשורת בתוך הפלטפורמה, או כל תנאי ייעודי אחר.',"אם תבקש שינוי שחורג מהבריף המקורי, מהיקף השירות שנרכש, או ממספר התיקונים הכלול, אנו רשאים לדרוש תשלום נוסף, לוחות זמנים נוספים, או פתיחת הזמנה חדשה.","אם אינך מגיב, מאשר, מספק חומרים או שולח הערות בתוך פרק זמן סביר, אנו רשאים לראות בעבודה כמעוכבת על ידך, להקפיא טיפול, לסגור הזמנה, או לראות את התוצר כמאושר לצורכי המשך תהליך, בכפוף לנסיבות."]},{h:"9. מסירה וקבלה",paragraphs:["תוצרים עשויים להימסר באמצעות הפלטפורמה, באמצעות קישור, הורדה, קנבס, גלריה, קבצים, הודעה, או בכל אמצעי דיגיטלי אחר שאנו נעמיד.","באחריותך לבדוק את התוצר בסמוך למסירתו ולהודיע לנו על ליקוי מהותי בתוך פרק זמן סביר. אם לא נמסרה התנגדות מנומקת בתוך התקופה שתוגדר בממשק, בהצעה, או תוך פרק זמן סביר בנסיבות העניין, נוכל לראות בתוצר כתוצר שהתקבל ואושר."]},{h:"10. בעלות וזכויות בתוצרים",paragraphs:["בכפוף לתשלום מלא של כל הסכומים המגיעים בגין ההזמנה, ובכפוף לכל מגבלה המצוינת בדף השירות, בתנאים אלה או במסמך ייעודי, אתה תקבל את הזכויות בתוצר הסופי שסופק לך לשימוש בהתאם למטרת השירות שהוזמנה.","אלא אם צוין אחרת במפורש:"],list:["העברת זכויות, ככל שהיא חלה, תתבצע רק לאחר תשלום מלא.","זכויות בקבצי מקור, גרסאות עבודה, טיוטות, אלמנטים שלא נבחרו, פרומפטים, תבניות, workflows, שיטות עבודה, assets כלליים, וכלי מערכת של Boardspace או של הקריאייטור, אינן נכללות אוטומטית בהעברה.","זכויות צד שלישי, חומרי stock, נכסים ברישיון, או כל רכיב שהזכויות בו מוגבלות, יישארו כפופות לתנאי הרישיון החל עליהם."],afterList:["אינך רשאי לרשום, להציג או לטעון לבעלות בזכויות שמעבר למה שניתן לך במפורש."]},{h:"11. רישיון תצוגה ל-Boardspace ולקריאייטור",paragraphs:["כחלק מהשימוש בפלטפורמה, אתה מסכים כי, אלא אם בחרת או קיבלת מסלול חסוי או סודי, או אלא אם אישרנו אחרת בכתב, Boardspace והקריאייטור הרלוונטי יהיו רשאים להציג את התוצר הסופי או חלקים סבירים ממנו לצורכי:"],list:["פורטפוליו;","קיר עבודות;","גלריה;","case studies;","חומרים שיווקיים;","רשתות חברתיות;","הצגת יכולות מקצועיות."],afterList:["רישיון זה יהיה לא-בלעדי, עולמי, ללא תמלוגים, ולמטרות תצוגה, שיווק עצמי והצגת עבודות בלבד. רישיון זה אינו מתיר מכירה חוזרת של התוצר, רישוי משנה שלו, או שימוש בו בדרך המטעה כאילו Boardspace או הקריאייטור הם בעלי הזכויות המסחריות הבלעדיות בתוצר.","אם ההזמנה כוללת מידע רגיש, פרויקט חסוי, נכס פרטי, או חומר שלא פורסם עדיין, עליך ליידע אותנו מראש. במקרים כאלה, ייתכן שנגביל, נדחה או נמנע פרסום או תצוגה של העבודה."]},{h:"12. opt-out או מסלול חסוי",paragraphs:["עבור שירותים מסוימים, ייתכן שנציע אפשרות למסלול חסוי, ללא פרסום, או עם דחיית פרסום. אם אפשרות כזו זמינה, תנאיה, עלותה והיקפה יוצגו בפלטפורמה או בהצעה הרלוונטית. בהיעדר בחירה מפורשת במסלול כזה, יחול סעיף התצוגה שבסעיף 11."]},{h:"13. קריאייטורים, ספקים והתקשרות ישירה",paragraphs:["שירותים מסוימים עשויים להתבצע על ידי קריאייטורים, ספקים, או נותני שירותים הפועלים דרך Boardspace. אלא אם הותר אחרת בכתב, אינך רשאי להשתמש בפלטפורמה כדי לעקוף את Boardspace, להתקשר ישירות עם קריאייטור שהכרת דרך הפלטפורמה ל
604צורך עסקה מחוץ לפלטפורמה, או לבקש ממנו לבצע עבודה מחוץ למערכת באופן שנועד לעקוף עמלות, מנגנוני תשלום או תהליכי הפלטפורמה.","אנו רשאים לנקוט צעדים במקרה של עקיפה, לרבות הגבלת חשבון, ביטול הזמנות, או אמצעי אכיפה חוזיים אחרים, בכפוף לדין החל."]},{h:"14. שימוש אסור בתוצרים",paragraphs:["אינך רשאי להשתמש בשירותים או בתוצרים:"],list:["לצורך פעולה בלתי חוקית;","לצורך הטעיה, הונאה או התחזות;","לצורך פגיעה בזכויות צד שלישי;","לצורך פרסום מטעה או פוגעני;","לצורך החלטות מקצועיות או בטיחותיות בסיכון גבוה ללא בדיקה עצמאית;","באופן שמפר כל דין, רישיון או חובה רגולטורית החלה עליך."]},{h:"15. תוצרים מבוססי AI והיעדר אחריות מקצועית",paragraphs:["חלק מהתוצרים בפלטפורמה נוצרים, נערכים או מושפעים מכלי AI או תהליכים אוטומטיים. תוצרים כאלה עשויים לכלול שגיאות, אי-דיוקים, הטיות, דמיון לתוצרים אחרים, או חוסר התאמה למטרה מסוימת.","איננו נותנים ייעוץ מקצועי, אדריכלי, הנדסי, משפטי, בטיחותי, שמאי, מסחרי או רגולטורי. עליך לבדוק כל תוצר לפני שימוש מעשי, עסקי, שיווקי, חוזי, מקצועי או פומבי."]},{h:"16. תלונות, מחלוקות ותמיכה",paragraphs:["אם יש לך טענה בנוגע להזמנה, תוצר, חיוב, מסירה או התנהלות דרך הפלטפורמה, עליך לפנות אלינו בהקדם דרך:","אנו רשאים, אך לא חייבים, לבדוק מידע, לבקש מסמכים, לעכב מסירה, להקפיא כספים, להציע פתרון מסחרי, או לקבוע מנגנון טיפול במחלוקת לפי שיקול דעת סביר ובהתאם למדיניות החלה."],insertEmailAfterParagraphIndex:0},{h:"17. אחריות מוגבלת של הפלטפורמה",paragraphs:["Boardspace פועלת כפלטפורמה טכנולוגית ותפעולית. במידה המרבית המותרת לפי דין, איננו אחראים למעשים, מחדלים, הצהרות, טעויות מקצועיות, הפרות זכויות, איחורים, או התנהלות של קריאייטורים, ספקים, לקוחות או צדדים שלישיים, למעט במידה שהדין החל מטיל עלינו אחריות שלא ניתן להגביל.","איננו מתחייבים כי כל הזמנה תושלם, כי כל קריאייטור יהיה זמין, או כי כל תוצר יתאים לציפיותיך הסובייקטיביות."]},{h:"18. הגבלת אחריות",paragraphs:["במידה המרבית המותרת לפי דין, Aquala Holdings Ltd, חברות קשורות, מנהלים, עובדים, נציגים וספקים לא יהיו אחראים לכל נזק עקיף, תוצאתי, מיוחד, אגבי, עונשי, אובדן רווח, אובדן נתונים, אובדן מוניטין או אובדן הזדמנות עסקית הנובעים מהזמנה, מהתוצרים או מהשימוש בפלטפורמה.","בכל מקרה, אחריותנו המצטברת הכוללת כלפיך בקשר להזמנה או לתנאי קונים אלה לא תעלה על הסכום ששילמת בפועל בגין ההזמנה הרלוונטית שבמחלוקת במהלך 12 החודשים שקדמו לאירוע נשוא הטענה.","שום דבר בתנאים אלה אינו גורע מזכויות שלא ניתן להתנות עליהן לפי דין."]},{h:"19. שינויים בתנאי קונים אלה",paragraphs:["אנו רשאים לעדכן תנאי קונים אלה מעת לעת. כאשר נבצע שינוי מהותי, ננקוט באמצעים סבירים כדי להודיע על כך. התאריך בראש המסמך מציין את מועד העדכון האחרון."]},{h:"20. דין חל וסמכות שיפוט",paragraphs:["תנאי קונים אלה יהיו כפופים לדיני קפריסין, בכפוף לזכויות צרכניות קוגנטיות שאינן ניתנות להתניה.","בכפוף לדין החל, לבתי המשפט המוסמכים בלימסול, קפריסין, תהיה סמכות השיפוט הבלעדית בכל עניין הנובע מתנאי קונים אלה או מהשימוש בפלטפורמה."]},{h:"21. יצירת קשר",paragraphs:["לשאלות, פניות, הודעות ביטול, בירורים או מחלוקות, ניתן ליצור איתנו קשר בכתובת:"],insertEmailAfterParagraphIndex:0,contactBlock:{org:"Aquala Holdings Ltd",address:"Anexartasias 16, Limassol, Cyprus"}}]},b$={acknowledgment:"בהמשך שימוש ברכישה או בהזמנה דרך הפלטפורמה, אתה מאשר שקראת והבנת את תנאי הקונים יחד עם תנאי השימוש ומדיניות הפרטיות.",lastUpdated:"עודכן לאחרונה: 12.4.26"},v$={title:p$,lastUpdated:h$,termsPrivacyIntroLine:g$,document:f$,footer:b$},y$="Creator Agreement – Boardspace.ai",x$="Last updated: April 12, 2026",w$="This Agreement applies in addition to our <terms>General Terms of Use</terms> and <privacy>Privacy Policy</privacy>.",k$={meta:{operatedByLabel:"Operated by:",company:"Aquala Holdings Ltd",registeredAddress:"Registered address: Anexartasias 16, Limassol, Cyprus",contactLabel:"Contact:"},email:"[email protected]",sections:[{h:"1. Introduction and Consent",paragraphs:['This Creator Agreement (the "Agreement") governs the participation, onboarding, use, service delivery, payment receipt, rights, and obligations of every creator, freelancer, service provider, or creator applicant operating through Boardspace.ai (the "Creator", "you").'],paragraphsContinued:["In case of conflict between this Agreement and the General Terms of Use, this Agreement prevails with respect to your creator activity through the platform.","By registering, checking a checkbox, submitting an application, accepting a project, uploading work, receiving payment, or using the creator flow in the platform, you confirm that you have read, understood, and agreed to this Agreement."]},{h:"2. Independent Contractor Status",paragraphs:["The Creator acts solely as an independent contractor. Nothing in this Agreement creates an employer-employee relationship, partnership, agency, joint venture, representation, franchise, or authorized-signatory relationship between the Creator and Aquala Holdings Ltd or Boardspace.","The Creator is not authorized to bind Boardspace, or present themselves as an employee, official representative, partner, or authorized signatory of the platform unless expressly approved in writing.","The Creator is solely responsible for all taxes, reporting, insurance, social obligations, licensing, business registration, withholding, and other regulatory obligations applicable under law."]},{h:"3. Eligibility, Registration, and Approval",paragraphs:["Boardspace may approve or reject any creator application at its sole discretion. We may request information, documents, portfolio materials, identity details, professional data, experience evidence, tax information, payout details, work samples, or any other materials needed for evaluation, onboarding, security, compliance, quality, or operations.","Approval as a creator does not grant entitlement to a specific work volume, exclusivity, minimum income, or any commitment from us to route projects."]},{h:"4. Creator Profile and Profile Content",paragraphs:["You may be required to create a profile and upload profile photo, professional description, portfolio, expertise areas, languages, availability, offered services, pricing, service tiers, or other information. You are responsible for ensuring all information is accurate, current, lawful, non-misleading, and does not infringe third-party rights.","We may edit, format, classify, display, hide, suspend, remove, or change how your profile, services, or works are presented on the platform, at our reasonable discretion."]},{h:"5. Accepting and Performing Projects",paragraphs:["Projects, orders, or tasks may be assigned to you, offered to you, selected by you, or performed under another mechanism available on the platform. You are not required to accept every project, but once you accept or commit to a project, you must perform it professionally, on time, and in accordance with the brief, instructions, service scope, platform policies, and a reasonable standard of quality and professional care.","You undertake to:"],list:["meet agreed timelines;","communicate professionally and respectfully;","deliver outputs that materially match the approved brief;","promptly report delays, constraints, technical problems, or inability to perform;
604","not submit copied, infringing, or unauthorized outputs."]},{h:"6. Revisions, Standards, and Quality",paragraphs:["A service may include a limited number of revisions or update rounds. You must perform included revisions within reasonable scope and according to the service tier, original brief, and Boardspace guidelines.","You are not required to provide free additional work that constitutes new work, scope expansion, material direction change, or revisions outside the sold service scope. In such cases, Boardspace may determine additional pricing, timeline extension, reassignment, or another solution.","Boardspace may define quality procedures, work templates, submission rules, file standards, formats, branding rules, communication rules, or delivery requirements, and you agree to comply."]},{h:"7. Payments, Revenue Split, and Payouts",paragraphs:["Unless otherwise agreed in writing or explicitly stated for a specific service, the Creator is entitled to 80% of the total consideration agreed with and approved by the customer through the platform for the relevant order, and Boardspace is entitled to 20% as platform, operations, management, marketing, payment processing, support, and mediation fee.",'For this section, "total consideration" means the full order price agreed with the customer through the platform, before allocation between Creator and Boardspace.',"Unless explicitly stated otherwise, the Creator's share is calculated as 80% of total consideration even where Boardspace incurs operational, processing, marketing, service, or other internal costs.","Creator payout will be made only after the customer has actually paid the full relevant amount, and after deliverables are provided as required and approved/accepted, or after a reasonable dispute/review period has passed according to platform mechanisms.","Boardspace may delay, offset, adjust, or cancel payout, in whole or in part, in case of cancellation, refund, chargeback, fraud, Agreement breach, material customer complaint, non-delivery, material quality failure, or any case where Boardspace had to return funds to the customer for that order.","Unless otherwise agreed in writing, the Creator is not entitled to payment for work not ordered and approved through the platform, or for work performed outside Boardspace ordering mechanisms."]},{h:"8. Taxes and Accounting",paragraphs:["The Creator is solely responsible for all tax liabilities, reporting, VAT, income tax, social insurance, withholding, business registration, invoices, receipts, and other financial or regulatory obligations applicable to them.","Boardspace may require tax forms, invoice details, or declarations for operations, compliance, and reporting."]},{h:"9. Client Contact and Non-Circumvention",paragraphs:["A core condition of this Agreement is prohibition of platform circumvention. The Creator undertakes not to, directly or indirectly:"],list:["initiate direct commercial contact with a client introduced through Boardspace for off-platform transactions;","encourage a client to move to direct payment, private WhatsApp, personal email, personal website, social network, third party, or any route intended to bypass Boardspace;","share personal contact details or request client contact details for bypass purposes;","perform off-platform work for a client introduced through Boardspace without our prior explicit written approval;","attempt to bypass platform fees, payment flows, ordering mechanisms, or platform controls."],afterList:["This prohibition also applies if the Creator identifies the client, their business, property, or brand through other sources after the initial contact/opportunity was discovered via Boardspace.","Breach of this section constitutes a material breach and entitles Boardspace to any remedy available by law, including suspension, termination, payout forfeiture, offset, damages claims, or appropriate contractual enforcement, subject to applicable law."]},{h:"10. Confidentiality and Non-Use",paragraphs:["During your platform activity, you may be exposed to confidential or sensitive information, including briefs, client files, outputs, project details, prices, workflows, contact details, business plans, usage data, assets, addresses, documents, and other non-public information.","You undertake to:"],list:["keep such information strictly confidential;","use it only to perform services through the platform;","not disclose, transfer, copy, publish, or exploit it for any other purpose;","not use such information to compete with Boardspace, bypass the platform, or contact clients directly."],afterList:["This confidentiality obligation continues after termination, as long as the information is not lawfully public."]},{h:"11. Intellectual Property – Work Deliverables",paragraphs:["Unless explicitly stated otherwise in a service track, designated document, or written instruction by Boardspace, all rights in final outputs prepared specifically for a client through a platform order are transferred or licensed to the client under relevant Buyer Terms and only after full client payment.","Regarding such outputs, the Creator agrees that:"],list:["they may not resell or relicense such outputs or use them commercially for another client;","they will perform all reasonable actions needed to complete rights transfer or required licensing;","where applicable law requires additional assignment/waiver documents, the Creator will reasonably cooperate."]}
604,{h:"12. Intellectual Property – Tools, Background Assets, and Tool of Trade",paragraphs:["Notwithstanding the above, the Creator retains ownership of background assets, methods, know-how, generic templates, generic prompts, tools, workflows, pre-existing assets, libraries, techniques, and professional skills they had before the project or that were not created specifically for a certain client, unless otherwise agreed in writing.","However, where such background assets are embedded in a final output delivered to a client, the Creator grants all licenses needed for Boardspace and the client to use the final output as sold through the platform."]},{h:"13. Portfolio and Display Rights",paragraphs:["Subject to Buyer Terms, project settings, confidentiality tracks where applicable, and Boardspace instructions, the Creator may display work completed through the platform for:"],list:["personal portfolio;","personal website;","social media;","professional capability showcase;","reasonable self-promotion."],nestedList:{intro:"This right is subject to all of the following:",items:["no publication of confidential information, confidential briefs, internal documents, pre-launch materials, or sensitive client details without approval;","no misleading presentation suggesting client endorsement where none was given;","Boardspace may require delay, modification, removal, blurring, anonymization, or non-publication in case of sensitive projects, client complaints, confidentiality obligations, legal risks, or non-compliance with platform terms;","where required by our guidelines, work must be attributed to Boardspace or identified as completed through the platform."]},afterList:["The Creator acknowledges that their display right is always subject to client rights, purchase terms, and Boardspace's reasonable discretion."]},{h:"14. License to Boardspace",paragraphs:["The Creator grants Boardspace a non-exclusive, worldwide, royalty-free license to use their display name, professional name, profile, portfolio, work samples, and uploaded materials for:"],list:["platform operations;","service presentation;","Boardspace marketing and promotion;","work showcases, galleries, showcase pages, and community features;","onboarding, quality control, moderation, support, and compliance."],afterList:["This license applies only to the reasonable extent required for platform operation and creator presentation."]},{h:"15. Creator Representations and Commitments",paragraphs:["The Creator represents and warrants that:"],list:["they have legal and professional capacity to enter this Agreement;","all information provided to Boardspace is true, complete, and current;","they will not infringe third-party rights;","they will not upload prohibited, misleading, infringing, malicious, or unlawful content;","they will not use prohibited automation, bots, scraping, or manipulation of rankings, profiles, or orders;","they will comply with applicable law, including intellectual property, privacy, tax, consumer protection, advertising, and commercial communication laws."]},{h:"16. Ratings, Reviews, and Reputation",paragraphs:["Boardspace may display ratings, comments, statistics, badges, quality tags, response times, or other performance indicators related to creators. We do not guarantee display of specific ratings, concealment of reviews, or preservation of any specific ranking, exposure, or status.","You may not fake reviews, induce misleading reviews, or manipulate reputation, ranking, or performance data."]},{h:"17. Suspension, Removal, or Termination",paragraphs:["Boardspace may restrict, suspend, remove, de-prioritize project matching, remove content, hide profile, freeze payouts, or terminate your creator activity at reasonable discretion if:"],list:["you breached this Agreement or other applicable documents;","you acted offensively, misleadingly, unprofessionally, or unlawfully;","repeated complaints were received;","you engaged in circumvention, confidentiality breach, rights infringement, or material quality breach;","you failed onboarding, compliance, or verification requirements;","your continued activity creates legal, commercial, security, or operational risk."],afterList:["Termination does not affect accrued rights and obligations, including confidentiality duties, offsets, enforcement rights, or provisions intended to survive termination."]},{h:"18. No Guarantee of Opportunities or Income",paragraphs:["Boardspace does not guarantee projects, work volume, income, minimum orders, exclusivity, or specific algorithmic preference, referral, exposure, or placement.","Any assignment, display, or matching depends on business, operational, qual
604ity, technological, and other considerations at our discretion."]},{h:"19. Disclaimer and Limitation of Liability",paragraphs:["To the maximum extent permitted by law, Boardspace, Aquala Holdings Ltd, its affiliates, directors, employees, representatives, and suppliers are not liable for lost income, lost opportunities, lost goodwill, or any indirect, consequential, special, incidental, or punitive damage arising from your participation, lack of projects, client disputes, payout delays, suspension, or termination.","In all events, our aggregate liability to you shall not exceed the amount actually paid to you through the platform during the 12 months preceding the event giving rise to the claim.","Nothing in these Terms limits any rights that cannot be waived under applicable law."]},{h:"20. Indemnification",paragraphs:["The Creator agrees to indemnify, defend, and hold harmless Aquala Holdings Ltd, Boardspace, affiliates, directors, employees, representatives, and suppliers from any claim, damage, liability, expense, or cost, including reasonable attorneys' fees, arising from:"],list:["breach of this Agreement;","violation of third-party rights;","content, output, or materials created, uploaded, delivered, or used by the Creator;","violation of applicable law;","unprofessional, misleading, or negligent conduct by the Creator."]},{h:"21. Changes to this Agreement",paragraphs:["We may update this Agreement from time to time. When material changes are made, we will take reasonable measures to notify you.","Continued use of the platform as a creator after changes take effect is subject to applicable law and any required consent procedures."]},{h:"22. Governing Law and Jurisdiction",paragraphs:["This Agreement is governed by the laws of Cyprus.","Subject to applicable law, the competent courts in Limassol, Cyprus shall have exclusive jurisdiction over any dispute related to this Agreement, your creator activity, or use of the platform."]},{h:"23. Contact",paragraphs:["For questions, documents, complaints, requests, or notices regarding this Agreement, you may contact us at:"],insertEmailAfterParagraphIndex:0,contactBlock:{org:"Aquala Holdings Ltd",address:"Anexartasias 16, Limassol, Cyprus"}}]},_$={acknowledgment:"By continuing to act as a creator on the platform, you acknowledge that you have read and understood this Creator Agreement together with the Terms of Use and Privacy Policy.",lastUpdated:"Last updated: April 12, 2026"},vg={title:y$,lastUpdated:x$,termsPrivacySupplementLine:w$,document:k$,footer:_$},S$="הסכם קריאייטורים – Boardspace.ai",C$="עודכן לאחרונה: 12.4.26",T$="הסכם זה חל בנוסף ל<terms>תנאי השימוש הכלליים</terms> של Boardspace.ai ול<privacy>מדיניות הפרטיות</privacy> שלנו.",j$={meta:{operatedByLabel:"מופעל על ידי:",company:"Aquala Holdings Ltd",registeredAddress:"כתובת רשומה: Anexartasias 16, Limassol, Cyprus",contactLabel:"יצירת קשר:"},email:"[email protected]",sections:[{h:"1. מבוא והסכמה",paragraphs:['הסכם קריאייטורים זה ("ההסכם") מסדיר את תנאי ההשתתפות, ההצטרפות, השימוש, אספקת השירותים, קבלת תשלומים, הזכויות והחובות של כל קריאייטור, יוצר, פרילנסר, ספק שירות, נותן שירותים, או מועמד לקריאייטור הפועל באמצעות Boardspace.ai ("הקריאייטור", "אתה").'],paragraphsContinued:["במקרה של סתירה בין הסכם זה לבין תנאי השימוש הכלליים, יגברו הוראות הסכם זה בכל הנוגע לפעילותך כקריאייטור דרך הפלטפורמה.","על ידי הרשמה, סימון checkbox, הגשת מועמדות, קבלת פרויקט, העלאת עבודות, קבלת תשלום, או שימוש בקריאייטור flow של הפלטפורמה, אתה מאשר כי קראת, הבנת והסכמת להסכם זה."]},{h:"2. מעמדך כקבלן עצמאי",paragraphs:["הקריאייטור פועל כקבלן עצמאי בלבד. שום דבר בהסכם זה אינו יוצר יחסי עובד-מעביד, שותפות, סוכנות, מיזם משותף, שליחות, זיכיון או ייצוג בין הקריאייטור לבין Aquala Holdings Ltd או Boardspace.","הקריאייטור אינו מוסמך להתחייב בשם Boardspace, להציג עצמו כעובד, נציג רשמי, שותף או מורשה חתימה של הפלטפורמה, אלא אם קיבל אישור מפורש ובכתב.","הקריאייטור אחראי באופן בלעדי לכל מס, דיווח, ביטוח, חובה סוציאלית, רישוי, רישום עסקי, ניכוי במקור, או חובה רגולטורית אחרת החלה עליו לפי הדין החל."]},{h:"3. זכאות, רישום ואישור",paragraphs:["Boardspace רשאית, לפי שיקול דעתה הבלעדי, לאשר או לדחות כל בקשת הצטרפות כקריאייטור. אנו רשאים לבקש ממך מידע, מסמכים, תיק עבודות, פרטי זיהוי, מידע מקצועי, הוכחת ניסיון, מידע מס, פרטי תשלום, דוגמאות עבודה, או כל חומר אחר הדרוש לצורך בחינה, onboarding, אבטחה, ציות, איכות או תפעול.","אישור כקריאייטור אינו מקנה זכות לקבלת נפח עבודה מסוים, בלעדיות, מינימום הכנסות, או התחייבות כלשהי מצדנו להפניית עבודות."]},{h:"4. פרופיל קריאייטור ותוכן פרופיל",paragraphs:["ייתכן שתתבקש ליצור פרופיל, להעלות תמונת פרופיל, תיאור מקצועי, תיק עבודות, תחומי התמחות, שפות, זמינות, שירותים מוצעים, מחירים, רמות שירות או מידע אחר. אתה אחראי לכך שכל המידע שתציג יהיה מדויק, עדכני, לא מטעה, חוקי, ואינו מפר זכויות של צד שלישי.","אנו רשאים לערוך, לעצב, לסווג, להציג, להסתיר, להשהות, להסיר, או לשנות את אופן ההצגה של פרופילך, שירותיך או עבודותיך בפלטפורמה, לפי שיקול דעתנו הסביר."]},{h:"5. קבלת עבודות וביצוען",paragraphs:["פרויקטים, הזמנות, או משימות עשויים להיות מוקצים לך, מוצעים לך, נבחרים על ידך, או מבוצעים לפי מנגנון אחר שנעמיד בפלטפורמה. אינך חייב לקבל כל פרויקט, אך לאחר שקיבלת פרויקט או התחייבת לביצועו, עליך לבצע אותו במקצועיות, במועד, ובהתאם לבריף, להנחיות, להיקף השירות, למדיניות הפלטפורמה, ולסטנדרט סביר של איכות וזהירות מקצועית.","אתה מתחייב:"],list:["לעמוד בלוחות זמנים שנקבעו;","לתקשר באופן מקצועי ומכבד;","למסור תוצרים התואמים באופן מהותי לבריף המאושר;","להודיע בהקדם על כל עיכוב, מגבלה, בעיה טכנית או אי-יכולת לבצע;","לא להגיש תוצר שהועתק באופן אסור, הופר, או שאין לך זכויות חוקיות בו."]},{h:"6. תיקונים, סטנדרטים ואיכות",paragraphs:["ייתכן שכל שירות יכלול מספר מוגבל של תיקונים או סבבי עדכון. עליך לבצע תיקונים כלולים בהיקף סביר, בהתאם למסלול השירות, הבריף המקורי, והנחיות Boardspace.",'אין חובה לבצע ללא תשלום עבודה חדשה, הרחבת scope, שינוי מהותי של הכיוון, או תיקונים החורגים מהשירות שנמכר. במקרים כאלה, Boardspace רשאית להחליט על תמחור נוסף, הרחבת לו"ז, שיוך מחדש, או פתרון אחר.',"Boardspace רשאית לקבוע נהלי איכות, תבניות עבודה, כללי הגשה, תקני קבצים, פורמטים, כללי מיתוג, כללי תקשורת, או דרישות delivery, ואתה מתחייב לעמוד בהם."]},{h:"7. תשלומים, חלוקת הכנסות ו-payouts",paragraphs:["אלא אם הוסכם אחרת בכתב או צוין אחרת ביחס לשירות מסוים, הקריאייטור יהיה זכאי ל-80% מהתמורה הכוללת שסוכמה עם הלקוח ואושרה דרך הפלטפורמה בגין ההזמנה הרלוונטית, ו-Boardspace תהיה זכאית ל-20% מהתמורה האמורה כעמלת פלטפורמה, תפעול, ניהול, שיווק, סליקה, תמיכה ותיווך.",'לצורך סעיף זה, "התמורה הכוללת" משמעה המחיר הכולל של ההזמנה כפי שסוכם עם הלקוח דרך הפלטפורמה, לפני חלוקת ההכנסה בין הקריאייטור לבין Boardspace.',"אלא אם צוין אחרת במפורש, חלקו של הקריאייטור יחושב לפי 80% מהתמורה הכוללת כאמור, גם אם ל-Boardspace קיימות עלויות תפעול, סליקה, שיווק, שירות, או הוצאות פנימיות אחרות בקשר להזמנה.","payout לקריאייטור יבוצע רק לאחר שהלקוח שילם בפועל את מלוא הסכום הרלוונטי, ולאחר שהתוצר נמסר בהתאם לדרישות ההזמנה ואושר, התקבל, או שחלפה תקופת dispute או בדיקה סבירה בהתאם למנגנון הפלטפורמה.","Boardspace רשאית לעכב, לקזז, להתאים או לבטל payout, כולו או חלקו, במקרה של ביטול עסקה, החזר, chargeback, הונאה, הפרת הסכם, תלונת לקוח מהותית, אי-מסירה, כשל איכות מהותי, או כל מקרה שבו Boardspace נדרשה להשיב ללקוח סכום בקשר להזמנה.","אלא אם הוסכם אחרת בכתב, הקריאייטור לא יהיה זכאי לכל תשלום בגין עבודה שלא הוזמנה ואושרה דרך הפלטפורמה, או בגין עבודה שבוצעה מחוץ למנגנון ההזמנה של Boardspace."]},{h:"8. מסים וחשבונאות",paragraphs:['הקריאייטור אחראי באופן בלעדי לכל חבות מס, דיווח, מע"מ, מס הכנסה, ביטוח לאומי, ניכוי במקור, רישום עסקי, חשבונית, קבלה, או כל חובה פיננסית ורגולטורית אחרת החלה עליו.',"Boardspace רשאית לדרוש ממך מסמכים, טפסי מס, פרטי חשבונית, או הצהרות לצורכי תפעול, ציות ודיווח."]},{h:"9. קשר עם לקוחות ואיסור עקיפה",paragraphs:["אחד התנאים המהותיים בהסכם זה הוא איסור עקיפה של הפלטפורמה. הקריאייטור מתחייב שלא, במישרין או בעקיפין:"],list:["ליצור קשר עסקי ישיר עם לקוח, קונה או מזמין שהכיר דרך Boardspace לצורך ביצוע עסקה מחוץ לפלטפורמה;","להציע ללקוח לעבור לתשלום ישיר, WhatsApp פרטי, אימייל אישי, אתר אישי, רשת חברתית, צד שלישי, או כל מסלול אחר שנועד לעקוף את Boardspace;","למסור פרטי קשר אישיים או לבקש פרטי קשר של לקוח לצורך עקיפה;","לבצע עבור לקוח שהכיר דרך Boardspace עבודה מחוץ לפלטפורמה, ללא אישור מפורש ובכתב מאיתנו;","לנסות לעקוף עמלות, מנגנוני תשלום, מנגנוני הזמנה או בקרות של הפלטפורמה."],afterList:["איסור זה חל גם אם הקריאייטור הצליח לזהות את הלקוח, את העסק שלו, את הנכס, את המותג שלו, או להגיע אליו דרך מקורות אחרים לאחר שהקשר הראשוני או ההזדמנות התגלו באמצעות Boardspace.","הפרת סעיף זה תיחשב להפרה יסודית של ההסכם, ותזכה את Boardspace בכל סעד זמין לפי דין, לרבות השעיה, סיום, שלילת payouts, קיזוז, דרישת פיצוי, או אכיפה חוזית מתאימה, בכפוף לדין החל."]},{h:"10. סודיות ואי-שימוש",paragraphs:["במהלך פעילותך בפלטפורמה, ייתכן שתיחשף למידע סודי או רגיש, לרבות: בריפים, קבצי לקוח, תוצרים, פרטי פרויקט, מחירים, workflows, פרטי קשר, תוכניות עסקיות, נתוני שימוש, נכסים, כתובות, מסמכים, או כל מידע שאינו פומבי.","אתה מתחייב:"],list:["לשמור מידע כזה בסודיות מלאה;","להשתמש בו רק לצורך ביצוע השירותים דרך הפלטפורמה;","לא לחשוף, להעביר, להעתיק, לפרסם או לנצל אותו לכל מטרה אחרת;","לא להשתמש במידע כזה כדי להתחרות ב-Boardspace, לעקוף את הפלטפורמה, או לפנות ללקוח ישירות."],afterList:["חובת הסודיות תחול גם לאחר סיום ההסכם, כל עוד המידע אינו פומבי כדין."]},{h:"11. קניין רוחני – תוצרי עבודה",paragraphs:["אלא אם צוין אחרת במפורש במסלול שירות, במסמך ייעודי, או בהוראה כתובה של Boardspace, כל הזכויות בתוצר הסופי שהוכן במיוחד עבור לקוח במסגרת הזמנה דרך הפלטפורמה יועברו או יורשו ללקוח בהתאם לתנאי הקונים הרלוונטיים ורק לאחר תשלום מלא מצד הלקוח.","הקריאייטור מסכים כי ביחס לתוצרים כאלה:"],list:["הוא אינו רשאי למכור אותם מחדש, לרשיין אותם מחדש, או לעשות בה×
604 שימוש מסחרי עבור לקוח אחר;","הוא יבצע כל פעולה סבירה הנדרשת להשלמת העברת הזכויות או ההרשאות הנדרשות;","ככל שהדין החל מחייב מסמך נוסף לצורך המחאה, אישור, ויתור או השלמת הזכויות, הקריאייטור ישתף פעולה באופן סביר."]},{h:"12. קניין רוחני – כלים, נכסי רקע ו-tool of trade",paragraphs:["למרות האמור לעיל, הקריאייטור שומר בבעלותו כל זכות בנכסי רקע, שיטות עבודה, ידע מקצועי, תבניות כלליות, prompts כלליים, כלים, workflows, assets קיימים מראש, ספריות, טכניקות, וכישורים מקצועיים שברשותו לפני הפרויקט או שאינם נוצרים במיוחד עבור לקוח מסוים, אלא אם הוסכם אחרת בכתב.","עם זאת, ככל שנכסי רקע כאלה משולבים בתוצר סופי שנמסר ללקוח, הקריאייטור מעניק את כל הרישיונות הדרושים כדי ש-Boardspace והלקוח יוכלו להשתמש בתוצר הסופי כפי שנמכר דרך הפלטפורמה."]},{h:"13. זכויות פורטפוליו ותצוגה",paragraphs:["בכפוף לתנאי הקונים, להגדרות הפרויקט, למסלול חסוי אם קיים, ולהוראות Boardspace, הקריאייטור רשאי להציג עבודות שביצע דרך הפלטפורמה לצורכי:"],list:["פורטפוליו אישי;","אתר אישי;","רשתות חברתיות;","הצגת יכולות מקצועיות;","קידום עצמי סביר."],nestedList:{intro:"זכות זו כפופה לכל התנאים הבאים:",items:["אין לפרסם מידע סודי, בריף סודי, מסמכים פנימיים, חומרים לפני launch, או פרטי לקוח רגישים ללא אישור;","אין להציג את העבודה באופן המטעה כאילו הלקוח אישר המלצה מסחרית שלא ניתנה;","Boardspace רשאית לדרוש דחייה, שינוי, הסרה, טשטוש, אנונימיזציה, או הימנעות מפרסום במקרה של פרויקט רגיש, תלונת לקוח, חובת סודיות, סיכון משפטי, או אי-התאמה לתנאי הפלטפורמה;","ככל שנדרש לפי הנחיותינו, יש לייחס את העבודה ל-Boardspace או לציין כי בוצעה דרך הפלטפורמה."]},afterList:["הקריאייטור מאשר כי זכות התצוגה שלו כפופה תמיד לזכויות הלקוח, לתנאי הרכישה, ולשיקול הדעת הסביר של Boardspace."]},{h:"14. רישיון ל-Boardspace",paragraphs:["הקריאייטור מעניק ל-Boardspace רישיון לא-בלעדי, עולמי, ללא תמלוגים, להשתמש בשם התצוגה שלו, בשם המקצועי שלו, בפרופיל, בתיק העבודות, בדוגמאות עבודה, ובחומרים שהוא מעלה לפלטפורמה לצורך:"],list:["תפעול הפלטפורמה;","הצגת שירותים;","שיווק וקידום Boardspace;","הצגת עבודות, גלריה, showcase וקהילה;","onboarding, quality control, moderation, support וציות."],afterList:["רישיון זה יחול רק במידה הסבירה הנדרשת לצורך פעילות הפלטפורמה והצגת הקריאייטור בה."]}
604,{h:"15. מצגים והתחייבויות של הקריאייטור",paragraphs:["הקריאייטור מצהיר ומתחייב כי:"],list:["יש לו הכשירות המשפטית והמקצועית להיכנס להסכם זה;","כל מידע שמסר ל-Boardspace הוא נכון, מלא ומעודכן;","הוא לא יפר זכויות של צדדים שלישיים;","הוא לא יעלה תוכן אסור, מטעה, מפר, זדוני או בלתי חוקי;","הוא לא ישתמש באמצעים אוטומטיים אסורים, בוטים, scraping או מניפולציות בדירוגים, פרופילים או הזמנות;","הוא יציית לכל דין החל עליו, לרבות דיני קניין רוחני, פרטיות, מס, הגנת צרכן, פרסום, ותקשורת מסחרית."]},{h:"16. דירוגים, ביקורות ומוניטין",paragraphs:["Boardspace רשאית להציג דירוגים, תגובות, סטטיסטיקות, badge-ים, תגיות איכות, זמני תגובה, או אינדיקציות ביצוע אחרות בקשר לקריאייטור. איננו מתחייבים להציג דירוג מסוים, לא להסתיר ביקורת, ולא לשמר מיקום, חשיפה או סטטוס מסוים בפלטפורמה.","אינך רשאי לזייף ביקורות, לעודד ביקורות מטעות, או לבצע מניפולציה במוניטין, בדירוג או בנתוני ביצוע."]},{h:"17. השעיה, הסרה או סיום",paragraphs:["Boardspace רשאית להגביל, להשעות, להסיר, לבטל התאמה לפרויקטים, להוריד תכנים, להסתיר פרופיל, להקפיא payouts, או לסיים את פעילותך כקריאייטור, לפי שיקול דעתה הסביר, אם:"],list:["הפרת הסכם זה או כל מסמך אחר החל עליך;","פעלת באופן פוגעני, מטעה, לא מקצועי או לא חוקי;","קיבלת תלונות חוזרות;","ביצעת עקיפה, הפרת סודיות, הפרת זכויות או הפרת איכות מהותית;","לא עמדת בדרישות onboarding, ציות או אימות;","המשך פעילותך יוצר סיכון משפטי, מסחרי, אבטחתי או תפעולי."],afterList:["סיום ההסכם לא יפגע בזכויות שכבר נצברו, לרבות חובות סודיות, קיזוזים, זכויות אכיפה, או הוראות שמהותן לשרוד את סיום ההסכם."]},{h:"18. היעדר התחייבות להזדמנויות או הכנסה",paragraphs:["Boardspace אינה מתחייבת לספק לך פרויקטים, נפח עבודה, הכנסה, מינימום הזמנות, בלעדיות, או העדפה מסוימת באלגוריתם, בהפניות, בחשיפה או במיקום.","כל שיבוץ, הצגה או התאמה תלויים בשיקולים עסקיים, תפעוליים, איכותיים, טכנולוגיים ואחרים לפי שיקול דעתנו."]},{h:"19. פטור והגבלת אחריות",paragraphs:["במידה המרבית המותרת לפי דין, Boardspace, Aquala Holdings Ltd, חברות קשורות, מנהלים, עובדים, נציגים וספקים לא יהיו אחראים לכל אובדן הכנסה, אובדן הזדמנות, אובדן מוניטין, נזק עקיף, תוצאתי, מיוחד, אגבי או עונשי הנובע מהשתתפותך בפלטפורמה, מהיעדר פרויקטים, ממחלוקת עם לקוח, מעיכוב payout, מהשעיה או מסיום ההסכם.","בכל מקרה, אחריותנו המצטברת כלפיך לא תעלה על הסכום ששולם לך בפועל דרך הפלטפורמה ב-12 החודשים שקדמו לאירוע נשוא הטענה.","שום דבר בתנאים אלה אינו גורע מזכויות שלא ניתן להתנות עליהן לפי דין."]},{h:"20. שיפוי",paragraphs:["הקריאייטור מסכים לשפות, להגן ולפטור מאחריות את Aquala Holdings Ltd, Boardspace, חברות קשורות, מנהלים, עובדים, נציגים וספקים, מפני כל תביעה, נזק, חבות, הוצאה או עלות, לרבות שכר טרחת עורכי דין סביר, הנובעים מ:"],list:["הפרת הסכם זה;","הפרת זכויות של צד שלישי;","תוכן, תוצר או חומר שהקריאייטור יצר, העלה, מסר או השתמש בו;","הפרת דין החל;","התנהלות מקצועית לקויה, מטעה או רשלנית מצד הקריאייטור."]},{h:"21. שינויים בהסכם",paragraphs:["אנו רשאים לעדכן הסכם זה מעת לעת. כאשר נבצע שינויים מהותיים, ננקוט באמצעים סבירים להודיע על כך.","המשך שימוש בפלטפורמה כקריאייטור לאחר כניסת השינויים לתוקף כפוף לדין החל ולהליכי הסכמה נדרשים."]},{h:"22. דין חל וסמכות שיפוט",paragraphs:["הסכם זה כפוף לדיני קפריסין.","בכפוף לדין החל, הסמכות הבלעדית לדון בכל מחלוקת הקשורה להסכם זה, לפעילותך כקריאייטור, או לשימוש בפלטפורמה, תהיה נתונה לבתי המשפט המוסמכים בלימסול, קפריסין."]},{h:"23. יצירת קשר",paragraphs:["לשאלות, מסמכים, תלונות, בקשות, או הודעות בקשר להסכם זה, ניתן ליצור איתנו קשר בכתובת:"],insertEmailAfterParagraphIndex:0,contactBlock:{org:"Aquala Holdings Ltd",address:"Anexartasias 16, Limassol, Cyprus"}}]},N$={acknowledgment:"בהמשך פעילותך כקריאייטור בפלטפורמה, אתה מאשר שקראת והבנת את הסכם הקריאייטורים יחד עם תנאי השימוש ומדיניות הפרטיות.",lastUpdated:"עודכן לאחרונה: 12.4.26"},P$={title:S$,lastUpdated:C$,termsPrivacySupplementLine:T$,document:j$,footer
604:N$},A$="No selection",E$="Sketch-3D Lab — Research",I$="Professional modeling",D$="Unsaved changes",R$="Project name",L$="Search (coming soon)",O$={logo_dashboard_aria:"Go to dashboard",top_toolbar_aria:"Sketch3D top toolbars",context_title:"Toolbars",largeToolset:"Large Toolset",standard:"Standard",history:"History",cameraViews:"Camera Views",display:"Display",warehouse:"Tool Panel",defaultTray:"Default Tray",pinned:"Pinned"},M$={select_edit:"Select / edit",draw:"Draw",model_modify:"Model / modify",architecture_annotation:"Architecture / annotation",navigation:"Navigation"},z$="Sketch-3D tools",B$={trays_kicker:"Model trays",inspector_section_label:"Inspector",inspector_kicker:"Inspector",inspector_model:"Model defaults",inspector_multi_title:"{{count}} items selected",inspector_untitled:"Untitled"},F$={agent:"AI Agent",agent_empty_hint:'Type in Hebrew. Example: "rectangle 8 by 5m, offset 20cm inward, push-pull up 2.70m"',agent_placeholder:"What would you like to build...",agent_send:"Send",agent_error_generic:"Unexpected error. Try again.",agent_error_parse:"Could not parse agent response. Try rephrasing.",agent_error_replicate_timeout:"Agent is slow right now. Try again in a moment.",agent_error_replicate:"Agent temporarily unavailable. Try again in a moment.",agent_error_validation:"Agent response did not match schema. Try rephrasing.",agent_error_no_buttons:"No action triggered. Try asking for something else.",entity_info:"Settings",outliner:"Outliner",materials:"Materials",components:"Components Library",instructor:"Instructor",styles:"Styles",shadows:"Shadows",display:"Display",soften_smooth:"Soften / Smooth",model_info:"Model Info",tags:"Tags",scenes:"Scenes",rail_aria:"Sketch3D tray rail",close_panel:"Close tray panel",outliner_empty:"Draw geometry or add a component to populate the model tree.",materials_hint:"Choose a material to arm the paint bucket, then click a face.",materials_tab_colors:"Colors",materials_tab_materials:"Materials",colors_hint:"Choose a paint color to arm the bucket, then click any unlocked face.",custom_color:"Custom color",use_custom_color:"Use custom color",floor_materials:"Flooring",general_materials:"General / walls",materials_popular:"Popular",materials_wood:"Wood",materials_stone:"Stone",materials_tile:"Tile",materials_concrete:"Concrete",materials_brick:"Brick",materials_carpet:"Carpet",materials_paint:"Paint",materials_user_uploads:"My uploads",apply_material:"Apply to 
604selection",material_editor_hint:"Texture scale, rotation, grout, and area summary.",paint_bucket_armed:"Paint bucket armed. Click a face to fill it.",material_color:"Material color",texture_url:"Texture URL",texture_width:"Tile width",texture_height:"Tile height",texture_rotation:"Rotation",grout_width:"Grout",grout_color:"Grout color",components_hint:"Curated interior components for now. External search/import comes later.",instructor_hint:"Tool guidance will appear here as the active SketchUp-style tool changes.",styles_hint:"Draft, technical plan, white model, and material-preview display styles will live here.",shadows_hint:"Sun/shadow controls are staged here for presentation and client-preview scenes.",display_hint:"Grid, axes, edges, profiles, and face display toggles are collected here.",soften_smooth_hint:"Edge smoothing controls will apply to selected modeled geometry.",model_info_hint:"Project units, statistics, schema version, and model metadata will live here.",room_shell_title:"Room shell",room_shell_hint:"Dimensions are entered in meters and saved internally as millimeters.",room_width:"Width",room_depth:"Depth",room_height:"Height",wall_thickness:"Wall",add_room_shell:"Add room shell",room_floor_name:"Room floor",room_wall_north_name:"North wall",room_wall_south_name:"South wall",room_wall_east_name:"East wall",room_wall_west_name:"West wall",add_base_cabinet:"Add base cabinet",base_cabinet_name:"Base cabinet 600",add_wall_cabinet:"Wall cabinet",wall_cabinet_name:"Wall cabinet 600",add_tall_cabinet:"Tall cabinet",tall_cabinet_name:"Tall cabinet 600",add_fridge:"Fridge",fridge_name:"Fridge 900",add_sink:"Sink",sink_name:"Sink 760",component_furniture:"Furniture library",component_lighting:"Lighting fixtures",component_appliances:"Kitchen appliances",component_closets:"Closet systems",component_kitchen_cabinets:"Kitchen cabinets",component_kitchen_appliances:"Kitchen appliances",component_bathroom:"Bathroom",component_doors_windows:"Doors & windows",component_decoration:"Decor & accessories",category_coming_soon:"Coming soon",user_components:"User components",save_component:"Save",user_components_empty:"Select an object and save it as a reusable component.",add_scene:"Save current view",scene_top_plan:"Top Plan",scene_front_elevation:"Front Elevation",scene_right_elevation:"Right Elevation",scene_inside_view:"Inside View",scenes_empty:"Save camera views for plans, elevations, and client angles.",hide:"Hide",show:"Show",lock:"Lock",unlock:"Unlock"},$$={units_title:"Display units",units_help:"How dimensions are shown across the workspace. Type values in the same unit when editing.",unit_mm:"mm",unit_cm:"cm",unit_m:"m"},V$={hint_none:"Pick an entity in the viewport, or tune the default extrusion for new polygons.",multi_edit:"Multi-edit arrives in Phase D — select a single item for now.",guide_readonly:"Tape-measure guides are edited with the eraser or tape tool — no fields here.",name_label:"Name",model_defaults_title:"Model defaults",default_depth_help:"Default depth for new closed polygons (mm). You can override per polygon after creation.",default_extrusion_depth:"Default extrusion depth",line_style_title:"Line style",line_style_thin:"Thin",line_style_thick:"Thick"},U$={"line-hairline":"Hairline","line-thin":"Thin","line-thick":"Thick","line-dashed":"Dashed","line-guide":"Guide","line-dimension":"Dimension"},q$={new:"New project",open:"Open project",save:"Save",saving:"Saving…",importReference:"Import reference image",undo:"Undo (⌘Z)",redo:"Redo (⌘⇧Z)",dimension:"Dimension",iso:"Iso view (1)",top:"Top (2)",front:"Front (3)",right:"Right (4)",inside:"Inside (5)",toggleAxes:"Toggle axes",toggleGrid:"Toggle grid",lineStyles:"Line styles",warehouse:"Choose what appears in the tool panel",showDefaultTray:"Show side tray"},G$={saving:"Saving…",saved_now:"Saved just now",saved_at:"Saved {{time}}",dirty:"Unsaved",never_saved:"Not saved yet"},W$={title:"My projects",subtitle:"Pick a project to open, rename, or delete.",empty_title:"No saved projects yet",empty_hint:"Click Save after sketching to keep your first project.",card_open:"Open",card_rename:"Rename",card_delete:"Delete",rename_placeholder:"Project name",rename_save:"Save name",rename_cancel:"Cancel",delete_title:"Delete this project?",delete_desc:"The project will be removed permanently. This cannot be undone.",delete_confirm:"Delete",delete_cancel:"Cancel",loading:"Loading…",rel_just_now:"just now",rel_minutes:"{{n}} min ago",rel_hours:"{{n}} hr ago",rel_days:"{{n}} d ago",thumbnail_alt:"Preview of {{name}}"},H$={trigger_label:"Line styles"},K$={file:"File",file_new:"New",file_save:"Save",file_saving:"Saving…",file_import_reference:"Import floor plan/reference",file_open:"Open",file_loading:"Loading…",file_open_empty:"No saved Sketch3D projects",edit:"Edit",edit_undo:"Undo",edit_redo:"Redo",view:"View",view_iso:"Iso",view_top:"Top",view_front:"Front",view_right:"Right",view_inside:"Inside",view_display_sub:"Display",camera:"Camera",camera_hide_axes:"Hide Axes",camera_show_axes:"Show Axes",camera_hide_grid:"Hide Grid",camera_show_grid:"Show Grid",windows:"Windows",default_tray:"Default Tray",show_tray:"Show Tray",toolbars:"Toolbars",win_entity_info:"Settings tray",win_outliner:"Outliner tray",win_materials:"Materials tray",win_components:"Components Library tray",win_instructor:"Instructor tray",win_tags:"Tags tray",win_scenes:"Scenes tray",win_styles:"Styles tray",win_display:"Display tray",display_guide_lines:"Guide line weight (screen px)",display_sketch_lines:"Sketch line weight (screen px)"},Y$={select:"Select",line:"Line",dimension:"Dimension",rectangle:"Rectangle",wallOpening:"Wall Opening",circle:"Circle",arc:"Arc",polygon:"Polygon",refImage:"Import floor plan/reference",pu
604shPull:"Push/Pull",move:"Move",rotate:"Rotate",scale:"Scale",offset:"Offset",section:"Section Plane",eraser:"Eraser",paint:"Paint Bucket",orbit:"Orbit",pan:"Pan",zoomExtents:"Zoom Extents"},Q$={select:"Select: Click an object in the viewport · Delete removes selected items",orbit:"Orbit: Drag to orbit · Scroll to zoom · O",zoomExtents:"Zoom Extents: Frame view (Iso placeholder for now)",line:"Line: Pencil cursor · two clicks on the sketch plane · right-click releases the cursor · L",dimension:"Dimension: click first point, second point, then place the label offset · D",rectangle:"Rectangle: Diagonal corners · Esc · Backspace · R",wallOpening:"Wall Opening: select a wall, then draw a rectangle on it · W",circle:"Circle: click center, click radius or type radius · C",arc:"Arc: click start, click end to create a segmented arc · A",polygon:"Polygon: Click to trace and close",pushPull:"Push/Pull: Drag a face to change depth · P",move:"Move: select objects, drag on the drawing plane or type distance · M",rotate:"Rotate: select objects, drag around selection center or type degrees · Q",scale:"Scale: select objects, drag from center or type scale factor · S",offset:"Offset: select a closed face, preview wall thickness, click or type an exact distance · F",section:"Section: click to add an active horizontal cut plane · J",eraser:"Eraser: Drag through guides or sketch lines. Polygons/images flash red — delete in Inspector.",paint:"Paint Bucket: select a color or material, then click a face · B",pan:"Pan: Drag to move the view · Scroll to zoom · H",refImage:"Import floor plan/reference: pick a file, drag to place, click to commit"},J$={name:"Name",vertices:"Vertices",area:"Area",position:"Position",depth:"Depth",rotation:"Rotation",length:"Length",bounds:"Dimensions",radius:"Radius",diameter:"Diameter",show_measurement_label:"Show measurement label",opening_type:"Opening type",opening_passage:"Passage",opening_window:"Window",opening_kind_help:"Passage cuts to floor level; Window keeps the bottom sill.",offset:"Offset",line_style:"Line style",plane_origin:"Plane origin",size:"Size",file:"File",opacity:"Opacity",hidden:"Hidden",object:"Object",object_type:"Type",parts:"Parts",object_dimensions:"Object dimensions",multipart_object_readonly:"Multi-part object dimensions are read-only in this phase.",room_wall_kicker:"Room wall",selected_wall:"Selected wall",room_dimensions:"Room dimensions",room_dimensions_hint:"Affects all walls",thickness:"Thickness",room_width:"Room width",room_depth:"Room depth",wall_face_interior:"Interior",wall_face_exterior:"Exterior",wall_face_top:"Top",wall_face_bottom:"Bottom",create_component:"Create Component",component_type:"Component type",width:"Width",depth_component:"Depth",height:"Height",duplicate_component:"Duplicate",delete_component:"Delete component",delete_component_title:"Delete this component?",delete_component_desc:"The component instance will be removed. Cmd+Z restores.",normal:"Normal",active_section:"Active cut",delete_section:"Delete section",delete_section_title:"Delete this section plane?",delete_section_desc:"The clipping plane will be removed. Cmd+Z restores.",replace_image:"Replace image",delete_polygon:"Delete polygon",delete_polygon_title:"Delete this polygon?",delete_polygon_desc:"The polygon and depth/rotation values will be removed. Cmd+Z restores.",delete_line:"Delete line",delete_line_title:"Delete this line?",delete_line_desc:"The segment will be removed. Cmd+Z restores.",delete_dimension:"Delete dimension",delete_dimension_title:"Delete this dimension?",delete_dimension_desc:"The dimension annotation will be removed. Cmd+Z restores.",delete_image:"Delete image",delete_image_title:"Delete this reference image?",delete_image_desc:"The image will be removed and its blob revoked. Cmd+Z restores the record only.",assembly_section_title:"Parametric assembly",columns:"Columns",drawer_count:"Drawers",interior_shelves:"Interior shelves",has_plinth:"Plinth (toe-kick)",plinth_height_mm:"Plinth height",has_hang_rod:"Hang rod",handle_style_recessed:"Recessed handle",material_carcass:"Carcass material",material_front:"Front material",material_interior:"Interior material",material_plinth:"Plinth material",material_handle:"Handle material"},X$={label:"Measurements",placeholder:"3.2m or 4000,3000",help:"Type exact values and press Enter.",error_empty:"Enter a measurement.",error_invalid:"Use mm, cm, or m.",error_nonpositive:"Value must be positive."},yg={no_selection:A$,research_mode_pill:E$,professional_mode_pill:I$,project_dirty:D$,project_name_label:R$,search_placeholder:L$,toolbars:O$,toolgroups:M$,palette_aria:z$,sidebar:B$,trays:F$,settings:$$,inspector:V$,line_styles:U$,tooltips:q$,save_status:G$,projects_dialog:W$,line_styles_popover:H$,menu:K$,tool:Y$,status_hints:Q$,props:J$,measurements:X$},Z$="לא נבחר אובייקט",eV="Sketch-3D Lab — מצב מחקר",tV="מידול מקצועי",aV="שינויים שלא נשמרו",iV="שם פרויקט",oV="חיפוש (בקרוב)",rV={logo_dashboard_aria:"מעבר לדשבורד",top_toolbar_aria:"סרגלי כלים עליונים Sketch3D",context_title:"סרגלי כלים",largeToolset:"Large Toolset",standard:"Standard",history:"History",cameraViews:"Camera Views",display:"תצוגה",warehouse:"לוח כלים",defaultTray:"Default Tray",pinned:"קבוע"},nV={select_edit:"בחירה / עריכה",draw:"שרטוט",model_modify:"מידול / שינוי",architecture_annotation:"אדריכלות / סימון",navigation:"ניווט"},sV="סרגל כלים Sketch-3D",lV={trays_kicker:"כלי עבודה",inspector_section_label:"מאפיינים",inspector_kicker:"מאפיינים",inspector_model:"ברירות מודל",inspector_multi_title:"{{count}} פריטים נבחרו",inspector_untitled:"ללא שם"},cV={agent:"סוכן AI",agent_empty_hint:'כתבו בעברית מה לבנות. לדוגמה: "מלבן 8 על 5 מטר, אופסט פנימה של 20 ס"מ, פוש-פול למעלה ל-2.70"',agent_placeholder:"מה תרצו לבנות...",agent_send:"שלח",agent_error_generic:"תקלה לא צפויה. נסו שוב.",agent_error_parse:"תקלה בהבנת התשובה של הסוכן. נסו לנסח אחרת.",agent_error_replicate_timeout:"הסוכן איטי כרגע. נסו שוב בעוד רגע.",agent_error_replicate:"הסוכן זמנית לא זמין. נסו שוב בעוד רגע.",agent_error_validation:"תשובת הסוכן לא תאמה לסכמה. נסו לנסח אחרת.",agent_error_no_buttons:"לא הופעלה אף פעולה. נסו לבקש משהו אחר.",entity_info:"הגדרות",outliner:"מבנה מודל",instructor:"מדריך",materials:"חומרים",components:"ספריית רכיבים",styles:"סגנונות",tags:"תגיות",shadows:"צללים",scenes:"סצנות",display:"תצוגה",soften_smooth:"ריכוך / החלקה",model_info:"מידע מודל",rail_aria:"סרגל מגירות Sketch3D",close_panel:"סגור מגירה",outliner_empty:"שרטטו גיאומטריה או הוסיפו קומפוננט כדי למלא את עץ המודל.",materials_hint:"בחרו חומר כדי להפעיל את דלי הצבע, ואז לחצו על פאה.",materials_tab_colors:"צבעים",materials_tab_materials:"חומרים",colors_hint:"בחרו צבע כדי להפעיל את הדלי, ואז לחצו על כל פאה פתוחה.",custom_color:"צבע מותאם",use_custom_color:"השתמש בצבע",floor_materials:"ריצופים",general_materials:"כללי / קירות",materials_popular:"פופולריים",materials_wood:"עץ",materials_stone:"אבן",materials_tile:"אריחים",materials_concrete:"בטון",materials_brick:"לבנים",materials_carpet:"שטיחים",materials_paint:"צבעים",materials_user_uploads:"ההעלאות שלי",apply_material:"החל על הבחירה",material_editor_hint:"קנה מידה לטקסטורה, סיבוב, רובה וסיכום שטחים.",paint_bucket_armed:"דלי הצבע פעיל. לחצו על פאה כדי לצבוע אותה.",material_color:"צבע חומר",texture_url:"קישור לטקסטורה",texture_width:"רוחב אריח",texture_height:"גובה אריח",texture_rotation:"סיבוב",grout_width:"רובה",grout_color:"צבע רובה",components_hint:"רכיבי פנים מוכנים לשימוש כרגע. חיפוש/ייבוא חיצוני יגיע בהמשך.",instructor_hint:"מדריך הקשרי לכל כלי יתווסף כאן כדי לעזור למשתמשים לעבוד כמו ב-SketchUp.",styles_hint:"סגנונות שרטוט כמו טכני, מודל לבן ותצוגת לקוח יישמרו כאן.",shadows_hint:"הגדרות שמש וצל לפי שעה, תאריך וכיוון צפון יתווספו כאן.",display_hint:"אפשרויות צירים, רשת, עובי קווים ומצב פאות יתרכזו כאן.",soften_smooth_hint:"כלי ריכוך והחלקת קצוות לפאות ורכיבים יגיעו כאן.",model_info_hint:"יחידות, סטטיסטיקות מודל והגדרות פרויקט יופיעו כאן.",room_shell_title:"מעטפת חדר",room_shell_hint:"המידות מוזנות במטרים ונשמרות במ״מ בתוך המודל.",room_width:"רוחב",room_depth:"עומק",room_height:"גובה",wall_thickness:"קיר",add_room_shell:"הוסף מעטפת חדר",room_floor_name:"רצפת חדר",room_wall_north_name:"קיר צפוני",room_wall_south_name:"קיר דרומי",room_wall_east_name:"קיר מזרחי",room_wall_west_name:"קיר מערבי",add_base_cabinet:"הוסף ארון תחתון",base_cabinet_name:"ארון תחתון 600",add_wall_cabinet:"ארון עליון",wall_cabinet_name:"ארון עליון 600",add_tall_cabinet:"ארון גבוה",tall_cabinet_name:"ארון גבוה 600",add_fridge:"מקרר",fridge_name:"מקרר 900",add_sink:"כיור",sink_name:"כיור 760",component_furniture:"ספריית ריהוט",component_lighting:"גופי תאורה",component_appliances:"מוצרי חשמל למטבח",component_closets:"מערכות ארונות",component_kitchen_cabinets:"ארונות מטבח",component_kitchen_appliances:"מכשירי מטבח",component_bathroom:"מקלחת ושירותים",component_doors_windows:"דלתות וחלונות",component_decoration:"אביזרים ועיצוב",category_coming_soon:"בקרוב",user_components:"קומפוננטים שלי",save_component:"שמירה",user_components_empty:"בחרו אובייקט ושמרו אותו כקומפוננט לשימוש חוזר.",add_scene:"שמור מבט נוכחי",scene_top_plan:"תוכנית מלמעלה",scene_front_elevation:"חזית קדמית",scene_right_elevation:"חזית ימנית",scene_inside_view:"מבט פנים",scenes_empty:"שמרו מבטי מצלמה לתוכניות, חזיתות וזוויות ללקוח.",hide:"הסתר",show:"הצג",lock:"נעל",unlock:"בטל נעילה"},dV={units_title:"תצוגת מידות",units_help:"כך יוצגו כל המידות במסך. בעריכה מוקלדים בערך באותה יחידה.",unit_mm:"מ״מ",unit_cm:"ס״מ",unit_m:"מ׳"},uV={hint_none:"בחרו אובייקט בViewport או התאימו את ברירת המשיכה לפוליגונים חדשים.",multi_edit:"עריכה מרובה תגיע בפאז' D — בינתיים בחרו פריט אחד.",guide_readonly:"מדריכי מדידה נמחקים במחק או בטייפ-מזור — אין כאן שדות עריכה.",name_label:"שם",model_defaults_title:"ברירות מודל",default_depth_help:"עומק ברירת מחדל לפוליגונים חדשים (במ״מ). אפשר לעדכן לכל פוליגון בנפרד אחרי היצירה.",default_extrusion_depth:"עומק משיכה ברירת מחדל",line_style_title:"סגנון קווים",line_style_thin:"דק",line_style_thick:"עבה"},mV={"line-hairline":"קו דקיק","line-thin":"דק","line-thick":"עבה","line-dashed":"מקווקו","line-guide":"קו עזר","line-dimension":"מידה"},pV={new:"פרויקט חדש",open:"פתיחת פרויקט",save:"שמירה",saving:"שומר…",importReference:"ייבוא תמונת ייחוס",undo:"בטל (⌘Z)",redo:"בצע מחדש (⌘⇧Z)",dimension:"מידות",iso:"תצוגה איזומטרית (1)",top:"מבט-על (2)",front:"חזית (3)",right:"מימין (4)",inside:"מבט פנים (5)",toggleAxes:"הצג/הסתר צירים",toggleGrid:"הצג/הסתר רשת",lineStyles:"סגנון קווים",warehouse:"בחרו מה יוצג בלוח הכלים",showDefaultTray:"הצג תפריט צד"},hV={saving:"שומר…",saved_now:"נשמר זה עתה",saved_at:"נשמר {{time}}",dirty:"לא נשמר",never_saved:"טרם נשמר"},gV={title:"הפרויקטים שלי",subtitle:"בחר פרויקט לפתיחה, שינוי שם או מחיקה.",empty_title:"אין עדיין פרויקטים שמורים",empty_hint:'לחץ על "שמירה" אחרי שתסיים סקיצה כדי לשמור את הפרויקט הראשון שלך.',card_open:"פתח",card_rename:"שנה שם",card_delete:"מחק",rename_placeholder:"שם הפרויקט",rename_save:"שמור שם",rename_cancel:"ביטול",delete_title:"למחוק את הפרויקט?",delete_desc:"הפרויקט יוסר לצמיתות. פעולה זו אינה ניתנת לשחזור.",delete_confirm:"מחק",delete_cancel:"ביטול",loading:"טוען…",rel_just_now:"זה עתה",rel_minutes:"לפני {{n}} דק׳",rel_hours:"לפני {{n}} שעות",rel_days:"לפני {{n}} ימים",thumbnail_alt:"תצוגה מקדימה של {{name}}"},fV={trigger_label:"סגנון קווים"},bV={file:"קובץ",file_new:"חדש",file_save:"שמירה",file_saving:"שומר…",file_open:"פתיחה",file_loading:"טוען…",file_open_empty:"אין פרויקטי Sketch3D שמורים",file_import_reference:"ייבוא תוכנית/תמונת ייחוס",edit:"עריכה",edit_undo:"בטל",edit_redo:"בצע שוב",view:"תצוגה",view_iso:"איזומטרי",view_top:"מלמעלה",view_front:"מקדימה",view_right:"מימין",view_inside:"מתוך החדר",view_display_sub:"תצוגת שרטוט",camera:"מצלמה",camera_hide_axes:"הסתר צירים",camera_show_axes:"הצג צירים",camera_hide_grid:"הסתר רשת",camera_show_grid:"הצג רשת",windows:"חלונות",default_tray:"לוח הכלים",show_tray:"הצג לוח כלים",toolbars:"Toolbars",win_entity_info:"מגירת הגדרות",win_outliner:"מגירת מבנה מודל",win_materials:"מגירת חומרים",win_components:"מגירת ספריית רכיבים",win_instructor:"מגירת מדריך",win_tags:"מגירת תגיות",win_scenes:"מגירת סצנות",win_styles:"מגירת סגנונות",win_display:"מגירת תצוגה",display_guide_lines:"עובי קווי מדריך במסך",display_sketch_lines:"עובי קווי שרטוט במסך"},vV={select:"בחירה",line:"קו",dimension:"מידות",rectangle:"מלבן",wallOpening:"פתח בקיר",circle:"עיגול",arc:"קשת",polygon:"פוליגון",refImage:"ייבוא תוכנית/ייחוס",pushPull:"משוך/דחוף",move:"הזזה",rotate:"סיבוב",scale:"שינוי קנה מידה",offset:"היסט",section:"מישור חתך",eraser:"מחק",paint:"דלי צבע",orbit:"סיבוב מצלמה",pan:"הזזת מבט",zoomExtents:"מרכוז תצוגה"},yV={select:"בחירה: לחצו על אובייקט בViewport · Delete מוחק פריטים נבחרים",orbit:"סיבוב מצלמה: גררו כדי לסובב · גלילה לזום · O",zoomExtents:"מרכוז: מרכוז מבט (בינתיים לאיזומטרי)",line:"קו: סמן עיפרון · שתי לחיצות על מישור השרטוט · קליק ימני משחרר מהסמן · L",dimension:"מידות: לחיצה על נקודה ראשונה, נקודה שנייה ואז מיקום התווית · D",re
604ctangle:"מלבן: שתי פינות אלכסוניות · Esc · Backspace · R",wallOpening:"פתח בקיר: בחרו קיר ואז גררו מלבן על הפאה · W",circle:"עיגול: לחצו מרכז, לחצו רדיוס או הקלידו רדיוס · C",arc:"קשת: לחצו התחלה ואז סוף ליצירת קשת מקוטעת · A",polygon:"פוליגון: לחיצות לסגירת קו",pushPull:"משוך/דחוף: גררו פאה כדי לשנות עומק · P",move:"הזזה: בחרו אובייקטים, גררו על מישור השרטוט או הקלידו מרחק · M",rotate:"סיבוב: בחרו אובייקטים, גררו סביב מרכז הבחירה או הקלידו מעלות · Q",scale:"קנה מידה: בחרו אובייקטים, גררו מהמרכז או הקלידו פקטור · S",offset:"היסט: בחרו פאה סגורה, ראו עובי קיר, לחצו או הקלידו מרחק מדויק · F",section:"חתך: לחצו להוספת מישור חתך אופקי פעיל · J",eraser:"מחק: גררו על מדריכים או קווי שרטוט. פוליגונים/תמונות מבהבים באדום — מוחקים במאפיינים.",paint:"דלי צבע: בחרו צבע או חומר ואז לחצו על פאה · B",pan:"הזזת מבט: גררו כדי להזיז את התצוגה · גלילה לזום · H",refImage:"ייבוא תוכנית/ייחוס: בחרו קובץ, גררו למיקום ולחצו לביצוע"},xV={name:"שם",vertices:"קודקודים",area:"שטח",position:"מיקום",depth:"עומק",rotation:"סיבוב",length:"אורך",bounds:"מידות",radius:"רדיוס",diameter:"קוטר",show_measurement_label:"הצג תווית מידה",opening_type:"סוג פתח",opening_passage:"מעבר",opening_window:"חלון",opening_kind_help:"מעבר נחתך עד הרצפה; חלון משאיר סף תחתון.",offset:"היסט",line_style:"סגנון קו",plane_origin:"מקור מישור",size:"גודל",file:"קובץ",opacity:"אטימות",hidden:"מוסתר",object:"אובייקט",object_type:"סוג",parts:"חלקים",object_dimensions:"מידות אובייקט",multipart_object_readonly:"מידות של אובייקט מרובה חלקים הן לקריאה בלבד בשלב הזה.",room_wall_kicker:"קיר בחדר",selected_wall:"הקיר הנבחר",room_dimensions:"מידות החדר",room_dimensions_hint:"השינוי חל על כל הקירות",thickness:"עובי",room_width:"רוחב החדר",room_depth:"עומק החדר",wall_face_interior:"פנים",wall_face_exterior:"חוץ",wall_face_top:"עליון",wall_face_bottom:"תחתון",create_component:"יצירת קומפוננט",component_type:"סוג קומפוננט",width:"רוחב",depth_component:"עומק",height:"גובה",duplicate_component:"שכפול",delete_component:"מחיקת קומפוננט",delete_component_title:"למחוק את הקומפוננט?",delete_component_desc:"מופע הקומפוננט יוסר. Cmd+Z משחזר.",normal:"נורמל",active_section:"חתך פעיל",delete_section:"מחיקת חתך",delete_section_title:"למחוק את מישור החתך?",delete_section_desc:"מישור החיתוך יוסר. Cmd+Z משחזר.",replace_image:"החלפת תמונה",delete_polygon:"מחיקת פוליגון",delete_polygon_title:"למחוק את הפוליגון?",delete_polygon_desc:"הפוליגון וכל ערכי העומק/סיבוב יוסרו. Cmd+Z משחזר.",delete_line:"מחיקת קו",delete_line_title:"למחוק את הקו?",delete_line_desc:"הקטע יוסר. Cmd+Z משחזר.",delete_dimension:"מחיקת מידה",delete_dimension_title:"למחוק את המידה?",delete_dimension_desc:"סימון המידה יוסר. Cmd+Z משחזר.",delete_image:"מחיקת תמונה",delete_image_title:"למחוק את תמונת הייחוס?",delete_image_desc:"התמונה תוסר וה-blob יבוטל. Cmd+Z משחזר את הרשומה בלבד.",assembly_section_title:"הרכבה פרמטרית",columns:"עמודות",drawer_count:"מספר מגירות",interior_shelves:"מדפים פנימיים",has_plinth:"סוקל תחתון",plinth_height_mm:"גובה סוקל",has_hang_rod:"מוט תליה",handle_style_recessed:"ידית שקועה",material_carcass:"חומר גוף הארון",material_front:"חומר חזיתות",material_interior:"חומר פנימי",material_plinth:"חומר סוקל",material_handle:"חומר ידית"},wV={label:"מידות",placeholder:"3.2m או 4000,3000",help:"הקלידו ערך מדויק ולחצו Enter.",error_empty:"הזינו מידה.",error_invalid:"השתמשו ב-mm, cm או m.",error_nonpositive:"הערך חייב להיות חיובי."},kV={no_selection:Z$,research_mode_pill:eV,professional_mode_pill:tV,project_dirty:aV,project_name_label:iV,search_placeholder:oV,toolbars:rV,toolgroups:nV,palette_aria:sV,sidebar:lV,trays:cV,settings:dV,inspector:uV,line_styles:mV,tooltips:pV,save_status:hV,projects_dialog:gV,line_styles_popover:fV,menu:bV,tool:vV,status_hints:yV,props:xV,measurements:wV},_V={rooms:{living:"Living Room",bedroom:"Bedroom",dining:"Dining Area",kitchen:"Kitchen",bathroom:"Bathroom",office:"Office / Work",storage:"Storage",outdoor:"Outdoor"},subs:{sofas:"Sofas",armchairs:"Armchairs",living_tables:"Living Room Tables",tv_units:"TV Units",bookshelves:"Bookcases & Shelves",rugs:"Rugs",beds:"Beds",nightstands:"Nightstands",dressers:"Dressers & Drawers",bedroom_wardrobes:"Wardrobes",mirrors:"Mirrors",dining_tables:"Dining Tables",dining_chairs:"Dining Chairs",sideboards:"Sideboards & Buffets",bar_area:"Bar",kitchen_cabinets:"Kitchen Cabinets",kitchen_islands:"Kitchen Island",appliances:"Appliances",kitchen_sinks:"Sinks",bathtubs:"Bathtubs",showers:"Showers",toilets:"Toilets",bathroom_sinks:"Sinks & V
604anities",laundry:"Laundry",desks:"Desks",office_chairs:"Office Chairs",office_storage:"Office Storage",closets:"Closets",shelving:"Shelving",outdoor_seating:"Seating",planters:"Planters"}},SV={fallback:"Furniture",sofa:"Classic Sofa",sofa_2:"Modern Sofa",sofa_corner:"Corner Sofa",sofa_3seat:"3-Seat Sofa",loveseat:"2-Seat Sofa",armchair:"Classic Armchair",armchair_2:"Modern Armchair",armchair_wing:"Wing Chair",recliner:"Recliner",pouf:"Pouf",table:"Living Room Table",coffee_table:"Coffee Table",side_table:"Side Table",console_table:"Console Table",tv_unit:"TV Unit",tv_wall_unit:"TV Wall Unit",bookcase:"Bookcase",shelf_wall:"Wall Shelf",display_cabinet:"Display Cabinet",rug_rect:"Rectangular Rug",rug_round:"Round Rug",bed:"Double Bed",bed_single:"Single Bed",bed_king:"King Bed",bed_bunk:"Bunk Bed",nightstand:"Nightstand",nightstand_wide:"Wide Nightstand",dresser:"Chest of Drawers",dresser_tall:"Tall Dresser",vanity_table:"Vanity Table",wardrobe:"Wardrobe",wardrobe_sliding:"Sliding Wardrobe",wardrobe_corner:"Corner Wardrobe",wardrobe_open:"Open Wardrobe",mirror_standing:"Standing Mirror",mirror_wall:"Wall Mirror",dining_table:"Dining Table",dining_table_round:"Round Dining Table",dining_table_ext:"Extendable Dining Table",chair:"Dining Chair",dining_chair_up:"Upholstered Chair",bench_dining:"Dining Bench",sideboard:"Sideboard",buffet:"Buffet",bar_stool:"Bar Stool",bar_table:"Bar Table",cabinet_lower:"Base Cabinet",cabinet_upper:"Wall Cabinet",cabinet_tall:"Tall Cabinet",cabinet_corner:"Corner Cabinet",kitchen_island:"Kitchen Island",kitchen_island_l:"Large Kitchen Island",fridge:"Refrigerator",fridge_double:"Double-Door Fridge",stove:"Cooktop",oven_builtin:"Built-in Oven",range_hood:"Range Hood",microwave:"Microwave",dishwasher:"Dishwasher",kitchen_sink:"Kitchen Sink",kitchen_sink_dbl:"Double Sink",bathtub:"Bathtub",bathtub_corner:"Corner Bathtub",bathtub_freestand:"Freestanding Bathtub",shower:"Shower",shower_walk_in:"Walk-in Shower",toilet:"Toilet",toilet_wall:"Wall-Hung Toilet",bidet:"Bidet",bathroom_sink:"Bathroom Sink",vanity:"Vanity Unit",vanity_double:"Double Vanity Unit",washer:"Washing Machine",dryer:"Dryer",desk:"Writing Desk",desk_l_shape:"L-Shaped Desk",desk_standing:"Standing Desk",office_chair:"Office Chair",office_chair_ex:"Executive Chair",filing_cabinet:"Filing Cabinet",shelf_unit:"Shelf Unit",closet_tall:"Tall Closet",closet_wide:"Wide Closet",closet_shoe:"Shoe Closet",storage_shelf:"Storage Shelf",cube_shelf:"Cube Shelf",bench_outdoor:"Garden Bench",lounge_chair:"Lounge Chair",planter:"Planter",planter_tall:"Tall Planter"},CV={single_door:"Standard Door",single_door_glass:"Glass Door",flush_door:"Flush Door",double_door:"Double Door",sliding_door:"Sliding Door",corner_glass_door:"Corner Glass Door",garage_door:"Garage Door",arched_door:"Arched Door",arched_door_glass:"Arched Glass Door",wide_doorway:"Wide Doorway",fixed_window:"Fixed Window",casement_window:"Casement Window",awning_window:"Awning Window",sliding_window:"Sliding Window",bay_window:"Bay Window",wide_window:"Wide Window",arched_window:"Arched Window",floor_to_ceiling:"Floor-to-Ceiling",floor_to_ceiling_vertical:"Minimal Sliding Door",passage:"Passage"},TV={window:"Window",door:"Door",duplicate:"Duplicate",delete:"Delete",open:"Open",close:"Close",openAll:"Open all openings (simulation)",closeAll:"Close all openings",position:"Position",width:"Width",height:"Height",sill:"Sill",rotate90:"Rotate 90°",windowOpeningDirection:"Window opening direction",doorOpeningDirection:"Door opening direction",flushFace:"Flush face",hingeLeft:"Left hinge",hingeRight:"Right hinge",openForward:"Opens forward",openBackward:"Opens backward",flipHinge:"Flip hinge",flipDirection:"Flip direction",flushForward:"Flush forward",flushBackward:"Flush backward"},jV={exterior:"Exterior",interior:"Interior",mamad:"MAMAD",free:"Free"},NV={exterior:"Exterior wall",interior:"Interior wall",mamad:"MAMAD wall",free:"Free wall"},PV={categories:{doors:"Doors",specialDoors:"Special doors",archedDoors:"Arched doors",windows:"Windows",specialWindows:"Special windows"}},AV={projectAndPlan:"Project & plan",openings:"Openings",floor:"Flooring",walls:"Wall cladding",beams:"Beams",furniture:"Furniture",ceiling:"Ceiling",roof:"Roof",environment:"Environment",smartAgent:"Smart agent",sketchShape:"Element",sketchTemplates:"Templates",settings:"Settings"},EV={dragSection:"Drag {{label}} up or down",dragReorder:"Drag to reorder",closeSketchTool:"Close the sketch tool to edit",showProperties:"Show properties",resizePanel:"Resize side panel",dragLeftToExpand:"Drag left to expand",categories:"Property categories",categoriesHint:"Property categories — choose what appears in the panel",chooseVisible:"Cho
604ose what appears in the side panel",sidePanel:"Side panel",properties:"Properties",collapsePanel:"Collapse panel",pinned:"Pinned"},IV={back:"Back",myProjects:"My projects",projectsDescription:"Open an existing plan and pick up exactly where you left off",searchProjects:"Search by name, unit or ID...",searchProjectsAria:"Search plans",projectCount:"{{count}} plans",noSavedProjects:"No saved projects yet",noMatchingProject:"No plan with that name was found",contributedToTraining:"Contributed to model training",wallCount:"{{count}} walls",open:"Open",backToDashboard:"Back to dashboard",howToStart:"How would you like to start?",startDescription:"Upload a 2D floor plan or start sketching directly in 3D",uploadPlan:"Upload a floor plan",uploadFormats:"Drag or click — PNG, JPG, SVG",dropPlan:"Drop a plan here or click to choose",startSketch:"Start a sketch from scratch",sketchDescription:"Line, rectangle, circle, polygon and offset — directly in 3D",openBlankCanvas:"Open a blank 3D canvas",openSavedProject:"Open a saved project",chooseNext:"Choose how to continue",buildingSize:"Building size",calibrationSaved:"Calibration is saved. You can now scan automatically or continue tracing manually.",areaDescription:"Enter the apartment or building area (m²) for initial scale calibration. You can skip this.",areaLabel:"Area in m²",areaPlaceholder:"For example: 120",squareMeters:"m²",continueManual:"Continue with manual tracing",continue:"Continue"},DV={label:"Projects",title:"My plans",deleteCount:"Delete ({{count}})",selectForDeletion:"Select for deletion",empty:"No saved projects yet"},RV={cancel:"Cancel",close:"Close",back:"Back",duplicate:"Duplicate",delete:"Delete",clear:"Clear",clearSelection:"Clear selection",flip:"Flip",resetToDefault:"Reset to default",reset:"Reset"},LV={label:"Time of day",phases:{night:"Night",dawn:"Dawn",morning:"Morning",noon:"Noon",afternoon:"Afternoon",goldenHour:"Golden hour"}},OV={tool:"Beam",add:"Add beam",emptyTitle:"Add a beam to the plan",empty2dHint:"Mark a start and end point. The beam will attach to the ceiling automatically.",empty3dHint:"We’ll switch to 2D so you can mark the beam’s two points precisely.",selectedTitle:"Selected beam",ceilingAttached:"Attached to this floor’s ceiling",length:"Length",width:"Width",height:"Drop height",angle:"Angle",startPointPrompt:"Click the beam’s start point",endPointPrompt:"Click the beam’s end point",cancelPlacement:"Cancel · Esc",addAnother:"Add another beam"},MV={width:"Width",depth:"Depth",height:"Height",length:"Length",widthOrDepth:"Depth / width",radius:"Radius",diameter:"Diameter"},zV={moveUp:"Move up",moveDown:"Move down",moveLeft:"Move left",moveRight:"Move right",moveTemplateForward:"Move template forward",moveTemplateBack:"Move template back",moveTemplateLeft:"Move template left",moveTemplateRight:"Move template right",zoomIn:"Zoom in",zoomOut:"Zoom out",measurementLength:"Measurement length",offsetDistance:"Offset distance",canvasOffsetDistance:"Canvas offset distance",rectangleDimensions:"Rectangle dimensions",rejectScan:"Reject scan",panCanvas:"Pan canvas",zoomControls:"Zoom controls"},BV={selectedCount:"{{count}} items selected",deleteAll:"Delete all",multiSelectHint:"⌘+click to add or remove · drag to move together · R to rotate · Delete to remove",title:"Furniture editor",position:"Position",step:"Step",dimensions:"Dimensions",smartMaterials:"Smart-model materials",selectModelPart:"Select a part in the 3D model",partSelected:"Part selected",rotation:"Rotation",commonAngles:"Common angles",placeAnother:"Place another"},FV={tabs:{materials:"Materials",colors:"Colors",edit:"Edit"},builtin:{wall:"Wall cladding",floor:"Flooring",ceiling:"Ceilings",roof:"Roof materials",shape:"Materials"},mine:{wall:"My cladding",floor:"My tiles",ceiling:"My ceilings",roof:"My roof materials",shape:"My materials"},defaultUploadName:{wall:"Cladding",floor:"Tile",ceiling:"Ceiling",roof:"Roof",shape:"Material"},floorDivision:"Floor division",wallDivision:"Cladding division",active:"Active",divide:"Divide ↴",floorDivideHint:"Drag corners or boundary lines to 
604shape the area. Click an empty area to choose more flooring.",wallDivideHint:"Drag corners or boundary lines to shape the cladding. Click an empty area to choose more cladding.",mergeFloor:"Merge back into one floor",mergeWall:"Merge back into one cladding area",editing:"Editing",emptyCustom:"No custom materials yet",deleteRegion:"Delete region",clear:{wall:"No cladding",floor:"No flooring",ceiling:"No ceiling cladding",roof:"No roof finish",shape:"No cladding"},customColor:"Custom color",size:{wall:"Cladding size",floor:"Tile size",ceiling:"Size",shape:"Material size"},orientation:"Cladding orientation",vertical:"Vertical",horizontal:"Horizontal",grout:{wall:"Reveal profile",floor:"Grout",ceiling:"Reveal",shape:"Grout"},groutSize:{wall:"Profile thickness",floor:"Grout width",ceiling:"Thickness",shape:"Grout width"},groutColor:{wall:"Reveal profile color",floor:"Grout color",ceiling:"Color",shape:"Grout color"},ceilingStyle:"Ceiling style",ceiling:{flat:"Flat",gap:"Reveal",step:"Stepped"},width:"Width",depth:"Depth"},$V={toolbar:"Top toolbar",areas:"Areas",navigation:"Navigation",backToDashboard:"Back to dashboard",myProjects:"My projects",properties:"Properties",file:"File",save:"Save",newProject:"New project",downloadImage:"Download image",downloadModel:"Download 3D model",edit:"Edit",clearAll:"Clear all",hideBackgroundPlan:"Hide background plan",showBackgroundPlan:"Show background plan",hideWallLines:"Hide wall lines",showWallLines:"Show wall lines",view:"View",axes:"Axes",environmentView:"Outdoors",disableEnvironment:"Turn off outdoors",sketchTools:"Sketch tools",planOrientation:"Plan orientation",viewMode:"View mode",hiddenWalls:"Hidden walls",showHiddenWalls:"Show hidden walls ({{count}})",showAllWalls:"Show all walls again",history:"History",undo:"Undo (⌘Z)",redo:"Redo (⌘⇧Z)",saving:"Saving",saveFailed:"Save failed",finishRecordingBefore2d:"Finish recording before switching to 2D",switchTo2d:"Switch to 2D mode",isometric:"Isometric",topView:"Top view",insideHome:"Inside the home",recordVideo:"Record video",activeRecordingAria:"Recording active — stop and save the walkthrough",recordingNow:"Recording now · click to stop and save",notes:{title:"Notes",myNotes:"My notes",noNotes:"No notes",visibleCount:"{{visible}} of {{total}} visible",emptyState:"There are no notes on this plan yet",untitled:"Note without text",hidden:"Hidden",visible:"Visible",showNote:"Show note",focus:"Focus"},sketch:{select:"Select",line:"Line",rectangle:"Rectangle",measure:"Tape measure",polygon:"Polygon",circle:"Circle",rotate:"Rotate",faceTools:"Tools on face",faceLine:"Line on face",faceCornerArc:"Tangent corner arc",faceRectangle:"Rectangle on face",faceMeasure:"Tape measure on face",faceOffset:"Offset on face"}},VV={subscriptionAccessLoading:"Checking your subscription status…",subscriptionAccessFailed:"We couldn't verify your subscription. Trying again…",exportNoModel:"There is no model to export — trace walls first.",exportSketchupLoading:"Building SketchUp file… this may take up to a minute",exportModelLoading:"Exporting model…",exportFailed:"Export failed. Please try again.",exportSketchupSuccess:"Your SketchUp file is ready and has been downloaded!",exportModelSuccess:"Your {{format}} file has been downloaded!",projectSaved:"Project saved successfully.",saveFailed:"Save failed: {{message}}",exportImageNoContent:"There is no content to export — trace walls on the plan or create a 3D sketch first.",exportImageUnavailable:"The current view cannot be captured right now.",unsupportedImageFormat:"Only PNG, JPG and SVG files are supported.",loadFailed:"Could not load the project. Please try again.",projectListLoadFailed:"Could not load the project list.",deleteFailed:"Could not delete the project.",renameFailed:"Could not rename the project.",userTemplateNotFound:"The selected furniture item was not found.",wallTemplatePlacementHint:"Select a wall to place this template.",templatePlacementFailed:"Could not place the template."},UV={saveBeforeExit:{title:"Save this project?",description:"You have drawn on the canvas, but this project has not been saved yet. Save it before leaving?",confirm:"Yes, save",discard:"No, don't save"},deleteProject:"Delete this project? This action cannot be undone.",deleteProjects:"Delete {{count}} projects? This action cannot be undone."},qV={rename:"Rename project",newSketch:"New sketch",untitled:"Untitled",no3dPreview:"No 3D preview",noPlan:"No plan",open3dInMain:"Open the 3D view in the main panel",returnTo2dInMain:"Return to the 2D view in the main panel",switchTo3d:"Switch to 3D ↗",switchTo2d:"Switch to 2D ↗",metaWithRooms:"{{walls}} walls · {{rooms}} rooms",metaWithoutRooms:"{{walls}} walls"},GV={wallFront:"Front side",wallBack:"Back side",wallEdge:"Edge / thickness",selectWall:"Select a wall in 3D",wall:"Wall · {{side}}",wallRegion:"Wall · {{side}} · area {{count}}",wallNewRegion:"Wall · {{side}} · new area",selectFloor:"Select a room floor in 3D",noClosedRooms:"No enclosed rooms",room:"Room {{count}}",selectedRoom:"Selected room",roomRegion:"{{room}} · area {{count}}",roomNewRegion:"{{room}} · new area",roomArea:"{{room}} · {{area}} m²",selectCeiling:"Select a room ceiling in 3D",ceilingRoom:"Ceiling · room {{count}}",ceilingSelectedRoom:"Ceiling · selected room"},WV={title:"System settings",measurementMethod:"Measurement units",centimeters:"cm",millimeters:"mm",meters:"m"},HV={threeDTapeHint:"Click two points in the 3D view to measure the distance"},KV={wallLength:{invalid:"Enter a valid length.",eyebrow:"Wall dimensions",title:"Change length",label:"Wall length",hint:"Enter to update · Esc to cancel"},menu:{editCladding:"Edit cladding",addCladding:"Add cladding",hideWall:"Hide wall",resize:"Resize",addCarpentryTemplate:"Add carpentry template",addElectrical:"Add electrical",addNote:"Add note",addTemplate:"Add template",changeFlooring:"Change flooring",addFurniture:"Add furniture",replaceCladding:"Replace cladding",rotate:"Rotate",editFurniture:"Edit furniture",hideFigure:"Hide figure",showFigure:"Show figure"},opening:{windowDirection:"Window opening direction",doorDirection:"Door opening direction",zeroLineSide:"Zero-line side",openOutward:"Open outward",openInward:"Open inward",resize:"Resize opening",windowDirectionHint:"Choose the hinge and the direction the window opens",doorDirectionHint:"Choose the hinge and the direction the door opens",directionUnavailable:"Opening direction is available only for doors or casement windows.",opensThisSide:"Opens to this side",opensOtherSide:"Opens to the other side",zeroLineThisSide:"Zero line on this side",zeroLineOtherSide:"Zero line on the other side",window:"Window",door:"Door",position:"Position",sill:"Sill",rotate90:"Rotate 90°"},placement:{electrical:"Placing {{item}} — click a wall (Esc to cancel)",note:"Placing note — click a wall (Esc to cancel)"},sketchMenu:{askBordi:"Request changes from Bordi",moveTemplate:"Move template",moveElement:"Move element",snapToWall:"Snap to wall",duplicateRight:"Duplicate to the right",duplicateLeft:"Duplicate to the left"},cladding:{doorTitle:"Door cladding",wallTitle:"Wall cladding",elementTitle:"Element cladding",claddingTab:"Cladding",colorsTab:"Colours",emptyCustom:"No custom cladding yet",dimensions:"Dimensions",grout:"Grout",color:"Colour",actions:"Actions",remove:"Remove cladding",merge:"Merge cladding",colorAria:"Colour {{color}}
604",removeColor:"Remove colour",active:"Cladding active",colors:{FAF7F2:"Warm white",E8DED0:"Natural cream",B8A992:"Universal khaki · 2026 colour of the year",C7B79F:"Quiet sand","7C7F70":"Warm eucalyptus · 2026 colour of the year",A9B19D:"Smoky sage","49675A":"Smoky jade · 2026 colour of the year","2F4A43":"Narragansett green",C78468:"Southwestern terracotta",D8A7A0:"Dusty pink","867B72":"Taupe","4B403B":"Espresso silhouette · 2026 colour of the year"}},floating:{carpentryTemplates:"Carpentry templates",attachedToWall:"Attached to the selected wall",templates:"Templates",placeAtSelectedPoint:"Place at the selected point",selectedRoom:"Selected room",chooseFurniture:"Choose furniture, then click the floor"},camera:{panModel:"Pan the model on the canvas",moveModelUp:"Move the model up",moveModelLeft:"Move the model left",moveModelRight:"Move the model right",moveModelDown:"Move the model down",zoomIn:"Zoom in (+)",zoomOut:"Zoom out (-)",resetView:"Reset view",openHint:"Camera controls — click to open, drag to move",openPanel:"Open camera controls panel",title:"Camera controls",minimize:"Minimize to camera button",minimizePanel:"Minimize camera controls panel",height:"Camera height",raise:"Raise camera (Shift = large 0.3 m step)",lower:"Lower camera (Shift = large 0.3 m step)",aim:"Lens direction",aimUp:"Tilt lens up",aimLeft:"Turn lens left",aimLevel:"Level lens",aimRight:"Turn lens right",aimDown:"Tilt lens down",lensType:"Lens type",returnToIsometric:"Return to isometric",lens:{65:{label:"Narrow",title:"Narrow lens"},73:{label:"Normal",title:"Standard lens"},85:{label:"Wide",title:"Wide-angle lens"}}},minimap:{show:"Show map",showTitle:"Show map — click to open, drag to move",title:"Map",collapse:"Minimize map"},roomSummary:{one:"1 room - {{area}} m²",many:"{{count}} rooms - {{area}} m²"},drawWallsFor3d:"Draw walls in 2D to create the 3D view"},YV={notEnoughPath:"Not enough of a path was recorded.",saved:"Walkthrough saved.",captureUnsupported:"Your browser does not support canvas video capture.",noSupportedFormat:"No supported video format was found in this browser.",recorderFailed:"Could not create the video recorder.",exportFailed:"Video export failed.",webmFallback:"Your browser saved the video as WebM because MP4 is not supported here.",downloadFailed:"Video download failed.",videoSaveFailed:"The video was created, but could not be saved.",downloadedMp4:"Video downloaded as MP4.",downloadedWebm:"Video downloaded in high-quality WebM.",play:"Play walkthrough",downloadMp4:"Download MP4",download:"Download",rename:"Rename",edit:"Edit",title:"Video walkthrough",recordingElapsed:"Recording · {{elapsed}}",savedCount:"{{count}} saved walkthroughs",stopAndSave:"Stop and save",recordNew:"Record a new walkthrough",stopPlayback:"Stop playback",exporting:"Exporting {{quality}} · {{progress}}%",exportQuality:"Export quality",myTours:"My walkthroughs",emptyTitle:"No video walkthroughs yet",emptyDescription:"Record a walkthrough, move the camera on the map, then save an MP4 ready to share.",modeRenderReady:"Render-ready",modeHighQuality:"High quality",renderReadySpec:"1080p · 30fps · up to {{seconds}}s · MP4",renderReadyHint:"Works with every render model",hqNotForModels:"Not for render models",renderReadyUnsupported:"This browser can't produce a render-ready MP4. Use Chrome/Edge, or switch to High quality."},QV={hideDimensions:"Hide dimensions",dragToMove:"Drag to move",liveUpdate:"Updates live in 2D and 3D",currentLength:"Current length: {{length}}",calibrateByWall:"Calibrate from this wall",realWallLength:"Actual wall length ({{unit}}):",landscapeOrientation:"Landscape orientation",landscape:"Landscape",portraitOrientation:"Portrait orientation",portrait:"Portrait",toolsAndSettings:"Tools and settings",angle:{horizontal:"Horizontal",perpendicular:"Perpendicular"}},JV={instructions:"Calibration: place the ruler on a known dimension · drag its ends · rotate it with the rotation handle (↕ also vertical) · enter {{unit}}
604 below · save",actualLength:"Actual length ({{unit}})",alignHorizontal:"Align horizontally",alignVertical:"Align vertically",freeRotate:"Rotate freely",save:"Save calibration",lineTooShort:"The line is too short — drag the ends farther apart",scaleReadout:"Scale: {{scale}} mm/px · segment = {{pixels}} px",snapped:"🧲 snapped to wall corners",shortSegmentWarning:"Short segment — use a longer dimension (over {{pixels}}px) for the best accuracy",verticalHint:"Drag the rotation handle for vertical calibration · after saving, verify with the 2D tape measure",savedGeometryUpdated:"Calibration saved — the geometry was updated to match the new scale.",savedVerify:"Calibration saved — verify the scale with the 2D tape measure."},XV={compactTitle:"Wall settings",title:"Wall settings by type",byType:"By wall type",description:"These values apply to the next wall you draw.",nextWall:"Next wall",thickness:"Thickness",attachedContentMinimum:"The wall cannot be shortened below {{length}} because content is attached to it."},ZV={switchTo3d:"Switch to 3D",moreTools:"More 2D tools",description:"Calibration, measurement, editing and navigation",calibration:"Calibration",tapeMeasure:"Tape measure",edit:"Edit",pan:"Pan"},eU={lineLength:"Line length",confirm:"Confirm",length:"Length",offsetDistance:"Offset distance",dimensions:"Dimensions",depthWithColon:"Depth:",heightWithColon:"Height:",snap:{measurementMark:"Measurement mark",endpoint:"Endpoint",midpoint:"Midpoint",onEdge:"On edge",axisLocked:"Axis locked",onFace:"On face",horizontalAxisLocked:"Horizontal axis locked",verticalAxisLocked:"Vertical axis locked"}},tU={scanningCv:"Scanning with the trained CV model…",scanningParser:"Scanning the floor plan…",notEnoughWalls:"The scan did not find enough walls. Try a clearer plan or trace manually.",ready:"The scan is ready for review.",error:"The scan failed. Please try again.",applied:"The scan was applied to the plan.",rejected:"The scan was discarded.",title:"Review scan results",walls:"{{count}} walls",openings:"{{count}} openings",rooms:"{{count}} rooms",reject:"Reject",apply:"Apply scan"},aU={title:"Start with the walls",description:"Click the plan to draw wall segments. Close a loop to create a room.",openingsLater:"You can add doors, windows and furniture afterwards.",start:"Start drawing"},iU={saved:"Template saved to My Templates",defaultName:"My Template",saveFailed:"Failed to save template",deleteFailed:"Failed to delete template",title:"My templates",savedCount:"{{count}} saved",saveAsMine:"Save to my templates",searchPlaceholder:"Search my templates…",searchAria:"Search my templates",loading:"Loading templates…",selectHint:"Click to select · Drag for precise placement",placement:{floor:"Floor",wall:"Wall",both:"Floor or wall"},rename:"Rename",renameNamed:"Rename {{name}}",newNamePrompt:"New template name",renameFailed:"Rename failed",delete:"Delete template",deleteNamed:"Delete {{name}}",noResults:"No personal templates found",empty:"Templates you save will appear here in every project",saveDialog:{title:"Save to My Templates",description:"The template will be saved as a live, editable model and will appear in every Floorplan project.",name:"Template name",namePlaceholder:"For example: Custom entry unit",scope:"What should be saved?",selectedModel:"Selected model",selectedModelHint:"The group and its parts",allModel:"Entire canvas model",allModelHint:"All bodies, without dimensions",placement:"Placement mode",saving:"Saving…",save:"Save to My Templates"},deleteDialog:{title:"Delete the template?",description:"The template “{{name}}” will be permanently deleted from My Templates.",deleting:"Deleting…",confirm:"Yes, delete"}},oU={imageOnly:"Only image files can be attached",imageTooLarge:"The image is too large. Try an image up to 8 MB.",imageReadFailed:"Couldn’t read the image.",requestOrImage:"Write a request or attach an image.",answerInOwnWords:"Answer the question in your own words instead of sending it as-is.",buildingInBackground:"Bordi is preparing your template in the background.",subtitle:"Procedural template agent",wallSelected:"Wall selected",jobsInBackgroun
604d:"{{count}} running in background",buildingSpec:"Bordi is building the specification…",needsClarification:"Bordi needs a little more detail:",dropImage:"Drop an image here",imageFormats:"PNG, JPG, or WebP up to 8 MB",removeImage:"Remove image",shortcuts:"Template shortcuts",shortcutsHint:"Choose an idea, edit the dimensions, and send it to Kimi",attachImage:"Attach image",createTemplate:"Create template"},rU={searchPlaceholder:"Search templates…",searchAria:"Search templates",wallTemplateRightClick:"This template is for walls — right-click a wall and choose Add Template",floorOnly:"This template is set for floor placement",wallOnly:"This template is for walls — open templates by right-clicking a wall",placeFailed:"Template placement failed",selectThenClickHint:"Click: select template · then click anywhere on the plan for precise placement · Drag: place directly",immediateHint:"Click: place automatically · Drag: place directly anywhere on the plan",plannedTooltip:"Planned template — coming soon",comingSoon:"Coming soon",duplicate:"Duplicate",duplicateOffsetAria:"Duplicate offset in {{unit}}",duplicateSelected:"Duplicate selected",duplicateHint:"Or hold Ctrl while dragging to duplicate (like SketchUp).",group:"Group",groupNamePlaceholder:"Group name",installationHeight:"Mounting height from floor ({{unit}})",installationHeightAria:"Mounting height from floor in {{unit}}",frontDivision:"Front division (macro)",drawers:"Drawers",doors:"Doors",applyToSelectedCabinet:"Apply to 
604selected cabinet"},nU={elementDimensions:"Element dimensions",rectangleEdges:"Rectangle edges",selectedPart:"Selected part",selectedPartHint:"Dimensions of the selected individual part only.",depthDirectionHint:"Positive depth protrudes outward; negative depth recesses inward.",faceDimensions:"Face dimensions",wholeFurnitureSize:"Whole furniture size",wholeUnitDescription:"Resizes the entire unit together.",rectangleFacesDescription:"Resizes the rectangle and all its faces together.",partsRedistributeHint:"Parts redistribute automatically. To edit an individual part, select it in the model.",offsetsStayAttachedHint:"Offsets and face rectangles remain attached to the rectangle.",installationHeight:"Installation height",templatePosition:"Template position",templatePositionHint:"Moves the whole template together — body, doors, drawers and handles.",moveStep:"Step",templateOutOfBounds:"The template is outside the plan bounds.",templateMoveHint:"Arrow keys work too. Shift = 5× step. Ctrl+Z undoes.",templateMoveWallHint:"Attached to a wall: ← → run along the wall, ↑ pulls it away. Moving too far detaches it from the wall.",rotation:"Rotation",angle:"Angle",rotationAria:"Rotation angle (degrees)",decreaseDegrees:"Decrease by {{degrees}} degrees",increaseDegrees:"Increase by {{degrees}} degrees",setRotationDegrees:"Set rotation to {{degrees}} degrees",position:"Position",edge:{number:"Edge {{count}}",wall:"Wall edge",front:"Front edge",side:"Side edge {{count}}",lengthAria:"{{edge}} in {{unit}}"}},sU={tabsAria:"Template source",tabs:{catalog:"Templates",mine:"My templates",element:"Element"},categories:{kitchen:"Kitchen",kitchenAssembly:"Carpentry assembly · Kitchen",carpentryBedroom:"Carpentry assembly · Bedroom",carpentryUtility:"Carpentry assembly · Utility room",living:"Living room",dining:"Dining area",bedroomMaster:"Primary bedroom",bedroomKids:"Kids’ room",bathroom:"Bathroom",entry:"Entryway",office:"Home office",utility:"Utility room",lighting:"General lighting",railings:"Railings",stairs:"Stairs",accessories:"Plants & accessories"},items:{kitchenAssembly_base30:"30 cm base cabinet",kitchenAssembly_base60:"60 cm base cabinet",kitchenAssembly_base80:"80 cm base cabinet",kitchenAssembly_base90:"90 cm base cabinet",kitchenAssembly_drawerBank60:"60 cm drawer cabinet",kitchenAssembly_drawerBank3:"Three-drawer cabinet",kitchenAssembly_trashPull:"Pull-out waste cabinet",kitchenAssembly_bottlePull15:"15 cm bottle pull-out",kitchenAssembly_wall40:"40 cm wall cabinet",kitchenAssembly_wall45:"45 cm wall cabinet",kitchenAssembly_wall60:"60 cm wall cabinet",kitchenAssembly_wall80:"80 cm wall cabinet",kitchenAssembly_hood:"Extractor hood cabinet",kitchenAssembly_tall60:"60 cm tall cabinet",kitchenAssembly_supermarket40:"40 cm pantry pull-out",kitchenAssembly_sink:"Sink cabinet + faucet",kitchenAssembly_sinkLarge:"Large sink cabinet + faucet",kitchenAssembly_roundedTall:"Tall unit — rounded end",kitchenAssembly_roundedBase:"Base unit — rounded end",kitchenAssembly_roundedDisplay:"Rounded end + niche",kitchenAssembly_roundedOpenShelves:"Rounded end + open shelves",kitchenAssembly_worktop:"Worktop",kitchenAssembly_cornerL:"L-shaped corner cabinet",kitchenAssembly_cornerLTall:"Tall L-shaped corner cabinet",kitchenAssembly_carousel:"Carousel corner cabinet",kitchenAssembly_cooktop:"Cooktop drawer cabinet",kitchenAssembly_applianceTower:"Oven + microwave tower",kitchenAssembly_ovenColumn:"Oven column",kitchenAssembly_dishwasher:"Dishwasher",kitchenAssembly_tambour:"Tambour cabinet",kitchen_fridgeTall:"Refrigerator column",kitchen_sketchWall:"Kitchen from sketch",kitchen_islandBar:"Kitchen island with bar",kitchen_islandCooktop:"Kitchen island with cooktop",kitchen_islandCooktopSink:"Kitchen island with cooktop and sink",kitchen_fullLinear:"Linear wall kitchen",kitchen_fullSymmetric:"Symmetrical wall kitchen",kitchen_fullCompact:"Compact wall kitchen",kitchen_fullSink:"Wall kitchen with sink and cooktop",carpentryBedroom_shelfDrawer60:"60 cm cabinet with shelves and drawers",carpentryBedroom_rail120:"120 cm wardrobe with clothes rail",carpentryBedroom_rail90:"90 cm wardrobe with rail, drawers and shoe storage",carpentryBedroom_openShelves60:"Open shelving cabinet",carpentryUtility_washingMachine:"Washing-machine cabinet",carpentryUtility_dryer:"Dryer cabinet",carpentryUtility_vacuum30:"30 cm vacuum cabinet",carpentryUtility_ironing30:"30 cm ironing-board cabinet",living_wallUnit:"Living-room wall unit",living_shelvingPoles:"Pole-mounted shelving unit",living_sofa3:"Three-seat sofa",living_chaise:"Chaise longue",living_tvFloating:"Floating TV console",living_tvScreen:"Television",living_coffeeTable:"Coffee table",living_rug:"Rug",wardrobe_standard:"Wardrobe",wardrobe_wall:"Wall wardrobe + display cabinet",table_dining:"Dining table with tapered legs",credenza_fluted:"Fluted credenza with tapered legs",bedroomMaster_bedUpholstered:"Double bed with upholstered headboard",bedroomMaster_nightstand:"Nightstand",bedroomMaster_slidingWardrobe:"Sliding wardrobe",bedroomMaster_dresser:"Chest of drawers",bedroomMaster_vanity:"Vanity with mirror",bedroomMaster_endBench:"End-of-bed bench",bedroomKids_singleBed:"Single bed",bedroomKids_bunkBed:"Bunk bed",bedroomKids_desk:"Writing desk",bedroomKids_shelf:"Floating shelf",bathroom_vanity:"Bathroom vanity with sink",bathroom_mirror:"Illuminated mirror",bathroom_shower:"Shower enclosure",bathroom_tub:"Bathtub",bathroom_vanity60:"60 cm bathroom vanity",bathroom_vanity80:"80 cm bathroom vanity",bathroom_vanity100:"100 cm bathroom vanity",bathroom_vanity120:"120 cm bathroom vanity",bathroom_vanity120Double:"120 cm double-sink vanity",bathroom_vanityWallFaucet:"Bathroom vanity + wall-mounted faucet",entry_unit:"Entryway unit",entry_fullMirror:"Floor mirror",entry_console:"Low console",office_desk:"Desk",office_bookcase:"Bookcase",office_pedestal:"Mobile pedestal",living_sofa2:"Two-seat sofa",living_cornerModule:"Corner module",living_armchair:"Armchair",living_pouf:"Cube pouf",dining_round:"Round dining table",dining_chair:"Dining chair",utility_laundryTop:"Worktop above washing machine",utility_laundryScreen:"Laundry screen",office_ergoCh
604air:"Ergonomic chair",bathroom_wcWall:"Wall-hung toilet",living_curtain:"Curtain",living_glassRailing:"Glass railing",railings_glassFrameless:"Frameless glass railing",living_railingHorizontal:"Horizontal-bar railing",living_railingVertical:"Vertical-bar railing",lighting_recessed:"Recessed spotlight",lighting_panel:"Light panel",lighting_wall:"Wall light",lighting_floor:"Floor lamp",stairs_straight:"Straight stairs",stairs_step2:"Transition stairs",stairs_winder:"Winder stairs",stairs_podium:"Podium stairs",stairs_uShape:"U-shaped stairs",stairs_straightRail:"Straight stairs with railing",stairs_floating:"Floating stairs",stairs_lShape:"L-shaped stairs",stairs_stoop:"Entry steps"},planned:{planned_dining_pendant:"Pendant light",planned_bedroomMaster_tableLamp:"Bedside lamp",planned_bedroomKids_chair:"Chair",planned_bathroom_towelBar:"Towel bar",planned_entry_wallHook:"Wall hook",planned_utility_tallCabinet:"Tall utility cabinet",planned_utility_sink:"Utility sink",planned_accessories_vase:"Vase",planned_accessories_decorSet:"Decor set"}},lU={searchPlaceholder:"Search furniture…",searchAria:"Search furniture",clearSearch:"Clear search",comingSoon:"Coming soon",placeHint:"Click to select furniture, then click a location on the plan to place it precisely · drag to place directly",smart:"Smart",baked:"Baked",noResults:"No results found",resultCount:"{{count}} results",catalogTab:"Catalog",myFurnitureTab:"My furniture"},cU={signInToUpload:"Sign in to upload furniture.",createFromImage:"Create furniture from an image",uploadGlb:"Upload a ready-made GLB file",imageDialogDescription:"Upload a furniture image, choose a generation route, and receive a GLB model saved in My Furniture.",imageStep1:"Upload a clear image of the furniture",imageStep2:"Choose fast and economical, or rich textures",imageStep3:"The model is saved to your library and can be dragged onto the plan",modelImport:"Model import",glbDialogDescription:"For models you already have: upload a GLB file, give it a name and basic dimensions, and it will appear in your library.",glbStep1:"Choose a ready-made .glb file",glbStep2:"Set a name, category and basic dimensions",glbStep3:"Save it to My Furniture and place it on the plan",uploadError:"Upload error",readyGlb:"Ready GLB",savedToLibrary:"Saved to library",quickImport:"Quick import",chooseGlb:"Choose a GLB file",glbFileHint:"Use a .glb file; a reasonably sized model is best for smooth dragging on the plan.",name:"Furniture name",namePlaceholder:"For example: Modern sofa",category:"Category (room → subcategory)",dimensions:"Dimensions ({{unit}})",uploading:"Uploading…",saveToLibrary:"Save to library",downloadStarted:"GLB download started.",downloadFailed:"GLB download failed.",downloadContextHint:"Right-click to download GLB",rename:"Rename furniture",downloading:"Downloading GLB…",downloadGlb:"Download GLB file",deleteFurniture:"Delete furniture",emptyTitle:"No furniture yet",emptyDescription:"Upload a GLB file or turn an image into 3D — your furniture will appear here."},dU={title:"How many square metres is the building?",description:"Enter the total building area for initial scale calibration.",placeholder:"For example: 120",skip:"Skip",confirm:"Confirm"},uU={list:"Area list",restoreAll:"Restore all",hideAll:"Hide all",title:"Areas and dimensions",description:"Room data remains available even when dimensions are hidden",showDimensions:"Show dimensions",hideDimensions:"Hide dimensions",rename:"Rename",renameArea:"Rename area",hidden:"Hidden",visible:"Visible",namePlaceholder:"Click and enter a name for the area",areaValue:"{{area}} m²"},mU={label:"Note",actions:{cancel:"Cancel",save:"Save",edit:"Edit",delete:"Delete",hideNote:"Hide note"},colors:{label:"Note colour",yellow:"Yellow",pink:"Pink",mint:"Mint",blue:"Light blue",lavender:"Purple",peach:"Peach"},composer:{title:"Add note",subtitle:"Write and save it on the plan",bold:"Bold",alignLeft:"Align left",alignCenter:"Centre",alignRight:"Align right",emoji:"Emoji",placeholder:"Write a short reminder here...",saveNote:"Save note"}
604,wall:{title:"Wall note",subtitle:"Project reminder",positionOnWall:"Position on wall",alongWall:"Along",height:"Height",moveUp:"Move up",moveLeft:"Move left",moveRight:"Move right",moveDown:"Move down"},viewport:{title:"Plan note",subtitle:"Note for a professional"}},pU={panel:{subtitle:"Select an item · click the wall"},sections:{switches:"Switches",outlets:"Outlets",airConditioning:"Air conditioning",televisions:"TVs"},fixtures:{switch:"{{gangs}}-gang switch",singleOutlet:"Single outlet",doubleOutlet:"Double outlet",ac:"Single AC unit",tv60:"60 in TV",doorScreen10:"10 in door screen"},options:{single:"Single",double:"Double",tv60:"60 in",doorScreen10:"10 in door screen"},hints:{acSize:"1 m wide · 40 cm high",tv60Size:"135 cm wide · 77 cm high",tv10Size:"23 cm wide · 14 cm high"},edit:{positionTitle:"Edit position"}},hU={pendingModes:{faithful:"Faithful render",consistent:"Consistent render",free:"Free-style render"},deleteItemConfirm:"Delete “{{name}}”?",deleteFolderConfirm:"Delete the folder “{{name}}”? Its images will be moved to the root folder.",myGallery:"My gallery",myGalleryWithPendingOne:"My gallery, 1 render in progress",myGalleryWithPendingOther:"My gallery, {{count}} renders in progress",pendingRendersOne:"1 render in progress",pendingRendersOther:"{{count}} renders in progress",renderCountOne:"1 render",renderCountOther:"{{count}} renders",pendingSuffix:" · {{count}} in progress",newFolder:"New folder",root:"Root",folderNamePlaceholder:"Folder name",create:"Create",deleteFolderTooltip:"Delete folder",backToRootDrop:"Back to root (you can drag items here)",pendingStatus:"{{mode}} in progress",pendingHint:"You can submit more renders and continue working in the editor",emptyFolder:"This folder is empty",emptyGallery:"No renders yet",emptyHint:"Click “Send to render” in the header to get started",video:"Video",downloadTooltip:"Download",deleteTooltip:"Delete",footerHint:"Click to enlarge · drag to a folder to organise · right-click for more actions",actions:{download:"Download",moveToFolder:"Move to folder",rename:"Rename",delete:"Delete",deleteFolder:"Delete folder"}},gU={deleteConfirm:"Delete “{{name}}”?",preview:"Preview",downloadTitle:"Download",download:"Download",deleteTitle:"Delete",delete:"Delete",close:"Close"},fU={enhancingTitle:"Enhancing the floor plan with AI...",scanningTitle:"Scanning walls...",enhancingDescription:"Cleaning up lines and highlighting walls in colour — about 30 seconds",scanningDescription:"Detecting walls in the floor plan..."},bU={chooseType:"Choose render type",title:"How should this view be rendered?",description:"Choose how much creative freedom to give AI before spending tokens.",tokenCost:"2 tokens",type:"Render type",recommended:"Recommended",options:{faithful:{title:"Faithful to the design",description:"Improves realism only, without adding or changing items"},consistent:{title:"Keep the style consistent",description:"Matches light and colour to an earlier project render"},free:{title:"Add style freely",description:"Lets AI add décor and accessories at its discretion"}},loadingReferences:"Loading project renders",noReferences:"There is no earlier render in this project yet. Create a faithful or free render first, then use it as the series reference image.",referenceImage:"Style reference image",latestSelected:"The latest is selected automatically",selectReference:"Use {{name}} as the reference image",referenceRequired:"Create a reference render first",renderNow:"Render now · 2 tokens"},vU={finishRoofTraceBeforeLeave:"Finish or cancel roof tracing before leaving"},yU={title:"Flooring and materials",resetPart:"Restore part",hint:"Changes apply only to the selected part. You can restore the original materials at any time.",choosePart:"All model parts",choosePartPlaceholder:"Choose a part",resetAll:"Restore all original materials",textureHint:"Textures follow the model’s existing mapping; tile dimensions and grout are not adjustable here.",loading:"Loading parts for material editing…",loadError:"Could not load model parts for editing.",retry:"Try again",noParts:"No parts are available for material editing in this model.",editorTitle:"Model editor",modelControls:"Building position and dimensions",surfaceFirst:"Choose a floor shortcut or a part from the list, check the highlighted surface, then choose a material.",flooring:"Flooring",otherMaterials:"Other materials",namedFloors:"Floors by model name",namedFloorsHint:"Suggestions use part names only. Check that the intended surface is highlighted in the model.",sectionTitle:"Model flooring and materials",selectFirst:"Choose a floor shortcut or a part from the list to start."},xU={catalog:_V,furniture:SV,opening:CV,openingEditor:TV,wallType:jV,wallTypeDisplay:NV,openingCatalog:PV,sections:AV,details:EV,onboarding:IV,projects:DV,common:RV,environmentTime:LV,beams:OV,dimensions:MV,accessibility:zV,furnitureInspector:BV,materials:FV,topBar:$V,messages:VV,dialogs:UV,project:qV,scope:GV,settings:WV,measurement:HV,viewer:KV,walkthrough:YV,trace:QV,calibration:JV,wallSettings:XV,twoDTools:ZV,sketchFooter:eU,scanReview:tU,welcomeGuide:aU,myTemplates:iU,smartAgent:oU,sketchWorkflow:rU,sketchElement:nU,sketchTemplates:sU,catalogUi:lU,myFurniture:cU,areaDialog:dU,roomLabels:uU,notes:mU,electrical:pU,renderGallery:hU,renderLightbox:gU,scanningOverlay:fU,renderMode:bU,levels:vU,blenderMaterials:yU},wU={rooms:{living:"סלון",bedroom:"חדר שינה",dining:"פינת אוכל",kitchen:"מטבח",bathroom:"חדר רחצה",office:"משרד / עבודה",storage:"אחסון",outdoor:"חיצוני"},subs:{sofas:"ספות",armchairs:"כורסאות",living_tables:"שולחנות סלון",tv_units:"מזנונים",bookshelves:"ספריות ומדפים",rugs:"שטיחים",beds:"מיטות",nightstands:"שידות לילה",dressers:"שידות ומגירות",bedroom_wardrobes:"ארונות בגדים",mirrors:"מראות",dining_tables:"שולחנות אוכל",dining_chairs:"כיסאות אוכל",sideboards:"מזנונים ובופטים",bar_area:"בר",kitchen_cabinets:"ארונות מטבח",kitchen_islands:"אי מטבח",appliances:"מכשירי חשמל",kitchen_sinks:"כיורים",bathtubs:"אמבטיות",showers:"מקלחות",toilets:"אסלות",bathroom_sinks:"כיורים ארונות",laundry:"מכבסות",desks:"שולחנות עבודה",office_chairs:"כיסאות משרד",office_storage:"אחסון משרדי",closets:"ארונות",shelving:"מדפים",outdoor_seating:"ישיבה",planters:"עציצים"}},kU={fallback:"רהיט",sofa:"ספה קלאסית",sofa_2:"ספה מודרנית",sofa_corner:"ספה פינתית",sofa_3seat:"ספה תלת מושבית",loveseat:"ספה דו מושבית",armchair:"כורסה קלאסית",armchair_2:"כורסה מודרנית",armchair_wing:"כורסת אוזניים",recliner:"כורסת הרגעה",pouf:"פוף",table:"שולחן סלון",coffee_table:"שולחן קפה",side_table:"שולחן צד",console_table:"קונסולה",tv_unit:"מזנון טלוויזיה",tv_wall_unit:"קיר טלוויזיה",bookcase:"ספריה",shelf_wall:"מדף קיר",display_cabinet:"ויטרינה",rug_rect:"שטיח מלבני",rug_round:"שטיח עגול",bed:"מיטה זוגית",bed_single:"מיטה יחיד",bed_king:"מיטת קינג",bed_bunk:"מיטת קומתיים",nightstand:"שידת לילה",nightstand_wide:"שידת לילה רחבה",dresser:"שידת מגירות",dresser_tall:"שידה גבוהה",vanity_table:"שולחן איפור",wardrobe:"ארון בגדים",wardrobe_sliding:"ארון הזזה",wardrobe_corner:"ארון פינתי",wardrobe_open:"ארון פתוח",mirror_standing:"מראה עומדת",mirror_wall:"מראת קיר",dining_table:"שולחן אוכל",dining_table_round:"שולחן אוכל עגול",dining_table_ext:"שולחן אוכל נפתח",chair:"כיסא אוכל",dining_chair_up:"כיסא מרופד",bench_dining:"ספסל אוכל",sideboard:"מזנון אוכל",buffet:"בופט",bar_stool:"כיסא בר",bar_table:"שולחן בר",cabinet_lower:"ארון תחתון",cabinet_upper:"ארון עליון",cabinet_tall:"ארון גבוה",cabinet_corner:"ארון פינתי",kitchen_island:"אי מטבח",kitchen_island_l:"אי מטבח גדול",fridge:"מקרר",fridge_double:"מקרר דו דלתי",stove:"כיריים",oven_builtin:"תנור בנוי",range_hood:"קולט אדים",microwave:"מיקרוגל",dishwasher:"מדיח כלים",kitchen_sink:"כיור מטבח",kitchen_sink_dbl:"כיור כפול",bathtub:"אמבטיה",bathtub_corner:"אמבטיה פינתית",bathtub_freestand:"אמבטיה עומדת",shower:"מקלחון",shower_walk_in:"מקלחון ווק-אין",toilet:"אסלה",toilet_wall:"אסלה תלויה",bidet:"בידה",bathroom_sink:"כיור רחצה",vanity:"ארון כיור",vanity_double:"ארון כיור כפול",washer:"מכונת כביסה",dryer:"מייבש כביסה",desk:"שולחן כתיבה",desk_l_shape:"שולחן L",desk_standing:"שולחן עמידה",office_chair:"כיסא משרדי",office_chair_ex:"כיסא מנהלים",filing_cabinet:"ארון תיקים",shelf_unit:"יחידת מדפים",closet_tall:"ארון גבוה",closet_wide:"ארון רחב",closet_shoe:"ארון נעליים",storage_shelf:"מדף אחסון",cube_shelf:"מדף קוביות",bench_outdoor:"ספסל גינה",lounge_chair:"כיסא נוח",planter:"עציץ",planter_tall:"עציץ גבוה"},_U={single_door:"דלת רגילה",single_door_glass:"דלת זכוכית",double_door:"דלת כפולה",sliding_door:"דלת הזזה",garage_door:"דלת מוסך",arched_door:"דלת קשתית",arched_door_glass:"קשתית זכוכית",wide_doorway:"פתח רחב",fixed_window:"חלון קבוע",casement_window:"חלון ציר",awning_window:"חלון גג (Awning)",sliding_window:"חלון הזזה",bay_window:"חלון בליטה (Bay)",wide_window:"חלון רחב",arched_window:"חלון קשתי",floor_to_ceiling:"רצפה עד תקרה",passage:"מעבר"},SU={exterior:"חיצוני",interior:"פנימי"},CU={beams:"קורות"},TU={tool:"קורה",add:"הוסף קורה",emptyTitle:"הוספת קורה לתוכנית",empty2dHint:"סמנו נקודת התחלה ונקודת סיום. הקורה תיצמד אוטומטית לתקרה.",empty3dHint:"נעבור למבט 2D כדי לסמן את שתי נקודות הקורה במדויק.",selectedTitle:"קורה נבחרת",ceilingAttached:"צמודה לתקרת הקומה",length:"אורך",width:"רוחב",height:"גובה ירידה",angle:"זווית",startPointPrompt:"לחצו על נקודת ההתחלה של הקורה",endPointPrompt:"לחצו על נקודת הסיום של הקורה",cancelPlacement:"ביטול · Esc",addAnother:"הוסף קורה נוספת"},jU={duplicate:"שכפל",delete:"מחק"},NU={label:"שעה ביום",phases:{night:"לילה",dawn:"לפנות בוקר",morning:"בוקר",n
604oon:"צהריים",afternoon:"אחר הצהריים",goldenHour:"שעת זהב"}},PU={selectorAria:"בורר קומות",title:"קומות הבניין",rowHint:"לחיצה — מעבר · לחיצה כפולה — שינוי שם",hideFloor:"הסתר בתלת-ממד",showFloor:"הצג בתלת-ממד",deleteFloor:"מחיקת קומה",deleteConfirm:'למחוק את "{{name}}"? כל הקירות והריהוט שלה יימחקו.',addFloor:"הוספת קומה",duplicateCurrent:"שכפול הקומה",uploadPlan:"העלאת תוכנית",groundFloor:"קומת קרקע",floorN:"קומה {{index}}",finishRoofTraceBeforeLeave:"סיים או בטל את סימון הגג לפני המעבר"},AU={title:"ריצוף וחומרים",resetPart:"החזר חלק למקור",hint:"השינוי חל על החלק הנבחר בלבד. אפשר להחזיר את החומרים למקור בכל עת.",choosePart:"כל חלקי המודל",choosePartPlaceholder:"בחירת חלק",resetAll:"החזר את כל החומרים למקור",textureHint:"הטקסטורה נפרסת לפי המיפוי הקיים במודל; אין כאן קביעת מידות אריח או פוגה.",loading:"טוען חלקים לעריכת חומרים…",loadError:"לא הצלחנו לטעון את חלקי המודל לעריכה.",retry:"נסה שוב",noParts:"לא נמצאו במודל חלקים זמינים לעריכת חומרים.",editorTitle:"עורך מודל",modelControls:"מיקום ומידות המבנה",surfaceFirst:"בחר רצפה מהקיצורים או חלק מהרשימה, ודא שהמשטח מודגש, ואז בחר חומר.",flooring:"ריצוף",otherMaterials:"חומרים אחרים",namedFloors:"רצפות לפי שם המודל",namedFloorsHint:"ההצעות לפי שמות החלקים בלבד. ודא שהמשטח הרצוי מודגש במודל.",sectionTitle:"ריצוף וחומרי המודל",selectFirst:"בחר רצפה מהקיצורים או חלק מהרשימה כדי להתחיל."},EU={catalog:wU,furniture:kU,opening:_U,wallType:SU,sections:CU,beams:TU,common:jU,environmentTime:NU,levels:PU,blenderMaterials:AU},IU={rooms:{living:"Soggiorno",bedroom:"Camera da Letto",dining:"Zona Pranzo",kitchen:"Cucina",bathroom:"Bagno",office:"Ufficio / Lavoro",storage:"Ripostiglio",outdoor:"Esterno"},subs:{sofas:"Divani",armchairs:"Poltrone",living_tables:"Tavoli da Soggiorno",tv_units:"Mobili TV",bookshelves:"Librerie e Mensole",rugs:"Tappeti",beds:"Letti",nightstands:"Comodini",dressers:"Cassettiere e Cassetti",bedroom_wardrobes:"Armadi",mirrors:"Specchi",dining_tables:"Tavoli da Pranzo",dining_chairs:"Sedie da Pranzo",sideboards:"Credenze e Buffet",bar_area:"Bar",kitchen_cabinets:"Mobili da Cucina",kitchen_islands:"Isola da Cucina",appliances:"Elettrodomestici",kitchen_sinks:"Lavelli",bathtubs:"Vasche da Bagno",showers:"Docce",toilets:"Sanitari",bathroom_sinks:"Lavabi e Mobili",laundry:"Lavanderia",desks:"Scrivanie",office_chairs:"Sedie da Ufficio",office_storage:"Contenitori da Ufficio",closets:"Armadi",shelving:"Scaffalature",outdoor_seating:"Sedute",planters:"Fioriere"}},DU={fallback:"Arredo",sofa:"Divano Classico",sofa_2:"Divano Moderno",sofa_corner:"Divano Angolare",sofa_3seat:"Divano a 3 Posti",loveseat:"Divano a 2 Posti",armchair:"Poltrona Classica",armchair_2:"Poltrona Moderna",armchair_wing:"Poltrona Bergère",recliner:"Poltrona Relax",pouf:"Pouf",table:"Tavolo da Soggiorno",coffee_table:"Tavolino da Caffè",side_table:"Tavolino Laterale",console_table:"Consolle",tv_unit:"Mobile TV",tv_wall_unit:"Parete TV",bookcase:"Libreria",shelf_wall:"Mensola da Parete",display_cabinet:"Vetrina",rug_rect:"Tappeto Rettangolare",rug_round:"Tappeto Rotondo",bed:"Letto Matrimoniale",bed_single:"Letto Singolo",bed_king:"Letto King Size",bed_bunk:"Letto a Castello",nightstand:"Comodino",nightstand_wide:"Comodino Largo",dresser:"Cassettiera",dresser_tall:"Cassettiera Alta",vanity_table:"Tavolo da Trucco",wardrobe:"Armadio",wardrobe_sliding:"Armadio Scorrevole",wardrobe_corner:"Armadio Angolare",wardrobe_open:"Armadio Aperto",mirror_standing:"Specchio a Terra",mirror_wall:"Specchio da Parete",dining_table:"Tavolo da Pranzo",dining_table_round:"Tavolo da Pranzo Rotondo",dining_table_ext:"Tavolo da Pranzo Allungabile",chair:"Sedia da Pranzo",dining_chair_up:"Sedia Imbottita",bench_dining:"Panca da Pranzo",sideboard:"Credenza",buffet:"Buffet",bar_stool:"Sgabello da Bar",bar_table:"Tavolo da Bar",cabinet_lower:"Base",cabinet_upper:"Pensile",cabinet_tall:"Colonna",cabinet_corner:"Mobile Angolare",kitchen_island:"Isola da Cucina",kitchen_island_l:"Isola da Cucina Grande",fridge:"Frigorifero",fridge_double:"Frigorifero a Doppia Porta",stove:"Piano Cottura",oven_builtin:"Forno da Incasso",range_hood:"Cappa Aspirante",microwave:"Microonde",dishwasher:"Lavastoviglie",kitchen_sink:"Lavello da Cucina",kitchen_sink_dbl:"Lavello Doppio",bathtub:"Vasca da Bagno",bathtub_corner:"Vasca Angolare",bathtub_freestand:"V
604asca Freestanding",shower:"Doccia",shower_walk_in:"Doccia Walk-in",toilet:"WC",toilet_wall:"WC Sospeso",bidet:"Bidet",bathroom_sink:"Lavabo",vanity:"Mobile Lavabo",vanity_double:"Mobile Lavabo Doppio",washer:"Lavatrice",dryer:"Asciugatrice",desk:"Scrivania",desk_l_shape:"Scrivania a L",desk_standing:"Scrivania in Piedi",office_chair:"Sedia da Ufficio",office_chair_ex:"Sedia Direzionale",filing_cabinet:"Schedario",shelf_unit:"Scaffale",closet_tall:"Armadio Alto",closet_wide:"Armadio Largo",closet_shoe:"Scarpiera",storage_shelf:"Scaffale Portaoggetti",cube_shelf:"Scaffale a Cubi",bench_outdoor:"Panca da Giardino",lounge_chair:"Sedia Lounge",planter:"Fioriera",planter_tall:"Fioriera Alta"},RU={single_door:"Porta Standard",single_door_glass:"Porta a Vetri",flush_door:"Porta a filo muro",double_door:"Porta Doppia",sliding_door:"Porta Scorrevole",corner_glass_door:"Porta vetrata ad angolo",arched_door:"Porta ad Arco",arched_door_glass:"Porta ad Arco a Vetri",wide_doorway:"Varco Ampio",fixed_window:"Finestra Fissa",casement_window:"Finestra a Battente",wide_window:"Finestra Ampia",arched_window:"Finestra ad Arco",floor_to_ceiling:"Pavimento-Soffitto",floor_to_ceiling_vertical:"Porta scorrevole minimal",passage:"Passaggio"},LU={window:"Finestra",door:"Porta",duplicate:"Duplica",delete:"Elimina",position:"Posizione",width:"Larghezza",height:"Altezza",sill:"Davanzale",rotate90:"Ruota di 90°",windowOpeningDirection:"Direzione di apertura della finestra",doorOpeningDirection:"Direzione di apertura della porta",flushFace:"Lato a filo muro",hingeLeft:"Cerniera a sinistra",hingeRight:"Cerniera a destra",openForward:"Apertura in avanti",openBackward:"Apertura all'indietro",flipHinge:"Inverti cerniera",flipDirection:"Inverti direzione",flushForward:"A filo in avanti",flushBackward:"A filo all'indietro"},OU={exterior:"Esterno",interior:"Interno"},MU={beams:"Travi"},zU={tool:"Trave",add:"Aggiungi trave",emptyTitle:"Aggiungi una trave alla planimetria",empty2dHint:"Indica il punto iniziale e finale. La trave si aggancerà automaticamente al soffitto.",empty3dHint:"Passeremo alla vista 2D per indicare con precisione i due punti della trave.",selectedTitle:"Trave selezionata",ceilingAttached:"Agganciata al soffitto del piano",length:"Lunghezza",width:"Larghezza",height:"Altezza ribassata",angle:"Angolo",startPointPrompt:"Fai clic sul punto iniziale della trave",endPointPrompt:"Fai clic sul punto finale della trave",cancelPlacement:"Annulla · Esc",addAnother:"Aggiungi un’altra trave"},BU={duplicate:"Duplica",delete:"Elimina"},FU={label:"Ora del giorno",phases:{night:"Notte",dawn:"Alba",morning:"Mattina",noon:"Mezzogiorno",afternoon:"Pomeriggio",goldenHour:"Ora d'oro"}},$U={toolbar:"Barra degli strumenti superiore",areas:"Aree",navigation:"Navigazione",backToDashboard:"Torna alla dashboard",myProjects:"I miei progetti",properties:"Proprietà",file:"File",save:"Salva",newProject:"Nuovo progetto",downloadImage:"Scarica immagine",downloadModel:"Scarica modello 3D",edit:"Modifica",clearAll:"Cancella tutto",hideBackgroundPlan:"Nascondi planimetria di sfondo",showBackgroundPlan:"Mostra planimetria di sfondo",hideWallLines:"Nascondi linee dei muri",showWallLines:"Mostra linee dei muri",view:"Vista",axes:"Assi",environmentView:"Esterno",disableEnvironment:"Disattiva ambiente esterno",sketchTools:"Strumenti di disegno",planOrientation:"Orientamento planimetria",viewMode:"Modalità visualizzazione",hiddenWalls:"Muri nascosti",showHiddenWalls:"Mostra muri nascosti ({{count}})",showAllWalls:"Mostra di nuovo tutti i muri",history:"Cronologia",undo:"Annulla (⌘Z)",redo:"Ripristina (⌘⇧Z)",saving:"Salvataggio in corso",saveFailed:"Salvataggio non riuscito",finishRecordingBefore2d:"Termina la registrazione prima di passare al 2D",switchTo2d:"Passa alla modalità 2D",isometric:"Isometrica",topView:"Vista dall'alto",insideHome:"Dentro la casa",recordVideo:"Registra video",activeRecordingAria:"Registrazione attiva — interrompi e salva il tour",recordingNow:"Registrazione in corso · fai clic per interrompere e salvare",notes:{title:"Note",myNotes:"Le mie note",noNotes:"Nessuna nota",visibleCount:"{{visible}} di {{total}} visibili",emptyState:"Non ci sono ancora note su questa planimetria",untitled:"Nota senza testo",hidden:"Nascosta",visible:"Visibile",showNote:"Mostra nota",focus:"Evidenzia"},sketch:{select:"Seleziona",line:"Linea",rectangle:"Rettangolo",measure:"Metro a nastro",polygon:"Poligono",circle:"Cerchio",rotate:"Ruota",faceTools:"Strumenti sulla faccia",faceLine:"Linea sulla faccia",faceCornerArc:"Arco d'angolo tangente",faceRectangle:"Rettangolo sulla faccia",faceMeasure:"Metro a nastro sulla faccia",faceOffset:"Offset sulla faccia"}},VU={finishRoofTraceBeforeLeave:"Termina o annulla il tracciamento del tetto prima di uscire"},UU={title:"Pavimenti e materiali",resetPart:"Ripristina parte",hint:"Le modifiche si applicano solo alla parte selezionata. Puoi ripristinare i materiali originali in qualsiasi momento.",choosePart:"Tutte le parti del modello",choosePartPlaceholder:"Scegli una parte",resetAll:"Ripristina tutti i materiali originali",textureHint:"Le texture seguono la mappatura esistente del modello;
604 qui non è possibile impostare le dimensioni delle piastrelle o le fughe.",loading:"Caricamento delle parti per la modifica dei materiali…",loadError:"Impossibile caricare le parti del modello per la modifica.",retry:"Riprova",noParts:"In questo modello non sono disponibili parti per la modifica dei materiali.",editorTitle:"Editor del modello",modelControls:"Posizione e dimensioni dell’edificio",surfaceFirst:"Scegli un pavimento dai collegamenti rapidi o una parte dall’elenco, verifica la superficie evidenziata, poi scegli un materiale.",flooring:"Pavimenti",otherMaterials:"Altri materiali",namedFloors:"Pavimenti in base ai nomi nel modello",namedFloorsHint:"I suggerimenti si basano solo sui nomi delle parti. Verifica che la superficie desiderata sia evidenziata nel modello.",sectionTitle:"Pavimenti e materiali del modello",selectFirst:"Scegli un pavimento dai collegamenti rapidi o una parte dall’elenco per iniziare."},qU={catalog:IU,furniture:DU,opening:RU,openingEditor:LU,wallType:OU,sections:MU,beams:zU,common:BU,environmentTime:FU,topBar:$U,levels:VU,blenderMaterials:UU},GU={title:"Upload one image for Blender",description:"Upload one furniture photo or top-view floor plan with clear dimensions, as JPG, PNG or WebP. Have a PDF? Export the desired page as an image and upload it here."},WU={title:"Budget approval required",description:"Refresh the page and approve a token limit before starting the build."},HU={title:"Building is temporarily unavailable",description:"Budget 
604controls or the model are currently unavailable. Please try again later."},KU={title:"Cannot change this budget",description:"Refresh the job status and choose an appropriate budget to continue."},YU={title:"Not enough tokens",description:"Add tokens or choose a lower budget before starting the build."},QU={title:"An image is required",description:"Upload an image and try again."},JU={title:"The image is too small",description:"Upload a larger image and try again.",descriptionWithDimensions:"The image is {{actual}}; the required minimum is {{minimum}}. Upload a larger image and try again."},XU={title:"The image is too large",description:"Reduce the file size or image dimensions and try again.",descriptionWithMaximum:"The image is {{actual}}; the supported maximum is {{maximum}}. Reduce the image size and try again."},ZU={title:"We could not read the image",description:"Save it again as PNG, JPEG, or WebP and try again."},eq={title:"The image format is not supported",description:"Use PNG, JPEG, or WebP and try again.",descriptionWithFormats:"Supported formats are {{formats}}. Convert the image and try again."},tq={title:"The image ratio is not supported",description:"Crop the image to a less extreme ratio and try again."},aq={title:"The reference image is unavailable",description:"Upload it again and retry."},iq={title:"Element description missing",description:"Add a short description to each element card and try again.",descriptionWithName:'Add a short description for "{{name}}" on its element card (for example: woman in a white shirt) and try again.'},oq={title:"The prompt is too long",description:"Shorten the prompt and try again.",descriptionWithMaximum:"Shorten the prompt to {{maximum}} characters or fewer and try again."},rq={title:"The request was blocked",description:"Change the prompt or reference image and try again."},nq={title:"The result could not be saved",description:"Try again in a moment."},sq={title:"Connection problem",description:"Check your internet connection and try again."},lq={title:"Generation took too long",description:"Try again in a moment."},cq={title:"The model is busy",description:"Wait a moment and try again."},dq={title:"Too many requests",description:"Wait a moment and try again."},uq={title:"The model could not complete the generation",description:"Try again in a moment."},mq={title:"The job expired",description:"Start a new generation."},pq={title:"Generation failed",description:"Try again in a moment."},hq={not_charged:"No tokens were charged.",refunded:"The tokens were refunded.",refundedWithTokens:"{{tokens}} tokens were refunded."},gq={title:"Generation failed",description:"Try again in a moment."},fq={BLENDER_IMAGE_ONLY:GU,BLENDER_BUDGET_APPROVAL_REQUIRED:WU,BLENDER_BUDGET_UNAVAILABLE:HU,BLENDER_BUDGET_INVALID:KU,INSUFFICIENT_TOKENS:YU,IMAGE_REQUIRED:QU,IMAGE_TOO_SMALL:JU,IMAGE_TOO_LARGE:XU,IMAGE_UNREADABLE:ZU,IMAGE_FORMAT_UNSUPPORTED:eq,ASPECT_RATIO_INVALID:tq,REFERENCE_MISSING:aq,ELEMENT_DESCRIPTION_REQUIRED:iq,PROMPT_TOO_LONG:oq,CONTENT_BLOCKED:rq,STORAGE_ERROR:nq,NETWORK_ERROR:sq,GENERATION_TIMEOUT:lq,PROVIDER_BUSY:cq,RATE_LIMITED:dq,PROVIDER_INTERNAL_ERROR:uq,JOB_EXPIRED:mq,GENERATION_FAILED:pq,billing:hq,generic:gq},bq={title:"ל-Blender מעלים תמונה אחת",description:"העלו תמונת רהיט או תוכנית במבט־על עם מידות ברורות, בפורמט JPG, PNG או WebP. יש לכם PDF? ייצאו את העמוד הרצוי כתמונה והעלו אותו כאן."},vq={title:"נדרש אישור תקציב",description:"יש לרענן את העמוד ולבחור תקרת טוקנים לפני תחילת הבנייה."},yq={title:"הבנייה אינה זמינה כרגע",description:"בקרת התקציב או המודל אינם זמינים כרגע. אפשר לנסות שוב מאוחר יותר."},xq={title:"לא ניתן לשנות את התקציב",description:"יש לרענן את מצב העבודה ולבחור תקציב מתאים להמשך."},wq={title:"אין מספיק טוקנים",description:"אפשר להוסיף טוקנים או לבחור תקציב נמוך יותר לפני תחילת הבנייה."},kq={title:"נדרשת תמונה",description:"אפשר להעלות תמונה ולנסות שוב."},_q={title:"התמונה קטנה מדי",description:"אפשר להעלות תמונה גדולה יותר ולנסות שוב.",descriptionWithDimensions:"מידות התמונה הן {{actual}}, והמינימום הנדרש הוא {{minimum}}. אפשר להעלות תמונה גדולה יותר ולנסות שוב."},Sq={title:"התמונה גדולה מדי",description:"אפשר להקטין את הקובץ או את מידות התמונה ולנסות שוב.",descriptionWithMaximum:"מידות התמונה הן {{actual}}, והמקסימום הנתמך הוא {{maximum}}. אפשר להקטין את התמונה ולנסות שוב."},Cq={title:"לא הצלחנו לקרוא את התמונה",description:"אפשר לשמור אותה מחדש כ־PNG, JPEG או WebP ולנסות שוב."},Tq={title:"פורמט התמונה לא נתמך",description:"אפשר להשתמש ב־PNG, JPEG או WebP ולנסות שוב.",descriptionWithFormats:"הפורמטים הנתמכים הם {{formats}}. אפשר להמיר את התמונה ולנסות שוב."},jq={title:"יחס התמונה לא נתמך",description:"אפשר לחתוך את התמונה ליחס מתון יותר ולנסות שוב."},Nq={title:"תמונת הרפרנס אינה זמינה",description:"אפשר להעלות אותה מחדש ולנסות שוב."},Pq={title:"חסר תיאור לדמות",description:"יש למלא תיאור קצר לכל דמות בכרטיס שלה ולנסות שוב.",descriptionWithName:'יש למלא תיאור קצר לדמות "{{name}}
604" בכרטיס שלה (למשל: אישה בחולצה לבנה) ולנסות שוב.'},Aq={title:"התיאור ארוך מדי",description:"אפשר לקצר את התיאור ולנסות שוב.",descriptionWithMaximum:"אפשר לקצר את התיאור לעד {{maximum}} תווים ולנסות שוב."},Eq={title:"הבקשה נחסמה",description:"אפשר לשנות את התיאור או את תמונת הרפרנס ולנסות שוב."},Iq={title:"שמירת התוצאה נכשלה",description:"אפשר לנסות שוב בעוד רגע."},Dq={title:"בעיית חיבור",description:"כדאי לבדוק את החיבור לאינטרנט ולנסות שוב."},Rq={title:"היצירה ארכה זמן רב מדי",description:"אפשר לנסות שוב בעוד רגע."},Lq={title:"המודל עמוס כרגע",description:"אפשר להמתין מעט ולנסות שוב."},Oq={title:"נשלחו יותר מדי בקשות",description:"אפשר להמתין מעט ולנסות שוב."},Mq={title:"המודל לא השלים את היצירה",description:"אפשר לנסות שוב בעוד רגע."},zq={title:"העבודה פגה",description:"אפשר להתחיל יצירה חדשה."},Bq={title:"היצירה נכשלה",description:"אפשר לנסות שוב בעוד רגע."},Fq={not_charged:"לא חויבו טוקנים.",refunded:"הטוקנים הוחזרו.",refundedWithTokens:"הוחזרו {{tokens}} טוקנים."},$q={title:"היצירה נכשלה",description:"אפשר לנסות שוב בעוד רגע."},Vq={BLENDER_IMAGE_ONLY:bq,BLENDER_BUDGET_APPROVAL_REQUIRED:vq,BLENDER_BUDGET_UNAVAILABLE:yq,BLENDER_BUDGET_INVALID:xq,INSUFFICIENT_TOKENS:wq,IMAGE_REQUIRED:kq,IMAGE_TOO_SMALL:_q,IMAGE_TOO_LARGE:Sq,IMAGE_UNREADABLE:Cq,IMAGE_FORMAT_UNSUPPORTED:Tq,ASPECT_RATIO_INVALID:jq,REFERENCE_MISSING:Nq,ELEMENT_DESCRIPTION_REQUIRED:Pq,PROMPT_TOO_LONG:Aq,CONTENT_BLOCKED:Eq,STORAGE_ERROR:Iq,NETWORK_ERROR:Dq,GENERATION_TIMEOUT:Rq,PROVIDER_BUSY:Lq,RATE_LIMITED:Oq,PROVIDER_INTERNAL_ERROR:Mq,JOB_EXPIRED:zq,GENERATION_FAILED:Bq,billing:Fq,generic:$q},Uq={title:"Carica una sola immagine per Blender",description:"Carica una foto di un mobile o una planimetria dall’alto con misure chiare, in formato JPG, PNG o WebP. Hai un PDF? Esporta la pagina desiderata come immagine e caricala qui."},qq={title:"Approvazione del budget richiesta",description:"Aggiorna la pagina e approva un limite di token prima di avviare la creazione."},Gq={title:"Creazione temporaneamente non disponibile",description:"Il controllo del budget o il modello non sono disponibili. Riprova più tardi."},Wq={title:"Impossibile modificare il budget",description:"Aggiorna lo stato del lavoro e scegli un budget adeguato per continuare."},Hq={title:"Token insufficienti",description:"Aggiungi token o scegli un budget inferiore prima di avviare la creazione."},Kq={title:"È necessaria un'immagine",description:"Carica un'immagine e riprova."},Yq={title:"L'immagine è troppo piccola",description:"Carica un'immagine più grande e riprova.",descriptionWithDimensions:"L'immagine misura {{actual}}; il minimo richiesto è {{minimum}}. Carica un'immagine più grande e riprova."},Qq={title:"L'immagine è troppo grande",description:"Riduci il file o le dimensioni dell'immagine e riprova.",descriptionWithMaximum:"L'immagine misura {{actual}}; il massimo supportato è {{maximum}}. Riduci l'immagine e riprova."},Jq={title:"Non è stato possibile leggere l'immagine",description:"Salvala di nuovo come PNG, JPEG o WebP e riprova."},Xq={title:"Il formato dell'immagine non è supportato",description:"Usa PNG, JPEG o WebP e riprova.",descriptionWithFormats:"I formati supportati sono {{formats}}. Converti l'immagine e riprova."},Zq={title:"Le proporzioni dell'immagine non sono supportate",description:"Ritaglia l'immagine con proporzioni meno estreme e riprova."},eG={title:"L'immagine di riferimento non è disponibile",description:"Caricala di nuovo e riprova."},tG={title:"Descrizione dell'elemento mancante",description:"Aggiungi una breve descrizione a ogni scheda elemento e riprova.",descriptionWithName:'Aggiungi una breve descrizione per "{{name}}" nella sua scheda elemento (ad esempio: donna con camicia bianca) e riprova.'},aG={title:"Il prompt è troppo lungo",description:"Accorcia il prompt e riprova.",descriptionWithMaximum:"Riduci il prompt a un massimo di {{maximum}} caratteri e riprova."},iG={title:"La richiesta è stata bloccata",description:"Modifica il prompt o l'immagine di riferimento e riprova."},oG={title:"Non è stato possibile salvare il risultato",description:"Riprova tra poco."},rG={title:"Problema di connessione",description:"Controlla la connessione internet e riprova."},nG={title:"La generazione ha richiesto troppo tempo",description:"Riprova tra poco."},sG={title:"Il modello è occupato",description:"Attendi un momento e riprova."},lG={title:"Troppe richieste",description:"Attendi un momento e riprova."},cG={title:"Il modello non ha completato la generazione",description:"Riprova tra poco."},dG={title:"Il processo è scaduto",description:"Avvia una nuova generazione."},uG={title:"Generazione non riuscita",description:"Riprova tra poco."},mG={not_charged:"Non sono stati addebitati token.",refunded:"I token sono stati rimborsati.",refundedWithTokens:"Sono stati rimborsati {{tokens}} token."},pG={title:"Generazione non riuscita",description:"Riprova tra poco."},hG={BLENDER_IMAGE_ONLY:Uq,BLENDER_BUDGET_APPROVAL_REQUIRED:qq,BLENDER_BUDGET_UNAVAILABLE:Gq,BLENDER_BUDGET_INVALID:Wq,INSUFFICIENT_TOKENS:Hq,IMAGE_REQUIRED:Kq,IMAGE_TOO_SMALL:Yq,IMAGE_TOO_LARGE:Qq,IMAGE_
604UNREADABLE:Jq,IMAGE_FORMAT_UNSUPPORTED:Xq,ASPECT_RATIO_INVALID:Zq,REFERENCE_MISSING:eG,ELEMENT_DESCRIPTION_REQUIRED:tG,PROMPT_TOO_LONG:aG,CONTENT_BLOCKED:iG,STORAGE_ERROR:oG,NETWORK_ERROR:rG,GENERATION_TIMEOUT:nG,PROVIDER_BUSY:sG,RATE_LIMITED:lG,PROVIDER_INTERNAL_ERROR:cG,JOB_EXPIRED:dG,GENERATION_FAILED:uG,billing:mG,generic:pG},gG={title:"Pick a preset",cost:"4",costAria:"4 tokens",close:"Close",aria:"Pick a preset"},fG={interior:"Interior",exterior:"Exterior",diagrams:"Diagrams / Technical"},bG={style:"Style",lighting:"Lighting",presentation:"Board"},vG={title:"No image attached",body:"Upload a sketch to send a preset",cta:"Upload"},yG={header:gG,tabs:fG,categories:bG,empty:vG,"faithful-render":{title:"Faithful render",subtitle:"Nothing gets redesigned"},"empty-to-furnished":{title:"Empty to furnished",subtitle:"Fills an empty shell"},"styled-editorial":{title:"Editorial styling",subtitle:"Cushions, art, a rug"},"living-magazine":{title:"Living magazine",subtitle:"Styled and lived in"},"warm-modern":{title:"Warm modern",subtitle:"Timber and earth tones"},"refined-mediterranean":{title:"Refined Mediterranean",subtitle:"Plaster, stone, arches"},"calm-japandi":{title:"Calm Japandi",subtitle:"Pale wood, minimal"},"quiet-luxury-drama":{title:"Quiet luxury with drama",subtitle:"Stone, brass, contrast"},"color-character":{title:"Colour and character",subtitle:"A bold palette"},"people-interior":{title:"People inside",subtitle:"Life in the frame"},"pet-in-frame":{title:"A pet in frame",subtitle:"A dog or a cat"},"soft-daylight":{title:"Soft daylight",subtitle:"Soft shadows"},"golden-hour":{title:"Golden hour",subtitle:"Low warm sun"}
604,"architectural-night":{title:"Architectural night",subtitle:"Designed lighting"},"light-shadow-play":{title:"Light and shadow play",subtitle:"Sharp contrast"},"human-closeup":{title:"Human close-up",subtitle:"A portrait in the space"},"furniture-micro":{title:"Furniture detail",subtitle:"Texture and joinery"},"day-to-evening":{title:"Day to evening",subtitle:"One split image"},"inspection-panel-interior":{title:"Moodboard",subtitle:"Material samples from the scene"},"faithful-exterior":{title:"Faithful exterior",subtitle:"Nothing gets redesigned"},"landscape-integrated":{title:"Landscape integrated",subtitle:"Terrain, paths, horizon"},"living-environment":{title:"Living environment",subtitle:"Signs of occupancy"},"street-life":{title:"Street life",subtitle:"Roads, shops, traffic"},"people-exterior":{title:"People outside",subtitle:"Human scale"},"contemporary-israeli":{title:"Contemporary Israeli",subtitle:"Render, stone, aluminium"},"wood-and-metal":{title:"Wood and metal",subtitle:"Warmth against sharpness"},"terracotta-mashrabiya":{title:"Terracotta and mashrabiya",subtitle:"Filtered light"},"monolithic-concrete":{title:"Monolithic concrete",subtitle:"Heavy mass"},"golden-hour-ext":{title:"Golden hour",subtitle:"Raking light on the facade"},"blue-hour":{title:"Blue hour",subtitle:"Twilight, lights on"},"after-rain":{title:"After the rain",subtitle:"Puddles and reflections"},"inspection-panel-exterior":{title:"Moodboard",subtitle:"Material samples from the scene"},"facade-material-board":{title:"Facade material board",subtitle:"Render plus swatches"},"day-to-night":{title:"Day to night",subtitle:"One split image"},"functional-analysis":{title:"Functional analysis diagram",subtitle:"Zones and dimensions"},"custom-cabinetry":{title:"Custom cabinetry board",subtitle:"Elevation, sections, details"},"styling-inspiration":{title:"Interior styling poster",subtitle:"Editorial design breakdown"},"six-ppt-slides":{title:"Six PPT slides",subtitle:"Full design presentation"},"furniture-analysis":{title:"Furniture analysis board",subtitle:"Axonometric and sections"},"material-mood-board":{title:"Material mood board",subtitle:"Samples and cutouts"},"isometric-exploded":{title:"Isometric exploded layers",subtitle:"TV wall disassembly"},"functional-zoning":{title:"Functional zoning diagram",subtitle:"Flat color zones"},"material-analysis":{title:"Material analysis diagram",subtitle:"Materials and finishes"}},xG={title:"בחרו פריסט",cost:"4",costAria:"4 טוקנים",close:"סגור",aria:"בחירת פריסט"},wG={interior:"פנים",exterior:"חוץ",diagrams:"דיאגרמות/טכני"},kG={style:"סגנון",lighting:"תאורה",presentation:"תצוגה"},_G={title:"אין תמונה מצורפת",body:"העלו סקיצה כדי לשלוח פריסט",cta:"העלאת תמונה"},SG={header:xG,tabs:wG,categories:kG,empty:_G,"faithful-render":{title:"רנדר נאמן",subtitle:"בלי לשנות כלום"},"empty-to-furnished":{title:"ריק → מולבש",subtitle:"ממלא חלל ריק"},"styled-editorial":{title:"סטיילינג מגזין",subtitle:"כריות, אמנות, שטיח"},"living-magazine":{title:"מגזין חי",subtitle:"סטיילינג עם חיים"},"warm-modern":{title:"מודרני חם",subtitle:"עץ וגוני אדמה"},"refined-mediterranean":{title:"ים־תיכוני מעודן",subtitle:"טיח, אבן, קשתות"},"calm-japandi":{title:"Japandi רגוע",subtitle:"עץ בהיר, מינימום"},"quiet-luxury-drama":{title:"יוקרה שקטה עם דרמה",subtitle:"אבן, פליז, ניגודיות"},"color-character":{title:"צבע ואופי",subtitle:"פלטה נועזת"},"people-interior":{title:"אנשים בחלל",subtitle:"חיים בפריים"},"pet-in-frame":{title:"חיית מחמד",subtitle:"כלב או חתול"},"soft-daylight":{title:"אור יום רך",subtitle:"צללים רכים"},"golden-hour":{title:"שעת הזהב",subtitle:"אור חם נמוך"},"architectural-night":{title:"לילה אדריכלי",subtitle:"תאורה מתוכננת"}
604,"light-shadow-play":{title:"משחקי אור וצל",subtitle:"ניגודיות חדה"},"human-closeup":{title:"קלוז אפ על אדם",subtitle:"דיוקן בתוך החלל"},"furniture-micro":{title:"מיקרו על רהיט",subtitle:"פרט וטקסטורה"},"day-to-evening":{title:"יום → ערב",subtitle:"תמונה מפוצלת"},"inspection-panel-interior":{title:"מודבורד",subtitle:"דגימות חומר מהסצנה"},"faithful-exterior":{title:"רנדר חוץ נאמן",subtitle:"בלי לשנות כלום"},"landscape-integrated":{title:"משולב בנוף",subtitle:"נוף, שבילים, אופק"},"living-environment":{title:"סביבה חיה",subtitle:"סימני מגורים"},"street-life":{title:"רחוב חי",subtitle:"כבישים, חנויות, תנועה"},"people-exterior":{title:"אנשים בחוץ",subtitle:"קנה מידה אנושי"},"contemporary-israeli":{title:"ישראלי עכשווי",subtitle:"טיח, אבן, אלומיניום"},"wood-and-metal":{title:"עץ ומתכת",subtitle:"חמימות מול חדות"},"terracotta-mashrabiya":{title:"טרקוטה ומשרבייה",subtitle:"אור מסונן"},"monolithic-concrete":{title:"בטון מונוליתי",subtitle:"מסה כבדה"},"golden-hour-ext":{title:"שעת הזהב",subtitle:"אור מלטף על החזית"},"blue-hour":{title:"Blue Hour",subtitle:"דמדומים עם אורות"},"after-rain":{title:"אחרי הגשם",subtitle:"שלוליות והשתקפויות"},"inspection-panel-exterior":{title:"מודבורד",subtitle:"דגימות חומר מהסצנה"},"facade-material-board":{title:"לוח חומרי חזית",subtitle:"רנדר + חומרים"},"day-to-night":{title:"יום → לילה",subtitle:"תמונה מפוצלת"},"functional-analysis":{title:"דיאגרמת ניתוח פונקציונלי",subtitle:"אזורי פונקציה וממדים"},"custom-cabinetry":{title:"לוח ארונות מותאמים",subtitle:"חזית, חתכים ופרטים"},"styling-inspiration":{title:"פוסטר השראת עיצוב פנים",subtitle:"פירוק עיצובי עיתונאי"},"six-ppt-slides":{title:"שישה שקפי PPT",subtitle:"מצגת עיצוב מלאה"},"furniture-analysis":{title:"לוח ניתוח רהיטים",subtitle:"אקסונומטריה וחתכים"},"material-mood-board":{title:"לוח מוד חומרים",subtitle:"דגימות וסטיקרים"},"isometric-exploded":{title:"שכבות אקסונומטריות",subtitle:"פירוק קיר טלוויזיה"},"functional-zoning":{title:"דיאגרמת חלוקה פונקציונלית",subtitle:"אזורי צבע שטוחים"},"material-analysis":{title:"דיאגרמת ניתוח חומרים",subtitle:"חומרים וגימורים"}},CG={title:"Scegli un preset",cost:"4",costAria:"4 token",close:"Chiudi",aria:"Scegli un preset"},TG={interior:"Interni",exterior:"Esterni",diagrams:"Diagrammi / Tecnico"},jG={style:"Stile",lighting:"Luce",presentation:"Tavola"},NG={title:"Nessuna immagine allegata",body:"Carica uno schizzo per inviare un preset",cta:"Carica"},PG={header:CG,tabs:TG,categories:jG,empty:NG,"faithful-render":{title:"Render fedele",subt
604itle:"Nessuna scelta di design"},"empty-to-furnished":{title:"Vuoto → arredato",subtitle:"Riempie uno spazio vuoto"},"styled-editorial":{title:"Styling editoriale",subtitle:"Cuscini, arte, tappeto"},"living-magazine":{title:"Rivista di design",subtitle:"Stile vissuto"},"warm-modern":{title:"Moderno caldo",subtitle:"Legno e toni terra"},"refined-mediterranean":{title:"Mediterraneo raffinato",subtitle:"Intonaco, pietra, archi"},"calm-japandi":{title:"Japandi calmo",subtitle:"Legno chiaro, minimale"},"quiet-luxury-drama":{title:"Lusso silenzioso",subtitle:"Pietra, ottone, contrasto"},"color-character":{title:"Colore e carattere",subtitle:"Una palette audace"},"people-interior":{title:"Persone dentro",subtitle:"Vita nell'inquadratura"},"pet-in-frame":{title:"Un animale",subtitle:"Un cane o un gatto"},"soft-daylight":{title:"Luce diurna morbida",subtitle:"Ombre morbide"},"golden-hour":{title:"Ora dorata",subtitle:"Sole basso e caldo"},"architectural-night":{title:"Notte architettonica",subtitle:"Illuminazione progettata"},"light-shadow-play":{title:"Giochi di luce e ombra",subtitle:"Contrasto netto"},"human-closeup":{title:"Primo piano su una persona",subtitle:"Un ritratto nello spazio"},"furniture-micro":{title:"Dettaglio d'arredo",subtitle:"Texture e finiture"},"day-to-evening":{title:"Giorno → sera",subtitle:"Immagine divisa"},"inspection-panel-interior":{title:"Moodboard",subtitle:"Campioni materiale dalla scena"}
604,"faithful-exterior":{title:"Esterno fedele",subtitle:"Nessuna scelta di design"},"landscape-integrated":{title:"Integrato nel paesaggio",subtitle:"Terreno, vialetti, orizzonte"},"living-environment":{title:"Ambiente vissuto",subtitle:"Segni di vita"},"street-life":{title:"Vita di strada",subtitle:"Strade, negozi, traffico"},"people-exterior":{title:"Persone fuori",subtitle:"Scala umana"},"contemporary-israeli":{title:"Israeliano contemporaneo",subtitle:"Intonaco, pietra, alluminio"},"wood-and-metal":{title:"Legno e metallo",subtitle:"Calore contro nitidezza"},"terracotta-mashrabiya":{title:"Terracotta e mashrabiya",subtitle:"Luce filtrata"},"monolithic-concrete":{title:"Cemento monolitico",subtitle:"Massa pesante"},"golden-hour-ext":{title:"Ora dorata",subtitle:"Luce radente in facciata"},"blue-hour":{title:"Blue hour",subtitle:"Crepuscolo con luci"},"after-rain":{title:"Dopo la pioggia",subtitle:"Pozzanghere e riflessi"},"inspection-panel-exterior":{title:"Moodboard",subtitle:"Campioni materiale dalla scena"},"facade-material-board":{title:"Board materiali facciata",subtitle:"Render e campioni"},"day-to-night":{title:"Giorno → notte",subtitle:"Immagine divisa"},"functional-analysis":{title:"Diagramma analisi funzionale",subtitle:"Zone e dimensioni"},"custom-cabinetry":{title:"Tavola armadi su misura",subtitle:"Prospetto, sezioni, dettagli"},"styling-inspiration":{title:"Poster ispirazione interior",subtitle:"Breakdown editoriale"},"six-ppt-slides":{title:"Sei slide PPT",subtitle:"Presentazione design completa"},"furniture-analysis":{title:"Tavola analisi mobili",subtitle:"Assonometria e sezioni"},"material-mood-board":{title:"Mood board materiali",subtitle:"Campioni e cutout"},"isometric-exploded":{title:"Strati isometrici esplosi",subtitle:"Parete TV smontata"},"functional-zoning":{title:"Diagramma zonizzazione",subtitle:"Zone a colori piatti"},"material-analysis":{title:"Diagramma analisi materiali",subtitle:"Materiali e finiture"}},AG="Approve Blender budget",EG="Final charge: {{rate}} tokens per dollar of model cost, plus {{fixed}} infrastructure tokens. Your approved maximum is deducted upfront; the difference is refunded upon settlement. Construction pauses when more budget is needed.",IG="Baker prompt writing is charged separately (0.5 token), if used.",DG="Available balance: {{balance}} tokens",RG="Total token ceiling",LG="{{tokens}} tokens will be deducted now",OG="Approve budget and continue",MG="Back",zG="Enter a whole number between {{min}} and {{max}}, within your available balance.",BG="Blender construction needs more budget",FG="{{tokens}} tokens already deducted. Increasing the ceiling charges only the difference.",$G="Increase budget",VG="Cancel construction for a full refund",UG="Blender charge: {{charged}} tokens. Refunded: {{refund}} tokens.",qG="Could not update the Blender budget. Please try again.",GG="Cancelling construction refunds all construction tokens deducted. The separate Baker charge is not included.",WG="Insufficient tokens: the total ceiling must be at least {{min}} tokens. Your available balance allows only {{max}}.",HG="Blender modeling in progress",KG="Blender · waiting for a server update",YG="Preparing the result",QG={title:AG,terms:EG,baker:IG,balance:DG,maximum:RG,debit:LG,approve:OG,close:MG,invalid:zG,paused:BG,reserved:FG,increase:$G,cancel:VG,settled:UG,failed:qG,cancelTerms:GG,insufficient:WG,progressBuilding:HG,progressWaiting:KG,progressFinalizing:YG},JG="אישור תקציב Blender",XG="החיוב הסופי: {{rate}} טוקנים לכל דולר עלות מודל, בתוספת {{fixed}} טוקנים לתשתית. הסכום המאושר ינוכה מראש וההפרש יוחזר בסיום. אם התקציב אינו מספיק, הבנייה תיעצר עד לאישור הגדלה.",ZG="כתיבת הפרומפט ב־Baker מחויבת בנפרד (0.5 טוקן), אם השתמשתם בה.",e9="יתרה זמינה: {{balance}} טוקנים",t9="תקרת חיוב כוללת בטוקנים",a9="ינוכו כעת {{tokens}} טוקנים",i9="אישור התקציב והמשך",o9="חזרה",r9="יש להזין מספר שלם בין {{min}} ל־{{max}}, במסגרת היתרה הזמינה.",n9="בניית Blender ממתינה לתקציב נוסף",s9="כבר נוכו {{tokens}} טוקנים. הגדלה מחייבת רק את ההפרש.",l9="הגדלת תקציב",c9="ביטול הבנייה והחזר מלא",d9="חיוב Blender: {{charged}} טוקנים. הוחזרו {{refund}} טוקנים.",u9="לא ניתן לעדכן את תקציב Blender. נסו שוב.",m9="ביטול הבנייה מחזיר את מלוא הטוקנים שנוכו עבור הבנייה. חיוב Baker נפרד אינו כלול.",p9="אין מספיק טוקנים: נדרשים לפחות {{min}} טוקנים לתקרה הכוללת. היתרה הזמינה מאפשרת תקרה של {{max}} בלבד.",h9="המידול ב־Blender בעבודה",g9="Blender · ממתין לעדכון מהשרת",f9="מכין את התוצאה",b9={title:JG,terms:XG,baker:ZG,balance:e9,maximum:t9,debit:a9,approve:i9,close:o9,invalid:r9,paused:n9,reserved:s9,increase:l9,cancel:c9,settled:d9,failed:u9,cancelTerms:m9,insufficient:p9,progressBuilding:h9,progressWaiting:g9,progressFinalizing:f9},v9="Approva il budget Blender",y9="Costo finale: {{rate}} token per dollaro di costo del modello, più {{fixed}} token per l’infrastruttura. Il massimo approvato viene addebitato in anticipo; la differenza viene rimborsata alla chiusura. La costruzione si sospende se serve altro budget.",x9="La scrittura del prompt con Baker si paga separatamente (0,5 token), se utilizzata.",w9="Saldo disponibile: {{balance}} token",k9="Limite totale in token",_9="Verranno addebitati {{tokens}} token ora",S9="Approva il budget e continua",C9="Indietro",T9="Inserisci un numero intero tra {{min}} e {{max}}, entro il saldo disponibile.",j9="La costruzione Blender richiede altro budget",N9="{{tokens}} token già addebitati. Aumentare il limite addebita solo la differenza.",P9="Aumenta il budget",A9="Annulla la costruzione con rimborso completo",E9="Addebito Blender: {{charged}} token. Rimborsati: {{refund}} token.",I9="Impossibile aggiornare il budget Blender. Riprova.",D9="L’annullamento rimborsa tutti i token addebitati per la costruzione. L’addebito separato di Baker non è incluso.",R9="Token insufficienti: il limite totale deve essere almeno {{min}} token. Il saldo disponibile consente solo {{max}}.",L9="Modellazione Blender in corso",O9="Blender · in attesa di aggiornamenti dal server",M9="Preparazione del risultato",z9={title:v9,terms:y9,baker:x9,balance:w9,maximum:k9,debit:_9,approve:S9,close:C9,invalid:T9,paused:j9,reserved:N9,increase:P9,cancel:A9,settled:E9,failed:I9,cancelTerms:D9,insufficient:R9,progressBuilding:L9,progressWaiting:O9,progressFinalizing:M9},B9={en:{"blender-budget":QG,common:OD,landing:uR,auth:vR,onboarding:CR,dashboard:yL,canvas:YR,prompts:M4,billing:Z4,tutorial:sL,unsubscribed:_L,privacy:gg,terms:fg,accessibility:ML,creators:T8,"kling3-workspace":w7,buyerTerms:bg,creatorAgreement:vg,sketch3d:yg,floorplan:xU,"generation-errors":fq,sketchPresets:yG},it:{"blender-budget":z9,common:GO,landing:zO,auth:XO,onboarding:rM,dashboard:QL,canvas:gO,prompts:C6,billing:wM,tutorial:PM,unsubscribed:eO,creators:MM,"kling3-workspace":dz,privacy:gg,terms:fg,buyerTerms:bg,creatorAgreement:vg,sketch3d:yg,floorplan:qU,"generation-errors":hG,sketchPresets:PG},he:{"blender-budget":b9,common:bz,landing:Wz,auth:Zz,onboarding:nB,privacy:dB,terms:fB,accessibility:kB,dashboard:RB,canvas:aF,prompts:qF,billing:n8,tutorial:h8,unsubscribed:v8,creators:R8,"kling3-workspace":s$,buyerTerms:v$,creatorAgreement:P$,sketch3d:kV,floorplan:EU,"generation-errors":Vq,sketchPresets:SG}};Ut.use(sx).use(uT).init({resources:B9,fallbackLng:"en",supportedLngs:["en","he","it"],detection:{order:["querystring","localStorage","cookie","navigator"],caches:["localStorage","cookie"],lookupQuerystring:"lang",lookupLocalStorage:"locale",lookupCookie:"locale"},ns:["common","landing","auth","onboarding","privacy","terms","buyerTerms","creatorAgreement","accessibility","dashboard","canvas","prompts","billing","tutorial","unsubscribed","creators","kling3-workspace","sketch3d","floorplan","generation-errors"],defaultNS:"common",interpolation:{escapeValue:!1},react:{useSuspense:!1}});let lx=-1;const Nr=t=>{addEventListener("pageshow",e=>{e.persisted&&(lx=e.timeStamp,t(e))},!0)},Da=(t,e,a,i)=>{let r,n;return s=>{e.value>
604=0&&(s||i)&&(n=e.value-(r??0),(n||r===void 0)&&(r=e.value,e.delta=n,e.rating=((l,c)=>l>c[1]?"poor":l>c[0]?"needs-improvement":"good")(e.value,a),t(e)))}},fm=t=>{requestAnimationFrame(()=>requestAnimationFrame(()=>t()))},bm=()=>{const t=performance.getEntriesByType("navigation")[0];if(t&&t.responseStart>0&&t.responseStart<performance.now())return t},Qn=()=>{const t=bm();return(t==null?void 0:t.activationStart)??0},Ra=(t,e=-1)=>{const a=bm();let i="navigate";return lx>=0?i="back-forward-cache":a&&(document.prerendering||Qn()>0?i="prerender":document.wasDiscarded?i="restore":a.type&&(i=a.type.replace(/_/g,"-"))),{name:t,value:e,rating:"good",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:i}},zc=new WeakMap;function vm(t,e){return zc.get(t)||zc.set(t,new e),zc.get(t)}class F9{constructor(){ft(this,"t");ft(this,"i",0);ft(this,"o",[])}h(e){var r;if(e.hadRecentInput)return;const a=this.o[0],i=this.o.at(-1);this.i&&a&&i&&e.startTime-i.startTime<1e3&&e.startTime-a.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),(r=this.t)==null||r.call(this,e)}}const Jn=(t,e,a={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(t)){const i=new PerformanceObserver(r=>{Promise.resolve().then(()=>{e(r.getEntries())})});return i.observe({type:t,buffered:!0,...a}),i}}catch{}},ym=t=>{let e=!1;return()=>{e||(t(),e=!0)}};let Ao=-1;const cx=new Set,xg=()=>document.visibilityState!=="hidden"||document.prerendering?1/0:0,au=t=>{if(document.visibilityState==="hidden"){if(t.type==="visibilitychange")for(const e of cx)e();isFinite(Ao)||(Ao=t.type==="visibilitychange"?t.timeStamp:0,removeEventListener("prerenderingchange",au,!0))}},ql=()=>{var t;if(Ao<0){const e=Qn();Ao=(document.prerendering||(t=globalThis.performance.getEntriesByType("visibility-state").filter(i=>i.name==="hidden"&&i.startTime>e)[0])==null?void 0:t.startTime)??xg(),addEventListener("visibilitychange",au,!0),addEventListener("prerenderingchange",au,!0),Nr(()=>{setTimeout(()=>{Ao=xg()})})}return{get firstHiddenTime(){return Ao},onHidden(e){cx.add(e)}}},Gl=t=>{document.prerendering?addEventListener("prerenderingchange",()=>t(),!0):t()},wg=[1800,3e3],dx=(t,e={})=>{Gl(()=>{const a=ql();let i,r=Ra("FCP");const n=Jn("paint",s=>{for(const l of s)l.name==="first-contentful-paint"&&(n.disconnect(),l.startTime<a.firstHiddenTime&&(r.value=Math.max(l.startTime-Qn(),0),r.entries.push(l),i(!0)))});n&&(i=Da(t,r,wg,e.reportAllChanges),Nr(s=>{r=Ra("FCP"),i=Da(t,r,wg,e.reportAllChanges),fm(()=>{r.value=performance.now()-s.timeStamp,i(!0)})}))})},kg=[.1,.25],$9=(t,e={})=>{const a=ql();dx(ym(()=>{let i,r=Ra("CLS",0);const n=vm(e,F9),s=c=>{for(const d of c)n.h(d);n.i>r.value&&(r.value=n.i,r.entries=n.o,i())},l=Jn("layout-shift",s);l&&(i=Da(t,r,kg,e.reportAllChanges),a.onHidden(()=>{s(l.takeRecords()),i(!0)}),Nr(()=>{n.i=0,r=Ra("CLS",0),i=Da(t,r,kg,e.reportAllChanges),fm(()=>i())}),setTimeout(i))}))};let ux=0,Bc=1/0,Cs=0;const V9=t=>{for(const e of t)e.interactionId&&(Bc=Math.min(Bc,e.interactionId),Cs=Math.max(Cs,e.interactionId),ux=Cs?(Cs-Bc)/7+1:0)};let iu;const _g=()=>iu?ux:performance.interactionCount??0,U9=()=>{"interactionCount"in performance||iu||(iu=Jn("event",V9,{type:"event",buffered:!0,durationThreshold:0}))};let Sg=0;class q9{constructor(){ft(this,"u",[]);ft(this,"l",new Map);ft(this,"m");ft(this,"p")}v(){Sg=_g(),this.u.length=0,this.l.clear()}L(){const e=Math.min(this.u.length-1,Math.floor((_g()-Sg)/50));return this.u[e]}h(e){var r,n;if((r=this.m)==null||r.call(this,e),!e.interactionId&&e.entryType!=="first-input")return;const a=this.u.at(-1);let i=this.l.get(e.interactionId);if(i||this.u.length<10||e.duration>a.P){if(i?e.duration>i.P?(i.entries=[e],i.P=e.duration):e.duration===i.P&&e.startTime===i.entries[0].startTime&&i.entries.push(e):(i={id:e.interactionId,entries:[e],P:e.duration},this.l.set(i.id,i),this.u.push(i)),this.u.sort((s,l)=>l.P-s.P),this.u.length>10){const s=this.u.splice(10);for(const l of s)this.l.delete(l.id)}(n=this.p)==null||n.call(this,i)}}}const mx=t=>{const e=globalThis.requestIdleCallback||setTimeout;document.visibilityState==="hidden"?t():(t=ym(t),addEventListener("visibilitychange",t,{once:!0,capture:!0}),e(()=>{t(),removeEventListener("visibilitychange",t,{capture:!0})}
604))},Cg=[200,500],G9=(t,e={})=>{if(!globalThis.PerformanceEventTiming||!("interactionId"in PerformanceEventTiming.prototype))return;const a=ql();Gl(()=>{U9();let i,r=Ra("INP");const n=vm(e,q9),s=c=>{mx(()=>{for(const u of c)n.h(u);const d=n.L();d&&d.P!==r.value&&(r.value=d.P,r.entries=d.entries,i())})},l=Jn("event",s,{durationThreshold:e.durationThreshold??40});i=Da(t,r,Cg,e.reportAllChanges),l&&(l.observe({type:"first-input",buffered:!0}),a.onHidden(()=>{s(l.takeRecords()),i(!0)}),Nr(()=>{n.v(),r=Ra("INP"),i=Da(t,r,Cg,e.reportAllChanges)}))})};class W9{constructor(){ft(this,"m")}h(e){var a;(a=this.m)==null||a.call(this,e)}}const Tg=[2500,4e3],H9=(t,e={})=>{Gl(()=>{const a=ql();let i,r=Ra("LCP");const n=vm(e,W9),s=c=>{e.reportAllChanges||(c=c.slice(-1));for(const d of c)n.h(d),d.startTime<a.firstHiddenTime&&(r.value=Math.max(d.startTime-Qn(),0),r.entries=[d],i())},l=Jn("largest-contentful-paint",s);if(l){i=Da(t,r,Tg,e.reportAllChanges);const c=ym(()=>{s(l.takeRecords()),l.disconnect(),i(!0)}),d=u=>{u.isTrusted&&(mx(c),removeEventListener(u.type,d,{capture:!0}))};for(const u of["keydown","click","visibilitychange"])addEventListener(u,d,{capture:!0});Nr(u=>{r=Ra("LCP"),i=Da(t,r,Tg,e.reportAllChanges),fm(()=>{r.value=performance.now()-u.timeStamp,i(!0)})})}})},jg=[800,1800],ou=t=>{document.prerendering?Gl(()=>ou(t)):document.readyState!=="complete"?addEventListener("load",()=>ou(t),!0):setTimeout(t)},K9=(t,e={})=>{let a=Ra("TTFB"),i=Da(t,a,jg,e.reportAllChanges);ou(()=>{const r=bm();r&&(a.value=Math.max(r.responseStart-Qn(),0),a.entries=[r],i(!0),Nr(()=>{a=Ra("TTFB",0),i=Da(t,a,jg,e.reportAllChanges),i(!0)}))})};function Y9(t){const e=Q9;$9(e),G9(e),H9(e),dx(e),K9(e)}function Q9(t){typeof window<"u"&&window.dataLayer&&window.dataLayer.push({event:"web_vitals",web_vitals_name:t.name,web_vitals_value:Math.round(t.name==="CLS"?t.value*1e3:t.value),web_vitals_delta:Math.round(t.name==="CLS"?t.delta*1e3:t.delta),web_vitals_id:t.id,web_vitals_rating:t.rating})}if(typeof window<"u"&&typeof Node<"u"&&Node.prototype){const t=Node.prototype.removeChild;Node.prototype.removeChild=function(a){if(a.parentNode!==this){if(a.parentNode)try{return a.parentNode.removeChild(a)}catch{return a}return a}return t.call(this,a)};const e=Node.prototype.insertBefore;Node.prototype.insertBefore=function(a,i){return i&&i.parentNode!==this?e.call(this,a,null):e.call(this,a,i)}}if(typeof window<"u"){const t=e=>{M3()&&(e==null||e.preventDefault())};window.addEventListener("vite:preloadError",e=>t(e)),window.addEventListener("error",e=>{const a=(e==null?void 0:e.message)||"";(a.includes("Failed to fetch dynamically imported module")||a.includes("error loading dynamically imported module"))&&t(e)}),window.addEventListener("unhandledrejection",e=>{var i;const a=((i=e==null?void 0:e.reason)==null?void 0:i.message)||"";(a.includes("Failed to fetch dynamically imported module")||a.includes("error loading dynamically imported module")||a.includes("Loading chunk"))&&t(e)})}Y9();if(typeof window<"u"){const t=a=>{const i=a.map(s=>typeof s=="string"?s:s!=null&&s.toString?s.toString():s!=null&&s.message?s.message:JSON.stringify(s)).join(" ").toLowerCase(),r=i.includes("[violation]")||i.includes("permissions policy")||i.includes("permission policy"),n=i.includes("fullscreen");return r&&n},e={warn:console.warn.bind(console),error:console.error.bind(console),log:console.log.bind(console),info:console.info.bind(console),debug:console.debug.bind(console)};console.warn=(...a)=>{t(a)||e.warn(...a)},console.error=(...a)=>{t(a)||e.error(...a)},console.log=(...a)=>{t(a)||e.log(...a)},console.info=(...a)=>{t(a)||e.info(...a)},console.debug=(...a)=>{t(a)||e.debug(...a)};try{const a=Object.getPrototypeOf(console);["warn","error","log","info","debug"].forEach(r=>{const n=a[r];n&&(a[r]=function(...s){if(!t(s))return n.apply(this,s)})})}catch{}}Ax(document.getElementById("root")).render(o.jsx(yf,{children:o.jsx(hD,{})}));export{to as $,Oc as A,ts as B,as as C,Yu as D,jj as E,$i as F,_w as G,Ga as H,gu as I,Si as J,mo as K,on as L,rn as M,Un as N,Ci as O,Mm as P,Al as Q,zm as R,Dw as S,Jt as T,ir as U,oc as V,dn as W,Et as X,Ft as Y,yw as Z,wv as _,Dt as a,yn as a$,vl as a0,nn as a1,ac as a2,Im as a3,Dm as a4,fw as a5,Gn as a6,pa as a7,Fh as a8,Co as a9,gW as aA,Fw as aB,CW as aC,Ke as aD,Cw as aE,Sf as aF,Wc as aG,xw as aH,Sw as aI,Hr as aJ,Bs as aK,mW as aL,rW as aM,Vn as aN,TW as aO,jW as aP,zs as aQ,an as aR,Vs as aS,Fs as aT,Bh as aU,Id as aV,Dd as aW,Em as aX,il as aY,ca as aZ,Om as a_,Ie as aa,Es as ab,Os as ac,$I as ad,G0 as ae,VI as af,K0 as ag,NW as ah,UI as ai,Xd as aj,Bm as ak,ar as al,ww as am,cn as an,za as ao,Kf as ap,k1 as aq,_1 as ar,eo as as,Yf as at,ic as au,$s as av,Sv as aw,Bn as ax,yr as ay,ta as az,Vt as b,fW as b$,bu as b0,sn as b1,Gc as b2,Ew as b3,Vj as b4,Uj as b5,Vv as b6,wi as b7,SN as b8,ln as b9,On as bA,Fo as bB,$o as bC,Ls as bD,kw as bE,Bi as bF,$T as bG,zT as bH,_v as bI,D3 as bJ,fu as bK,Ln as bL,$u as bM,Q0 as bN,Gu as bO,hW as bP,Ss as bQ,Cv as bR,Tv as bS,jv as bT,xl as bU,Mw as bV,bW,Mn as bX,Am as bY,PW as bZ,vW as b_,Wa as ba,Rd as bb,Ld as bc,$h as bd,kW as be,Is as bf,Ju as bg,nW as bh,Y0 as bi,Vd as bj,wW as bk,xv as bl,pW as bm,oa as bn,ma as bo,It as bp,OT as bq,nv as br,dT as b
604s,lT as bt,Pd as bu,oo as bv,eT as bw,aT as bx,nT as by,mT as bz,q as c,Iw as c$,hG as c0,Vq as c1,fq as c2,lI as c3,sI as c4,Nw as c5,vi as c6,yl as c7,Pm as c8,Pw as c9,_W as cA,_h as cB,kh as cC,_A as cD,Sn as cE,Rm as cF,VN as cG,Ha as cH,_f as cI,F3 as cJ,es as cK,dm as cL,ju as cM,Rw as cN,yv as cO,C3 as cP,Bu as cQ,vT as cR,Td as cS,jd as cT,qa as cU,Cc as cV,Ic as cW,Or as cX,Mr as cY,jE as cZ,i0 as c_,QT as ca,w3 as cb,Nf as cc,WA as cd,GA as ce,vw as cf,tc as cg,xn as ch,BN as ci,lr as cj,cr as ck,ur as cl,mr as cm,dr as cn,pr as co,wn as cp,Ud as cq,$w as cr,Fm as cs,iP as ct,lh as cu,TA as cv,nm as cw,lm as cx,AP as cy,xh as cz,H3 as d,N3 as d0,KI as d1,aj as d2,rj as d3,qu as d4,kv as d5,g3 as d6,_r as d7,RT as d8,FT as d9,YT as da,cm as db,dh as dc,SW as dd,zn as e,le as f,Tf as g,qs as h,Ut as i,Cf as j,Aw as k,oi as l,Tw as m,Zy as n,$e as o,_i as p,Nl as q,ee as r,V as s,Us as t,Pt as u,Ku as v,yW as w,y as x,Il as y,jk as z};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.