PageSourceSearch

https://www.echoo.ai/assets/index-CQi3APS0.js

js echoo.ai collected 2026-10-05 13:09:15 UTC 180,651 bytes, 184 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Landing-DNUuJzfF.js","assets/framer-motion-0Sy5Nd0g.js","assets/vendor-C97i8dbC.js","assets/NotFound-C5CBFZVF.js","assets/arrow-left-P3ctArOZ.js","assets/Blog-DA5W0gQP.js","assets/BlogCard-DpBCrAQ7.js","assets/blog-posts-mR1fJk3M.js","assets/BlogPost-CVrfly0o.js","assets/commands-D2fNPqtf.js","assets/file-text-CYA8dt6R.js","assets/mail-CgBmHSO6.js","assets/BlogCategory-Cy0eA-OF.js","assets/BlogTag-CdowE0N5.js","assets/Legal-BrToZDrk.js","assets/terminal-BHk7OMtW.js","assets/About-BWtKbjIF.js","assets/Contact-B0TBJPmh.js","assets/Docs-BcQqnSOp.js","assets/Pricing-C6BVlKxO.js","assets/BusinessConfigurator-DVGFBjMm.js","assets/Business-SlEkIDfu.js","assets/Pay-BICcz64k.js","assets/MarketplacePage-Cb9GsXel.js","assets/CategoryNav-Dg_ftVmk.js","assets/use-command-downloads-BNGUaKGi.js","assets/CommandDetailsPage-AUaCzKZh.js","assets/UseCasePage-CZF-53YY.js","assets/use-cases-xsn3kPdZ.js","assets/comparisons-Bf4J0M9I.js","assets/integrations-DYxJqM10.js","assets/personas-CXNdUHBe.js","assets/ComparePage-BnlcCfdp.js","assets/alternatives-dsD_kgqS.js","assets/AlternativePage-C6ezPqxF.js","assets/IntegrationPage-DjUF6yPX.js","assets/PersonaPage-X08OGev-.js","assets/GlossaryPage-BTqtYwCR.js","assets/glossary-CdK7zao0.js","assets/BestToolsPage-Dfs8oDJv.js","assets/best-tools-Bj3hSGsi.js","assets/MarketplaceCategory-DsqQj9SP.js","assets/UseCasesHub-BGB72WYr.js","assets/CompareHub-B2Pek1v_.js","assets/IntegrationsHub-DkgrHfZR.js","assets/PersonaHub-BnLTazul.js","assets/AlternativeHub-Bzn8lSUR.js","assets/GlossaryHub-DkIXjDBs.js","assets/TranslationsHub-BcwZRM6j.js","assets/translations-CAVCI09R.js","assets/TranslationPage-D1GoZ_1m.js","assets/HowToHub-CG6zTcBQ.js","assets/how-to-combos-BZGXw8AV.js","assets/HowToPage-f1oHjP83.js","assets/WorkflowsHub-DfDvqLoi.js","assets/workflows-DxJhEL2w.js","assets/WorkflowPage-SuqF-yRO.js"])))=>i.map(i=>d[i]);
2var ar=Object.defineProperty;var sr=(e,o,n)=>o in e?ar(e,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[o]=n;var oe=(e,o,n)=>sr(e,typeof o!="symbol"?o+"":o,n);import{g as kt,r as m,a as f,j as t,u as ir,A as ho,m as Ee,b as lr,M as cr,L as dr,d as ur}from"./framer-motion-0Sy5Nd0g.js";import{r as po,v as mr,u as Et,L as ae,B as hr,R as pr,a as v}from"./vendor-C97i8dbC.js";(function(){const o=document.createElement("link").relList;if(o&&o.supports&&o.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const l of s.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(a){if(a.ep)return;a.ep=!0;const s=n(a);fetch(a.href,s)}})();var fo,Ft=po;fo=Ft.createRoot,Ft.hydrateRoot;var fr=typeof Element<"u",gr=typeof Map=="function",yr=typeof Set=="function",xr=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Xe(e,o){if(e===o)return!0;if(e&&o&&typeof e=="object"&&typeof o=="object"){if(e.constructor!==o.constructor)return!1;var n,r,a;if(Array.isArray(e)){if(n=e.length,n!=o.length)return!1;for(r=n;r--!==0;)if(!Xe(e[r],o[r]))return!1;return!0}var s;if(gr&&e instanceof Map&&o instanceof Map){if(e.size!==o.size)return!1;for(s=e.entries();!(r=s.next()).done;)if(!o.has(r.value[0]))return!1;for(s=e.entries();!(r=s.next()).done;)if(!Xe(r.value[1],o.get(r.value[0])))return!1;return!0}if(yr&&e instanceof Set&&o instanceof Set){if(e.size!==o.size)return!1;for(s=e.entries();!(r=s.next()).done;)if(!o.has(r.value[0]))return!1;return!0}if(xr&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(o)){if(n=e.length,n!=o.length)return!1;for(r=n;r--!==0;)if(e[r]!==o[r])return!1;return!0}if(e.constructor===RegExp)return e.source===o.source&&e.flags===o.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof o.valueOf=="function")return e.valueOf()===o.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof o.toString=="function")return e.toString()===o.toString();if(a=Object.keys(e),n=a.length,n!==Object.keys(o).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(o,a[r]))return!1;if(fr&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((a[r]==="_owner"||a[r]==="__v"||a[r]==="__o")&&e.$$typeof)&&!Xe(e[a[r]],o[a[r]]))return!1;return!0}return e!==e&&o!==o}var br=function(o,n){try{return Xe(o,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};const vr=kt(br);var wr=function(e,o,n,r,a,s,l,i){if(!e){var d;if(o===void 0)d=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,s,l,i],h=0;d=new Error(o.replace(/%s/g,function(){return u[h++]})),d.name="Invariant Violation"}throw d.framesToPop=1,d}},jr=wr;const $t=kt(jr);var kr=function(o,n,r,a){var s=r?r.call(a,o,n):void 0;if(s!==void 0)return!!s;
2if(o===n)return!0;if(typeof o!="object"||!o||typeof n!="object"||!n)return!1;var l=Object.keys(o),i=Object.keys(n);if(l.length!==i.length)return!1;for(var d=Object.prototype.hasOwnProperty.bind(n),u=0;u<l.length;u++){var h=l[u];if(!d(h))return!1;var p=o[h],g=n[h];if(s=r?r.call(a,p,g,h):void 0,s===!1||s===void 0&&p!==g)return!1}return!0};const Er=kt(kr);var go=(e=>(e.BASE="base",e.BODY="body",e.HEAD="head",e.HTML="html",e.LINK="link",e.META="meta",e.NOSCRIPT="noscript",e.SCRIPT="script",e.STYLE="style",e.TITLE="title",e.FRAGMENT="Symbol(react.fragment)",e))(go||{}),st={link:{rel:["amphtml","canonical","alternate"]},script:{type:["application/ld+json"]},meta:{charset:"",name:["generator","robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]}},Vt=Object.values(go),Tt={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},Tr=Object.entries(Tt).reduce((e,[o,n])=>(e[n]=o,e),{}),ne="data-rh",_e={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate",PRIORITIZE_SEO_TAGS:"prioritizeSeoTags"},Me=(e,o)=>{for(let n=e.length-1;n>=0;n-=1){const r=e[n];if(Object.prototype.hasOwnProperty.call(r,o))return r[o]}return null},Ar=e=>{let o=Me(e,"title");const n=Me(e,_e.TITLE_TEMPLATE);if(Array.isArray(o)&&(o=o.join("")),n&&o)return n.replace(/%s/g,()=>o);const r=Me(e,_e.DEFAULT_TITLE);return o||r||void 0},Nr=e=>Me(e,_e.ON_CHANGE_CLIENT_STATE)||(()=>{}),it=(e,o)=>o.filter(n=>typeof n[e]<"u").map(n=>n[e]).reduce((n,r)=>({...n,...r}),{}),Cr=(e,o)=>o.filter(n=>typeof n.base<"u").map(n=>n.base).reverse().reduce((n,r)=>{if(!n.length){const a=Object.keys(r);for(let s=0;s<a.length;s+=1){const i=a[s].toLowerCase();if(e.indexOf(i)!==-1&&r[i])return n.concat(r)}}return n},[]),Sr=e=>console&&typeof console.warn=="function"&&console.warn(e),ze=(e,o,n)=>{const r={};return n.filter(a=>Array.isArray(a[e])?!0:(typeof a[e]<"u"&&Sr(`Helmet: ${e} should be of type "Array". Instead found type "${typeof a[e]}"`),!1)).map(a=>a[e]).reverse().reduce((a,s)=>{const l={};s.filter(d=>{let u;const h=Object.keys(d);for(let g=0;g<h.length;g+=1){const c=h[g],j=c.toLowerCase();o.indexOf(j)!==-1&&!(u==="rel"&&d[u].toLowerCase()==="canonical")&&!(j==="rel"&&d[j].toLowerCase()==="stylesheet")&&(u=j),o.indexOf(c)!==-1&&(c==="innerHTML"||c==="cssText"||c==="itemprop")&&(u=c)}if(!u||!d[u])return!1;const p=d[u].toLowerCase();return r[u]||(r[u]={}),l[u]||(l[u]={}),r[u][p]?!1:(l[u][p]=!0,!0)}).reverse().forEach(d=>a.push(d));const i=Object.keys(l);for(let d=0;d<i.length;d+=1){const u=i[d],h={...r[u],...l[u]};r[u]=h}return a},[]).reverse()},_r=(e,o)=>{if(Array.isArray(e)&&e.length){for(let n=0;n<e.length;n+=1)if(e[n][o])return!0}return!1},Mr=e=>({baseTag:Cr(["href"],e),bodyAttributes:it("bodyAttributes",e),defer:Me(e,_e.DEFER),encode:Me(e,_e.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:it("htmlAttributes",e),linkTags:ze("link",["rel","href"],e),metaTags:ze("meta",["name","charset","http-equiv","property","itemprop"],e),noscriptTags:ze("noscript",["innerHTML"],e),onChangeClientState:Nr(e),scriptTags:ze("script",["src","innerHTML"],e),styleTags:ze("style",["cssText"],e),title:Ar(e),titleAttributes:it("titleAttributes",e),prioritizeSeoTags:_r(e,_e.PRIORITIZE_SEO_TAGS)}),yo=e=>Array.isArray(e)?e.join(""):e,Pr=(e,o)=>{const n=Object.keys(e);for(let r=0;r<n.length;r+=1)if(o[n[r]]&&o[n[r]].includes(e[n[r]]))return!0;return!1},lt=(e,o)=>Array.isArray(e)?e.reduce((n,r)=>(Pr(r,o)?n.priority.push(r):n.default.push(r),n),{priority:[],default:[]}):{default:e,priority:[]},Ht=(e,o)=>({...e,[o]:void 0}),Ir=["noscript","script","style"],ft=(e,o=!0)=>o===!1?String(e):String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;"),xo=e=>Object.keys(e).reduce((o,n)=>{const r=typeof e[n]<"u"?`${n}="${e[n]}"`:`${n}`;return o?`${o} ${r}`:r},""),Rr=(e,o,n,r)=>
2{const a=xo(n),s=yo(o);return a?`<${e} ${ne}="true" ${a}>${ft(s,r)}</${e}>`:`<${e} ${ne}="true">${ft(s,r)}</${e}>`},Or=(e,o,n=!0)=>o.reduce((r,a)=>{const s=a,l=Object.keys(s).filter(u=>!(u==="innerHTML"||u==="cssText")).reduce((u,h)=>{const p=typeof s[h]>"u"?h:`${h}="${ft(s[h],n)}"`;return u?`${u} ${p}`:p},""),i=s.innerHTML||s.cssText||"",d=Ir.indexOf(e)===-1;return`${r}<${e} ${ne}="true" ${l}${d?"/>":`>${i}</${e}>`}`},""),bo=(e,o={})=>Object.keys(e).reduce((n,r)=>{const a=Tt[r];return n[a||r]=e[r],n},o),Lr=(e,o,n)=>{const r={key:o,[ne]:!0},a=bo(n,r);return[f.createElement("title",a,o)]},Qe=(e,o)=>o.map((n,r)=>{const a={key:r,[ne]:!0};return Object.keys(n).forEach(s=>{const i=Tt[s]||s;if(i==="innerHTML"||i==="cssText"){const d=n.innerHTML||n.cssText;a.dangerouslySetInnerHTML={__html:d}}else a[i]=n[s]}),f.createElement(e,a)}),Q=(e,o,n=!0)=>{switch(e){case"title":return{toComponent:()=>Lr(e,o.title,o.titleAttributes),toString:()=>Rr(e,o.title,o.titleAttributes,n)};case"bodyAttributes":case"htmlAttributes":return{toComponent:()=>bo(o),toString:()=>xo(o)};default:return{toComponent:()=>Qe(e,o),toString:()=>Or(e,o,n)}}},zr=({metaTags:e,linkTags:o,scriptTags:n,encode:r})=>{const a=lt(e,st.meta),s=lt(o,st.link),l=lt(n,st.script);return{priorityMethods:{toComponent:()=>[...Qe("meta",a.priority),...Qe("link",s.priority),...Qe("script",l.priority)],toString:()=>`${Q("meta",a.priority,r)} ${Q("link",s.priority,r)} ${Q("script",l.priority,r)}`},metaTags:a.default,linkTags:s.default,scriptTags:l.default}},Dr=e=>{const{baseTag:o,bodyAttributes:n,encode:r=!0,htmlAttributes:a,noscriptTags:s,styleTags:l,title:i="",titleAttributes:d,prioritizeSeoTags:u}=e;let{linkTags:h,metaTags:p,scriptTags:g}=e,c={toComponent:()=>{},toString:()=>""};return u&&({priorityMethods:c,linkTags:h,metaTags:p,scriptTags:g}=zr(e)),{priority:c,base:Q("base",o,r),bodyAttributes:Q("bodyAttributes",n,r),htmlAttributes:Q("htmlAttributes",a,r),link:Q("link",h,r),meta:Q("meta",p,r),noscript:Q("noscript",s,r),script:Q("script",g,r),style:Q("style",l,r),title:Q("title",{title:i,titleAttributes:d},r)}},gt=Dr,Ge=[],vo=!!(typeof window<"u"&&window.document&&window.document.createElement),yt=class{constructor(e,o){oe(this,"instances",[]);oe(this,"canUseDOM",vo);oe(this,"context");oe(this,"value",{setHelmet:e=>{this.context.helmet=e},helmetInstances:{get:()=>this.canUseDOM?Ge:this.instances,add:e=>{(this.canUseDOM?Ge:this.instances).push(e)},remove:e=>{const o=(this.canUseDOM?Ge:this.instances).indexOf(e);(this.canUseDOM?Ge:this.instances).splice(o,1)}}});this.context=e,this.canUseDOM=o||!1,o||(e.helmet=gt({baseTag:[],bodyAttributes:{},htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))}},Br={},wo=f.createContext(Br),ke,jo=(ke=class extends m.Component{constructor(n){super(n);oe(this,"helmetData");this.helmetData=new yt(this.props.context||{},ke.canUseDOM)}render(){return f.createElement(wo.Provider,{value:this.helmetData.value},this.props.children)}},oe(ke,"canUseDOM",vo),ke),Se=(e,o)=>{const n=document.head||document.querySelector("head"),r=n.querySelectorAll(`${e}[${ne}]`),a=[].slice.call(r),s=[];let l;return o&&o.length&&o.forEach(i=>{const d=document.createElement(e);for(const u in i)if(Object.prototype.hasOwnProperty.call(i,u))if(u==="innerHTML")d.innerHTML=i.innerHTML;else if(u==="cssText")d.styleSheet?d.styleSheet.cssText=i.cssText:d.appendChild(document.createTextNode(i.cssText));else{const h=u,p=typeof i[h]>"u"?"":i[h];d.setAttribute(u,p)}d.setAttribute(ne,"true"),a.some((u,h)=>(l=h,d.isEqualNode(u)))?a.splice(l,1):s.push(d)}),a.forEach(i=>{var d;return(d=i.parentNode)==null?void 0:d.removeChild(i)}),s.forEach(i=>n.appendChild(i)),{oldTags:a,newTags:s}},xt=(e,o)=>{const n=document.getElementsByTagName(e)[0];if(!n)return;const r=n.getAttribute(ne),a=r?r.split(","):[],s=[...a],l=Object.keys(o);for(const i of l){const d=o[i]||"";n.getAttribute(i)!==d&&n.setAttribute(i,d),a.indexOf(i)===-1&&a.push(i);const u=s.indexOf(i);u!==-1&&s.splice(u,1)}for(let i=s.length-1;i>=0;i-=1)n.removeAttribute(s[i]);a.length===s.length?n.removeAttribute(ne):n.getAttribute(ne)!==l.join(",")&&n.setAttribute(ne,l.join(","))},Fr=(e,o)=>{typeof e<"u"&&document.title!==e&&(document.title=yo(e)),xt("title",o)},Ut=(e,o)=>{const{baseTag:n,bodyAttributes:r,htmlAttributes:a,linkTags:s,metaTags:l,noscriptTags:i,onChangeClientState:d,scriptTags:u,styleTags:h,title:p,titleAttributes:g}=e;xt("body",r),xt("html",a),Fr(p,g);const c={baseTag:Se("base",n),linkTags:Se("link",s),metaTags:Se("meta",l),noscriptTags:Se("noscript",i),scriptTags:Se("script",u),styleTags:Se("style",h)},j={},y={};
2Object.keys(c).forEach(x=>{const{newTags:E,oldTags:N}=c[x];E.length&&(j[x]=E),N.length&&(y[x]=c[x].oldTags)}),o&&o(),d(e,j,y)},De=null,$r=e=>{De&&cancelAnimationFrame(De),e.defer?De=requestAnimationFrame(()=>{Ut(e,()=>{De=null})}):(Ut(e),De=null)},Vr=$r,qt=class extends m.Component{constructor(){super(...arguments);oe(this,"rendered",!1)}shouldComponentUpdate(o){return!Er(o,this.props)}componentDidUpdate(){this.emitChange()}componentWillUnmount(){const{helmetInstances:o}=this.props.context;o.remove(this),this.emitChange()}emitChange(){const{helmetInstances:o,setHelmet:n}=this.props.context;let r=null;const a=Mr(o.get().map(s=>{const l={...s.props};return delete l.context,l}));jo.canUseDOM?Vr(a):gt&&(r=gt(a)),n(r)}init(){if(this.rendered)return;this.rendered=!0;const{helmetInstances:o}=this.props.context;o.add(this),this.emitChange()}render(){return this.init(),null}},pt,At=(pt=class extends m.Component{shouldComponentUpdate(e){return!vr(Ht(this.props,"helmetData"),Ht(e,"helmetData"))}mapNestedChildrenToProps(e,o){if(!o)return null;switch(e.type){case"script":case"noscript":return{innerHTML:o};case"style":return{cssText:o};default:throw new Error(`<${e.type} /> elements are self-closing and can not contain children. Refer to our API for more information.`)}}flattenArrayTypeChildren(e,o,n,r){return{...o,[e.type]:[...o[e.type]||[],{...n,...this.mapNestedChildrenToProps(e,r)}]}}mapObjectTypeChildren(e,o,n,r){switch(e.type){case"title":return{...o,[e.type]:r,titleAttributes:{...n}};case"body":return{...o,bodyAttributes:{...n}};case"html":return{...o,htmlAttributes:{...n}};default:return{...o,[e.type]:{...n}}}}mapArrayTypeChildrenToProps(e,o){let n={...o};return Object.keys(e).forEach(r=>{n={...n,[r]:e[r]}}),n}warnOnInvalidChildren(e,o){return $t(Vt.some(n=>e.type===n),typeof e.type=="function"?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":`Only elements types ${Vt.join(", ")} are allowed. Helmet does not support rendering <${e.type}> elements. Refer to our API for more information.`),$t(!o||typeof o=="string"||Array.isArray(o)&&!o.some(n=>typeof n!="string"),`Helmet expects a string as a child of <${e.type}>. Did you forget to wrap your children in braces? ( <${e.type}>{\`\`}</${e.type}> ) Refer to our API for more information.`),!0}mapChildrenToProps(e,o){let n={};return f.Children.forEach(e,r=>{if(!r||!r.props)return;const{children:a,...s}=r.props,l=Object.keys(s).reduce((d,u)=>(d[Tr[u]||u]=s[u],d),{});let{type:i}=r;
2switch(typeof i=="symbol"?i=i.toString():this.warnOnInvalidChildren(r,a),i){case"Symbol(react.fragment)":o=this.mapChildrenToProps(a,o);break;case"link":case"meta":case"noscript":case"script":case"style":n=this.flattenArrayTypeChildren(r,n,l,a);break;default:o=this.mapObjectTypeChildren(r,o,l,a);break}}),this.mapArrayTypeChildrenToProps(n,o)}render(){const{children:e,...o}=this.props;let n={...o},{helmetData:r}=o;if(e&&(n=this.mapChildrenToProps(e,n)),r&&!(r instanceof yt)){const a=r;r=new yt(a.context,!0),delete n.helmetData}return r?f.createElement(qt,{...n,context:r.value}):f.createElement(wo.Consumer,null,a=>f.createElement(qt,{...n,context:a}))}},oe(pt,"defaultProps",{defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1}),pt);const Hr="modulepreload",Ur=function(e){return"/"+e},Gt={},T=function(o,n,r){let a=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),i=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));a=Promise.allSettled(n.map(d=>{if(d=Ur(d),d in Gt)return;Gt[d]=!0;const u=d.endsWith(".css"),h=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${d}"]${h}`))return;const p=document.createElement("link");if(p.rel=u?"stylesheet":Hr,u||(p.as="script"),p.crossOrigin="",p.href=d,i&&p.setAttribute("nonce",i),document.head.appendChild(p),u)return new Promise((g,c)=>{p.addEventListener("load",g),p.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${d}`)))})}))}function s(l){const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=l,window.dispatchEvent(i),!i.defaultPrevented)throw l}return a.then(l=>{for(const i of l||[])i.status==="rejected"&&s(i.reason);return o().catch(s)})};var qr=e=>{switch(e){case"success":return Yr;case"info":return Xr;case"warning":return Kr;case"error":return Qr;default:return null}},Gr=Array(12).fill(0),Wr=({visible:e,className:o})=>f.createElement("div",{className:["sonner-loading-wrapper",o].filter(Boolean).join(" "),"data-visible":e},f.createElement("div",{className:"sonner-spinner"},Gr.map((n,r)=>f.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${r}`})))),Yr=f.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},f.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),Kr=f.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},f.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),Xr=f.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},f.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),Qr=f.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},f.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),Zr=f.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},f.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),f.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),Jr=()=>{let[e,o]=f.useState(document.hidden);return f.useEffect(()=>{let n=()=>{o(document.hidden)};
2return document.addEventListener("visibilitychange",n),()=>window.removeEventListener("visibilitychange",n)},[]),e},bt=1,en=class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let o=this.subscribers.indexOf(e);this.subscribers.splice(o,1)}),this.publish=e=>{this.subscribers.forEach(o=>o(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{var o;let{message:n,...r}=e,a=typeof(e==null?void 0:e.id)=="number"||((o=e.id)==null?void 0:o.length)>0?e.id:bt++,s=this.toasts.find(i=>i.id===a),l=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(a)&&this.dismissedToasts.delete(a),s?this.toasts=this.toasts.map(i=>i.id===a?(this.publish({...i,...e,id:a,title:n}),{...i,...e,id:a,dismissible:l,title:n}):i):this.addToast({title:n,...r,dismissible:l,id:a}),a},this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(o=>{this.subscribers.forEach(n=>n({id:o.id,dismiss:!0}))}),this.subscribers.forEach(o=>o({id:e,dismiss:!0})),e),this.message=(e,o)=>this.create({...o,message:e}),this.error=(e,o)=>this.create({...o,message:e,type:"error"}),this.success=(e,o)=>this.create({...o,type:"success",message:e}),this.info=(e,o)=>this.create({...o,type:"info",message:e}),this.warning=(e,o)=>this.create({...o,type:"warning",message:e}),this.loading=(e,o)=>this.create({...o,type:"loading",message:e}),this.promise=(e,o)=>{if(!o)return;let n;o.loading!==void 0&&(n=this.create({...o,promise:e,type:"loading",message:o.loading,description:typeof o.description!="function"?o.description:void 0}));let r=e instanceof Promise?e:e(),a=n!==void 0,s,l=r.then(async d=>{if(s=["resolve",d],f.isValidElement(d))a=!1,this.create({id:n,type:"default",message:d});else if(on(d)&&!d.ok){a=!1;let u=typeof o.error=="function"?await o.error(`HTTP error! status: ${d.status}`):o.error,h=typeof o.description=="function"?await o.description(`HTTP error! status: ${d.status}`):o.description;this.create({id:n,type:"error",message:u,description:h})}else if(o.success!==void 0){a=!1;let u=typeof o.success=="function"?await o.success(d):o.success,h=typeof o.description=="function"?await o.description(d):o.description;this.create({id:n,type:"success",message:u,description:h})}}).catch(async d=>{if(s=["reject",d],o.error!==void 0){a=!1;let u=typeof o.error=="function"?await o.error(d):o.error,h=typeof o.description=="function"?await o.description(d):o.description;this.create({id:n,type:"error",message:u,description:h})}}).finally(()=>{var d;a&&(this.dismiss(n),n=void 0),(d=o.finally)==null||d.call(o)}),i=()=>new Promise((d,u)=>l.then(()=>s[0]==="reject"?u(s[1]):d(s[1])).catch(u));return typeof n!="string"&&typeof n!="number"?{unwrap:i}:Object.assign(n,{unwrap:i})},this.custom=(e,o)=>{let n=(o==null?void 0:o.id)||bt++;return this.create({jsx:e(n),id:n,...o}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},H=new en,tn=(e,o)=>{let n=(o==null?void 0:o.id)||bt++;return H.addToast({title:e,...o,id:n}),n},on=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",rn=tn,nn=()=>H.toasts,an=()=>H.getActiveToasts(),wi=Object.assign(rn,{success:H.success,info:H.info,warning:H.warning,error:H.error,custom:H.custom,message:H.message,promise:H.promise,dismiss:H.dismiss,loading:H.loading},{getHistory:nn,getToasts:an});function sn(e,{insertAt:o}={}){if(typeof document>"u")return;let n=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",o==="top"&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}sn(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
2left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
2:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);
2--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}
3`);function We(e){return e.label!==void 0}var ln=3,cn="32px",dn="16px",Wt=4e3,un=356,mn=14,hn=20,pn=200;function re(...e){return e.filter(Boolean).join(" ")}function fn(e){let[o,n]=e.split("-"),r=[];return o&&r.push(o),n&&r.push(n),r}var gn=e=>{var o,n,r,a,s,l,i,d,u,h,p;let{invert:g,toast:c,unstyled:j,interacting:y,setHeights:x,visibleToasts:E,heights:N,index:z,toasts:F,expanded:U,removeToast:D,defaultRichColors:q,closeButton:O,style:G,cancelButtonStyle:$,actionButtonStyle:ce,className:A="",descriptionClassName:xe="",duration:Z,position:be,gap:Y,loadingIcon:K,expandByDefault:de,classNames:k,icons:B,closeButtonAriaLabel:W="Close toast",pauseWhenPageIsHidden:S}=e,[M,R]=f.useState(null),[V,Te]=f.useState(null),[L,tt]=f.useState(!1),[Re,Ue]=f.useState(!1),[Oe,ot]=f.useState(!1),[Pt,Go]=f.useState(!1),[Wo,It]=f.useState(!1),[Yo,rt]=f.useState(0),[Ko,Rt]=f.useState(0),Le=f.useRef(c.duration||Z||Wt),Ot=f.useRef(null),ve=f.useRef(null),Xo=z===0,Qo=z+1<=E,X=c.type,Ae=c.dismissible!==!1,Zo=c.className||"",Jo=c.descriptionClassName||"",qe=f.useMemo(()=>N.findIndex(b=>b.toastId===c.id)||0,[N,c.id]),er=f.useMemo(()=>{var b;return(b=c.closeButton)!=null?b:O},[c.closeButton,O]),Lt=f.useMemo(()=>c.duration||Z||Wt,[c.duration,Z]),nt=f.useRef(0),Ne=f.useRef(0),zt=f.useRef(0),Ce=f.useRef(null),[tr,or]=be.split("-"),Dt=f.useMemo(()=>N.reduce((b,C,I)=>I>=qe?b:b+C.height,0),[N,qe]),Bt=Jr(),rr=c.invert||g,at=X==="loading";Ne.current=f.useMemo(()=>qe*Y+Dt,[qe,Dt]),f.useEffect(()=>{Le.current=Lt},[Lt]),f.useEffect(()=>{tt(!0)},[]),f.useEffect(()=>{let b=ve.current;if(b){let C=b.getBoundingClientRect().height;return Rt(C),x(I=>[{toastId:c.id,height:C,position:c.position},...I]),()=>x(I=>I.filter(J=>J.toastId!==c.id))}},[x,c.id]),f.useLayoutEffect(()=>{if(!L)return;let b=ve.current,C=b.style.height;b.style.height="auto";let I=b.getBoundingClientRect().height;b.style.height=C,Rt(I),x(J=>J.find(ee=>ee.toastId===c.id)?J.map(ee=>ee.toastId===c.id?{...ee,height:I}:ee):[{toastId:c.id,height:I,position:c.position},...J])},[L,c.title,c.description,x,c.id]);let ue=f.useCallback(()=>{Ue(!0),rt(Ne.current),x(b=>b.filter(C=>C.toastId!==c.id)),setTimeout(()=>{D(c)},pn)},[c,D,x,Ne]);f.useEffect(()=>{if(c.promise&&X==="loading"||c.duration===1/0||c.type==="loading")return;let b;return U||y||S&&Bt?(()=>{if(zt.current<nt.current){let C=new Date().getTime()-nt.current;Le.current=Le.current-C}
3zt.current=new Date().getTime()})():Le.current!==1/0&&(nt.current=new Date().getTime(),b=setTimeout(()=>{var C;(C=c.onAutoClose)==null||C.call(c,c),ue()},Le.current)),()=>clearTimeout(b)},[U,y,c,X,S,Bt,ue]),f.useEffect(()=>{c.delete&&ue()},[ue,c.delete]);function nr(){var b,C,I;return B!=null&&B.loading?f.createElement("div",{className:re(k==null?void 0:k.loader,(b=c==null?void 0:c.classNames)==null?void 0:b.loader,"sonner-loader"),"data-visible":X==="loading"},B.loading):K?f.createElement("div",{className:re(k==null?void 0:k.loader,(C=c==null?void 0:c.classNames)==null?void 0:C.loader,"sonner-loader"),"data-visible":X==="loading"},K):f.createElement(Wr,{className:re(k==null?void 0:k.loader,(I=c==null?void 0:c.classNames)==null?void 0:I.loader),visible:X==="loading"})}return f.createElement("li",{tabIndex:0,ref:ve,className:re(A,Zo,k==null?void 0:k.toast,(o=c==null?void 0:c.classNames)==null?void 0:o.toast,k==null?void 0:k.default,k==null?void 0:k[X],(n=c==null?void 0:c.classNames)==null?void 0:n[X]),"data-sonner-toast":"","data-rich-colors":(r=c.richColors)!=null?r:q,"data-styled":!(c.jsx||c.unstyled||j),"data-mounted":L,"data-promise":!!c.promise,"data-swiped":Wo,"data-removed":Re,"data-visible":Qo,"data-y-position":tr,"data-x-position":or,"data-index":z,"data-front":Xo,"data-swiping":Oe,"data-dismissible":Ae,"data-type":X,"data-invert":rr,"data-swipe-out":Pt,"data-swipe-direction":V,"data-expanded":!!(U||de&&L),style:{"--index":z,"--toasts-before":z,"--z-index":F.length-z,"--offset":`${Re?Yo:Ne.current}px`,"--initial-height":de?"auto":`${Ko}px`,...G,...c.style},onDragEnd:()=>{ot(!1),R(null),Ce.current=null},onPointerDown:b=>{at||!Ae||(Ot.current=new Date,rt(Ne.current),b.target.setPointerCapture(b.pointerId),b.target.tagName!=="BUTTON"&&(ot(!0),Ce.current={x:b.clientX,y:b.clientY}))},onPointerUp:()=>{var b,C,I,J;if(Pt||!Ae)return;Ce.current=null;let ee=Number(((b=ve.current)==null?void 0:b.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),me=Number(((C=ve.current)==null?void 0:C.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),we=new Date().getTime()-((I=Ot.current)==null?void 0:I.getTime()),te=M==="x"?ee:me,he=Math.abs(te)/we;if(Math.abs(te)>=hn||he>.11){rt(Ne.current),(J=c.onDismiss)==null||J.call(c,c),Te(M==="x"?ee>0?"right":"left":me>0?"down":"up"),ue(),Go(!0),It(!1);return}ot(!1),R(null)},onPointerMove:b=>{var C,I,J,ee;if(!Ce.current||!Ae||((C=window.getSelection())==null?void 0:C.toString().length)>0)return;let me=b.clientY-Ce.current.y,we=b.clientX-Ce.current.x,te=(I=e.swipeDirections)!=null?I:fn(be);!M&&(Math.abs(we)>1||Math.abs(me)>1)&&R(Math.abs(we)>Math.abs(me)?"x":"y");let he={x:0,y:0};M==="y"?(te.includes("top")||te.includes("bottom"))&&(te.includes("top")&&me<0||te.includes("bottom")&&me>0)&&(he.y=me):M==="x"&&(te.includes("left")||te.includes("right"))&&(te.includes("left")&&we<0||te.includes("right")&&we>0)&&(he.x=we),(Math.abs(he.x)>0||Math.abs(he.y)>0)&&It(!0),(J=ve.current)==null||J.style.setProperty("--swipe-amount-x",`${he.x}px`),(ee=ve.current)==null||ee.style.setProperty("--swipe-amount-y",`${he.y}px`)}},er&&!c.jsx?f.createElement("button",{"aria-label":W,"data-disabled":at,"data-close-button":!0,onClick:at||!Ae?()=>{}:()=>{var b;ue(),(b=c.onDismiss)==null||b.call(c,c)},className:re(k==null?void 0:k.closeButton,(a=c==null?void 0:c.classNames)==null?void 0:a.closeButton)},(s=B==null?void 0:B.close)!=null?s:Zr):null,c.jsx||m.isValidElement(c.title)?c.jsx?c.jsx:typeof c.title=="function"?c.title():c.title:f.createElement(f.Fragment,null,X||c.icon||c.promise?f.createElement("div",{"data-icon":"",className:re(k==null?void 0:k.icon,(l=c==null?void 0:c.classNames)==null?void 0:l.icon)},c.promise||c.type==="loading"&&!c.icon?c.icon||nr():null,c.type!=="loading"?c.icon||(B==null?void 0:B[X])||qr(X):null):null,f.createElement("div",{"data-content":"",className:re(k==null?void 0:k.content,(i=c==null?void 0:c.classNames)==null?void 0:i.content)},f.createElement("div",{"data-title":"",className:re(k==null?void 0:k.title,(d=c==null?void 0:c.classNames)==null?void 0:d.title)},typeof c.title=="function"?c.title():c.title),c.description?f.createElement("div",{"data-description":"",className:re(xe,Jo,k==null?void 0:k.description,(u=c==null?void 0:c.classNames)==null?void 0:u.description)},typeof c.description=="function"?c.description():c.description):null),m.isValidElement(c.cancel)?c.cancel:c.cancel&&We(c.cancel)?f.createElement("button",{"data-button":!0,"data-cancel":!0,style:c.cancelButtonStyle||$,onClick:b=>{var C,I;We(c.cancel)&&Ae&&((I=(C=c.cancel).onClick)==null||I.call(C,b),ue())},className:re(k==null?void 0:k.cancelButton,(h=c==null?void 0:c.classNames)==null?void 0:h.cancelButton)},c.cancel.label):null,m.isValidElement(c.action)?c.action:c.action&&We(c.action)?f.createElement("button",{"data-button":!0,"data-action":!0,style:c.actionButtonStyle||ce,onClick:b=>{var C,I;We(c.action)&&((I=(C=c.action).onClick)==null||I.call(C,b),!b.defaultPrevented&&ue())},className:re(k==null?void 0:k.actionButton,(p=c==null?void 0:c.classNames)==null?void 0:p.actionButton)},c.action.label):null))};function Yt(){if(typeof window>"u"||typeof document>"u")return"ltr";let e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function yn(e,o){let n={};
vendor: 13,584 bytes, lines 3-113
3return[e,o].forEach((r,a)=>{let s=a===1,l=s?"--mobile-offset":"--offset",i=s?dn:cn;function d(u){["top","right","bottom","left"].forEach(h=>{n[`${l}-${h}`]=typeof u=="number"?`${u}px`:u})}typeof r=="number"||typeof r=="string"?d(r):typeof r=="object"?["top","right","bottom","left"].forEach(u=>{r[u]===void 0?n[`${l}-${u}`]=i:n[`${l}-${u}`]=typeof r[u]=="number"?`${r[u]}px`:r[u]}):d(i)}),n}var xn=m.forwardRef(function(e,o){let{invert:n,position:r="bottom-right",hotkey:a=["altKey","KeyT"],expand:s,closeButton:l,className:i,offset:d,mobileOffset:u,theme:h="light",richColors:p,duration:g,style:c,visibleToasts:j=ln,toastOptions:y,dir:x=Yt(),gap:E=mn,loadingIcon:N,icons:z,containerAriaLabel:F="Notifications",pauseWhenPageIsHidden:U}=e,[D,q]=f.useState([]),O=f.useMemo(()=>Array.from(new Set([r].concat(D.filter(S=>S.position).map(S=>S.position)))),[D,r]),[G,$]=f.useState([]),[ce,A]=f.useState(!1),[xe,Z]=f.useState(!1),[be,Y]=f.useState(h!=="system"?h:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),K=f.useRef(null),de=a.join("+").replace(/Key/g,"").replace(/Digit/g,""),k=f.useRef(null),B=f.useRef(!1),W=f.useCallback(S=>{q(M=>{var R;return(R=M.find(V=>V.id===S.id))!=null&&R.delete||H.dismiss(S.id),M.filter(({id:V})=>V!==S.id)})},[]);return f.useEffect(()=>H.subscribe(S=>{if(S.dismiss){q(M=>M.map(R=>R.id===S.id?{...R,delete:!0}:R));return}setTimeout(()=>{mr.flushSync(()=>{q(M=>{let R=M.findIndex(V=>V.id===S.id);return R!==-1?[...M.slice(0,R),{...M[R],...S},...M.slice(R+1)]:[S,...M]})})})}),[]),f.useEffect(()=>{if(h!=="system"){Y(h);return}if(h==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?Y("dark"):Y("light")),typeof window>"u")return;let S=window.matchMedia("(prefers-color-scheme: dark)");try{S.addEventListener("change",({matches:M})=>{Y(M?"dark":"light")})}catch{S.addListener(({matches:R})=>{try{Y(R?"dark":"light")}catch(V){console.error(V)}})}},[h]),f.useEffect(()=>{D.length<=1&&A(!1)},[D]),f.useEffect(()=>{let S=M=>{var R,V;a.every(Te=>M[Te]||M.code===Te)&&(A(!0),(R=K.current)==null||R.focus()),M.code==="Escape"&&(document.activeElement===K.current||(V=K.current)!=null&&V.contains(document.activeElement))&&A(!1)};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[a]),f.useEffect(()=>{if(K.current)return()=>{k.current&&(k.current.focus({preventScroll:!0}),k.current=null,B.current=!1)}},[K.current]),f.createElement("section",{ref:o,"aria-label":`${F} ${de}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},O.map((S,M)=>{var R;let[V,Te]=S.split("-");return D.length?f.createElement("ol",{key:S,dir:x==="auto"?Yt():x,tabIndex:-1,ref:K,className:i,"data-sonner-toaster":!0,"data-theme":be,"data-y-position":V,"data-lifted":ce&&D.length>1&&!s,"data-x-position":Te,style:{"--front-toast-height":`${((R=G[0])==null?void 0:R.height)||0}px`,"--width":`${un}px`,"--gap":`${E}px`,...c,...yn(d,u)},onBlur:L=>{B.current&&!L.currentTarget.contains(L.relatedTarget)&&(B.current=!1,k.current&&(k.current.focus({preventScroll:!0}),k.current=null))},onFocus:L=>{L.target instanceof HTMLElement&&L.target.dataset.dismissible==="false"||B.current||(B.current=!0,k.current=L.relatedTarget)},onMouseEnter:()=>A(!0),onMouseMove:()=>A(!0),onMouseLeave:()=>{xe||A(!1)},onDragEnd:()=>A(!1),onPointerDown:L=>{L.target instanceof HTMLElement&&L.target.dataset.dismissible==="false"||Z(!0)},onPointerUp:()=>Z(!1)},D.filter(L=>!L.position&&M===0||L.position===S).map((L,tt)=>{var Re,Ue;return f.createElement(gn,{key:L.id,icons:z,index:tt,toast:L,defaultRichColors:p,duration:(Re=y==null?void 0:y.duration)!=null?Re:g,className:y==null?void 0:y.className,descriptionClassName:y==null?void 0:y.descriptionClassName,invert:n,visibleToasts:j,closeButton:(Ue=y==null?void 0:y.closeButton)!=null?Ue:l,interacting:xe,position:S,style:y==null?void 0:y.style,unstyled:y==null?void 0:y.unstyled,classNames:y==null?void 0:y.classNames,cancelButtonStyle:y==null?void 0:y.cancelButtonStyle,actionButtonStyle:y==null?void 0:y.actionButtonStyle,removeToast:W,toasts:D.filter(Oe=>Oe.position==L.position),heights:G.filter(Oe=>Oe.position==L.position),setHeights:$,expandByDefault:s,gap:E,loadingIcon:N,expanded:ce,pauseWhenPageIsHidden:U,swipeDirections:e.swipeDirections})})):null}))});const bn=()=>t.jsx("div",{className:"pointer-events-none fixed inset-0 z-[9999] opacity-[0.03] hidden md:block",style:{backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E")`,backgroundRepeat:"repeat"}});/**
4 * @license lucide-react v0.462.0 - ISC
5 *
6 * This source code is licensed under the ISC license.
7 * See the LICENSE file in the root directory of this source tree.
8 */const vn=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),ko=(...e)=>e.filter((o,n,r)=>!!o&&o.trim()!==""&&r.indexOf(o)===n).join(" ").trim();/**
9 * @license lucide-react v0.462.0 - ISC
10 *
11 * This source code is licensed under the ISC license.
12 * See the LICENSE file in the root directory of this source tree.
13 */var wn={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/**
14 * @license lucide-react v0.462.0 - ISC
15 *
16 * This source code is licensed under the ISC license.
17 * See the LICENSE file in the root directory of this source tree.
18 */const jn=m.forwardRef(({color:e="currentColor",size:o=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:a="",children:s,iconNode:l,...i},d)=>m.createElement("svg",{ref:d,...wn,width:o,height:o,stroke:e,strokeWidth:r?Number(n)*24/Number(o):n,className:ko("lucide",a),...i},[...l.map(([u,h])=>m.createElement(u,h)),...Array.isArray(s)?s:[s]]));/**
19 * @license lucide-react v0.462.0 - ISC
20 *
21 * This source code is licensed under the ISC license.
22 * See the LICENSE file in the root directory of this source tree.
23 */const _=(e,o)=>{const n=m.forwardRef(({className:r,...a},s)=>m.createElement(jn,{ref:s,iconNode:o,className:ko(`lucide-${vn(e)}`,r),...a}));return n.displayName=`${e}`,n};/**
24 * @license lucide-react v0.462.0 - ISC
25 *
26 * This source code is licensed under the ISC license.
27 * See the LICENSE file in the root directory of this source tree.
28 */const kn=_("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);/**
29 * @license lucide-react v0.462.0 - ISC
30 *
31 * This source code is licensed under the ISC license.
32 * See the LICENSE file in the root directory of this source tree.
33 */const Ze=_("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/**
34 * @license lucide-react v0.462.0 - ISC
35 *
36 * This source code is licensed under the ISC license.
37 * See the LICENSE file in the root directory of this source tree.
38 */const En=_("BadgeCheck",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
39 * @license lucide-react v0.462.0 - ISC
40 *
41 * This source code is licensed under the ISC license.
42 * See the LICENSE file in the root directory of this source tree.
43 */const Eo=_("Brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]);/**
44 * @license lucide-react v0.462.0 - ISC
45 *
46 * This source code is licensed under the ISC license.
47 * See the LICENSE file in the root directory of this source tree.
48 */const To=_("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/**
49 * @license lucide-react v0.462.0 - ISC
50 *
51 * This source code is licensed under the ISC license.
52 * See the LICENSE file in the root directory of this source tree.
53 */const Tn=_("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/**
54 * @license lucide-react v0.462.0 - ISC
55 *
56 * This source code is licensed under the ISC license.
57 * See the LICENSE file in the root directory of this source tree.
58 */const Nt=_("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/**
59 * @license lucide-react v0.462.0 - ISC
60 *
61 * This source code is licensed under the ISC license.
62 * See the LICENSE file in the root directory of this source tree.
63 */const An=_("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
64 * @license lucide-react v0.462.0 - ISC
65 *
66 * This source code is licensed under the ISC license.
67 * See the LICENSE file in the root directory of this source tree.
68 */const Nn=_("Languages",[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]]);/**
69 * @license lucide-react v0.462.0 - ISC
70 *
71 * This source code is licensed under the ISC license.
72 * See the LICENSE file in the root directory of this source tree.
73 */const Cn=_("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/**
74 * @license lucide-react v0.462.0 - ISC
75 *
76 * This source code is licensed under the ISC license.
77 * See the LICENSE file in the root directory of this source tree.
78 */const Sn=_("MonitorOff",[["path",{d:"M17 17H4a2 2 0 0 1-2-2V5c0-1.5 1-2 1-2",key:"k0q8oc"}],["path",{d:"M22 15V5a2 2 0 0 0-2-2H9",key:"cp1ac0"}],["path",{d:"M8 21h8",key:"1ev6f3"}],["path",{d:"M12 17v4",key:"1riwvh"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/**
79 * @license lucide-react v0.462.0 - ISC
80 *
81 * This source code is licensed under the ISC license.
82 * See the LICENSE file in the root directory of this source tree.
83 */const _n=_("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"}]]);/**
84 * @license lucide-react v0.462.0 - ISC
85 *
86 * This source code is licensed under the ISC license.
87 * See the LICENSE file in the root directory of this source tree.
88 */const Mn=_("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/**
89 * @license lucide-react v0.462.0 - ISC
90 *
91 * This source code is licensed under the ISC license.
92 * See the LICENSE file in the root directory of this source tree.
93 */const Pn=_("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);/**
94 * @license lucide-react v0.462.0 - ISC
95 *
96 * This source code is licensed under the ISC license.
97 * See the LICENSE file in the root directory of this source tree.
98 */const In=_("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/**
99 * @license lucide-react v0.462.0 - ISC
100 *
101 * This source code is licensed under the ISC license.
102 * See the LICENSE file in the root directory of this source tree.
103 */const Ao=_("ScanText",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["path",{d:"M7 8h8",key:"1jbsf9"}],["path",{d:"M7 12h10",key:"b7w52i"}],["path",{d:"M7 16h6",key:"1vyc9m"}]]);/**
104 * @license lucide-react v0.462.0 - ISC
105 *
106 * This source code is licensed under the ISC license.
107 * See the LICENSE file in the root directory of this source tree.
108 */const Kt=_("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
109 * @license lucide-react v0.462.0 - ISC
110 *
111 * This source code is licensed under the ISC license.
112 * See the LICENSE file in the root directory of this source tree.
113 */const Rn=_("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",ke
113y:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
114 * @license lucide-react v0.462.0 - ISC
115 *
116 * This source code is licensed under the ISC license.
117 * See the LICENSE file in the root directory of this source tree.
118 */const On=_("SlidersHorizontal",[["line",{x1:"21",x2:"14",y1:"4",y2:"4",key:"obuewd"}],["line",{x1:"10",x2:"3",y1:"4",y2:"4",key:"1q6298"}],["line",{x1:"21",x2:"12",y1:"12",y2:"12",key:"1iu8h1"}],["line",{x1:"8",x2:"3",y1:"12",y2:"12",key:"ntss68"}],["line",{x1:"21",x2:"16",y1:"20",y2:"20",key:"14d8ph"}],["line",{x1:"12",x2:"3",y1:"20",y2:"20",key:"m0wm8r"}],["line",{x1:"14",x2:"14",y1:"2",y2:"6",key:"14e1ph"}],["line",{x1:"8",x2:"8",y1:"10",y2:"14",key:"1i6ji0"}],["line",{x1:"16",x2:"16",y1:"18",y2:"22",key:"1lctlv"}]]);/**
119 * @license lucide-react v0.462.0 - ISC
120 *
121 * This source code is licensed under the ISC license.
122 * See the LICENSE file in the root directory of this source tree.
123 */const Ln=_("Star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);/**
124 * @license lucide-react v0.462.0 - ISC
125 *
126 * This source code is licensed under the ISC license.
127 * See the LICENSE file in the root directory of this source tree.
128 */const zn=_("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);/**
129 * @license lucide-react v0.462.0 - ISC
130 *
131 * This source code is licensed under the ISC license.
132 * See the LICENSE file in the root directory of this source tree.
133 */const Dn=_("Type",[["polyline",{points:"4 7 4 4 20 4 20 7",key:"1nosan"}],["line",{x1:"9",x2:"15",y1:"20",y2:"20",key:"swin9y"}],["line",{x1:"12",x2:"12",y1:"4",y2:"20",key:"1tx1rr"}]]);/**
134 * @license lucide-react v0.462.0 - ISC
135 *
136 * This source code is licensed under the ISC license.
137 * See the LICENSE file in the root directory of this source tree.
138 */const No=_("UserRound",[["circle",{cx:"12",cy:"8",r:"5",key:"1hypcn"}],["path",{d:"M20 21a8 8 0 0 0-16 0",key:"rfgkzh"}]]);/**
139 * @license lucide-react v0.462.0 - ISC
140 *
141 * This source code is licensed under the ISC license.
142 * See the LICENSE file in the root directory of this source tree.
143 */const Bn=_("Volume2",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]]);/**
144 * @license lucide-react v0.462.0 - ISC
145 *
146 * This source code is licensed under the ISC license.
147 * See the LICENSE file in the root directory of this source tree.
148 */const Fn=_("VolumeX",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["line",{x1:"22",x2:"16",y1:"9",y2:"15",key:"1ewh16"}],["line",{x1:"16",x2:"22",y1:"9",y2:"15",key:"5ykzw1"}]]);/**
149 * @license lucide-react v0.462.0 - ISC
150 *
151 * This source code is licensed under the ISC license.
152 * See the LICENSE file in the root directory of this source tree.
153 */const Co=_("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/**
154 * @license lucide-react v0.462.0 - ISC
155 *
156 * This source code is licensed under the ISC license.
157 * See the LICENSE file in the root directory of this source tree.
158 */const So=_("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),vt="echoo-a11y-settings",$n=1,Ct=m.createContext(void 0),Je=()=>{const e=m.useContext(Ct);if(!e)throw new Error("useAccessibility must be used within an AccessibilityProvi
158der");return e},Xt=e=>{try{return window.matchMedia(e).matches}catch{return!1}},Vn=()=>{const e=Xt("(prefers-reduced-motion: reduce)"),o=Xt("(prefers-contrast: more)"),n={reducedMotion:e,highContrast:o,dyslexicFont:!1};if(typeof window>"u")return n;try{const r=localStorage.getItem(vt);if(!r)return n;const a=JSON.parse(r);return{reducedMotion:a.reducedMotion??e,highContrast:a.highContrast??o,dyslexicFont:a.dyslexicFont??!1}}catch{try{localStorage.removeItem(vt)}catch{}return n}},Hn=({children:e})=>{const[o]=m.useState(Vn),[n,r]=m.useState(o.reducedMotion),[a,s]=m.useState(o.highContrast),[l,i]=m.useState(o.dyslexicFont),[d,u]=m.useState(!1);m.useLayoutEffect(()=>{u(!0)},[]),m.useEffect(()=>{if(!d)return;const c=document.documentElement,j={reducedMotion:n,highContrast:a,dyslexicFont:l,_version:$n};c.classList.toggle("a11y-reduced-motion",n),c.classList.toggle("a11y-high-contrast",a),c.classList.toggle("a11y-dyslexic-font",l);try{localStorage.setItem(vt,JSON.stringify(j))}catch{}},[n,a,l,d]);const h=()=>r(c=>!c),p=()=>s(c=>!c),g=()=>i(c=>!c);return t.jsx(Ct.Provider,{value:{reducedMotion:n,highContrast:a,dyslexicFont:l,toggleReducedMotion:h,toggleHighContrast:p,toggleDyslexicFont:g},children:e})},_o="echoo-theme",Mo="disable-theme-transitions",Un={light:"#FBF9F9",dark:"#08090B"},Po=m.createContext(void 0),St=()=>{const e=m.useContext(Po);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e},Qt=()=>typeof window>"u"?"light":window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",Zt=()=>{if(typeof window>"u")return null;try{const e=localStorage.getItem(_o);if(e==="light"||e==="dark"||e==="system")return e}catch{}return null},qn=()=>{document.documentElement.classList.add(Mo),document.documentElement.offsetHeight},Gn=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{document.documentElement.classList.remove(Mo)})})},Wn=({children:e,defaultTheme:o="system"})=>{const[n,r]=m.useState(()=>Zt()??o),[a,s]=m.useState(()=>{const h=Zt()??o;return h==="system"?Qt():h}),l=m.useCallback(h=>h==="system"?Qt():h,[]),i=m.useCallback(h=>{var g;qn();const p=document.documentElement;p.classList.remove("light","dark"),p.classList.add(h),(g=document.getElementById("theme-color"))==null||g.setAttribute("content",Un[h]),Gn()},[]),d=m.useCallback(h=>{const p=l(h);try{localStorage.setItem(_o,h)}catch{}i(p),r(h),s(p)},[l,i]);m.useEffect(()=>{const h=l(n);s(h),document.documentElement.classList.contains(h)||i(h)},[i,l,n]),m.useEffect(()=>{if(n!=="system")return;const h=window.matchMedia("(prefers-color-scheme: dark)"),p=g=>{const c=g.matches?"dark":"light";i(c),s(c)};return h.addEventListener("change",p),()=>h.removeEventListener("change",p)},[n,i]);const u=m.useMemo(()=>({theme:n,resolvedTheme:a,setTheme:d}),[n,a,d]);return t.jsx(Po.Provider,{value:u,children:e})};function Io(e){var o,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(o=0;o<a;o++)e[o]&&(n=Io(e[o]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function Yn(){for(var e,o,n=0,r="",a=arguments.length;n<a;n++)(e=arguments[n])&&(o=Io(e))&&(r&&(r+=" "),r+=o);return r}const _t="-",Kn=e=>{const o=Qn(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:l=>{const i=l.split(_t);return i[0]===""&&i.length!==1&&i.shift(),Ro(i,o)||Xn(l)},getConflictingClassGroupIds:(l,i)=>{const d=n[l]||[];return i&&r[l]?[...d,...r[l]]:d}}},Ro=(e,o)=>{var l;if(e.length===0)return o.classGroupId;const n=e[0],r=o.nextPart.get(n),a=r?Ro(e.slice(1),r):void 0;if(a)return a;if(o.validators.length===0)return;const s=e.join(_t);return(l=o.validators.find(({validator:i})=>i(s)))==null?void 0:l.classGroupId},Jt=/^\[(.+)\]$/,Xn=e=>{if(Jt.test(e)){const o=Jt.exec(e)[1],n=o==null?void 0:o.substring(0,o.indexOf(":"));if(n)return"arbitrary.."+n}},Qn=e=>{const{theme:o,prefix:n}=e,r={nextPart:new Map,validators:[]};return Jn(Object.entries(e.classGroups),n).forEach(([s,l])=>{wt(l,r,s,o)}),r},wt=(e,o,n,r)=>{e.forEach(a=>{if(typeof a=="string"){const s=a===""?o:eo(o,a);s.classGroupId=n;return}if(typeof a=="function"){if(Zn(a)){wt(a(r),o,n,r);return}o.validators.push({validator:a,classGroupId:n});return}
vendor: 4,810 bytes, line 158
158Object.entries(a).forEach(([s,l])=>{wt(l,eo(o,s),n,r)})})},eo=(e,o)=>{let n=e;return o.split(_t).forEach(r=>{n.nextPart.has(r)||n.nextPart.set(r,{nextPart:new Map,validators:[]}),n=n.nextPart.get(r)}),n},Zn=e=>e.isThemeGetter,Jn=(e,o)=>o?e.map(([n,r])=>{const a=r.map(s=>typeof s=="string"?o+s:typeof s=="object"?Object.fromEntries(Object.entries(s).map(([l,i])=>[o+l,i])):s);return[n,a]}):e,ea=e=>{if(e<1)return{get:()=>{},set:()=>{}};let o=0,n=new Map,r=new Map;const a=(s,l)=>{n.set(s,l),o++,o>e&&(o=0,r=n,n=new Map)};return{get(s){let l=n.get(s);if(l!==void 0)return l;if((l=r.get(s))!==void 0)return a(s,l),l},set(s,l){n.has(s)?n.set(s,l):a(s,l)}}},Oo="!",ta=e=>{const{separator:o,experimentalParseClassName:n}=e,r=o.length===1,a=o[0],s=o.length,l=i=>{const d=[];let u=0,h=0,p;for(let x=0;x<i.length;x++){let E=i[x];if(u===0){if(E===a&&(r||i.slice(x,x+s)===o)){d.push(i.slice(h,x)),h=x+s;continue}if(E==="/"){p=x;continue}}E==="["?u++:E==="]"&&u--}const g=d.length===0?i:i.substring(h),c=g.startsWith(Oo),j=c?g.substring(1):g,y=p&&p>h?p-h:void 0;return{modifiers:d,hasImportantModifier:c,baseClassName:j,maybePostfixModifierPosition:y}};return n?i=>n({className:i,parseClassName:l}):l},oa=e=>{if(e.length<=1)return e;const o=[];let n=[];return e.forEach(r=>{r[0]==="["?(o.push(...n.sort(),r),n=[]):n.push(r)}),o.push(...n.sort()),o},ra=e=>({cache:ea(e.cacheSize),parseClassName:ta(e),...Kn(e)}),na=/\s+/,aa=(e,o)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:a}=o,s=[],l=e.trim().split(na);let i="";for(let d=l.length-1;d>=0;d-=1){const u=l[d],{modifiers:h,hasImportantModifier:p,baseClassName:g,maybePostfixModifierPosition:c}=n(u);let j=!!c,y=r(j?g.substring(0,c):g);if(!y){if(!j){i=u+(i.length>0?" "+i:i);continue}if(y=r(g),!y){i=u+(i.length>0?" "+i:i);continue}j=!1}const x=oa(h).join(":"),E=p?x+Oo:x,N=E+y;if(s.includes(N))continue;s.push(N);const z=a(y,j);for(let F=0;F<z.length;++F){const U=z[F];s.push(E+U)}i=u+(i.length>0?" "+i:i)}return i};function sa(){let e=0,o,n,r="";for(;e<arguments.length;)(o=arguments[e++])&&(n=Lo(o))&&(r&&(r+=" "),r+=n);return r}const Lo=e=>{if(typeof e=="string")return e;let o,n="";for(let r=0;r<e.length;r++)e[r]&&(o=Lo(e[r]))&&(n&&(n+=" "),n+=o);return n};function ia(e,...o){let n,r,a,s=l;function l(d){const u=o.reduce((h,p)=>p(h),e());return n=ra(u),r=n.cache.get,a=n.cache.set,s=i,i(d)}function i(d){const u=r(d);if(u)return u;const h=aa(d,n);return a(d,h),h}return function(){return s(sa.apply(null,arguments))}}const P=e=>{const o=n=>n[e]||[];return o.isThemeGetter=!0,o},zo=/^\[(?:([a-z-]+):)?(.+)\]$/i,la=/^\d+\/\d+$/,ca=new Set(["px","full","screen"]),da=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ua=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ma=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,ha=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,pa=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,le=e=>Pe(e)||ca.has(e)||la.test(e),pe=e=>Ie(e,"length",ja),Pe=e=>!!e&&!Number.isNaN(Number(e)),ct=e=>Ie(e,"number",Pe),Be=e=>!!e&&Number.isInteger(Number(e)),fa=e=>e.endsWith("%")&&Pe(e.slice(0,-1)),w=e=>zo.test(e),fe=e=>da.test(e),ga=new Set(["length","size","percentage"]),ya=e=>Ie(e,ga,Do),xa=e=>Ie(e,"position",Do),ba=new Set(["image","url"]),va=e=>Ie(e,ba,Ea),wa=e=>Ie(e,"",ka),Fe=()=>!0,Ie=(e,o,n)=>{const r=zo.exec(e);return r?r[1]?typeof o=="string"?r[1]===o:o.has(r[1]):n(r[2]):!1},ja=e=>ua.test(e)&&!ma.test(e),Do=()=>!1,ka=e=>ha.test(e),Ea=e=>pa.test(e),Ta=()=>{const e=P("colors"),o=P("spacing"),n=P("blur"),r=P("brightness"),a=P("borderColor"),s=P("borderRadius"),l=P("borderSpacing"),i=P("borderWidth"),d=P("contrast"),u=P("grayscale"),h=P("hueRotate"),p=P("invert"),g=P("gap"),c=P("gradientColorStops"),j=P("gradientColorStopPositions"),y=P("inset"),x=P("margin"),E=P("opacity"),N=P("padding"),z=P("saturate"),F=P("scale"),U=P("sepia"),D=P("skew"),q=P("space"),O=P("translate"),G=()=>["auto","contain","none"],$=()=>["auto","hidden","clip","visible","scroll"],ce=()=>["auto",w,o],A=()=>[w,o],xe=()=>["",le,pe],Z=()=>["auto",Pe,w],be=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Y=()=>["solid","dashed","dotted","double","none"],K=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],de=()=>["start","end","center","between","around","evenly","stretch"],k=()=>["","0",w],B=()=>["auto","avoid","all","avoid-page","page","left","right","column"],W=()=>[Pe,w];return{cacheSize:500,separator:":",theme:{colors:[Fe],spacing:[le,pe],blur:["none","",fe,w],brightness:W(),borderColor:[e],borderRadius:["n
158one","","full",fe,w],borderSpacing:A(),borderWidth:xe(),contrast:W(),grayscale:k(),hueRotate:W(),invert:k(),gap:A(),gradientColorStops:[e],gradientColorStopPositions:[fa,pe],inset:ce(),margin:ce(),opacity:W(),padding:A(),saturate:W(),scale:W(),sepia:k(),skew:W(),space:A(),translate:A()},classGroups:{aspect:[{aspect:["auto","square","video",w]}],container:["container"],columns:[{columns:[fe]}],"break-after":[{"break-after":B()}],"break-before":[{"break-before":B()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...be(),w]}],overflow:[{overflow:$()}],"overflow-x":[{"overflow-x":$()}],"overflow-y":[{"overflow-y":$()}],overscroll:[{overscroll:G()}],"overscroll-x":[{"overscroll-x":G()}],"overscroll-y":[{"overscroll-y":G()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[y]}],"inset-x":[{"inset-x":[y]}],"inset-y":[{"inset-y":[y]}],start:[{start:[y]}],end:[{end:[y]}],top:[{top:[y]}],right:[{right:[y]}],bottom:[{bottom:[y]}],left:[{left:[y]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Be,w]}],basis:[{basis:ce()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",w]}],grow:[{grow:k()}],shrink:[{shrink:k()}],order:[{order:["first","last","none",Be,w]}],"grid-cols":[{"grid-cols":[Fe]}],"col-start-end":[{col:["auto",{span:["full",Be,w]},w]}],"col-start":[{"col-start":Z()}],"col-end":[{"col-end":Z()}],"grid-rows":[{"grid-rows":[Fe]}],"row-start-end":[{row:["auto",{span:[Be,w]},w]}],"row-start":[{"row-start":Z()}],"row-end":[{"row-end":Z()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",w]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",w]}],gap:[{gap:[g]}],"gap-x":[{"gap-x":[g]}],"gap-y":[{"gap-y":[g]}],"justify-content":[{justify:["normal",...de()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...de(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...de(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[N]}],px:[{px:[N]}],py:[{py:[N]}],ps:[{ps:[N]}],pe:[{pe:[N]}],pt:[{pt:[N]}],pr:[{pr:[N]}],pb:[{pb:[N]}],pl:[{pl:[N]}],m:[{m:[x]}],mx:[{mx:[x]}],my:[{my:[x]}],ms:[{ms:[x]}],me:[{me:[x]}],mt:[{mt:[x]}],mr:[{mr:[x]}],mb:[{mb:[x]}],ml:[{ml:[x]}],"space-x":[{"space-x":[q]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[q]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",w,o]}],"min-w":[{"min-w":[w,o,"min","max","fit"]}],"max-w":[{"max-w":[w,o,"none","full","min","max","fit","prose",{screen:[fe]},fe]}],h:[{h:[w,o,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[w,o,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[w,o,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[w,o,"auto","min","max","fit"]}],"font-size":[{text:["base",fe,pe]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",ct]}],"font-family":[{font:[Fe]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",w]}],"line-clamp":[{"line-clamp":["none",Pe,ct]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",le,w]}],"list-image":[{"list-image":["none",w]}],"list-style-type":[{list:["none","disc","decimal",w]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[E]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[E]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Y(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",le,pe]}],"underline-offset":[{"underline-offset":["auto",le,w]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:A()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",w]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",w]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[E]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...be(),xa]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",ya]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},va]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[j]}
vendor: 5,173 bytes, line 158
158],"gradient-via-pos":[{via:[j]}],"gradient-to-pos":[{to:[j]}],"gradient-from":[{from:[c]}],"gradient-via":[{via:[c]}],"gradient-to":[{to:[c]}],rounded:[{rounded:[s]}],"rounded-s":[{"rounded-s":[s]}],"rounded-e":[{"rounded-e":[s]}],"rounded-t":[{"rounded-t":[s]}],"rounded-r":[{"rounded-r":[s]}],"rounded-b":[{"rounded-b":[s]}],"rounded-l":[{"rounded-l":[s]}],"rounded-ss":[{"rounded-ss":[s]}],"rounded-se":[{"rounded-se":[s]}],"rounded-ee":[{"rounded-ee":[s]}],"rounded-es":[{"rounded-es":[s]}],"rounded-tl":[{"rounded-tl":[s]}],"rounded-tr":[{"rounded-tr":[s]}],"rounded-br":[{"rounded-br":[s]}],"rounded-bl":[{"rounded-bl":[s]}],"border-w":[{border:[i]}],"border-w-x":[{"border-x":[i]}],"border-w-y":[{"border-y":[i]}],"border-w-s":[{"border-s":[i]}],"border-w-e":[{"border-e":[i]}],"border-w-t":[{"border-t":[i]}],"border-w-r":[{"border-r":[i]}],"border-w-b":[{"border-b":[i]}],"border-w-l":[{"border-l":[i]}],"border-opacity":[{"border-opacity":[E]}],"border-style":[{border:[...Y(),"hidden"]}],"divide-x":[{"divide-x":[i]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[i]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[E]}],"divide-style":[{divide:Y()}],"border-color":[{border:[a]}],"border-color-x":[{"border-x":[a]}],"border-color-y":[{"border-y":[a]}],"border-color-s":[{"border-s":[a]}],"border-color-e":[{"border-e":[a]}],"border-color-t":[{"border-t":[a]}],"border-color-r":[{"border-r":[a]}],"border-color-b":[{"border-b":[a]}],"border-color-l":[{"border-l":[a]}],"divide-color":[{divide:[a]}],"outline-style":[{outline:["",...Y()]}],"outline-offset":[{"outline-offset":[le,w]}],"outline-w":[{outline:[le,pe]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:xe()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[E]}],"ring-offset-w":[{"ring-offset":[le,pe]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",fe,wa]}],"shadow-color":[{shadow:[Fe]}],opacity:[{opacity:[E]}],"mix-blend":[{"mix-blend":[...K(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":K()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[d]}],"drop-shadow":[{"drop-shadow":["","none",fe,w]}],grayscale:[{grayscale:[u]}],"hue-rotate":[{"hue-rotate":[h]}],invert:[{invert:[p]}],saturate:[{saturate:[z]}],sepia:[{sepia:[U]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[d]}],"backdrop-grayscale":[{"backdrop-grayscale":[u]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[h]}],"backdrop-invert":[{"backdrop-invert":[p]}],"backdrop-opacity":[{"backdrop-opacity":[E]}],"backdrop-saturate":[{"backdrop-saturate":[z]}],"backdrop-sepia":[{"backdrop-sepia":[U]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",w]}],duration:[{duration:W()}],ease:[{ease:["linear","in","out","in-out",w]}],delay:[{delay:W()}],animate:[{animate:["none","spin","ping","pulse","bounce",w]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[F]}],"scale-x":[{"scale-x":[F]}],"scale-y":[{"scale-y":[F]}],rotate:[{rotate:[Be,w]}],"translate-x":[{"translate-x":[O]}],"translate-y":[{"translate-y":[O]}],"skew-x":[{"skew-x":[D]}],"skew-y":[{"skew-y":[D]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",w]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",w]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":A()}],"scroll-mx":[{"scroll-mx":A()}],"scroll-my":[{"scroll-my":A()}],"scroll-ms":[{"scroll-ms":A()}],"scroll-me":[{"scroll-me":A()}],"scroll-mt":[{"scroll-mt":A()}],"scroll-mr":[{"scroll-mr":A()}],"scroll-mb":[{"scroll-mb":A()}],"scroll-ml":[{"scroll-ml":A()}],"scroll-p":[{"scroll-p":A()}],"scroll-px":[{"scroll-px":A()}],"scroll-py":[{"scroll-py":A()}],"scroll-ps":[{"scroll-ps":A()}],"scroll-pe":[{"scroll-pe":A()}],"scroll-pt":[{"scroll-pt":A()}],"scroll-pr":[{"scroll-pr":A()}],"scroll-pb":[{"scroll-pb":A()}],"scroll-pl":[{"scroll-pl":A()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}
158],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",w]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[le,pe,ct]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Aa=ia(Ta);function se(...e){return Aa(Yn(e))}const ji=e=>e.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9-]/g,""),Na=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");function Ca({isActive:e,onEscape:o,restoreFocusOnDeactivate:n=!0}){const r=m.useRef(null),a=m.useRef(null),s=m.useCallback(()=>r.current?Array.from(r.current.querySelectorAll(Na)).filter(l=>l.offsetParent!==null):[],[]);return m.useEffect(()=>{if(!e)return;a.current=document.activeElement;const l=requestAnimationFrame(()=>{const i=s();i.length>0?i[0].focus():r.current&&(r.current.tabIndex=-1,r.current.focus())});return()=>{if(cancelAnimationFrame(l),!n)return;const i=a.current;a.current=null,i&&i.isConnected&&i.focus()}},[e,n,s]),m.useEffect(()=>{if(!e)return;const l=i=>{if(i.key==="Escape"&&o){i.stopPropagation(),o();return}if(i.key!=="Tab")return;const d=s();if(d.length===0)return;const u=d[0],h=d[d.length-1];i.shiftKey?document.activeElement===u&&(i.preventDefault(),h.focus()):document.activeElement===h&&(i.preventDefault(),u.focus())};return document.addEventListener("keydown",l,!0),()=>document.removeEventListener("keydown",l,!0)},[e,o,s]),r}function ye(){const e=ir(),o=m.useContext(Ct);return!!e||!!(o!=null&&o.reducedMotion)}const Sa=()=>{const[e,o]=m.useState(!1),n=ye(),{reducedMotion:r,highContrast:a,dyslexicFont:s,toggleReducedMotion:l,toggleHighContrast:i,toggleDyslexicFont:d}=Je(),{theme:u,setTheme:h}=St(),p=m.useCallback(()=>o(!1),[]);m.useEffect(()=>{const N=document.getElementById("root");
158if(!N||!e)return;N.setAttribute("inert","");const z=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{N.removeAttribute("inert"),document.body.style.overflow=z}},[e]);const g=Ca({isActive:e,onEscape:p}),c=m.useCallback(()=>{o(!e)},[e]),j=m.useCallback(()=>{l()},[l]),y=m.useCallback(()=>{i()},[i]),x=m.useCallback(()=>{d()},[d]),E=m.useCallback(N=>{h(N)},[h]);return t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",onClick:c,className:"fixed bottom-6 left-6 z-50 min-w-[44px] min-h-[44px] p-3 bg-background/80 backdrop-blur-md border border-border rounded-full shadow-lg hover:border-accent transition-colors group focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background","aria-label":"Accessibility Settings","aria-haspopup":"dialog","aria-expanded":e,children:t.jsx(Kt,{className:"w-6 h-6 text-muted-foreground group-hover:text-primary transition-colors","aria-hidden":"true"})}),po.createPortal(t.jsx(ho,{children:e&&t.jsxs(t.Fragment,{children:[t.jsx(Ee.div,{initial:n?{opacity:1}:{opacity:0},animate:{opacity:1},exit:n?{opacity:0}:{opacity:0},transition:n?{duration:0}:void 0,onClick:p,"aria-hidden":"true",className:"fixed inset-0 bg-background/60 backdrop-blur-sm z-[100]"}),t.jsxs(Ee.div,{ref:g,initial:n?{opacity:1}:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:n?{opacity:0}:{opacity:0,scale:.95,y:20},transition:n?{duration:0}:void 0,className:"fixed bottom-24 left-6 right-6 md:right-auto z-[101] w-auto md:w-80 bg-card border border-border rounded-lg overflow-hidden font-sans overscroll-contain",role:"dialog","aria-modal":"true","aria-labelledby":"a11y-menu-title",children:[t.jsxs("div",{className:"bg-muted px-4 py-3 flex items-center justify-between border-b border-border",children:[t.jsxs("h2",{id:"a11y-menu-title",className:"text-sm font-medium text-foreground flex items-center gap-2",children:[t.jsx(Kt,{className:"w-4 h-4","aria-hidden":"true"}),"System Preferences"]}),t.jsx("button",{type:"button",onClick:p,className:"min-w-[44px] min-h-[44px] flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm -mr-3 -my-2","aria-label":"Close preferences",children:t.jsx(Co,{className:"w-4 h-4","aria-hidden":"true"})})]}),t.jsxs("div",{className:"p-3 border-b border-border",children:[t.jsx("div",{id:"a11y-appearance-label",className:"text-xs font-medium text-muted-foreground uppercase tracking-wider mb-2",children:"Appearance"}),t.jsxs("div",{role:"radiogroup","aria-labelledby":"a11y-appearance-label",className:"flex gap-1 p-1 bg-muted/50 rounded-lg",children:[t.jsx(ut,{icon:t.jsx(zn,{className:"w-4 h-4","aria-hidden":"true"}),label:"Light",isActive:u==="light",onClick:()=>E("light")}),t.jsx(ut,{icon:t.jsx(Mn,{className:"w-4 h-4","aria-hidden":"true"}),label:"Dark",isActive:u==="dark",onClick:()=>E("dark")}),t.jsx(ut,{icon:t.jsx(_n,{className:"w-4 h-4","aria-hidden":"true"}),label:"System",isActive:u==="system",onClick:()=>E("system")})]})]}),t.jsxs("div",{className:"p-2 space-y-1",children:[t.jsx(dt,{label:"Reduced Motion",description:"Minimize animations",icon:t.jsx(Sn,{className:"w-4 h-4","aria-hidden":"true"}),isActive:r,onClick:j}),t.jsx(dt,{label:"High Contrast",description:"Increase legibility",icon:t.jsx(An,{className:"w-4 h-4","aria-hidden":"true"}),isActive:a,onClick:y}),t.jsx(dt,{label:"Dyslexic Font",description:"Enhanced readability",icon:t.jsx(Dn,{className:"w-4 h-4","aria-hidden":"true"}),isActive:s,onClick:x})]}),t.jsx("div",{className:"bg-muted/50 px-4 py-2 border-t border-border",children:t.jsx("p",{className:"text-xs text-muted-foreground text-center uppercase tracking-wider",children:"Echoo Accessibility Engine v1.0"})})]})]})}),document.body)]})},dt=({label:e,description:o,icon:n,isActive:r,onClick:a})=>t.jsxs("button",{type:"button",onClick:a,"aria-pressed":r,className:se("w-full flex items-center justify-between p-3 min-h-[44px] rounded-lg transition-[color,background-color,border-color] duration-200 group text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",r?"bg-primary/10 border border-primary/20":"hover:bg-muted/50 border border-transparent"),children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("div",{className:se("p-2 rounded-md transition-colors",r?"bg-primary/20 text-primary":"bg-muted text-muted-foreground group-hover:text-foreground"),children:n}),t.jsxs("div",{children:[t.jsx("div",{className:se("text-sm font-medium transition-colors",r?"text-primary":"text-foreground"),children:e}),t.jsx("div",{className:"text-xs text-muted-foreground group-hover:text-muted-foreground",children:o})]})]}),t.jsx("div",{className:se("w-5 h-5 rounded-full border flex items-center justify-center transition-all",r?"bg-primary border-primary":"border-muted-foreground
158/30 group-hover:border-muted-foreground/50"),children:r&&t.jsx(To,{className:"w-3 h-3 text-primary-foreground","aria-hidden":"true"})})]}),ut=({icon:e,label:o,isActive:n,onClick:r})=>t.jsxs("button",{type:"button",role:"radio",onClick:r,className:se("flex-1 flex flex-col items-center gap-1 py-2 px-3 min-h-[44px] rounded-md transition-[color,background-color,box-shadow] duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",n?"bg-background text-primary shadow-sm":"text-muted-foreground hover:text-foreground"),"aria-label":`${o} theme`,"aria-checked":n,children:[e,t.jsx("span",{className:"text-xs font-medium",children:o})]});function _a({className:e}){return t.jsx("svg",{viewBox:"0 0 24 24",className:e,fill:"currentColor","aria-hidden":"true",children:t.jsx("path",{d:"M20.317 4.369A19.79 19.79 0 0 0 15.432 3a.074.074 0 0 0-.079.037c-.211.375-.445.865-.608 1.249a18.27 18.27 0 0 0-5.487 0 12.6 12.6 0 0 0-.617-1.25.077.077 0 0 0-.079-.036A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.1 13.1 0 0 1-1.872-.892.077.077 0 0 1-.008-.128c.126-.094.252-.192.372-.291a.074.074 0 0 1 .077-.01c3.927 1.793 8.18 1.793 12.061 0a.074.074 0 0 1 .078.009c.12.099.245.198.372.292a.077.077 0 0 1-.006.127 12.3 12.3 0 0 1-1.873.891.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.84 19.84 0 0 0 6.002-3.03.077.077 0 0 0 .032-.055c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.028ZM8.02 15.331c-1.182 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418Zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z"})})}const Bo=m.createContext(void 0),Ma=({children:e})=>{const o=m.useCallback(async()=>{},[]);return t.jsx(Bo.Provider,{value:{incrementCount:o},children:e})},Fo=()=>{const e=m.useContext(Bo);if(e===void 0)throw new Error("useDownload must be used within a DownloadProvider");return e},Pa=new Set(["utm_source","utm_medium","utm_campaign","utm_term","utm_content"]);function et(e){const o=new URL(e);o.hash="";for(const n of[...o.searchParams.keys()])Pa.has(n)||o.searchParams.delete(n);return o}function Ia(e,o){return new URL(e,o).pathname.endsWith("/get/Echoo.dmg")}const $o="echoo-analytics-consent",Mt="G-C9EGR3V246".trim()??"",$e=/^G-[A-Z0-9]+$/i.test(Mt),Vo=m.createContext(void 0);let to=!1,oo=!1;function Ra(){window.dataLayer??(window.dataLayer=[]),window.gtag??(window.gtag=function(...o){var n;(n=window.dataLayer)==null||n.push(arguments)}),!to&&(window.gtag("consent","default",{analytics_storage:"denied",ad_storage:"denied",ad_user_data:"denied",ad_personalization:"denied",wait_for_update:500}),window.gtag("set","ads_data_redaction",!0),window.gtag("js",new Date),to=!0)}function Oa(){oo||!window.gtag||(window.gtag("config",Mt,{send_page_view:!1,page_location:et(window.location.href).toString(),page_referrer:document.referrer?new URL(document.referrer).origin:"",allow_google_signals:!1,allow_ad_personalization_signals:!1}),oo=!0)}function La(){try{const e=localStorage.getItem($o);return e==="granted"||e==="denied"?e:null}catch{return null}}function za(e){try{localStorage.setItem($o,e)}catch{}}function Da(){const e=document.cookie.split(";").map(a=>a.split("=")[0].trim()).filter(a=>a==="_ga"||a.startsWith("_ga_")),o=window.location.hostname.split("."),n=o.length>1?`.${o.slice(-2).join(".")}`:"",r=["",window.location.hostname,`.${window.location.hostname}`,n];for(const a of e)for(const s of new Set(r))document.cookie=`${a}=; Max-Age=0; path=/${s?`; domain=${s}`:""}`}function Ba(){if(!window.gtag)return;const e=et(window.location.href);window.gtag("event","page_view",{page_location:e.toString(),page_path:e.pathname,page_title:document.title})}function Fa(e){if(!window.gtag||!Ia(e.href,window.location.origin))return;const o=new URL(e.href,window.location.origin);window.gtag("event","file_download",{file_name:"Echoo.dmg",file_extension:"dmg",link_url:`${o.origin}${o.pathname}`,page_location:et(window.location.href).toString(),page_path:window.location.pathname,page_title:document.title})}
158function $a({focusOnOpen:e,onAccept:o,onReject:n}){const r=m.useRef(null);return m.useEffect(()=>{var a;e&&((a=r.current)==null||a.focus())},[e]),t.jsxs("div",{role:"dialog","aria-modal":"false","aria-labelledby":"analytics-consent-title","aria-describedby":"analytics-consent-description",className:"fixed inset-x-4 bottom-4 z-[80] mx-auto max-w-2xl rounded-lg border border-border bg-background p-5 md:p-6",children:[t.jsx("h2",{id:"analytics-consent-title",className:"text-lg font-medium text-foreground",children:"Cookie preferences"}),t.jsx("p",{id:"analytics-consent-description",className:"mt-2 text-sm leading-relaxed text-muted-foreground",children:"Essential local storage remembers your theme, accessibility settings, and this choice. With your permission, Google Analytics uses optional cookies to measure visits, traffic sources, and Echoo downloads."}),t.jsxs("ul",{className:"mt-4 grid gap-2 sm:grid-cols-2",role:"list",children:[t.jsxs("li",{className:"rounded-lg border border-border bg-muted/30 p-3",children:[t.jsxs("div",{className:"flex items-center justify-between gap-3",children:[t.jsx("span",{className:"text-sm font-medium text-foreground",children:"Essential storage"}),t.jsx("span",{className:"text-xs text-muted-foreground",children:"Always on"})]}),t.jsx("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:"Theme, accessibility, and consent preferences. No advertising or processed text."})]}),t.jsxs("li",{className:"rounded-lg border border-border bg-muted/30 p-3",children:[t.jsxs("div",{className:"flex items-center justify-between gap-3",children:[t.jsx("span",{className:"text-sm font-medium text-foreground",children:"Analytics cookies"}),t.jsx("span",{className:"text-xs text-muted-foreground",children:"Optional"})]}),t.jsx("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:"Google Analytics 4 only. Disabled until you accept and never used on checkout."})]})]}),t.jsxs("div",{className:"mt-4 flex flex-col-reverse gap-3 sm:flex-row sm:items-center sm:justify-between",children:[t.jsx(ae,{to:"/legal",className:"inline-flex min-h-11 items-center text-sm text-foreground underline underline-offset-4 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:"Privacy Policy"}),t.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row",children:[t.jsx("button",{type:"button",onClick:n,className:"min-h-11 rounded-md border border-border px-4 text-sm font-medium text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:"Reject optional"}),t.jsx("button",{ref:r,type:"button",onClick:o,className:"min-h-11 rounded-md bg-accent-solid px-4 text-sm font-medium text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:"Accept analytics"})]})]})]})}function Va({children:e}){const o=Et(),n=m.useRef(La()).current,[r,a]=m.useState(n),[s,l]=m.useState(n===null),[i,d]=m.useState(!1),[u,h]=m.useState(!1),p=m.useRef(""),g=o.pathname==="/pay";m.useEffect(()=>{var y,x;if(Ra(),!$e||g||r!=="granted"){(y=window.gtag)==null||y.call(window,"consent","update",{analytics_storage:"denied"}),h(!1),p.current="";return}(x=window.gtag)==null||x.call(window,"consent","update",{analytics_storage:"granted"}),Oa(),h(!0)},[r,g]),m.useEffect(()=>{if(!$e||g||r!=="granted")return;const y=window.requestAnimationFrame(()=>{const x=et(window.location.href).toString();p.current!==x&&(p.current=x,Ba())});return()=>window.cancelAnimationFrame(y)},[r,g,o.pathname,o.search]),m.useEffect(()=>{if(!$e||g||r!=="granted")return;const y=x=>{if(x.defaultPrevented||!(x.target instanceof Element))return;const E=x.target.closest("a");E instanceof HTMLAnchorElement&&Fa(E)};return document.addEventListener("click",y),()=>document.removeEventListener("click",y)},[r,g]);const c=m.useCallback(y=>{za(y),a(y),l(!1),d(!1),y==="denied"&&Da()},[]),j=m.useCallback(()=>{d(!0),l(!0)},[]);return t.jsxs(Vo.Provider,{value:{isConfigured:$e,openPreferences:j},children:[u&&!g&&t.jsx(At,{children:t.jsx("script",{async:!0,src:`https://www.googletagmanager.com/gtag/js?i
158d=${Mt}`})}),e,$e&&!g&&s&&t.jsx($a,{focusOnOpen:i,onAccept:()=>c("granted"),onReject:()=>c("denied")})]})}function Ha(){const e=m.useContext(Vo);if(!e)throw new Error("useAnalyticsPreferences must be used within AnalyticsProvider");return e}const Ua="Echoo | Your AI Shortcut",qa="Echoo is the AI writing tool that turns your language into clear, natural English in any Mac app with one shortcut. Try 10 free credits, no card needed.",Ga="https://www.echoo.ai/og-image.png",Wa="https://www.echoo.ai/",Ya="Echoo",Ka="@echoo_app",Xa="@echoo_app",Qa=({title:e,description:o=qa,image:n=Ga,url:r=Wa,type:a="website",article:s,noindex:l=!1,keywords:i})=>{var h;const d=e?e.includes("Echoo")?e:`${e} | Echoo`:Ua,u=o.length>160?`${o.slice(0,157)}…`:o;return t.jsxs(At,{children:[t.jsx("title",{children:d}),t.jsx("meta",{name:"description",content:u}),!l&&t.jsx("link",{rel:"canonical",href:r}),l&&t.jsx("meta",{name:"robots",content:"noindex, follow"}),i&&t.jsx("meta",{name:"keywords",content:i}),t.jsx("meta",{property:"og:type",content:a}),t.jsx("meta",{property:"og:url",content:r}),t.jsx("meta",{property:"og:title",content:d}),t.jsx("meta",{property:"og:description",content:u}),t.jsx("meta",{property:"og:image",content:n}),t.jsx("meta",{property:"og:image:alt",content:d}),t.jsx("meta",{property:"og:image:width",content:"1200"}),t.jsx("meta",{property:"og:image:height",content:"630"}),t.jsx("meta",{property:"og:site_name",content:Ya}),t.jsx("meta",{property:"og:locale",content:"en_US"}),t.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),t.jsx("meta",{name:"twitter:site",content:Ka}),t.jsx("meta",{name:"twitter:creator",content:Xa}),t.jsx("meta",{name:"twitter:title",content:d}),t.jsx("meta",{name:"twitter:description",content:u}),t.jsx("meta",{name:"twitter:image",content:n}),t.jsx("meta",{name:"twitter:image:alt",content:d}),(s==null?void 0:s.publishedTime)&&t.jsx("meta",{property:"article:published_time",content:s.publishedTime}),(s==null?void 0:s.modifiedTime)&&t.jsx("meta",{property:"article:modified_time",content:s.modifiedTime}),(s==null?void 0:s.author)&&t.jsx("meta",{property:"article:author",content:s.author}),(s==null?void 0:s.section)&&t.jsx("meta",{property:"article:section",content:s.section}),(h=s==null?void 0:s.tags)==null?void 0:h.map(p=>t.jsx("meta",{property:"article:tag",content:p},p))]})},Ho=[{title:"Product",links:[{label:"Download",href:"/get/Echoo.dmg",type:"anchor"},{label:"Command Marketplace",href:"/marketplace",type:"route"},{label:"Pricing",href:"/pricing",type:"route"},{label:"For teams",href:"/business",type:"route"},{label:"Blog",href:"/blog",type:"route"}]},{title:"Community",links:[{label:"Discord",href:"https://discord.gg/T4DshzkPDG",type:"external"},{label:"GitHub",href:"https://github.com/michael-elkabetz/echoo",type:"external"},{label:"Report an Issue",href:"https://github.com/michael-elkabetz/echoo/issues",type:"external"},{label:"About",href:"/about",type:"route"},{label:"Contact",href:"/contact",type:"route"}]},{title:"Legal",links:[{label:"Pricing",href:"/pricing",type:"route"},{label:"Terms of Service",href:"/legal/terms",type:"route"},{label:"Privacy Policy",href:"/legal",type:"route"},{label:"Refund Policy",href:"/legal/refund",type:"route"},{label:"Accessibility",href:"/legal/accessibility",type:"route"}]},{title:"Explore",links:[{label:"Use Cases",href:"/use-cases",type:"route"},{label:"Comparisons",href:"/compare",type:"route"},{label:"Alternatives",href:"/alternative",type:"route"},{label:"Translations",href:"/translate",type:"route"}]},{title:"Resources",links:[{label:"Echoo API & developer docs",href:"/docs",type:"route"},{label:"OpenAPI 3.1 spec",href:"/openapi.json",type:"file"},{label:"llms.txt",href:"/llms.txt",type:"file"},{label:"Integrations",href:"/integrations",type:"route"},{label:"How-To Guides",href:"/how-to",type:"route"},{label:"Workflows",href:"/workflows",type:"route"},{label:"For Your Role",href:"/for",type:"route"},{label:"Learn",href:"/learn",type:"route"},{label:"Best AI writing tools",href:"/learn/best-ai-writing-tools-macos",type:"route"},{label:"Best AI proofreaders",href:"/learn/best-ai-proofreading-tools",type:"route"}]},{title:"Switching to Echoo",links:[{label:"Grammarly alternative",href:"/alternative/grammarly",type:"route"},{label:"DeepL alternative",href:"/alternative/deepl",type:"route"},{label:"Apple Intelligence alternative",href:"/alternative/apple-intelligence",type:"route"},{label:"ChatGPT desktop alternative",href:"/alternative/chatgpt-desktop",type:"route"},{label:"Echoo vs Microsoft Copilot",href:"/compare/copilot-for-mac",type:"route"},{label:"Echoo vs Grammarly",href:"/compare/grammarly",type:"route"}]}];var mo;const Za=((mo=Ho.find(e=>e.title==="Legal"))==null?void 0:mo.links.filter(e=>e.label!=="Pricing"))??[];function ro({label:e,href:o,type:n,onClick:r}){const a="text-muted-foreground hover:text-foreground transition-colors duration-200 text-sm cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm";return n==="route"?t.jsx(ae,{to:o,className:a,children:e}):n==="anchor"||n==="file"?t.jsx("a",{href:o,onClick:r,className:a,children:e}):t.jsxs("a",{href:o,target:"_blank",rel:"noopener noreferrer",className:a,children:[e,t.jsx("span",{className:"sr-only",children:" (opens in new tab)"})]})}function Ja({variant:e="default"}){const{isConfigured:o,openPreferences:n}=Ha(),{incrementCount:r}=Fo(),a=e==="minimal";return t.jsx("footer",{className:"border-t border-border bg-background",children:t.jsxs("div",{className:"container mx-auto max-w-7xl px-4 py-12 md:py-16",children:[t.jsx("nav",{"aria-label":"Footer navigation",children:a?t.jsx("ul",{className:"flex flex-wrap justify-center gap-x-6 gap-y-3",role:"list",children:Za.map(s=>t.jsx("li",{children:t.jsx(ro,{label:s.label,href:s.href,type:s.type})},s.label))}):t.jsx("div",{className:"grid grid-cols-2 gap-8 md:grid-cols-3 md:gap-12 lg:grid-cols-6",children:Ho.map(s=>t.jsxs("div",{children:[t.jsx("h3",{className:"mb-4 text-sm font-semibold text-foreground",children:s.title}),t.jsx("ul",{className:"space-y-3",role:"list",children:s.links.map(l=>t.jsx("li",{children:t.jsx(ro,{label:l.label,href:l.href,type:l.type,onClick:l.type==="anchor"?()=>void r():void 0})},l.label))})]},s.title))})}),t.jsxs("div",{className:`${a?"mt-8":"mt-12"} flex flex-col items-center justify-between gap-4 border-t border-border pt-8 sm:flex-row`,children:[t.jsxs("div",{className:"flex flex-col items-center gap-3 text-sm text-muted-foreground sm:items-start",children:[t.jsxs("p",{children:["© ",new Date().getFullYear()," Echoo. Built for Mac workflows. Third-party trademarks belong to their owners."]}),o&&t.jsx("button",{type:"button",onClick:n,className:"rounded-sm underline underline-offset-4 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:"Cookie preferences"})]}),!a&&t.jsxs("p",{className:"flex items-center gap-1.5 text-sm text-muted-foreground",children:["Built for speed",t.jsx(So,{className:"h-3.5 w-3.5 fill-warning text-warning","aria-hidden":"true"})]})]})]})})}const es=m.memo(function({className:o="w-6 h-6","aria-label":n,"aria-hidden":r}){return t.jsxs("svg",{viewBox:"0 0 200 200",className:o,role:n?"img":void 0,"aria-label":n,"aria-hidden":r,children:[t.jsx("line",{x1:"90",y1:"60",x2:"145",y2:"60",stroke:"currentColor",strokeWidth:"16",strokeLinecap:"round",className:"text-foreground"}),t.jsx("line",{x1:"30",y1:"60",x2:"55",y2:"60",stroke:"currentColor",strokeWidth:"16",strokeLinecap:"round",className:"text-foreground"}),t.jsx("line",{x1:"55",y1:"60",x2:"105",y2:"140",stroke:"currentColor",strokeWidth:"16",strokeLinecap:"round",className:"text-foreground"}),t.jsx("line",{x1:"113",y1:"100",x2:"138",y2:"100",stroke:"hsl(var(--logo-accent))",strokeWidth:"16",strokeLinecap:"round"}),t.jsx("line",{x1:"105",y1:"140",x2:"145",y2:"140",stroke:"currentColor",strokeWidth:"16",strokeLinecap:"round",className:"text-foreground"})]})}),Ve={downloadUrl:"/get/Echoo.dmg"},no=[{label:"Demo",to:"/#commands"},{label:"Features",to:"/#how-it-works"}],ao=[{label:"Marketplace",to:"/marketplace"},{label:"Pricing",to:"/pricing"},{label:"For teams",to:"/business"}];function ts({onDownload:e,variant:o="default"}){const[n,r]=m.useState(!1),a=m.useRef(null);m.useEffect(()=>{if(!n)return;const d=u=>{var h;u.key==="Escape"&&(r(!1),(h=a.current)==null||h.focus())};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[n]);const[s,l]=m.useState(!1),i=ye();return m.useEffect(()=>{const d=document.querySelector(".echoo-hero-title");if(!d){const h=()=>l(window.scrollY>8);return h(),window.addEventListener("scroll",h,{passive:!0}),()=>window.removeEventListener("scroll",h)}const u=new IntersectionObserver(([h])=>l(!h.isIntersecting||h.intersectionRatio<1),{rootMargin:"-96px 0px 0px 0px",threshold:1});return u.observe(d),()=>u.disconnect()},[]),t.jsx("header",{className:"echoo-nav fixed inset-x-0 top-0 z-40 px-3 pt-3 md:px-6 md:pt-4",children:t.jsxs("div",{className:"relative mx-auto max-w-5xl",children:[t.jsx("div",{"aria-hidden":"true",className:se("echoo-hero-plate pointer-events-none absolute inset-0 rounded-xl border","border-[var(--glass-border)] bg-[var(--glass-bg)] backdrop-blur-xl","shadow-[0_10px_40px_-16px_hsl(0_0%_0%/0.85)]","origin-top transition-[opacity,transform] duration-300 ease-[
158cubic-bezier(0.16,1,0.3,1)]","motion-reduce:transition-none",s||n?"scale-100 opacity-100":"scale-[0.97] opacity-0")}),t.jsxs("nav",{className:"relative flex h-14 items-center justify-between px-3 md:px-4","aria-label":"Main navigation",children:[t.jsxs(ae,{to:"/","aria-label":"Echoo home",className:"flex min-h-11 items-center gap-2 rounded-md px-1 py-1 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[t.jsx(es,{className:"h-6 w-6","aria-hidden":"true"}),t.jsx("span",{className:"text-base tracking-tight text-foreground",children:"Echoo"})]}),o==="default"&&t.jsxs("div",{className:"hidden items-center gap-1 md:flex",children:[no.map(d=>t.jsx(ae,{to:d.to,className:"rounded-md px-3 py-2 text-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:d.label},d.to)),ao.map(d=>t.jsx(ae,{to:d.to,className:"rounded-md px-3 py-2 text-sm text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:d.label},d.to))]}),t.jsxs("div",{className:"flex items-center gap-1.5",children:[t.jsx("a",{href:Ve.downloadUrl,download:"Echoo.dmg",onClick:e,className:se("min-h-11 items-center rounded-lg bg-accent-solid px-4 text-sm font-medium text-accent-foreground transition-transform active:translate-y-px focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",o==="minimal"?"inline-flex":"hidden md:inline-flex"),children:"Try for free"}),o==="default"&&t.jsx("button",{ref:a,type:"button",onClick:()=>r(d=>!d),className:"inline-flex h-11 w-11 items-center justify-center rounded-md text-foreground md:hidden","aria-expanded":n,"aria-label":"Toggle navigation",children:n?t.jsx(Co,{className:"h-4 w-4","aria-hidden":"true"}):t.jsx(Cn,{className:"h-4 w-4","aria-hidden":"true"})})]})]}),t.jsx(ho,{children:o==="default"&&n&&t.jsx(Ee.nav,{id:"mobile-nav","aria-label":"Mobile navigation",initial:i?!1:{opacity:0,y:-8},animate:{opacity:1,y:0},exit:i?{opacity:0}:{opacity:0,y:-8},transition:{duration:i?0:.18},className:"relative overflow-hidden md:hidden",children:t.jsx("div",{className:"border-t border-[var(--glass-border)] px-3 py-3",children:t.jsxs("div",{className:"grid gap-0.5",children:[no.map(d=>t.jsx(ae,{to:d.to,onClick:()=>r(!1),className:"rounded-md px-3 py-3 text-sm font-medium text-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:d.label},d.to)),ao.map(d=>t.jsx(ae,{to:d.to,onClick:()=>r(!1),className:"rounded-md px-3 py-3 text-sm font-medium text-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:d.label},d.to)),t.jsxs("a",{href:"https://discord.gg/T4DshzkPDG",target:"_blank",rel:"noopener noreferrer",onClick:()=>r(!1),className:"rounded-md px-3 py-3 text-sm font-medium text-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:["Discord support",t.jsx("span",{className:"sr-only",children:" (opens in a new tab)"})]}),t.jsx("a",{href:Ve.downloadUrl,download:"Echoo.dmg",onClick:()=>{r(!1),e()},className:"mt-2 inline-flex min-h-11 items-center justify-center rounded-md bg-accent-solid px-4 text-sm font-medium text-accent-foreground",children:"Try for free"})]})})})})]})})}const os=`
159attribute vec2 position;
160varying vec2 uv;
161void main() {
162  uv = position * 0.5 + 0.5;
163  gl_Position = vec4(position, 0.0, 1.0);
164}`,rs=`
165precision mediump float;
166uniform sampler2D artwork;
167uniform float aspect;
168uniform float elapsed;
169varying vec2 uv;
170void main() {
171  vec2 cover = vec2(min(aspect / 1.5, 1.0), min(1.5 / aspect, 1.0));
172  vec2 point = (uv - 0.5) * cover;
173  float along = (point.x - point.y) * 0.7071;
174  float across = (point.x + point.y) * 0.7071;
175  float phase = elapsed * 0.24;
176  float arrival = smoothstep(0.0, 3.0, elapsed);
177  // Opposite sides countertwist instead of translating the whole image.
178  float twist = sin(along * 9.0 + phase) * sin(across * 7.0 - phase);
179  float envelope = smoothstep(0.06, 0.32, length(point));
180  point += vec2(1.0, 1.0) * twist * 0.045 * envelope * arrival;
181  point += vec2(1.0, -1.0) * sin(across * 10.0 + phase) * 0.012 * arrival;
182  vec3 color = texture2D(artwork, clamp(point + 0.5, 0.001, 0.999)).rgb;
183  gl_FragColor = vec4(color, 1.0);
184}`;function ns(e,o,n){const r=e.getContext("webgl",{alpha:!1,antialias:!1,depth:!1,powerPreference:"low-power"});if(!r)return null;const a=[],s=r.createProgram(),l=r.createBuffer(),i=r.createTexture();if(!s||!l||!i)return r.deleteProgram(s),r.deleteBuffer(l),r.deleteTexture(i),null;const d=()=>{a.forEach(O=>r.deleteShader(O)),r.deleteProgram(s),r.deleteBuffer(l),r.deleteTexture(i)};for(const[O,G]of[[r.VERTEX_SHADER,os],[r.FRAGMENT_SHADER,rs]]){const $=r.createShader(O);if(!$||(a.push($),r.shaderSource($,G),r.compileShader($),!r.getShaderParameter($,r.COMPILE_STATUS)))return d(),null;r.attachShader(s,$)}if(r.linkProgram(s),!r.getProgramParameter(s,r.LINK_STATUS))return d(),null;r.useProgram(s),r.bindBuffer(r.ARRAY_BUFFER,l),r.bufferData(r.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),r.STATIC_DRAW);const u=r.getAttribLocation(s,"position");r.enableVertexAttribArray(u),r.vertexAttribPointer(u,2,r.FLOAT,!1,0,0),r.bindTexture(r.TEXTURE_2D,i),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.uniform1i(r.getUniformLocation(s,"artwork"),0);const h=r.getUniformLocation(s,"aspect"),p=r.getUniformLocation(s,"elapsed");let g=0,c=0,j=0,y=!1,x=!1,E=!1;const N=()=>{r.uniform1f(p,j),r.drawArrays(r.TRIANGLES,0,6)},z=()=>{const O=e.getBoundingClientRect(),G=Math.min(window.devicePixelRatio||1,1.25,1600/Math.max(O.width,1));e.width=Math.max(1,Math.round(O.width*G)),e.height=Math.max(1,Math.round(O.height*G)),r.viewport(0,0,e.width,e.height),r.uniform1f(h,e.width/e.height),y&&N()},F=O=>{!x||E||r.isContextLost()||(c||(c=O),O-c>=1e3/30&&(j+=Math.min((O-c)/1e3,.1),c=O,N()),g=requestAnimationFrame(F))},U=O=>{x=O,cancelAnimationFrame(g),c=0,y&&x&&!E&&(g=requestAnimationFrame(F))},D=new ResizeObserver(z);D.observe(e);const q=new Image;return q.onload=()=>{E||r.isContextLost()||(r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!0),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,q),y=!0,z(),n(),U(x))},q.src=o,{setPlaying:U,destroy:()=>{E=!0,cancelAnimationFrame(g),D.disconnect(),q.onload=null,d()}}}const so="/images/echoo-light-study.webp";function as(){const e=m.useRef(null),o=m.useRef(null),n=m.useRef(null),r=lr(o),a=ye(),{highContrast:s}=Je(),[l,i]=m.useState(!1),[d,u]=m.useState(!0),h=a||s;return m.useEffect(()=>{const p=()=>u(document.visibilityState==="visible");return p(),document.addEventListener("visibilitychange",p),()=>document.removeEventListener("visibilitychange",p)},[]),m.useEffect(()=>{const p=e.current;if(i(!1),!p||h)return;const g=ns(p,so,()=>i(!0));n.current=g;const c=()=>{g==null||g.setPlaying(!1),i(!1)};return p.addEventListener("webglcontextlost",c),()=>{p.removeEventListener("webglcontextlost",c),g==null||g.destroy(),n.current=null}},[h]),m.useEffect(()=>{var p;(p=n.current)==null||p.setPlaying(r&&d&&!h)},[r,d,h]),t.jsxs("div",{ref:o,className:"echoo-hero-art","aria-hidden":"true","data-animated":l&&!h||void 0,children:[t.jsx("img",{src:so,width:1536,height:1024,alt:"",fetchPriority:"high"}),t.jsx("canvas",{ref:e,className:"echoo-hero-ribbons"})]})}function ss({onDownload:e}){const o=ye();return t.jsxs("section",{className:"echoo-hero relative isolate","aria-label":"Echoo writing assistant",children:[t.jsx(as,{}),t.jsxs(Ee.div,{className:"echoo-hero-content relative w-full",initial:o?!1:{opacity:.8,y:12}
184,animate:{opacity:1,y:0},transition:{duration:o?0:.6,ease:[.22,1,.36,1]},children:[t.jsxs("h1",{className:"echoo-hero-title",children:[t.jsx("span",{className:"block",children:"Don’t translate."})," ",t.jsx("span",{className:"echoo-hero-emphasis block",children:"Just write."})]}),t.jsxs("p",{className:"hero-description",children:["The AI writing tool that turns your language into clear, natural English in any Mac app. One shortcut. ",t.jsx("span",{className:"whitespace-nowrap",children:"No copy-paste."})," Still sounds like you."]}),t.jsx("div",{className:"echoo-hero-actions",children:t.jsxs("div",{children:[t.jsxs("a",{href:Ve.downloadUrl,download:"Echoo.dmg",onClick:e,className:"echoo-hero-download inline-flex min-h-14 items-center justify-center gap-3 rounded-xl bg-accent-solid px-7 py-3 text-base font-semibold text-accent-foreground transition-[transform,background-color] duration-200 hover:-translate-y-0.5 active:translate-y-px focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-4 focus-visible:ring-offset-background",children:[t.jsx(Nt,{className:"h-4 w-4 shrink-0","aria-hidden":"true"}),"Download free for Mac"]}),t.jsx("p",{className:"mt-3 text-xs leading-relaxed text-muted-foreground","data-nosnippet":!0,children:"10 free credits · No credit card"})]})})]}),t.jsxs("a",{href:"#writing-example",className:"echoo-scroll-cue","data-nosnippet":!0,children:[t.jsx("span",{children:"See how it works."}),t.jsx(kn,{className:"h-4 w-4","aria-hidden":"true"})]})]})}const ge=[{id:"translate",label:"To English",icon:Nn,app:"Slack",shortcut:"E",command:"To English",language:"fr",before:"salut, tu peux jeter un oeil à la page tarifs ? le menu mobile est cassé",after:"Hey, can you take a look at the pricing page? The mobile nav is broken.",contextTitle:"Your words. Another language.",context:"Translate your draft into natural English, keeping your meaning and tone."},{id:"personal",label:"Personalization",icon:No,app:"Gmail",shortcut:"E",command:"To English",language:"fr",before:"voici la nouvelle version de la page. dis-moi ce que tu en penses",after:"Here’s the updated page design. I’d love to hear your feedback.",contextTitle:"A little about you. A voice that fits.",context:"Your role, age, and audience give the command context for a rewrite that sounds like you."},{id:"context",label:"Screen Context",icon:Ao,app:"Slack",shortcut:"R",command:"Rewrite",language:"en",before:"sure, i’ll take a look and get back to you",after:"Sure, Priya. I’ll review the Q3 report and send feedback before 2pm.",contextTitle:"A reply that follows the conversation.",context:"On your screen · Priya: “Can you review the Q3 report before 2pm?”"},{id:"memory",label:"Memory",icon:Eo,app:"Gmail",shortcut:"R",command:"Rewrite",language:"en",before:"can u forward the deck to nuvantiss? think they need it today",after:"Can you forward the deck to Nuvantis? I think they need it today.",contextTitle:"The right words, remembered.",context:"From an earlier request · “Send the Q3 deck to Nuvantis before Thursday.”"}],Uo="Here is the new version of the page. Tell me what you think.",io=[...ge.flatMap(e=>[e.before,e.after]),Uo];function is(){const[e,o]=m.useState(0),[n,r]=m.useState(!0),a=m.useRef([]),s=ye(),l=ge[e],i=l.id==="personal",d=i&&!n?Uo:l.after,u=l.icon;function h(p,g){var j;let c;if(p.key==="ArrowRight")c=(g+1)%ge.length;else if(p.key==="ArrowLeft")c=(g+ge.length-1)%ge.length;else if(p.key==="Home")c=0;else if(p.key==="End")c=ge.length-1;else return;p.preventDefault(),o(c),(j=a.current[c])==null||j.focus()}return t.jsxs("div",{className:"echoo-showcase","data-scene":l.id,children:[t.jsx("div",{className:"echoo-demo-tabs",role:"tablist","aria-label":"Explore Echoo features",children:ge.map((p,g)=>t.jsxs("button",{ref:c=>{a.current[g]=c},type:"button",role:"tab",id:`example-tab-${p.id}`,"aria-controls":"echoo-example-panel","aria-selected":e===g,tabIndex:e===g?0:-1,onClick:()=>o(g),onKeyDown:c=>h(c,g),children:[t.jsx(p.icon,{size:16,strokeWidth:1.75,"aria-hidden":"true"}),t.jsx("span",{children:p.label})]}
184,p.id))}),t.jsxs("div",{className:"echoo-demo-panel",role:"tabpanel",id:"echoo-example-panel","aria-labelledby":`example-tab-${l.id}`,tabIndex:0,children:[t.jsxs("div",{className:"echoo-demo-toolbar",children:[t.jsxs("span",{className:"echoo-demo-app",children:[t.jsx("img",{src:`/icons/apps/${l.app.toLowerCase()}.svg`,width:16,height:16,alt:"",className:"dark:invert"}),l.app]}),t.jsx("span",{children:"One shortcut. Inline."})]}),t.jsxs("div",{className:"echoo-demo-comparison",children:[t.jsxs("div",{className:"echoo-demo-pane",children:[t.jsxs("div",{className:"echoo-demo-pane-label",children:[t.jsx("span",{className:"sense-num",children:"01"})," Your draft"]}),t.jsxs("div",{className:"echoo-demo-copy",children:[io.map((p,g)=>t.jsx("p",{className:"echoo-demo-reserve","aria-hidden":"true",children:p},g)),t.jsx(Ee.p,{lang:l.language,initial:s?!1:{opacity:0},animate:{opacity:1},transition:{duration:.22},children:l.before},l.id)]}),t.jsx("span",{className:"echoo-demo-pane-note",children:l.language==="fr"?"Written in French":"Written in English"})]}),t.jsxs("div",{className:"echoo-demo-pane echoo-demo-result",children:[t.jsxs("div",{className:"echoo-demo-pane-label",children:[t.jsx("span",{className:"sense-num",children:"02"})," With Echoo ",t.jsx(To,{size:15,"aria-hidden":"true"})]}),t.jsxs("div",{className:"echoo-demo-copy","aria-live":"polite","aria-atomic":"true",children:[io.map((p,g)=>t.jsx("p",{className:"echoo-demo-reserve","aria-hidden":"true",children:p},g)),t.jsx(Ee.p,{initial:s?!1:{opacity:0,y:5},animate:{opacity:1,y:0},transition:{duration:s?0:.28},children:d},`${l.id}-${n}`)]}),t.jsx("span",{className:"echoo-demo-pane-note",children:i&&n?"English, with your personal context":"Ready to send in the same app"})]})]}),t.jsxs("div",{className:"echoo-demo-command",children:[t.jsx("span",{children:l.command}),t.jsxs("span",{className:"echoo-demo-shortcut","aria-label":`Option ${l.shortcut}`,children:[t.jsx("kbd",{children:"⌥"}),t.jsx("kbd",{children:l.shortcut})]}),t.jsx(Ze,{size:16,"aria-hidden":"true"}),t.jsx("span",{children:"Your draft, replaced in place"})]}),t.jsxs("div",{className:"echoo-demo-context",children:[t.jsxs("div",{className:"echoo-demo-context-copy",children:[t.jsx(u,{size:20,strokeWidth:1.75,"aria-hidden":"true"}),t.jsxs("div",{className:"echoo-demo-context-text",children:[ge.map(p=>t.jsxs("div",{className:"echoo-demo-reserve","aria-hidden":"true",children:[t.jsx("p",{className:"echoo-demo-context-title",children:p.contextTitle}),t.jsx("p",{children:p.context})]},p.id)),t.jsxs("div",{children:[t.jsx("p",{className:"echoo-demo-context-title",children:l.contextTitle}),t.jsx("p",{children:l.context})]})]})]}),t.jsx("div",{className:"echoo-demo-context-detail",children:i?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"echoo-demo-profile",children:"Designer · 28 · Writing to clients"}),t.jsxs("button",{className:"echoo-demo-toggle",type:"button",role:"switch","aria-checked":n,"aria-label":"Personalization",onClick:()=>r(p=>!p),children:[t.jsx("span",{className:"echoo-demo-toggle-track","aria-hidden":"true",children:t.jsx("span",{})}),t.jsx("span",{children:n?"On":"Off"})]})]}):t.jsx("span",{children:"Illustrative example · Try another feature above"})})]})]})]})}const ls=[.22,1,.36,1],ie=m.memo(function({children:o,delay:n=0,y:r=20,className:a,as:s="div"}){const l=ye(),i=Ee[s];return t.jsx(i,{initial:l?!1:{opacity:0,y:r},whileInView:l?void 0:{opacity:1,y:0},viewport:{once:!0,amount:.2},transition:l?{duration:0}:{duration:.55,delay:n,ease:ls},className:se(a),children:o})}),cs=[{name:"Slack",slug:"slack"},{name:"VS Code",slug:"visualstudiocode"},{name:"Chrome",slug:"googlechrome"},{name:"Notion",slug:"notion"},{name:"Gmail",slug:"gmail"},{name:"Figma",slug:"figma"},{name:"Linear",slug:"linear"},{name:"X",slug:"x"}];function ds(){const e=ye();return t.jsx("section",{id:"writing-example",className:"echoo-writing-example relative isolate","aria-labelledby":"writing-example-title","data-reduced-motion":e||void 0,children:t.jsxs("div",{className:"echoo-writing-content relative",children:[t.jsxs("div",{className:"echoo-writing-heading",children:[t.jsx("h2",{id:"writing-example-title",className:"headword text-balance",children:"Still you. Now in English."}),t.jsx("p",{className:"mx-auto mt-5 max-w-[42ch] text-base leading-relaxed text-muted-foreground sm:text-lg",children:"Your language. Your context. Your voice. See what one shortcut can do."})]}),t.jsx(is,{}),t.jsxs("div",{className:"echoo-writing-apps",id:"supported-apps",children:[t.jsx("h3",{id:"supported-apps-title",className:"sr-only",children:"Mac apps Echoo works in"}),t.jsx("p",{className:"text-muted-foreground",children:"Write in Slack, Gmail, Notion, or any other Mac apps you already use."}),t.jsx("ul",{role:"list","aria-labelledby":"supported-apps-title",children:cs.map((o,n)=>t.jsx(ie,{as:"li",delay:n*.04,y:12,children:t.jsx("img",{src:`/icons/apps/${o.slug}.svg`,alt:o.name,width:28,height:28,className:"dark:invert",loading:"lazy"})},o.slug))})]})]})})}function us(){const e=ye(),{reducedMotion:o}=Je(),n=!!e||o,r=m.useRef(null),[a,s]=m.useState(!1);return m.useEffect(()=>{var i;n&&((i=r.current)==null||i.pause())},[n]),m.useEffect(()=>{const i=r.current;if(!i||n||window.matchMedia("(max-width: 767px)").matches)return;const d=new IntersectionObserver(([u])=>{u.isIntersecting&&(i.play().catch(()=>{}),d.disconnect())},{rootMargin:"100px"});return d.observe(i),()=>d.disconnect()},[n]),{videoRef:r,reduce:n,playing:a,setPlaying:s,togglePlay:()=>{const i=r.current;i&&(i.paused?i.play():i.pause())}}}const lo=e=>e,ms="max-w-4xl",hs={light:{av1:"/echoo-demo-av1.mp4",mp4:"/echoo-demo.mp4",poster:"/echoo-demo-
184poster.webp"},dark:{av1:"/echoo-demo-av1-dark.mp4",mp4:"/echoo-demo-dark.mp4",poster:"/echoo-demo-poster-dark.webp"}},ps='video/mp4; codecs="av01.0.08M.08, mp4a.40.2"',fs='video/mp4; codecs="avc1.640028, mp4a.40.2"';function gs(){const{videoRef:e,playing:o,setPlaying:n,togglePlay:r}=us(),[a,s]=m.useState(!0),{resolvedTheme:l}=St(),i=hs[l];m.useEffect(()=>{const u=e.current;u&&(u.load(),o&&u.play().catch(()=>{}))},[l]);const d=()=>{const u=e.current;u&&(u.muted=!u.muted,s(u.muted))};return t.jsx("section",{id:"commands",className:"field-ink lamp-left flex items-center py-16 md:min-h-[100dvh] md:py-24","aria-labelledby":"video-demo-title",children:t.jsxs("div",{className:"container mx-auto w-full max-w-7xl px-4 md:px-6",children:[t.jsxs(ie,{children:[t.jsx("h2",{id:"video-demo-title",className:"headword text-center text-4xl font-semibold text-foreground md:text-5xl",children:"See how it works."}),t.jsx("p",{className:"mx-auto mt-4 max-w-[54ch] text-center text-base leading-relaxed text-muted-foreground",children:"Watch Echoo turn a Spanish draft into clear, natural English in Gmail, then rewrite it to sound like you. One shortcut. No copy-paste."})]}),t.jsxs(ie,{delay:.06,className:`mx-auto mt-10 ${ms}`,children:[t.jsx("div",{className:"box overflow-hidden",role:"group","aria-label":"Echoo demo video",children:t.jsxs("div",{className:"relative",children:[t.jsxs("video",{ref:e,className:"w-full bg-muted",width:1920,height:1080,muted:!0,loop:!0,playsInline:!0,poster:i.poster,preload:"none","aria-label":"Echoo demo: a draft in your language becomes clear, natural English in any Mac app","aria-describedby":"video-demo-description",onPlay:()=>n(!0),onPause:()=>n(!1),children:[t.jsx("source",{src:lo(i.av1),type:ps}),t.jsx("source",{src:lo(i.mp4),type:fs}),t.jsx("track",{kind:"captions",src:"/echoo-demo.en.vtt",srcLang:"en",label:"English"})]}),t.jsxs("div",{className:"absolute bottom-3 right-3 flex gap-2",children:[t.jsx("button",{type:"button",onClick:r,className:"inline-flex h-11 w-11 items-center justify-center rounded-full bg-background/70 text-foreground backdrop-blur-sm transition-colors hover:bg-background/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background sm:h-9 sm:w-9","aria-label":o?"Pause video":"Play video",children:o?t.jsx(Pn,{className:"h-4 w-4","aria-hidden":"true"}):t.jsx(In,{className:"h-4 w-4","aria-hidden":"true"})}),t.jsx("button",{type:"button",onClick:d,className:"inline-flex h-11 w-11 items-center justify-center rounded-full bg-background/70 text-foreground backdrop-blur-sm transition-colors hover:bg-background/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background sm:h-9 sm:w-9","aria-label":a?"Unmute video":"Mute video",children:a?t.jsx(Fn,{className:"h-4 w-4","aria-hidden":"true"}):t.jsx(Bn,{className:"h-4 w-4","aria-hidden":"true"})})]})]})}),t.jsxs("div",{id:"video-demo-description",className:"sr-only",children:[t.jsx("p",{children:"Music and interface sound effects only; no spoken narration."}
184),t.jsxs("ol",{children:[t.jsx("li",{children:"Write in your own language: a Spanish reply is typed in Gmail."}),t.jsx("li",{children:"One shortcut, Option+E, turns it into clear, natural English in place. No copy-paste."}),t.jsx("li",{children:"Tell Echoo about you once: in Personalization you add what you do, who you write for, and how you like to write."}),t.jsx("li",{children:"Same draft, now it sounds like you: Option+R rewrites it in your voice. Rewrite, To English and Translate all use your profile."}),t.jsx("li",{children:"In Slack, Screen Context lets Echoo see the message you are replying to, so the reply names Priya, the Q3 report and the 2pm deadline."}),t.jsx("li",{children:"On LinkedIn, Memory learns your names and terms, so Echoo is spelled right the next time."}),t.jsx("li",{children:"Edit any command’s system prompt and shortcut, and use it in any app: Gmail, Slack, LinkedIn, Docs and your IDE."}),t.jsx("li",{children:"The video ends with: Don’t translate. Just write. Download free for Mac, 10 free credits, no credit card."})]})]})]})]})})}const ys=[{title:"Privacy first",body:"Your text goes straight to the AI provider’s API, not through Echoo’s servers.",icon:Rn},{title:"One shortcut",body:"Press a shortcut. Your text changes in place. That’s the whole writing interface.",icon:So},{title:"Your prompts",body:"Edit any default prompt. Create your own commands. Set a shortcut for each.",icon:On},{title:"Sounds more like you",body:"Personalize with your role, age, and audience. Get rewrites and translations that sound like you.",icon:No},{title:"Memory",body:"Commands learn your names, terms, and tone from past requests. You choose when it’s on.",icon:Eo},{title:"Screen Context",body:"Add a screenshot to your command. Give replies the context they need to fit the conversation.",icon:Ao}];function xs(){return t.jsx("section",{id:"how-it-works",className:"field-base lamp-right flex -scroll-mt-20 items-center py-20 md:-scroll-mt-32 md:min-h-[100dvh] md:py-32","aria-labelledby":"entry-title",children:t.jsxs("div",{className:"container mx-auto w-full max-w-7xl px-4 md:px-6",children:[t.jsx(ie,{className:"max-w-3xl",children:t.jsx("h2",{id:"entry-title",className:"headword text-balance text-4xl font-semibold text-foreground md:text-5xl",children:"Your writing. Your rules."})}),t.jsx("ul",{className:"mt-12 grid gap-3 sm:grid-cols-2 lg:grid-cols-3",role:"list",children:ys.map(({title:e,body:o,icon:n},r)=>t.jsxs(ie,{as:"li",delay:r*.04,className:"feature-title box relative flex min-h-44 flex-col p-6 md:p-7",children:[t.jsx(n,{className:"h-5 w-5 shrink-0 text-accent-ink",strokeWidth:1.75,"aria-hidden":"true"}),t.jsxs("div",{className:"pt-10",children:[t.jsx("h3",{className:"text-balance text-xl font-semibold tracking-[-0.02em] text-foreground",children:e}),t.jsx("p",{className:"mt-3 max-w-[54ch] text-pretty text-sm leading-relaxed text-muted-foreground",children:o})]})]},e))}),t.jsx(ie,{delay:.06,className:"mt-14 border-t-2 border-accent pt-8",children:t.jsxs("div",{className:"flex flex-col gap-6 md:flex-row md:items-end md:justify-between",children:[t.jsxs("p",{className:"max-w-[52ch] text-xl leading-relaxed text-foreground md:text-2xl",children:[t.jsx("span",{className:"font-semibold",children:"Start with 10 free credits."})," ","Pick a plan when you need more."]}),t.jsxs("a",{href:"#plans",className:"inline-flex min-h-12 shrink-0 items-center gap-2 rounded-lg bg-accent-solid px-6 text-base font-semibold text-accent-foreground transition-transform active:translate-y-px focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:["See plans",t.jsx(Ze,{className:"h-4 w-4","aria-hidden":"true"})]})]})})]})})}const bs={USD:"$"},vs=e=>e.priceOriginal&&e.priceMonthly?Math.round((1-e.priceMonthly/e.priceOriginal)*100):null,He=[{id:"pro",name:"Pro",tagline:"Write every day without setting up an API key.",priceMonthly:6.99,priceOriginal:9.99,priceCurrency:"USD",requests:300,billingNote:"Cancel anytime.",popular:!0,cta:{label:"Try Echoo free",href:"/get/Echoo.dmg",kind:"primary"},features:["Start instantly - no API key needed","Memory - commands get smarter","Write with ready-made commands","Build commands for your tone and workflow","Works in any Mac app"]},{id:"max",name:"Max",tagline:"More managed commands, still no API setup.",priceMonthly:9.99,priceOriginal:12.99,priceCurrency:"USD",requests:600,billingNote:"Cancel anytime.",cta:{label:"Try Echoo free",href:"/get/Echoo.dmg",kind:"primary"},features:["Start instantly - no API key needed","Memory - commands get smarter","Write with ready-made commands","Build commands for your tone and workflow","Works in any Mac app"]},{id:"business",name:"Business",tagline:"Agree the seats and the monthly credits with us, and the company gets one bill.",priceMonthly:null,priceCurrency:"USD",requests:null,quoted:!0,priceLabel:"Custom",priceUnit:"per seat / month",priceNote:"A seat costs what its monthly credits cost.",typicalFrom:5,contactEmail:"[email protected]",billingNote:"Billed monthly to the company.",cta:{label:"Talk to sales",href:"mailto:[email protected]",kind:"secondary"},features:["A seat for everyone who writes","You set the monthly credits each seat carries","One monthly bill for the company","Memory - commands get smarter","Works in any Mac app"]},{id:"free",name:"Free",tagline:"Every command and model. Pay your AI provider directly.",priceMonthly:0,priceCurrency:"USD",requests:null,billingNote:"No credit card required.",cta:{label:"Try Echoo free",href:"/get/Echoo.dmg",kind:"secondary"},features:["Use your own provider key","Write with ready-made commands","Choose from cloud or local models","Dictate and launch commands by voice","Works in any Mac app"]}],ki=He.filter(e=>e.id!=="free"),Ei=He.find(e=>e.id==="free"),Ye={minSeats:5,maxSeats:250,defaultSeats:10,seatStep:5,creditSteps:[300,600,1200,2500],defaultCredits:600,currency:"USD",salesEmail:"[email protected]"},Ti=[{id:"pro",label:"Pro"},{id:"max",label:"Max"},{id:"business",label:"Business"},{id:"free",label:"Free"}],Ai=[{group:"Plan",rows:[{label:"Price",values:["$6.99 / month","$9.99 / month","Quoted per seat","$0"]},{label:"Billed",values:["Per person","Per person","Monthly, to the company","Never"]},{label:"How you buy it",values:["In the app","In the app","[email protected]","Just download"]}]},{group:"Credits",rows:[{label:"Monthly credits",values:["300 per person","600 per person","Per seat, you decide","10 included, then your own key"]}
184,{label:"You choose the allowance",values:[!1,!1,!0,!1]},{label:"Top up inside the app",values:[!0,!0,!0,!1]},{label:"Unused credits roll over",values:[!1,!1,!1,"Not applicable"]}]},{group:"Commands",rows:[{label:"Rewrite",values:[!0,!0,!0,!0]},{label:"Translate",values:[!0,!0,!0,!0]},{label:"Summarize",values:[!0,!0,!0,!0]},{label:"Custom text commands",values:[!0,!0,!0,!0]},{label:"Memory",values:[!0,!0,!0,!1]},{label:"Ask",values:[!1,!1,!1,!0]},{label:"Prompt Craft",values:[!1,!1,!1,!0]},{label:"Voice dictation",values:[!1,!1,!1,!0]},{label:"Voice Launcher and Instruct",values:[!1,!1,!1,!0]},{label:"Claude Code Skills",values:[!1,!1,!1,!0]}]},{group:"Keys and models",rows:[{label:"Managed key, no setup",values:[!0,!0,!0,"First 10 credits"]},{label:"Bring your own key",values:[!1,!1,!1,!0]},{label:"Providers",values:["Managed","Managed","Managed","10+ cloud or local"]}]},{group:"Works everywhere",rows:[{label:"Most Mac apps",values:[!0,!0,!0,!0]},{label:"macOS 14 or later",values:[!0,!0,!0,!0]}]}],Ni="Business carries no list price: a seat is priced on the monthly credits it carries, agreed with [email protected] and billed monthly to the company. Echoo also has no SSO, no admin console, and no SOC 2 report on any plan, Business included. If your security review requires them, the mode that passes today is Free: your own provider key, so your text goes to a vendor you already have a contract with, or a local model through Ollama, LocalAI, or LiteLLM, so it never leaves the Mac.",Ci=[{q:"What counts as one credit?",a:"One credit is used after one successful managed AI command: a rewrite, a translation, a summary, or a cleanup. Failed commands and BYOK usage do not count against your credit allowance."},{q:"Do I need an API key?",a:"No for the first 10 credits or any paid Pro Mode plan. When you start the free credits or buy Pro, Max, or Business, Echoo issues a dedicated API key for your account, so you can rewrite, translate, and summarize without any setup. Free Mode also lets you bring your own OpenAI, Anthropic, Google, or local key."},{q:"Does my text go through Echoo’s servers on Pro, Max, or Business?",a:"No. On every plan the app sends your text straight from your Mac to the AI provider. On the paid plans and the free credits it uses a dedicated API key Echoo issues for your account; in Free Mode it uses your own key. Echoo’s servers only receive usage counts and subscription status, to meter your credits - never the text of your commands or their results."},{business:!0,q:"Is there a team or business plan?",a:"Yes. Business is seat-based: the company agrees with [email protected] how many seats it needs and how many credits each seat carries per month, and is billed monthly for that. Every seat has its own allowance - credits are not shared between people. Because a seat is priced on the credits it carries, Business is quoted rather than listed. Build the configuration at echoo.ai/business and it writes the email for you."},{business:!0,q:"How much does Echoo Business cost?",a:"There is no list price. A Business seat is priced on the monthly credits it carries, so the number depends on the allowance you set. Agree the seats and the credits with [email protected] and you get a price back. Pro at $6.99 and Max at $9.99 per person stay self-serve and need no quote."},{business:!0,q:"How many seats do I need for Business?",a:"There is no hard minimum, but Business starts making sense at around five people. Below that, buying Pro at $6.99 or Max at $9.99 per person is cheaper and needs no conversation at all. Above 250 seats, email [email protected] and we will size it with you."},{business:!0,q:"Do Business credits pool across the team?",a:"No. Every seat carries its own monthly allowance, the way Pro and Max do - credits are not shared between people. What Business changes is that you set that allowance rather than taking a fixed 300 or 600, and you set it once for the whole company instead of person by person. Each seat resets on the billing cycle and unused credits do not roll over."},{business:!0,q:"Does Echoo train on our text?",a:"No. Echoo never opens a chat window - it calls a provider API, and the major providers state in their API terms that data sent that way is not used to train their models. Consumer chat plans are the opposite setting, training on conversations by default. On Pro, Max, and Business the app calls the AI provider directly with a dedicated key Echoo issues for your account - your text never passes through Echoo’s servers, which only receive usage counts and subscription status to meter your credits. Every mode and what it does with your text is set out in the privacy policy."}
184,{business:!0,q:"Does Echoo have SSO, an admin console, or a SOC 2 report?",a:"No, none of the three, on any plan including Business. Business is a company agreement on seats and credits with one monthly bill, not centralised identity or device management. If your security review requires SSO or SOC 2, Echoo will not pass it yet. What does pass a review is Free Mode: bring your own provider key and your text goes to a provider you already have a contract with, or run a local model through Ollama, LocalAI, or LiteLLM and it never leaves the machine."},{business:!0,q:"How do I get a Business quote?",a:"Set the seats and the credits per seat on the pricing page or at echoo.ai/business, and it opens an email to [email protected] with your configuration already written into it. Or write to [email protected] directly with your seat count and roughly how much your team writes, and we will come back with a price for that shape."},{q:"What is Memory, and does it work on the Free plan?",a:'Memory is a per-command switch on Pro, Max, and Business. With it on, a command remembers your earlier requests and its own earlier results, and learns from them: the names and terms you use, your tone, how long your sentences run, how much detail you keep. Each result needs a little less fixing than the last, and a company name like Arkency stops being "corrected" out of your writing. It is not available on Free, because it runs on the managed key rather than your own. You pick which commands use it, and you can reset one at any time.'},{q:"What exactly am I paying for?",a:"Pro, Max, and Business are software subscriptions for a macOS productivity application with managed AI text workflows. Echoo does not sell user-created media, broker creator listings, or collect voluntary contributions."},{q:"Can I switch from Pro to Max mid-cycle?",a:"Not mid-cycle. To move from Pro to Max, cancel Pro (it stays active until the end of your current period), then subscribe to Max once Pro ends. If you need more credits before then, top up your current plan in the app instead of switching."},{q:"What happens when I hit my limit?",a:"Managed credits pause until your allowance resets on the next billing cycle. You can top up for more credits on your current plan in the app, or keep working in Free (BYOK) mode with your own key at any time. On Business each seat pauses on its own allowance, and you can raise the monthly credits per seat with [email protected] from the next cycle."},{business:!0,q:"Do unused credits roll over?",a:"No. Your credit allowance resets each billing cycle, on every plan, and on Business that applies to each seat separately. It is a monthly allowance, not a bank."},{q:"Can I still use my own API key?",a:"Yes. Free mode is BYOK: every command, voice, skills, and 10+ providers. After the 10 included credits, you use your own provider key unless you upgrade, and that provider may charge or rate-limit usage."},{q:"How do I cancel?",a:"Cancel anytime in the app. Cancellation stops the next renewal. Your current period stays active until it ends. Business subscriptions cancel at the end of the term set in your order."},{business:!0,q:"Is tax included in the price?",a:"Paddle is the Merchant of Record and handles VAT, GST, and sales tax for your region. Tax is calculated at checkout based on your location. Business subscriptions are billed through Paddle in the same way."}],ws=He.filter(e=>e.id!=="free");function js({onDownload:e}){return t.jsx("section",{id:"plans",className:"echoo-plans field-ink lamp-right py-20 md:py-32","aria-labelledby":"plans-title",children:t.jsxs("div",{className:"container mx-auto max-w-7xl px-4 md:px-6",children:[t.jsxs(ie,{className:"max-w-3xl",children:[t.jsx("h2",{id:"plans-title",className:"headword text-balance text-4xl font-semibold text-foreground md:text-5xl",children:"10 credits on us. Then pick your plan."}),t.jsx("p",{className:"mt-6 text-pretty text-lg leading-relaxed text-muted-foreground",children:"AI included. No API key needed. Your prompts, shortcuts, and optional Memory on every paid plan."})]}),t.jsx("div",{className:"mt-12 grid items-stretch gap-4 lg:grid-cols-3",children:ws.map((o,n)=>{const r=bs[o.priceCurrency]??"",a=vs(o),s=o.priceMonthly===null?o.priceLabel:`${r}${o.priceMonthly.toFixed(2)}`;return t.jsxs(ie,{delay:n*.06,className:se("flex flex-col p-6 md:p-8",o.id==="pro"?"box-marked":"box"),children:[t.jsx("h3",{className:"text-xl font-semibold text-foreground",children:o.name}),t.jsxs("div",{className:"mt-5 flex flex-wrap items-baseline gap-x-2 gap-y-1","data-numeric":!0,children:[t.jsx("span",{className:"headword text-4xl font-semibold text-foreground",children:s}),t.jsx("span",{className:"text-sm text-muted-foreground",children:o.quoted?"/seat/month":"/month"}),o.priceOriginal&&t.jsxs("span",{className:"text-base text-muted-foreground line-through",children:[r,o.priceOriginal.toFixed(2)]}),a!==null&&t.jsxs("span",{className:"label-gram text-accent-ink",children:[a,"% off"]})]}),t.jsx("p",{className:"mt-3 text-sm leading-relaxed text-muted-foreground",children:o.requests===null?"Choose monthly credits per person. One company bill.":`${o.requests.toLocaleStr
184ing()} credits a month`}),t.jsxs("div",{className:"mt-auto pt-8",children:[o.quoted?t.jsxs(ae,{to:"/business",className:"inline-flex min-h-11 w-full items-center justify-center gap-2 rounded-lg border border-border-strong px-6 text-sm font-semibold text-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:["Get a quote",t.jsx(Ze,{className:"h-4 w-4","aria-hidden":"true"})]}):t.jsxs("a",{href:Ve.downloadUrl,download:"Echoo.dmg",onClick:e,className:"inline-flex min-h-11 w-full items-center justify-center gap-2 rounded-lg bg-accent-solid px-6 text-sm font-semibold text-accent-foreground transition-transform active:translate-y-px focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:[t.jsx(Nt,{className:"h-4 w-4","aria-hidden":"true"}),"Try for free"]}),t.jsx("p",{className:"mt-3 text-center text-xs text-muted-foreground",children:o.billingNote})]})]},o.id)})}),t.jsxs("div",{className:"mt-6 flex flex-col gap-3 text-sm text-muted-foreground sm:flex-row sm:items-center sm:justify-between",children:[t.jsx("p",{children:"One credit = one successful command. Unused credits don’t roll over."}),t.jsxs(ae,{to:"/pricing",className:"inline-flex min-h-11 shrink-0 items-center gap-1 rounded-sm font-semibold text-foreground hover:text-accent-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:["Compare plans",t.jsx(Ze,{className:"h-4 w-4","aria-hidden":"true"})]})]})]})})}const ks=[{id:"1",name:"Bernard",role:"Writer, VVMac Magazine",content:t.jsxs(t.Fragment,{children:["It is exactly what an AI assistant should be, with the minimum interface necessary and very transparent, I just wrote an article on it in"," ",t.jsx("a",{href:"https://vvmac.fr/wordpress_b/?p=10025",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:text-primary/90 transition-colors underline underline-offset-4 decoration-primary/30 hover:decoration-primary/80 font-bold relative z-10",children:"VVMac Magazine"}),"."]}),reviewBody:"It is exactly what an AI assistant should be, with the minimum interface necessary and very transparent, I just wrote an article on it in VVMac Magazine.",rating:5,verified:!0,link:"https://vvmac.fr/wordpress_b/?p=10025"},{id:"2",name:"Dvir",role:"CEO",content:t.jsxs(t.Fragment,{children:["I've tried many tools claiming to do something similar, but none are even remotely as intuitive and user-friendly.",t.jsx("br",{className:"hidden md:block"})," ","Love it!"]}),reviewBody:"I've tried many tools claiming to do something similar, but none are even remotely as intuitive and user-friendly. Love it!",rating:5,verified:!0}];function Es(){return t.jsx("section",{id:"testimonials",className:"field-base lamp-left py-20 md:py-32","aria-labelledby":"testimonials-title",children:t.jsxs("div",{className:"container mx-auto max-w-7xl px-4 md:px-6",children:[t.jsxs("div",{children:[t.jsx("h2",{id:"testimonials-title",className:"headword text-4xl font-semibold text-foreground md:text-5xl",children:"What people say about Echoo."}),t.jsxs("p",{className:"mt-6 max-w-[62ch] text-lg leading-relaxed text-muted-foreground",children:["Read their feedback, or see Echoo"," ",t.jsxs("a",{href:"https://vvmac.fr/wordpress_b/?p=10025",target:"_blank",rel:"noopener noreferrer",className:"rounded-sm font-medium text-foreground underline underline-offset-2 hover:text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:["featured in VVMac Magazine",t.jsx("span",{className:"sr-only",children:" (opens in new tab)"})]}),"."]})]}),t.jsx("div",{className:"mt-12 grid grid-cols-1 border-t border-border md:grid-cols-2",children:ks.map((e,o)=>t.jsxs(ie,{delay:o*.08,className:o===0?"border-b border-border py-8 md:border-b-0 md:border-r md:pr-10 lg:pr-14":"py-8 md:pl-10 lg:pl-14",children:[t.jsx("div",{className:"flex gap-0.5",role:"img","aria-label":`${e.rating} out of 5 stars`,children:Array.from({length:5}).map((n,r)=>t.jsx(Ln,{className:"h-3.5 w-3.5 text-accent","aria-hidden":"true",fill:r<e.rating?"currentColor":"none",strokeWidth:2},r))}),t.jsx("blockquote",{className:"mt-5 max-w-[46ch] text-lg leading-relaxed text-foreground md:text-xl",children:e.content}),t.jsxs("div",{className:"mt-5 text-sm text-muted-foreground",children:[t.jsx("span",{className:"font-semibold text-foreground",children:e.name}),e.role&&t.jsxs("span",{children:[", ",e.role]}),e.verified&&t.jsxs("span",{className:"label-gram ml-3 inline-flex items-center gap-1 align-middle",children:[t.jsx(En,{className:"h-3.5 w-3.5","aria-hidden":"true",strokeWidth:2}),"Verified"]})]})]},e.id))})]})})}const Ts=m.memo(function({question:o,answer:n}){const[r,a]=m.useState(!1),s=m.useId(),l=`${s}-button`,i=`${s}-panel`;return t.jsxs("div",{className:"box overflow-hidden",children:[t.jsx("h3",{children:t.jsxs("button",{id:l,type:"button",onClick:()=>a(d=>
184!d),"aria-expanded":r,"aria-controls":i,className:"w-full flex items-center justify-between p-4 text-left cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",children:[t.jsx("span",{className:"font-medium text-sm pr-4",children:o}),t.jsx(Tn,{className:se("w-4 h-4 text-muted-foreground flex-shrink-0 transition-transform",r&&"rotate-180"),"aria-hidden":"true"})]})}),t.jsx("div",{id:i,role:"region","aria-labelledby":l,hidden:!r,className:"px-4 pb-4",children:t.jsx("p",{className:"max-w-[68ch] text-sm text-muted-foreground",children:n})})]})}),jt=[{question:"What do I get for free?",answer:"10 credits to try Echoo. No credit card or API key needed. One successful command uses one credit. Choose Pro, Max, or Business when you need more."},{question:"Can I change the prompts?",answer:"Yes. Edit any default command’s prompt, create your own commands, and assign your own shortcuts. All paid plans include this."},{question:"Which plan should I choose?",answer:"Pro includes 300 credits a month for $6.99. Max includes 600 for $9.99. Business offers custom credits per person and one company bill. All three include AI access and optional Memory."},{question:"Where does my writing go?",answer:"Straight from your Mac to the AI provider’s API, on every plan. For the free credits and paid plans, Echoo issues a dedicated API key for your account and the app calls the provider directly with it; your text never passes through Echoo’s servers, which only receive usage counts. Optional Memory keeps command history with the AI provider until reset or its size limit. Memory is off by default."},{question:"How do I install Echoo on Mac?",answer:"Move Echoo to Applications, open it, and allow Accessibility access so it can read and replace text. Requires macOS 14 or later."},{question:"Which Mac apps does Echoo support?",answer:"Most Mac apps, including Slack, Mail, Notion, and Gmail in your browser. Text fields must support macOS Accessibility; some apps and fields do not."}];function As(){return t.jsx("section",{className:"echoo-faq field-base lamp-left py-20 md:py-32","aria-labelledby":"faq-title",children:t.jsxs("div",{className:"container mx-auto w-full max-w-7xl px-4 md:px-6",children:[t.jsx(ie,{children:t.jsx("h2",{id:"faq-title",className:"headword text-4xl font-semibold text-foreground md:text-5xl",children:"A few answers."})}),t.jsx("div",{className:"mt-10 grid gap-3 md:grid-cols-2 md:gap-x-6",children:[jt.slice(0,3),jt.slice(3)].map((e,o)=>t.jsx("div",{className:"space-y-3",children:e.map(n=>t.jsx(Ts,{question:n.question,answer:n.answer},n.question))},o))}),t.jsxs("p",{className:"mt-8 text-sm text-muted-foreground",children:["Already use another writing tool?"," ",t.jsx(ae,{to:"/compare",className:"font-medium text-foreground underline underline-offset-2 hover:text-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm",children:"See comparisons"}),"."]})]})})}function Ns({onDownload:e}){return t.jsx("section",{className:"echoo-final-cta field-ink lamp-left flex items-center py-20 md:min-h-[70dvh] md:py-32","aria-labelledby":"final-cta-title",children:t.jsx("div",{className:"container mx-auto w-full max-w-7xl px-4 md:px-6",children:t.jsxs("div",{className:"grid gap-8 lg:grid-cols-[1fr_auto] lg:items-end",children:[t.jsxs("div",{children:[t.jsx("h2",{id:"final-cta-title",className:"headword text-4xl font-semibold text-foreground md:text-5xl",children:"Write your next message your way."}),t.jsx("p",{className:"mt-6 max-w-2xl text-lg leading-relaxed text-muted-foreground",children:"10 free credits. No credit card. No API key."})]}),t.jsx("div",{className:"flex lg:justify-end",children:t.jsxs("a",{href:Ve.downloadUrl,download:"Echoo.dmg",onClick:e,className:"inline-flex min-h-12 items-center justify-center gap-2 rounded-lg bg-accent-solid px-7 text-base font-semibold text-accent-foreground transition-transform active:translate-y-px focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:[t.jsx(Nt,{className:"h-4 w-4","aria-hidden":"true"}),"Try for free"]})})]})})})}const qo=He.find(e=>e.id==="business"),Cs={"@context":"https://schema.org","@type":"Service","@id":"https://www.echoo.ai/business#service",name:"Echoo Business",description:"Echoo Business is the seat-based plan for teams. The company agrees with [email protected] how many seats it needs and how many credits each seat carries per month, and is billed monthly for that. Every seat has its own allowance; credits are not shared between people. Business has no list price because a seat is priced on the credits it carries; pricing is agreed with [email protected].",url:"https://www.echoo.ai/business",image:"https://www.echoo.ai/og-image.png",category:"Team softw
184are subscription",serviceType:"Team software subscription",provider:{"@id":"https://www.echoo.ai/#organization"},offers:{"@type":"Offer","@id":"https://www.echoo.ai/business#offer",name:"Echoo Business",availability:"https://schema.org/InStock",url:"https://www.echoo.ai/business",priceCurrency:Ye.currency,eligibleCustomerType:"https://schema.org/Business",eligibleQuantity:{"@type":"QuantitativeValue",unitText:"seat",description:`Agreed with sales. Business starts making sense at around ${Ye.minSeats} people; above ${Ye.maxSeats} seats it is sized individually.`},seller:{"@id":"https://www.echoo.ai/#organization"}},additionalProperty:[{"@type":"PropertyValue",name:"Pricing model",value:"Quoted per seat. A seat is priced on the monthly credits it carries; there is no list price and no published starting figure."},{"@type":"PropertyValue",name:"Credits per seat, per month",value:`Set by the buyer. Common allowances are ${Ye.creditSteps.join(", ")}.`},{"@type":"PropertyValue",name:"Credit sharing",value:"None. Every seat carries its own monthly allowance; credits do not pool between people and do not roll over."},{"@type":"PropertyValue",name:"Billing",value:"Monthly, to the company, through Paddle as Merchant of Record."},{"@type":"PropertyValue",name:"How to buy",value:`Agree seats and monthly credits with ${qo.contactEmail}.`},{"@type":"PropertyValue",name:"Single sign-on",value:"Not available"},{"@type":"PropertyValue",name:"Admin console",value:"Not available"},{"@type":"PropertyValue",name:"SOC 2 report",value:"Not available"}]},Si={"@context":"https://schema.org","@type":"Organization","@id":"https://www.echoo.ai/#organization",name:"Echoo",url:"https://www.echoo.ai/",contactPoint:[{"@type":"ContactPoint",contactType:"sales",email:qo.contactEmail,url:"https://www.echoo.ai/business",availableLanguage:["English"],areaServed:"Worldwide"}]},Ke=He.filter(e=>typeof e.priceMonthly=="number"&&e.priceMonthly>0),Ss={"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://www.echoo.ai/#website",name:"Echoo",url:"https://www.echoo.ai/"},{"@type":"WebPage","@id":"https://www.echoo.ai/#webpage",name:"AI Writing Tool for Mac | Echoo",description:"Echoo is the AI writing tool that turns your language into clear, natural English in any Mac app with one shortcut. Try 10 free credits, no card needed.",url:"https://www.echoo.ai/",datePublished:"2025-01-01",dateModified:"2026-09-14",inLanguage:"en-US",isPartOf:{"@id":"https://www.echoo.ai/#website"},author:{"@id":"https://www.echoo.ai/#organization"},speakable:{"@type":"SpeakableSpecification",cssSelector:["h1",".hero-description",".feature-title"]}},{"@type":"SoftwareApplication","@id":"https://www.echoo.ai/#software",name:"Echoo",description:"AI writing tool for macOS. Write in y
184our language and turn your language into clear, natural English with one shortcut in any Mac app, keeping your tone and style. Editable prompts, custom commands, and direct AI provider API calls.",applicationCategory:"ProductivityApplication",operatingSystem:"macOS",url:"https://www.echoo.ai/",downloadUrl:"https://www.echoo.ai/get/Echoo.dmg",softwareVersion:"1.2.0",datePublished:"2025-01-01",softwareRequirements:"macOS 14.0 or later",featureList:["Professional writing improvement while preserving tone, style, and intent","Secure requests to selected AI provider APIs","One-keyboard-shortcut workflow in any Mac app","Editable built-in commands and custom commands","Voice dictation and transcription in 25 languages","Real-time text translation to any language","Grammar and typo correction","Custom AI prompts with keyboard shortcuts or voice triggers","Claude Code Skills via voice or keyboard shortcuts without opening the CLI","Text rewriting in any tone","File intelligence without opening files","Local LLM support via Ollama, LocalAI, LiteLLM","Works in most applications via accessibility","Screen Context - attach screenshots to any AI command","Personalization - add your role, age, and audience as context for rewrites and translations that sound like you","Memory - commands learn from your past requests, picking up your terminology, tone, and level of detail","Voice Launcher - speak a command name to execute it","Voice Instruct - speak the instruction itself","Read Aloud with AI pre-processing and language detection","Edit any built-in command prompt","Create custom commands with your own prompt, model, and shortcut"],screenshot:"https://www.echoo.ai/og-image.png",offers:{"@type":"AggregateOffer",priceCurrency:"USD",lowPrice:Math.min(...Ke.map(e=>e.priceMonthly)).toFixed(2),highPrice:Math.max(...Ke.map(e=>e.priceMonthly)).toFixed(2),offerCount:String(Ke.length),offers:Ke.map(e=>({"@type":"Offer",name:`Echoo ${e.name}`,price:e.priceMonthly.toFixed(2),priceCurrency:e.priceCurrency,url:"https://www.echoo.ai/pricing",availability:"https://schema.org/InStock"}))},aggregateRating:{"@type":"AggregateRating",ratingValue:"5",ratingCount:"2",bestRating:"5",worstRating:"1"},review:[{"@type":"Review",reviewRating:{"@type":"Rating",ratingValue:"5",bestRating:"5"},author:{"@type":"Person",name:"Bernard",jobTitle:"Writer, VVMac Magazine"},reviewBody:"It is exactly what an AI assistant should be, with the minimum interface necessary and very transparent."},{"@type":"Review",reviewRating:{"@type":"Rating",ratingValue:"5",bestRating:"5"},author:{"@type":"Person",name:"Dvir",jobTitle:"CEO"},reviewBody:"I've tried many tools claiming to do something similar, but none are even remotely as intuitive and user-friendly. Love it!"}],author:{"@id":"https://www.echoo.ai/#organization"}},{"@type":"Organization","@id":"https://www.echoo.ai/#organization",name:"Echoo",description:"Echoo builds macOS productivity tools for professional writing, secure AI provider routing, and fast keyboard-shortcut workflows.",url:"https://www.echoo.ai/",logo:"https://www.echoo.ai/favicon.svg",foundingDate:"2025",contactPoint:{"@type":"ContactPoint",contactType:"customer support",email:"[email protected]",url:"https://github.com/michael-elkabetz/echoo/issues"},address:{"@type":"PostalAddress",addressLocality:"Tel Aviv",addressCountry:"IL"},sameAs:["https://www.linkedin.com/company/echoo-ai/","https://x.com/echoo_app","https://bsky.app/profile/echoo-ai.bsky.social","https://www.youtube.com/@Echoo-App","https://www.reddit.com/user/Echoo-ai/","https://news.ycombinator.com/user?id=Echoo-ai","https://github.com/michael-elkabetz/echoo","https://www.producthunt.com/products/echoo","https://www.npmjs.com/package/echoo-cli"]},{"@type":"VideoObject","@id":"https://www.echoo.ai/#demo",name:"Echoo demo: write in your language, get clear English in any Mac app",description:"Echoo turns a Spanish Gmail draft into clear, natural English with one shortcut, replacing the text in place. Personalization rewrites it to sound like you, Screen Context reads the Slack message you are replying to, and Memory keeps your names and terms spelled right on LinkedIn.",thumbnailUrl:"https://www.echoo.ai/echoo-demo-
184poster.webp",contentUrl:"https://www.echoo.ai/echoo-demo.mp4",uploadDate:"2026-09-15T00:00:00+00:00",inLanguage:"en",transcript:"Write in your own language. One shortcut. Clear, natural English. In any Mac app. No copy-paste. Tell Echoo about you. Once. Same draft. Now it sounds like you. Rewrite, To English, Translate. All use it. Echoo sees what you're replying to. Priya, the Q3 report, the 2pm deadline. Memory learns your names and terms. Spelled right the next time. Edit any command. Use it in any app. Don't translate. Just write. Download free for Mac. 10 free credits. No credit card.",duration:"PT52S",publisher:{"@id":"https://www.echoo.ai/#organization"}},{"@type":"FAQPage","@id":"https://www.echoo.ai/#faq",mainEntity:jt.map(e=>({"@type":"Question",name:e.question,acceptedAnswer:{"@type":"Answer",text:e.answer}}))}]},_s=()=>{const{incrementCount:e}=Fo(),o=m.useCallback(()=>{e()},[e]);return t.jsxs("div",{className:"echoo-studio echoo-home min-h-screen bg-background text-foreground overflow-x-hidden font-sans selection:bg-primary/20 selection:text-primary",children:[t.jsx(Qa,{title:"AI Writing Tool for Mac | Echoo",description:"Echoo is the AI writing tool that turns your language into clear, natural English in any Mac app with one shortcut. Try 10 free credits, no card needed.",url:"https://www.echoo.ai/",keywords:"secure AI writing assistant Mac, AI writing shortcut Mac, improve writing without changing tone, Mac AI translator, AI rewrite tool Mac, AI proofreading Mac, fix grammar Mac, AI writing automation Mac, keyboard shortcut AI writing, private AI writing assistant, custom AI commands Mac, professional writing Mac"}),t.jsxs(At,{children:[t.jsx("meta",{name:"robots",content:"index, follow, max-image-preview:large, max-video-preview:-1"}),t.jsx("script",{type:"application/ld+json",children:JSON.stringify(Ss)}),t.jsx("script",{type:"application/ld+json",children:JSON.stringify(Cs)})]}),t.jsx(ts,{onDownload:o}),t.jsxs("main",{id:"main-content",tabIndex:-1,children:[t.jsx(ss,{onDownload:o}),t.jsx(ds,{}),t.jsx(Es,{}),t.jsx(gs,{}),t.jsx(xs,{}),t.jsx(js,{onDownload:o}),t.jsx(As,{}),t.jsx(Ns,{onDownload:o})]}),t.jsx(Ja,{})]})},Ms=m.lazy(()=>T(()=>import("./Landing-DNUuJzfF.js"),__vite__mapDeps([0,1,2]))),Ps=m.lazy(()=>T(()=>import("./NotFound-C5CBFZVF.js"),__vite__mapDeps([3,1,2,4]))),Is=m.lazy(()=>T(()=>import("./Blog-DA5W0gQP.js"),__vite__mapDeps([5,1,2,6,7]))),Rs=m.lazy(()=>T(()=>import("./BlogPost-CVrfly0o.js"),__vite__mapDeps([8,1,2,7,9,10,6,11,3,4]))),Os=m.lazy(()=>T(()=>import("./BlogCategory-Cy0eA-OF.js"),__vite__mapDeps([12,1,2,6,7]))),Ls=m.lazy(()=>T(()=>import("./BlogTag-CdowE0N5.js"),__vite__mapDeps([13,1,2,6,7]))),co=m.lazy(()=>T(()=>import("./Legal-BrToZDrk.js"),__vite__mapDeps([14,1,2,10,15]))),zs=m.lazy(()=>T(()=>import("./About-BWtKbjIF.js"),__vite__mapDeps([16,1,2,4]))),Ds=m.lazy(()=>T(()=>import("./Contact-B0TBJPmh.js"),__vite__mapDeps([17,1,2,4]))),Bs=m.lazy(()=>T(()=>import("./Docs-BcQqnSOp.js"),__vite__mapDeps([18,1,2,4]))),Fs=m.lazy(()=>T(()=>import("./Pricing-C6BVlKxO.js"),__vite__mapDeps([19,1,2,20,11]))),$s=m.lazy(()=>T(()=>import("./Business-SlEkIDfu.js"),__vite__mapDeps([21,1,2,20,11]))),Vs=m.lazy(()=>T(()=>import("./Pay-BICcz64k.js"),__vite__mapDeps([22,1,2]))),Hs=m.lazy(()=>T(()=>import("./MarketplacePage-Cb9GsXel.js"),__vite__mapDeps([23,1,2,9,10,24,25]))),Us=m.lazy(()=>T(()=>import("./CommandDetailsPage-AUaCzKZh.js"),__vite__mapDeps([26,1,2,9,10,7,25,3,4,15]))),qs=m.lazy(()=>T(()=>import("./UseCasePage-CZF-53YY.js"),__vite__mapDeps([27,1,2,28,9,10,7,29,30,31,4]))),Gs=m.lazy(()=>T(()=>import("./ComparePage-BnlcCfdp.js"),__vite__mapDeps([32,1,2,29,33,28,30,4]))),Ws=m.lazy(()=>T(()=>import("./AlternativePage-C6ezPqxF.js"),__vite__mapDeps([34,1,2,33,28,29,30,4]))),Ys=m.lazy(()=>T(()=>import("./IntegrationPage-DjUF6yPX.js"),__vite__mapDeps([35,1,2,30,7,28,29,4]))),Ks=m.lazy(()=>T(()=>import("./PersonaPage-X08OGev-.js"),__vite__mapDeps([36,1,2,31,28,30,29,4]))),Xs=m.lazy(()=>T(()=>import("./GlossaryPage-BTqtYwCR.js"),__vite__mapDeps([37,1,2,38,28,30,9,10,7,29,4]))),je=m.lazy(()=>T(()=>import("./BestToolsPage-Dfs8oDJv.js"),__vite__mapDeps([39,1,2,40,28,4]))),Qs=m.lazy(()=>T(()=>import("./MarketplaceCategory-DsqQj9SP.js"),__vite__mapDeps([41,1,9,10,24,2,25]))),Zs=m.lazy(()=>T(()=>import("./UseCasesHub-BGB72WYr.js"),__vite__mapDeps([42,1,2,28,4]))),Js=m.lazy(()=>T(()=>import("./CompareHub-B2Pek1v_.js"),__vite__mapDeps([43,1,2,29,4]))),ei=m.lazy(()=>T(()=>import("./IntegrationsHub-DkgrHfZR.js"),__vite__mapDeps([44,1,2,30,4]))),ti=m.lazy(()=>T(()=>import("./PersonaHub-BnLTazul.js"),__vite__mapDeps([45,1,2,31,4]))),oi=m.lazy(()=>T(()=>import("./AlternativeHub-Bzn8lSUR.js"),__vite__mapDeps([46,1,2,33,4]))),ri=m.lazy(()=>T(()=>import("./GlossaryHub-DkIXjDBs.js"),__vite__mapDeps([47,1,2,38,40,4]))),ni=m.lazy(()=>T(()=>import("./TranslationsHub-BcwZRM6j.js"),__vite__mapDeps([48,1,2,49,4]))),ai=m.lazy(()=>T(()=>import("./TranslationPage-D1GoZ_1m.js"),__vite__mapDeps([50,1,2,49,30,4]))),si=m.lazy(()=>T(()=>import("./HowToHub-CG6zTcBQ.js"),__vite__mapDeps([51,1,2,52,4]))),ii=m.lazy(()=>T(()=>import("./HowToPage-f1oHjP83.js"),__vite__mapDeps([53,1,2,52,4]))),li=m.lazy(()=>T(()=>import("./WorkflowsHub-DfDvqLoi.js"),__vite__mapDeps([54,1,2,55,4]))),ci=m.lazy(()=>T(()=>import("./WorkflowPage-SuqF-yRO.js"),__vite__mapDeps([56,1,2,55,4]))),di=()=>t.jsxs("div",{className:"min-h-screen bg-background flex flex-col items-center justify-center gap-4",role:"status","aria-live":"polite","aria-busy":"true",children:[t.jsxs("div",{className:"relative flex items-center justify-center w-16 h-16","aria-hidden":"true",children:[t.jsx("div",{className:"w-3 h-3 rounded-full bg-accent z-10"}),[0,1,2].map(e=>t.jsx("div",{className:"absolute inset-0 rounded-full border-2 border-primary/60 motion-safe:animate-[echo-ripple_2s_cubic-bezier(0,0,0.2,1)_infinite]",style:{animationDelay:`${e*.6}s`}},e))]}),t.jsx("p",{className:"text-sm text-muted-foreground",children:"Loading page..."})]}),ui=()=>{const{resolvedTheme:e}
184=St(),[o,n]=m.useState(!1);return m.useEffect(()=>{n(!0)},[]),o?t.jsx(xn,{position:"bottom-right",theme:e}):null},mi=({children:e})=>{const{reducedMotion:o}=Je();return t.jsx(cr,{reducedMotion:o?"always":"user",children:e})},hi=()=>{const{pathname:e}=Et();return t.jsxs(t.Fragment,{children:[t.jsx(Sa,{}),e!=="/pay"&&t.jsxs("a",{href:"https://discord.gg/T4DshzkPDG",target:"_blank",rel:"noopener noreferrer","aria-label":"Discord support (opens in a new tab)",className:`${e==="/"?"hidden sm:inline-flex":"inline-flex"} fixed bottom-5 right-5 z-50 min-h-12 min-w-12 items-center justify-center gap-2 rounded-full bg-accent-solid px-3 text-sm font-medium text-accent-foreground shadow-lg transition-[transform,background-color,box-shadow] hover:-translate-y-0.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background motion-reduce:transform-none sm:px-4 sm:rounded-br-none`,children:[t.jsx(_a,{className:"h-6 w-6 shrink-0"}),t.jsx("span",{className:"hidden sm:inline",children:"Discord Support"})]})]})},pi=()=>{const{pathname:e,hash:o}=Et(),[n,r]=m.useState(""),a=m.useRef(null);return m.useEffect(()=>{const l=!(a.current===null)&&a.current!==e;a.current=e;const i=document.title;let d=!1;const u=()=>{if(d)return!0;const g=document.getElementById("main-content");if(!(g instanceof HTMLElement)||l&&document.title===i)return!1;const c=o.length>1?decodeURIComponent(o.slice(1)):"",j=c?document.getElementById(c):null;return j instanceof HTMLElement?(j.hasAttribute("tabindex")||j.setAttribute("tabindex","-1"),j.scrollIntoView(),j.focus({preventScroll:!0})):l&&(window.scrollTo(0,0),g.focus({preventScroll:!0})),l&&r(document.title||"Page loaded"),!0};if(u())return;const h=new MutationObserver(()=>{u()&&h.disconnect()});h.observe(document.documentElement,{childList:!0,subtree:!0,characterData:!0});const p=window.setTimeout(()=>{h.disconnect(),!d&&l&&r(document.title||"Page loaded")},2e3);return()=>{d=!0,h.disconnect(),window.clearTimeout(p)}},[e,o]),t.jsx("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"sr-only",children:n})},fi=()=>t.jsx(Wn,{defaultTheme:"dark",children:t.jsx(Hn,{children:t.jsx(mi,{children:t.jsxs(Ma,{children:[t.jsx("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[10000] focus:px-4 focus:py-2 focus:bg-primary-solid focus:text-primary-foreground focus:rounded-lg focus:outline-none focus:ring-2 focus:ring-ring",children:"Skip to main content"}),t.jsx(bn,{}),t.jsx(ui,{}),t.jsx(hr,{children:t.jsxs(Va,{children:[t.jsx(hi,{}),t.jsx(pi,{}),t.jsx(m.Suspense,{fallback:t.jsx(di,{}),children:t.jsxs(pr,{children:[t.jsx(v,{path:"/",element:t.jsx(_s,{})}),t.jsx(v,{path:"/get",element:t.jsx(Ms,{})}),t.jsx(v,{path:"/blog",element:t.jsx(Is,{})}),t.jsx(v,{path:"/blog/category/:category",element:t.jsx(Os,{})}),t.jsx(v,{path:"/blog/tag/:tag",element:t.jsx(Ls,{})}),t.jsx(v,{path:"/blog/:slug",element:t.jsx(Rs,{})}),t.jsx(v,{path:"/about",element:t.jsx(zs,{})}),t.jsx(v,{path:"/contact",element:t.jsx(Ds,{})}),t.jsx(v,{path:"/docs",element:t.jsx(Bs,{})}),t.jsx(v,{path:"/legal",element:t.jsx(co,{})}),t.jsx(v,{path:"/legal/:doc",element:t.jsx(co,{})}),t.jsx(v,{path:"/pricing",element:t.jsx(Fs,{})}),t.jsx(v,{path:"/business",element:t.jsx($s,{})}),t.jsx(v,{path:"/pay",element:t.jsx(Vs,{})}),t.jsx(v,{path:"/marketplace",element:t.jsx(Hs,{})}),t.jsx(v,{path:"/marketplace/category/:tag",element:t.jsx(Qs,{})}),t.jsx(v,{path:"/marketplace/:commandSlug",element:t.jsx(Us,{})}),t.jsx(v,{path:"/use-cases",element:t.jsx(Zs,{})}),t.jsx(v,{path:"/use-cases/:slug",element:t.jsx(qs,{})}),t.jsx(v,{path:"/compare",element:t.jsx(Js,{})}),t.jsx(v,{path:"/compare/:slug",element:t.jsx(Gs,{})}),t.jsx(v,{path:"/alternative",element:t.jsx(oi,{})}),t.jsx(v,{path:"/alternative/:slug",element:t.jsx(Ws,{})}),t.jsx(v,{path:"/integrations",element:t.jsx(ei,{})}),t.jsx(v,{path:"/integrations/:slug",element:t.jsx(Ys,{})}),t.jsx(v,{path:"/for",element:t.jsx(ti,{})}),t.jsx(v,{path:"/for/:slug",element:t.jsx(Ks,{})}),t.jsx(v,{path:"/learn",element:t.jsx(ri,{})}),t.jsx(v,{path:"/learn/best-ai-rewrite-tools",element:t.jsx(je,{})}),t.jsx(v,{path:"/learn/best-ai-proofreading-tools",element:t.jsx(je,{})}),t.jsx(v,{path:"/learn/best-paraphrasing-tools",element:t.jsx(je,{})}),t.jsx(v,{path:"/learn/best-ai-grammar-checkers",element:t.jsx(je,{})}),t.jsx(v,{path:"/learn/best-sentence-rewriter-tools",element:t.jsx(je,{})}),t.jsx(v,{path:"/learn/best-ai-writing-automation-tools",element:t.jsx(je,{})}),t.jsx(v,{path:"/learn/best-ai-writing-tools-macos",element:t.jsx(je,{})}),t.jsx(v,{path:"/learn/:slug",element:t.jsx(Xs,{})}),t.jsx(v,{path:"/translate",element:t.jsx(ni,{})}),t.jsx(v,{path:"/translate/:slug",element:t.jsx(ai,{})}),t.jsx(v,{path:"/how-to",element:t.jsx(si,{})}),t.jsx(v,{path:"/how-to/:slug",element:t.jsx(ii,{})}),t.jsx(v,{path:"/workflows",element:t.jsx(li,{})}),t.jsx(v,{path:"/workflows/:slug",element:t.jsx(ci,{})}),t.jsx(v,{path:"*",element:t.jsx(Ps,{})})]})})]})})]})})})}),gi=["echoo-theme","echoo-a11y-settings"],uo=()=>
184{try{gi.forEach(e=>localStorage.removeItem(e))}catch{}},mt=()=>{const e=new URL(window.location.href);e.searchParams.set("_echoo_reload",Date.now().toString()),window.location.replace(e)};class yi extends m.Component{constructor(){super(...arguments);oe(this,"state",{errorMessage:"",hasError:!1});oe(this,"refreshPage",()=>{sessionStorage.removeItem("chunk-reload"),sessionStorage.removeItem("app-recovery"),sessionStorage.removeItem("storage-recovery"),uo(),mt()})}static getDerivedStateFromError(n){return{errorMessage:n.message,hasError:!0}}componentDidCatch(){if(sessionStorage.getItem("app-recovery")!==this.props.buildId){sessionStorage.setItem("app-recovery",this.props.buildId),mt();return}sessionStorage.getItem("storage-recovery")!==this.props.buildId&&(sessionStorage.setItem("storage-recovery",this.props.buildId),uo(),mt())}render(){return this.state.hasError?t.jsxs("main",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-background px-6 text-center text-foreground",role:"alert",children:[t.jsx("h1",{className:"text-2xl font-semibold",children:"Echoo couldn't finish loading"}),t.jsx("p",{className:"max-w-md text-muted-foreground",children:"Automatic recovery failed. Reset this site's saved preferences and try again."}),this.state.errorMessage&&t.jsxs("p",{className:"max-w-md break-words font-mono text-xs text-muted-foreground",children:["Error: ",this.state.errorMessage]}),t.jsx("button",{type:"button",onClick:this.refreshPage,className:"inline-flex min-h-11 items-center justify-center rounded-md bg-primary-solid px-5 text-sm font-medium text-primary-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:"Reset and retry"})]}):this.props.children}}const ht=new URL(window.location.href);ht.searchParams.has("_echoo_reload")&&(ht.searchParams.delete("_echoo_reload"),window.history.replaceState(window.history.state,"",ht));window.addEventListener("vite:preloadError",e=>{if(sessionStorage.getItem("chunk-reload")===import.meta.url)return;e.preventDefault(),sessionStorage.setItem("chunk-reload",import.meta.url);const o=new URL(window.location.href);o.searchParams.set("_echoo_reload",Date.now().toString()),window.location.replace(o)});fo(document.getElementById("root")).render(t.jsx(jo,{children:t.jsx(dr,{features:ur,strict:!0,children:t.jsx(yi,{buildId:import.meta.url,children:t.jsx(fi,{})})})}));export{kn as A,Cs as B,Ti as C,Nt as D,es as E,Ns as F,ss as H,Nn as L,ts as N,js as P,ie as R,Qa as S,Es as T,gs as V,Co as X,T as _,Ja as a,At as b,_ as c,se as d,Ve as e,ye as f,Ze as g,Si as h,ki as i,Ei as j,Ai as k,Ni as l,Ci as m,ks as n,bs as o,vs as p,To as q,Ye as r,wi as s,ji as t,Fo as u,Ts as v};

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