@mindexec/cli 0.2.378 → 0.2.379

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/package.json +1 -1
  2. package/wwwroot/assets/{AdminDashboardPage-B3W0v-wJ.js → AdminDashboardPage-CptFPV__.js} +1 -1
  3. package/wwwroot/assets/{AppSidebar-DGHPM2aY.js → AppSidebar-6q9MElKP.js} +2 -2
  4. package/wwwroot/assets/AuthPages-BtLsYX_F.js +1 -0
  5. package/wwwroot/assets/{CodePage-IDvgJ1g9.js → CodePage-CtcukAw7.js} +1 -1
  6. package/wwwroot/assets/{CompanyCorePage-C6x4Tlzj.js → CompanyCorePage-CVw3X796.js} +1 -1
  7. package/wwwroot/assets/{ExecutionModePage-FMQgV5xU.js → ExecutionModePage-BxZvRmyD.js} +5 -5
  8. package/wwwroot/assets/{LaunchLeadCapture-Btre_FaA.js → LaunchLeadCapture-Bx9LM0IX.js} +1 -1
  9. package/wwwroot/assets/{MarketingHome-BJI2zEYK.js → MarketingHome-BsyerRpe.js} +1 -1
  10. package/wwwroot/assets/MindCanvas-wBB9fMPS.js +49 -0
  11. package/wwwroot/assets/{PlanMasterPage-O3cMSoPj.js → PlanMasterPage-juSUgUYZ.js} +4 -4
  12. package/wwwroot/assets/PricingPage-7NW6HJxV.js +1 -0
  13. package/wwwroot/assets/{ToolPages-CYlA0nhA.js → ToolPages-n6d8tLbT.js} +9 -9
  14. package/wwwroot/assets/{YouTubeSearchPage-J-gy-4-m.js → YouTubeSearchPage-52qOcKbo.js} +2 -2
  15. package/wwwroot/assets/{canvas-runtime-D2W6Dpfc.js → canvas-runtime-D3amtMwe.js} +3 -3
  16. package/wwwroot/assets/{index-DLbrmSV7.js → index-De6zm3_M.js} +2 -2
  17. package/wwwroot/assets/{storage-BMivmyrZ.js → storage-RP5Dyxmq.js} +1 -1
  18. package/wwwroot/assets/{supabaseAuthAdapter-D79LnMqE.js → supabaseAuthAdapter-CuJuASQT.js} +1 -1
  19. package/wwwroot/assets/{vendor-icons-678PAT8P.js → vendor-icons-DE3gIReG.js} +22 -32
  20. package/wwwroot/index.html +2 -2
  21. package/wwwroot/assets/AuthPages-DmvL8yac.js +0 -1
  22. package/wwwroot/assets/MindCanvas-CR358MC7.js +0 -48
  23. package/wwwroot/assets/PricingPage-BP4Otwwx.js +0 -1
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/supabaseAuthAdapter-D79LnMqE.js","assets/productionAdapterConfig-C5jfk6oG.js","assets/canvas-runtime-D2W6Dpfc.js","assets/vendor-react-BXzpOyCS.js","assets/app-runtime-xD2Z3NdN.js","assets/vendor-icons-678PAT8P.js","assets/MindCanvas-CR358MC7.js","assets/storage-BMivmyrZ.js","assets/runtimeSettingsPersistenceProjection-BoNWmYjU.js","assets/vendor-msgpack-BE8aAsr3.js","assets/toolHandoff-D5e5f7t5.js","assets/executionModeSettings-NJqurj-o.js","assets/MindCanvas-Dbwuzfbv.css","assets/PlanMasterPage-O3cMSoPj.js","assets/PlanMasterPage-CJ36rep-.css","assets/PricingPage-BP4Otwwx.js","assets/LaunchLeadCapture-Btre_FaA.js","assets/LaunchLeadCapture-CiRI1shz.css","assets/pricingCheckoutShell-O-DnwmbU.js","assets/PricingPage-Cg_0i_ZR.css","assets/AuthPages-DmvL8yac.js","assets/AuthPages-BrH6kRcv.css","assets/ToolPages-CYlA0nhA.js","assets/marketingTools-DN_rnHeB.js","assets/ToolPages-DIB187pZ.css","assets/YouTubeSearchPage-J-gy-4-m.js","assets/YouTubeSearchPage-IPPa_BIH.css","assets/CompanyCorePage-C6x4Tlzj.js","assets/CompanyCorePage-ChBnq1ve.css","assets/AdminDashboardPage-B3W0v-wJ.js","assets/AdminDashboardPage-B2vz2Px9.css","assets/CodePage-IDvgJ1g9.js","assets/code-agent-runtime-B5PPZd1t.js","assets/CodePage-Bncc352E.css","assets/ExecutionModePage-FMQgV5xU.js","assets/ExecutionModePage-TLuld9l3.css","assets/MarketingHome-BJI2zEYK.js","assets/MarketingHome-DPzaYzA_.css","assets/AppSidebar-DGHPM2aY.js"])))=>i.map(i=>d[i]);
2
- var q=Object.defineProperty;var G=(e,t,o)=>t in e?q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var x=(e,t,o)=>G(e,typeof t!="symbol"?t+"":t,o);import{r as i,j as r,R as Y}from"./vendor-react-BXzpOyCS.js";import{R as h,i as X}from"./app-runtime-xD2Z3NdN.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const c of a)if(c.type==="childList")for(const u of c.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&n(u)}).observe(document,{childList:!0,subtree:!0});function o(a){const c={};return a.integrity&&(c.integrity=a.integrity),a.referrerPolicy&&(c.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?c.credentials="include":a.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function n(a){if(a.ep)return;a.ep=!0;const c=o(a);fetch(a.href,c)}})();const J="modulepreload",Q=function(e){return"/"+e},U={},b=function(t,o,n){let a=Promise.resolve();if(o&&o.length>0){let u=function(p){return Promise.all(p.map(d=>Promise.resolve(d).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};document.getElementsByTagName("link");const s=document.querySelector("meta[property=csp-nonce]"),m=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));a=u(o.map(p=>{if(p=Q(p),p in U)return;U[p]=!0;const d=p.endsWith(".css"),y=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${y}`))return;const g=document.createElement("link");if(g.rel=d?"stylesheet":J,d||(g.as="script"),g.crossOrigin="",g.href=p,m&&g.setAttribute("nonce",m),document.head.appendChild(g),d)return new Promise((f,k)=>{g.addEventListener("load",f),g.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${p}`)))})}))}function c(u){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=u,window.dispatchEvent(s),!s.defaultPrevented)throw u}return a.then(u=>{for(const s of u||[])s.status==="rejected"&&c(s.reason);return t().catch(c)})},L="mindexec-local-auth-shell-v2",Z="mindexec-react-auth-shell-session-changed",ee="supabase-callback@mindexec.local";function te(e){const t=e;return!!(t&&typeof t=="object"&&typeof t.userId=="string"&&typeof t.email=="string"&&t.provider==="Google"&&typeof t.signedInAt=="string")}function oe(e){const t=e.toLowerCase();return t.includes("access_token=")||t.includes("refresh_token=")||t.includes("provider_token=")||t.includes("provider_refresh_token=")||t.includes("expires_in=")||t.includes("token_type=")||t.includes("type=recovery")||t.includes("type=invite")||t.includes("error=")||t.includes("error_description=")||t.includes("code=")}function ae(e){const t=e.split("=",2)[0].toLowerCase();return t==="access_token"||t==="refresh_token"||t==="provider_token"||t==="provider_refresh_token"||t==="expires_in"||t==="expires_at"||t==="token_type"||t==="type"||t==="error"||t==="error_code"||t==="error_description"||t==="code"}function I(e){const t=e.trim().replace(/^[?#]/,"");return t?t.split("&").filter(Boolean).filter(n=>!ae(n)).join("&"):""}function ne(e){const t=(e||"").trim();if(!t||!t.startsWith("/")||t.startsWith("//")||t.includes("\\"))return"";try{const o=new URL(t,window.location.origin);return o.origin!==window.location.origin?"":`${o.pathname}${o.search}${o.hash}`}catch{return""}}function re(e){const t=new URL(e,window.location.origin),o=`${t.search}&${t.hash}`,n=oe(o);if(!n)return{hasAuthPayload:!1,cleanedPath:`${t.pathname}${t.search}${t.hash}`,shouldCreateLocalShell:!1,shouldRouteToMindCanvas:!1,hasError:!1,hasRecovery:!1,hasInvite:!1,hasCode:!1,hasToken:!1};const a=I(t.search),c=I(t.hash),u=/(?:^|[&#?])error=/i.test(o)||/(?:^|[&#?])error_description=/i.test(o),s=/(?:^|[&#?])type=recovery(?:&|$)/i.test(o),m=/(?:^|[&#?])type=invite(?:&|$)/i.test(o),p=/(?:^|[&#?])code=/i.test(o),d=/(?:^|[&#?])(?:access_token|refresh_token)=/i.test(o),y=ne(t.searchParams.get("next"));let g=`${t.pathname}${a?`?${a}`:""}${c?`#${c}`:""}`;const f=t.pathname==="/"||t.pathname==="",k=t.pathname==="/login",E=!u&&!s&&!m&&(p||d),l=E&&!y&&(f||k);if(y&&E)g=y;else if(l){const v=new URLSearchParams(a);v.delete("next");const S=v.toString();g=`/mindcanvas${S?`?${S}`:""}`}return{hasAuthPayload:n,cleanedPath:g,shouldCreateLocalShell:!u&&!s&&!m&&(p||d),shouldRouteToMindCanvas:l,hasError:u,hasRecovery:s,hasInvite:m,hasCode:p,hasToken:d}}function se(e){return`local-google-${e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-")||"user"}`}function O(e){try{window.dispatchEvent(new CustomEvent(Z,{detail:{signedIn:!!e,source:(e==null?void 0:e.source)??"cleared",hasEmail:!!(e!=null&&e.email)}}))}catch{}}function nt(){try{const e=window.localStorage.getItem(L);if(!e)return null;const t=JSON.parse(e);return te(t)?t:null}catch{return null}}function ie(e="builder@mindexec.local",t="manual-google-shell"){const o=e.trim().toLowerCase()||"builder@mindexec.local",n={userId:typeof crypto<"u"&&"randomUUID"in crypto?`local-google-${crypto.randomUUID()}`:se(o),email:o,provider:"Google",signedInAt:new Date().toISOString(),source:t};return B(n)}function B(e){try{window.localStorage.setItem(L,JSON.stringify(e))}catch{}return h.emit(e.source==="supabase-provider-session"?"auth.supabase.sessionShell":"auth.google.localShell",{provider:e.provider,hasEmail:!!e.email,source:e.source}),O(e),e}function rt(){try{window.localStorage.removeItem(L)}catch{}h.emit("auth.localShell.cleared"),O(null)}const le={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},ce="mindexec-production-adapter-runtime-env-loaded";function H(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function w(e,t){let o=e;for(const n of t){if(!H(o))return"";o=o[n]}return typeof o=="string"?o.trim():""}function de(e,t){let o=e;for(const n of t){if(!H(o)||!(n in o))return null;o=o[n]}if(typeof o=="boolean")return o;if(typeof o=="string"){const n=o.trim().toLowerCase();if(["1","true","yes","on"].includes(n))return!0;if(["0","false","no","off"].includes(n))return!1}return null}function A(e,t,o){o&&(e[t]=o)}function ue(e,t,o){o!==null&&(e[t]=String(o))}function pe(e){return de(e,["ProjectStorage","CloudProjectsEnabled"])}function me(e){const t=w(e,["Supabase","Url"]),o=w(e,["Supabase","PublishableKey"])||w(e,["Supabase","Key"])||w(e,["Supabase","AnonKey"]),n=w(e,["Supabase","ServiceRoleKey"]);return!!(t&&o&&!n)}function he(e){const t={},o=pe(e),n=me(e),a=w(e,["Supabase","Url"]),c=w(e,["Supabase","PublishableKey"])||w(e,["Supabase","Key"])||w(e,["Supabase","AnonKey"]),u=w(e,["CloudflareR2","PublicBaseUrl"])||w(e,["CloudStorage","PublicBaseUrl"])||w(e,["CloudStorage","PublicUrl"]);return ue(t,"VITE_MINDEXEC_CLOUD_PROJECTS_ENABLED",o),n&&(A(t,"VITE_MINDEXEC_SUPABASE_URL",a),A(t,"VITE_MINDEXEC_SUPABASE_PUBLISHABLE_KEY",c)),A(t,"VITE_MINDEXEC_CLOUD_STORAGE_PUBLIC_URL",u),t}function ge(){return le??{}}function K(){return typeof window>"u"?{}:window.__MINDEXEC_PRODUCTION_ADAPTER_RUNTIME_ENV__??{}}function fe(e){if(!(typeof window>"u")){window.__MINDEXEC_PRODUCTION_ADAPTER_RUNTIME_ENV__={...K(),...e};try{window.dispatchEvent(new CustomEvent(ce,{detail:{keys:Object.keys(e).sort()}}))}catch{}}}function _(){return{...K(),...ge()}}let T=null;async function $(e=typeof fetch=="function"?fetch.bind(globalThis):null){return typeof window>"u"||!e?_():T||(T=(async()=>{try{const t=await e("/appsettings.json",{cache:"no-store",credentials:"same-origin"});if(!t.ok)return h.emit("productionAdapter.runtimeConfig.skipped",{source:"appsettings.json",reason:`http-${t.status}`}),_();const o=t.headers.get("content-type")||"";if(o&&!o.toLowerCase().includes("json"))return h.emit("productionAdapter.runtimeConfig.skipped",{source:"appsettings.json",reason:"non-json-response"}),_();const n=await t.json(),a=he(n);return fe(a),h.emit("productionAdapter.runtimeConfig.loaded",{source:"appsettings.json",keys:Object.keys(a).sort()}),_()}catch(t){return h.emit("productionAdapter.runtimeConfig.skipped",{source:"appsettings.json",reason:t instanceof Error?t.message:String(t)}),_()}})(),T)}function be({onRouteReplaced:e}){const t=i.useRef(!1);return i.useEffect(()=>{if(t.current)return;t.current=!0,(async()=>{const n=window.location.href,a=re(n);if(!a.hasAuthPayload)return;const c=await $();let u={mode:"not-checked",canAttempt:!1},s=!1,m="",p=!1,d=null,y=null;if(!a.hasError&&!a.hasRecovery&&!a.hasInvite&&(a.hasCode||a.hasToken)){const{completeSupabaseAuthCallback:f,resolveSupabaseAuthAdapterState:k,syncSupabaseAuthSessionToLocalBridge:E}=await b(async()=>{const{completeSupabaseAuthCallback:l,resolveSupabaseAuthAdapterState:v,syncSupabaseAuthSessionToLocalBridge:S}=await import("./supabaseAuthAdapter-D79LnMqE.js");return{completeSupabaseAuthCallback:l,resolveSupabaseAuthAdapterState:v,syncSupabaseAuthSessionToLocalBridge:S}},__vite__mapDeps([0,1,2,3,4,5]));u=k(c),p=u.canAttempt,d=f,y=E}if(p&&d)try{const f=await d(c,n);f.session&&(B({...f.session,source:"supabase-provider-session"}),s=!0,y&&await y(c,"auth-callback"))}catch(f){m=f instanceof Error?f.message:String(f)}else a.shouldCreateLocalShell&&ie(ee,"supabase-callback-shell");h.emit(a.hasError||m?"auth.callback.error":"auth.callback.cleaned",{cleanedPath:a.cleanedPath,shouldCreateLocalShell:!p&&a.shouldCreateLocalShell,shouldRouteToMindCanvas:a.shouldRouteToMindCanvas,hasCode:a.hasCode,hasToken:a.hasToken,hasRecovery:a.hasRecovery,hasInvite:a.hasInvite,providerMode:u.mode,providerAttempted:p,providerSessionCreated:s,providerError:m});const g=`${window.location.pathname}${window.location.search}${window.location.hash}`;a.cleanedPath!==g&&(window.history.replaceState({authCallbackCleaned:!0},"",a.cleanedPath),e("auth-callback-bootstrap"))})()},[e]),null}class ye extends i.Component{constructor(){super(...arguments);x(this,"state",{error:null});x(this,"retry",()=>{this.setState({error:null}),h.emit("runtime.errorBoundary.reset",{resetKey:this.props.resetKey,reason:"manual-retry"})})}static getDerivedStateFromError(o){return{error:o}}componentDidCatch(o,n){const a=(o==null?void 0:o.message)||"Unknown runtime error.";h.emit("runtime.errorBoundary.caught",{resetKey:this.props.resetKey,message:a,stack:(o==null?void 0:o.stack)||"",componentStack:n.componentStack}),console.error("[LoggingErrorBoundary] Unhandled React error.",o,n)}componentDidUpdate(o){o.resetKey!==this.props.resetKey&&this.state.error&&(this.setState({error:null}),h.emit("runtime.errorBoundary.reset",{from:o.resetKey,to:this.props.resetKey,reason:"route-change"}))}render(){const{error:o}=this.state;return o?r.jsx("div",{className:"page runtime-error-page","data-testid":"runtime-error-boundary","data-error-boundary-reset-key":this.props.resetKey,children:r.jsxs("section",{className:"execution-panel",children:[r.jsx("div",{className:"eyebrow",children:"Runtime Guard"}),r.jsx("h1",{children:"Something broke inside this React surface."}),r.jsx("p",{children:"The error was captured locally so the whole app shell can stay recoverable."}),r.jsxs("div",{className:"runtime-error-message","data-testid":"runtime-error-boundary-message",children:[r.jsx("span",{className:"runtime-error-symbol","aria-hidden":"true",children:"!"}),r.jsx("span",{children:o.message||"Unknown runtime error."})]}),r.jsxs("div",{className:"action-row",children:[r.jsx("button",{className:"btn btn-primary",type:"button",onClick:this.retry,"data-testid":"runtime-error-boundary-retry",children:"Retry"}),this.props.onNavigateHome&&r.jsx("button",{className:"btn btn-secondary",type:"button",onClick:this.props.onNavigateHome,"data-testid":"runtime-error-boundary-home",children:"MindCanvas"})]})]})}):this.props.children}}const we="main",ve="h1",R="data-route-focus-target",ke=30;function Pe({route:e,rootSelector:t=we,selector:o=ve}){return i.useEffect(()=>{let n=!1,a=0;const c=u=>{if(n)return;const s=document.querySelector(t),m=(s==null?void 0:s.querySelector(o))??document.querySelector(o);for(const p of document.querySelectorAll(`[${R}="true"]`))p.removeAttribute(R);if(!m){if(u<ke){a=window.requestAnimationFrame(()=>c(u+1));return}h.emit("route.focusOnNavigate.skipped",{route:e,selector:o,reason:"missing-target",attempts:u});return}m.hasAttribute("tabindex")||m.setAttribute("tabindex","-1"),m.setAttribute(R,"true"),m.focus({preventScroll:!1}),h.emit("route.focusOnNavigate.applied",{route:e,selector:o,tagName:m.tagName.toLowerCase(),text:(m.textContent||"").trim().slice(0,90),attempts:u})};return a=window.requestAnimationFrame(()=>c(1)),()=>{n=!0,window.cancelAnimationFrame(a)}},[e,t,o]),null}const Ee=[{key:"markdown-viewer",liveUrl:"https://mdview-die.pages.dev",hostnames:["mdview.pages.dev","mdview-die.pages.dev","mdview.mindexec.io","markdown-viewer.pages.dev","markdown-viewer.mindexec.io"],title:"Free Online Markdown Viewer",heroEyebrow:"Free online markdown viewer",heroTitle:"Preview Markdown instantly in your browser",heroSubtitle:"Paste or open a markdown file, review the rendered result, and move bigger writing work into MindCanvas when it needs structure.",privacyNote:"Runs locally in your browser. No upload required."},{key:"bulk-markdown-viewer",liveUrl:"https://bulkmd.pages.dev",hostnames:["bulkmd.pages.dev","bulkmd.mindexec.io","bulk-markdown-viewer.pages.dev","bulk-markdown-viewer.mindexec.io"],title:"Bulk Markdown Viewer",heroEyebrow:"Bulk markdown preview",heroTitle:"Review multiple markdown snippets at once",heroSubtitle:"Paste a stack of markdown entries and scan them locally before turning the useful pieces into a MindCanvas board.",privacyNote:"Local browser-only preview. No account and no upload step."},{key:"readme-previewer",liveUrl:"https://readme-1o4.pages.dev",hostnames:["readme.pages.dev","readme-1o4.pages.dev","readme-previewer.pages.dev","readme.mindexec.io","readme-previewer.mindexec.io"],title:"README Previewer",heroEyebrow:"README previewer",heroTitle:"Preview README markdown before you publish",heroSubtitle:"Check headings, tables, links, and launch notes quickly, then keep bigger documentation work organized in MindCanvas.",privacyNote:"Local preview for README text. No repository access required."},{key:"markdown-to-html",liveUrl:"https://md2html-4r7.pages.dev",hostnames:["md2html.pages.dev","md2html-4r7.pages.dev","md2html.mindexec.io","markdown-to-html.pages.dev","markdown-to-html.mindexec.io"],title:"Markdown to HTML Preview",heroEyebrow:"Markdown to HTML",heroTitle:"Turn markdown into clean HTML preview",heroSubtitle:"Render markdown locally, copy the HTML shape, and move reusable publishing notes into MindCanvas.",privacyNote:"Conversion runs in-browser and keeps your text local."},{key:"markdown-outline",liveUrl:"https://mdoutln.pages.dev",hostnames:["mdoutln.pages.dev","mdoutln.mindexec.io","markdown-outline.pages.dev","markdown-outline.mindexec.io"],title:"Markdown Outline Generator",heroEyebrow:"Markdown outline generator",heroTitle:"Extract a document outline from markdown",heroSubtitle:"Scan headings, section depth, and missing structure before your document becomes a larger project.",privacyNote:"Outline extraction runs locally in this browser."},{key:"markdown-table-formatter",liveUrl:"https://mdtable-3ik.pages.dev",hostnames:["mdtable.pages.dev","mdtable-3ik.pages.dev","mdtable.mindexec.io","markdown-table-formatter.pages.dev","markdown-table-formatter.mindexec.io"],title:"Markdown Table Formatter",heroEyebrow:"Markdown table formatter",heroTitle:"Clean up markdown tables locally",heroSubtitle:"Paste a rough markdown table and get a cleaner version for docs, READMEs, and launch notes.",privacyNote:"Table formatting happens locally with no upload."},{key:"markdown-link-checker",liveUrl:"https://markdown-link-checker.pages.dev",hostnames:["mdcheck.pages.dev","markdown-link-checker.pages.dev","mdcheck.mindexec.io","markdown-link-checker.mindexec.io"],title:"Markdown Link Checker",heroEyebrow:"Markdown link checker",heroTitle:"Catch risky markdown links before publishing",heroSubtitle:"Find empty, localhost, JavaScript, and suspicious links locally before a README or docs page goes live.",privacyNote:"Link checks run locally against the pasted markdown."},{key:"browser-notepad",liveUrl:"https://quickpad.pages.dev",hostnames:["quickpad.pages.dev","quickpad.mindexec.io","browser-notepad.pages.dev","browser-notepad.mindexec.io"],title:"Browser Notepad",heroEyebrow:"Browser notepad",heroTitle:"Write quick notes without a sign-in",heroSubtitle:"Capture rough thoughts locally, then move the notes worth keeping into MindCanvas.",privacyNote:"Notes are stored locally in this browser unless you copy them elsewhere."},{key:"clipboard-board",liveUrl:"https://clipbrd.pages.dev",hostnames:["clipbrd.pages.dev","clipbrd.mindexec.io","clipboard-board.pages.dev","clipboard-board.mindexec.io"],title:"Local Clipboard Board",heroEyebrow:"Local clipboard board",heroTitle:"Collect snippets into a small local board",heroSubtitle:"Paste short ideas, snippets, and fragments into one local surface before promoting the useful set to MindCanvas.",privacyNote:"Clipboard notes stay local to this browser session."}];function N(e){const t=e.toLowerCase().replace(/^www\./,"");return Ee.find(o=>o.hostnames.some(n=>n.toLowerCase()===t))}const Ce={enabled:!1,hideAppChrome:!0,allowMindCanvasRoute:!1,homeRoute:"/",toolKey:"",heroEyebrow:"Free local tool",heroTitle:"",heroSubtitle:"",primaryCtaText:"Open MindCanvas",primaryCtaHref:"https://mindexec.pages.dev/mindcanvas",secondaryCtaText:"",secondaryCtaHref:"",publicUrl:"",privacyNote:"Runs locally in your browser. No login. No database storage."},_e={enableAgentWorkspace:!0,enableCodeWorkspace:!0,enablePlanWorkspace:!0,enableCompanyCore:!0,enableExecutionTest:!0,enableTemplateStudio:!0,enableProjectPopup:!0,enablePromptDebugger:!0,enablePointBadge:!0,enableResetData:!0},P={variantKey:"platform",slug:"mindexec",brandName:"MindExec",productName:"MindCanvas",appTitle:"MindExec",workspaceNounSingular:"canvas",workspaceNounPlural:"canvases",signInTitle:"Welcome Back",signUpTitle:"Create Account",signInSubtitle:"Sign in to access your MindCanvas workspace.",signUpSubtitle:"Sign up to start organizing your ideas on a visual canvas.",primaryCheckoutProvider:"dodo",runtimeHost:"",canonicalHost:"mindexec.pages.dev",features:_e,marketingTool:Ce};function z(e){const t=j(e),o=N(t);return o?Ae(t,o):{...P,runtimeHost:t,canonicalHost:P.canonicalHost,features:{...P.features},marketingTool:{...P.marketingTool}}}function Se(e){return e.marketingTool.enabled?D(e.marketingTool.homeRoute):"/"}function F(e){return e.marketingTool.enabled&&e.marketingTool.toolKey?`/tools/${e.marketingTool.toolKey}`:Se(e)}function Te(e,t){const o=j(e.canonicalHost||e.runtimeHost);return o?`https://${o}${D(t)}`:""}function V(e,t){if(e.marketingTool.enabled&&!e.marketingTool.allowMindCanvasRoute&&(t==="/mindcanvas"||t==="/mindmap"))return!1;switch(t){case"/agent":return e.features.enableAgentWorkspace;case"/code":return e.features.enableCodeWorkspace;case"/planmaster":case"/planagent":return e.features.enablePlanWorkspace;case"/company-core":return e.features.enableCompanyCore;case"/execution-mode":return e.features.enableExecutionTest;default:return!0}}function xe(e,t){const o=V(e,t),n=F(e),a=o?t:n;return{route:t,enabled:o,fallbackRoute:n,canonicalUrl:Te(e,a),title:Re(e,a),description:Me(e,a)}}function j(e){const t=String(e??"").trim();if(!t)return"";try{return new URL(t).hostname.trim().toLowerCase().replace(/^www\./,"")}catch{return t.trim().replace(/^https?:\/\//i,"").replace(/^www\./,"").replace(/\/+$/,"").toLowerCase()}}function D(e){if(!e||!String(e).trim())return"/";let t=String(e).trim();return t.startsWith("/")||(t=`/${t}`),t.length>1&&(t=t.replace(/\/+$/,"")),t||"/"}function Ae(e,t){const o=j(t.liveUrl)||e;return{...P,variantKey:"mini-tool",slug:t.key,brandName:t.title,productName:t.title,appTitle:`${t.title} - Free local browser tool`,runtimeHost:e,canonicalHost:o,features:{...P.features,enableAgentWorkspace:!1,enableCodeWorkspace:!1,enablePlanWorkspace:!1,enableCompanyCore:!1,enableExecutionTest:!1,enableTemplateStudio:!1,enableProjectPopup:!1,enablePromptDebugger:!1,enablePointBadge:!1,enableResetData:!1},marketingTool:{...P.marketingTool,enabled:!0,hideAppChrome:!0,allowMindCanvasRoute:!1,homeRoute:"/",toolKey:t.key,heroEyebrow:t.heroEyebrow,heroTitle:t.heroTitle,heroSubtitle:t.heroSubtitle,primaryCtaText:"Open MindCanvas",primaryCtaHref:"https://mindexec.pages.dev/mindcanvas",secondaryCtaText:"More free tools",secondaryCtaHref:"https://mindexec.pages.dev/tools",publicUrl:t.liveUrl,privacyNote:t.privacyNote}}}function Re(e,t){if(e.marketingTool.enabled&&t.startsWith("/tools/"))return e.appTitle;switch(t){case"/mindcanvas":case"/mindmap":return"MindCanvas | MindExec";case"/planmaster":case"/planagent":return"PlanMaster | MindExec";case"/pricing":return"MindExec Pricing";case"/login":return e.signInTitle;case"/forgot-password":return"Reset your MindExec password";case"/reset-password":return"Set a new MindExec password";case"/tools":return"Free Browser Tools | MindExec";case"/youtube":return"YouTube Capture | MindExec";case"/code":return"CodeMaster | MindExec";case"/agent":return"Agent Workspace | MindExec";case"/execution-mode":return"Execution Mode | MindExec";case"/company-core":return"Company Core | MindExec";case"/admin/dashboard":return"Admin Dashboard | MindExec";case"/not-found":return"Content not found | MindExec";case"/":default:return e.appTitle}}function Me(e,t){if(e.marketingTool.enabled)return e.marketingTool.heroSubtitle||e.marketingTool.privacyNote;switch(t){case"/mindcanvas":case"/mindmap":return"MindCanvas keeps notes, assets, AI tasks, and execution evidence together on a local-first visual board.";case"/planmaster":case"/planagent":return"PlanMaster turns goals into practical plans, stages, and execution checklists.";case"/pricing":return"MindExec pricing for free local tools and paid MindCanvas project workflows.";case"/tools":return"Free local browser tools that feed larger MindExec and MindCanvas workflows.";case"/code":case"/agent":return"CodeMaster previews code workflows and adapter-gated agent execution for local projects.";case"/execution-mode":return"Execution Mode tests deterministic browser-local Concept IR before live adapters are connected.";case"/company-core":return"Company Core organizes SaaS blueprint, growth, approval, and publishing decisions.";default:return"MindExec is an AI execution canvas for solo builders, researchers, developers, and creators."}}const Le=i.lazy(()=>b(async()=>{const{MindCanvas:e}=await import("./MindCanvas-CR358MC7.js");return{MindCanvas:e}},__vite__mapDeps([6,3,7,2,4,5,8,9,1,0,10,11,12])).then(({MindCanvas:e})=>({default:e}))),Ne=i.lazy(()=>b(async()=>{const{PlanMasterPage:e}=await import("./PlanMasterPage-O3cMSoPj.js");return{PlanMasterPage:e}},__vite__mapDeps([13,3,7,2,4,5,8,14])).then(({PlanMasterPage:e})=>({default:e}))),je=i.lazy(()=>b(async()=>{const{PricingPage:e}=await import("./PricingPage-BP4Otwwx.js");return{PricingPage:e}},__vite__mapDeps([15,3,16,4,5,17,18,1,0,2,19])).then(({PricingPage:e})=>({default:e}))),De=i.lazy(()=>b(async()=>{const{LoginPage:e}=await import("./AuthPages-DmvL8yac.js");return{LoginPage:e}},__vite__mapDeps([20,3,18,4,1,0,2,5,21])).then(({LoginPage:e})=>({default:e}))),Ue=i.lazy(()=>b(async()=>{const{ForgotPasswordPage:e}=await import("./AuthPages-DmvL8yac.js");return{ForgotPasswordPage:e}},__vite__mapDeps([20,3,18,4,1,0,2,5,21])).then(({ForgotPasswordPage:e})=>({default:e}))),Ie=i.lazy(()=>b(async()=>{const{ResetPasswordPage:e}=await import("./AuthPages-DmvL8yac.js");return{ResetPasswordPage:e}},__vite__mapDeps([20,3,18,4,1,0,2,5,21])).then(({ResetPasswordPage:e})=>({default:e}))),Oe=i.lazy(()=>b(async()=>{const{ToolsDirectoryPage:e}=await import("./ToolPages-CYlA0nhA.js");return{ToolsDirectoryPage:e}},__vite__mapDeps([22,3,23,2,4,5,10,24])).then(({ToolsDirectoryPage:e})=>({default:e}))),Be=i.lazy(()=>b(async()=>{const{MarketingToolPage:e}=await import("./ToolPages-CYlA0nhA.js");return{MarketingToolPage:e}},__vite__mapDeps([22,3,23,2,4,5,10,24])).then(({MarketingToolPage:e})=>({default:e}))),He=i.lazy(()=>b(async()=>{const{YouTubeSearchPage:e}=await import("./YouTubeSearchPage-J-gy-4-m.js");return{YouTubeSearchPage:e}},__vite__mapDeps([25,3,2,4,5,10,26])).then(({YouTubeSearchPage:e})=>({default:e}))),Ke=i.lazy(()=>b(async()=>{const{CompanyCorePage:e}=await import("./CompanyCorePage-C6x4Tlzj.js");return{CompanyCorePage:e}},__vite__mapDeps([27,3,2,4,5,28])).then(({CompanyCorePage:e})=>({default:e}))),$e=i.lazy(()=>b(async()=>{const{AdminDashboardPage:e}=await import("./AdminDashboardPage-B3W0v-wJ.js");return{AdminDashboardPage:e}},__vite__mapDeps([29,3,1,4,0,2,5,30])).then(({AdminDashboardPage:e})=>({default:e}))),ze=i.lazy(()=>b(async()=>{const{CodePage:e}=await import("./CodePage-IDvgJ1g9.js");return{CodePage:e}},__vite__mapDeps([31,3,2,4,5,11,8,32,33])).then(({CodePage:e})=>({default:e}))),Fe=i.lazy(()=>b(async()=>{const{ExecutionModePage:e}=await import("./ExecutionModePage-FMQgV5xU.js");return{ExecutionModePage:e}},__vite__mapDeps([34,3,2,4,5,11,8,35])).then(({ExecutionModePage:e})=>({default:e}))),Ve=i.lazy(()=>b(async()=>{const{MarketingHome:e}=await import("./MarketingHome-BJI2zEYK.js");return{MarketingHome:e}},__vite__mapDeps([36,3,16,4,5,17,23,37])).then(({MarketingHome:e})=>({default:e}))),We=i.lazy(()=>b(async()=>{const{AppSidebar:e}=await import("./AppSidebar-DGHPM2aY.js");return{AppSidebar:e}},__vite__mapDeps([38,3,1,4,5])).then(({AppSidebar:e})=>({default:e}))),qe=new Set(["/","/mindcanvas","/planmaster","/tools","/youtube","/code","/pricing","/company-core","/login"]);function Ge(e,t=window.location.hostname){const o=N(t);if(o&&(e==="/"||e==="/tools"))return`/tools/${o.key}`;if(e==="/agent")return"/agent";if(e==="/forgot-password")return"/forgot-password";if(e==="/reset-password")return"/reset-password";let n="/not-found";return e==="/"?n="/":e==="/mindmap"?n="/mindmap":e==="/planagent"?n="/planagent":e==="/execution-mode"?n="/execution-mode":e==="/not-found"?n="/not-found":e.startsWith("/tools/")&&(n=e),qe.has(e)?n=e:e==="/admin/dashboard"&&(n="/admin/dashboard"),n}function Ye(e,t=window.location.hostname){const o=z(t),n=Ge(e,t);return V(o,n)?n:F(o)}function W(e,t=window.location.hostname){const o=Ye(e,t);return{route:o,stalePath:o==="/not-found"&&e!=="/not-found"?e:""}}function M(e){const t=window.location.pathname,{route:o,stalePath:n}=W(t,window.location.hostname);return o==="/not-found"&&t!=="/not-found"?(window.history.replaceState({stalePath:t},"","/not-found"),h.emit("route.notFound.normalize",{source:e,from:n||t,to:"/not-found"})):D(t)!==o&&!(t==="/"&&o.startsWith("/tools/"))&&!(t==="/tools"&&o.startsWith("/tools/"))&&(window.history.replaceState({stalePath:t},"",o),h.emit("productProfile.route.fallback",{source:e,from:t,to:o})),o}function C(e,t,o){if(o===void 0){delete e.dataset[t];return}e.dataset[t]=o}function Xe(){const e=i.useMemo(()=>z(window.location.hostname),[]),t=i.useMemo(()=>N(window.location.hostname),[]),[o,n]=i.useState(()=>W(window.location.pathname,window.location.hostname).route),a=o==="/mindcanvas"||o==="/mindmap",[c,u]=i.useState(()=>a),s=i.useMemo(()=>xe(e,o),[e,o]),[m,p]=i.useState([]);i.useEffect(()=>{n(M("initial"));const l=()=>n(M("popstate"));return window.addEventListener("popstate",l),()=>window.removeEventListener("popstate",l)},[]);const d=i.useCallback(l=>{window.history.pushState({},"",l),n(l)},[]),y=i.useCallback(l=>{n(M(l))},[]);i.useEffect(()=>{!a||c||(u(!0),h.emit("route.keepAlive.mindcanvas",{route:o,mounted:!0,source:"route-activate"}))},[a,c,o]);const g=o==="/planmaster"||o==="/planagent",f=o.startsWith("/tools/")?o.slice(7):null,k=e.marketingTool.enabled&&e.marketingTool.hideAppChrome,E=c||a;return i.useEffect(()=>{const l=document.documentElement,v={productProfile:l.dataset.productProfile,productVariant:l.dataset.productVariant,canonicalHost:l.dataset.canonicalHost,routeCanonical:l.dataset.routeCanonical,routeEnabled:l.dataset.routeEnabled,marketingToolKey:l.dataset.marketingToolKey};return l.dataset.productProfile=e.slug,l.dataset.productVariant=e.variantKey,l.dataset.canonicalHost=e.canonicalHost,l.dataset.routeCanonical=s.canonicalUrl,l.dataset.routeEnabled=s.enabled?"true":"false",e.marketingTool.toolKey?l.dataset.marketingToolKey=e.marketingTool.toolKey:delete l.dataset.marketingToolKey,h.emit("productProfile.route.applied",{route:o,variantKey:e.variantKey,slug:e.slug,canonicalHost:e.canonicalHost,canonicalUrl:s.canonicalUrl,routeEnabled:s.enabled,fallbackRoute:s.fallbackRoute,marketingToolKey:e.marketingTool.toolKey}),()=>{C(l,"productProfile",v.productProfile),C(l,"productVariant",v.productVariant),C(l,"canonicalHost",v.canonicalHost),C(l,"routeCanonical",v.routeCanonical),C(l,"routeEnabled",v.routeEnabled),C(l,"marketingToolKey",v.marketingToolKey)}},[e.canonicalHost,e.marketingTool.toolKey,e.slug,e.variantKey,o,s.canonicalUrl,s.enabled,s.fallbackRoute]),r.jsxs("div",{className:`${a?"app app--canvas":"app"} ${k?"app--mini-tool":""}`,"data-product-profile":e.slug,"data-product-variant":e.variantKey,"data-canonical-host":e.canonicalHost,"data-route-enabled":s.enabled?"true":"false","data-route-canonical":s.canonicalUrl,"data-marketing-tool-key":e.marketingTool.toolKey||void 0,children:[!k&&r.jsx(i.Suspense,{fallback:r.jsx(Qe,{}),children:r.jsx(We,{route:o,navigate:d,canvasActions:a?m:[]})}),r.jsxs("main",{className:"app-main",children:[r.jsx(be,{onRouteReplaced:y}),r.jsx(Pe,{route:o}),r.jsx(ye,{resetKey:o,onNavigateHome:()=>d("/mindcanvas"),children:r.jsxs(i.Suspense,{fallback:r.jsx(Je,{route:o}),children:[o==="/"&&r.jsx(Ve,{navigate:d}),E&&r.jsx("section",{className:"route-keepalive route-keepalive--mindcanvas","data-testid":"mindcanvas-keepalive-host","data-route-keepalive":"mindcanvas","data-route-active":a?"true":"false",hidden:!a,"aria-hidden":a?void 0:"true",children:r.jsx(Le,{navigate:d,onSidebarActionsChange:p})}),g&&r.jsx(Ne,{navigate:d}),o==="/pricing"&&r.jsx(je,{navigate:d}),o==="/login"&&r.jsx(De,{navigate:d}),o==="/forgot-password"&&r.jsx(Ue,{navigate:d}),o==="/reset-password"&&r.jsx(Ie,{navigate:d}),o==="/tools"&&r.jsx(Oe,{navigate:d}),f&&r.jsx(Be,{toolKey:f,navigate:d,miniHost:(t==null?void 0:t.key)===f}),o==="/youtube"&&r.jsx(He,{navigate:d}),(o==="/code"||o==="/agent")&&r.jsx(ze,{}),o==="/execution-mode"&&r.jsx(Fe,{}),o==="/not-found"&&r.jsx(Ze,{navigate:d}),o==="/company-core"&&r.jsx(Ke,{}),o==="/admin/dashboard"&&r.jsx($e,{})]})})]})]})}function Je({route:e}){return i.useEffect(()=>{h.emit("route.lazyFallback.rendered",{route:e})},[e]),r.jsxs("div",{className:"route-lazy-fallback","data-testid":"route-lazy-fallback","data-route":e,children:[r.jsx("span",{className:"route-lazy-spinner","aria-hidden":"true"}),r.jsx("span",{children:"Loading MindExec surface..."})]})}function Qe(){return r.jsxs("aside",{className:"app-sidebar app-sidebar--loading","aria-label":"MindExec navigation loading",children:[r.jsx("div",{className:"sidebar-brand sidebar-placeholder"}),r.jsx("div",{className:"sidebar-divider"}),r.jsx("nav",{className:"sidebar-nav",children:Array.from({length:8},(e,t)=>r.jsx("div",{className:"sidebar-icon sidebar-placeholder"},t))}),r.jsx("div",{className:"sidebar-spacer"}),r.jsx("div",{className:"sidebar-icon sidebar-placeholder"})]})}function Ze({navigate:e}){return r.jsx("div",{className:"page not-found-page",children:r.jsxs("section",{className:"execution-panel",children:[r.jsx("div",{className:"eyebrow",children:"Not Found"}),r.jsx("h1",{children:"Content not found."}),r.jsx("p",{children:"The route exists as a React shell so stale Blazor links land cleanly."}),r.jsx("button",{className:"btn btn-primary",type:"button",onClick:()=>e("/"),children:"Go home"})]})})}X();async function et(){await $(),Y.createRoot(document.getElementById("root")).render(r.jsx(Xe,{}))}et();export{Z as A,b as _,_ as a,L as b,rt as c,ie as d,nt as g,$ as p,B as s};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/supabaseAuthAdapter-CuJuASQT.js","assets/productionAdapterConfig-C5jfk6oG.js","assets/canvas-runtime-D3amtMwe.js","assets/vendor-react-BXzpOyCS.js","assets/app-runtime-xD2Z3NdN.js","assets/vendor-icons-DE3gIReG.js","assets/MindCanvas-wBB9fMPS.js","assets/storage-RP5Dyxmq.js","assets/runtimeSettingsPersistenceProjection-BoNWmYjU.js","assets/vendor-msgpack-BE8aAsr3.js","assets/toolHandoff-D5e5f7t5.js","assets/executionModeSettings-NJqurj-o.js","assets/MindCanvas-Dbwuzfbv.css","assets/PlanMasterPage-juSUgUYZ.js","assets/PlanMasterPage-CJ36rep-.css","assets/PricingPage-7NW6HJxV.js","assets/LaunchLeadCapture-Bx9LM0IX.js","assets/LaunchLeadCapture-CiRI1shz.css","assets/pricingCheckoutShell-O-DnwmbU.js","assets/PricingPage-Cg_0i_ZR.css","assets/AuthPages-BtLsYX_F.js","assets/AuthPages-BrH6kRcv.css","assets/ToolPages-n6d8tLbT.js","assets/marketingTools-DN_rnHeB.js","assets/ToolPages-DIB187pZ.css","assets/YouTubeSearchPage-52qOcKbo.js","assets/YouTubeSearchPage-IPPa_BIH.css","assets/CompanyCorePage-CVw3X796.js","assets/CompanyCorePage-ChBnq1ve.css","assets/AdminDashboardPage-CptFPV__.js","assets/AdminDashboardPage-B2vz2Px9.css","assets/CodePage-CtcukAw7.js","assets/code-agent-runtime-B5PPZd1t.js","assets/CodePage-Bncc352E.css","assets/ExecutionModePage-BxZvRmyD.js","assets/ExecutionModePage-TLuld9l3.css","assets/MarketingHome-BsyerRpe.js","assets/MarketingHome-DPzaYzA_.css","assets/AppSidebar-6q9MElKP.js"])))=>i.map(i=>d[i]);
2
+ var q=Object.defineProperty;var G=(e,t,o)=>t in e?q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var x=(e,t,o)=>G(e,typeof t!="symbol"?t+"":t,o);import{r as i,j as r,R as Y}from"./vendor-react-BXzpOyCS.js";import{R as h,i as X}from"./app-runtime-xD2Z3NdN.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const c of a)if(c.type==="childList")for(const u of c.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&n(u)}).observe(document,{childList:!0,subtree:!0});function o(a){const c={};return a.integrity&&(c.integrity=a.integrity),a.referrerPolicy&&(c.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?c.credentials="include":a.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function n(a){if(a.ep)return;a.ep=!0;const c=o(a);fetch(a.href,c)}})();const J="modulepreload",Q=function(e){return"/"+e},U={},b=function(t,o,n){let a=Promise.resolve();if(o&&o.length>0){let u=function(p){return Promise.all(p.map(d=>Promise.resolve(d).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};document.getElementsByTagName("link");const s=document.querySelector("meta[property=csp-nonce]"),m=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));a=u(o.map(p=>{if(p=Q(p),p in U)return;U[p]=!0;const d=p.endsWith(".css"),y=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${y}`))return;const g=document.createElement("link");if(g.rel=d?"stylesheet":J,d||(g.as="script"),g.crossOrigin="",g.href=p,m&&g.setAttribute("nonce",m),document.head.appendChild(g),d)return new Promise((f,k)=>{g.addEventListener("load",f),g.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${p}`)))})}))}function c(u){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=u,window.dispatchEvent(s),!s.defaultPrevented)throw u}return a.then(u=>{for(const s of u||[])s.status==="rejected"&&c(s.reason);return t().catch(c)})},L="mindexec-local-auth-shell-v2",Z="mindexec-react-auth-shell-session-changed",ee="supabase-callback@mindexec.local";function te(e){const t=e;return!!(t&&typeof t=="object"&&typeof t.userId=="string"&&typeof t.email=="string"&&t.provider==="Google"&&typeof t.signedInAt=="string")}function oe(e){const t=e.toLowerCase();return t.includes("access_token=")||t.includes("refresh_token=")||t.includes("provider_token=")||t.includes("provider_refresh_token=")||t.includes("expires_in=")||t.includes("token_type=")||t.includes("type=recovery")||t.includes("type=invite")||t.includes("error=")||t.includes("error_description=")||t.includes("code=")}function ae(e){const t=e.split("=",2)[0].toLowerCase();return t==="access_token"||t==="refresh_token"||t==="provider_token"||t==="provider_refresh_token"||t==="expires_in"||t==="expires_at"||t==="token_type"||t==="type"||t==="error"||t==="error_code"||t==="error_description"||t==="code"}function I(e){const t=e.trim().replace(/^[?#]/,"");return t?t.split("&").filter(Boolean).filter(n=>!ae(n)).join("&"):""}function ne(e){const t=(e||"").trim();if(!t||!t.startsWith("/")||t.startsWith("//")||t.includes("\\"))return"";try{const o=new URL(t,window.location.origin);return o.origin!==window.location.origin?"":`${o.pathname}${o.search}${o.hash}`}catch{return""}}function re(e){const t=new URL(e,window.location.origin),o=`${t.search}&${t.hash}`,n=oe(o);if(!n)return{hasAuthPayload:!1,cleanedPath:`${t.pathname}${t.search}${t.hash}`,shouldCreateLocalShell:!1,shouldRouteToMindCanvas:!1,hasError:!1,hasRecovery:!1,hasInvite:!1,hasCode:!1,hasToken:!1};const a=I(t.search),c=I(t.hash),u=/(?:^|[&#?])error=/i.test(o)||/(?:^|[&#?])error_description=/i.test(o),s=/(?:^|[&#?])type=recovery(?:&|$)/i.test(o),m=/(?:^|[&#?])type=invite(?:&|$)/i.test(o),p=/(?:^|[&#?])code=/i.test(o),d=/(?:^|[&#?])(?:access_token|refresh_token)=/i.test(o),y=ne(t.searchParams.get("next"));let g=`${t.pathname}${a?`?${a}`:""}${c?`#${c}`:""}`;const f=t.pathname==="/"||t.pathname==="",k=t.pathname==="/login",E=!u&&!s&&!m&&(p||d),l=E&&!y&&(f||k);if(y&&E)g=y;else if(l){const v=new URLSearchParams(a);v.delete("next");const S=v.toString();g=`/mindcanvas${S?`?${S}`:""}`}return{hasAuthPayload:n,cleanedPath:g,shouldCreateLocalShell:!u&&!s&&!m&&(p||d),shouldRouteToMindCanvas:l,hasError:u,hasRecovery:s,hasInvite:m,hasCode:p,hasToken:d}}function se(e){return`local-google-${e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-")||"user"}`}function O(e){try{window.dispatchEvent(new CustomEvent(Z,{detail:{signedIn:!!e,source:(e==null?void 0:e.source)??"cleared",hasEmail:!!(e!=null&&e.email)}}))}catch{}}function nt(){try{const e=window.localStorage.getItem(L);if(!e)return null;const t=JSON.parse(e);return te(t)?t:null}catch{return null}}function ie(e="builder@mindexec.local",t="manual-google-shell"){const o=e.trim().toLowerCase()||"builder@mindexec.local",n={userId:typeof crypto<"u"&&"randomUUID"in crypto?`local-google-${crypto.randomUUID()}`:se(o),email:o,provider:"Google",signedInAt:new Date().toISOString(),source:t};return B(n)}function B(e){try{window.localStorage.setItem(L,JSON.stringify(e))}catch{}return h.emit(e.source==="supabase-provider-session"?"auth.supabase.sessionShell":"auth.google.localShell",{provider:e.provider,hasEmail:!!e.email,source:e.source}),O(e),e}function rt(){try{window.localStorage.removeItem(L)}catch{}h.emit("auth.localShell.cleared"),O(null)}const le={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},ce="mindexec-production-adapter-runtime-env-loaded";function H(e){return!!(e&&typeof e=="object"&&!Array.isArray(e))}function w(e,t){let o=e;for(const n of t){if(!H(o))return"";o=o[n]}return typeof o=="string"?o.trim():""}function de(e,t){let o=e;for(const n of t){if(!H(o)||!(n in o))return null;o=o[n]}if(typeof o=="boolean")return o;if(typeof o=="string"){const n=o.trim().toLowerCase();if(["1","true","yes","on"].includes(n))return!0;if(["0","false","no","off"].includes(n))return!1}return null}function A(e,t,o){o&&(e[t]=o)}function ue(e,t,o){o!==null&&(e[t]=String(o))}function pe(e){return de(e,["ProjectStorage","CloudProjectsEnabled"])}function me(e){const t=w(e,["Supabase","Url"]),o=w(e,["Supabase","PublishableKey"])||w(e,["Supabase","Key"])||w(e,["Supabase","AnonKey"]),n=w(e,["Supabase","ServiceRoleKey"]);return!!(t&&o&&!n)}function he(e){const t={},o=pe(e),n=me(e),a=w(e,["Supabase","Url"]),c=w(e,["Supabase","PublishableKey"])||w(e,["Supabase","Key"])||w(e,["Supabase","AnonKey"]),u=w(e,["CloudflareR2","PublicBaseUrl"])||w(e,["CloudStorage","PublicBaseUrl"])||w(e,["CloudStorage","PublicUrl"]);return ue(t,"VITE_MINDEXEC_CLOUD_PROJECTS_ENABLED",o),n&&(A(t,"VITE_MINDEXEC_SUPABASE_URL",a),A(t,"VITE_MINDEXEC_SUPABASE_PUBLISHABLE_KEY",c)),A(t,"VITE_MINDEXEC_CLOUD_STORAGE_PUBLIC_URL",u),t}function ge(){return le??{}}function K(){return typeof window>"u"?{}:window.__MINDEXEC_PRODUCTION_ADAPTER_RUNTIME_ENV__??{}}function fe(e){if(!(typeof window>"u")){window.__MINDEXEC_PRODUCTION_ADAPTER_RUNTIME_ENV__={...K(),...e};try{window.dispatchEvent(new CustomEvent(ce,{detail:{keys:Object.keys(e).sort()}}))}catch{}}}function _(){return{...K(),...ge()}}let T=null;async function $(e=typeof fetch=="function"?fetch.bind(globalThis):null){return typeof window>"u"||!e?_():T||(T=(async()=>{try{const t=await e("/appsettings.json",{cache:"no-store",credentials:"same-origin"});if(!t.ok)return h.emit("productionAdapter.runtimeConfig.skipped",{source:"appsettings.json",reason:`http-${t.status}`}),_();const o=t.headers.get("content-type")||"";if(o&&!o.toLowerCase().includes("json"))return h.emit("productionAdapter.runtimeConfig.skipped",{source:"appsettings.json",reason:"non-json-response"}),_();const n=await t.json(),a=he(n);return fe(a),h.emit("productionAdapter.runtimeConfig.loaded",{source:"appsettings.json",keys:Object.keys(a).sort()}),_()}catch(t){return h.emit("productionAdapter.runtimeConfig.skipped",{source:"appsettings.json",reason:t instanceof Error?t.message:String(t)}),_()}})(),T)}function be({onRouteReplaced:e}){const t=i.useRef(!1);return i.useEffect(()=>{if(t.current)return;t.current=!0,(async()=>{const n=window.location.href,a=re(n);if(!a.hasAuthPayload)return;const c=await $();let u={mode:"not-checked",canAttempt:!1},s=!1,m="",p=!1,d=null,y=null;if(!a.hasError&&!a.hasRecovery&&!a.hasInvite&&(a.hasCode||a.hasToken)){const{completeSupabaseAuthCallback:f,resolveSupabaseAuthAdapterState:k,syncSupabaseAuthSessionToLocalBridge:E}=await b(async()=>{const{completeSupabaseAuthCallback:l,resolveSupabaseAuthAdapterState:v,syncSupabaseAuthSessionToLocalBridge:S}=await import("./supabaseAuthAdapter-CuJuASQT.js");return{completeSupabaseAuthCallback:l,resolveSupabaseAuthAdapterState:v,syncSupabaseAuthSessionToLocalBridge:S}},__vite__mapDeps([0,1,2,3,4,5]));u=k(c),p=u.canAttempt,d=f,y=E}if(p&&d)try{const f=await d(c,n);f.session&&(B({...f.session,source:"supabase-provider-session"}),s=!0,y&&await y(c,"auth-callback"))}catch(f){m=f instanceof Error?f.message:String(f)}else a.shouldCreateLocalShell&&ie(ee,"supabase-callback-shell");h.emit(a.hasError||m?"auth.callback.error":"auth.callback.cleaned",{cleanedPath:a.cleanedPath,shouldCreateLocalShell:!p&&a.shouldCreateLocalShell,shouldRouteToMindCanvas:a.shouldRouteToMindCanvas,hasCode:a.hasCode,hasToken:a.hasToken,hasRecovery:a.hasRecovery,hasInvite:a.hasInvite,providerMode:u.mode,providerAttempted:p,providerSessionCreated:s,providerError:m});const g=`${window.location.pathname}${window.location.search}${window.location.hash}`;a.cleanedPath!==g&&(window.history.replaceState({authCallbackCleaned:!0},"",a.cleanedPath),e("auth-callback-bootstrap"))})()},[e]),null}class ye extends i.Component{constructor(){super(...arguments);x(this,"state",{error:null});x(this,"retry",()=>{this.setState({error:null}),h.emit("runtime.errorBoundary.reset",{resetKey:this.props.resetKey,reason:"manual-retry"})})}static getDerivedStateFromError(o){return{error:o}}componentDidCatch(o,n){const a=(o==null?void 0:o.message)||"Unknown runtime error.";h.emit("runtime.errorBoundary.caught",{resetKey:this.props.resetKey,message:a,stack:(o==null?void 0:o.stack)||"",componentStack:n.componentStack}),console.error("[LoggingErrorBoundary] Unhandled React error.",o,n)}componentDidUpdate(o){o.resetKey!==this.props.resetKey&&this.state.error&&(this.setState({error:null}),h.emit("runtime.errorBoundary.reset",{from:o.resetKey,to:this.props.resetKey,reason:"route-change"}))}render(){const{error:o}=this.state;return o?r.jsx("div",{className:"page runtime-error-page","data-testid":"runtime-error-boundary","data-error-boundary-reset-key":this.props.resetKey,children:r.jsxs("section",{className:"execution-panel",children:[r.jsx("div",{className:"eyebrow",children:"Runtime Guard"}),r.jsx("h1",{children:"Something broke inside this React surface."}),r.jsx("p",{children:"The error was captured locally so the whole app shell can stay recoverable."}),r.jsxs("div",{className:"runtime-error-message","data-testid":"runtime-error-boundary-message",children:[r.jsx("span",{className:"runtime-error-symbol","aria-hidden":"true",children:"!"}),r.jsx("span",{children:o.message||"Unknown runtime error."})]}),r.jsxs("div",{className:"action-row",children:[r.jsx("button",{className:"btn btn-primary",type:"button",onClick:this.retry,"data-testid":"runtime-error-boundary-retry",children:"Retry"}),this.props.onNavigateHome&&r.jsx("button",{className:"btn btn-secondary",type:"button",onClick:this.props.onNavigateHome,"data-testid":"runtime-error-boundary-home",children:"MindCanvas"})]})]})}):this.props.children}}const we="main",ve="h1",R="data-route-focus-target",ke=30;function Pe({route:e,rootSelector:t=we,selector:o=ve}){return i.useEffect(()=>{let n=!1,a=0;const c=u=>{if(n)return;const s=document.querySelector(t),m=(s==null?void 0:s.querySelector(o))??document.querySelector(o);for(const p of document.querySelectorAll(`[${R}="true"]`))p.removeAttribute(R);if(!m){if(u<ke){a=window.requestAnimationFrame(()=>c(u+1));return}h.emit("route.focusOnNavigate.skipped",{route:e,selector:o,reason:"missing-target",attempts:u});return}m.hasAttribute("tabindex")||m.setAttribute("tabindex","-1"),m.setAttribute(R,"true"),m.focus({preventScroll:!1}),h.emit("route.focusOnNavigate.applied",{route:e,selector:o,tagName:m.tagName.toLowerCase(),text:(m.textContent||"").trim().slice(0,90),attempts:u})};return a=window.requestAnimationFrame(()=>c(1)),()=>{n=!0,window.cancelAnimationFrame(a)}},[e,t,o]),null}const Ee=[{key:"markdown-viewer",liveUrl:"https://mdview-die.pages.dev",hostnames:["mdview.pages.dev","mdview-die.pages.dev","mdview.mindexec.io","markdown-viewer.pages.dev","markdown-viewer.mindexec.io"],title:"Free Online Markdown Viewer",heroEyebrow:"Free online markdown viewer",heroTitle:"Preview Markdown instantly in your browser",heroSubtitle:"Paste or open a markdown file, review the rendered result, and move bigger writing work into MindCanvas when it needs structure.",privacyNote:"Runs locally in your browser. No upload required."},{key:"bulk-markdown-viewer",liveUrl:"https://bulkmd.pages.dev",hostnames:["bulkmd.pages.dev","bulkmd.mindexec.io","bulk-markdown-viewer.pages.dev","bulk-markdown-viewer.mindexec.io"],title:"Bulk Markdown Viewer",heroEyebrow:"Bulk markdown preview",heroTitle:"Review multiple markdown snippets at once",heroSubtitle:"Paste a stack of markdown entries and scan them locally before turning the useful pieces into a MindCanvas board.",privacyNote:"Local browser-only preview. No account and no upload step."},{key:"readme-previewer",liveUrl:"https://readme-1o4.pages.dev",hostnames:["readme.pages.dev","readme-1o4.pages.dev","readme-previewer.pages.dev","readme.mindexec.io","readme-previewer.mindexec.io"],title:"README Previewer",heroEyebrow:"README previewer",heroTitle:"Preview README markdown before you publish",heroSubtitle:"Check headings, tables, links, and launch notes quickly, then keep bigger documentation work organized in MindCanvas.",privacyNote:"Local preview for README text. No repository access required."},{key:"markdown-to-html",liveUrl:"https://md2html-4r7.pages.dev",hostnames:["md2html.pages.dev","md2html-4r7.pages.dev","md2html.mindexec.io","markdown-to-html.pages.dev","markdown-to-html.mindexec.io"],title:"Markdown to HTML Preview",heroEyebrow:"Markdown to HTML",heroTitle:"Turn markdown into clean HTML preview",heroSubtitle:"Render markdown locally, copy the HTML shape, and move reusable publishing notes into MindCanvas.",privacyNote:"Conversion runs in-browser and keeps your text local."},{key:"markdown-outline",liveUrl:"https://mdoutln.pages.dev",hostnames:["mdoutln.pages.dev","mdoutln.mindexec.io","markdown-outline.pages.dev","markdown-outline.mindexec.io"],title:"Markdown Outline Generator",heroEyebrow:"Markdown outline generator",heroTitle:"Extract a document outline from markdown",heroSubtitle:"Scan headings, section depth, and missing structure before your document becomes a larger project.",privacyNote:"Outline extraction runs locally in this browser."},{key:"markdown-table-formatter",liveUrl:"https://mdtable-3ik.pages.dev",hostnames:["mdtable.pages.dev","mdtable-3ik.pages.dev","mdtable.mindexec.io","markdown-table-formatter.pages.dev","markdown-table-formatter.mindexec.io"],title:"Markdown Table Formatter",heroEyebrow:"Markdown table formatter",heroTitle:"Clean up markdown tables locally",heroSubtitle:"Paste a rough markdown table and get a cleaner version for docs, READMEs, and launch notes.",privacyNote:"Table formatting happens locally with no upload."},{key:"markdown-link-checker",liveUrl:"https://markdown-link-checker.pages.dev",hostnames:["mdcheck.pages.dev","markdown-link-checker.pages.dev","mdcheck.mindexec.io","markdown-link-checker.mindexec.io"],title:"Markdown Link Checker",heroEyebrow:"Markdown link checker",heroTitle:"Catch risky markdown links before publishing",heroSubtitle:"Find empty, localhost, JavaScript, and suspicious links locally before a README or docs page goes live.",privacyNote:"Link checks run locally against the pasted markdown."},{key:"browser-notepad",liveUrl:"https://quickpad.pages.dev",hostnames:["quickpad.pages.dev","quickpad.mindexec.io","browser-notepad.pages.dev","browser-notepad.mindexec.io"],title:"Browser Notepad",heroEyebrow:"Browser notepad",heroTitle:"Write quick notes without a sign-in",heroSubtitle:"Capture rough thoughts locally, then move the notes worth keeping into MindCanvas.",privacyNote:"Notes are stored locally in this browser unless you copy them elsewhere."},{key:"clipboard-board",liveUrl:"https://clipbrd.pages.dev",hostnames:["clipbrd.pages.dev","clipbrd.mindexec.io","clipboard-board.pages.dev","clipboard-board.mindexec.io"],title:"Local Clipboard Board",heroEyebrow:"Local clipboard board",heroTitle:"Collect snippets into a small local board",heroSubtitle:"Paste short ideas, snippets, and fragments into one local surface before promoting the useful set to MindCanvas.",privacyNote:"Clipboard notes stay local to this browser session."}];function N(e){const t=e.toLowerCase().replace(/^www\./,"");return Ee.find(o=>o.hostnames.some(n=>n.toLowerCase()===t))}const Ce={enabled:!1,hideAppChrome:!0,allowMindCanvasRoute:!1,homeRoute:"/",toolKey:"",heroEyebrow:"Free local tool",heroTitle:"",heroSubtitle:"",primaryCtaText:"Open MindCanvas",primaryCtaHref:"https://mindexec.pages.dev/mindcanvas",secondaryCtaText:"",secondaryCtaHref:"",publicUrl:"",privacyNote:"Runs locally in your browser. No login. No database storage."},_e={enableAgentWorkspace:!0,enableCodeWorkspace:!0,enablePlanWorkspace:!0,enableCompanyCore:!0,enableExecutionTest:!0,enableTemplateStudio:!0,enableProjectPopup:!0,enablePromptDebugger:!0,enablePointBadge:!0,enableResetData:!0},P={variantKey:"platform",slug:"mindexec",brandName:"MindExec",productName:"MindCanvas",appTitle:"MindExec",workspaceNounSingular:"canvas",workspaceNounPlural:"canvases",signInTitle:"Welcome Back",signUpTitle:"Create Account",signInSubtitle:"Sign in to access your MindCanvas workspace.",signUpSubtitle:"Sign up to start organizing your ideas on a visual canvas.",primaryCheckoutProvider:"dodo",runtimeHost:"",canonicalHost:"mindexec.pages.dev",features:_e,marketingTool:Ce};function z(e){const t=j(e),o=N(t);return o?Ae(t,o):{...P,runtimeHost:t,canonicalHost:P.canonicalHost,features:{...P.features},marketingTool:{...P.marketingTool}}}function Se(e){return e.marketingTool.enabled?D(e.marketingTool.homeRoute):"/"}function F(e){return e.marketingTool.enabled&&e.marketingTool.toolKey?`/tools/${e.marketingTool.toolKey}`:Se(e)}function Te(e,t){const o=j(e.canonicalHost||e.runtimeHost);return o?`https://${o}${D(t)}`:""}function V(e,t){if(e.marketingTool.enabled&&!e.marketingTool.allowMindCanvasRoute&&(t==="/mindcanvas"||t==="/mindmap"))return!1;switch(t){case"/agent":return e.features.enableAgentWorkspace;case"/code":return e.features.enableCodeWorkspace;case"/planmaster":case"/planagent":return e.features.enablePlanWorkspace;case"/company-core":return e.features.enableCompanyCore;case"/execution-mode":return e.features.enableExecutionTest;default:return!0}}function xe(e,t){const o=V(e,t),n=F(e),a=o?t:n;return{route:t,enabled:o,fallbackRoute:n,canonicalUrl:Te(e,a),title:Re(e,a),description:Me(e,a)}}function j(e){const t=String(e??"").trim();if(!t)return"";try{return new URL(t).hostname.trim().toLowerCase().replace(/^www\./,"")}catch{return t.trim().replace(/^https?:\/\//i,"").replace(/^www\./,"").replace(/\/+$/,"").toLowerCase()}}function D(e){if(!e||!String(e).trim())return"/";let t=String(e).trim();return t.startsWith("/")||(t=`/${t}`),t.length>1&&(t=t.replace(/\/+$/,"")),t||"/"}function Ae(e,t){const o=j(t.liveUrl)||e;return{...P,variantKey:"mini-tool",slug:t.key,brandName:t.title,productName:t.title,appTitle:`${t.title} - Free local browser tool`,runtimeHost:e,canonicalHost:o,features:{...P.features,enableAgentWorkspace:!1,enableCodeWorkspace:!1,enablePlanWorkspace:!1,enableCompanyCore:!1,enableExecutionTest:!1,enableTemplateStudio:!1,enableProjectPopup:!1,enablePromptDebugger:!1,enablePointBadge:!1,enableResetData:!1},marketingTool:{...P.marketingTool,enabled:!0,hideAppChrome:!0,allowMindCanvasRoute:!1,homeRoute:"/",toolKey:t.key,heroEyebrow:t.heroEyebrow,heroTitle:t.heroTitle,heroSubtitle:t.heroSubtitle,primaryCtaText:"Open MindCanvas",primaryCtaHref:"https://mindexec.pages.dev/mindcanvas",secondaryCtaText:"More free tools",secondaryCtaHref:"https://mindexec.pages.dev/tools",publicUrl:t.liveUrl,privacyNote:t.privacyNote}}}function Re(e,t){if(e.marketingTool.enabled&&t.startsWith("/tools/"))return e.appTitle;switch(t){case"/mindcanvas":case"/mindmap":return"MindCanvas | MindExec";case"/planmaster":case"/planagent":return"PlanMaster | MindExec";case"/pricing":return"MindExec Pricing";case"/login":return e.signInTitle;case"/forgot-password":return"Reset your MindExec password";case"/reset-password":return"Set a new MindExec password";case"/tools":return"Free Browser Tools | MindExec";case"/youtube":return"YouTube Capture | MindExec";case"/code":return"CodeMaster | MindExec";case"/agent":return"Agent Workspace | MindExec";case"/execution-mode":return"Execution Mode | MindExec";case"/company-core":return"Company Core | MindExec";case"/admin/dashboard":return"Admin Dashboard | MindExec";case"/not-found":return"Content not found | MindExec";case"/":default:return e.appTitle}}function Me(e,t){if(e.marketingTool.enabled)return e.marketingTool.heroSubtitle||e.marketingTool.privacyNote;switch(t){case"/mindcanvas":case"/mindmap":return"MindCanvas keeps notes, assets, AI tasks, and execution evidence together on a local-first visual board.";case"/planmaster":case"/planagent":return"PlanMaster turns goals into practical plans, stages, and execution checklists.";case"/pricing":return"MindExec pricing for free local tools and paid MindCanvas project workflows.";case"/tools":return"Free local browser tools that feed larger MindExec and MindCanvas workflows.";case"/code":case"/agent":return"CodeMaster previews code workflows and adapter-gated agent execution for local projects.";case"/execution-mode":return"Execution Mode tests deterministic browser-local Concept IR before live adapters are connected.";case"/company-core":return"Company Core organizes SaaS blueprint, growth, approval, and publishing decisions.";default:return"MindExec is an AI execution canvas for solo builders, researchers, developers, and creators."}}const Le=i.lazy(()=>b(async()=>{const{MindCanvas:e}=await import("./MindCanvas-wBB9fMPS.js");return{MindCanvas:e}},__vite__mapDeps([6,3,7,2,4,5,8,9,1,0,10,11,12])).then(({MindCanvas:e})=>({default:e}))),Ne=i.lazy(()=>b(async()=>{const{PlanMasterPage:e}=await import("./PlanMasterPage-juSUgUYZ.js");return{PlanMasterPage:e}},__vite__mapDeps([13,3,7,2,4,5,8,14])).then(({PlanMasterPage:e})=>({default:e}))),je=i.lazy(()=>b(async()=>{const{PricingPage:e}=await import("./PricingPage-7NW6HJxV.js");return{PricingPage:e}},__vite__mapDeps([15,3,16,4,5,17,18,1,0,2,19])).then(({PricingPage:e})=>({default:e}))),De=i.lazy(()=>b(async()=>{const{LoginPage:e}=await import("./AuthPages-BtLsYX_F.js");return{LoginPage:e}},__vite__mapDeps([20,3,18,4,1,0,2,5,21])).then(({LoginPage:e})=>({default:e}))),Ue=i.lazy(()=>b(async()=>{const{ForgotPasswordPage:e}=await import("./AuthPages-BtLsYX_F.js");return{ForgotPasswordPage:e}},__vite__mapDeps([20,3,18,4,1,0,2,5,21])).then(({ForgotPasswordPage:e})=>({default:e}))),Ie=i.lazy(()=>b(async()=>{const{ResetPasswordPage:e}=await import("./AuthPages-BtLsYX_F.js");return{ResetPasswordPage:e}},__vite__mapDeps([20,3,18,4,1,0,2,5,21])).then(({ResetPasswordPage:e})=>({default:e}))),Oe=i.lazy(()=>b(async()=>{const{ToolsDirectoryPage:e}=await import("./ToolPages-n6d8tLbT.js");return{ToolsDirectoryPage:e}},__vite__mapDeps([22,3,23,2,4,5,10,24])).then(({ToolsDirectoryPage:e})=>({default:e}))),Be=i.lazy(()=>b(async()=>{const{MarketingToolPage:e}=await import("./ToolPages-n6d8tLbT.js");return{MarketingToolPage:e}},__vite__mapDeps([22,3,23,2,4,5,10,24])).then(({MarketingToolPage:e})=>({default:e}))),He=i.lazy(()=>b(async()=>{const{YouTubeSearchPage:e}=await import("./YouTubeSearchPage-52qOcKbo.js");return{YouTubeSearchPage:e}},__vite__mapDeps([25,3,2,4,5,10,26])).then(({YouTubeSearchPage:e})=>({default:e}))),Ke=i.lazy(()=>b(async()=>{const{CompanyCorePage:e}=await import("./CompanyCorePage-CVw3X796.js");return{CompanyCorePage:e}},__vite__mapDeps([27,3,2,4,5,28])).then(({CompanyCorePage:e})=>({default:e}))),$e=i.lazy(()=>b(async()=>{const{AdminDashboardPage:e}=await import("./AdminDashboardPage-CptFPV__.js");return{AdminDashboardPage:e}},__vite__mapDeps([29,3,1,4,0,2,5,30])).then(({AdminDashboardPage:e})=>({default:e}))),ze=i.lazy(()=>b(async()=>{const{CodePage:e}=await import("./CodePage-CtcukAw7.js");return{CodePage:e}},__vite__mapDeps([31,3,2,4,5,11,8,32,33])).then(({CodePage:e})=>({default:e}))),Fe=i.lazy(()=>b(async()=>{const{ExecutionModePage:e}=await import("./ExecutionModePage-BxZvRmyD.js");return{ExecutionModePage:e}},__vite__mapDeps([34,3,2,4,5,11,8,35])).then(({ExecutionModePage:e})=>({default:e}))),Ve=i.lazy(()=>b(async()=>{const{MarketingHome:e}=await import("./MarketingHome-BsyerRpe.js");return{MarketingHome:e}},__vite__mapDeps([36,3,16,4,5,17,23,37])).then(({MarketingHome:e})=>({default:e}))),We=i.lazy(()=>b(async()=>{const{AppSidebar:e}=await import("./AppSidebar-6q9MElKP.js");return{AppSidebar:e}},__vite__mapDeps([38,3,1,4,5])).then(({AppSidebar:e})=>({default:e}))),qe=new Set(["/","/mindcanvas","/planmaster","/tools","/youtube","/code","/pricing","/company-core","/login"]);function Ge(e,t=window.location.hostname){const o=N(t);if(o&&(e==="/"||e==="/tools"))return`/tools/${o.key}`;if(e==="/agent")return"/agent";if(e==="/forgot-password")return"/forgot-password";if(e==="/reset-password")return"/reset-password";let n="/not-found";return e==="/"?n="/":e==="/mindmap"?n="/mindmap":e==="/planagent"?n="/planagent":e==="/execution-mode"?n="/execution-mode":e==="/not-found"?n="/not-found":e.startsWith("/tools/")&&(n=e),qe.has(e)?n=e:e==="/admin/dashboard"&&(n="/admin/dashboard"),n}function Ye(e,t=window.location.hostname){const o=z(t),n=Ge(e,t);return V(o,n)?n:F(o)}function W(e,t=window.location.hostname){const o=Ye(e,t);return{route:o,stalePath:o==="/not-found"&&e!=="/not-found"?e:""}}function M(e){const t=window.location.pathname,{route:o,stalePath:n}=W(t,window.location.hostname);return o==="/not-found"&&t!=="/not-found"?(window.history.replaceState({stalePath:t},"","/not-found"),h.emit("route.notFound.normalize",{source:e,from:n||t,to:"/not-found"})):D(t)!==o&&!(t==="/"&&o.startsWith("/tools/"))&&!(t==="/tools"&&o.startsWith("/tools/"))&&(window.history.replaceState({stalePath:t},"",o),h.emit("productProfile.route.fallback",{source:e,from:t,to:o})),o}function C(e,t,o){if(o===void 0){delete e.dataset[t];return}e.dataset[t]=o}function Xe(){const e=i.useMemo(()=>z(window.location.hostname),[]),t=i.useMemo(()=>N(window.location.hostname),[]),[o,n]=i.useState(()=>W(window.location.pathname,window.location.hostname).route),a=o==="/mindcanvas"||o==="/mindmap",[c,u]=i.useState(()=>a),s=i.useMemo(()=>xe(e,o),[e,o]),[m,p]=i.useState([]);i.useEffect(()=>{n(M("initial"));const l=()=>n(M("popstate"));return window.addEventListener("popstate",l),()=>window.removeEventListener("popstate",l)},[]);const d=i.useCallback(l=>{window.history.pushState({},"",l),n(l)},[]),y=i.useCallback(l=>{n(M(l))},[]);i.useEffect(()=>{!a||c||(u(!0),h.emit("route.keepAlive.mindcanvas",{route:o,mounted:!0,source:"route-activate"}))},[a,c,o]);const g=o==="/planmaster"||o==="/planagent",f=o.startsWith("/tools/")?o.slice(7):null,k=e.marketingTool.enabled&&e.marketingTool.hideAppChrome,E=c||a;return i.useEffect(()=>{const l=document.documentElement,v={productProfile:l.dataset.productProfile,productVariant:l.dataset.productVariant,canonicalHost:l.dataset.canonicalHost,routeCanonical:l.dataset.routeCanonical,routeEnabled:l.dataset.routeEnabled,marketingToolKey:l.dataset.marketingToolKey};return l.dataset.productProfile=e.slug,l.dataset.productVariant=e.variantKey,l.dataset.canonicalHost=e.canonicalHost,l.dataset.routeCanonical=s.canonicalUrl,l.dataset.routeEnabled=s.enabled?"true":"false",e.marketingTool.toolKey?l.dataset.marketingToolKey=e.marketingTool.toolKey:delete l.dataset.marketingToolKey,h.emit("productProfile.route.applied",{route:o,variantKey:e.variantKey,slug:e.slug,canonicalHost:e.canonicalHost,canonicalUrl:s.canonicalUrl,routeEnabled:s.enabled,fallbackRoute:s.fallbackRoute,marketingToolKey:e.marketingTool.toolKey}),()=>{C(l,"productProfile",v.productProfile),C(l,"productVariant",v.productVariant),C(l,"canonicalHost",v.canonicalHost),C(l,"routeCanonical",v.routeCanonical),C(l,"routeEnabled",v.routeEnabled),C(l,"marketingToolKey",v.marketingToolKey)}},[e.canonicalHost,e.marketingTool.toolKey,e.slug,e.variantKey,o,s.canonicalUrl,s.enabled,s.fallbackRoute]),r.jsxs("div",{className:`${a?"app app--canvas":"app"} ${k?"app--mini-tool":""}`,"data-product-profile":e.slug,"data-product-variant":e.variantKey,"data-canonical-host":e.canonicalHost,"data-route-enabled":s.enabled?"true":"false","data-route-canonical":s.canonicalUrl,"data-marketing-tool-key":e.marketingTool.toolKey||void 0,children:[!k&&r.jsx(i.Suspense,{fallback:r.jsx(Qe,{}),children:r.jsx(We,{route:o,navigate:d,canvasActions:a?m:[]})}),r.jsxs("main",{className:"app-main",children:[r.jsx(be,{onRouteReplaced:y}),r.jsx(Pe,{route:o}),r.jsx(ye,{resetKey:o,onNavigateHome:()=>d("/mindcanvas"),children:r.jsxs(i.Suspense,{fallback:r.jsx(Je,{route:o}),children:[o==="/"&&r.jsx(Ve,{navigate:d}),E&&r.jsx("section",{className:"route-keepalive route-keepalive--mindcanvas","data-testid":"mindcanvas-keepalive-host","data-route-keepalive":"mindcanvas","data-route-active":a?"true":"false",hidden:!a,"aria-hidden":a?void 0:"true",children:r.jsx(Le,{navigate:d,onSidebarActionsChange:p})}),g&&r.jsx(Ne,{navigate:d}),o==="/pricing"&&r.jsx(je,{navigate:d}),o==="/login"&&r.jsx(De,{navigate:d}),o==="/forgot-password"&&r.jsx(Ue,{navigate:d}),o==="/reset-password"&&r.jsx(Ie,{navigate:d}),o==="/tools"&&r.jsx(Oe,{navigate:d}),f&&r.jsx(Be,{toolKey:f,navigate:d,miniHost:(t==null?void 0:t.key)===f}),o==="/youtube"&&r.jsx(He,{navigate:d}),(o==="/code"||o==="/agent")&&r.jsx(ze,{}),o==="/execution-mode"&&r.jsx(Fe,{}),o==="/not-found"&&r.jsx(Ze,{navigate:d}),o==="/company-core"&&r.jsx(Ke,{}),o==="/admin/dashboard"&&r.jsx($e,{})]})})]})]})}function Je({route:e}){return i.useEffect(()=>{h.emit("route.lazyFallback.rendered",{route:e})},[e]),r.jsxs("div",{className:"route-lazy-fallback","data-testid":"route-lazy-fallback","data-route":e,children:[r.jsx("span",{className:"route-lazy-spinner","aria-hidden":"true"}),r.jsx("span",{children:"Loading MindExec surface..."})]})}function Qe(){return r.jsxs("aside",{className:"app-sidebar app-sidebar--loading","aria-label":"MindExec navigation loading",children:[r.jsx("div",{className:"sidebar-brand sidebar-placeholder"}),r.jsx("div",{className:"sidebar-divider"}),r.jsx("nav",{className:"sidebar-nav",children:Array.from({length:8},(e,t)=>r.jsx("div",{className:"sidebar-icon sidebar-placeholder"},t))}),r.jsx("div",{className:"sidebar-spacer"}),r.jsx("div",{className:"sidebar-icon sidebar-placeholder"})]})}function Ze({navigate:e}){return r.jsx("div",{className:"page not-found-page",children:r.jsxs("section",{className:"execution-panel",children:[r.jsx("div",{className:"eyebrow",children:"Not Found"}),r.jsx("h1",{children:"Content not found."}),r.jsx("p",{children:"The route exists as a React shell so stale Blazor links land cleanly."}),r.jsx("button",{className:"btn btn-primary",type:"button",onClick:()=>e("/"),children:"Go home"})]})})}X();async function et(){await $(),Y.createRoot(document.getElementById("root")).render(r.jsx(Xe,{}))}et();export{Z as A,b as _,_ as a,L as b,rt as c,ie as d,nt as g,$ as p,B as s};
@@ -1 +1 @@
1
- import{ai as b,aj as B,ak as x,al as R,am as D}from"./canvas-runtime-D2W6Dpfc.js";import{R as n}from"./app-runtime-xD2Z3NdN.js";import{l as T,b as f,c as O,d as _}from"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";const L={id:"mindcanvas-main",name:"Global Launch Workspace",updatedAt:new Date().toISOString(),settings:{wheelMode:!1,cursorDirection:"right",inputMode:"Text",model:D,effort:"Normal",appLanguage:"auto",gridSnap:!0,gridType:"dot",cursorMode:"center",cameraTraceMode:"none",imageLoadSize:"default",aiNodeDefaultWidth:340,aiNodeDefaultHeight:196,showFullAiResponse:!1,minimapEnabled:!1,aiProvider:"OpenAI Codex",ollamaEndpoint:"http://localhost:11434",imageRouterEnabled:!1,imageRouterImageModel:R,imageRouterVideoModel:x,imageRouterImageAspectPresetId:B,imageRouterVideoAspectPresetId:b,codeMasterInsightBundlesEnabled:!0,codeMasterInsightBundleTimeoutMs:18e3,codeMasterInsightBundleRetryCount:2,codeMasterInsightBundleRetryCountDeep:3,executionMode:"Concept",directInstructionQueueMode:"Append"},nodes:[{id:"node-agent-command",kind:"ai-task",title:"AI Task",body:"Turn a rough global SaaS idea into a launchable work plan. Keep the result practical: offer, channel, first landing page, and 7-day execution steps.",result:"Drafted execution plan: validate one English-first offer, publish a narrow landing page, collect 20 founder leads, and turn repeated questions into MindCanvas templates.",status:"done",role:"Business operator",tags:["AI Task","Result"],x:180,y:170,width:330,height:196},{id:"node-context",kind:"note",title:"Context",body:"Target: global solo builders who need one place for notes, evidence, AI runs, assets, and task graphs. Price in USD. Avoid Korea-only positioning.",tags:["Context"],x:-270,y:90,width:320,height:180},{id:"node-pricing",kind:"memo",title:"Pricing memory",body:"Free local tools -> MindCanvas Pro $12/mo. The paid step appears after the work becomes worth keeping.",tags:["Pricing"],x:585,y:110,width:300,height:158},{id:"node-output",kind:"code",title:"Reusable output",body:"Ship React canvas first. Keep LocalBridge and cloud hooks adapter-based so the UI does not wait on Blazor or C# services.",tags:["React","Runtime"],x:190,y:455,width:370,height:166}],edges:[{id:"edge-context-task",from:"node-context",to:"node-agent-command",kind:"context"},{id:"edge-task-output",from:"node-agent-command",to:"node-output",kind:"result"}]},u="mindexec-react-board-v1",s="mindexec-react-current-board-v2",p="mindexec-react-board-index-v2",M="mindexec-react-board-v2:";function i(e){return`${M}${e}`}function l(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function g(e){const t=e;return!!(t&&typeof t=="object"&&typeof t.id=="string"&&Array.isArray(t.nodes)&&Array.isArray(t.edges)&&t.settings)}function v(e){var t,r;return{id:e.id,name:e.name||"Untitled",updatedAt:e.updatedAt||new Date().toISOString(),nodeCount:e.nodes.length,edgeCount:e.edges.length,sourceKind:(t=e.source)==null?void 0:t.kind,sourceBoardId:(r=e.source)==null?void 0:r.boardId}}function c(){const e=l(localStorage.getItem(p));return Array.isArray(e)?y(e.filter(t=>t&&typeof t.id=="string").sort(m)):[]}function S(e){const t=y(e);localStorage.setItem(p,JSON.stringify(t)),_(t.map(r=>({BoardId:r.id,Title:r.name||"Untitled"})))}function h(e){const t=c(),r=t.find(d=>d.id===e.id),a=[{...v(e),order:(r==null?void 0:r.order)??t.length},...t.filter(d=>d.id!==e.id)].sort(m);S(a)}function I(e,t){return typeof e.order=="number"&&Number.isFinite(e.order)?e.order:t}function m(e,t){const r=I(e,Number.MAX_SAFE_INTEGER)-I(t,Number.MAX_SAFE_INTEGER);return r!==0?r:String(t.updatedAt||"").localeCompare(String(e.updatedAt||""))}function y(e){const t=new Set;return e.filter(r=>!(r!=null&&r.id)||t.has(r.id)?!1:(t.add(r.id),!0)).sort(m).map((r,o)=>({...r,order:o}))}function E(e){localStorage.setItem(i(e.id),JSON.stringify(e)),h(e),localStorage.setItem(s,e.id),f(e.id),localStorage.setItem(u,JSON.stringify(e))}function A(){const e=l(localStorage.getItem(u));return g(e)?(E(e),e):null}function N(e){try{const t=localStorage.getItem(s)||T();if(t){const o=l(localStorage.getItem(i(t)));if(g(o))return localStorage.setItem(s,o.id),f(o.id),n.emit("board.restore",{source:"localStorage",boardId:o.id,nodes:o.nodes.length,edges:o.edges.length}),o}const r=A();return r?(n.emit("board.restore",{source:"legacyLocalStorage",boardId:r.id,nodes:r.nodes.length,edges:r.edges.length}),r):(n.emit("board.restore",{source:"fixture"}),e)}catch(t){return n.emit("board.restore",{source:"fixture",error:String(t)}),e}}function P(e){const t={...e,updatedAt:new Date().toISOString()};try{return E(t),n.emit("board.persist",{boardId:e.id,nodes:e.nodes.length,edges:e.edges.length}),!0}catch(r){return n.emit("board.persist.failed",{boardId:e.id,message:r instanceof Error?r.message:String(r)}),!1}}function F(){try{const e=c();return e.length>0?e:(A(),c())}catch{return[]}}function U(e){try{const t=l(localStorage.getItem(i(e)));return g(t)?(localStorage.setItem(s,t.id),f(t.id),n.emit("board.restore",{source:"localStorage",boardId:t.id,nodes:t.nodes.length,edges:t.edges.length}),t):null}catch(t){return n.emit("board.restore",{source:"localStorage",boardId:e,error:String(t)}),null}}function K(e,t){const r=t.trim().slice(0,90)||"Untitled Workspace";try{const o=l(localStorage.getItem(i(e)));if(!g(o))return!1;const a={...o,name:r,updatedAt:new Date().toISOString()};return localStorage.setItem(i(e),JSON.stringify(a)),h(a),localStorage.getItem(s)===e&&localStorage.setItem(u,JSON.stringify(a)),n.emit("board.rename",{boardId:e,source:"stored"}),!0}catch(o){return n.emit("board.rename.failed",{boardId:e,message:o instanceof Error?o.message:String(o)}),!1}}function G(e){try{const t=c(),r=new Map(e.map((a,d)=>[a,d])),o=t.map((a,d)=>({...a,order:r.has(a.id)?r.get(a.id):e.length+d})).sort(m).map((a,d)=>({...a,order:d}));return S(o),n.emit("board.tabs.reorder",{orderedIds:o.map(a=>a.id)}),o}catch(t){return n.emit("board.tabs.reorder.failed",{message:t instanceof Error?t.message:String(t)}),c()}}function J(e){try{localStorage.removeItem(i(e)),S(c().filter(t=>t.id!==e)),localStorage.getItem(s)===e&&localStorage.removeItem(s),n.emit("board.local.delete",{boardId:e})}catch(t){n.emit("board.local.delete.failed",{boardId:e,message:t instanceof Error?t.message:String(t)})}}function X(){const e=c().map(t=>t.id);for(const t of e)localStorage.removeItem(i(t));localStorage.removeItem(p),localStorage.removeItem(s),localStorage.removeItem(u),O()}export{F as a,U as b,K as c,J as d,X as e,L as i,N as l,G as r,P as s};
1
+ import{aj as b,ak as B,al as x,am as R,an as D}from"./canvas-runtime-D3amtMwe.js";import{R as n}from"./app-runtime-xD2Z3NdN.js";import{l as T,b as f,c as O,d as _}from"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";const L={id:"mindcanvas-main",name:"Global Launch Workspace",updatedAt:new Date().toISOString(),settings:{wheelMode:!1,cursorDirection:"right",inputMode:"Text",model:D,effort:"Normal",appLanguage:"auto",gridSnap:!0,gridType:"dot",cursorMode:"center",cameraTraceMode:"none",imageLoadSize:"default",aiNodeDefaultWidth:340,aiNodeDefaultHeight:196,showFullAiResponse:!1,minimapEnabled:!1,aiProvider:"OpenAI Codex",ollamaEndpoint:"http://localhost:11434",imageRouterEnabled:!1,imageRouterImageModel:R,imageRouterVideoModel:x,imageRouterImageAspectPresetId:B,imageRouterVideoAspectPresetId:b,codeMasterInsightBundlesEnabled:!0,codeMasterInsightBundleTimeoutMs:18e3,codeMasterInsightBundleRetryCount:2,codeMasterInsightBundleRetryCountDeep:3,executionMode:"Concept",directInstructionQueueMode:"Append"},nodes:[{id:"node-agent-command",kind:"ai-task",title:"AI Task",body:"Turn a rough global SaaS idea into a launchable work plan. Keep the result practical: offer, channel, first landing page, and 7-day execution steps.",result:"Drafted execution plan: validate one English-first offer, publish a narrow landing page, collect 20 founder leads, and turn repeated questions into MindCanvas templates.",status:"done",role:"Business operator",tags:["AI Task","Result"],x:180,y:170,width:330,height:196},{id:"node-context",kind:"note",title:"Context",body:"Target: global solo builders who need one place for notes, evidence, AI runs, assets, and task graphs. Price in USD. Avoid Korea-only positioning.",tags:["Context"],x:-270,y:90,width:320,height:180},{id:"node-pricing",kind:"memo",title:"Pricing memory",body:"Free local tools -> MindCanvas Pro $12/mo. The paid step appears after the work becomes worth keeping.",tags:["Pricing"],x:585,y:110,width:300,height:158},{id:"node-output",kind:"code",title:"Reusable output",body:"Ship React canvas first. Keep LocalBridge and cloud hooks adapter-based so the UI does not wait on Blazor or C# services.",tags:["React","Runtime"],x:190,y:455,width:370,height:166}],edges:[{id:"edge-context-task",from:"node-context",to:"node-agent-command",kind:"context"},{id:"edge-task-output",from:"node-agent-command",to:"node-output",kind:"result"}]},u="mindexec-react-board-v1",s="mindexec-react-current-board-v2",p="mindexec-react-board-index-v2",M="mindexec-react-board-v2:";function i(e){return`${M}${e}`}function l(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function g(e){const t=e;return!!(t&&typeof t=="object"&&typeof t.id=="string"&&Array.isArray(t.nodes)&&Array.isArray(t.edges)&&t.settings)}function v(e){var t,r;return{id:e.id,name:e.name||"Untitled",updatedAt:e.updatedAt||new Date().toISOString(),nodeCount:e.nodes.length,edgeCount:e.edges.length,sourceKind:(t=e.source)==null?void 0:t.kind,sourceBoardId:(r=e.source)==null?void 0:r.boardId}}function c(){const e=l(localStorage.getItem(p));return Array.isArray(e)?y(e.filter(t=>t&&typeof t.id=="string").sort(m)):[]}function S(e){const t=y(e);localStorage.setItem(p,JSON.stringify(t)),_(t.map(r=>({BoardId:r.id,Title:r.name||"Untitled"})))}function h(e){const t=c(),r=t.find(d=>d.id===e.id),a=[{...v(e),order:(r==null?void 0:r.order)??t.length},...t.filter(d=>d.id!==e.id)].sort(m);S(a)}function I(e,t){return typeof e.order=="number"&&Number.isFinite(e.order)?e.order:t}function m(e,t){const r=I(e,Number.MAX_SAFE_INTEGER)-I(t,Number.MAX_SAFE_INTEGER);return r!==0?r:String(t.updatedAt||"").localeCompare(String(e.updatedAt||""))}function y(e){const t=new Set;return e.filter(r=>!(r!=null&&r.id)||t.has(r.id)?!1:(t.add(r.id),!0)).sort(m).map((r,o)=>({...r,order:o}))}function E(e){localStorage.setItem(i(e.id),JSON.stringify(e)),h(e),localStorage.setItem(s,e.id),f(e.id),localStorage.setItem(u,JSON.stringify(e))}function A(){const e=l(localStorage.getItem(u));return g(e)?(E(e),e):null}function N(e){try{const t=localStorage.getItem(s)||T();if(t){const o=l(localStorage.getItem(i(t)));if(g(o))return localStorage.setItem(s,o.id),f(o.id),n.emit("board.restore",{source:"localStorage",boardId:o.id,nodes:o.nodes.length,edges:o.edges.length}),o}const r=A();return r?(n.emit("board.restore",{source:"legacyLocalStorage",boardId:r.id,nodes:r.nodes.length,edges:r.edges.length}),r):(n.emit("board.restore",{source:"fixture"}),e)}catch(t){return n.emit("board.restore",{source:"fixture",error:String(t)}),e}}function P(e){const t={...e,updatedAt:new Date().toISOString()};try{return E(t),n.emit("board.persist",{boardId:e.id,nodes:e.nodes.length,edges:e.edges.length}),!0}catch(r){return n.emit("board.persist.failed",{boardId:e.id,message:r instanceof Error?r.message:String(r)}),!1}}function F(){try{const e=c();return e.length>0?e:(A(),c())}catch{return[]}}function U(e){try{const t=l(localStorage.getItem(i(e)));return g(t)?(localStorage.setItem(s,t.id),f(t.id),n.emit("board.restore",{source:"localStorage",boardId:t.id,nodes:t.nodes.length,edges:t.edges.length}),t):null}catch(t){return n.emit("board.restore",{source:"localStorage",boardId:e,error:String(t)}),null}}function K(e,t){const r=t.trim().slice(0,90)||"Untitled Workspace";try{const o=l(localStorage.getItem(i(e)));if(!g(o))return!1;const a={...o,name:r,updatedAt:new Date().toISOString()};return localStorage.setItem(i(e),JSON.stringify(a)),h(a),localStorage.getItem(s)===e&&localStorage.setItem(u,JSON.stringify(a)),n.emit("board.rename",{boardId:e,source:"stored"}),!0}catch(o){return n.emit("board.rename.failed",{boardId:e,message:o instanceof Error?o.message:String(o)}),!1}}function G(e){try{const t=c(),r=new Map(e.map((a,d)=>[a,d])),o=t.map((a,d)=>({...a,order:r.has(a.id)?r.get(a.id):e.length+d})).sort(m).map((a,d)=>({...a,order:d}));return S(o),n.emit("board.tabs.reorder",{orderedIds:o.map(a=>a.id)}),o}catch(t){return n.emit("board.tabs.reorder.failed",{message:t instanceof Error?t.message:String(t)}),c()}}function J(e){try{localStorage.removeItem(i(e)),S(c().filter(t=>t.id!==e)),localStorage.getItem(s)===e&&localStorage.removeItem(s),n.emit("board.local.delete",{boardId:e})}catch(t){n.emit("board.local.delete.failed",{boardId:e,message:t instanceof Error?t.message:String(t)})}}function X(){const e=c().map(t=>t.id);for(const t of e)localStorage.removeItem(i(t));localStorage.removeItem(p),localStorage.removeItem(s),localStorage.removeItem(u),O()}export{F as a,U as b,K as c,J as d,X as e,L as i,N as l,G as r,P as s};
@@ -1,4 +1,4 @@
1
- import{r as F}from"./productionAdapterConfig-C5jfk6oG.js";import{aP as Sr,aQ as Er,o as Tr,x as Ar,aR as Rr}from"./canvas-runtime-D2W6Dpfc.js";import{R as S}from"./app-runtime-xD2Z3NdN.js";import"./vendor-react-BXzpOyCS.js";import"./vendor-icons-678PAT8P.js";function ze(t,e){var r={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(r[s]=t[s]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,s=Object.getOwnPropertySymbols(t);n<s.length;n++)e.indexOf(s[n])<0&&Object.prototype.propertyIsEnumerable.call(t,s[n])&&(r[s[n]]=t[s[n]]);return r}function Or(t,e,r,s){function n(i){return i instanceof r?i:new r(function(a){a(i)})}return new(r||(r=Promise))(function(i,a){function o(u){try{c(s.next(u))}catch(h){a(h)}}function l(u){try{c(s.throw(u))}catch(h){a(h)}}function c(u){u.done?i(u.value):n(u.value).then(o,l)}c((s=s.apply(t,e||[])).next())})}const Cr=t=>t?(...e)=>t(...e):(...e)=>fetch(...e);class mt extends Error{constructor(e,r="FunctionsError",s){super(e),this.name=r,this.context=s}toJSON(){return{name:this.name,message:this.message,context:this.context}}}class Pr extends mt{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class _t extends mt{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class bt extends mt{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var it;(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"})(it||(it={}));class jr{constructor(e,{headers:r={},customFetch:s,region:n=it.Any}={}){this.url=e,this.headers=r,this.region=n,this.fetch=Cr(s)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e){return Or(this,arguments,void 0,function*(r,s={}){var n;let i,a;try{const{headers:o,method:l,body:c,signal:u,timeout:h}=s;let d={},{region:f}=s;f||(f=this.region);const p=new URL(`${this.url}/${r}`);f&&f!=="any"&&(d["x-region"]=f,p.searchParams.set("forceFunctionRegion",f));let g;c&&(o&&!Object.prototype.hasOwnProperty.call(o,"Content-Type")||!o)?typeof Blob<"u"&&c instanceof Blob||c instanceof ArrayBuffer?(d["Content-Type"]="application/octet-stream",g=c):typeof c=="string"?(d["Content-Type"]="text/plain",g=c):typeof FormData<"u"&&c instanceof FormData?g=c:(d["Content-Type"]="application/json",g=JSON.stringify(c)):c&&typeof c!="string"&&!(typeof Blob<"u"&&c instanceof Blob)&&!(c instanceof ArrayBuffer)&&!(typeof FormData<"u"&&c instanceof FormData)?g=JSON.stringify(c):g=c;let _=u;h&&(a=new AbortController,i=setTimeout(()=>a.abort(),h),u?(_=a.signal,u.addEventListener("abort",()=>a.abort())):_=a.signal);const v=yield this.fetch(p.toString(),{method:l||"POST",headers:Object.assign(Object.assign(Object.assign({},d),this.headers),o),body:g,signal:_}).catch(x=>{throw new Pr(x)}),b=v.headers.get("x-relay-error");if(b&&b==="true")throw new _t(v);if(!v.ok)throw new bt(v);let y=((n=v.headers.get("Content-Type"))!==null&&n!==void 0?n:"text/plain").split(";")[0].trim(),E;return y==="application/json"?E=yield v.json():y==="application/octet-stream"||y==="application/pdf"?E=yield v.blob():y==="text/event-stream"?E=v:y==="multipart/form-data"?E=yield v.formData():E=yield v.text(),{data:E,error:null,response:v}}catch(o){return{data:null,error:o,response:o instanceof bt||o instanceof _t?o.context:void 0}}finally{i&&clearTimeout(i)}})}}const Zt=3,kt=t=>Math.min(1e3*2**t,3e4),Ir=[520,503],er=["GET","HEAD","OPTIONS"];var St=class extends Error{constructor(t){super(t.message),this.name="PostgrestError",this.details=t.details,this.hint=t.hint,this.code=t.code}toJSON(){return{name:this.name,message:this.message,details:this.details,hint:this.hint,code:this.code}}};function Et(t,e){return new Promise(r=>{if(e!=null&&e.aborted){r();return}const s=setTimeout(()=>{e==null||e.removeEventListener("abort",n),r()},t);function n(){clearTimeout(s),r()}e==null||e.addEventListener("abort",n)})}function $r(t,e,r,s){return!(!s||r>=Zt||!er.includes(t)||!Ir.includes(e))}var xr=class{constructor(t){var e,r,s,n,i;this.shouldThrowOnError=!1,this.retryEnabled=!0,this.method=t.method,this.url=t.url,this.headers=new Headers(t.headers),this.schema=t.schema,this.body=t.body,this.shouldThrowOnError=(e=t.shouldThrowOnError)!==null&&e!==void 0?e:!1,this.signal=t.signal,this.isMaybeSingle=(r=t.isMaybeSingle)!==null&&r!==void 0?r:!1,this.shouldStripNulls=(s=t.shouldStripNulls)!==null&&s!==void 0?s:!1,this.urlLengthLimit=(n=t.urlLengthLimit)!==null&&n!==void 0?n:8e3,this.retryEnabled=(i=t.retry)!==null&&i!==void 0?i:!0,t.fetch?this.fetch=t.fetch:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}stripNulls(){if(this.headers.get("Accept")==="text/csv")throw new Error("stripNulls() cannot be used with csv()");return this.shouldStripNulls=!0,this}setHeader(t,e){return this.headers=new Headers(this.headers),this.headers.set(t,e),this}retry(t){return this.retryEnabled=t,this}then(t,e){var r=this;if(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"),this.shouldStripNulls){const a=this.headers.get("Accept");a==="application/vnd.pgrst.object+json"?this.headers.set("Accept","application/vnd.pgrst.object+json;nulls=stripped"):(!a||a==="application/json")&&this.headers.set("Accept","application/vnd.pgrst.array+json;nulls=stripped")}const s=this.fetch;let i=(async()=>{let a=0;for(;;){const c={};r.headers.forEach((h,d)=>{c[d]=h}),a>0&&(c["X-Retry-Count"]=String(a));let u;try{u=await s(r.url.toString(),{method:r.method,headers:c,body:JSON.stringify(r.body,(h,d)=>typeof d=="bigint"?d.toString():d),signal:r.signal})}catch(h){if((h==null?void 0:h.name)==="AbortError"||(h==null?void 0:h.code)==="ABORT_ERR"||!er.includes(r.method))throw h;if(r.retryEnabled&&a<Zt){const d=kt(a);a++,await Et(d,r.signal);continue}throw h}if($r(r.method,u.status,a,r.retryEnabled)){var o,l;const h=(o=(l=u.headers)===null||l===void 0?void 0:l.get("Retry-After"))!==null&&o!==void 0?o:null,d=h!==null?Math.max(0,parseInt(h,10)||0)*1e3:kt(a);await u.text(),a++,await Et(d,r.signal);continue}return await r.processResponse(u)}})();return this.shouldThrowOnError||(i=i.catch(a=>{var o;let l="",c="",u="";const h=a==null?void 0:a.cause;if(h){var d,f,p,g;const b=(d=h==null?void 0:h.message)!==null&&d!==void 0?d:"",y=(f=h==null?void 0:h.code)!==null&&f!==void 0?f:"";l=`${(p=a==null?void 0:a.name)!==null&&p!==void 0?p:"FetchError"}: ${a==null?void 0:a.message}`,l+=`
1
+ import{r as F}from"./productionAdapterConfig-C5jfk6oG.js";import{aQ as Sr,aR as Er,y as Tr,A as Ar,aS as Rr}from"./canvas-runtime-D3amtMwe.js";import{R as S}from"./app-runtime-xD2Z3NdN.js";import"./vendor-react-BXzpOyCS.js";import"./vendor-icons-DE3gIReG.js";function ze(t,e){var r={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(r[s]=t[s]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,s=Object.getOwnPropertySymbols(t);n<s.length;n++)e.indexOf(s[n])<0&&Object.prototype.propertyIsEnumerable.call(t,s[n])&&(r[s[n]]=t[s[n]]);return r}function Or(t,e,r,s){function n(i){return i instanceof r?i:new r(function(a){a(i)})}return new(r||(r=Promise))(function(i,a){function o(u){try{c(s.next(u))}catch(h){a(h)}}function l(u){try{c(s.throw(u))}catch(h){a(h)}}function c(u){u.done?i(u.value):n(u.value).then(o,l)}c((s=s.apply(t,e||[])).next())})}const Cr=t=>t?(...e)=>t(...e):(...e)=>fetch(...e);class mt extends Error{constructor(e,r="FunctionsError",s){super(e),this.name=r,this.context=s}toJSON(){return{name:this.name,message:this.message,context:this.context}}}class Pr extends mt{constructor(e){super("Failed to send a request to the Edge Function","FunctionsFetchError",e)}}class _t extends mt{constructor(e){super("Relay Error invoking the Edge Function","FunctionsRelayError",e)}}class bt extends mt{constructor(e){super("Edge Function returned a non-2xx status code","FunctionsHttpError",e)}}var it;(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"})(it||(it={}));class jr{constructor(e,{headers:r={},customFetch:s,region:n=it.Any}={}){this.url=e,this.headers=r,this.region=n,this.fetch=Cr(s)}setAuth(e){this.headers.Authorization=`Bearer ${e}`}invoke(e){return Or(this,arguments,void 0,function*(r,s={}){var n;let i,a;try{const{headers:o,method:l,body:c,signal:u,timeout:h}=s;let d={},{region:f}=s;f||(f=this.region);const p=new URL(`${this.url}/${r}`);f&&f!=="any"&&(d["x-region"]=f,p.searchParams.set("forceFunctionRegion",f));let g;c&&(o&&!Object.prototype.hasOwnProperty.call(o,"Content-Type")||!o)?typeof Blob<"u"&&c instanceof Blob||c instanceof ArrayBuffer?(d["Content-Type"]="application/octet-stream",g=c):typeof c=="string"?(d["Content-Type"]="text/plain",g=c):typeof FormData<"u"&&c instanceof FormData?g=c:(d["Content-Type"]="application/json",g=JSON.stringify(c)):c&&typeof c!="string"&&!(typeof Blob<"u"&&c instanceof Blob)&&!(c instanceof ArrayBuffer)&&!(typeof FormData<"u"&&c instanceof FormData)?g=JSON.stringify(c):g=c;let _=u;h&&(a=new AbortController,i=setTimeout(()=>a.abort(),h),u?(_=a.signal,u.addEventListener("abort",()=>a.abort())):_=a.signal);const v=yield this.fetch(p.toString(),{method:l||"POST",headers:Object.assign(Object.assign(Object.assign({},d),this.headers),o),body:g,signal:_}).catch(x=>{throw new Pr(x)}),b=v.headers.get("x-relay-error");if(b&&b==="true")throw new _t(v);if(!v.ok)throw new bt(v);let y=((n=v.headers.get("Content-Type"))!==null&&n!==void 0?n:"text/plain").split(";")[0].trim(),E;return y==="application/json"?E=yield v.json():y==="application/octet-stream"||y==="application/pdf"?E=yield v.blob():y==="text/event-stream"?E=v:y==="multipart/form-data"?E=yield v.formData():E=yield v.text(),{data:E,error:null,response:v}}catch(o){return{data:null,error:o,response:o instanceof bt||o instanceof _t?o.context:void 0}}finally{i&&clearTimeout(i)}})}}const Zt=3,kt=t=>Math.min(1e3*2**t,3e4),Ir=[520,503],er=["GET","HEAD","OPTIONS"];var St=class extends Error{constructor(t){super(t.message),this.name="PostgrestError",this.details=t.details,this.hint=t.hint,this.code=t.code}toJSON(){return{name:this.name,message:this.message,details:this.details,hint:this.hint,code:this.code}}};function Et(t,e){return new Promise(r=>{if(e!=null&&e.aborted){r();return}const s=setTimeout(()=>{e==null||e.removeEventListener("abort",n),r()},t);function n(){clearTimeout(s),r()}e==null||e.addEventListener("abort",n)})}function $r(t,e,r,s){return!(!s||r>=Zt||!er.includes(t)||!Ir.includes(e))}var xr=class{constructor(t){var e,r,s,n,i;this.shouldThrowOnError=!1,this.retryEnabled=!0,this.method=t.method,this.url=t.url,this.headers=new Headers(t.headers),this.schema=t.schema,this.body=t.body,this.shouldThrowOnError=(e=t.shouldThrowOnError)!==null&&e!==void 0?e:!1,this.signal=t.signal,this.isMaybeSingle=(r=t.isMaybeSingle)!==null&&r!==void 0?r:!1,this.shouldStripNulls=(s=t.shouldStripNulls)!==null&&s!==void 0?s:!1,this.urlLengthLimit=(n=t.urlLengthLimit)!==null&&n!==void 0?n:8e3,this.retryEnabled=(i=t.retry)!==null&&i!==void 0?i:!0,t.fetch?this.fetch=t.fetch:this.fetch=fetch}throwOnError(){return this.shouldThrowOnError=!0,this}stripNulls(){if(this.headers.get("Accept")==="text/csv")throw new Error("stripNulls() cannot be used with csv()");return this.shouldStripNulls=!0,this}setHeader(t,e){return this.headers=new Headers(this.headers),this.headers.set(t,e),this}retry(t){return this.retryEnabled=t,this}then(t,e){var r=this;if(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"),this.shouldStripNulls){const a=this.headers.get("Accept");a==="application/vnd.pgrst.object+json"?this.headers.set("Accept","application/vnd.pgrst.object+json;nulls=stripped"):(!a||a==="application/json")&&this.headers.set("Accept","application/vnd.pgrst.array+json;nulls=stripped")}const s=this.fetch;let i=(async()=>{let a=0;for(;;){const c={};r.headers.forEach((h,d)=>{c[d]=h}),a>0&&(c["X-Retry-Count"]=String(a));let u;try{u=await s(r.url.toString(),{method:r.method,headers:c,body:JSON.stringify(r.body,(h,d)=>typeof d=="bigint"?d.toString():d),signal:r.signal})}catch(h){if((h==null?void 0:h.name)==="AbortError"||(h==null?void 0:h.code)==="ABORT_ERR"||!er.includes(r.method))throw h;if(r.retryEnabled&&a<Zt){const d=kt(a);a++,await Et(d,r.signal);continue}throw h}if($r(r.method,u.status,a,r.retryEnabled)){var o,l;const h=(o=(l=u.headers)===null||l===void 0?void 0:l.get("Retry-After"))!==null&&o!==void 0?o:null,d=h!==null?Math.max(0,parseInt(h,10)||0)*1e3:kt(a);await u.text(),a++,await Et(d,r.signal);continue}return await r.processResponse(u)}})();return this.shouldThrowOnError||(i=i.catch(a=>{var o;let l="",c="",u="";const h=a==null?void 0:a.cause;if(h){var d,f,p,g;const b=(d=h==null?void 0:h.message)!==null&&d!==void 0?d:"",y=(f=h==null?void 0:h.code)!==null&&f!==void 0?f:"";l=`${(p=a==null?void 0:a.name)!==null&&p!==void 0?p:"FetchError"}: ${a==null?void 0:a.message}`,l+=`
2
2
 
3
3
  Caused by: ${(g=h==null?void 0:h.name)!==null&&g!==void 0?g:"Error"}: ${b}`,y&&(l+=` (${y})`),h!=null&&h.stack&&(l+=`
4
4
  ${h.stack}`)}else{var _;l=(_=a==null?void 0:a.stack)!==null&&_!==void 0?_:""}const v=this.url.toString().length;return(a==null?void 0:a.name)==="AbortError"||(a==null?void 0:a.code)==="ABORT_ERR"?(u="",c="Request was aborted (timeout or manual cancellation)",v>this.urlLengthLimit&&(c+=`. Note: Your request URL is ${v} characters, which may exceed server limits. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [many IDs])), consider using an RPC function to pass values server-side.`)):((h==null?void 0:h.name)==="HeadersOverflowError"||(h==null?void 0:h.code)==="UND_ERR_HEADERS_OVERFLOW")&&(u="",c="HTTP headers exceeded server limits (typically 16KB)",v>this.urlLengthLimit&&(c+=`. Your request URL is ${v} characters. If selecting many fields, consider using views. If filtering with large arrays (e.g., .in('id', [200+ IDs])), consider using an RPC function instead.`)),{success:!1,error:{message:`${(o=a==null?void 0:a.name)!==null&&o!==void 0?o:"FetchError"}: ${a==null?void 0:a.message}`,details:l,hint:c,code:u},data:null,count:null,status:0,statusText:""}})),i.then(t,e)}async processResponse(t){var e=this;let r=null,s=null,n=null,i=t.status,a=t.statusText;if(t.ok){var o,l;if(e.method!=="HEAD"){var c;const d=await t.text();if(d!=="")if(e.headers.get("Accept")==="text/csv")s=d;else if(e.headers.get("Accept")&&(!((c=e.headers.get("Accept"))===null||c===void 0)&&c.includes("application/vnd.pgrst.plan+text")))s=d;else try{s=JSON.parse(d)}catch{if(r={message:d},s=null,e.shouldThrowOnError)throw new St({message:d,details:"",hint:"",code:""})}}const u=(o=e.headers.get("Prefer"))===null||o===void 0?void 0:o.match(/count=(exact|planned|estimated)/),h=(l=t.headers.get("content-range"))===null||l===void 0?void 0:l.split("/");u&&h&&h.length>1&&(n=parseInt(h[1])),e.isMaybeSingle&&Array.isArray(s)&&(s.length>1?(r={code:"PGRST116",details:`Results contain ${s.length} rows, application/vnd.pgrst.object+json requires 1 row`,hint:null,message:"JSON object requested, multiple (or no) rows returned"},s=null,n=null,i=406,a="Not Acceptable"):s.length===1?s=s[0]:s=null)}else{const u=await t.text();try{r=JSON.parse(u),Array.isArray(r)&&t.status===404&&(s=[],r=null,i=200,a="OK")}catch{t.status===404&&u===""?(i=204,a="No Content"):r={message:u}}if(r&&e.shouldThrowOnError)throw new St(r)}return{success:r===null,error:r,data:s,count:n,status:i,statusText:a}}returns(){return this}overrideTypes(){return this}},Ur=class extends xr{throwOnError(){return super.throwOnError()}select(t){let e=!1;const r=(t??"*").split("").map(s=>/\s/.test(s)&&!e?"":(s==='"'&&(e=!e),s)).join("");return this.url.searchParams.set("select",r),this.headers.append("Prefer","return=representation"),this}order(t,{ascending:e=!0,nullsFirst:r,foreignTable:s,referencedTable:n=s}={}){const i=n?`${n}.order`:"order",a=this.url.searchParams.get(i);return this.url.searchParams.set(i,`${a?`${a},`:""}${t}.${e?"asc":"desc"}${r===void 0?"":r?".nullsfirst":".nullslast"}`),this}limit(t,{foreignTable:e,referencedTable:r=e}={}){const s=typeof r>"u"?"limit":`${r}.limit`;return this.url.searchParams.set(s,`${t}`),this}range(t,e,{foreignTable:r,referencedTable:s=r}={}){const n=typeof s>"u"?"offset":`${s}.offset`,i=typeof s>"u"?"limit":`${s}.limit`;return this.url.searchParams.set(n,`${t}`),this.url.searchParams.set(i,`${e-t+1}`),this}abortSignal(t){return this.signal=t,this}single(){return this.headers.set("Accept","application/vnd.pgrst.object+json"),this}maybeSingle(){return this.isMaybeSingle=!0,this}csv(){return this.headers.set("Accept","text/csv"),this}geojson(){return this.headers.set("Accept","application/geo+json"),this}explain({analyze:t=!1,verbose:e=!1,settings:r=!1,buffers:s=!1,wal:n=!1,format:i="text"}={}){var a;const o=[t?"analyze":null,e?"verbose":null,r?"settings":null,s?"buffers":null,n?"wal":null].filter(Boolean).join("|"),l=(a=this.headers.get("Accept"))!==null&&a!==void 0?a:"application/json";return this.headers.set("Accept",`application/vnd.pgrst.plan+${i}; for="${l}"; options=${o};`),i==="json"?this:this}rollback(){return this.headers.append("Prefer","tx=rollback"),this}returns(){return this}maxAffected(t){return this.headers.append("Prefer","handling=strict"),this.headers.append("Prefer",`max-affected=${t}`),this}};const Tt=new RegExp("[,()]");var he=class extends Ur{throwOnError(){return super.throwOnError()}eq(t,e){return this.url.searchParams.append(t,`eq.${e}`),this}neq(t,e){return this.url.searchParams.append(t,`neq.${e}`),this}gt(t,e){return this.url.searchParams.append(t,`gt.${e}`),this}gte(t,e){return this.url.searchParams.append(t,`gte.${e}`),this}lt(t,e){return this.url.searchParams.append(t,`lt.${e}`),this}lte(t,e){return this.url.searchParams.append(t,`lte.${e}`),this}like(t,e){return this.url.searchParams.append(t,`like.${e}`),this}likeAllOf(t,e){return this.url.searchParams.append(t,`like(all).{${e.join(",")}}`),this}likeAnyOf(t,e){return this.url.searchParams.append(t,`like(any).{${e.join(",")}}`),this}ilike(t,e){return this.url.searchParams.append(t,`ilike.${e}`),this}ilikeAllOf(t,e){return this.url.searchParams.append(t,`ilike(all).{${e.join(",")}}`),this}ilikeAnyOf(t,e){return this.url.searchParams.append(t,`ilike(any).{${e.join(",")}}`),this}regexMatch(t,e){return this.url.searchParams.append(t,`match.${e}`),this}regexIMatch(t,e){return this.url.searchParams.append(t,`imatch.${e}`),this}is(t,e){return this.url.searchParams.append(t,`is.${e}`),this}isDistinct(t,e){return this.url.searchParams.append(t,`isdistinct.${e}`),this}in(t,e){const r=Array.from(new Set(e)).map(s=>typeof s=="string"&&Tt.test(s)?`"${s}"`:`${s}`).join(",");return this.url.searchParams.append(t,`in.(${r})`),this}notIn(t,e){const r=Array.from(new Set(e)).map(s=>typeof s=="string"&&Tt.test(s)?`"${s}"`:`${s}`).join(",");return this.url.searchParams.append(t,`not.in.(${r})`),this}contains(t,e){return typeof e=="string"?this.url.searchParams.append(t,`cs.${e}`):Array.isArray(e)?this.url.searchParams.append(t,`cs.{${e.join(",")}}`):this.url.searchParams.append(t,`cs.${JSON.stringify(e)}`),this}containedBy(t,e){return typeof e=="string"?this.url.searchParams.append(t,`cd.${e}`):Array.isArray(e)?this.url.searchParams.append(t,`cd.{${e.join(",")}}`):this.url.searchParams.append(t,`cd.${JSON.stringify(e)}`),this}rangeGt(t,e){return this.url.searchParams.append(t,`sr.${e}`),this}rangeGte(t,e){return this.url.searchParams.append(t,`nxl.${e}`),this}rangeLt(t,e){return this.url.searchParams.append(t,`sl.${e}`),this}rangeLte(t,e){return this.url.searchParams.append(t,`nxr.${e}`),this}rangeAdjacent(t,e){return this.url.searchParams.append(t,`adj.${e}`),this}overlaps(t,e){return typeof e=="string"?this.url.searchParams.append(t,`ov.${e}`):this.url.searchParams.append(t,`ov.{${e.join(",")}}`),this}textSearch(t,e,{config:r,type:s}={}){let n="";s==="plain"?n="pl":s==="phrase"?n="ph":s==="websearch"&&(n="w");const i=r===void 0?"":`(${r})`;return this.url.searchParams.append(t,`${n}fts${i}.${e}`),this}match(t){return Object.entries(t).filter(([e,r])=>r!==void 0).forEach(([e,r])=>{this.url.searchParams.append(e,`eq.${r}`)}),this}not(t,e,r){return this.url.searchParams.append(t,`not.${e}.${r}`),this}or(t,{foreignTable:e,referencedTable:r=e}={}){const s=r?`${r}.or`:"or";return this.url.searchParams.append(s,`(${t})`),this}filter(t,e,r){return this.url.searchParams.append(t,`${e}.${r}`),this}},Nr=class{constructor(t,{headers:e={},schema:r,fetch:s,urlLengthLimit:n=8e3,retry:i}){this.url=t,this.headers=new Headers(e),this.schema=r,this.fetch=s,this.urlLengthLimit=n,this.retry=i}cloneRequestState(){return{url:new URL(this.url.toString()),headers:new Headers(this.headers)}}select(t,e){const{head:r=!1,count:s}=e??{},n=r?"HEAD":"GET";let i=!1;const a=(t??"*").split("").map(c=>/\s/.test(c)&&!i?"":(c==='"'&&(i=!i),c)).join(""),{url:o,headers:l}=this.cloneRequestState();return o.searchParams.set("select",a),s&&l.append("Prefer",`count=${s}`),new he({method:n,url:o,headers:l,schema:this.schema,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}insert(t,{count:e,defaultToNull:r=!0}={}){var s;const n="POST",{url:i,headers:a}=this.cloneRequestState();if(e&&a.append("Prefer",`count=${e}`),r||a.append("Prefer","missing=default"),Array.isArray(t)){const o=t.reduce((l,c)=>l.concat(Object.keys(c)),[]);if(o.length>0){const l=[...new Set(o)].map(c=>`"${c}"`);i.searchParams.set("columns",l.join(","))}}return new he({method:n,url:i,headers:a,schema:this.schema,body:t,fetch:(s=this.fetch)!==null&&s!==void 0?s:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}upsert(t,{onConflict:e,ignoreDuplicates:r=!1,count:s,defaultToNull:n=!0}={}){var i;const a="POST",{url:o,headers:l}=this.cloneRequestState();if(l.append("Prefer",`resolution=${r?"ignore":"merge"}-duplicates`),e!==void 0&&o.searchParams.set("on_conflict",e),s&&l.append("Prefer",`count=${s}`),n||l.append("Prefer","missing=default"),Array.isArray(t)){const c=t.reduce((u,h)=>u.concat(Object.keys(h)),[]);if(c.length>0){const u=[...new Set(c)].map(h=>`"${h}"`);o.searchParams.set("columns",u.join(","))}}return new he({method:a,url:o,headers:l,schema:this.schema,body:t,fetch:(i=this.fetch)!==null&&i!==void 0?i:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}update(t,{count:e}={}){var r;const s="PATCH",{url:n,headers:i}=this.cloneRequestState();return e&&i.append("Prefer",`count=${e}`),new he({method:s,url:n,headers:i,schema:this.schema,body:t,fetch:(r=this.fetch)!==null&&r!==void 0?r:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}delete({count:t}={}){var e;const r="DELETE",{url:s,headers:n}=this.cloneRequestState();return t&&n.append("Prefer",`count=${t}`),new he({method:r,url:s,headers:n,schema:this.schema,fetch:(e=this.fetch)!==null&&e!==void 0?e:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};function Ee(t){"@babel/helpers - typeof";return Ee=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ee(t)}function Lr(t,e){if(Ee(t)!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var s=r.call(t,e);if(Ee(s)!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function Dr(t){var e=Lr(t,"string");return Ee(e)=="symbol"?e:e+""}function Br(t,e,r){return(e=Dr(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function At(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),r.push.apply(r,s)}return r}function Ie(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?At(Object(r),!0).forEach(function(s){Br(t,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):At(Object(r)).forEach(function(s){Object.defineProperty(t,s,Object.getOwnPropertyDescriptor(r,s))})}return t}var qr=class tr{constructor(e,{headers:r={},schema:s,fetch:n,timeout:i,urlLengthLimit:a=8e3,retry:o}={}){this.url=e,this.headers=new Headers(r),this.schemaName=s,this.urlLengthLimit=a;const l=n??globalThis.fetch;i!==void 0&&i>0?this.fetch=(c,u)=>{const h=new AbortController,d=setTimeout(()=>h.abort(),i),f=u==null?void 0:u.signal;if(f){if(f.aborted)return clearTimeout(d),l(c,u);const p=()=>{clearTimeout(d),h.abort()};return f.addEventListener("abort",p,{once:!0}),l(c,Ie(Ie({},u),{},{signal:h.signal})).finally(()=>{clearTimeout(d),f.removeEventListener("abort",p)})}return l(c,Ie(Ie({},u),{},{signal:h.signal})).finally(()=>clearTimeout(d))}:this.fetch=l,this.retry=o}from(e){if(!e||typeof e!="string"||e.trim()==="")throw new Error("Invalid relation name: relation must be a non-empty string.");return new Nr(new URL(`${this.url}/${e}`),{headers:new Headers(this.headers),schema:this.schemaName,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}schema(e){return new tr(this.url,{headers:this.headers,schema:e,fetch:this.fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}rpc(e,r={},{head:s=!1,get:n=!1,count:i}={}){var a;let o;const l=new URL(`${this.url}/rpc/${e}`);let c;const u=f=>f!==null&&typeof f=="object"&&(!Array.isArray(f)||f.some(u)),h=s&&Object.values(r).some(u);h?(o="POST",c=r):s||n?(o=s?"HEAD":"GET",Object.entries(r).filter(([f,p])=>p!==void 0).map(([f,p])=>[f,Array.isArray(p)?`{${p.join(",")}}`:`${p}`]).forEach(([f,p])=>{l.searchParams.append(f,p)})):(o="POST",c=r);const d=new Headers(this.headers);return h?d.set("Prefer",i?`count=${i},return=minimal`:"return=minimal"):i&&d.set("Prefer",`count=${i}`),new he({method:o,url:l,headers:d,schema:this.schemaName,body:c,fetch:(a=this.fetch)!==null&&a!==void 0?a:fetch,urlLengthLimit:this.urlLengthLimit,retry:this.retry})}};class Hr{constructor(){}static detectEnvironment(){var e;if(typeof WebSocket<"u")return{type:"native",wsConstructor:WebSocket};const r=globalThis;if(typeof globalThis<"u"&&typeof r.WebSocket<"u")return{type:"native",wsConstructor:r.WebSocket};const s=typeof global<"u"?global:void 0;if(s&&typeof s.WebSocket<"u")return{type:"native",wsConstructor:s.WebSocket};if(typeof globalThis<"u"&&typeof r.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"&&r.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."};const n=globalThis.process;if(n){const i=n.versions;if(i&&i.node){const a=i.node,o=parseInt(a.replace(/^v/,"").split(".")[0]);return o>=22?typeof globalThis.WebSocket<"u"?{type:"native",wsConstructor:globalThis.WebSocket}:{type:"unsupported",error:`Node.js ${o} detected but native WebSocket not found.`,workaround:"Provide a WebSocket implementation via the transport option."}:{type:"unsupported",error:`Node.js ${o} detected without native WebSocket support.`,workaround:`For Node.js < 22, install "ws" package and provide it via the transport option:
@@ -38,12 +38,12 @@ import{r as c}from"./vendor-react-BXzpOyCS.js";/**
38
38
  *
39
39
  * This source code is licensed under the ISC license.
40
40
  * See the LICENSE file in the root directory of this source tree.
41
- */const f=a("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);/**
41
+ */const w=a("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);/**
42
42
  * @license lucide-react v0.468.0 - ISC
43
43
  *
44
44
  * This source code is licensed under the ISC license.
45
45
  * See the LICENSE file in the root directory of this source tree.
46
- */const w=a("Ban",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]]);/**
46
+ */const f=a("Ban",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]]);/**
47
47
  * @license lucide-react v0.468.0 - ISC
48
48
  *
49
49
  * This source code is licensed under the ISC license.
@@ -133,32 +133,32 @@ import{r as c}from"./vendor-react-BXzpOyCS.js";/**
133
133
  *
134
134
  * This source code is licensed under the ISC license.
135
135
  * See the LICENSE file in the root directory of this source tree.
136
- */const O=a("CirclePause",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]]);/**
136
+ */const I=a("CirclePause",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"10",x2:"10",y1:"15",y2:"9",key:"c1nkhi"}],["line",{x1:"14",x2:"14",y1:"15",y2:"9",key:"h65svq"}]]);/**
137
137
  * @license lucide-react v0.468.0 - ISC
138
138
  *
139
139
  * This source code is licensed under the ISC license.
140
140
  * See the LICENSE file in the root directory of this source tree.
141
- */const I=a("CirclePlay",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polygon",{points:"10 8 16 12 10 16 10 8",key:"1cimsy"}]]);/**
141
+ */const O=a("CirclePlay",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polygon",{points:"10 8 16 12 10 16 10 8",key:"1cimsy"}]]);/**
142
142
  * @license lucide-react v0.468.0 - ISC
143
143
  *
144
144
  * This source code is licensed under the ISC license.
145
145
  * See the LICENSE file in the root directory of this source tree.
146
- */const W=a("CircleStop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]);/**
146
+ */const E=a("CircleStop",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",key:"1ssd4o"}]]);/**
147
147
  * @license lucide-react v0.468.0 - ISC
148
148
  *
149
149
  * This source code is licensed under the ISC license.
150
150
  * See the LICENSE file in the root directory of this source tree.
151
- */const E=a("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/**
151
+ */const D=a("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/**
152
152
  * @license lucide-react v0.468.0 - ISC
153
153
  *
154
154
  * This source code is licensed under the ISC license.
155
155
  * See the LICENSE file in the root directory of this source tree.
156
- */const D=a("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/**
156
+ */const N=a("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/**
157
157
  * @license lucide-react v0.468.0 - ISC
158
158
  *
159
159
  * This source code is licensed under the ISC license.
160
160
  * See the LICENSE file in the root directory of this source tree.
161
- */const N=a("Clipboard",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]]);/**
161
+ */const W=a("Clipboard",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]]);/**
162
162
  * @license lucide-react v0.468.0 - ISC
163
163
  *
164
164
  * This source code is licensed under the ISC license.
@@ -308,12 +308,12 @@ import{r as c}from"./vendor-react-BXzpOyCS.js";/**
308
308
  *
309
309
  * This source code is licensed under the ISC license.
310
310
  * See the LICENSE file in the root directory of this source tree.
311
- */const f1=a("House",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);/**
311
+ */const w1=a("House",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);/**
312
312
  * @license lucide-react v0.468.0 - ISC
313
313
  *
314
314
  * This source code is licensed under the ISC license.
315
315
  * See the LICENSE file in the root directory of this source tree.
316
- */const w1=a("IdCard",[["path",{d:"M16 10h2",key:"8sgtl7"}],["path",{d:"M16 14h2",key:"epxaof"}],["path",{d:"M6.17 15a3 3 0 0 1 5.66 0",key:"n6f512"}],["circle",{cx:"9",cy:"11",r:"2",key:"yxgjnd"}],["rect",{x:"2",y:"5",width:"20",height:"14",rx:"2",key:"qneu4z"}]]);/**
316
+ */const f1=a("IdCard",[["path",{d:"M16 10h2",key:"8sgtl7"}],["path",{d:"M16 14h2",key:"epxaof"}],["path",{d:"M6.17 15a3 3 0 0 1 5.66 0",key:"n6f512"}],["circle",{cx:"9",cy:"11",r:"2",key:"yxgjnd"}],["rect",{x:"2",y:"5",width:"20",height:"14",rx:"2",key:"qneu4z"}]]);/**
317
317
  * @license lucide-react v0.468.0 - ISC
318
318
  *
319
319
  * This source code is licensed under the ISC license.
@@ -403,32 +403,32 @@ import{r as c}from"./vendor-react-BXzpOyCS.js";/**
403
403
  *
404
404
  * This source code is licensed under the ISC license.
405
405
  * See the LICENSE file in the root directory of this source tree.
406
- */const O1=a("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/**
406
+ */const I1=a("Mail",[["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}]]);/**
407
407
  * @license lucide-react v0.468.0 - ISC
408
408
  *
409
409
  * This source code is licensed under the ISC license.
410
410
  * See the LICENSE file in the root directory of this source tree.
411
- */const I1=a("Maximize2",[["polyline",{points:"15 3 21 3 21 9",key:"mznyad"}],["polyline",{points:"9 21 3 21 3 15",key:"1avn1i"}],["line",{x1:"21",x2:"14",y1:"3",y2:"10",key:"ota7mn"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/**
411
+ */const O1=a("Maximize2",[["polyline",{points:"15 3 21 3 21 9",key:"mznyad"}],["polyline",{points:"9 21 3 21 3 15",key:"1avn1i"}],["line",{x1:"21",x2:"14",y1:"3",y2:"10",key:"ota7mn"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/**
412
412
  * @license lucide-react v0.468.0 - ISC
413
413
  *
414
414
  * This source code is licensed under the ISC license.
415
415
  * See the LICENSE file in the root directory of this source tree.
416
- */const W1=a("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/**
416
+ */const E1=a("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/**
417
417
  * @license lucide-react v0.468.0 - ISC
418
418
  *
419
419
  * This source code is licensed under the ISC license.
420
420
  * See the LICENSE file in the root directory of this source tree.
421
- */const E1=a("Minimize2",[["polyline",{points:"4 14 10 14 10 20",key:"11kfnr"}],["polyline",{points:"20 10 14 10 14 4",key:"rlmsce"}],["line",{x1:"14",x2:"21",y1:"10",y2:"3",key:"o5lafz"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/**
421
+ */const D1=a("Minimize2",[["polyline",{points:"4 14 10 14 10 20",key:"11kfnr"}],["polyline",{points:"20 10 14 10 14 4",key:"rlmsce"}],["line",{x1:"14",x2:"21",y1:"10",y2:"3",key:"o5lafz"}],["line",{x1:"3",x2:"10",y1:"21",y2:"14",key:"1atl0r"}]]);/**
422
422
  * @license lucide-react v0.468.0 - ISC
423
423
  *
424
424
  * This source code is licensed under the ISC license.
425
425
  * See the LICENSE file in the root directory of this source tree.
426
- */const D1=a("Minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);/**
426
+ */const N1=a("Minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);/**
427
427
  * @license lucide-react v0.468.0 - ISC
428
428
  *
429
429
  * This source code is licensed under the ISC license.
430
430
  * See the LICENSE file in the root directory of this source tree.
431
- */const N1=a("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"}]]);/**
431
+ */const W1=a("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"}]]);/**
432
432
  * @license lucide-react v0.468.0 - ISC
433
433
  *
434
434
  * This source code is licensed under the ISC license.
@@ -578,12 +578,12 @@ import{r as c}from"./vendor-react-BXzpOyCS.js";/**
578
578
  *
579
579
  * This source code is licensed under the ISC license.
580
580
  * See the LICENSE file in the root directory of this source tree.
581
- */const f2=a("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);/**
581
+ */const w2=a("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);/**
582
582
  * @license lucide-react v0.468.0 - ISC
583
583
  *
584
584
  * This source code is licensed under the ISC license.
585
585
  * See the LICENSE file in the root directory of this source tree.
586
- */const w2=a("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"}]]);/**
586
+ */const f2=a("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"}]]);/**
587
587
  * @license lucide-react v0.468.0 - ISC
588
588
  *
589
589
  * This source code is licensed under the ISC license.
@@ -663,29 +663,19 @@ import{r as c}from"./vendor-react-BXzpOyCS.js";/**
663
663
  *
664
664
  * This source code is licensed under the ISC license.
665
665
  * See the LICENSE file in the root directory of this source tree.
666
- */const U2=a("WifiOff",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/**
666
+ */const U2=a("WrapText",[["line",{x1:"3",x2:"21",y1:"6",y2:"6",key:"4m8b97"}],["path",{d:"M3 12h15a3 3 0 1 1 0 6h-4",key:"1cl7v7"}],["polyline",{points:"16 16 14 18 16 20",key:"1jznyi"}],["line",{x1:"3",x2:"10",y1:"18",y2:"18",key:"1h33wv"}]]);/**
667
667
  * @license lucide-react v0.468.0 - ISC
668
668
  *
669
669
  * This source code is licensed under the ISC license.
670
670
  * See the LICENSE file in the root directory of this source tree.
671
- */const Z2=a("Wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);/**
671
+ */const Z2=a("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);/**
672
672
  * @license lucide-react v0.468.0 - ISC
673
673
  *
674
674
  * This source code is licensed under the ISC license.
675
675
  * See the LICENSE file in the root directory of this source tree.
676
- */const O2=a("WrapText",[["line",{x1:"3",x2:"21",y1:"6",y2:"6",key:"4m8b97"}],["path",{d:"M3 12h15a3 3 0 1 1 0 6h-4",key:"1cl7v7"}],["polyline",{points:"16 16 14 18 16 20",key:"1jznyi"}],["line",{x1:"3",x2:"10",y1:"18",y2:"18",key:"1h33wv"}]]);/**
676
+ */const I2=a("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/**
677
677
  * @license lucide-react v0.468.0 - ISC
678
678
  *
679
679
  * This source code is licensed under the ISC license.
680
680
  * See the LICENSE file in the root directory of this source tree.
681
- */const I2=a("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);/**
682
- * @license lucide-react v0.468.0 - ISC
683
- *
684
- * This source code is licensed under the ISC license.
685
- * See the LICENSE file in the root directory of this source tree.
686
- */const W2=a("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/**
687
- * @license lucide-react v0.468.0 - ISC
688
- *
689
- * This source code is licensed under the ISC license.
690
- * See the LICENSE file in the root directory of this source tree.
691
- */const E2=a("Youtube",[["path",{d:"M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17",key:"1q2vi4"}],["path",{d:"m10 15 5-3-5-3z",key:"1jp15x"}]]);export{h1 as $,P1 as A,q as B,a1 as C,U2 as D,K as E,r1 as F,x1 as G,u1 as H,z1 as I,V2 as J,q1 as K,j1 as L,D1 as M,F as N,b1 as O,e2 as P,z as Q,d2 as R,u2 as S,j2 as T,P2 as U,R2 as V,Z2 as W,W2 as X,M1 as Y,s1 as Z,z2 as _,m2 as a,A2 as a$,B2 as a0,H as a1,J1 as a2,O2 as a3,Q as a4,K1 as a5,I1 as a6,E1 as a7,a2 as a8,L as a9,i2 as aA,p1 as aB,n2 as aC,Z as aD,v1 as aE,Z1 as aF,f1 as aG,b as aH,G1 as aI,r2 as aJ,W1 as aK,I as aL,W as aM,O as aN,l1 as aO,G as aP,k2 as aQ,U as aR,e1 as aS,O1 as aT,B1 as aU,k1 as aV,$1 as aW,A1 as aX,C2 as aY,S1 as aZ,u as a_,D as aa,Q1 as ab,c1 as ac,v2 as ad,q2 as ae,v as af,g as ag,X1 as ah,E as ai,j as aj,M2 as ak,y1 as al,L1 as am,o2 as an,V1 as ao,$ as ap,_1 as aq,T as ar,i1 as as,X as at,F2 as au,f as av,b2 as aw,L2 as ax,c2 as ay,H2 as az,C1 as b,E2 as b0,w2 as b1,A as b2,w1 as b3,T2 as b4,p2 as b5,l2 as b6,t1 as b7,d1 as b8,m1 as b9,C as ba,U1 as bb,F1 as bc,Y1 as bd,I2 as be,S2 as bf,g2 as c,t2 as d,h2 as e,x2 as f,f2 as g,y2 as h,_ as i,T1 as j,R1 as k,N1 as l,H1 as m,R as n,B as o,n1 as p,o1 as q,w as r,P as s,S as t,N as u,J as v,Y as w,V as x,g1 as y,s2 as z};
681
+ */const O2=a("Youtube",[["path",{d:"M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17",key:"1q2vi4"}],["path",{d:"m10 15 5-3-5-3z",key:"1jp15x"}]]);export{Q as $,b1 as A,q as B,a1 as C,V2 as D,z as E,r1 as F,x1 as G,u1 as H,z1 as I,M1 as J,q1 as K,j1 as L,N1 as M,s1 as N,z2 as O,e2 as P,h1 as Q,d2 as R,u2 as S,j2 as T,P2 as U,R2 as V,B2 as W,I2 as X,H as Y,J1 as Z,U2 as _,m2 as a,f2 as a$,K1 as a0,O1 as a1,D1 as a2,a2 as a3,L as a4,N as a5,Q1 as a6,c1 as a7,v2 as a8,q2 as a9,n2 as aA,Z as aB,v1 as aC,Z1 as aD,w1 as aE,b as aF,G1 as aG,r2 as aH,E1 as aI,O as aJ,E as aK,I as aL,l1 as aM,G as aN,k2 as aO,U as aP,e1 as aQ,I1 as aR,B1 as aS,k1 as aT,$1 as aU,A1 as aV,C2 as aW,S1 as aX,u as aY,A2 as aZ,O2 as a_,v as aa,g as ab,X1 as ac,F as ad,D as ae,j as af,M2 as ag,y1 as ah,L1 as ai,o2 as aj,V1 as ak,$ as al,_1 as am,P1 as an,T as ao,i1 as ap,X as aq,K as ar,F2 as as,w as at,b2 as au,L2 as av,c2 as aw,H2 as ax,i2 as ay,p1 as az,C1 as b,A as b0,f1 as b1,T2 as b2,p2 as b3,l2 as b4,t1 as b5,d1 as b6,m1 as b7,C as b8,U1 as b9,F1 as ba,Y1 as bb,Z2 as bc,S2 as bd,g2 as c,t2 as d,h2 as e,x2 as f,w2 as g,y2 as h,_ as i,T1 as j,R1 as k,W1 as l,H1 as m,R as n,B as o,n1 as p,o1 as q,f as r,P as s,S as t,W as u,J as v,Y as w,V as x,g1 as y,s2 as z};
@@ -7,11 +7,11 @@
7
7
  name="description"
8
8
  content="MindExec React is a fast AI execution canvas for solo builders, notes, assets, and task graphs."
9
9
  />
10
- <meta name="build-version" content="auth-google-account-restore-2026-06-27" />
10
+ <meta name="build-version" content="ai-flow-language-status-hidden-2026-06-27" />
11
11
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
12
12
  <link rel="manifest" href="/manifest.webmanifest" />
13
13
  <title>MindExec React</title>
14
- <script type="module" crossorigin src="/assets/index-DLbrmSV7.js"></script>
14
+ <script type="module" crossorigin src="/assets/index-De6zm3_M.js"></script>
15
15
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BXzpOyCS.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/app-runtime-xD2Z3NdN.js">
17
17
  <link rel="stylesheet" crossorigin href="/assets/index-yNpEK-gp.css">
@@ -1 +0,0 @@
1
- import{r,j as e}from"./vendor-react-BXzpOyCS.js";import{g as C,a as b,s as q,b as K,p as U,c as R,d as G}from"./index-DLbrmSV7.js";import{p as L,P as F}from"./pricingCheckoutShell-O-DnwmbU.js";import{r as O}from"./productionAdapterConfig-C5jfk6oG.js";import{R as w}from"./app-runtime-xD2Z3NdN.js";import{syncSupabaseAuthSessionToLocalBridge as T,loadSupabaseAuthSession as _,loadSupabaseAuthSessionFromLocalBridge as D,buildSupabaseAuthRedirectUrl as I,startSupabaseGoogleOAuth as H,signOutSupabaseAuthSession as Y,requestSupabasePasswordReset as V,updateSupabasePassword as W}from"./supabaseAuthAdapter-D79LnMqE.js";import{X,ao as J,ag as Q,aT as z,N as $,f as Z,aU as k,K as B,aV as ee,ac as te}from"./vendor-icons-678PAT8P.js";import"./canvas-runtime-D2W6Dpfc.js";function se(o){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(o.trim())}function S(){return O(b())}function N(o,a,c=!1){return o.source==="supabase-provider-session"?a?`Google sign-in is active for ${o.email}. Return to pricing to continue checkout.`:`Google sign-in is active for ${o.email}.`:c?a?"A local auth shell exists, but secure Google sign-in is required before checkout can continue.":"A local auth shell exists, but secure Google sign-in is required before MindCanvas can sync remote services.":a?"A local Google auth shell is active. Return to pricing to continue checkout.":"A local Google auth shell is already active for this browser."}function M(o,a){return a?`Local Google auth shell ready for ${o}. Return to pricing to continue the gated checkout.`:`Local Google auth shell ready for ${o}. Secure Supabase OAuth can replace this adapter later.`}function de({navigate:o}){const[a,c]=r.useState(!1),[t,h]=r.useState(()=>C()),[i]=r.useState(()=>L()),l=r.useMemo(()=>S(),[]),[x,u]=r.useState(()=>{const s=C(),n=L();return s?N(s,!!n,S().auth.canAttempt):n?"Sign in to continue MindCanvas Pro checkout. Payment remains gated until the secure adapter is connected.":"Use your Google account to sync cloud projects. No password to create or remember."});r.useEffect(()=>{if((t==null?void 0:t.source)==="supabase-provider-session"||!l.auth.canAttempt)return;let s=!1;return(async()=>{try{let d=await _(b());if(d.session||(d=await D(b(),"login-local-bridge-session-restore")),s||!d.session)return;const E=q({...d.session,source:"supabase-provider-session"});h(E),u(N(E,!!i,l.auth.canAttempt))}catch(d){w.emit("auth.supabase.sessionRestore.uiFailed",{message:d instanceof Error?d.message:String(d)})}})(),()=>{s=!0}},[i,l.auth.canAttempt,t==null?void 0:t.source]),r.useEffect(()=>{(t==null?void 0:t.source)!=="supabase-provider-session"||!l.auth.canAttempt||T(b(),"login-existing-session")},[l.auth.canAttempt,t==null?void 0:t.email,t==null?void 0:t.source]);const m=()=>{const s=C();if(s)return h(s),u(N(s,!!i,l.auth.canAttempt)),s;const n=G();return h(n),u(M(n.email,!!i)),n},g=async()=>{const s=m();s.source==="supabase-provider-session"&&await T(b(),"login-continue");const n={hasCheckoutIntent:!!i,signedIn:!!s,sessionSource:s.source};i?w.emit("auth.returnToPricing",n):w.emit("auth.continueMindCanvas",n),o(i?"/pricing":"/mindcanvas")},f=()=>{const s=G();h(s),u(M(s.email,!!i)),c(!1),window.setTimeout(()=>{g()},240)},p=async()=>{c(!0);const s=await U();if(O(s).auth.canAttempt)try{const d=I("/login",i?"/pricing":"/mindcanvas");u("Opening secure Google sign-in..."),(t==null?void 0:t.source)!=="supabase-provider-session"&&(R(),h(null)),await H(s,d);return}catch(d){u(`Secure Google sign-in failed: ${d instanceof Error?d.message:String(d)}`),c(!1);return}window.setTimeout(()=>{f()},550)},j=!!(t&&(!l.auth.canAttempt||t.source==="supabase-provider-session")),y=j?i?"Continue checkout":"Continue to MindCanvas":a?"Opening Google...":"Continue with Google",v=j?g:p,A=async()=>{c(!0),u("Signing out...");let s="";try{await Y(b(),"login-sign-out")}catch(n){s=n instanceof Error?n.message:String(n),w.emit("auth.signOut.uiFailed",{message:s})}R(),h(null),u(s?`Signed out locally. Provider sign-out warning: ${s}`:i?"Signed out. Choose another Google account to continue checkout.":"Signed out. Choose another Google account to continue."),c(!1)};return e.jsxs(P,{page:"login",children:[e.jsx("button",{className:"auth-close",type:"button",title:"Close",onClick:()=>o("/mindcanvas"),"data-testid":"auth-close",children:e.jsx(X,{size:16})}),e.jsxs("div",{className:"auth-logo",children:[e.jsx(J,{size:24}),e.jsx("strong",{children:"MindExec"})]}),e.jsx("h1",{children:"Sign in with Google"}),e.jsx("p",{"data-testid":"auth-message",children:x}),e.jsxs("button",{className:"google-button",type:"button",disabled:a,onClick:v,"data-testid":"auth-google-shell",children:[e.jsx("span",{className:"google-g",children:"G"}),y]}),e.jsxs("div",{className:"auth-action-strip",children:[t&&i&&e.jsx("button",{type:"button",onClick:()=>void g(),"data-testid":"auth-return-pricing",children:"Return to pricing"}),t&&e.jsx("button",{type:"button",disabled:a,onClick:()=>void A(),"data-testid":"auth-sign-out",children:"Sign out"}),e.jsx("button",{type:"button",onClick:()=>o("/forgot-password"),"data-testid":"auth-forgot-password",children:"Forgot password"}),e.jsx("button",{type:"button",onClick:()=>o("/pricing"),"data-testid":"auth-view-pricing",children:"View pricing"})]}),e.jsx("p",{className:"auth-note",children:l.auth.canAttempt?"Secure Supabase OAuth is connected for this browser build.":"The React port keeps this as a local auth shell until the secure Supabase OAuth adapter is connected."})]})}function he({navigate:o}){const[a,c]=r.useState(""),[t,h]=r.useState(!1),[i,l]=r.useState(""),[x,u]=r.useState(!1),m=r.useMemo(()=>S(),[]),g=async f=>{if(f.preventDefault(),!se(a)){l("Enter a valid email address.");return}if(h(!0),l(""),m.passwordReset.canAttempt){try{const p=I("/reset-password","/login");await V(b(),a,p),u(!0),h(!1),w.emit("auth.reset.requested",{emailDomain:a.split("@")[1]||"",provider:"supabase"})}catch(p){l(p instanceof Error?p.message:String(p)),h(!1)}return}window.setTimeout(()=>{u(!0),h(!1),w.emit("auth.reset.requested",{emailDomain:a.split("@")[1]||""})},450)};return e.jsxs(P,{page:"forgot-password",children:[e.jsxs("button",{className:"auth-back",type:"button",onClick:()=>o("/login"),"data-testid":"forgot-back-login",children:[e.jsx(Q,{size:16}),"Sign in"]}),e.jsx("div",{className:"auth-mark auth-mark--amber",children:e.jsx(z,{size:28})}),e.jsx("h1",{children:"Forgot password?"}),e.jsx("p",{children:"No worries. Enter your email and the React auth shell will walk through the reset flow."}),i&&e.jsx("div",{className:"auth-inline-error","data-testid":"forgot-error",children:i}),x?e.jsxs("div",{className:"auth-success-panel","data-testid":"forgot-success",children:[e.jsx($,{size:32}),e.jsx("strong",{children:"Check your email"}),e.jsxs("span",{children:["Reset instructions were prepared for ",a,"."]}),e.jsx("button",{className:"btn btn-primary",type:"button",onClick:()=>o("/reset-password"),"data-testid":"forgot-continue-reset",children:"Continue to reset"})]}):e.jsxs("form",{className:"auth-form",onSubmit:g,"data-testid":"forgot-password-form",children:[e.jsxs("label",{children:[e.jsx("span",{children:"Email Address"}),e.jsxs("div",{className:"auth-input-wrap",children:[e.jsx(z,{size:18}),e.jsx("input",{value:a,onChange:f=>c(f.target.value),type:"email",placeholder:"you@example.com","data-testid":"forgot-email"})]})]}),e.jsxs("button",{className:"btn btn-primary auth-submit",type:"submit",disabled:t,"data-testid":"forgot-submit",children:[e.jsx(Z,{size:16}),t?"Sending...":"Send Reset Link"]})]})]})}function pe({navigate:o}){const[a,c]=r.useState(""),[t,h]=r.useState(""),[i,l]=r.useState(!1),[x,u]=r.useState(!1),[m,g]=r.useState(!1),[f,p]=r.useState(""),j=r.useMemo(()=>S(),[]),y=r.useMemo(()=>a.length>=6&&a===t,[t,a]),v=t.length>0&&t!==a,A=async s=>{if(s.preventDefault(),a.length<6){p("Password must be at least 6 characters.");return}if(a!==t){p("Passwords do not match.");return}if(u(!0),p(""),j.passwordReset.canAttempt){try{await W(b(),a),g(!0),u(!1),w.emit("auth.password.updated",{provider:"supabase"})}catch(n){p(n instanceof Error?n.message:String(n)),u(!1)}return}window.setTimeout(()=>{g(!0),u(!1),w.emit("auth.password.updated",{localShell:!0})},520)};return e.jsxs(P,{page:"reset-password",children:[e.jsx("div",{className:`auth-mark ${m?"auth-mark--success":""}`,children:m?e.jsx($,{size:30}):e.jsx(k,{size:30})}),e.jsx("h1",{children:m?"Password reset!":"Reset password"}),e.jsx("p",{"data-testid":"reset-message",children:m?"Your local auth shell accepted the new password state.":"Enter a new password and confirm it below."}),f&&e.jsx("div",{className:"auth-inline-error","data-testid":"reset-error",children:f}),m?e.jsxs("button",{className:"btn btn-primary auth-submit",type:"button",onClick:()=>o("/login"),"data-testid":"reset-login",children:[e.jsx(B,{size:16}),"Sign In"]}):e.jsxs("form",{className:"auth-form",onSubmit:A,"data-testid":"reset-password-form",children:[e.jsxs("label",{children:[e.jsx("span",{children:"New Password"}),e.jsxs("div",{className:"auth-input-wrap",children:[e.jsx(k,{size:18}),e.jsx("input",{value:a,onChange:s=>c(s.target.value),type:i?"text":"password",placeholder:"Enter new password","data-testid":"reset-password-input"}),e.jsx("button",{type:"button",className:"auth-icon-button",title:"Toggle password visibility",onClick:()=>l(s=>!s),"data-testid":"reset-toggle-visibility",children:i?e.jsx(ee,{size:17}):e.jsx(te,{size:17})})]}),e.jsx("span",{className:`auth-requirement ${a.length>=6?"is-met":""}`,children:"At least 6 characters"})]}),e.jsxs("label",{children:[e.jsx("span",{children:"Confirm Password"}),e.jsxs("div",{className:"auth-input-wrap",children:[e.jsx(k,{size:18}),e.jsx("input",{value:t,onChange:s=>h(s.target.value),type:"password",placeholder:"Confirm new password","data-testid":"reset-confirm-input"})]}),t&&e.jsx("span",{className:`auth-requirement ${v?"is-error":"is-met"}`,children:v?"Passwords do not match":"Passwords match"})]}),e.jsxs("button",{className:"btn btn-primary auth-submit",type:"submit",disabled:!y||x,"data-testid":"reset-submit",children:[e.jsx(B,{size:16}),x?"Updating...":"Update Password"]})]})]})}function P({children:o,page:a}){const c=S();return e.jsxs("div",{className:"auth-page","data-testid":"auth-shell","data-auth-page":a,"data-auth-storage-key":K,"data-pricing-checkout-intent-key":F,"data-production-adapter-state":c.overallState,"data-auth-provider-mode":c.auth.mode,"data-auth-provider-ready":c.auth.canAttempt?"true":"false","data-client-secret-blocked":c.forbiddenClientSecretKeys.length>0?"true":"false",children:[e.jsx("div",{className:"auth-scrim"}),e.jsx("section",{className:"auth-card",children:o})]})}export{he as ForgotPasswordPage,de as LoginPage,pe as ResetPasswordPage};