@tom2012/cc-web 1.5.70 → 1.5.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/backend/dist/routes/claude.d.ts.map +1 -1
- package/backend/dist/routes/claude.js +46 -0
- package/backend/dist/routes/claude.js.map +1 -1
- package/frontend/dist/assets/{GraphPreview-Bw3Dfm8E.js → GraphPreview-QqDpOEoI.js} +1 -1
- package/frontend/dist/assets/{OfficePreview-Doqf6kiL.js → OfficePreview-BC2woErg.js} +3 -3
- package/frontend/dist/assets/{ProjectPage-CeHXpRBP.js → ProjectPage-B8Tdoz_M.js} +35 -35
- package/frontend/dist/assets/{SettingsPage-beAswfts.js → SettingsPage-C8572fFD.js} +1 -1
- package/frontend/dist/assets/{ShareViewPage-C_SAUX_-.js → ShareViewPage-PTSFe5df.js} +1 -1
- package/frontend/dist/assets/{SkillHubPage-BKMSJ6FQ.js → SkillHubPage-BHgZp94q.js} +2 -2
- package/frontend/dist/assets/{bot-DEz0YI_q.js → bot-CP4ljg4K.js} +1 -1
- package/frontend/dist/assets/{chevron-down-BvnHgiSX.js → chevron-down-BPKbPuX9.js} +1 -1
- package/frontend/dist/assets/{download-DWlC6Rzj.js → download-DJNy8XSX.js} +1 -1
- package/frontend/dist/assets/{index-dpSItQs8.js → index-BPzNyZy4.js} +31 -31
- package/frontend/dist/assets/{index-CrvtQ37j.js → index-CENzb-E2.js} +24 -24
- package/frontend/dist/assets/index-PNcejD9U.css +1 -0
- package/frontend/dist/assets/{jszip.min-CK_j6lPr.js → jszip.min-CPp1Je4B.js} +1 -1
- package/frontend/dist/assets/{save-rY9Wdsw_.js → save-dexIyJWW.js} +1 -1
- package/frontend/dist/assets/{user-BWHKMNkj.js → user-BGUBSa7q.js} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/frontend/dist/assets/index-CeYoiJuE.css +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ProjectPage-
|
|
2
|
-
var vw=Object.defineProperty;var xw=(e,t,n)=>t in e?vw(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ol=(e,t,n)=>xw(e,typeof t!="symbol"?t+"":t,n);function ww(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&&!Array.isArray(r)){for(const s in r)if(s!=="default"&&!(s in e)){const o=Object.getOwnPropertyDescriptor(r,s);o&&Object.defineProperty(e,s,o.get?o:{enumerable:!0,get:()=>r[s]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();var
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ProjectPage-B8Tdoz_M.js","assets/save-dexIyJWW.js","assets/download-DJNy8XSX.js","assets/chevron-down-BPKbPuX9.js","assets/bot-CP4ljg4K.js","assets/user-BGUBSa7q.js","assets/ProjectPage-9CEnUXvW.css","assets/SettingsPage-C8572fFD.js","assets/SkillHubPage-BHgZp94q.js","assets/ShareViewPage-PTSFe5df.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
var vw=Object.defineProperty;var xw=(e,t,n)=>t in e?vw(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ol=(e,t,n)=>xw(e,typeof t!="symbol"?t+"":t,n);function ww(e,t){for(var n=0;n<t.length;n++){const r=t[n];if(typeof r!="string"&&!Array.isArray(r)){for(const s in r)if(s!=="default"&&!(s in e)){const o=Object.getOwnPropertyDescriptor(r,s);o&&Object.defineProperty(e,s,o.get?o:{enumerable:!0,get:()=>r[s]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();var KM=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Dm(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function YM(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,s.get?s:{enumerable:!0,get:function(){return e[r]}})}),n}var Am={exports:{}},xa={},Lm={exports:{}},G={};/**
|
|
3
3
|
* @license React
|
|
4
4
|
* react.production.min.js
|
|
5
5
|
*
|
|
@@ -56,7 +56,7 @@ Error generating stack: `+o.message+`
|
|
|
56
56
|
* LICENSE.md file in the root directory of this source tree.
|
|
57
57
|
*
|
|
58
58
|
* @license MIT
|
|
59
|
-
*/function ho(){return ho=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ho.apply(this,arguments)}const Pd=p.createContext(null),SE=p.createContext(null),To=p.createContext(null),Ia=p.createContext(null),Kn=p.createContext({outlet:null,matches:[],isDataRoute:!1}),Jy=p.createContext(null);function No(){return p.useContext(Ia)!=null}function Td(){return No()||Pe(!1),p.useContext(Ia).location}function ev(e){p.useContext(To).static||p.useLayoutEffect(e)}function Va(){let{isDataRoute:e}=p.useContext(Kn);return e?LE():EE()}function EE(){No()||Pe(!1);let e=p.useContext(Pd),{basename:t,future:n,navigator:r}=p.useContext(To),{matches:s}=p.useContext(Kn),{pathname:o}=Td(),i=JSON.stringify(Qy(s,n.v7_relativeSplatPath)),a=p.useRef(!1);return ev(()=>{a.current=!0}),p.useCallback(function(c,d){if(d===void 0&&(d={}),!a.current)return;if(typeof c=="number"){r.go(c);return}let u=Zy(c,JSON.parse(i),o,d.relative==="path");e==null&&t!=="/"&&(u.pathname=u.pathname==="/"?t:dr([t,u.pathname])),(d.replace?r.replace:r.push)(u,d.state,d)},[t,r,i,o,e])}function
|
|
59
|
+
*/function ho(){return ho=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ho.apply(this,arguments)}const Pd=p.createContext(null),SE=p.createContext(null),To=p.createContext(null),Ia=p.createContext(null),Kn=p.createContext({outlet:null,matches:[],isDataRoute:!1}),Jy=p.createContext(null);function No(){return p.useContext(Ia)!=null}function Td(){return No()||Pe(!1),p.useContext(Ia).location}function ev(e){p.useContext(To).static||p.useLayoutEffect(e)}function Va(){let{isDataRoute:e}=p.useContext(Kn);return e?LE():EE()}function EE(){No()||Pe(!1);let e=p.useContext(Pd),{basename:t,future:n,navigator:r}=p.useContext(To),{matches:s}=p.useContext(Kn),{pathname:o}=Td(),i=JSON.stringify(Qy(s,n.v7_relativeSplatPath)),a=p.useRef(!1);return ev(()=>{a.current=!0}),p.useCallback(function(c,d){if(d===void 0&&(d={}),!a.current)return;if(typeof c=="number"){r.go(c);return}let u=Zy(c,JSON.parse(i),o,d.relative==="path");e==null&&t!=="/"&&(u.pathname=u.pathname==="/"?t:dr([t,u.pathname])),(d.replace?r.replace:r.push)(u,d.state,d)},[t,r,i,o,e])}function XM(){let{matches:e}=p.useContext(Kn),t=e[e.length-1];return t?t.params:{}}function kE(e,t){return bE(e,t)}function bE(e,t,n,r){No()||Pe(!1);let{navigator:s}=p.useContext(To),{matches:o}=p.useContext(Kn),i=o[o.length-1],a=i?i.params:{};i&&i.pathname;let l=i?i.pathnameBase:"/";i&&i.route;let c=Td(),d;if(t){var u;let S=typeof t=="string"?ds(t):t;l==="/"||(u=S.pathname)!=null&&u.startsWith(l)||Pe(!1),d=S}else d=c;let f=d.pathname||"/",y=f;if(l!=="/"){let S=l.replace(/^\//,"").split("/");y="/"+f.replace(/^\//,"").split("/").slice(S.length).join("/")}let w=ZS(e,{pathname:y}),x=jE(w&&w.map(S=>Object.assign({},S,{params:Object.assign({},a,S.params),pathname:dr([l,s.encodeLocation?s.encodeLocation(S.pathname).pathname:S.pathname]),pathnameBase:S.pathnameBase==="/"?l:dr([l,s.encodeLocation?s.encodeLocation(S.pathnameBase).pathname:S.pathnameBase])})),o,n,r);return t&&x?p.createElement(Ia.Provider,{value:{location:ho({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:Tn.Pop}},x):x}function CE(){let e=AE(),t=xE(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,s={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return p.createElement(p.Fragment,null,p.createElement("h2",null,"Unexpected Application Error!"),p.createElement("h3",{style:{fontStyle:"italic"}},t),n?p.createElement("pre",{style:s},n):null,null)}const PE=p.createElement(CE,null);class TE extends p.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?p.createElement(Kn.Provider,{value:this.props.routeContext},p.createElement(Jy.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function NE(e){let{routeContext:t,match:n,children:r}=e,s=p.useContext(Pd);return s&&s.static&&s.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=n.route.id),p.createElement(Kn.Provider,{value:t},r)}function jE(e,t,n,r){var s;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var o;if(!n)return null;if(n.errors)e=n.matches;else if((o=r)!=null&&o.v7_partialHydration&&t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let i=e,a=(s=n)==null?void 0:s.errors;if(a!=null){let d=i.findIndex(u=>u.route.id&&(a==null?void 0:a[u.route.id])!==void 0);d>=0||Pe(!1),i=i.slice(0,Math.min(i.length,d+1))}let l=!1,c=-1;if(n&&r&&r.v7_partialHydration)for(let d=0;d<i.length;d++){let u=i[d];if((u.route.HydrateFallback||u.route.hydrateFallbackElement)&&(c=d),u.route.id){let{loaderData:f,errors:y}=n,w=u.route.loader&&f[u.route.id]===void 0&&(!y||y[u.route.id]===void 0);if(u.route.lazy||w){l=!0,c>=0?i=i.slice(0,c+1):i=[i[0]];break}}}return i.reduceRight((d,u,f)=>{let y,w=!1,x=null,S=null;n&&(y=a&&u.route.id?a[u.route.id]:void 0,x=u.route.errorElement||PE,l&&(c<0&&f===0?(_E("route-fallback"),w=!0,S=null):c===f&&(w=!0,S=u.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,f+1)),g=()=>{let v;return y?v=x:w?v=S:u.route.Component?v=p.createElement(u.route.Component,null):u.route.element?v=u.route.element:v=d,p.createElement(NE,{match:u,routeContext:{outlet:d,matches:m,isDataRoute:n!=null},children:v})};return n&&(u.route.ErrorBoundary||u.route.errorElement||f===0)?p.createElement(TE,{location:n.location,revalidation:n.revalidation,component:x,error:y,children:g(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):g()},null)}var tv=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(tv||{}),nv=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(nv||{});function RE(e){let t=p.useContext(Pd);return t||Pe(!1),t}function ME(e){let t=p.useContext(SE);return t||Pe(!1),t}function DE(e){let t=p.useContext(Kn);return t||Pe(!1),t}function rv(e){let t=DE(),n=t.matches[t.matches.length-1];return n.route.id||Pe(!1),n.route.id}function AE(){var e;let t=p.useContext(Jy),n=ME(),r=rv();return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function LE(){let{router:e}=RE(tv.UseNavigateStable),t=rv(nv.UseNavigateStable),n=p.useRef(!1);return ev(()=>{n.current=!0}),p.useCallback(function(s,o){o===void 0&&(o={}),n.current&&(typeof s=="number"?e.navigate(s):e.navigate(s,ho({fromRouteId:t},o)))},[e,t])}const Vh={};function _E(e,t,n){Vh[e]||(Vh[e]=!0)}function OE(e,t){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function sv(e){let{to:t,replace:n,state:r,relative:s}=e;No()||Pe(!1);let{future:o,static:i}=p.useContext(To),{matches:a}=p.useContext(Kn),{pathname:l}=Td(),c=Va(),d=Zy(t,Qy(a,o.v7_relativeSplatPath),l,s==="path"),u=JSON.stringify(d);return p.useEffect(()=>c(JSON.parse(u),{replace:n,state:r,relative:s}),[c,u,s,n,r]),null}function yn(e){Pe(!1)}function IE(e){let{basename:t="/",children:n=null,location:r,navigationType:s=Tn.Pop,navigator:o,static:i=!1,future:a}=e;No()&&Pe(!1);let l=t.replace(/^\/*/,"/"),c=p.useMemo(()=>({basename:l,navigator:o,static:i,future:ho({v7_relativeSplatPath:!1},a)}),[l,a,o,i]);typeof r=="string"&&(r=ds(r));let{pathname:d="/",search:u="",hash:f="",state:y=null,key:w="default"}=r,x=p.useMemo(()=>{let S=Xy(d,l);return S==null?null:{location:{pathname:S,search:u,hash:f,state:y,key:w},navigationType:s}},[l,d,u,f,y,w,s]);return x==null?null:p.createElement(To.Provider,{value:c},p.createElement(Ia.Provider,{children:n,value:x}))}function VE(e){let{children:t,location:n}=e;return kE(ec(t),n)}new Promise(()=>{});function ec(e,t){t===void 0&&(t=[]);let n=[];return p.Children.forEach(e,(r,s)=>{if(!p.isValidElement(r))return;let o=[...t,s];if(r.type===p.Fragment){n.push.apply(n,ec(r.props.children,o));return}r.type!==yn&&Pe(!1),!r.props.index||!r.props.children||Pe(!1);let i={id:r.props.id||o.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(i.children=ec(r.props.children,o)),n.push(i)}),n}/**
|
|
60
60
|
* React Router DOM v6.30.3
|
|
61
61
|
*
|
|
62
62
|
* Copyright (c) Remix Software Inc.
|
|
@@ -73,37 +73,37 @@ Error generating stack: `+o.message+`
|
|
|
73
73
|
${v}px !important;
|
|
74
74
|
${E}px !important;
|
|
75
75
|
}
|
|
76
|
-
`),()=>{var k;(k=a.current)==null||k.removeAttribute("data-motion-pop-id"),P.contains(C)&&P.removeChild(C)}},[t]),h.jsx(j2,{isPresent:t,childRef:a,sizeRef:l,pop:o,children:o===!1?e:p.cloneElement(e,{ref:u})})}const M2=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:s,presenceAffectsLayout:o,mode:i,anchorX:a,anchorY:l,root:c})=>{const d=jd(D2),u=p.useId();let f=!0,y=p.useMemo(()=>(f=!1,{id:u,initial:t,isPresent:n,custom:s,onExitComplete:w=>{d.set(w,!0);for(const x of d.values())if(!x)return;r&&r()},register:w=>(d.set(w,!1),()=>d.delete(w))}),[n,d,r]);return o&&f&&(y={...y}),p.useMemo(()=>{d.forEach((w,x)=>d.set(x,!1))},[n]),p.useEffect(()=>{!n&&!d.size&&r&&r()},[n]),e=h.jsx(R2,{pop:i==="popLayout",isPresent:n,anchorX:a,anchorY:l,root:c,children:e}),h.jsx(Fa.Provider,{value:y,children:e})};function D2(){return new Map}function D0(e=!0){const t=p.useContext(Fa);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:r,register:s}=t,o=p.useId();p.useEffect(()=>{if(e)return s(o)},[e]);const i=p.useCallback(()=>e&&r&&r(o),[o,r,e]);return!n&&r?[!1,i]:[!0]}const ni=e=>e.key||"";function Wp(e){const t=[];return p.Children.forEach(e,n=>{p.isValidElement(n)&&t.push(n)}),t}const tf=({children:e,custom:t,initial:n=!0,onExitComplete:r,presenceAffectsLayout:s=!0,mode:o="sync",propagate:i=!1,anchorX:a="left",anchorY:l="top",root:c})=>{const[d,u]=D0(i),f=p.useMemo(()=>Wp(e),[e]),y=i&&!d?[]:f.map(ni),w=p.useRef(!0),x=p.useRef(f),S=jd(()=>new Map),m=p.useRef(new Set),[g,v]=p.useState(f),[E,C]=p.useState(f);ov(()=>{w.current=!1,x.current=f;for(let b=0;b<E.length;b++){const D=ni(E[b]);y.includes(D)?(S.delete(D),m.current.delete(D)):S.get(D)!==!0&&S.set(D,!1)}},[E,y.length,y.join("-")]);const P=[];if(f!==g){let b=[...f];for(let D=0;D<E.length;D++){const T=E[D],A=ni(T);y.includes(A)||(b.splice(D,0,T),P.push(T))}return o==="wait"&&P.length&&(b=P),C(Wp(b)),v(f),null}const{forceRender:k}=p.useContext(Nd);return h.jsx(h.Fragment,{children:E.map(b=>{const D=ni(b),T=i&&!d?!1:f===E||y.includes(D),A=()=>{if(m.current.has(D))return;if(S.has(D))m.current.add(D),S.set(D,!0);else return;let L=!0;S.forEach(Z=>{Z||(L=!1)}),L&&(k==null||k(),C(x.current),i&&(u==null||u()),r&&r())};return h.jsx(M2,{isPresent:T,initial:!w.current||n?void 0:!1,custom:t,presenceAffectsLayout:s,mode:o,root:c,onExitComplete:T?void 0:A,anchorX:a,anchorY:l,children:b},D)})})},A0=p.createContext({strict:!1}),Hp={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let Gp=!1;function A2(){if(Gp)return;const e={};for(const t in Hp)e[t]={isEnabled:n=>Hp[t].some(r=>!!n[r])};l0(e),Gp=!0}function L0(){return A2(),yC()}function L2(e){const t=L0();for(const n in e)t[n]={...t[n],...e[n]};l0(t)}const _2=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function ha(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||_2.has(e)}let _0=e=>!ha(e);function O2(e){typeof e=="function"&&(_0=t=>t.startsWith("on")?!ha(t):e(t))}try{O2(require("@emotion/is-prop-valid").default)}catch{}function I2(e,t,n){const r={};for(const s in e)s==="values"&&typeof e.values=="object"||Ie(e[s])||(_0(s)||n===!0&&ha(s)||!t&&!ha(s)||e.draggable&&s.startsWith("onDrag"))&&(r[s]=e[s]);return r}const Ua=p.createContext({});function V2(e,t){if($a(e)){const{initial:n,animate:r}=e;return{initial:n===!1||go(n)?n:void 0,animate:go(r)?r:void 0}}return e.inherit!==!1?t:{}}function F2(e){const{initial:t,animate:n}=V2(e,p.useContext(Ua));return p.useMemo(()=>({initial:t,animate:n}),[Kp(t),Kp(n)])}function Kp(e){return Array.isArray(e)?e.join(" "):e}const nf=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function O0(e,t,n){for(const r in t)!Ie(t[r])&&!m0(r,n)&&(e[r]=t[r])}function z2({transformTemplate:e},t){return p.useMemo(()=>{const n=nf();return qd(n,t,e),Object.assign({},n.vars,n.style)},[t])}function B2(e,t){const n=e.style||{},r={};return O0(r,n,e),Object.assign(r,z2(e,t)),r}function $2(e,t){const n={},r=B2(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,r.userSelect=r.WebkitUserSelect=r.WebkitTouchCallout="none",r.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=r,n}const I0=()=>({...nf(),attrs:{}});function U2(e,t,n,r){const s=p.useMemo(()=>{const o=I0();return g0(o,t,v0(r),e.transformTemplate,e.style),{...o.attrs,style:{...o.style}}},[t]);if(e.style){const o={};O0(o,e.style,e),s.style={...o,...s.style}}return s}const W2=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function rf(e){return typeof e!="string"||e.includes("-")?!1:!!(W2.indexOf(e)>-1||/[A-Z]/u.test(e))}function H2(e,t,n,{latestValues:r},s,o=!1,i){const l=(i??rf(e)?U2:$2)(t,r,s,e),c=I2(t,typeof e=="string",o),d=e!==p.Fragment?{...c,...l,ref:n}:{},{children:u}=t,f=p.useMemo(()=>Ie(u)?u.get():u,[u]);return p.createElement(e,{...d,children:f})}function G2({scrapeMotionValuesFromProps:e,createRenderState:t},n,r,s){return{latestValues:K2(n,r,s,e),renderState:t()}}function K2(e,t,n,r){const s={},o=r(e,{});for(const f in o)s[f]=Mi(o[f]);let{initial:i,animate:a}=e;const l=$a(e),c=i0(e);t&&c&&!l&&e.inherit!==!1&&(i===void 0&&(i=t.initial),a===void 0&&(a=t.animate));let d=n?n.initial===!1:!1;d=d||i===!1;const u=d?a:i;if(u&&typeof u!="boolean"&&!Ba(u)){const f=Array.isArray(u)?u:[u];for(let y=0;y<f.length;y++){const w=Wd(e,f[y]);if(w){const{transitionEnd:x,transition:S,...m}=w;for(const g in m){let v=m[g];if(Array.isArray(v)){const E=d?v.length-1:0;v=v[E]}v!==null&&(s[g]=v)}for(const g in x)s[g]=x[g]}}}return s}const V0=e=>(t,n)=>{const r=p.useContext(Ua),s=p.useContext(Fa),o=()=>G2(e,t,r,s);return n?o():jd(o)},Y2=V0({scrapeMotionValuesFromProps:Jd,createRenderState:nf}),X2=V0({scrapeMotionValuesFromProps:x0,createRenderState:I0}),Q2=Symbol.for("motionComponentSymbol");function Z2(e,t,n){const r=p.useRef(n);p.useInsertionEffect(()=>{r.current=n});const s=p.useRef(null);return p.useCallback(o=>{var a;o&&((a=e.onMount)==null||a.call(e,o));const i=r.current;if(typeof i=="function")if(o){const l=i(o);typeof l=="function"&&(s.current=l)}else s.current?(s.current(),s.current=null):i(o);else i&&(i.current=o);t&&(o?t.mount(o):t.unmount())},[t])}const F0=p.createContext({});function jr(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function q2(e,t,n,r,s,o){var v,E;const{visualElement:i}=p.useContext(Ua),a=p.useContext(A0),l=p.useContext(Fa),c=p.useContext(ef),d=c.reducedMotion,u=c.skipAnimations,f=p.useRef(null),y=p.useRef(!1);r=r||a.renderer,!f.current&&r&&(f.current=r(e,{visualState:t,parent:i,props:n,presenceContext:l,blockInitialAnimation:l?l.initial===!1:!1,reducedMotionConfig:d,skipAnimations:u,isSVG:o}),y.current&&f.current&&(f.current.manuallyAnimateOnMount=!0));const w=f.current,x=p.useContext(F0);w&&!w.projection&&s&&(w.type==="html"||w.type==="svg")&&J2(f.current,n,s,x);const S=p.useRef(!1);p.useInsertionEffect(()=>{w&&S.current&&w.update(n,l)});const m=n[Kv],g=p.useRef(!!m&&typeof window<"u"&&!((v=window.MotionHandoffIsComplete)!=null&&v.call(window,m))&&((E=window.MotionHasOptimisedAnimation)==null?void 0:E.call(window,m)));return ov(()=>{y.current=!0,w&&(S.current=!0,window.MotionIsMounted=!0,w.updateFeatures(),w.scheduleRenderMicrotask(),g.current&&w.animationState&&w.animationState.animateChanges())}),p.useEffect(()=>{w&&(!g.current&&w.animationState&&w.animationState.animateChanges(),g.current&&(queueMicrotask(()=>{var C;(C=window.MotionHandoffMarkAsComplete)==null||C.call(window,m)}),g.current=!1),w.enteringChildren=void 0)}),w}function J2(e,t,n,r){const{layoutId:s,layout:o,drag:i,dragConstraints:a,layoutScroll:l,layoutRoot:c,layoutAnchor:d,layoutCrossfade:u}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:z0(e.parent)),e.projection.setOptions({layoutId:s,layout:o,alwaysMeasureLayout:!!i||a&&jr(a),visualElement:e,animationType:typeof o=="string"?o:"both",initialPromotionConfig:r,crossfade:u,layoutScroll:l,layoutRoot:c,layoutAnchor:d})}function z0(e){if(e)return e.options.allowProjection!==!1?e.projection:z0(e.parent)}function Wl(e,{forwardMotionProps:t=!1,type:n}={},r,s){r&&L2(r);const o=n?n==="svg":rf(e),i=o?X2:Y2;function a(c,d){let u;const f={...p.useContext(ef),...c,layoutId:eP(c)},{isStatic:y}=f,w=F2(c),x=i(c,y);if(!y&&typeof window<"u"){tP();const S=nP(f);u=S.MeasureLayout,w.visualElement=q2(e,x,f,s,S.ProjectionNode,o)}return h.jsxs(Ua.Provider,{value:w,children:[u&&w.visualElement?h.jsx(u,{visualElement:w.visualElement,...f}):null,H2(e,c,Z2(x,w.visualElement,d),x,y,t,o)]})}a.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const l=p.forwardRef(a);return l[Q2]=e,l}function eP({layoutId:e}){const t=p.useContext(Nd).id;return t&&e!==void 0?t+"-"+e:e}function tP(e,t){p.useContext(A0).strict}function nP(e){const t=L0(),{drag:n,layout:r}=t;if(!n&&!r)return{};const s={...n,...r};return{MeasureLayout:n!=null&&n.isEnabled(e)||r!=null&&r.isEnabled(e)?s.MeasureLayout:void 0,ProjectionNode:s.ProjectionNode}}function rP(e,t){if(typeof Proxy>"u")return Wl;const n=new Map,r=(o,i)=>Wl(o,i,e,t),s=(o,i)=>r(o,i);return new Proxy(s,{get:(o,i)=>i==="create"?r:(n.has(i)||n.set(i,Wl(i,void 0,e,t)),n.get(i))})}const sP=(e,t)=>t.isSVG??rf(e)?new LC(t):new NC(t,{allowProjection:e!==p.Fragment});class oP extends Yn{constructor(t){super(t),t.animationState||(t.animationState=FC(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();Ba(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){var t;this.node.animationState.reset(),(t=this.unmountControls)==null||t.call(this)}}let iP=0;class aP extends Yn{constructor(){super(...arguments),this.id=iP++,this.isExitComplete=!1}update(){var o;if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:r}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===r)return;if(t&&r===!1){if(this.isExitComplete){const{initial:i,custom:a}=this.node.getProps();if(typeof i=="string"){const l=hr(this.node,i,a);if(l){const{transition:c,transitionEnd:d,...u}=l;for(const f in u)(o=this.node.getValue(f))==null||o.jump(u[f])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const s=this.node.animationState.setActive("exit",!t);n&&!t&&s.then(()=>{this.isExitComplete=!0,n(this.id)})}mount(){const{register:t,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),t&&(this.unmount=t(this.id))}unmount(){}}const lP={animation:{Feature:oP},exit:{Feature:aP}};function Do(e){return{point:{x:e.pageX,y:e.pageY}}}const uP=e=>t=>Yd(t)&&e(t,Do(t));function Ks(e,t,n,r){return yo(e,t,uP(n),r)}const B0=({current:e})=>e?e.ownerDocument.defaultView:null,Yp=(e,t)=>Math.abs(e-t);function cP(e,t){const n=Yp(e.x,t.x),r=Yp(e.y,t.y);return Math.sqrt(n**2+r**2)}const Xp=new Set(["auto","scroll"]);class $0{constructor(t,n,{transformPagePoint:r,contextWindow:s=window,dragSnapToOrigin:o=!1,distanceThreshold:i=3,element:a}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=y=>{this.handleScroll(y.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=ri(this.lastRawMoveEventInfo,this.transformPagePoint));const y=Hl(this.lastMoveEventInfo,this.history),w=this.startEvent!==null,x=cP(y.offset,{x:0,y:0})>=this.distanceThreshold;if(!w&&!x)return;const{point:S}=y,{timestamp:m}=Oe;this.history.push({...S,timestamp:m});const{onStart:g,onMove:v}=this.handlers;w||(g&&g(this.lastMoveEvent,y),this.startEvent=this.lastMoveEvent),v&&v(this.lastMoveEvent,y)},this.handlePointerMove=(y,w)=>{this.lastMoveEvent=y,this.lastRawMoveEventInfo=w,this.lastMoveEventInfo=ri(w,this.transformPagePoint),oe.update(this.updatePoint,!0)},this.handlePointerUp=(y,w)=>{this.end();const{onEnd:x,onSessionEnd:S,resumeAnimation:m}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&m&&m(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const g=Hl(y.type==="pointercancel"?this.lastMoveEventInfo:ri(w,this.transformPagePoint),this.history);this.startEvent&&x&&x(y,g),S&&S(y,g)},!Yd(t))return;this.dragSnapToOrigin=o,this.handlers=n,this.transformPagePoint=r,this.distanceThreshold=i,this.contextWindow=s||window;const l=Do(t),c=ri(l,this.transformPagePoint),{point:d}=c,{timestamp:u}=Oe;this.history=[{...d,timestamp:u}];const{onSessionStart:f}=n;f&&f(t,Hl(c,this.history)),this.removeListeners=jo(Ks(this.contextWindow,"pointermove",this.handlePointerMove),Ks(this.contextWindow,"pointerup",this.handlePointerUp),Ks(this.contextWindow,"pointercancel",this.handlePointerUp)),a&&this.startScrollTracking(a)}startScrollTracking(t){let n=t.parentElement;for(;n;){const r=getComputedStyle(n);(Xp.has(r.overflowX)||Xp.has(r.overflowY))&&this.scrollPositions.set(n,{x:n.scrollLeft,y:n.scrollTop}),n=n.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){const n=this.scrollPositions.get(t);if(!n)return;const r=t===window,s=r?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},o={x:s.x-n.x,y:s.y-n.y};o.x===0&&o.y===0||(r?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=o.x,this.lastMoveEventInfo.point.y+=o.y):this.history.length>0&&(this.history[0].x-=o.x,this.history[0].y-=o.y),this.scrollPositions.set(t,s),oe.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),Un(this.updatePoint)}}function ri(e,t){return t?{point:t(e.point)}:e}function Qp(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Hl({point:e},t){return{point:e,delta:Qp(e,U0(t)),offset:Qp(e,dP(t)),velocity:fP(t,.1)}}function dP(e){return e[0]}function U0(e){return e[e.length-1]}function fP(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const s=U0(e);for(;n>=0&&(r=e[n],!(s.timestamp-r.timestamp>ct(t)));)n--;if(!r)return{x:0,y:0};r===e[0]&&e.length>2&&s.timestamp-r.timestamp>ct(t)*2&&(r=e[1]);const o=vt(s.timestamp-r.timestamp);if(o===0)return{x:0,y:0};const i={x:(s.x-r.x)/o,y:(s.y-r.y)/o};return i.x===1/0&&(i.x=0),i.y===1/0&&(i.y=0),i}function hP(e,{min:t,max:n},r){return t!==void 0&&e<t?e=r?fe(t,e,r.min):Math.max(e,t):n!==void 0&&e>n&&(e=r?fe(n,e,r.max):Math.min(e,n)),e}function Zp(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function pP(e,{top:t,left:n,bottom:r,right:s}){return{x:Zp(e.x,n,s),y:Zp(e.y,t,r)}}function qp(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.min<e.max-e.min&&([n,r]=[r,n]),{min:n,max:r}}function mP(e,t){return{x:qp(e.x,t.x),y:qp(e.y,t.y)}}function gP(e,t){let n=.5;const r=Xe(e),s=Xe(t);return s>r?n=po(t.min,t.max-r,e.min):r>s&&(n=po(e.min,e.max-s,t.min)),Yt(0,1,n)}function yP(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const kc=.35;function vP(e=kc){return e===!1?e=0:e===!0&&(e=kc),{x:Jp(e,"left","right"),y:Jp(e,"top","bottom")}}function Jp(e,t,n){return{min:em(e,t),max:em(e,n)}}function em(e,t){return typeof e=="number"?e:e[t]||0}const xP=new WeakMap;class wP{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Ne(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:n=!1,distanceThreshold:r}={}){const{presenceContext:s}=this.visualElement;if(s&&s.isPresent===!1)return;const o=u=>{n&&this.snapToCursor(Do(u).point),this.stopAnimation()},i=(u,f)=>{const{drag:y,dragPropagation:w,onDragStart:x}=this.getProps();if(y&&!w&&(this.openDragLock&&this.openDragLock(),this.openDragLock=Kb(y),!this.openDragLock))return;this.latestPointerEvent=u,this.latestPanInfo=f,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Bt(m=>{let g=this.getAxisMotionValue(m).get()||0;if(Kt.test(g)){const{projection:v}=this.visualElement;if(v&&v.layout){const E=v.layout.layoutBox[m];E&&(g=Xe(E)*(parseFloat(g)/100))}}this.originPoint[m]=g}),x&&oe.update(()=>x(u,f),!1,!0),pc(this.visualElement,"transform");const{animationState:S}=this.visualElement;S&&S.setActive("whileDrag",!0)},a=(u,f)=>{this.latestPointerEvent=u,this.latestPanInfo=f;const{dragPropagation:y,dragDirectionLock:w,onDirectionLock:x,onDrag:S}=this.getProps();if(!y&&!this.openDragLock)return;const{offset:m}=f;if(w&&this.currentDirection===null){this.currentDirection=EP(m),this.currentDirection!==null&&x&&x(this.currentDirection);return}this.updateAxis("x",f.point,m),this.updateAxis("y",f.point,m),this.visualElement.render(),S&&oe.update(()=>S(u,f),!1,!0)},l=(u,f)=>{this.latestPointerEvent=u,this.latestPanInfo=f,this.stop(u,f),this.latestPointerEvent=null,this.latestPanInfo=null},c=()=>{const{dragSnapToOrigin:u}=this.getProps();(u||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:d}=this.getProps();this.panSession=new $0(t,{onSessionStart:o,onStart:i,onMove:a,onSessionEnd:l,resumeAnimation:c},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:d,distanceThreshold:r,contextWindow:B0(this.visualElement),element:this.visualElement.current})}stop(t,n){const r=t||this.latestPointerEvent,s=n||this.latestPanInfo,o=this.isDragging;if(this.cancel(),!o||!s||!r)return;const{velocity:i}=s;this.startAnimation(i);const{onDragEnd:a}=this.getProps();a&&oe.postRender(()=>a(r,s))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:r}=this.getProps();!r&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(t,n,r){const{drag:s}=this.getProps();if(!r||!si(t,s,this.currentDirection))return;const o=this.getAxisMotionValue(t);let i=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(i=hP(i,this.constraints[t],this.elastic[t])),o.set(i)}resolveConstraints(){var o;const{dragConstraints:t,dragElastic:n}=this.getProps(),r=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(o=this.visualElement.projection)==null?void 0:o.layout,s=this.constraints;t&&jr(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=pP(r.layoutBox,t):this.constraints=!1,this.elastic=vP(n),s!==this.constraints&&!jr(t)&&r&&this.constraints&&!this.hasMutatedConstraints&&Bt(i=>{this.constraints!==!1&&this.getAxisMotionValue(i)&&(this.constraints[i]=yP(r.layoutBox[i],this.constraints[i]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!jr(t))return!1;const r=t.current,{projection:s}=this.visualElement;if(!s||!s.layout)return!1;const o=EC(r,s.root,this.visualElement.getTransformPagePoint());let i=mP(s.layout.layoutBox,o);if(n){const a=n(xC(i));this.hasMutatedConstraints=!!a,a&&(i=c0(a))}return i}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:s,dragTransition:o,dragSnapToOrigin:i,onDragTransitionEnd:a}=this.getProps(),l=this.constraints||{},c=Bt(d=>{if(!si(d,n,this.currentDirection))return;let u=l&&l[d]||{};(i===!0||i===d)&&(u={min:0,max:0});const f=s?200:1e6,y=s?40:1e7,w={type:"inertia",velocity:r?t[d]:0,bounceStiffness:f,bounceDamping:y,timeConstant:750,restDelta:1,restSpeed:10,...o,...u};return this.startAxisValueAnimation(d,w)});return Promise.all(c).then(a)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return pc(this.visualElement,t),r.start(Ud(t,r,0,n,this.visualElement,!1))}stopAnimation(){Bt(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,r=this.visualElement.getProps(),s=r[n];return s||this.visualElement.getValue(t,(r.initial?r.initial[t]:void 0)||0)}snapToCursor(t){Bt(n=>{const{drag:r}=this.getProps();if(!si(n,r,this.currentDirection))return;const{projection:s}=this.visualElement,o=this.getAxisMotionValue(n);if(s&&s.layout){const{min:i,max:a}=s.layout.layoutBox[n],l=o.get()||0;o.set(t[n]-fe(i,a,.5)+l)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!jr(n)||!r||!this.constraints)return;this.stopAnimation();const s={x:0,y:0};Bt(i=>{const a=this.getAxisMotionValue(i);if(a&&this.constraints!==!1){const l=a.get();s[i]=gP({min:l,max:l},this.constraints[i])}});const{transformTemplate:o}=this.visualElement.getProps();this.visualElement.current.style.transform=o?o({},""):"none",r.root&&r.root.updateScroll(),r.updateLayout(),this.constraints=!1,this.resolveConstraints(),Bt(i=>{if(!si(i,t,null))return;const a=this.getAxisMotionValue(i),{min:l,max:c}=this.constraints[i];a.set(fe(l,c,s[i]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;xP.set(this.visualElement,this);const t=this.visualElement.current,n=Ks(t,"pointerdown",c=>{const{drag:d,dragListener:u=!0}=this.getProps(),f=c.target,y=f!==t&&Jb(f);d&&u&&!y&&this.start(c)});let r;const s=()=>{const{dragConstraints:c}=this.getProps();jr(c)&&c.current&&(this.constraints=this.resolveRefConstraints(),r||(r=SP(t,c.current,()=>this.scalePositionWithinConstraints())))},{projection:o}=this.visualElement,i=o.addEventListener("measure",s);o&&!o.layout&&(o.root&&o.root.updateScroll(),o.updateLayout()),oe.read(s);const a=yo(window,"resize",()=>this.scalePositionWithinConstraints()),l=o.addEventListener("didUpdate",({delta:c,hasLayoutChanged:d})=>{this.isDragging&&d&&(Bt(u=>{const f=this.getAxisMotionValue(u);f&&(this.originPoint[u]+=c[u].translate,f.set(f.get()+c[u].translate))}),this.visualElement.render())});return()=>{a(),n(),i(),l&&l(),r&&r()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:s=!1,dragConstraints:o=!1,dragElastic:i=kc,dragMomentum:a=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:s,dragConstraints:o,dragElastic:i,dragMomentum:a}}}function tm(e){let t=!0;return()=>{if(t){t=!1;return}e()}}function SP(e,t,n){const r=lp(e,tm(n)),s=lp(t,tm(n));return()=>{r(),s()}}function si(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function EP(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class kP extends Yn{constructor(t){super(t),this.removeGroupControls=wt,this.removeListeners=wt,this.controls=new wP(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||wt}update(){const{dragControls:t}=this.node.getProps(),{dragControls:n}=this.node.prevProps||{};t!==n&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const Gl=e=>(t,n)=>{e&&oe.update(()=>e(t,n),!1,!0)};class bP extends Yn{constructor(){super(...arguments),this.removePointerDownListener=wt}onPointerDown(t){this.session=new $0(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:B0(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:s}=this.node.getProps();return{onSessionStart:Gl(t),onStart:Gl(n),onMove:Gl(r),onEnd:(o,i)=>{delete this.session,s&&oe.postRender(()=>s(o,i))}}}mount(){this.removePointerDownListener=Ks(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let Kl=!1;class CP extends p.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:s}=this.props,{projection:o}=t;o&&(n.group&&n.group.add(o),r&&r.register&&s&&r.register(o),Kl&&o.root.didUpdate(),o.addEventListener("animationComplete",()=>{this.safeToRemove()}),o.setOptions({...o.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),Di.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,drag:s,isPresent:o}=this.props,{projection:i}=r;return i&&(i.isPresent=o,t.layoutDependency!==n&&i.setOptions({...i.options,layoutDependency:n}),Kl=!0,s||t.layoutDependency!==n||n===void 0||t.isPresent!==o?i.willUpdate():this.safeToRemove(),t.isPresent!==o&&(o?i.promote():i.relegate()||oe.postRender(()=>{const a=i.getStack();(!a||!a.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:t,layoutAnchor:n}=this.props,{projection:r}=t;r&&(r.options.layoutAnchor=n,r.root.didUpdate(),Kd.postRender(()=>{!r.currentAnimation&&r.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:s}=t;Kl=!0,s&&(s.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(s),r&&r.deregister&&r.deregister(s))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function W0(e){const[t,n]=D0(),r=p.useContext(Nd);return h.jsx(CP,{...e,layoutGroup:r,switchLayoutGroup:p.useContext(F0),isPresent:t,safeToRemove:n})}const PP={pan:{Feature:bP},drag:{Feature:kP,ProjectionNode:M0,MeasureLayout:W0}};function nm(e,t,n){const{props:r}=e;e.animationState&&r.whileHover&&e.animationState.setActive("whileHover",n==="Start");const s="onHover"+n,o=r[s];o&&oe.postRender(()=>o(t,Do(t)))}class TP extends Yn{mount(){const{current:t}=this.node;t&&(this.unmount=Xb(t,(n,r)=>(nm(this.node,r,"Start"),s=>nm(this.node,s,"End"))))}unmount(){}}class NP extends Yn{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=jo(yo(this.node.current,"focus",()=>this.onFocus()),yo(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function rm(e,t,n){const{props:r}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&r.whileTap&&e.animationState.setActive("whileTap",n==="Start");const s="onTap"+(n==="End"?"":n),o=r[s];o&&oe.postRender(()=>o(t,Do(t)))}class jP extends Yn{mount(){const{current:t}=this.node;if(!t)return;const{globalTapTarget:n,propagate:r}=this.node.props;this.unmount=tC(t,(s,o)=>(rm(this.node,o,"Start"),(i,{success:a})=>rm(this.node,i,a?"End":"Cancel")),{useGlobalTarget:n,stopPropagation:(r==null?void 0:r.tap)===!1})}unmount(){}}const bc=new WeakMap,Yl=new WeakMap,RP=e=>{const t=bc.get(e.target);t&&t(e)},MP=e=>{e.forEach(RP)};function DP({root:e,...t}){const n=e||document;Yl.has(n)||Yl.set(n,{});const r=Yl.get(n),s=JSON.stringify(t);return r[s]||(r[s]=new IntersectionObserver(MP,{root:e,...t})),r[s]}function AP(e,t,n){const r=DP(t);return bc.set(e,n),r.observe(e),()=>{bc.delete(e),r.unobserve(e)}}const LP={some:0,all:1};class _P extends Yn{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){var l;(l=this.stopObserver)==null||l.call(this);const{viewport:t={}}=this.node.getProps(),{root:n,margin:r,amount:s="some",once:o}=t,i={root:n?n.current:void 0,rootMargin:r,threshold:typeof s=="number"?s:LP[s]},a=c=>{const{isIntersecting:d}=c;if(this.isInView===d||(this.isInView=d,o&&!d&&this.hasEnteredView))return;d&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",d);const{onViewportEnter:u,onViewportLeave:f}=this.node.getProps(),y=d?u:f;y&&y(c)};this.stopObserver=AP(this.node.current,i,a)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(OP(t,n))&&this.startObserver()}unmount(){var t;(t=this.stopObserver)==null||t.call(this),this.hasEnteredView=!1,this.isInView=!1}}function OP({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const IP={inView:{Feature:_P},tap:{Feature:jP},focus:{Feature:NP},hover:{Feature:TP}},VP={layout:{ProjectionNode:M0,MeasureLayout:W0}},FP={...lP,...IP,...PP,...VP},Vn=rP(FP,sP);function H0(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(n=H0(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function G0(){for(var e,t,n=0,r="",s=arguments.length;n<s;n++)(e=arguments[n])&&(t=H0(e))&&(r&&(r+=" "),r+=t);return r}const sf="-",zP=e=>{const t=$P(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:i=>{const a=i.split(sf);return a[0]===""&&a.length!==1&&a.shift(),K0(a,t)||BP(i)},getConflictingClassGroupIds:(i,a)=>{const l=n[i]||[];return a&&r[i]?[...l,...r[i]]:l}}},K0=(e,t)=>{var i;if(e.length===0)return t.classGroupId;const n=e[0],r=t.nextPart.get(n),s=r?K0(e.slice(1),r):void 0;if(s)return s;if(t.validators.length===0)return;const o=e.join(sf);return(i=t.validators.find(({validator:a})=>a(o)))==null?void 0:i.classGroupId},sm=/^\[(.+)\]$/,BP=e=>{if(sm.test(e)){const t=sm.exec(e)[1],n=t==null?void 0:t.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}},$P=e=>{const{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return WP(Object.entries(e.classGroups),n).forEach(([o,i])=>{Cc(i,r,o,t)}),r},Cc=(e,t,n,r)=>{e.forEach(s=>{if(typeof s=="string"){const o=s===""?t:om(t,s);o.classGroupId=n;return}if(typeof s=="function"){if(UP(s)){Cc(s(r),t,n,r);return}t.validators.push({validator:s,classGroupId:n});return}Object.entries(s).forEach(([o,i])=>{Cc(i,om(t,o),n,r)})})},om=(e,t)=>{let n=e;return t.split(sf).forEach(r=>{n.nextPart.has(r)||n.nextPart.set(r,{nextPart:new Map,validators:[]}),n=n.nextPart.get(r)}),n},UP=e=>e.isThemeGetter,WP=(e,t)=>t?e.map(([n,r])=>{const s=r.map(o=>typeof o=="string"?t+o:typeof o=="object"?Object.fromEntries(Object.entries(o).map(([i,a])=>[t+i,a])):o);return[n,s]}):e,HP=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,r=new Map;const s=(o,i)=>{n.set(o,i),t++,t>e&&(t=0,r=n,n=new Map)};return{get(o){let i=n.get(o);if(i!==void 0)return i;if((i=r.get(o))!==void 0)return s(o,i),i},set(o,i){n.has(o)?n.set(o,i):s(o,i)}}},Y0="!",GP=e=>{const{separator:t,experimentalParseClassName:n}=e,r=t.length===1,s=t[0],o=t.length,i=a=>{const l=[];let c=0,d=0,u;for(let S=0;S<a.length;S++){let m=a[S];if(c===0){if(m===s&&(r||a.slice(S,S+o)===t)){l.push(a.slice(d,S)),d=S+o;continue}if(m==="/"){u=S;continue}}m==="["?c++:m==="]"&&c--}const f=l.length===0?a:a.substring(d),y=f.startsWith(Y0),w=y?f.substring(1):f,x=u&&u>d?u-d:void 0;return{modifiers:l,hasImportantModifier:y,baseClassName:w,maybePostfixModifierPosition:x}};return n?a=>n({className:a,parseClassName:i}):i},KP=e=>{if(e.length<=1)return e;const t=[];let n=[];return e.forEach(r=>{r[0]==="["?(t.push(...n.sort(),r),n=[]):n.push(r)}),t.push(...n.sort()),t},YP=e=>({cache:HP(e.cacheSize),parseClassName:GP(e),...zP(e)}),XP=/\s+/,QP=(e,t)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s}=t,o=[],i=e.trim().split(XP);let a="";for(let l=i.length-1;l>=0;l-=1){const c=i[l],{modifiers:d,hasImportantModifier:u,baseClassName:f,maybePostfixModifierPosition:y}=n(c);let w=!!y,x=r(w?f.substring(0,y):f);if(!x){if(!w){a=c+(a.length>0?" "+a:a);continue}if(x=r(f),!x){a=c+(a.length>0?" "+a:a);continue}w=!1}const S=KP(d).join(":"),m=u?S+Y0:S,g=m+x;if(o.includes(g))continue;o.push(g);const v=s(x,w);for(let E=0;E<v.length;++E){const C=v[E];o.push(m+C)}a=c+(a.length>0?" "+a:a)}return a};function ZP(){let e=0,t,n,r="";for(;e<arguments.length;)(t=arguments[e++])&&(n=X0(t))&&(r&&(r+=" "),r+=n);return r}const X0=e=>{if(typeof e=="string")return e;let t,n="";for(let r=0;r<e.length;r++)e[r]&&(t=X0(e[r]))&&(n&&(n+=" "),n+=t);return n};function qP(e,...t){let n,r,s,o=i;function i(l){const c=t.reduce((d,u)=>u(d),e());return n=YP(c),r=n.cache.get,s=n.cache.set,o=a,a(l)}function a(l){const c=r(l);if(c)return c;const d=QP(l,n);return s(l,d),d}return function(){return o(ZP.apply(null,arguments))}}const ce=e=>{const t=n=>n[e]||[];return t.isThemeGetter=!0,t},Q0=/^\[(?:([a-z-]+):)?(.+)\]$/i,JP=/^\d+\/\d+$/,eT=new Set(["px","full","screen"]),tT=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,nT=/\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$/,rT=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,sT=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,oT=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Zt=e=>Zr(e)||eT.has(e)||JP.test(e),mn=e=>ms(e,"length",hT),Zr=e=>!!e&&!Number.isNaN(Number(e)),Xl=e=>ms(e,"number",Zr),Ps=e=>!!e&&Number.isInteger(Number(e)),iT=e=>e.endsWith("%")&&Zr(e.slice(0,-1)),W=e=>Q0.test(e),gn=e=>tT.test(e),aT=new Set(["length","size","percentage"]),lT=e=>ms(e,aT,Z0),uT=e=>ms(e,"position",Z0),cT=new Set(["image","url"]),dT=e=>ms(e,cT,mT),fT=e=>ms(e,"",pT),Ts=()=>!0,ms=(e,t,n)=>{const r=Q0.exec(e);return r?r[1]?typeof t=="string"?r[1]===t:t.has(r[1]):n(r[2]):!1},hT=e=>nT.test(e)&&!rT.test(e),Z0=()=>!1,pT=e=>sT.test(e),mT=e=>oT.test(e),gT=()=>{const e=ce("colors"),t=ce("spacing"),n=ce("blur"),r=ce("brightness"),s=ce("borderColor"),o=ce("borderRadius"),i=ce("borderSpacing"),a=ce("borderWidth"),l=ce("contrast"),c=ce("grayscale"),d=ce("hueRotate"),u=ce("invert"),f=ce("gap"),y=ce("gradientColorStops"),w=ce("gradientColorStopPositions"),x=ce("inset"),S=ce("margin"),m=ce("opacity"),g=ce("padding"),v=ce("saturate"),E=ce("scale"),C=ce("sepia"),P=ce("skew"),k=ce("space"),b=ce("translate"),D=()=>["auto","contain","none"],T=()=>["auto","hidden","clip","visible","scroll"],A=()=>["auto",W,t],L=()=>[W,t],Z=()=>["",Zt,mn],le=()=>["auto",Zr,W],ge=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],B=()=>["solid","dashed","dotted","double","none"],re=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],j=()=>["start","end","center","between","around","evenly","stretch"],_=()=>["","0",W],V=()=>["auto","avoid","all","avoid-page","page","left","right","column"],$=()=>[Zr,W];return{cacheSize:500,separator:":",theme:{colors:[Ts],spacing:[Zt,mn],blur:["none","",gn,W],brightness:$(),borderColor:[e],borderRadius:["none","","full",gn,W],borderSpacing:L(),borderWidth:Z(),contrast:$(),grayscale:_(),hueRotate:$(),invert:_(),gap:L(),gradientColorStops:[e],gradientColorStopPositions:[iT,mn],inset:A(),margin:A(),opacity:$(),padding:L(),saturate:$(),scale:$(),sepia:_(),skew:$(),space:L(),translate:L()},classGroups:{aspect:[{aspect:["auto","square","video",W]}],container:["container"],columns:[{columns:[gn]}],"break-after":[{"break-after":V()}],"break-before":[{"break-before":V()}],"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:[...ge(),W]}],overflow:[{overflow:T()}],"overflow-x":[{"overflow-x":T()}],"overflow-y":[{"overflow-y":T()}],overscroll:[{overscroll:D()}],"overscroll-x":[{"overscroll-x":D()}],"overscroll-y":[{"overscroll-y":D()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[x]}],"inset-x":[{"inset-x":[x]}],"inset-y":[{"inset-y":[x]}],start:[{start:[x]}],end:[{end:[x]}],top:[{top:[x]}],right:[{right:[x]}],bottom:[{bottom:[x]}],left:[{left:[x]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Ps,W]}],basis:[{basis:A()}],"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:_()}],shrink:[{shrink:_()}],order:[{order:["first","last","none",Ps,W]}],"grid-cols":[{"grid-cols":[Ts]}],"col-start-end":[{col:["auto",{span:["full",Ps,W]},W]}],"col-start":[{"col-start":le()}],"col-end":[{"col-end":le()}],"grid-rows":[{"grid-rows":[Ts]}],"row-start-end":[{row:["auto",{span:[Ps,W]},W]}],"row-start":[{"row-start":le()}],"row-end":[{"row-end":le()}],"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:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:["normal",...j()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...j(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...j(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[g]}],px:[{px:[g]}],py:[{py:[g]}],ps:[{ps:[g]}],pe:[{pe:[g]}],pt:[{pt:[g]}],pr:[{pr:[g]}],pb:[{pb:[g]}],pl:[{pl:[g]}],m:[{m:[S]}],mx:[{mx:[S]}],my:[{my:[S]}],ms:[{ms:[S]}],me:[{me:[S]}],mt:[{mt:[S]}],mr:[{mr:[S]}],mb:[{mb:[S]}],ml:[{ml:[S]}],"space-x":[{"space-x":[k]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[k]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",W,t]}],"min-w":[{"min-w":[W,t,"min","max","fit"]}],"max-w":[{"max-w":[W,t,"none","full","min","max","fit","prose",{screen:[gn]},gn]}],h:[{h:[W,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[W,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[W,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[W,t,"auto","min","max","fit"]}],"font-size":[{text:["base",gn,mn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Xl]}],"font-family":[{font:[Ts]}],"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",Zr,Xl]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Zt,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":[m]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[m]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...B(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Zt,mn]}],"underline-offset":[{"underline-offset":["auto",Zt,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:L()}],"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":[m]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...ge(),uT]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",lT]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},dT]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[w]}],"gradient-via-pos":[{via:[w]}],"gradient-to-pos":[{to:[w]}],"gradient-from":[{from:[y]}],"gradient-via":[{via:[y]}],"gradient-to":[{to:[y]}],rounded:[{rounded:[o]}],"rounded-s":[{"rounded-s":[o]}],"rounded-e":[{"rounded-e":[o]}],"rounded-t":[{"rounded-t":[o]}],"rounded-r":[{"rounded-r":[o]}],"rounded-b":[{"rounded-b":[o]}],"rounded-l":[{"rounded-l":[o]}],"rounded-ss":[{"rounded-ss":[o]}],"rounded-se":[{"rounded-se":[o]}],"rounded-ee":[{"rounded-ee":[o]}],"rounded-es":[{"rounded-es":[o]}],"rounded-tl":[{"rounded-tl":[o]}],"rounded-tr":[{"rounded-tr":[o]}],"rounded-br":[{"rounded-br":[o]}],"rounded-bl":[{"rounded-bl":[o]}],"border-w":[{border:[a]}],"border-w-x":[{"border-x":[a]}],"border-w-y":[{"border-y":[a]}],"border-w-s":[{"border-s":[a]}],"border-w-e":[{"border-e":[a]}],"border-w-t":[{"border-t":[a]}],"border-w-r":[{"border-r":[a]}],"border-w-b":[{"border-b":[a]}],"border-w-l":[{"border-l":[a]}],"border-opacity":[{"border-opacity":[m]}],"border-style":[{border:[...B(),"hidden"]}],"divide-x":[{"divide-x":[a]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[a]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[m]}],"divide-style":[{divide:B()}],"border-color":[{border:[s]}],"border-color-x":[{"border-x":[s]}],"border-color-y":[{"border-y":[s]}],"border-color-s":[{"border-s":[s]}],"border-color-e":[{"border-e":[s]}],"border-color-t":[{"border-t":[s]}],"border-color-r":[{"border-r":[s]}],"border-color-b":[{"border-b":[s]}],"border-color-l":[{"border-l":[s]}],"divide-color":[{divide:[s]}],"outline-style":[{outline:["",...B()]}],"outline-offset":[{"outline-offset":[Zt,W]}],"outline-w":[{outline:[Zt,mn]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Z()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[m]}],"ring-offset-w":[{"ring-offset":[Zt,mn]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",gn,fT]}],"shadow-color":[{shadow:[Ts]}],opacity:[{opacity:[m]}],"mix-blend":[{"mix-blend":[...re(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":re()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[l]}],"drop-shadow":[{"drop-shadow":["","none",gn,W]}],grayscale:[{grayscale:[c]}],"hue-rotate":[{"hue-rotate":[d]}],invert:[{invert:[u]}],saturate:[{saturate:[v]}],sepia:[{sepia:[C]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[l]}],"backdrop-grayscale":[{"backdrop-grayscale":[c]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[d]}],"backdrop-invert":[{"backdrop-invert":[u]}],"backdrop-opacity":[{"backdrop-opacity":[m]}],"backdrop-saturate":[{"backdrop-saturate":[v]}],"backdrop-sepia":[{"backdrop-sepia":[C]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-y":[{"border-spacing-y":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",W]}],duration:[{duration:$()}],ease:[{ease:["linear","in","out","in-out",W]}],delay:[{delay:$()}],animate:[{animate:["none","spin","ping","pulse","bounce",W]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[E]}],"scale-x":[{"scale-x":[E]}],"scale-y":[{"scale-y":[E]}],rotate:[{rotate:[Ps,W]}],"translate-x":[{"translate-x":[b]}],"translate-y":[{"translate-y":[b]}],"skew-x":[{"skew-x":[P]}],"skew-y":[{"skew-y":[P]}],"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":L()}],"scroll-mx":[{"scroll-mx":L()}],"scroll-my":[{"scroll-my":L()}],"scroll-ms":[{"scroll-ms":L()}],"scroll-me":[{"scroll-me":L()}],"scroll-mt":[{"scroll-mt":L()}],"scroll-mr":[{"scroll-mr":L()}],"scroll-mb":[{"scroll-mb":L()}],"scroll-ml":[{"scroll-ml":L()}],"scroll-p":[{"scroll-p":L()}],"scroll-px":[{"scroll-px":L()}],"scroll-py":[{"scroll-py":L()}],"scroll-ps":[{"scroll-ps":L()}],"scroll-pe":[{"scroll-pe":L()}],"scroll-pt":[{"scroll-pt":L()}],"scroll-pr":[{"scroll-pr":L()}],"scroll-pb":[{"scroll-pb":L()}],"scroll-pl":[{"scroll-pl":L()}],"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"]}],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:[Zt,mn,Xl]}],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"]}}},yT=qP(gT);function Q(...e){return yT(G0(e))}const of=p.forwardRef(({className:e,...t},n)=>h.jsx("div",{ref:n,className:Q("rounded-lg border bg-card text-card-foreground shadow-sm",e),...t}));of.displayName="Card";const af=p.forwardRef(({className:e,...t},n)=>h.jsx("div",{ref:n,className:Q("flex flex-col space-y-1.5 p-6",e),...t}));af.displayName="CardHeader";const lf=p.forwardRef(({className:e,...t},n)=>h.jsx("h3",{ref:n,className:Q("text-2xl font-semibold leading-none tracking-tight",e),...t}));lf.displayName="CardTitle";const q0=p.forwardRef(({className:e,...t},n)=>h.jsx("p",{ref:n,className:Q("text-sm text-muted-foreground",e),...t}));q0.displayName="CardDescription";const uf=p.forwardRef(({className:e,...t},n)=>h.jsx("div",{ref:n,className:Q("p-6 pt-0",e),...t}));uf.displayName="CardContent";const J0=p.forwardRef(({className:e,...t},n)=>h.jsx("div",{ref:n,className:Q("flex items-center p-6 pt-0",e),...t}));J0.displayName="CardFooter";function im(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Wa(...e){return t=>{let n=!1;const r=e.map(s=>{const o=im(s,t);return!n&&typeof o=="function"&&(n=!0),o});if(n)return()=>{for(let s=0;s<r.length;s++){const o=r[s];typeof o=="function"?o():im(e[s],null)}}}}function br(...e){return p.useCallback(Wa(...e),e)}var vT=Symbol.for("react.lazy"),pa=wa[" use ".trim().toString()];function xT(e){return typeof e=="object"&&e!==null&&"then"in e}function ex(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===vT&&"_payload"in e&&xT(e._payload)}function tx(e){const t=ST(e),n=p.forwardRef((r,s)=>{let{children:o,...i}=r;ex(o)&&typeof pa=="function"&&(o=pa(o._payload));const a=p.Children.toArray(o),l=a.find(kT);if(l){const c=l.props.children,d=a.map(u=>u===l?p.Children.count(c)>1?p.Children.only(null):p.isValidElement(c)?c.props.children:null:u);return h.jsx(t,{...i,ref:s,children:p.isValidElement(c)?p.cloneElement(c,void 0,d):null})}return h.jsx(t,{...i,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}var wT=tx("Slot");function ST(e){const t=p.forwardRef((n,r)=>{let{children:s,...o}=n;if(ex(s)&&typeof pa=="function"&&(s=pa(s._payload)),p.isValidElement(s)){const i=CT(s),a=bT(o,s.props);return s.type!==p.Fragment&&(a.ref=r?Wa(r,i):i),p.cloneElement(s,a)}return p.Children.count(s)>1?p.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var ET=Symbol("radix.slottable");function kT(e){return p.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===ET}function bT(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...a)=>{const l=o(...a);return s(...a),l}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function CT(e){var r,s;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(s=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:s.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}const am=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,lm=G0,cf=(e,t)=>n=>{var r;if((t==null?void 0:t.variants)==null)return lm(e,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:s,defaultVariants:o}=t,i=Object.keys(s).map(c=>{const d=n==null?void 0:n[c],u=o==null?void 0:o[c];if(d===null)return null;const f=am(d)||am(u);return s[c][f]}),a=n&&Object.entries(n).reduce((c,d)=>{let[u,f]=d;return f===void 0||(c[u]=f),c},{}),l=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((c,d)=>{let{class:u,className:f,...y}=d;return Object.entries(y).every(w=>{let[x,S]=w;return Array.isArray(S)?S.includes({...o,...a}[x]):{...o,...a}[x]===S})?[...c,u,f]:c},[]);return lm(e,i,l,n==null?void 0:n.class,n==null?void 0:n.className)},PT=cf("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),ie=p.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...s},o)=>{const i=r?wT:"button";return h.jsx(i,{className:Q(PT({variant:t,size:n,className:e})),ref:o,...s})});ie.displayName="Button";const vo=p.forwardRef(({className:e,type:t,...n},r)=>h.jsx("input",{type:t,className:Q("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:r,...n}));vo.displayName="Input";var TT=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],NT=TT.reduce((e,t)=>{const n=tx(`Primitive.${t}`),r=p.forwardRef((s,o)=>{const{asChild:i,...a}=s,l=i?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),h.jsx(l,{...a,ref:o})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),jT="Label",nx=p.forwardRef((e,t)=>h.jsx(NT.label,{...e,ref:t,onMouseDown:n=>{var s;n.target.closest("button, input, select, textarea")||((s=e.onMouseDown)==null||s.call(e,n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));nx.displayName=jT;var rx=nx;const RT=cf("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),jn=p.forwardRef(({className:e,...t},n)=>h.jsx(rx,{ref:n,className:Q(RT(),e),...t}));jn.displayName=rx.displayName;const um=e=>{let t;const n=new Set,r=(c,d)=>{const u=typeof c=="function"?c(t):c;if(!Object.is(u,t)){const f=t;t=d??(typeof u!="object"||u===null)?u:Object.assign({},t,u),n.forEach(y=>y(t,f))}},s=()=>t,a={setState:r,getState:s,getInitialState:()=>l,subscribe:c=>(n.add(c),()=>n.delete(c))},l=t=e(r,s,a);return a},MT=e=>e?um(e):um,DT=e=>e;function AT(e,t=DT){const n=R.useSyncExternalStore(e.subscribe,R.useCallback(()=>t(e.getState()),[e,t]),R.useCallback(()=>t(e.getInitialState()),[e,t]));return R.useDebugValue(n),n}const cm=e=>{const t=MT(e),n=r=>AT(t,r);return Object.assign(n,t),n},Ha=e=>e?cm(e):cm,pr={token:"cc_web_token",theme:"cc_web_theme",viewMode:e=>`cc_viewmode_${e}`,panelFileTree:"cc_panel_filetree",panelShortcuts:"cc_panel_shortcuts",fileZoom:"cc_file_zoom",skillhubAuthor:"ccweb_skillhub_author",projectOrder:"cc_project_order",pomodoroConfig:"cc_pomodoro_config",panelLeftWidth:"cc_panel_left_width",panelRightWidth:"cc_panel_right_width",terminalDraft:e=>`cc_terminal_draft_${e}`,usedSkills:"cc_used_skills",projectModel:e=>`cc_project_model_${e}`};function sx(e,t,n){try{const r=localStorage.getItem(e);return r===null?t:n?JSON.parse(r):r}catch{return t}}function ox(e,t,n){try{localStorage.setItem(e,n?JSON.stringify(t):String(t))}catch{}}function LT(e){try{localStorage.removeItem(e)}catch{}}function _T(e,t,n){const r=(n==null?void 0:n.parse)??!1,[s,o]=p.useState(()=>{try{const a=localStorage.getItem(e);return a===null?t:r?JSON.parse(a):a}catch{return t}}),i=p.useCallback(a=>{o(l=>{const c=typeof a=="function"?a(l):a;try{localStorage.setItem(e,r?JSON.stringify(c):String(c))}catch{}return c})},[e,r]);return[s,i]}const wr=Ha(e=>({token:localStorage.getItem(pr.token),setToken:t=>{ox(pr.token,t),e({token:t})},clearToken:()=>{LT(pr.token),e({token:null})}})),OT=()=>wr.getState().token,IT=e=>wr.getState().setToken(e),VT=()=>wr.getState().clearToken();let Ql=null;async function FT(){return Ql||(Ql=(await Po(()=>Promise.resolve().then(()=>jN),void 0)).getProjects),Ql()}const dm=Ha((e,t)=>({projects:[],loading:!1,error:null,hasFetched:!1,fetchProjects:async()=>{if(!t().loading){e({loading:!0,error:null});try{const n=await FT();e({projects:n,hasFetched:!0})}catch(n){e({error:n instanceof Error?n.message:"Failed to load projects"})}finally{e({loading:!1})}}},addProject:n=>e(r=>({projects:[...r.projects,n]})),updateProject:n=>e(r=>({projects:r.projects.map(s=>s.id===n.id?n:s)})),removeProject:n=>e(r=>({projects:r.projects.filter(s=>s.id!==n)})),setProjects:n=>e({projects:n})})),Ns={filePreviewPath:null,sessionId:null,shortcutEditorOpen:!1,shortcutEditingId:null,shareHubOpen:!1,shareHubLabel:"",shareHubCommand:""},QM=Ha((e,t)=>({entries:{},get:n=>t().entries[n]??Ns,setFilePreviewPath:(n,r)=>e(s=>({entries:{...s.entries,[n]:{...s.entries[n]??Ns,filePreviewPath:r}}})),setSessionId:(n,r)=>e(s=>({entries:{...s.entries,[n]:{...s.entries[n]??Ns,sessionId:r}}})),setShortcutEditor:(n,r,s=null)=>e(o=>({entries:{...o.entries,[n]:{...o.entries[n]??Ns,shortcutEditorOpen:r,shortcutEditingId:r?s:null}}})),setShareHub:(n,r,s="",o="")=>e(i=>({entries:{...i.entries,[n]:{...i.entries[n]??Ns,shareHubOpen:r,shareHubLabel:r?s:"",shareHubCommand:r?o:""}}}))})),Ga="";function Ao(){return OT()}function zT(e){IT(e)}function ix(){VT()}async function F(e,t,n,r=!0,s){const o={"Content-Type":"application/json"};if(r){const a=Ao();a&&(o.Authorization=`Bearer ${a}`)}const i=await fetch(`${Ga}${t}`,{method:e,headers:o,body:n!==void 0?JSON.stringify(n):void 0,signal:s});if(i.status===401)throw ix(),window.location.pathname!=="/login"&&(window.location.href="/login"),new Error("Unauthorized");if(!i.ok){let a=`HTTP ${i.status}`;try{const l=await i.json();l.error&&(a=l.error)}catch{}throw new Error(a)}return i.json()}async function ax(e,t){return(await F("POST","/api/auth/login",{username:e,password:t},!1)).token}function ma(){const e=window.location.hostname;return e==="localhost"||e==="127.0.0.1"||e==="::1"}async function df(){return(await F("GET","/api/auth/local-token",void 0,!1)).token}async function BT(){return(await F("GET","/api/projects/workspace")).workspace}async function $T(){return F("GET","/api/projects")}async function lx(){return F("GET","/api/projects/users")}async function ux(e,t){return F("PUT",`/api/projects/${e}/shares`,{shares:t})}async function cx(e){return F("POST","/api/projects",e)}async function dx(e){return F("POST","/api/projects/open",{folderPath:e})}async function fx(e){await F("DELETE",`/api/projects/${e}`)}async function UT(e){return F("PATCH",`/api/projects/${e}/stop`)}async function WT(e){return F("PATCH",`/api/projects/${e}/start`)}async function hx(e){return F("PATCH",`/api/projects/${e}/archive`)}async function px(e){return F("PATCH",`/api/projects/${e}/unarchive`)}async function HT(e,t){return F("GET",`/api/projects/${e}/sessions`,void 0,!0,t)}async function GT(e,t,n){return F("GET",`/api/projects/${e}/sessions/${t}`,void 0,!0,n)}async function KT(e){return F("GET","/api/projects/activity",void 0,!0,e)}async function mx(){return F("GET","/api/shortcuts")}async function gx(e){return F("POST","/api/shortcuts",e)}async function yx(e,t){return F("PUT",`/api/shortcuts/${e}`,t)}async function vx(e){await F("DELETE",`/api/shortcuts/${e}`)}async function YT(e){return F("GET",`/api/shortcuts/project/${e}`)}async function XT(e,t){return F("POST",`/api/shortcuts/project/${e}`,t)}async function QT(e,t,n){return F("PUT",`/api/shortcuts/project/${e}/${t}`,n)}async function ZT(e,t){await F("DELETE",`/api/shortcuts/project/${e}/${t}`)}async function qT(){return F("GET","/api/skillhub/skills")}async function JT(e){await F("POST","/api/skillhub/submit",e)}async function eN(e){return F("POST",`/api/skillhub/download/${e}`)}async function xx(){return F("GET","/api/projects/usage")}async function wx(){return F("GET","/api/projects/usage?refresh=true")}async function Sx(e){const t=e?`?path=${encodeURIComponent(e)}`:"";return F("GET",`/api/filesystem${t}`)}function tN(e){return`${Ga}/api/filesystem/raw?path=${encodeURIComponent(e)}`}async function nN(e,t){const n=new FormData;n.append("path",e);for(const i of t)n.append("files",i);const r={},s=Ao();s&&(r.Authorization=`Bearer ${s}`);const o=await fetch(`${Ga}/api/filesystem/upload`,{method:"POST",headers:r,body:n});if(!o.ok){const i=await o.json().catch(()=>({}));throw new Error(i.error||`Upload failed: ${o.status}`)}return o.json()}async function Ex(e,t){return F("POST","/api/filesystem/mkdir",{path:e,name:t})}async function rN(e){return F("GET",`/api/filesystem/file?path=${encodeURIComponent(e)}`)}async function sN(e,t){return F("PUT","/api/filesystem/file",{path:e,content:t})}async function oN(){return F("GET","/api/update/check-running")}async function iN(){return F("POST","/api/update/prepare")}async function aN(){return F("GET","/api/backup/built-in-oauth")}async function lN(){return F("GET","/api/backup/providers")}async function uN(e){return F("POST","/api/backup/providers",e)}async function cN(e){await F("DELETE",`/api/backup/providers/${e}`)}async function dN(e){return F("GET",`/api/backup/auth/${e}/url`)}async function fN(e){return F("POST",`/api/backup/run/${e}`)}async function hN(){return F("GET","/api/backup/schedule")}async function pN(e){return F("PUT","/api/backup/schedule",e)}async function mN(){return F("GET","/api/backup/excludes")}async function gN(e){return F("PUT","/api/backup/excludes",{patterns:e})}async function yN(){return F("GET","/api/backup/history")}async function vN(){return F("GET","/api/notify/config")}async function xN(e){return F("PUT","/api/notify/config",e)}async function wN(e){return F("GET",`/api/projects/${e}/git/status`)}async function SN(e,t){const n=t?`?file=${encodeURIComponent(t)}`:"";return F("GET",`/api/projects/${e}/git/diff${n}`)}async function EN(e,t){await F("POST",`/api/projects/${e}/git/add`,{files:t})}async function kN(e,t){await F("POST",`/api/projects/${e}/git/commit`,{message:t})}async function kx(e){return F("GET",`/api/projects/sessions/search?q=${encodeURIComponent(e)}`)}async function bN(e,t){return F("PATCH",`/api/projects/${e}/tags`,{tags:t})}async function CN(e){return F("GET",`/api/projects/${e}/todos`)}async function PN(e,t){return F("POST",`/api/sessions/${e}/share`,{expiryDays:t})}async function TN(e){const t=await fetch(`${Ga}/api/share/${e}`);if(!t.ok){let n=`HTTP ${t.status}`;try{const r=await t.json();r.error&&(n=r.error)}catch{}throw new Error(n)}return t.json()}async function NN(){return F("GET","/api/claude/model")}const jN=Object.freeze(Object.defineProperty({__proto__:null,addBackupProvider:uN,archiveProject:hx,browseFilesystem:Sx,checkRunningProjects:oN,clearToken:ix,createFolder:Ex,createGlobalShortcut:gx,createProject:cx,createProjectShortcut:XT,deleteBackupProvider:cN,deleteGlobalShortcut:vx,deleteProject:fx,deleteProjectShortcut:ZT,downloadSkillFromHub:eN,getAllUsers:lx,getBackupAuthUrl:dN,getBackupExcludes:mN,getBackupHistory:yN,getBackupProviders:lN,getBackupSchedule:hN,getBuiltInOAuthTypes:aN,getClaudeModel:NN,getGitDiff:SN,getGitStatus:wN,getGlobalShortcuts:mx,getLocalToken:df,getNotifyConfig:vN,getProjectShortcuts:YT,getProjectTodos:CN,getProjects:$T,getProjectsActivity:KT,getRawFileUrl:tN,getSession:GT,getSessions:HT,getSharedSession:TN,getSkillHubSkills:qT,getToken:Ao,getUsage:xx,getWorkspace:BT,gitAdd:EN,gitCommit:kN,isLocalAccess:ma,login:ax,openProject:dx,prepareForUpdate:iN,readFile:rN,refreshUsage:wx,searchSessions:kx,setToken:zT,shareSession:PN,startProject:WT,stopProject:UT,submitSkillToHub:JT,triggerBackup:fN,unarchiveProject:px,updateBackupExcludes:gN,updateBackupSchedule:pN,updateGlobalShortcut:yx,updateNotifyConfig:xN,updateProjectShares:ux,updateProjectShortcut:QT,updateProjectTags:bN,uploadFiles:nN,writeFile:sN},Symbol.toStringTag,{value:"Module"}));function RN(){const e=Va(),t=wr(u=>u.setToken),[n,r]=p.useState(""),[s,o]=p.useState(""),[i,a]=p.useState(null),[l,c]=p.useState(!1);p.useEffect(()=>{if(!ma())return;let u=!1;return(async()=>{try{const f=await df();u||(t(f),e("/",{replace:!0}))}catch{}})(),()=>{u=!0}},[e,t]);const d=async u=>{u.preventDefault(),a(null),c(!0);try{const f=await ax(n,s);t(f),e("/")}catch(f){a(f instanceof Error?f.message:"Login failed")}finally{c(!1)}};return h.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:h.jsx(Vn.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,ease:"easeOut"},className:"w-full max-w-sm",children:h.jsxs(of,{children:[h.jsxs(af,{className:"text-center",children:[h.jsx(lf,{className:"text-2xl",children:"CC Web"}),h.jsx(q0,{children:ma()?"Connecting locally...":"Sign in to manage your Claude projects"})]}),h.jsxs("form",{onSubmit:u=>void d(u),children:[h.jsxs(uf,{className:"space-y-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{htmlFor:"username",children:"Username"}),h.jsx(vo,{id:"username",type:"text",autoComplete:"username",value:n,onChange:u=>r(u.target.value),required:!0,autoFocus:!0})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{htmlFor:"password",children:"Password"}),h.jsx(vo,{id:"password",type:"password",autoComplete:"current-password",value:s,onChange:u=>o(u.target.value),required:!0})]}),h.jsx(tf,{children:i&&h.jsx(Vn.p,{initial:{opacity:0,x:-8},animate:{opacity:1,x:0},exit:{opacity:0,x:-8},transition:{duration:.2},className:"text-sm text-destructive",children:i})})]}),h.jsx(J0,{children:h.jsx(Vn.div,{className:"w-full",whileTap:{scale:.98},children:h.jsx(ie,{type:"submit",className:"w-full",disabled:l,children:l?"Signing in...":"Sign In"})})})]})]})})})}/**
|
|
76
|
+
`),()=>{var k;(k=a.current)==null||k.removeAttribute("data-motion-pop-id"),P.contains(C)&&P.removeChild(C)}},[t]),h.jsx(j2,{isPresent:t,childRef:a,sizeRef:l,pop:o,children:o===!1?e:p.cloneElement(e,{ref:u})})}const M2=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:s,presenceAffectsLayout:o,mode:i,anchorX:a,anchorY:l,root:c})=>{const d=jd(D2),u=p.useId();let f=!0,y=p.useMemo(()=>(f=!1,{id:u,initial:t,isPresent:n,custom:s,onExitComplete:w=>{d.set(w,!0);for(const x of d.values())if(!x)return;r&&r()},register:w=>(d.set(w,!1),()=>d.delete(w))}),[n,d,r]);return o&&f&&(y={...y}),p.useMemo(()=>{d.forEach((w,x)=>d.set(x,!1))},[n]),p.useEffect(()=>{!n&&!d.size&&r&&r()},[n]),e=h.jsx(R2,{pop:i==="popLayout",isPresent:n,anchorX:a,anchorY:l,root:c,children:e}),h.jsx(Fa.Provider,{value:y,children:e})};function D2(){return new Map}function D0(e=!0){const t=p.useContext(Fa);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:r,register:s}=t,o=p.useId();p.useEffect(()=>{if(e)return s(o)},[e]);const i=p.useCallback(()=>e&&r&&r(o),[o,r,e]);return!n&&r?[!1,i]:[!0]}const ni=e=>e.key||"";function Wp(e){const t=[];return p.Children.forEach(e,n=>{p.isValidElement(n)&&t.push(n)}),t}const tf=({children:e,custom:t,initial:n=!0,onExitComplete:r,presenceAffectsLayout:s=!0,mode:o="sync",propagate:i=!1,anchorX:a="left",anchorY:l="top",root:c})=>{const[d,u]=D0(i),f=p.useMemo(()=>Wp(e),[e]),y=i&&!d?[]:f.map(ni),w=p.useRef(!0),x=p.useRef(f),S=jd(()=>new Map),m=p.useRef(new Set),[g,v]=p.useState(f),[E,C]=p.useState(f);ov(()=>{w.current=!1,x.current=f;for(let b=0;b<E.length;b++){const D=ni(E[b]);y.includes(D)?(S.delete(D),m.current.delete(D)):S.get(D)!==!0&&S.set(D,!1)}},[E,y.length,y.join("-")]);const P=[];if(f!==g){let b=[...f];for(let D=0;D<E.length;D++){const T=E[D],A=ni(T);y.includes(A)||(b.splice(D,0,T),P.push(T))}return o==="wait"&&P.length&&(b=P),C(Wp(b)),v(f),null}const{forceRender:k}=p.useContext(Nd);return h.jsx(h.Fragment,{children:E.map(b=>{const D=ni(b),T=i&&!d?!1:f===E||y.includes(D),A=()=>{if(m.current.has(D))return;if(S.has(D))m.current.add(D),S.set(D,!0);else return;let L=!0;S.forEach(Z=>{Z||(L=!1)}),L&&(k==null||k(),C(x.current),i&&(u==null||u()),r&&r())};return h.jsx(M2,{isPresent:T,initial:!w.current||n?void 0:!1,custom:t,presenceAffectsLayout:s,mode:o,root:c,onExitComplete:T?void 0:A,anchorX:a,anchorY:l,children:b},D)})})},A0=p.createContext({strict:!1}),Hp={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let Gp=!1;function A2(){if(Gp)return;const e={};for(const t in Hp)e[t]={isEnabled:n=>Hp[t].some(r=>!!n[r])};l0(e),Gp=!0}function L0(){return A2(),yC()}function L2(e){const t=L0();for(const n in e)t[n]={...t[n],...e[n]};l0(t)}const _2=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function ha(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||_2.has(e)}let _0=e=>!ha(e);function O2(e){typeof e=="function"&&(_0=t=>t.startsWith("on")?!ha(t):e(t))}try{O2(require("@emotion/is-prop-valid").default)}catch{}function I2(e,t,n){const r={};for(const s in e)s==="values"&&typeof e.values=="object"||Ie(e[s])||(_0(s)||n===!0&&ha(s)||!t&&!ha(s)||e.draggable&&s.startsWith("onDrag"))&&(r[s]=e[s]);return r}const Ua=p.createContext({});function V2(e,t){if($a(e)){const{initial:n,animate:r}=e;return{initial:n===!1||go(n)?n:void 0,animate:go(r)?r:void 0}}return e.inherit!==!1?t:{}}function F2(e){const{initial:t,animate:n}=V2(e,p.useContext(Ua));return p.useMemo(()=>({initial:t,animate:n}),[Kp(t),Kp(n)])}function Kp(e){return Array.isArray(e)?e.join(" "):e}const nf=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function O0(e,t,n){for(const r in t)!Ie(t[r])&&!m0(r,n)&&(e[r]=t[r])}function z2({transformTemplate:e},t){return p.useMemo(()=>{const n=nf();return qd(n,t,e),Object.assign({},n.vars,n.style)},[t])}function B2(e,t){const n=e.style||{},r={};return O0(r,n,e),Object.assign(r,z2(e,t)),r}function $2(e,t){const n={},r=B2(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,r.userSelect=r.WebkitUserSelect=r.WebkitTouchCallout="none",r.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=r,n}const I0=()=>({...nf(),attrs:{}});function U2(e,t,n,r){const s=p.useMemo(()=>{const o=I0();return g0(o,t,v0(r),e.transformTemplate,e.style),{...o.attrs,style:{...o.style}}},[t]);if(e.style){const o={};O0(o,e.style,e),s.style={...o,...s.style}}return s}const W2=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function rf(e){return typeof e!="string"||e.includes("-")?!1:!!(W2.indexOf(e)>-1||/[A-Z]/u.test(e))}function H2(e,t,n,{latestValues:r},s,o=!1,i){const l=(i??rf(e)?U2:$2)(t,r,s,e),c=I2(t,typeof e=="string",o),d=e!==p.Fragment?{...c,...l,ref:n}:{},{children:u}=t,f=p.useMemo(()=>Ie(u)?u.get():u,[u]);return p.createElement(e,{...d,children:f})}function G2({scrapeMotionValuesFromProps:e,createRenderState:t},n,r,s){return{latestValues:K2(n,r,s,e),renderState:t()}}function K2(e,t,n,r){const s={},o=r(e,{});for(const f in o)s[f]=Mi(o[f]);let{initial:i,animate:a}=e;const l=$a(e),c=i0(e);t&&c&&!l&&e.inherit!==!1&&(i===void 0&&(i=t.initial),a===void 0&&(a=t.animate));let d=n?n.initial===!1:!1;d=d||i===!1;const u=d?a:i;if(u&&typeof u!="boolean"&&!Ba(u)){const f=Array.isArray(u)?u:[u];for(let y=0;y<f.length;y++){const w=Wd(e,f[y]);if(w){const{transitionEnd:x,transition:S,...m}=w;for(const g in m){let v=m[g];if(Array.isArray(v)){const E=d?v.length-1:0;v=v[E]}v!==null&&(s[g]=v)}for(const g in x)s[g]=x[g]}}}return s}const V0=e=>(t,n)=>{const r=p.useContext(Ua),s=p.useContext(Fa),o=()=>G2(e,t,r,s);return n?o():jd(o)},Y2=V0({scrapeMotionValuesFromProps:Jd,createRenderState:nf}),X2=V0({scrapeMotionValuesFromProps:x0,createRenderState:I0}),Q2=Symbol.for("motionComponentSymbol");function Z2(e,t,n){const r=p.useRef(n);p.useInsertionEffect(()=>{r.current=n});const s=p.useRef(null);return p.useCallback(o=>{var a;o&&((a=e.onMount)==null||a.call(e,o));const i=r.current;if(typeof i=="function")if(o){const l=i(o);typeof l=="function"&&(s.current=l)}else s.current?(s.current(),s.current=null):i(o);else i&&(i.current=o);t&&(o?t.mount(o):t.unmount())},[t])}const F0=p.createContext({});function jr(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function q2(e,t,n,r,s,o){var v,E;const{visualElement:i}=p.useContext(Ua),a=p.useContext(A0),l=p.useContext(Fa),c=p.useContext(ef),d=c.reducedMotion,u=c.skipAnimations,f=p.useRef(null),y=p.useRef(!1);r=r||a.renderer,!f.current&&r&&(f.current=r(e,{visualState:t,parent:i,props:n,presenceContext:l,blockInitialAnimation:l?l.initial===!1:!1,reducedMotionConfig:d,skipAnimations:u,isSVG:o}),y.current&&f.current&&(f.current.manuallyAnimateOnMount=!0));const w=f.current,x=p.useContext(F0);w&&!w.projection&&s&&(w.type==="html"||w.type==="svg")&&J2(f.current,n,s,x);const S=p.useRef(!1);p.useInsertionEffect(()=>{w&&S.current&&w.update(n,l)});const m=n[Kv],g=p.useRef(!!m&&typeof window<"u"&&!((v=window.MotionHandoffIsComplete)!=null&&v.call(window,m))&&((E=window.MotionHasOptimisedAnimation)==null?void 0:E.call(window,m)));return ov(()=>{y.current=!0,w&&(S.current=!0,window.MotionIsMounted=!0,w.updateFeatures(),w.scheduleRenderMicrotask(),g.current&&w.animationState&&w.animationState.animateChanges())}),p.useEffect(()=>{w&&(!g.current&&w.animationState&&w.animationState.animateChanges(),g.current&&(queueMicrotask(()=>{var C;(C=window.MotionHandoffMarkAsComplete)==null||C.call(window,m)}),g.current=!1),w.enteringChildren=void 0)}),w}function J2(e,t,n,r){const{layoutId:s,layout:o,drag:i,dragConstraints:a,layoutScroll:l,layoutRoot:c,layoutAnchor:d,layoutCrossfade:u}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:z0(e.parent)),e.projection.setOptions({layoutId:s,layout:o,alwaysMeasureLayout:!!i||a&&jr(a),visualElement:e,animationType:typeof o=="string"?o:"both",initialPromotionConfig:r,crossfade:u,layoutScroll:l,layoutRoot:c,layoutAnchor:d})}function z0(e){if(e)return e.options.allowProjection!==!1?e.projection:z0(e.parent)}function Wl(e,{forwardMotionProps:t=!1,type:n}={},r,s){r&&L2(r);const o=n?n==="svg":rf(e),i=o?X2:Y2;function a(c,d){let u;const f={...p.useContext(ef),...c,layoutId:eP(c)},{isStatic:y}=f,w=F2(c),x=i(c,y);if(!y&&typeof window<"u"){tP();const S=nP(f);u=S.MeasureLayout,w.visualElement=q2(e,x,f,s,S.ProjectionNode,o)}return h.jsxs(Ua.Provider,{value:w,children:[u&&w.visualElement?h.jsx(u,{visualElement:w.visualElement,...f}):null,H2(e,c,Z2(x,w.visualElement,d),x,y,t,o)]})}a.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const l=p.forwardRef(a);return l[Q2]=e,l}function eP({layoutId:e}){const t=p.useContext(Nd).id;return t&&e!==void 0?t+"-"+e:e}function tP(e,t){p.useContext(A0).strict}function nP(e){const t=L0(),{drag:n,layout:r}=t;if(!n&&!r)return{};const s={...n,...r};return{MeasureLayout:n!=null&&n.isEnabled(e)||r!=null&&r.isEnabled(e)?s.MeasureLayout:void 0,ProjectionNode:s.ProjectionNode}}function rP(e,t){if(typeof Proxy>"u")return Wl;const n=new Map,r=(o,i)=>Wl(o,i,e,t),s=(o,i)=>r(o,i);return new Proxy(s,{get:(o,i)=>i==="create"?r:(n.has(i)||n.set(i,Wl(i,void 0,e,t)),n.get(i))})}const sP=(e,t)=>t.isSVG??rf(e)?new LC(t):new NC(t,{allowProjection:e!==p.Fragment});class oP extends Yn{constructor(t){super(t),t.animationState||(t.animationState=FC(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();Ba(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){var t;this.node.animationState.reset(),(t=this.unmountControls)==null||t.call(this)}}let iP=0;class aP extends Yn{constructor(){super(...arguments),this.id=iP++,this.isExitComplete=!1}update(){var o;if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:r}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===r)return;if(t&&r===!1){if(this.isExitComplete){const{initial:i,custom:a}=this.node.getProps();if(typeof i=="string"){const l=hr(this.node,i,a);if(l){const{transition:c,transitionEnd:d,...u}=l;for(const f in u)(o=this.node.getValue(f))==null||o.jump(u[f])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}const s=this.node.animationState.setActive("exit",!t);n&&!t&&s.then(()=>{this.isExitComplete=!0,n(this.id)})}mount(){const{register:t,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),t&&(this.unmount=t(this.id))}unmount(){}}const lP={animation:{Feature:oP},exit:{Feature:aP}};function Do(e){return{point:{x:e.pageX,y:e.pageY}}}const uP=e=>t=>Yd(t)&&e(t,Do(t));function Ks(e,t,n,r){return yo(e,t,uP(n),r)}const B0=({current:e})=>e?e.ownerDocument.defaultView:null,Yp=(e,t)=>Math.abs(e-t);function cP(e,t){const n=Yp(e.x,t.x),r=Yp(e.y,t.y);return Math.sqrt(n**2+r**2)}const Xp=new Set(["auto","scroll"]);class $0{constructor(t,n,{transformPagePoint:r,contextWindow:s=window,dragSnapToOrigin:o=!1,distanceThreshold:i=3,element:a}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=y=>{this.handleScroll(y.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=ri(this.lastRawMoveEventInfo,this.transformPagePoint));const y=Hl(this.lastMoveEventInfo,this.history),w=this.startEvent!==null,x=cP(y.offset,{x:0,y:0})>=this.distanceThreshold;if(!w&&!x)return;const{point:S}=y,{timestamp:m}=Oe;this.history.push({...S,timestamp:m});const{onStart:g,onMove:v}=this.handlers;w||(g&&g(this.lastMoveEvent,y),this.startEvent=this.lastMoveEvent),v&&v(this.lastMoveEvent,y)},this.handlePointerMove=(y,w)=>{this.lastMoveEvent=y,this.lastRawMoveEventInfo=w,this.lastMoveEventInfo=ri(w,this.transformPagePoint),oe.update(this.updatePoint,!0)},this.handlePointerUp=(y,w)=>{this.end();const{onEnd:x,onSessionEnd:S,resumeAnimation:m}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&m&&m(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const g=Hl(y.type==="pointercancel"?this.lastMoveEventInfo:ri(w,this.transformPagePoint),this.history);this.startEvent&&x&&x(y,g),S&&S(y,g)},!Yd(t))return;this.dragSnapToOrigin=o,this.handlers=n,this.transformPagePoint=r,this.distanceThreshold=i,this.contextWindow=s||window;const l=Do(t),c=ri(l,this.transformPagePoint),{point:d}=c,{timestamp:u}=Oe;this.history=[{...d,timestamp:u}];const{onSessionStart:f}=n;f&&f(t,Hl(c,this.history)),this.removeListeners=jo(Ks(this.contextWindow,"pointermove",this.handlePointerMove),Ks(this.contextWindow,"pointerup",this.handlePointerUp),Ks(this.contextWindow,"pointercancel",this.handlePointerUp)),a&&this.startScrollTracking(a)}startScrollTracking(t){let n=t.parentElement;for(;n;){const r=getComputedStyle(n);(Xp.has(r.overflowX)||Xp.has(r.overflowY))&&this.scrollPositions.set(n,{x:n.scrollLeft,y:n.scrollTop}),n=n.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){const n=this.scrollPositions.get(t);if(!n)return;const r=t===window,s=r?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},o={x:s.x-n.x,y:s.y-n.y};o.x===0&&o.y===0||(r?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=o.x,this.lastMoveEventInfo.point.y+=o.y):this.history.length>0&&(this.history[0].x-=o.x,this.history[0].y-=o.y),this.scrollPositions.set(t,s),oe.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),Un(this.updatePoint)}}function ri(e,t){return t?{point:t(e.point)}:e}function Qp(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Hl({point:e},t){return{point:e,delta:Qp(e,U0(t)),offset:Qp(e,dP(t)),velocity:fP(t,.1)}}function dP(e){return e[0]}function U0(e){return e[e.length-1]}function fP(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const s=U0(e);for(;n>=0&&(r=e[n],!(s.timestamp-r.timestamp>ct(t)));)n--;if(!r)return{x:0,y:0};r===e[0]&&e.length>2&&s.timestamp-r.timestamp>ct(t)*2&&(r=e[1]);const o=vt(s.timestamp-r.timestamp);if(o===0)return{x:0,y:0};const i={x:(s.x-r.x)/o,y:(s.y-r.y)/o};return i.x===1/0&&(i.x=0),i.y===1/0&&(i.y=0),i}function hP(e,{min:t,max:n},r){return t!==void 0&&e<t?e=r?fe(t,e,r.min):Math.max(e,t):n!==void 0&&e>n&&(e=r?fe(n,e,r.max):Math.min(e,n)),e}function Zp(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function pP(e,{top:t,left:n,bottom:r,right:s}){return{x:Zp(e.x,n,s),y:Zp(e.y,t,r)}}function qp(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.min<e.max-e.min&&([n,r]=[r,n]),{min:n,max:r}}function mP(e,t){return{x:qp(e.x,t.x),y:qp(e.y,t.y)}}function gP(e,t){let n=.5;const r=Xe(e),s=Xe(t);return s>r?n=po(t.min,t.max-r,e.min):r>s&&(n=po(e.min,e.max-s,t.min)),Yt(0,1,n)}function yP(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const kc=.35;function vP(e=kc){return e===!1?e=0:e===!0&&(e=kc),{x:Jp(e,"left","right"),y:Jp(e,"top","bottom")}}function Jp(e,t,n){return{min:em(e,t),max:em(e,n)}}function em(e,t){return typeof e=="number"?e:e[t]||0}const xP=new WeakMap;class wP{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Ne(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:n=!1,distanceThreshold:r}={}){const{presenceContext:s}=this.visualElement;if(s&&s.isPresent===!1)return;const o=u=>{n&&this.snapToCursor(Do(u).point),this.stopAnimation()},i=(u,f)=>{const{drag:y,dragPropagation:w,onDragStart:x}=this.getProps();if(y&&!w&&(this.openDragLock&&this.openDragLock(),this.openDragLock=Kb(y),!this.openDragLock))return;this.latestPointerEvent=u,this.latestPanInfo=f,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Bt(m=>{let g=this.getAxisMotionValue(m).get()||0;if(Kt.test(g)){const{projection:v}=this.visualElement;if(v&&v.layout){const E=v.layout.layoutBox[m];E&&(g=Xe(E)*(parseFloat(g)/100))}}this.originPoint[m]=g}),x&&oe.update(()=>x(u,f),!1,!0),pc(this.visualElement,"transform");const{animationState:S}=this.visualElement;S&&S.setActive("whileDrag",!0)},a=(u,f)=>{this.latestPointerEvent=u,this.latestPanInfo=f;const{dragPropagation:y,dragDirectionLock:w,onDirectionLock:x,onDrag:S}=this.getProps();if(!y&&!this.openDragLock)return;const{offset:m}=f;if(w&&this.currentDirection===null){this.currentDirection=EP(m),this.currentDirection!==null&&x&&x(this.currentDirection);return}this.updateAxis("x",f.point,m),this.updateAxis("y",f.point,m),this.visualElement.render(),S&&oe.update(()=>S(u,f),!1,!0)},l=(u,f)=>{this.latestPointerEvent=u,this.latestPanInfo=f,this.stop(u,f),this.latestPointerEvent=null,this.latestPanInfo=null},c=()=>{const{dragSnapToOrigin:u}=this.getProps();(u||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:d}=this.getProps();this.panSession=new $0(t,{onSessionStart:o,onStart:i,onMove:a,onSessionEnd:l,resumeAnimation:c},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:d,distanceThreshold:r,contextWindow:B0(this.visualElement),element:this.visualElement.current})}stop(t,n){const r=t||this.latestPointerEvent,s=n||this.latestPanInfo,o=this.isDragging;if(this.cancel(),!o||!s||!r)return;const{velocity:i}=s;this.startAnimation(i);const{onDragEnd:a}=this.getProps();a&&oe.postRender(()=>a(r,s))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:r}=this.getProps();!r&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(t,n,r){const{drag:s}=this.getProps();if(!r||!si(t,s,this.currentDirection))return;const o=this.getAxisMotionValue(t);let i=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(i=hP(i,this.constraints[t],this.elastic[t])),o.set(i)}resolveConstraints(){var o;const{dragConstraints:t,dragElastic:n}=this.getProps(),r=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(o=this.visualElement.projection)==null?void 0:o.layout,s=this.constraints;t&&jr(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=pP(r.layoutBox,t):this.constraints=!1,this.elastic=vP(n),s!==this.constraints&&!jr(t)&&r&&this.constraints&&!this.hasMutatedConstraints&&Bt(i=>{this.constraints!==!1&&this.getAxisMotionValue(i)&&(this.constraints[i]=yP(r.layoutBox[i],this.constraints[i]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!jr(t))return!1;const r=t.current,{projection:s}=this.visualElement;if(!s||!s.layout)return!1;const o=EC(r,s.root,this.visualElement.getTransformPagePoint());let i=mP(s.layout.layoutBox,o);if(n){const a=n(xC(i));this.hasMutatedConstraints=!!a,a&&(i=c0(a))}return i}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:s,dragTransition:o,dragSnapToOrigin:i,onDragTransitionEnd:a}=this.getProps(),l=this.constraints||{},c=Bt(d=>{if(!si(d,n,this.currentDirection))return;let u=l&&l[d]||{};(i===!0||i===d)&&(u={min:0,max:0});const f=s?200:1e6,y=s?40:1e7,w={type:"inertia",velocity:r?t[d]:0,bounceStiffness:f,bounceDamping:y,timeConstant:750,restDelta:1,restSpeed:10,...o,...u};return this.startAxisValueAnimation(d,w)});return Promise.all(c).then(a)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return pc(this.visualElement,t),r.start(Ud(t,r,0,n,this.visualElement,!1))}stopAnimation(){Bt(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,r=this.visualElement.getProps(),s=r[n];return s||this.visualElement.getValue(t,(r.initial?r.initial[t]:void 0)||0)}snapToCursor(t){Bt(n=>{const{drag:r}=this.getProps();if(!si(n,r,this.currentDirection))return;const{projection:s}=this.visualElement,o=this.getAxisMotionValue(n);if(s&&s.layout){const{min:i,max:a}=s.layout.layoutBox[n],l=o.get()||0;o.set(t[n]-fe(i,a,.5)+l)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!jr(n)||!r||!this.constraints)return;this.stopAnimation();const s={x:0,y:0};Bt(i=>{const a=this.getAxisMotionValue(i);if(a&&this.constraints!==!1){const l=a.get();s[i]=gP({min:l,max:l},this.constraints[i])}});const{transformTemplate:o}=this.visualElement.getProps();this.visualElement.current.style.transform=o?o({},""):"none",r.root&&r.root.updateScroll(),r.updateLayout(),this.constraints=!1,this.resolveConstraints(),Bt(i=>{if(!si(i,t,null))return;const a=this.getAxisMotionValue(i),{min:l,max:c}=this.constraints[i];a.set(fe(l,c,s[i]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;xP.set(this.visualElement,this);const t=this.visualElement.current,n=Ks(t,"pointerdown",c=>{const{drag:d,dragListener:u=!0}=this.getProps(),f=c.target,y=f!==t&&Jb(f);d&&u&&!y&&this.start(c)});let r;const s=()=>{const{dragConstraints:c}=this.getProps();jr(c)&&c.current&&(this.constraints=this.resolveRefConstraints(),r||(r=SP(t,c.current,()=>this.scalePositionWithinConstraints())))},{projection:o}=this.visualElement,i=o.addEventListener("measure",s);o&&!o.layout&&(o.root&&o.root.updateScroll(),o.updateLayout()),oe.read(s);const a=yo(window,"resize",()=>this.scalePositionWithinConstraints()),l=o.addEventListener("didUpdate",({delta:c,hasLayoutChanged:d})=>{this.isDragging&&d&&(Bt(u=>{const f=this.getAxisMotionValue(u);f&&(this.originPoint[u]+=c[u].translate,f.set(f.get()+c[u].translate))}),this.visualElement.render())});return()=>{a(),n(),i(),l&&l(),r&&r()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:s=!1,dragConstraints:o=!1,dragElastic:i=kc,dragMomentum:a=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:s,dragConstraints:o,dragElastic:i,dragMomentum:a}}}function tm(e){let t=!0;return()=>{if(t){t=!1;return}e()}}function SP(e,t,n){const r=lp(e,tm(n)),s=lp(t,tm(n));return()=>{r(),s()}}function si(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function EP(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class kP extends Yn{constructor(t){super(t),this.removeGroupControls=wt,this.removeListeners=wt,this.controls=new wP(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||wt}update(){const{dragControls:t}=this.node.getProps(),{dragControls:n}=this.node.prevProps||{};t!==n&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}}const Gl=e=>(t,n)=>{e&&oe.update(()=>e(t,n),!1,!0)};class bP extends Yn{constructor(){super(...arguments),this.removePointerDownListener=wt}onPointerDown(t){this.session=new $0(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:B0(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:s}=this.node.getProps();return{onSessionStart:Gl(t),onStart:Gl(n),onMove:Gl(r),onEnd:(o,i)=>{delete this.session,s&&oe.postRender(()=>s(o,i))}}}mount(){this.removePointerDownListener=Ks(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let Kl=!1;class CP extends p.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:s}=this.props,{projection:o}=t;o&&(n.group&&n.group.add(o),r&&r.register&&s&&r.register(o),Kl&&o.root.didUpdate(),o.addEventListener("animationComplete",()=>{this.safeToRemove()}),o.setOptions({...o.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),Di.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,drag:s,isPresent:o}=this.props,{projection:i}=r;return i&&(i.isPresent=o,t.layoutDependency!==n&&i.setOptions({...i.options,layoutDependency:n}),Kl=!0,s||t.layoutDependency!==n||n===void 0||t.isPresent!==o?i.willUpdate():this.safeToRemove(),t.isPresent!==o&&(o?i.promote():i.relegate()||oe.postRender(()=>{const a=i.getStack();(!a||!a.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{visualElement:t,layoutAnchor:n}=this.props,{projection:r}=t;r&&(r.options.layoutAnchor=n,r.root.didUpdate(),Kd.postRender(()=>{!r.currentAnimation&&r.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:s}=t;Kl=!0,s&&(s.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(s),r&&r.deregister&&r.deregister(s))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function W0(e){const[t,n]=D0(),r=p.useContext(Nd);return h.jsx(CP,{...e,layoutGroup:r,switchLayoutGroup:p.useContext(F0),isPresent:t,safeToRemove:n})}const PP={pan:{Feature:bP},drag:{Feature:kP,ProjectionNode:M0,MeasureLayout:W0}};function nm(e,t,n){const{props:r}=e;e.animationState&&r.whileHover&&e.animationState.setActive("whileHover",n==="Start");const s="onHover"+n,o=r[s];o&&oe.postRender(()=>o(t,Do(t)))}class TP extends Yn{mount(){const{current:t}=this.node;t&&(this.unmount=Xb(t,(n,r)=>(nm(this.node,r,"Start"),s=>nm(this.node,s,"End"))))}unmount(){}}class NP extends Yn{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=jo(yo(this.node.current,"focus",()=>this.onFocus()),yo(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function rm(e,t,n){const{props:r}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&r.whileTap&&e.animationState.setActive("whileTap",n==="Start");const s="onTap"+(n==="End"?"":n),o=r[s];o&&oe.postRender(()=>o(t,Do(t)))}class jP extends Yn{mount(){const{current:t}=this.node;if(!t)return;const{globalTapTarget:n,propagate:r}=this.node.props;this.unmount=tC(t,(s,o)=>(rm(this.node,o,"Start"),(i,{success:a})=>rm(this.node,i,a?"End":"Cancel")),{useGlobalTarget:n,stopPropagation:(r==null?void 0:r.tap)===!1})}unmount(){}}const bc=new WeakMap,Yl=new WeakMap,RP=e=>{const t=bc.get(e.target);t&&t(e)},MP=e=>{e.forEach(RP)};function DP({root:e,...t}){const n=e||document;Yl.has(n)||Yl.set(n,{});const r=Yl.get(n),s=JSON.stringify(t);return r[s]||(r[s]=new IntersectionObserver(MP,{root:e,...t})),r[s]}function AP(e,t,n){const r=DP(t);return bc.set(e,n),r.observe(e),()=>{bc.delete(e),r.unobserve(e)}}const LP={some:0,all:1};class _P extends Yn{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){var l;(l=this.stopObserver)==null||l.call(this);const{viewport:t={}}=this.node.getProps(),{root:n,margin:r,amount:s="some",once:o}=t,i={root:n?n.current:void 0,rootMargin:r,threshold:typeof s=="number"?s:LP[s]},a=c=>{const{isIntersecting:d}=c;if(this.isInView===d||(this.isInView=d,o&&!d&&this.hasEnteredView))return;d&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",d);const{onViewportEnter:u,onViewportLeave:f}=this.node.getProps(),y=d?u:f;y&&y(c)};this.stopObserver=AP(this.node.current,i,a)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(OP(t,n))&&this.startObserver()}unmount(){var t;(t=this.stopObserver)==null||t.call(this),this.hasEnteredView=!1,this.isInView=!1}}function OP({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const IP={inView:{Feature:_P},tap:{Feature:jP},focus:{Feature:NP},hover:{Feature:TP}},VP={layout:{ProjectionNode:M0,MeasureLayout:W0}},FP={...lP,...IP,...PP,...VP},Vn=rP(FP,sP);function H0(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(t=0;t<s;t++)e[t]&&(n=H0(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function G0(){for(var e,t,n=0,r="",s=arguments.length;n<s;n++)(e=arguments[n])&&(t=H0(e))&&(r&&(r+=" "),r+=t);return r}const sf="-",zP=e=>{const t=$P(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:i=>{const a=i.split(sf);return a[0]===""&&a.length!==1&&a.shift(),K0(a,t)||BP(i)},getConflictingClassGroupIds:(i,a)=>{const l=n[i]||[];return a&&r[i]?[...l,...r[i]]:l}}},K0=(e,t)=>{var i;if(e.length===0)return t.classGroupId;const n=e[0],r=t.nextPart.get(n),s=r?K0(e.slice(1),r):void 0;if(s)return s;if(t.validators.length===0)return;const o=e.join(sf);return(i=t.validators.find(({validator:a})=>a(o)))==null?void 0:i.classGroupId},sm=/^\[(.+)\]$/,BP=e=>{if(sm.test(e)){const t=sm.exec(e)[1],n=t==null?void 0:t.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}},$P=e=>{const{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return WP(Object.entries(e.classGroups),n).forEach(([o,i])=>{Cc(i,r,o,t)}),r},Cc=(e,t,n,r)=>{e.forEach(s=>{if(typeof s=="string"){const o=s===""?t:om(t,s);o.classGroupId=n;return}if(typeof s=="function"){if(UP(s)){Cc(s(r),t,n,r);return}t.validators.push({validator:s,classGroupId:n});return}Object.entries(s).forEach(([o,i])=>{Cc(i,om(t,o),n,r)})})},om=(e,t)=>{let n=e;return t.split(sf).forEach(r=>{n.nextPart.has(r)||n.nextPart.set(r,{nextPart:new Map,validators:[]}),n=n.nextPart.get(r)}),n},UP=e=>e.isThemeGetter,WP=(e,t)=>t?e.map(([n,r])=>{const s=r.map(o=>typeof o=="string"?t+o:typeof o=="object"?Object.fromEntries(Object.entries(o).map(([i,a])=>[t+i,a])):o);return[n,s]}):e,HP=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,r=new Map;const s=(o,i)=>{n.set(o,i),t++,t>e&&(t=0,r=n,n=new Map)};return{get(o){let i=n.get(o);if(i!==void 0)return i;if((i=r.get(o))!==void 0)return s(o,i),i},set(o,i){n.has(o)?n.set(o,i):s(o,i)}}},Y0="!",GP=e=>{const{separator:t,experimentalParseClassName:n}=e,r=t.length===1,s=t[0],o=t.length,i=a=>{const l=[];let c=0,d=0,u;for(let S=0;S<a.length;S++){let m=a[S];if(c===0){if(m===s&&(r||a.slice(S,S+o)===t)){l.push(a.slice(d,S)),d=S+o;continue}if(m==="/"){u=S;continue}}m==="["?c++:m==="]"&&c--}const f=l.length===0?a:a.substring(d),y=f.startsWith(Y0),w=y?f.substring(1):f,x=u&&u>d?u-d:void 0;return{modifiers:l,hasImportantModifier:y,baseClassName:w,maybePostfixModifierPosition:x}};return n?a=>n({className:a,parseClassName:i}):i},KP=e=>{if(e.length<=1)return e;const t=[];let n=[];return e.forEach(r=>{r[0]==="["?(t.push(...n.sort(),r),n=[]):n.push(r)}),t.push(...n.sort()),t},YP=e=>({cache:HP(e.cacheSize),parseClassName:GP(e),...zP(e)}),XP=/\s+/,QP=(e,t)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s}=t,o=[],i=e.trim().split(XP);let a="";for(let l=i.length-1;l>=0;l-=1){const c=i[l],{modifiers:d,hasImportantModifier:u,baseClassName:f,maybePostfixModifierPosition:y}=n(c);let w=!!y,x=r(w?f.substring(0,y):f);if(!x){if(!w){a=c+(a.length>0?" "+a:a);continue}if(x=r(f),!x){a=c+(a.length>0?" "+a:a);continue}w=!1}const S=KP(d).join(":"),m=u?S+Y0:S,g=m+x;if(o.includes(g))continue;o.push(g);const v=s(x,w);for(let E=0;E<v.length;++E){const C=v[E];o.push(m+C)}a=c+(a.length>0?" "+a:a)}return a};function ZP(){let e=0,t,n,r="";for(;e<arguments.length;)(t=arguments[e++])&&(n=X0(t))&&(r&&(r+=" "),r+=n);return r}const X0=e=>{if(typeof e=="string")return e;let t,n="";for(let r=0;r<e.length;r++)e[r]&&(t=X0(e[r]))&&(n&&(n+=" "),n+=t);return n};function qP(e,...t){let n,r,s,o=i;function i(l){const c=t.reduce((d,u)=>u(d),e());return n=YP(c),r=n.cache.get,s=n.cache.set,o=a,a(l)}function a(l){const c=r(l);if(c)return c;const d=QP(l,n);return s(l,d),d}return function(){return o(ZP.apply(null,arguments))}}const ce=e=>{const t=n=>n[e]||[];return t.isThemeGetter=!0,t},Q0=/^\[(?:([a-z-]+):)?(.+)\]$/i,JP=/^\d+\/\d+$/,eT=new Set(["px","full","screen"]),tT=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,nT=/\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$/,rT=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,sT=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,oT=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Zt=e=>Zr(e)||eT.has(e)||JP.test(e),mn=e=>ms(e,"length",hT),Zr=e=>!!e&&!Number.isNaN(Number(e)),Xl=e=>ms(e,"number",Zr),Ps=e=>!!e&&Number.isInteger(Number(e)),iT=e=>e.endsWith("%")&&Zr(e.slice(0,-1)),W=e=>Q0.test(e),gn=e=>tT.test(e),aT=new Set(["length","size","percentage"]),lT=e=>ms(e,aT,Z0),uT=e=>ms(e,"position",Z0),cT=new Set(["image","url"]),dT=e=>ms(e,cT,mT),fT=e=>ms(e,"",pT),Ts=()=>!0,ms=(e,t,n)=>{const r=Q0.exec(e);return r?r[1]?typeof t=="string"?r[1]===t:t.has(r[1]):n(r[2]):!1},hT=e=>nT.test(e)&&!rT.test(e),Z0=()=>!1,pT=e=>sT.test(e),mT=e=>oT.test(e),gT=()=>{const e=ce("colors"),t=ce("spacing"),n=ce("blur"),r=ce("brightness"),s=ce("borderColor"),o=ce("borderRadius"),i=ce("borderSpacing"),a=ce("borderWidth"),l=ce("contrast"),c=ce("grayscale"),d=ce("hueRotate"),u=ce("invert"),f=ce("gap"),y=ce("gradientColorStops"),w=ce("gradientColorStopPositions"),x=ce("inset"),S=ce("margin"),m=ce("opacity"),g=ce("padding"),v=ce("saturate"),E=ce("scale"),C=ce("sepia"),P=ce("skew"),k=ce("space"),b=ce("translate"),D=()=>["auto","contain","none"],T=()=>["auto","hidden","clip","visible","scroll"],A=()=>["auto",W,t],L=()=>[W,t],Z=()=>["",Zt,mn],le=()=>["auto",Zr,W],ge=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],B=()=>["solid","dashed","dotted","double","none"],re=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],j=()=>["start","end","center","between","around","evenly","stretch"],_=()=>["","0",W],V=()=>["auto","avoid","all","avoid-page","page","left","right","column"],$=()=>[Zr,W];return{cacheSize:500,separator:":",theme:{colors:[Ts],spacing:[Zt,mn],blur:["none","",gn,W],brightness:$(),borderColor:[e],borderRadius:["none","","full",gn,W],borderSpacing:L(),borderWidth:Z(),contrast:$(),grayscale:_(),hueRotate:$(),invert:_(),gap:L(),gradientColorStops:[e],gradientColorStopPositions:[iT,mn],inset:A(),margin:A(),opacity:$(),padding:L(),saturate:$(),scale:$(),sepia:_(),skew:$(),space:L(),translate:L()},classGroups:{aspect:[{aspect:["auto","square","video",W]}],container:["container"],columns:[{columns:[gn]}],"break-after":[{"break-after":V()}],"break-before":[{"break-before":V()}],"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:[...ge(),W]}],overflow:[{overflow:T()}],"overflow-x":[{"overflow-x":T()}],"overflow-y":[{"overflow-y":T()}],overscroll:[{overscroll:D()}],"overscroll-x":[{"overscroll-x":D()}],"overscroll-y":[{"overscroll-y":D()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[x]}],"inset-x":[{"inset-x":[x]}],"inset-y":[{"inset-y":[x]}],start:[{start:[x]}],end:[{end:[x]}],top:[{top:[x]}],right:[{right:[x]}],bottom:[{bottom:[x]}],left:[{left:[x]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",Ps,W]}],basis:[{basis:A()}],"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:_()}],shrink:[{shrink:_()}],order:[{order:["first","last","none",Ps,W]}],"grid-cols":[{"grid-cols":[Ts]}],"col-start-end":[{col:["auto",{span:["full",Ps,W]},W]}],"col-start":[{"col-start":le()}],"col-end":[{"col-end":le()}],"grid-rows":[{"grid-rows":[Ts]}],"row-start-end":[{row:["auto",{span:[Ps,W]},W]}],"row-start":[{"row-start":le()}],"row-end":[{"row-end":le()}],"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:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:["normal",...j()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...j(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...j(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[g]}],px:[{px:[g]}],py:[{py:[g]}],ps:[{ps:[g]}],pe:[{pe:[g]}],pt:[{pt:[g]}],pr:[{pr:[g]}],pb:[{pb:[g]}],pl:[{pl:[g]}],m:[{m:[S]}],mx:[{mx:[S]}],my:[{my:[S]}],ms:[{ms:[S]}],me:[{me:[S]}],mt:[{mt:[S]}],mr:[{mr:[S]}],mb:[{mb:[S]}],ml:[{ml:[S]}],"space-x":[{"space-x":[k]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[k]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",W,t]}],"min-w":[{"min-w":[W,t,"min","max","fit"]}],"max-w":[{"max-w":[W,t,"none","full","min","max","fit","prose",{screen:[gn]},gn]}],h:[{h:[W,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[W,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[W,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[W,t,"auto","min","max","fit"]}],"font-size":[{text:["base",gn,mn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Xl]}],"font-family":[{font:[Ts]}],"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",Zr,Xl]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",Zt,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":[m]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[m]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...B(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",Zt,mn]}],"underline-offset":[{"underline-offset":["auto",Zt,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:L()}],"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":[m]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...ge(),uT]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",lT]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},dT]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[w]}],"gradient-via-pos":[{via:[w]}],"gradient-to-pos":[{to:[w]}],"gradient-from":[{from:[y]}],"gradient-via":[{via:[y]}],"gradient-to":[{to:[y]}],rounded:[{rounded:[o]}],"rounded-s":[{"rounded-s":[o]}],"rounded-e":[{"rounded-e":[o]}],"rounded-t":[{"rounded-t":[o]}],"rounded-r":[{"rounded-r":[o]}],"rounded-b":[{"rounded-b":[o]}],"rounded-l":[{"rounded-l":[o]}],"rounded-ss":[{"rounded-ss":[o]}],"rounded-se":[{"rounded-se":[o]}],"rounded-ee":[{"rounded-ee":[o]}],"rounded-es":[{"rounded-es":[o]}],"rounded-tl":[{"rounded-tl":[o]}],"rounded-tr":[{"rounded-tr":[o]}],"rounded-br":[{"rounded-br":[o]}],"rounded-bl":[{"rounded-bl":[o]}],"border-w":[{border:[a]}],"border-w-x":[{"border-x":[a]}],"border-w-y":[{"border-y":[a]}],"border-w-s":[{"border-s":[a]}],"border-w-e":[{"border-e":[a]}],"border-w-t":[{"border-t":[a]}],"border-w-r":[{"border-r":[a]}],"border-w-b":[{"border-b":[a]}],"border-w-l":[{"border-l":[a]}],"border-opacity":[{"border-opacity":[m]}],"border-style":[{border:[...B(),"hidden"]}],"divide-x":[{"divide-x":[a]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[a]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[m]}],"divide-style":[{divide:B()}],"border-color":[{border:[s]}],"border-color-x":[{"border-x":[s]}],"border-color-y":[{"border-y":[s]}],"border-color-s":[{"border-s":[s]}],"border-color-e":[{"border-e":[s]}],"border-color-t":[{"border-t":[s]}],"border-color-r":[{"border-r":[s]}],"border-color-b":[{"border-b":[s]}],"border-color-l":[{"border-l":[s]}],"divide-color":[{divide:[s]}],"outline-style":[{outline:["",...B()]}],"outline-offset":[{"outline-offset":[Zt,W]}],"outline-w":[{outline:[Zt,mn]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Z()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[m]}],"ring-offset-w":[{"ring-offset":[Zt,mn]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",gn,fT]}],"shadow-color":[{shadow:[Ts]}],opacity:[{opacity:[m]}],"mix-blend":[{"mix-blend":[...re(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":re()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[l]}],"drop-shadow":[{"drop-shadow":["","none",gn,W]}],grayscale:[{grayscale:[c]}],"hue-rotate":[{"hue-rotate":[d]}],invert:[{invert:[u]}],saturate:[{saturate:[v]}],sepia:[{sepia:[C]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[l]}],"backdrop-grayscale":[{"backdrop-grayscale":[c]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[d]}],"backdrop-invert":[{"backdrop-invert":[u]}],"backdrop-opacity":[{"backdrop-opacity":[m]}],"backdrop-saturate":[{"backdrop-saturate":[v]}],"backdrop-sepia":[{"backdrop-sepia":[C]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[i]}],"border-spacing-x":[{"border-spacing-x":[i]}],"border-spacing-y":[{"border-spacing-y":[i]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",W]}],duration:[{duration:$()}],ease:[{ease:["linear","in","out","in-out",W]}],delay:[{delay:$()}],animate:[{animate:["none","spin","ping","pulse","bounce",W]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[E]}],"scale-x":[{"scale-x":[E]}],"scale-y":[{"scale-y":[E]}],rotate:[{rotate:[Ps,W]}],"translate-x":[{"translate-x":[b]}],"translate-y":[{"translate-y":[b]}],"skew-x":[{"skew-x":[P]}],"skew-y":[{"skew-y":[P]}],"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":L()}],"scroll-mx":[{"scroll-mx":L()}],"scroll-my":[{"scroll-my":L()}],"scroll-ms":[{"scroll-ms":L()}],"scroll-me":[{"scroll-me":L()}],"scroll-mt":[{"scroll-mt":L()}],"scroll-mr":[{"scroll-mr":L()}],"scroll-mb":[{"scroll-mb":L()}],"scroll-ml":[{"scroll-ml":L()}],"scroll-p":[{"scroll-p":L()}],"scroll-px":[{"scroll-px":L()}],"scroll-py":[{"scroll-py":L()}],"scroll-ps":[{"scroll-ps":L()}],"scroll-pe":[{"scroll-pe":L()}],"scroll-pt":[{"scroll-pt":L()}],"scroll-pr":[{"scroll-pr":L()}],"scroll-pb":[{"scroll-pb":L()}],"scroll-pl":[{"scroll-pl":L()}],"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"]}],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:[Zt,mn,Xl]}],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"]}}},yT=qP(gT);function Q(...e){return yT(G0(e))}const of=p.forwardRef(({className:e,...t},n)=>h.jsx("div",{ref:n,className:Q("rounded-lg border bg-card text-card-foreground shadow-sm",e),...t}));of.displayName="Card";const af=p.forwardRef(({className:e,...t},n)=>h.jsx("div",{ref:n,className:Q("flex flex-col space-y-1.5 p-6",e),...t}));af.displayName="CardHeader";const lf=p.forwardRef(({className:e,...t},n)=>h.jsx("h3",{ref:n,className:Q("text-2xl font-semibold leading-none tracking-tight",e),...t}));lf.displayName="CardTitle";const q0=p.forwardRef(({className:e,...t},n)=>h.jsx("p",{ref:n,className:Q("text-sm text-muted-foreground",e),...t}));q0.displayName="CardDescription";const uf=p.forwardRef(({className:e,...t},n)=>h.jsx("div",{ref:n,className:Q("p-6 pt-0",e),...t}));uf.displayName="CardContent";const J0=p.forwardRef(({className:e,...t},n)=>h.jsx("div",{ref:n,className:Q("flex items-center p-6 pt-0",e),...t}));J0.displayName="CardFooter";function im(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Wa(...e){return t=>{let n=!1;const r=e.map(s=>{const o=im(s,t);return!n&&typeof o=="function"&&(n=!0),o});if(n)return()=>{for(let s=0;s<r.length;s++){const o=r[s];typeof o=="function"?o():im(e[s],null)}}}}function br(...e){return p.useCallback(Wa(...e),e)}var vT=Symbol.for("react.lazy"),pa=wa[" use ".trim().toString()];function xT(e){return typeof e=="object"&&e!==null&&"then"in e}function ex(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===vT&&"_payload"in e&&xT(e._payload)}function tx(e){const t=ST(e),n=p.forwardRef((r,s)=>{let{children:o,...i}=r;ex(o)&&typeof pa=="function"&&(o=pa(o._payload));const a=p.Children.toArray(o),l=a.find(kT);if(l){const c=l.props.children,d=a.map(u=>u===l?p.Children.count(c)>1?p.Children.only(null):p.isValidElement(c)?c.props.children:null:u);return h.jsx(t,{...i,ref:s,children:p.isValidElement(c)?p.cloneElement(c,void 0,d):null})}return h.jsx(t,{...i,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}var wT=tx("Slot");function ST(e){const t=p.forwardRef((n,r)=>{let{children:s,...o}=n;if(ex(s)&&typeof pa=="function"&&(s=pa(s._payload)),p.isValidElement(s)){const i=CT(s),a=bT(o,s.props);return s.type!==p.Fragment&&(a.ref=r?Wa(r,i):i),p.cloneElement(s,a)}return p.Children.count(s)>1?p.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var ET=Symbol("radix.slottable");function kT(e){return p.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===ET}function bT(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...a)=>{const l=o(...a);return s(...a),l}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function CT(e){var r,s;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(s=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:s.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}const am=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,lm=G0,cf=(e,t)=>n=>{var r;if((t==null?void 0:t.variants)==null)return lm(e,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:s,defaultVariants:o}=t,i=Object.keys(s).map(c=>{const d=n==null?void 0:n[c],u=o==null?void 0:o[c];if(d===null)return null;const f=am(d)||am(u);return s[c][f]}),a=n&&Object.entries(n).reduce((c,d)=>{let[u,f]=d;return f===void 0||(c[u]=f),c},{}),l=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((c,d)=>{let{class:u,className:f,...y}=d;return Object.entries(y).every(w=>{let[x,S]=w;return Array.isArray(S)?S.includes({...o,...a}[x]):{...o,...a}[x]===S})?[...c,u,f]:c},[]);return lm(e,i,l,n==null?void 0:n.class,n==null?void 0:n.className)},PT=cf("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),ie=p.forwardRef(({className:e,variant:t,size:n,asChild:r=!1,...s},o)=>{const i=r?wT:"button";return h.jsx(i,{className:Q(PT({variant:t,size:n,className:e})),ref:o,...s})});ie.displayName="Button";const vo=p.forwardRef(({className:e,type:t,...n},r)=>h.jsx("input",{type:t,className:Q("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",e),ref:r,...n}));vo.displayName="Input";var TT=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],NT=TT.reduce((e,t)=>{const n=tx(`Primitive.${t}`),r=p.forwardRef((s,o)=>{const{asChild:i,...a}=s,l=i?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),h.jsx(l,{...a,ref:o})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),jT="Label",nx=p.forwardRef((e,t)=>h.jsx(NT.label,{...e,ref:t,onMouseDown:n=>{var s;n.target.closest("button, input, select, textarea")||((s=e.onMouseDown)==null||s.call(e,n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));nx.displayName=jT;var rx=nx;const RT=cf("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),jn=p.forwardRef(({className:e,...t},n)=>h.jsx(rx,{ref:n,className:Q(RT(),e),...t}));jn.displayName=rx.displayName;const um=e=>{let t;const n=new Set,r=(c,d)=>{const u=typeof c=="function"?c(t):c;if(!Object.is(u,t)){const f=t;t=d??(typeof u!="object"||u===null)?u:Object.assign({},t,u),n.forEach(y=>y(t,f))}},s=()=>t,a={setState:r,getState:s,getInitialState:()=>l,subscribe:c=>(n.add(c),()=>n.delete(c))},l=t=e(r,s,a);return a},MT=e=>e?um(e):um,DT=e=>e;function AT(e,t=DT){const n=R.useSyncExternalStore(e.subscribe,R.useCallback(()=>t(e.getState()),[e,t]),R.useCallback(()=>t(e.getInitialState()),[e,t]));return R.useDebugValue(n),n}const cm=e=>{const t=MT(e),n=r=>AT(t,r);return Object.assign(n,t),n},Ha=e=>e?cm(e):cm,pr={token:"cc_web_token",theme:"cc_web_theme",viewMode:e=>`cc_viewmode_${e}`,panelFileTree:"cc_panel_filetree",panelShortcuts:"cc_panel_shortcuts",fileZoom:"cc_file_zoom",skillhubAuthor:"ccweb_skillhub_author",projectOrder:"cc_project_order",pomodoroConfig:"cc_pomodoro_config",panelLeftWidth:"cc_panel_left_width",panelRightWidth:"cc_panel_right_width",terminalDraft:e=>`cc_terminal_draft_${e}`,usedSkills:"cc_used_skills",projectModel:e=>`cc_project_model_${e}`};function sx(e,t,n){try{const r=localStorage.getItem(e);return r===null?t:n?JSON.parse(r):r}catch{return t}}function ox(e,t,n){try{localStorage.setItem(e,n?JSON.stringify(t):String(t))}catch{}}function LT(e){try{localStorage.removeItem(e)}catch{}}function _T(e,t,n){const r=(n==null?void 0:n.parse)??!1,[s,o]=p.useState(()=>{try{const a=localStorage.getItem(e);return a===null?t:r?JSON.parse(a):a}catch{return t}}),i=p.useCallback(a=>{o(l=>{const c=typeof a=="function"?a(l):a;try{localStorage.setItem(e,r?JSON.stringify(c):String(c))}catch{}return c})},[e,r]);return[s,i]}const wr=Ha(e=>({token:localStorage.getItem(pr.token),setToken:t=>{ox(pr.token,t),e({token:t})},clearToken:()=>{LT(pr.token),e({token:null})}})),OT=()=>wr.getState().token,IT=e=>wr.getState().setToken(e),VT=()=>wr.getState().clearToken();let Ql=null;async function FT(){return Ql||(Ql=(await Po(()=>Promise.resolve().then(()=>RN),void 0)).getProjects),Ql()}const dm=Ha((e,t)=>({projects:[],loading:!1,error:null,hasFetched:!1,fetchProjects:async()=>{if(!t().loading){e({loading:!0,error:null});try{const n=await FT();e({projects:n,hasFetched:!0})}catch(n){e({error:n instanceof Error?n.message:"Failed to load projects"})}finally{e({loading:!1})}}},addProject:n=>e(r=>({projects:[...r.projects,n]})),updateProject:n=>e(r=>({projects:r.projects.map(s=>s.id===n.id?n:s)})),removeProject:n=>e(r=>({projects:r.projects.filter(s=>s.id!==n)})),setProjects:n=>e({projects:n})})),Ns={filePreviewPath:null,sessionId:null,shortcutEditorOpen:!1,shortcutEditingId:null,shareHubOpen:!1,shareHubLabel:"",shareHubCommand:""},ZM=Ha((e,t)=>({entries:{},get:n=>t().entries[n]??Ns,setFilePreviewPath:(n,r)=>e(s=>({entries:{...s.entries,[n]:{...s.entries[n]??Ns,filePreviewPath:r}}})),setSessionId:(n,r)=>e(s=>({entries:{...s.entries,[n]:{...s.entries[n]??Ns,sessionId:r}}})),setShortcutEditor:(n,r,s=null)=>e(o=>({entries:{...o.entries,[n]:{...o.entries[n]??Ns,shortcutEditorOpen:r,shortcutEditingId:r?s:null}}})),setShareHub:(n,r,s="",o="")=>e(i=>({entries:{...i.entries,[n]:{...i.entries[n]??Ns,shareHubOpen:r,shareHubLabel:r?s:"",shareHubCommand:r?o:""}}}))})),Ga="";function Ao(){return OT()}function zT(e){IT(e)}function ix(){VT()}async function F(e,t,n,r=!0,s){const o={"Content-Type":"application/json"};if(r){const a=Ao();a&&(o.Authorization=`Bearer ${a}`)}const i=await fetch(`${Ga}${t}`,{method:e,headers:o,body:n!==void 0?JSON.stringify(n):void 0,signal:s});if(i.status===401)throw ix(),window.location.pathname!=="/login"&&(window.location.href="/login"),new Error("Unauthorized");if(!i.ok){let a=`HTTP ${i.status}`;try{const l=await i.json();l.error&&(a=l.error)}catch{}throw new Error(a)}return i.json()}async function ax(e,t){return(await F("POST","/api/auth/login",{username:e,password:t},!1)).token}function ma(){const e=window.location.hostname;return e==="localhost"||e==="127.0.0.1"||e==="::1"}async function df(){return(await F("GET","/api/auth/local-token",void 0,!1)).token}async function BT(){return(await F("GET","/api/projects/workspace")).workspace}async function $T(){return F("GET","/api/projects")}async function lx(){return F("GET","/api/projects/users")}async function ux(e,t){return F("PUT",`/api/projects/${e}/shares`,{shares:t})}async function cx(e){return F("POST","/api/projects",e)}async function dx(e){return F("POST","/api/projects/open",{folderPath:e})}async function fx(e){await F("DELETE",`/api/projects/${e}`)}async function UT(e){return F("PATCH",`/api/projects/${e}/stop`)}async function WT(e){return F("PATCH",`/api/projects/${e}/start`)}async function hx(e){return F("PATCH",`/api/projects/${e}/archive`)}async function px(e){return F("PATCH",`/api/projects/${e}/unarchive`)}async function HT(e,t){return F("GET",`/api/projects/${e}/sessions`,void 0,!0,t)}async function GT(e,t,n){return F("GET",`/api/projects/${e}/sessions/${t}`,void 0,!0,n)}async function KT(e){return F("GET","/api/projects/activity",void 0,!0,e)}async function mx(){return F("GET","/api/shortcuts")}async function gx(e){return F("POST","/api/shortcuts",e)}async function yx(e,t){return F("PUT",`/api/shortcuts/${e}`,t)}async function vx(e){await F("DELETE",`/api/shortcuts/${e}`)}async function YT(e){return F("GET",`/api/shortcuts/project/${e}`)}async function XT(e,t){return F("POST",`/api/shortcuts/project/${e}`,t)}async function QT(e,t,n){return F("PUT",`/api/shortcuts/project/${e}/${t}`,n)}async function ZT(e,t){await F("DELETE",`/api/shortcuts/project/${e}/${t}`)}async function qT(){return F("GET","/api/skillhub/skills")}async function JT(e){await F("POST","/api/skillhub/submit",e)}async function eN(e){return F("POST",`/api/skillhub/download/${e}`)}async function xx(){return F("GET","/api/projects/usage")}async function wx(){return F("GET","/api/projects/usage?refresh=true")}async function Sx(e){const t=e?`?path=${encodeURIComponent(e)}`:"";return F("GET",`/api/filesystem${t}`)}function tN(e){return`${Ga}/api/filesystem/raw?path=${encodeURIComponent(e)}`}async function nN(e,t){const n=new FormData;n.append("path",e);for(const i of t)n.append("files",i);const r={},s=Ao();s&&(r.Authorization=`Bearer ${s}`);const o=await fetch(`${Ga}/api/filesystem/upload`,{method:"POST",headers:r,body:n});if(!o.ok){const i=await o.json().catch(()=>({}));throw new Error(i.error||`Upload failed: ${o.status}`)}return o.json()}async function Ex(e,t){return F("POST","/api/filesystem/mkdir",{path:e,name:t})}async function rN(e){return F("GET",`/api/filesystem/file?path=${encodeURIComponent(e)}`)}async function sN(e,t){return F("PUT","/api/filesystem/file",{path:e,content:t})}async function oN(){return F("GET","/api/update/check-running")}async function iN(){return F("POST","/api/update/prepare")}async function aN(){return F("GET","/api/backup/built-in-oauth")}async function lN(){return F("GET","/api/backup/providers")}async function uN(e){return F("POST","/api/backup/providers",e)}async function cN(e){await F("DELETE",`/api/backup/providers/${e}`)}async function dN(e){return F("GET",`/api/backup/auth/${e}/url`)}async function fN(e){return F("POST",`/api/backup/run/${e}`)}async function hN(){return F("GET","/api/backup/schedule")}async function pN(e){return F("PUT","/api/backup/schedule",e)}async function mN(){return F("GET","/api/backup/excludes")}async function gN(e){return F("PUT","/api/backup/excludes",{patterns:e})}async function yN(){return F("GET","/api/backup/history")}async function vN(){return F("GET","/api/notify/config")}async function xN(e){return F("PUT","/api/notify/config",e)}async function wN(e){return F("GET",`/api/projects/${e}/git/status`)}async function SN(e,t){const n=t?`?file=${encodeURIComponent(t)}`:"";return F("GET",`/api/projects/${e}/git/diff${n}`)}async function EN(e,t){await F("POST",`/api/projects/${e}/git/add`,{files:t})}async function kN(e,t){await F("POST",`/api/projects/${e}/git/commit`,{message:t})}async function kx(e){return F("GET",`/api/projects/sessions/search?q=${encodeURIComponent(e)}`)}async function bN(e,t){return F("PATCH",`/api/projects/${e}/tags`,{tags:t})}async function CN(e){return F("GET",`/api/projects/${e}/todos`)}async function PN(e,t){return F("POST",`/api/sessions/${e}/share`,{expiryDays:t})}async function TN(e){const t=await fetch(`${Ga}/api/share/${e}`);if(!t.ok){let n=`HTTP ${t.status}`;try{const r=await t.json();r.error&&(n=r.error)}catch{}throw new Error(n)}return t.json()}async function NN(){return F("GET","/api/claude/model")}async function jN(){return F("GET","/api/claude/skills")}const RN=Object.freeze(Object.defineProperty({__proto__:null,addBackupProvider:uN,archiveProject:hx,browseFilesystem:Sx,checkRunningProjects:oN,clearToken:ix,createFolder:Ex,createGlobalShortcut:gx,createProject:cx,createProjectShortcut:XT,deleteBackupProvider:cN,deleteGlobalShortcut:vx,deleteProject:fx,deleteProjectShortcut:ZT,downloadSkillFromHub:eN,getAllUsers:lx,getBackupAuthUrl:dN,getBackupExcludes:mN,getBackupHistory:yN,getBackupProviders:lN,getBackupSchedule:hN,getBuiltInOAuthTypes:aN,getClaudeModel:NN,getClaudeSkills:jN,getGitDiff:SN,getGitStatus:wN,getGlobalShortcuts:mx,getLocalToken:df,getNotifyConfig:vN,getProjectShortcuts:YT,getProjectTodos:CN,getProjects:$T,getProjectsActivity:KT,getRawFileUrl:tN,getSession:GT,getSessions:HT,getSharedSession:TN,getSkillHubSkills:qT,getToken:Ao,getUsage:xx,getWorkspace:BT,gitAdd:EN,gitCommit:kN,isLocalAccess:ma,login:ax,openProject:dx,prepareForUpdate:iN,readFile:rN,refreshUsage:wx,searchSessions:kx,setToken:zT,shareSession:PN,startProject:WT,stopProject:UT,submitSkillToHub:JT,triggerBackup:fN,unarchiveProject:px,updateBackupExcludes:gN,updateBackupSchedule:pN,updateGlobalShortcut:yx,updateNotifyConfig:xN,updateProjectShares:ux,updateProjectShortcut:QT,updateProjectTags:bN,uploadFiles:nN,writeFile:sN},Symbol.toStringTag,{value:"Module"}));function MN(){const e=Va(),t=wr(u=>u.setToken),[n,r]=p.useState(""),[s,o]=p.useState(""),[i,a]=p.useState(null),[l,c]=p.useState(!1);p.useEffect(()=>{if(!ma())return;let u=!1;return(async()=>{try{const f=await df();u||(t(f),e("/",{replace:!0}))}catch{}})(),()=>{u=!0}},[e,t]);const d=async u=>{u.preventDefault(),a(null),c(!0);try{const f=await ax(n,s);t(f),e("/")}catch(f){a(f instanceof Error?f.message:"Login failed")}finally{c(!1)}};return h.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:h.jsx(Vn.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,ease:"easeOut"},className:"w-full max-w-sm",children:h.jsxs(of,{children:[h.jsxs(af,{className:"text-center",children:[h.jsx(lf,{className:"text-2xl",children:"CC Web"}),h.jsx(q0,{children:ma()?"Connecting locally...":"Sign in to manage your Claude projects"})]}),h.jsxs("form",{onSubmit:u=>void d(u),children:[h.jsxs(uf,{className:"space-y-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{htmlFor:"username",children:"Username"}),h.jsx(vo,{id:"username",type:"text",autoComplete:"username",value:n,onChange:u=>r(u.target.value),required:!0,autoFocus:!0})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{htmlFor:"password",children:"Password"}),h.jsx(vo,{id:"password",type:"password",autoComplete:"current-password",value:s,onChange:u=>o(u.target.value),required:!0})]}),h.jsx(tf,{children:i&&h.jsx(Vn.p,{initial:{opacity:0,x:-8},animate:{opacity:1,x:0},exit:{opacity:0,x:-8},transition:{duration:.2},className:"text-sm text-destructive",children:i})})]}),h.jsx(J0,{children:h.jsx(Vn.div,{className:"w-full",whileTap:{scale:.98},children:h.jsx(ie,{type:"submit",className:"w-full",disabled:l,children:l?"Signing in...":"Sign In"})})})]})]})})})}/**
|
|
77
77
|
* @license lucide-react v0.309.0 - ISC
|
|
78
78
|
*
|
|
79
79
|
* This source code is licensed under the ISC license.
|
|
80
80
|
* See the LICENSE file in the root directory of this source tree.
|
|
81
|
-
*/var
|
|
81
|
+
*/var DN={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"};/**
|
|
82
82
|
* @license lucide-react v0.309.0 - ISC
|
|
83
83
|
*
|
|
84
84
|
* This source code is licensed under the ISC license.
|
|
85
85
|
* See the LICENSE file in the root directory of this source tree.
|
|
86
|
-
*/const
|
|
86
|
+
*/const AN=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().trim(),ee=(e,t)=>{const n=p.forwardRef(({color:r="currentColor",size:s=24,strokeWidth:o=2,absoluteStrokeWidth:i,className:a="",children:l,...c},d)=>p.createElement("svg",{ref:d,...DN,width:s,height:s,stroke:r,strokeWidth:i?Number(o)*24/Number(s):o,className:["lucide",`lucide-${AN(e)}`,a].join(" "),...c},[...t.map(([u,f])=>p.createElement(u,f)),...Array.isArray(l)?l:[l]]));return n.displayName=`${e}`,n};/**
|
|
87
87
|
* @license lucide-react v0.309.0 - ISC
|
|
88
88
|
*
|
|
89
89
|
* This source code is licensed under the ISC license.
|
|
90
90
|
* See the LICENSE file in the root directory of this source tree.
|
|
91
|
-
*/const
|
|
91
|
+
*/const LN=ee("ArchiveRestore",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h2",key:"tvwodi"}],["path",{d:"M20 8v11a2 2 0 0 1-2 2h-2",key:"1gkqxj"}],["path",{d:"m9 15 3-3 3 3",key:"1pd0qc"}],["path",{d:"M12 12v9",key:"192myk"}]]);/**
|
|
92
92
|
* @license lucide-react v0.309.0 - ISC
|
|
93
93
|
*
|
|
94
94
|
* This source code is licensed under the ISC license.
|
|
95
95
|
* See the LICENSE file in the root directory of this source tree.
|
|
96
|
-
*/const
|
|
96
|
+
*/const _N=ee("Archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);/**
|
|
97
97
|
* @license lucide-react v0.309.0 - ISC
|
|
98
98
|
*
|
|
99
99
|
* This source code is licensed under the ISC license.
|
|
100
100
|
* See the LICENSE file in the root directory of this source tree.
|
|
101
|
-
*/const
|
|
101
|
+
*/const ON=ee("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/**
|
|
102
102
|
* @license lucide-react v0.309.0 - ISC
|
|
103
103
|
*
|
|
104
104
|
* This source code is licensed under the ISC license.
|
|
105
105
|
* See the LICENSE file in the root directory of this source tree.
|
|
106
|
-
*/const
|
|
106
|
+
*/const IN=ee("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);/**
|
|
107
107
|
* @license lucide-react v0.309.0 - ISC
|
|
108
108
|
*
|
|
109
109
|
* This source code is licensed under the ISC license.
|
|
@@ -113,12 +113,12 @@ Error generating stack: `+o.message+`
|
|
|
113
113
|
*
|
|
114
114
|
* This source code is licensed under the ISC license.
|
|
115
115
|
* See the LICENSE file in the root directory of this source tree.
|
|
116
|
-
*/const
|
|
116
|
+
*/const VN=ee("Eye",[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
|
|
117
117
|
* @license lucide-react v0.309.0 - ISC
|
|
118
118
|
*
|
|
119
119
|
* This source code is licensed under the ISC license.
|
|
120
120
|
* See the LICENSE file in the root directory of this source tree.
|
|
121
|
-
*/const
|
|
121
|
+
*/const FN=ee("File",[["path",{d:"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z",key:"1nnpy2"}],["polyline",{points:"14 2 14 8 20 8",key:"1ew0cm"}]]);/**
|
|
122
122
|
* @license lucide-react v0.309.0 - ISC
|
|
123
123
|
*
|
|
124
124
|
* This source code is licensed under the ISC license.
|
|
@@ -128,7 +128,7 @@ Error generating stack: `+o.message+`
|
|
|
128
128
|
*
|
|
129
129
|
* This source code is licensed under the ISC license.
|
|
130
130
|
* See the LICENSE file in the root directory of this source tree.
|
|
131
|
-
*/const
|
|
131
|
+
*/const zN=ee("FolderPlus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);/**
|
|
132
132
|
* @license lucide-react v0.309.0 - ISC
|
|
133
133
|
*
|
|
134
134
|
* This source code is licensed under the ISC license.
|
|
@@ -143,32 +143,32 @@ Error generating stack: `+o.message+`
|
|
|
143
143
|
*
|
|
144
144
|
* This source code is licensed under the ISC license.
|
|
145
145
|
* See the LICENSE file in the root directory of this source tree.
|
|
146
|
-
*/const
|
|
146
|
+
*/const BN=ee("Home",[["path",{d:"m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"y5dka4"}],["polyline",{points:"9 22 9 12 15 12 15 22",key:"e2us08"}]]);/**
|
|
147
147
|
* @license lucide-react v0.309.0 - ISC
|
|
148
148
|
*
|
|
149
149
|
* This source code is licensed under the ISC license.
|
|
150
150
|
* See the LICENSE file in the root directory of this source tree.
|
|
151
|
-
*/const
|
|
151
|
+
*/const $N=ee("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);/**
|
|
152
152
|
* @license lucide-react v0.309.0 - ISC
|
|
153
153
|
*
|
|
154
154
|
* This source code is licensed under the ISC license.
|
|
155
155
|
* See the LICENSE file in the root directory of this source tree.
|
|
156
|
-
*/const
|
|
156
|
+
*/const UN=ee("Maximize",[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]]);/**
|
|
157
157
|
* @license lucide-react v0.309.0 - ISC
|
|
158
158
|
*
|
|
159
159
|
* This source code is licensed under the ISC license.
|
|
160
160
|
* See the LICENSE file in the root directory of this source tree.
|
|
161
|
-
*/const
|
|
161
|
+
*/const WN=ee("Minimize",[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]]);/**
|
|
162
162
|
* @license lucide-react v0.309.0 - ISC
|
|
163
163
|
*
|
|
164
164
|
* This source code is licensed under the ISC license.
|
|
165
165
|
* See the LICENSE file in the root directory of this source tree.
|
|
166
|
-
*/const
|
|
166
|
+
*/const HN=ee("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"}]]);/**
|
|
167
167
|
* @license lucide-react v0.309.0 - ISC
|
|
168
168
|
*
|
|
169
169
|
* This source code is licensed under the ISC license.
|
|
170
170
|
* See the LICENSE file in the root directory of this source tree.
|
|
171
|
-
*/const
|
|
171
|
+
*/const GN=ee("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);/**
|
|
172
172
|
* @license lucide-react v0.309.0 - ISC
|
|
173
173
|
*
|
|
174
174
|
* This source code is licensed under the ISC license.
|
|
@@ -183,27 +183,27 @@ Error generating stack: `+o.message+`
|
|
|
183
183
|
*
|
|
184
184
|
* This source code is licensed under the ISC license.
|
|
185
185
|
* See the LICENSE file in the root directory of this source tree.
|
|
186
|
-
*/const
|
|
186
|
+
*/const KN=ee("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/**
|
|
187
187
|
* @license lucide-react v0.309.0 - ISC
|
|
188
188
|
*
|
|
189
189
|
* This source code is licensed under the ISC license.
|
|
190
190
|
* See the LICENSE file in the root directory of this source tree.
|
|
191
|
-
*/const
|
|
191
|
+
*/const YN=ee("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/**
|
|
192
192
|
* @license lucide-react v0.309.0 - ISC
|
|
193
193
|
*
|
|
194
194
|
* This source code is licensed under the ISC license.
|
|
195
195
|
* See the LICENSE file in the root directory of this source tree.
|
|
196
|
-
*/const
|
|
196
|
+
*/const XN=ee("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"}]]);/**
|
|
197
197
|
* @license lucide-react v0.309.0 - ISC
|
|
198
198
|
*
|
|
199
199
|
* This source code is licensed under the ISC license.
|
|
200
200
|
* See the LICENSE file in the root directory of this source tree.
|
|
201
|
-
*/const
|
|
201
|
+
*/const QN=ee("Sparkles",[["path",{d:"m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z",key:"17u4zn"}],["path",{d:"M5 3v4",key:"bklmnn"}],["path",{d:"M19 17v4",key:"iiml17"}],["path",{d:"M3 5h4",key:"nem4j1"}],["path",{d:"M17 19h4",key:"lbex7p"}]]);/**
|
|
202
202
|
* @license lucide-react v0.309.0 - ISC
|
|
203
203
|
*
|
|
204
204
|
* This source code is licensed under the ISC license.
|
|
205
205
|
* See the LICENSE file in the root directory of this source tree.
|
|
206
|
-
*/const
|
|
206
|
+
*/const ZN=ee("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"}]]);/**
|
|
207
207
|
* @license lucide-react v0.309.0 - ISC
|
|
208
208
|
*
|
|
209
209
|
* This source code is licensed under the ISC license.
|
|
@@ -213,7 +213,7 @@ Error generating stack: `+o.message+`
|
|
|
213
213
|
*
|
|
214
214
|
* This source code is licensed under the ISC license.
|
|
215
215
|
* See the LICENSE file in the root directory of this source tree.
|
|
216
|
-
*/const
|
|
216
|
+
*/const qN=ee("Timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]]);/**
|
|
217
217
|
* @license lucide-react v0.309.0 - ISC
|
|
218
218
|
*
|
|
219
219
|
* This source code is licensed under the ISC license.
|
|
@@ -233,8 +233,8 @@ Error generating stack: `+o.message+`
|
|
|
233
233
|
*
|
|
234
234
|
* This source code is licensed under the ISC license.
|
|
235
235
|
* See the LICENSE file in the root directory of this source tree.
|
|
236
|
-
*/const pm=ee("Zap",[["polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2",key:"45s27k"}]]),qN=cf("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function rr({className:e,variant:t,...n}){return h.jsx("div",{className:Q(qN({variant:t}),e),...n})}function Fn(e,t,{checkForDefaultPrevented:n=!0}={}){return function(s){if(e==null||e(s),n===!1||!s.defaultPrevented)return t==null?void 0:t(s)}}function JN(e,t){const n=p.createContext(t),r=o=>{const{children:i,...a}=o,l=p.useMemo(()=>a,Object.values(a));return h.jsx(n.Provider,{value:l,children:i})};r.displayName=e+"Provider";function s(o){const i=p.useContext(n);if(i)return i;if(t!==void 0)return t;throw new Error(`\`${o}\` must be used within \`${e}\``)}return[r,s]}function ej(e,t=[]){let n=[];function r(o,i){const a=p.createContext(i),l=n.length;n=[...n,i];const c=u=>{var m;const{scope:f,children:y,...w}=u,x=((m=f==null?void 0:f[e])==null?void 0:m[l])||a,S=p.useMemo(()=>w,Object.values(w));return h.jsx(x.Provider,{value:S,children:y})};c.displayName=o+"Provider";function d(u,f){var x;const y=((x=f==null?void 0:f[e])==null?void 0:x[l])||a,w=p.useContext(y);if(w)return w;if(i!==void 0)return i;throw new Error(`\`${u}\` must be used within \`${o}\``)}return[c,d]}const s=()=>{const o=n.map(i=>p.createContext(i));return function(a){const l=(a==null?void 0:a[e])||o;return p.useMemo(()=>({[`__scope${e}`]:{...a,[e]:l}}),[a,l])}};return s.scopeName=e,[r,tj(s,...t)]}function tj(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(o){const i=r.reduce((a,{useScope:l,scopeName:c})=>{const u=l(o)[`__scope${c}`];return{...a,...u}},{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}var xo=globalThis!=null&&globalThis.document?p.useLayoutEffect:()=>{},nj=wa[" useId ".trim().toString()]||(()=>{}),rj=0;function ql(e){const[t,n]=p.useState(nj());return xo(()=>{n(r=>r??String(rj++))},[e]),e||(t?`radix-${t}`:"")}var sj=wa[" useInsertionEffect ".trim().toString()]||xo;function oj({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[s,o,i]=ij({defaultProp:t,onChange:n}),a=e!==void 0,l=a?e:s;{const d=p.useRef(e!==void 0);p.useEffect(()=>{const u=d.current;u!==a&&console.warn(`${r} is changing from ${u?"controlled":"uncontrolled"} to ${a?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),d.current=a},[a,r])}const c=p.useCallback(d=>{var u;if(a){const f=aj(d)?d(e):d;f!==e&&((u=i.current)==null||u.call(i,f))}else o(d)},[a,e,o,i]);return[l,c]}function ij({defaultProp:e,onChange:t}){const[n,r]=p.useState(e),s=p.useRef(n),o=p.useRef(t);return sj(()=>{o.current=t},[t]),p.useEffect(()=>{var i;s.current!==n&&((i=o.current)==null||i.call(o,n),s.current=n)},[n,s]),[n,r,o]}function aj(e){return typeof e=="function"}function lj(e){const t=uj(e),n=p.forwardRef((r,s)=>{const{children:o,...i}=r,a=p.Children.toArray(o),l=a.find(dj);if(l){const c=l.props.children,d=a.map(u=>u===l?p.Children.count(c)>1?p.Children.only(null):p.isValidElement(c)?c.props.children:null:u);return h.jsx(t,{...i,ref:s,children:p.isValidElement(c)?p.cloneElement(c,void 0,d):null})}return h.jsx(t,{...i,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}function uj(e){const t=p.forwardRef((n,r)=>{const{children:s,...o}=n;if(p.isValidElement(s)){const i=hj(s),a=fj(o,s.props);return s.type!==p.Fragment&&(a.ref=r?Wa(r,i):i),p.cloneElement(s,a)}return p.Children.count(s)>1?p.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var cj=Symbol("radix.slottable");function dj(e){return p.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===cj}function fj(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...a)=>{const l=o(...a);return s(...a),l}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function hj(e){var r,s;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(s=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:s.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var pj=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],un=pj.reduce((e,t)=>{const n=lj(`Primitive.${t}`),r=p.forwardRef((s,o)=>{const{asChild:i,...a}=s,l=i?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),h.jsx(l,{...a,ref:o})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function mj(e,t){e&&Oa.flushSync(()=>e.dispatchEvent(t))}function wo(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)},[])}function gj(e,t=globalThis==null?void 0:globalThis.document){const n=wo(e);p.useEffect(()=>{const r=s=>{s.key==="Escape"&&n(s)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[n,t])}var yj="DismissableLayer",Nc="dismissableLayer.update",vj="dismissableLayer.pointerDownOutside",xj="dismissableLayer.focusOutside",mm,Tx=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Nx=p.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:s,onFocusOutside:o,onInteractOutside:i,onDismiss:a,...l}=e,c=p.useContext(Tx),[d,u]=p.useState(null),f=(d==null?void 0:d.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,y]=p.useState({}),w=br(t,k=>u(k)),x=Array.from(c.layers),[S]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),m=x.indexOf(S),g=d?x.indexOf(d):-1,v=c.layersWithOutsidePointerEventsDisabled.size>0,E=g>=m,C=Ej(k=>{const b=k.target,D=[...c.branches].some(T=>T.contains(b));!E||D||(s==null||s(k),i==null||i(k),k.defaultPrevented||a==null||a())},f),P=kj(k=>{const b=k.target;[...c.branches].some(T=>T.contains(b))||(o==null||o(k),i==null||i(k),k.defaultPrevented||a==null||a())},f);return gj(k=>{g===c.layers.size-1&&(r==null||r(k),!k.defaultPrevented&&a&&(k.preventDefault(),a()))},f),p.useEffect(()=>{if(d)return n&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(mm=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(d)),c.layers.add(d),gm(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=mm)}},[d,f,n,c]),p.useEffect(()=>()=>{d&&(c.layers.delete(d),c.layersWithOutsidePointerEventsDisabled.delete(d),gm())},[d,c]),p.useEffect(()=>{const k=()=>y({});return document.addEventListener(Nc,k),()=>document.removeEventListener(Nc,k)},[]),h.jsx(un.div,{...l,ref:w,style:{pointerEvents:v?E?"auto":"none":void 0,...e.style},onFocusCapture:Fn(e.onFocusCapture,P.onFocusCapture),onBlurCapture:Fn(e.onBlurCapture,P.onBlurCapture),onPointerDownCapture:Fn(e.onPointerDownCapture,C.onPointerDownCapture)})});Nx.displayName=yj;var wj="DismissableLayerBranch",Sj=p.forwardRef((e,t)=>{const n=p.useContext(Tx),r=p.useRef(null),s=br(t,r);return p.useEffect(()=>{const o=r.current;if(o)return n.branches.add(o),()=>{n.branches.delete(o)}},[n.branches]),h.jsx(un.div,{...e,ref:s})});Sj.displayName=wj;function Ej(e,t=globalThis==null?void 0:globalThis.document){const n=wo(e),r=p.useRef(!1),s=p.useRef(()=>{});return p.useEffect(()=>{const o=a=>{if(a.target&&!r.current){let l=function(){jx(vj,n,c,{discrete:!0})};const c={originalEvent:a};a.pointerType==="touch"?(t.removeEventListener("click",s.current),s.current=l,t.addEventListener("click",s.current,{once:!0})):l()}else t.removeEventListener("click",s.current);r.current=!1},i=window.setTimeout(()=>{t.addEventListener("pointerdown",o)},0);return()=>{window.clearTimeout(i),t.removeEventListener("pointerdown",o),t.removeEventListener("click",s.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function kj(e,t=globalThis==null?void 0:globalThis.document){const n=wo(e),r=p.useRef(!1);return p.useEffect(()=>{const s=o=>{o.target&&!r.current&&jx(xj,n,{originalEvent:o},{discrete:!1})};return t.addEventListener("focusin",s),()=>t.removeEventListener("focusin",s)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function gm(){const e=new CustomEvent(Nc);document.dispatchEvent(e)}function jx(e,t,n,{discrete:r}){const s=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&s.addEventListener(e,t,{once:!0}),r?mj(s,o):s.dispatchEvent(o)}var Jl="focusScope.autoFocusOnMount",eu="focusScope.autoFocusOnUnmount",ym={bubbles:!1,cancelable:!0},bj="FocusScope",Rx=p.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:s,onUnmountAutoFocus:o,...i}=e,[a,l]=p.useState(null),c=wo(s),d=wo(o),u=p.useRef(null),f=br(t,x=>l(x)),y=p.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;p.useEffect(()=>{if(r){let x=function(v){if(y.paused||!a)return;const E=v.target;a.contains(E)?u.current=E:wn(u.current,{select:!0})},S=function(v){if(y.paused||!a)return;const E=v.relatedTarget;E!==null&&(a.contains(E)||wn(u.current,{select:!0}))},m=function(v){if(document.activeElement===document.body)for(const C of v)C.removedNodes.length>0&&wn(a)};document.addEventListener("focusin",x),document.addEventListener("focusout",S);const g=new MutationObserver(m);return a&&g.observe(a,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",x),document.removeEventListener("focusout",S),g.disconnect()}}},[r,a,y.paused]),p.useEffect(()=>{if(a){xm.add(y);const x=document.activeElement;if(!a.contains(x)){const m=new CustomEvent(Jl,ym);a.addEventListener(Jl,c),a.dispatchEvent(m),m.defaultPrevented||(Cj(Rj(Mx(a)),{select:!0}),document.activeElement===x&&wn(a))}return()=>{a.removeEventListener(Jl,c),setTimeout(()=>{const m=new CustomEvent(eu,ym);a.addEventListener(eu,d),a.dispatchEvent(m),m.defaultPrevented||wn(x??document.body,{select:!0}),a.removeEventListener(eu,d),xm.remove(y)},0)}}},[a,c,d,y]);const w=p.useCallback(x=>{if(!n&&!r||y.paused)return;const S=x.key==="Tab"&&!x.altKey&&!x.ctrlKey&&!x.metaKey,m=document.activeElement;if(S&&m){const g=x.currentTarget,[v,E]=Pj(g);v&&E?!x.shiftKey&&m===E?(x.preventDefault(),n&&wn(v,{select:!0})):x.shiftKey&&m===v&&(x.preventDefault(),n&&wn(E,{select:!0})):m===g&&x.preventDefault()}},[n,r,y.paused]);return h.jsx(un.div,{tabIndex:-1,...i,ref:f,onKeyDown:w})});Rx.displayName=bj;function Cj(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(wn(r,{select:t}),document.activeElement!==n)return}function Pj(e){const t=Mx(e),n=vm(t,e),r=vm(t.reverse(),e);return[n,r]}function Mx(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function vm(e,t){for(const n of e)if(!Tj(n,{upTo:t}))return n}function Tj(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function Nj(e){return e instanceof HTMLInputElement&&"select"in e}function wn(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&Nj(e)&&t&&e.select()}}var xm=jj();function jj(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=wm(e,t),e.unshift(t)},remove(t){var n;e=wm(e,t),(n=e[0])==null||n.resume()}}}function wm(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function Rj(e){return e.filter(t=>t.tagName!=="A")}var Mj="Portal",Dx=p.forwardRef((e,t)=>{var a;const{container:n,...r}=e,[s,o]=p.useState(!1);xo(()=>o(!0),[]);const i=n||s&&((a=globalThis==null?void 0:globalThis.document)==null?void 0:a.body);return i?Hy.createPortal(h.jsx(un.div,{...r,ref:t}),i):null});Dx.displayName=Mj;function Dj(e,t){return p.useReducer((n,r)=>t[n][r]??n,e)}var Ka=e=>{const{present:t,children:n}=e,r=Aj(t),s=typeof n=="function"?n({present:r.isPresent}):p.Children.only(n),o=br(r.ref,Lj(s));return typeof n=="function"||r.isPresent?p.cloneElement(s,{ref:o}):null};Ka.displayName="Presence";function Aj(e){const[t,n]=p.useState(),r=p.useRef(null),s=p.useRef(e),o=p.useRef("none"),i=e?"mounted":"unmounted",[a,l]=Dj(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const c=oi(r.current);o.current=a==="mounted"?c:"none"},[a]),xo(()=>{const c=r.current,d=s.current;if(d!==e){const f=o.current,y=oi(c);e?l("MOUNT"):y==="none"||(c==null?void 0:c.display)==="none"?l("UNMOUNT"):l(d&&f!==y?"ANIMATION_OUT":"UNMOUNT"),s.current=e}},[e,l]),xo(()=>{if(t){let c;const d=t.ownerDocument.defaultView??window,u=y=>{const x=oi(r.current).includes(CSS.escape(y.animationName));if(y.target===t&&x&&(l("ANIMATION_END"),!s.current)){const S=t.style.animationFillMode;t.style.animationFillMode="forwards",c=d.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=S)})}},f=y=>{y.target===t&&(o.current=oi(r.current))};return t.addEventListener("animationstart",f),t.addEventListener("animationcancel",u),t.addEventListener("animationend",u),()=>{d.clearTimeout(c),t.removeEventListener("animationstart",f),t.removeEventListener("animationcancel",u),t.removeEventListener("animationend",u)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(a),ref:p.useCallback(c=>{r.current=c?getComputedStyle(c):null,n(c)},[])}}function oi(e){return(e==null?void 0:e.animationName)||"none"}function Lj(e){var r,s;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(s=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:s.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var tu=0;function _j(){p.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??Sm()),document.body.insertAdjacentElement("beforeend",e[1]??Sm()),tu++,()=>{tu===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),tu--}},[])}function Sm(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var Wt=function(){return Wt=Object.assign||function(t){for(var n,r=1,s=arguments.length;r<s;r++){n=arguments[r];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},Wt.apply(this,arguments)};function Ax(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(e,r[s])&&(n[r[s]]=e[r[s]]);return n}function Oj(e,t,n){if(n||arguments.length===2)for(var r=0,s=t.length,o;r<s;r++)(o||!(r in t))&&(o||(o=Array.prototype.slice.call(t,0,r)),o[r]=t[r]);return e.concat(o||Array.prototype.slice.call(t))}var Ai="right-scroll-bar-position",Li="width-before-scroll-bar",Ij="with-scroll-bars-hidden",Vj="--removed-body-scroll-bar-size";function nu(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function Fj(e,t){var n=p.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(r){var s=n.value;s!==r&&(n.value=r,n.callback(r,s))}}}})[0];return n.callback=t,n.facade}var zj=typeof window<"u"?p.useLayoutEffect:p.useEffect,Em=new WeakMap;function Bj(e,t){var n=Fj(null,function(r){return e.forEach(function(s){return nu(s,r)})});return zj(function(){var r=Em.get(n);if(r){var s=new Set(r),o=new Set(e),i=n.current;s.forEach(function(a){o.has(a)||nu(a,null)}),o.forEach(function(a){s.has(a)||nu(a,i)})}Em.set(n,e)},[e]),n}function $j(e){return e}function Uj(e,t){t===void 0&&(t=$j);var n=[],r=!1,s={read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(o){var i=t(o,r);return n.push(i),function(){n=n.filter(function(a){return a!==i})}},assignSyncMedium:function(o){for(r=!0;n.length;){var i=n;n=[],i.forEach(o)}n={push:function(a){return o(a)},filter:function(){return n}}},assignMedium:function(o){r=!0;var i=[];if(n.length){var a=n;n=[],a.forEach(o),i=n}var l=function(){var d=i;i=[],d.forEach(o)},c=function(){return Promise.resolve().then(l)};c(),n={push:function(d){i.push(d),c()},filter:function(d){return i=i.filter(d),n}}}};return s}function Wj(e){e===void 0&&(e={});var t=Uj(null);return t.options=Wt({async:!0,ssr:!1},e),t}var Lx=function(e){var t=e.sideCar,n=Ax(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw new Error("Sidecar medium not found");return p.createElement(r,Wt({},n))};Lx.isSideCarExport=!0;function Hj(e,t){return e.useMedium(t),Lx}var _x=Wj(),ru=function(){},Ya=p.forwardRef(function(e,t){var n=p.useRef(null),r=p.useState({onScrollCapture:ru,onWheelCapture:ru,onTouchMoveCapture:ru}),s=r[0],o=r[1],i=e.forwardProps,a=e.children,l=e.className,c=e.removeScrollBar,d=e.enabled,u=e.shards,f=e.sideCar,y=e.noRelative,w=e.noIsolation,x=e.inert,S=e.allowPinchZoom,m=e.as,g=m===void 0?"div":m,v=e.gapMode,E=Ax(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),C=f,P=Bj([n,t]),k=Wt(Wt({},E),s);return p.createElement(p.Fragment,null,d&&p.createElement(C,{sideCar:_x,removeScrollBar:c,shards:u,noRelative:y,noIsolation:w,inert:x,setCallbacks:o,allowPinchZoom:!!S,lockRef:n,gapMode:v}),i?p.cloneElement(p.Children.only(a),Wt(Wt({},k),{ref:P})):p.createElement(g,Wt({},k,{className:l,ref:P}),a))});Ya.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Ya.classNames={fullWidth:Li,zeroRight:Ai};var Gj=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function Kj(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=Gj();return t&&e.setAttribute("nonce",t),e}function Yj(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function Xj(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var Qj=function(){var e=0,t=null;return{add:function(n){e==0&&(t=Kj())&&(Yj(t,n),Xj(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},Zj=function(){var e=Qj();return function(t,n){p.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},Ox=function(){var e=Zj(),t=function(n){var r=n.styles,s=n.dynamic;return e(r,s),null};return t},qj={left:0,top:0,right:0,gap:0},su=function(e){return parseInt(e||"",10)||0},Jj=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],s=t[e==="padding"?"paddingRight":"marginRight"];return[su(n),su(r),su(s)]},eR=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return qj;var t=Jj(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},tR=Ox(),qr="data-scroll-locked",nR=function(e,t,n,r){var s=e.left,o=e.top,i=e.right,a=e.gap;return n===void 0&&(n="margin"),`
|
|
237
|
-
.`.concat(
|
|
236
|
+
*/const pm=ee("Zap",[["polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2",key:"45s27k"}]]),JN=cf("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function rr({className:e,variant:t,...n}){return h.jsx("div",{className:Q(JN({variant:t}),e),...n})}function Fn(e,t,{checkForDefaultPrevented:n=!0}={}){return function(s){if(e==null||e(s),n===!1||!s.defaultPrevented)return t==null?void 0:t(s)}}function ej(e,t){const n=p.createContext(t),r=o=>{const{children:i,...a}=o,l=p.useMemo(()=>a,Object.values(a));return h.jsx(n.Provider,{value:l,children:i})};r.displayName=e+"Provider";function s(o){const i=p.useContext(n);if(i)return i;if(t!==void 0)return t;throw new Error(`\`${o}\` must be used within \`${e}\``)}return[r,s]}function tj(e,t=[]){let n=[];function r(o,i){const a=p.createContext(i),l=n.length;n=[...n,i];const c=u=>{var m;const{scope:f,children:y,...w}=u,x=((m=f==null?void 0:f[e])==null?void 0:m[l])||a,S=p.useMemo(()=>w,Object.values(w));return h.jsx(x.Provider,{value:S,children:y})};c.displayName=o+"Provider";function d(u,f){var x;const y=((x=f==null?void 0:f[e])==null?void 0:x[l])||a,w=p.useContext(y);if(w)return w;if(i!==void 0)return i;throw new Error(`\`${u}\` must be used within \`${o}\``)}return[c,d]}const s=()=>{const o=n.map(i=>p.createContext(i));return function(a){const l=(a==null?void 0:a[e])||o;return p.useMemo(()=>({[`__scope${e}`]:{...a,[e]:l}}),[a,l])}};return s.scopeName=e,[r,nj(s,...t)]}function nj(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(o){const i=r.reduce((a,{useScope:l,scopeName:c})=>{const u=l(o)[`__scope${c}`];return{...a,...u}},{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}var xo=globalThis!=null&&globalThis.document?p.useLayoutEffect:()=>{},rj=wa[" useId ".trim().toString()]||(()=>{}),sj=0;function ql(e){const[t,n]=p.useState(rj());return xo(()=>{n(r=>r??String(sj++))},[e]),e||(t?`radix-${t}`:"")}var oj=wa[" useInsertionEffect ".trim().toString()]||xo;function ij({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[s,o,i]=aj({defaultProp:t,onChange:n}),a=e!==void 0,l=a?e:s;{const d=p.useRef(e!==void 0);p.useEffect(()=>{const u=d.current;u!==a&&console.warn(`${r} is changing from ${u?"controlled":"uncontrolled"} to ${a?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),d.current=a},[a,r])}const c=p.useCallback(d=>{var u;if(a){const f=lj(d)?d(e):d;f!==e&&((u=i.current)==null||u.call(i,f))}else o(d)},[a,e,o,i]);return[l,c]}function aj({defaultProp:e,onChange:t}){const[n,r]=p.useState(e),s=p.useRef(n),o=p.useRef(t);return oj(()=>{o.current=t},[t]),p.useEffect(()=>{var i;s.current!==n&&((i=o.current)==null||i.call(o,n),s.current=n)},[n,s]),[n,r,o]}function lj(e){return typeof e=="function"}function uj(e){const t=cj(e),n=p.forwardRef((r,s)=>{const{children:o,...i}=r,a=p.Children.toArray(o),l=a.find(fj);if(l){const c=l.props.children,d=a.map(u=>u===l?p.Children.count(c)>1?p.Children.only(null):p.isValidElement(c)?c.props.children:null:u);return h.jsx(t,{...i,ref:s,children:p.isValidElement(c)?p.cloneElement(c,void 0,d):null})}return h.jsx(t,{...i,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}function cj(e){const t=p.forwardRef((n,r)=>{const{children:s,...o}=n;if(p.isValidElement(s)){const i=pj(s),a=hj(o,s.props);return s.type!==p.Fragment&&(a.ref=r?Wa(r,i):i),p.cloneElement(s,a)}return p.Children.count(s)>1?p.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var dj=Symbol("radix.slottable");function fj(e){return p.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===dj}function hj(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...a)=>{const l=o(...a);return s(...a),l}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function pj(e){var r,s;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(s=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:s.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var mj=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],un=mj.reduce((e,t)=>{const n=uj(`Primitive.${t}`),r=p.forwardRef((s,o)=>{const{asChild:i,...a}=s,l=i?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),h.jsx(l,{...a,ref:o})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function gj(e,t){e&&Oa.flushSync(()=>e.dispatchEvent(t))}function wo(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)},[])}function yj(e,t=globalThis==null?void 0:globalThis.document){const n=wo(e);p.useEffect(()=>{const r=s=>{s.key==="Escape"&&n(s)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[n,t])}var vj="DismissableLayer",Nc="dismissableLayer.update",xj="dismissableLayer.pointerDownOutside",wj="dismissableLayer.focusOutside",mm,Tx=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Nx=p.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:s,onFocusOutside:o,onInteractOutside:i,onDismiss:a,...l}=e,c=p.useContext(Tx),[d,u]=p.useState(null),f=(d==null?void 0:d.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,y]=p.useState({}),w=br(t,k=>u(k)),x=Array.from(c.layers),[S]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),m=x.indexOf(S),g=d?x.indexOf(d):-1,v=c.layersWithOutsidePointerEventsDisabled.size>0,E=g>=m,C=kj(k=>{const b=k.target,D=[...c.branches].some(T=>T.contains(b));!E||D||(s==null||s(k),i==null||i(k),k.defaultPrevented||a==null||a())},f),P=bj(k=>{const b=k.target;[...c.branches].some(T=>T.contains(b))||(o==null||o(k),i==null||i(k),k.defaultPrevented||a==null||a())},f);return yj(k=>{g===c.layers.size-1&&(r==null||r(k),!k.defaultPrevented&&a&&(k.preventDefault(),a()))},f),p.useEffect(()=>{if(d)return n&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(mm=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(d)),c.layers.add(d),gm(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=mm)}},[d,f,n,c]),p.useEffect(()=>()=>{d&&(c.layers.delete(d),c.layersWithOutsidePointerEventsDisabled.delete(d),gm())},[d,c]),p.useEffect(()=>{const k=()=>y({});return document.addEventListener(Nc,k),()=>document.removeEventListener(Nc,k)},[]),h.jsx(un.div,{...l,ref:w,style:{pointerEvents:v?E?"auto":"none":void 0,...e.style},onFocusCapture:Fn(e.onFocusCapture,P.onFocusCapture),onBlurCapture:Fn(e.onBlurCapture,P.onBlurCapture),onPointerDownCapture:Fn(e.onPointerDownCapture,C.onPointerDownCapture)})});Nx.displayName=vj;var Sj="DismissableLayerBranch",Ej=p.forwardRef((e,t)=>{const n=p.useContext(Tx),r=p.useRef(null),s=br(t,r);return p.useEffect(()=>{const o=r.current;if(o)return n.branches.add(o),()=>{n.branches.delete(o)}},[n.branches]),h.jsx(un.div,{...e,ref:s})});Ej.displayName=Sj;function kj(e,t=globalThis==null?void 0:globalThis.document){const n=wo(e),r=p.useRef(!1),s=p.useRef(()=>{});return p.useEffect(()=>{const o=a=>{if(a.target&&!r.current){let l=function(){jx(xj,n,c,{discrete:!0})};const c={originalEvent:a};a.pointerType==="touch"?(t.removeEventListener("click",s.current),s.current=l,t.addEventListener("click",s.current,{once:!0})):l()}else t.removeEventListener("click",s.current);r.current=!1},i=window.setTimeout(()=>{t.addEventListener("pointerdown",o)},0);return()=>{window.clearTimeout(i),t.removeEventListener("pointerdown",o),t.removeEventListener("click",s.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function bj(e,t=globalThis==null?void 0:globalThis.document){const n=wo(e),r=p.useRef(!1);return p.useEffect(()=>{const s=o=>{o.target&&!r.current&&jx(wj,n,{originalEvent:o},{discrete:!1})};return t.addEventListener("focusin",s),()=>t.removeEventListener("focusin",s)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function gm(){const e=new CustomEvent(Nc);document.dispatchEvent(e)}function jx(e,t,n,{discrete:r}){const s=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&s.addEventListener(e,t,{once:!0}),r?gj(s,o):s.dispatchEvent(o)}var Jl="focusScope.autoFocusOnMount",eu="focusScope.autoFocusOnUnmount",ym={bubbles:!1,cancelable:!0},Cj="FocusScope",Rx=p.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:s,onUnmountAutoFocus:o,...i}=e,[a,l]=p.useState(null),c=wo(s),d=wo(o),u=p.useRef(null),f=br(t,x=>l(x)),y=p.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;p.useEffect(()=>{if(r){let x=function(v){if(y.paused||!a)return;const E=v.target;a.contains(E)?u.current=E:wn(u.current,{select:!0})},S=function(v){if(y.paused||!a)return;const E=v.relatedTarget;E!==null&&(a.contains(E)||wn(u.current,{select:!0}))},m=function(v){if(document.activeElement===document.body)for(const C of v)C.removedNodes.length>0&&wn(a)};document.addEventListener("focusin",x),document.addEventListener("focusout",S);const g=new MutationObserver(m);return a&&g.observe(a,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",x),document.removeEventListener("focusout",S),g.disconnect()}}},[r,a,y.paused]),p.useEffect(()=>{if(a){xm.add(y);const x=document.activeElement;if(!a.contains(x)){const m=new CustomEvent(Jl,ym);a.addEventListener(Jl,c),a.dispatchEvent(m),m.defaultPrevented||(Pj(Mj(Mx(a)),{select:!0}),document.activeElement===x&&wn(a))}return()=>{a.removeEventListener(Jl,c),setTimeout(()=>{const m=new CustomEvent(eu,ym);a.addEventListener(eu,d),a.dispatchEvent(m),m.defaultPrevented||wn(x??document.body,{select:!0}),a.removeEventListener(eu,d),xm.remove(y)},0)}}},[a,c,d,y]);const w=p.useCallback(x=>{if(!n&&!r||y.paused)return;const S=x.key==="Tab"&&!x.altKey&&!x.ctrlKey&&!x.metaKey,m=document.activeElement;if(S&&m){const g=x.currentTarget,[v,E]=Tj(g);v&&E?!x.shiftKey&&m===E?(x.preventDefault(),n&&wn(v,{select:!0})):x.shiftKey&&m===v&&(x.preventDefault(),n&&wn(E,{select:!0})):m===g&&x.preventDefault()}},[n,r,y.paused]);return h.jsx(un.div,{tabIndex:-1,...i,ref:f,onKeyDown:w})});Rx.displayName=Cj;function Pj(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(wn(r,{select:t}),document.activeElement!==n)return}function Tj(e){const t=Mx(e),n=vm(t,e),r=vm(t.reverse(),e);return[n,r]}function Mx(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function vm(e,t){for(const n of e)if(!Nj(n,{upTo:t}))return n}function Nj(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function jj(e){return e instanceof HTMLInputElement&&"select"in e}function wn(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&jj(e)&&t&&e.select()}}var xm=Rj();function Rj(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=wm(e,t),e.unshift(t)},remove(t){var n;e=wm(e,t),(n=e[0])==null||n.resume()}}}function wm(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function Mj(e){return e.filter(t=>t.tagName!=="A")}var Dj="Portal",Dx=p.forwardRef((e,t)=>{var a;const{container:n,...r}=e,[s,o]=p.useState(!1);xo(()=>o(!0),[]);const i=n||s&&((a=globalThis==null?void 0:globalThis.document)==null?void 0:a.body);return i?Hy.createPortal(h.jsx(un.div,{...r,ref:t}),i):null});Dx.displayName=Dj;function Aj(e,t){return p.useReducer((n,r)=>t[n][r]??n,e)}var Ka=e=>{const{present:t,children:n}=e,r=Lj(t),s=typeof n=="function"?n({present:r.isPresent}):p.Children.only(n),o=br(r.ref,_j(s));return typeof n=="function"||r.isPresent?p.cloneElement(s,{ref:o}):null};Ka.displayName="Presence";function Lj(e){const[t,n]=p.useState(),r=p.useRef(null),s=p.useRef(e),o=p.useRef("none"),i=e?"mounted":"unmounted",[a,l]=Aj(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const c=oi(r.current);o.current=a==="mounted"?c:"none"},[a]),xo(()=>{const c=r.current,d=s.current;if(d!==e){const f=o.current,y=oi(c);e?l("MOUNT"):y==="none"||(c==null?void 0:c.display)==="none"?l("UNMOUNT"):l(d&&f!==y?"ANIMATION_OUT":"UNMOUNT"),s.current=e}},[e,l]),xo(()=>{if(t){let c;const d=t.ownerDocument.defaultView??window,u=y=>{const x=oi(r.current).includes(CSS.escape(y.animationName));if(y.target===t&&x&&(l("ANIMATION_END"),!s.current)){const S=t.style.animationFillMode;t.style.animationFillMode="forwards",c=d.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=S)})}},f=y=>{y.target===t&&(o.current=oi(r.current))};return t.addEventListener("animationstart",f),t.addEventListener("animationcancel",u),t.addEventListener("animationend",u),()=>{d.clearTimeout(c),t.removeEventListener("animationstart",f),t.removeEventListener("animationcancel",u),t.removeEventListener("animationend",u)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(a),ref:p.useCallback(c=>{r.current=c?getComputedStyle(c):null,n(c)},[])}}function oi(e){return(e==null?void 0:e.animationName)||"none"}function _j(e){var r,s;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(s=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:s.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var tu=0;function Oj(){p.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??Sm()),document.body.insertAdjacentElement("beforeend",e[1]??Sm()),tu++,()=>{tu===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),tu--}},[])}function Sm(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var Wt=function(){return Wt=Object.assign||function(t){for(var n,r=1,s=arguments.length;r<s;r++){n=arguments[r];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},Wt.apply(this,arguments)};function Ax(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(e,r[s])&&(n[r[s]]=e[r[s]]);return n}function Ij(e,t,n){if(n||arguments.length===2)for(var r=0,s=t.length,o;r<s;r++)(o||!(r in t))&&(o||(o=Array.prototype.slice.call(t,0,r)),o[r]=t[r]);return e.concat(o||Array.prototype.slice.call(t))}var Ai="right-scroll-bar-position",Li="width-before-scroll-bar",Vj="with-scroll-bars-hidden",Fj="--removed-body-scroll-bar-size";function nu(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function zj(e,t){var n=p.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(r){var s=n.value;s!==r&&(n.value=r,n.callback(r,s))}}}})[0];return n.callback=t,n.facade}var Bj=typeof window<"u"?p.useLayoutEffect:p.useEffect,Em=new WeakMap;function $j(e,t){var n=zj(null,function(r){return e.forEach(function(s){return nu(s,r)})});return Bj(function(){var r=Em.get(n);if(r){var s=new Set(r),o=new Set(e),i=n.current;s.forEach(function(a){o.has(a)||nu(a,null)}),o.forEach(function(a){s.has(a)||nu(a,i)})}Em.set(n,e)},[e]),n}function Uj(e){return e}function Wj(e,t){t===void 0&&(t=Uj);var n=[],r=!1,s={read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(o){var i=t(o,r);return n.push(i),function(){n=n.filter(function(a){return a!==i})}},assignSyncMedium:function(o){for(r=!0;n.length;){var i=n;n=[],i.forEach(o)}n={push:function(a){return o(a)},filter:function(){return n}}},assignMedium:function(o){r=!0;var i=[];if(n.length){var a=n;n=[],a.forEach(o),i=n}var l=function(){var d=i;i=[],d.forEach(o)},c=function(){return Promise.resolve().then(l)};c(),n={push:function(d){i.push(d),c()},filter:function(d){return i=i.filter(d),n}}}};return s}function Hj(e){e===void 0&&(e={});var t=Wj(null);return t.options=Wt({async:!0,ssr:!1},e),t}var Lx=function(e){var t=e.sideCar,n=Ax(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw new Error("Sidecar medium not found");return p.createElement(r,Wt({},n))};Lx.isSideCarExport=!0;function Gj(e,t){return e.useMedium(t),Lx}var _x=Hj(),ru=function(){},Ya=p.forwardRef(function(e,t){var n=p.useRef(null),r=p.useState({onScrollCapture:ru,onWheelCapture:ru,onTouchMoveCapture:ru}),s=r[0],o=r[1],i=e.forwardProps,a=e.children,l=e.className,c=e.removeScrollBar,d=e.enabled,u=e.shards,f=e.sideCar,y=e.noRelative,w=e.noIsolation,x=e.inert,S=e.allowPinchZoom,m=e.as,g=m===void 0?"div":m,v=e.gapMode,E=Ax(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),C=f,P=$j([n,t]),k=Wt(Wt({},E),s);return p.createElement(p.Fragment,null,d&&p.createElement(C,{sideCar:_x,removeScrollBar:c,shards:u,noRelative:y,noIsolation:w,inert:x,setCallbacks:o,allowPinchZoom:!!S,lockRef:n,gapMode:v}),i?p.cloneElement(p.Children.only(a),Wt(Wt({},k),{ref:P})):p.createElement(g,Wt({},k,{className:l,ref:P}),a))});Ya.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Ya.classNames={fullWidth:Li,zeroRight:Ai};var Kj=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function Yj(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=Kj();return t&&e.setAttribute("nonce",t),e}function Xj(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function Qj(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var Zj=function(){var e=0,t=null;return{add:function(n){e==0&&(t=Yj())&&(Xj(t,n),Qj(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},qj=function(){var e=Zj();return function(t,n){p.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},Ox=function(){var e=qj(),t=function(n){var r=n.styles,s=n.dynamic;return e(r,s),null};return t},Jj={left:0,top:0,right:0,gap:0},su=function(e){return parseInt(e||"",10)||0},eR=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],s=t[e==="padding"?"paddingRight":"marginRight"];return[su(n),su(r),su(s)]},tR=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return Jj;var t=eR(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},nR=Ox(),qr="data-scroll-locked",rR=function(e,t,n,r){var s=e.left,o=e.top,i=e.right,a=e.gap;return n===void 0&&(n="margin"),`
|
|
237
|
+
.`.concat(Vj,` {
|
|
238
238
|
overflow: hidden `).concat(r,`;
|
|
239
239
|
padding-right: `).concat(a,"px ").concat(r,`;
|
|
240
240
|
}
|
|
@@ -268,13 +268,13 @@ Error generating stack: `+o.message+`
|
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
body[`).concat(qr,`] {
|
|
271
|
-
`).concat(
|
|
271
|
+
`).concat(Fj,": ").concat(a,`px;
|
|
272
272
|
}
|
|
273
|
-
`)},km=function(){var e=parseInt(document.body.getAttribute(qr)||"0",10);return isFinite(e)?e:0},
|
|
273
|
+
`)},km=function(){var e=parseInt(document.body.getAttribute(qr)||"0",10);return isFinite(e)?e:0},sR=function(){p.useEffect(function(){return document.body.setAttribute(qr,(km()+1).toString()),function(){var e=km()-1;e<=0?document.body.removeAttribute(qr):document.body.setAttribute(qr,e.toString())}},[])},oR=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,s=r===void 0?"margin":r;sR();var o=p.useMemo(function(){return tR(s)},[s]);return p.createElement(nR,{styles:rR(o,!t,s,n?"":"!important")})},jc=!1;if(typeof window<"u")try{var ii=Object.defineProperty({},"passive",{get:function(){return jc=!0,!0}});window.addEventListener("test",ii,ii),window.removeEventListener("test",ii,ii)}catch{jc=!1}var Pr=jc?{passive:!1}:!1,iR=function(e){return e.tagName==="TEXTAREA"},Ix=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!iR(e)&&n[t]==="visible")},aR=function(e){return Ix(e,"overflowY")},lR=function(e){return Ix(e,"overflowX")},bm=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var s=Vx(e,r);if(s){var o=Fx(e,r),i=o[1],a=o[2];if(i>a)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},uR=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},cR=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},Vx=function(e,t){return e==="v"?aR(t):lR(t)},Fx=function(e,t){return e==="v"?uR(t):cR(t)},dR=function(e,t){return e==="h"&&t==="rtl"?-1:1},fR=function(e,t,n,r,s){var o=dR(e,window.getComputedStyle(t).direction),i=o*r,a=n.target,l=t.contains(a),c=!1,d=i>0,u=0,f=0;do{if(!a)break;var y=Fx(e,a),w=y[0],x=y[1],S=y[2],m=x-S-o*w;(w||m)&&Vx(e,a)&&(u+=m,f+=w);var g=a.parentNode;a=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!l&&a!==document.body||l&&(t.contains(a)||t===a));return(d&&Math.abs(u)<1||!d&&Math.abs(f)<1)&&(c=!0),c},ai=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Cm=function(e){return[e.deltaX,e.deltaY]},Pm=function(e){return e&&"current"in e?e.current:e},hR=function(e,t){return e[0]===t[0]&&e[1]===t[1]},pR=function(e){return`
|
|
274
274
|
.block-interactivity-`.concat(e,` {pointer-events: none;}
|
|
275
275
|
.allow-interactivity-`).concat(e,` {pointer-events: all;}
|
|
276
|
-
`)},pR=0,Tr=[];function mR(e){var t=p.useRef([]),n=p.useRef([0,0]),r=p.useRef(),s=p.useState(pR++)[0],o=p.useState(Ox)[0],i=p.useRef(e);p.useEffect(function(){i.current=e},[e]),p.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(s));var x=Oj([e.lockRef.current],(e.shards||[]).map(Pm),!0).filter(Boolean);return x.forEach(function(S){return S.classList.add("allow-interactivity-".concat(s))}),function(){document.body.classList.remove("block-interactivity-".concat(s)),x.forEach(function(S){return S.classList.remove("allow-interactivity-".concat(s))})}}},[e.inert,e.lockRef.current,e.shards]);var a=p.useCallback(function(x,S){if("touches"in x&&x.touches.length===2||x.type==="wheel"&&x.ctrlKey)return!i.current.allowPinchZoom;var m=ai(x),g=n.current,v="deltaX"in x?x.deltaX:g[0]-m[0],E="deltaY"in x?x.deltaY:g[1]-m[1],C,P=x.target,k=Math.abs(v)>Math.abs(E)?"h":"v";if("touches"in x&&k==="h"&&P.type==="range")return!1;var b=window.getSelection(),D=b&&b.anchorNode,T=D?D===P||D.contains(P):!1;if(T)return!1;var A=bm(k,P);if(!A)return!0;if(A?C=k:(C=k==="v"?"h":"v",A=bm(k,P)),!A)return!1;if(!r.current&&"changedTouches"in x&&(v||E)&&(r.current=C),!C)return!0;var L=r.current||C;return dR(L,S,x,L==="h"?v:E)},[]),l=p.useCallback(function(x){var S=x;if(!(!Tr.length||Tr[Tr.length-1]!==o)){var m="deltaY"in S?Cm(S):ai(S),g=t.current.filter(function(C){return C.name===S.type&&(C.target===S.target||S.target===C.shadowParent)&&fR(C.delta,m)})[0];if(g&&g.should){S.cancelable&&S.preventDefault();return}if(!g){var v=(i.current.shards||[]).map(Pm).filter(Boolean).filter(function(C){return C.contains(S.target)}),E=v.length>0?a(S,v[0]):!i.current.noIsolation;E&&S.cancelable&&S.preventDefault()}}},[]),c=p.useCallback(function(x,S,m,g){var v={name:x,delta:S,target:m,should:g,shadowParent:gR(m)};t.current.push(v),setTimeout(function(){t.current=t.current.filter(function(E){return E!==v})},1)},[]),d=p.useCallback(function(x){n.current=ai(x),r.current=void 0},[]),u=p.useCallback(function(x){c(x.type,Cm(x),x.target,a(x,e.lockRef.current))},[]),f=p.useCallback(function(x){c(x.type,ai(x),x.target,a(x,e.lockRef.current))},[]);p.useEffect(function(){return Tr.push(o),e.setCallbacks({onScrollCapture:u,onWheelCapture:u,onTouchMoveCapture:f}),document.addEventListener("wheel",l,Pr),document.addEventListener("touchmove",l,Pr),document.addEventListener("touchstart",d,Pr),function(){Tr=Tr.filter(function(x){return x!==o}),document.removeEventListener("wheel",l,Pr),document.removeEventListener("touchmove",l,Pr),document.removeEventListener("touchstart",d,Pr)}},[]);var y=e.removeScrollBar,w=e.inert;return p.createElement(p.Fragment,null,w?p.createElement(o,{styles:hR(s)}):null,y?p.createElement(sR,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function gR(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const yR=Hj(_x,mR);var zx=p.forwardRef(function(e,t){return p.createElement(Ya,Wt({},e,{ref:t,sideCar:yR}))});zx.classNames=Ya.classNames;var vR=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Nr=new WeakMap,li=new WeakMap,ui={},ou=0,Bx=function(e){return e&&(e.host||Bx(e.parentNode))},xR=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=Bx(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},wR=function(e,t,n,r){var s=xR(t,Array.isArray(e)?e:[e]);ui[n]||(ui[n]=new WeakMap);var o=ui[n],i=[],a=new Set,l=new Set(s),c=function(u){!u||a.has(u)||(a.add(u),c(u.parentNode))};s.forEach(c);var d=function(u){!u||l.has(u)||Array.prototype.forEach.call(u.children,function(f){if(a.has(f))d(f);else try{var y=f.getAttribute(r),w=y!==null&&y!=="false",x=(Nr.get(f)||0)+1,S=(o.get(f)||0)+1;Nr.set(f,x),o.set(f,S),i.push(f),x===1&&w&&li.set(f,!0),S===1&&f.setAttribute(n,"true"),w||f.setAttribute(r,"true")}catch(m){console.error("aria-hidden: cannot operate on ",f,m)}})};return d(t),a.clear(),ou++,function(){i.forEach(function(u){var f=Nr.get(u)-1,y=o.get(u)-1;Nr.set(u,f),o.set(u,y),f||(li.has(u)||u.removeAttribute(r),li.delete(u)),y||u.removeAttribute(n)}),ou--,ou||(Nr=new WeakMap,Nr=new WeakMap,li=new WeakMap,ui={})}},SR=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),s=vR(e);return s?(r.push.apply(r,Array.from(s.querySelectorAll("[aria-live], script"))),wR(r,s,n,"aria-hidden")):function(){return null}};function ER(e){const t=kR(e),n=p.forwardRef((r,s)=>{const{children:o,...i}=r,a=p.Children.toArray(o),l=a.find(CR);if(l){const c=l.props.children,d=a.map(u=>u===l?p.Children.count(c)>1?p.Children.only(null):p.isValidElement(c)?c.props.children:null:u);return h.jsx(t,{...i,ref:s,children:p.isValidElement(c)?p.cloneElement(c,void 0,d):null})}return h.jsx(t,{...i,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}function kR(e){const t=p.forwardRef((n,r)=>{const{children:s,...o}=n;if(p.isValidElement(s)){const i=TR(s),a=PR(o,s.props);return s.type!==p.Fragment&&(a.ref=r?Wa(r,i):i),p.cloneElement(s,a)}return p.Children.count(s)>1?p.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var bR=Symbol("radix.slottable");function CR(e){return p.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===bR}function PR(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...a)=>{const l=o(...a);return s(...a),l}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function TR(e){var r,s;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(s=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:s.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Xa="Dialog",[$x]=ej(Xa),[NR,Ot]=$x(Xa),Ux=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:s,onOpenChange:o,modal:i=!0}=e,a=p.useRef(null),l=p.useRef(null),[c,d]=oj({prop:r,defaultProp:s??!1,onChange:o,caller:Xa});return h.jsx(NR,{scope:t,triggerRef:a,contentRef:l,contentId:ql(),titleId:ql(),descriptionId:ql(),open:c,onOpenChange:d,onOpenToggle:p.useCallback(()=>d(u=>!u),[d]),modal:i,children:n})};Ux.displayName=Xa;var Wx="DialogTrigger",jR=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ot(Wx,n),o=br(t,s.triggerRef);return h.jsx(un.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":mf(s.open),...r,ref:o,onClick:Fn(e.onClick,s.onOpenToggle)})});jR.displayName=Wx;var hf="DialogPortal",[RR,Hx]=$x(hf,{forceMount:void 0}),Gx=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:s}=e,o=Ot(hf,t);return h.jsx(RR,{scope:t,forceMount:n,children:p.Children.map(r,i=>h.jsx(Ka,{present:n||o.open,children:h.jsx(Dx,{asChild:!0,container:s,children:i})}))})};Gx.displayName=hf;var ya="DialogOverlay",Kx=p.forwardRef((e,t)=>{const n=Hx(ya,e.__scopeDialog),{forceMount:r=n.forceMount,...s}=e,o=Ot(ya,e.__scopeDialog);return o.modal?h.jsx(Ka,{present:r||o.open,children:h.jsx(DR,{...s,ref:t})}):null});Kx.displayName=ya;var MR=ER("DialogOverlay.RemoveScroll"),DR=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ot(ya,n);return h.jsx(zx,{as:MR,allowPinchZoom:!0,shards:[s.contentRef],children:h.jsx(un.div,{"data-state":mf(s.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),Sr="DialogContent",Yx=p.forwardRef((e,t)=>{const n=Hx(Sr,e.__scopeDialog),{forceMount:r=n.forceMount,...s}=e,o=Ot(Sr,e.__scopeDialog);return h.jsx(Ka,{present:r||o.open,children:o.modal?h.jsx(AR,{...s,ref:t}):h.jsx(LR,{...s,ref:t})})});Yx.displayName=Sr;var AR=p.forwardRef((e,t)=>{const n=Ot(Sr,e.__scopeDialog),r=p.useRef(null),s=br(t,n.contentRef,r);return p.useEffect(()=>{const o=r.current;if(o)return SR(o)},[]),h.jsx(Xx,{...e,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Fn(e.onCloseAutoFocus,o=>{var i;o.preventDefault(),(i=n.triggerRef.current)==null||i.focus()}),onPointerDownOutside:Fn(e.onPointerDownOutside,o=>{const i=o.detail.originalEvent,a=i.button===0&&i.ctrlKey===!0;(i.button===2||a)&&o.preventDefault()}),onFocusOutside:Fn(e.onFocusOutside,o=>o.preventDefault())})}),LR=p.forwardRef((e,t)=>{const n=Ot(Sr,e.__scopeDialog),r=p.useRef(!1),s=p.useRef(!1);return h.jsx(Xx,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{var i,a;(i=e.onCloseAutoFocus)==null||i.call(e,o),o.defaultPrevented||(r.current||(a=n.triggerRef.current)==null||a.focus(),o.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:o=>{var l,c;(l=e.onInteractOutside)==null||l.call(e,o),o.defaultPrevented||(r.current=!0,o.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const i=o.target;((c=n.triggerRef.current)==null?void 0:c.contains(i))&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&s.current&&o.preventDefault()}})}),Xx=p.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:o,...i}=e,a=Ot(Sr,n),l=p.useRef(null),c=br(t,l);return _j(),h.jsxs(h.Fragment,{children:[h.jsx(Rx,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:o,children:h.jsx(Nx,{role:"dialog",id:a.contentId,"aria-describedby":a.descriptionId,"aria-labelledby":a.titleId,"data-state":mf(a.open),...i,ref:c,onDismiss:()=>a.onOpenChange(!1)})}),h.jsxs(h.Fragment,{children:[h.jsx(_R,{titleId:a.titleId}),h.jsx(IR,{contentRef:l,descriptionId:a.descriptionId})]})]})}),pf="DialogTitle",Qx=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ot(pf,n);return h.jsx(un.h2,{id:s.titleId,...r,ref:t})});Qx.displayName=pf;var Zx="DialogDescription",qx=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ot(Zx,n);return h.jsx(un.p,{id:s.descriptionId,...r,ref:t})});qx.displayName=Zx;var Jx="DialogClose",ew=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ot(Jx,n);return h.jsx(un.button,{type:"button",...r,ref:t,onClick:Fn(e.onClick,()=>s.onOpenChange(!1))})});ew.displayName=Jx;function mf(e){return e?"open":"closed"}var tw="DialogTitleWarning",[ZM,nw]=JN(tw,{contentName:Sr,titleName:pf,docsSlug:"dialog"}),_R=({titleId:e})=>{const t=nw(tw),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
|
|
276
|
+
`)},mR=0,Tr=[];function gR(e){var t=p.useRef([]),n=p.useRef([0,0]),r=p.useRef(),s=p.useState(mR++)[0],o=p.useState(Ox)[0],i=p.useRef(e);p.useEffect(function(){i.current=e},[e]),p.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(s));var x=Ij([e.lockRef.current],(e.shards||[]).map(Pm),!0).filter(Boolean);return x.forEach(function(S){return S.classList.add("allow-interactivity-".concat(s))}),function(){document.body.classList.remove("block-interactivity-".concat(s)),x.forEach(function(S){return S.classList.remove("allow-interactivity-".concat(s))})}}},[e.inert,e.lockRef.current,e.shards]);var a=p.useCallback(function(x,S){if("touches"in x&&x.touches.length===2||x.type==="wheel"&&x.ctrlKey)return!i.current.allowPinchZoom;var m=ai(x),g=n.current,v="deltaX"in x?x.deltaX:g[0]-m[0],E="deltaY"in x?x.deltaY:g[1]-m[1],C,P=x.target,k=Math.abs(v)>Math.abs(E)?"h":"v";if("touches"in x&&k==="h"&&P.type==="range")return!1;var b=window.getSelection(),D=b&&b.anchorNode,T=D?D===P||D.contains(P):!1;if(T)return!1;var A=bm(k,P);if(!A)return!0;if(A?C=k:(C=k==="v"?"h":"v",A=bm(k,P)),!A)return!1;if(!r.current&&"changedTouches"in x&&(v||E)&&(r.current=C),!C)return!0;var L=r.current||C;return fR(L,S,x,L==="h"?v:E)},[]),l=p.useCallback(function(x){var S=x;if(!(!Tr.length||Tr[Tr.length-1]!==o)){var m="deltaY"in S?Cm(S):ai(S),g=t.current.filter(function(C){return C.name===S.type&&(C.target===S.target||S.target===C.shadowParent)&&hR(C.delta,m)})[0];if(g&&g.should){S.cancelable&&S.preventDefault();return}if(!g){var v=(i.current.shards||[]).map(Pm).filter(Boolean).filter(function(C){return C.contains(S.target)}),E=v.length>0?a(S,v[0]):!i.current.noIsolation;E&&S.cancelable&&S.preventDefault()}}},[]),c=p.useCallback(function(x,S,m,g){var v={name:x,delta:S,target:m,should:g,shadowParent:yR(m)};t.current.push(v),setTimeout(function(){t.current=t.current.filter(function(E){return E!==v})},1)},[]),d=p.useCallback(function(x){n.current=ai(x),r.current=void 0},[]),u=p.useCallback(function(x){c(x.type,Cm(x),x.target,a(x,e.lockRef.current))},[]),f=p.useCallback(function(x){c(x.type,ai(x),x.target,a(x,e.lockRef.current))},[]);p.useEffect(function(){return Tr.push(o),e.setCallbacks({onScrollCapture:u,onWheelCapture:u,onTouchMoveCapture:f}),document.addEventListener("wheel",l,Pr),document.addEventListener("touchmove",l,Pr),document.addEventListener("touchstart",d,Pr),function(){Tr=Tr.filter(function(x){return x!==o}),document.removeEventListener("wheel",l,Pr),document.removeEventListener("touchmove",l,Pr),document.removeEventListener("touchstart",d,Pr)}},[]);var y=e.removeScrollBar,w=e.inert;return p.createElement(p.Fragment,null,w?p.createElement(o,{styles:pR(s)}):null,y?p.createElement(oR,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function yR(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const vR=Gj(_x,gR);var zx=p.forwardRef(function(e,t){return p.createElement(Ya,Wt({},e,{ref:t,sideCar:vR}))});zx.classNames=Ya.classNames;var xR=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Nr=new WeakMap,li=new WeakMap,ui={},ou=0,Bx=function(e){return e&&(e.host||Bx(e.parentNode))},wR=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=Bx(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},SR=function(e,t,n,r){var s=wR(t,Array.isArray(e)?e:[e]);ui[n]||(ui[n]=new WeakMap);var o=ui[n],i=[],a=new Set,l=new Set(s),c=function(u){!u||a.has(u)||(a.add(u),c(u.parentNode))};s.forEach(c);var d=function(u){!u||l.has(u)||Array.prototype.forEach.call(u.children,function(f){if(a.has(f))d(f);else try{var y=f.getAttribute(r),w=y!==null&&y!=="false",x=(Nr.get(f)||0)+1,S=(o.get(f)||0)+1;Nr.set(f,x),o.set(f,S),i.push(f),x===1&&w&&li.set(f,!0),S===1&&f.setAttribute(n,"true"),w||f.setAttribute(r,"true")}catch(m){console.error("aria-hidden: cannot operate on ",f,m)}})};return d(t),a.clear(),ou++,function(){i.forEach(function(u){var f=Nr.get(u)-1,y=o.get(u)-1;Nr.set(u,f),o.set(u,y),f||(li.has(u)||u.removeAttribute(r),li.delete(u)),y||u.removeAttribute(n)}),ou--,ou||(Nr=new WeakMap,Nr=new WeakMap,li=new WeakMap,ui={})}},ER=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),s=xR(e);return s?(r.push.apply(r,Array.from(s.querySelectorAll("[aria-live], script"))),SR(r,s,n,"aria-hidden")):function(){return null}};function kR(e){const t=bR(e),n=p.forwardRef((r,s)=>{const{children:o,...i}=r,a=p.Children.toArray(o),l=a.find(PR);if(l){const c=l.props.children,d=a.map(u=>u===l?p.Children.count(c)>1?p.Children.only(null):p.isValidElement(c)?c.props.children:null:u);return h.jsx(t,{...i,ref:s,children:p.isValidElement(c)?p.cloneElement(c,void 0,d):null})}return h.jsx(t,{...i,ref:s,children:o})});return n.displayName=`${e}.Slot`,n}function bR(e){const t=p.forwardRef((n,r)=>{const{children:s,...o}=n;if(p.isValidElement(s)){const i=NR(s),a=TR(o,s.props);return s.type!==p.Fragment&&(a.ref=r?Wa(r,i):i),p.cloneElement(s,a)}return p.Children.count(s)>1?p.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var CR=Symbol("radix.slottable");function PR(e){return p.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===CR}function TR(e,t){const n={...t};for(const r in t){const s=e[r],o=t[r];/^on[A-Z]/.test(r)?s&&o?n[r]=(...a)=>{const l=o(...a);return s(...a),l}:s&&(n[r]=s):r==="style"?n[r]={...s,...o}:r==="className"&&(n[r]=[s,o].filter(Boolean).join(" "))}return{...e,...n}}function NR(e){var r,s;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(s=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:s.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Xa="Dialog",[$x]=tj(Xa),[jR,Ot]=$x(Xa),Ux=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:s,onOpenChange:o,modal:i=!0}=e,a=p.useRef(null),l=p.useRef(null),[c,d]=ij({prop:r,defaultProp:s??!1,onChange:o,caller:Xa});return h.jsx(jR,{scope:t,triggerRef:a,contentRef:l,contentId:ql(),titleId:ql(),descriptionId:ql(),open:c,onOpenChange:d,onOpenToggle:p.useCallback(()=>d(u=>!u),[d]),modal:i,children:n})};Ux.displayName=Xa;var Wx="DialogTrigger",RR=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ot(Wx,n),o=br(t,s.triggerRef);return h.jsx(un.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":mf(s.open),...r,ref:o,onClick:Fn(e.onClick,s.onOpenToggle)})});RR.displayName=Wx;var hf="DialogPortal",[MR,Hx]=$x(hf,{forceMount:void 0}),Gx=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:s}=e,o=Ot(hf,t);return h.jsx(MR,{scope:t,forceMount:n,children:p.Children.map(r,i=>h.jsx(Ka,{present:n||o.open,children:h.jsx(Dx,{asChild:!0,container:s,children:i})}))})};Gx.displayName=hf;var ya="DialogOverlay",Kx=p.forwardRef((e,t)=>{const n=Hx(ya,e.__scopeDialog),{forceMount:r=n.forceMount,...s}=e,o=Ot(ya,e.__scopeDialog);return o.modal?h.jsx(Ka,{present:r||o.open,children:h.jsx(AR,{...s,ref:t})}):null});Kx.displayName=ya;var DR=kR("DialogOverlay.RemoveScroll"),AR=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ot(ya,n);return h.jsx(zx,{as:DR,allowPinchZoom:!0,shards:[s.contentRef],children:h.jsx(un.div,{"data-state":mf(s.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),Sr="DialogContent",Yx=p.forwardRef((e,t)=>{const n=Hx(Sr,e.__scopeDialog),{forceMount:r=n.forceMount,...s}=e,o=Ot(Sr,e.__scopeDialog);return h.jsx(Ka,{present:r||o.open,children:o.modal?h.jsx(LR,{...s,ref:t}):h.jsx(_R,{...s,ref:t})})});Yx.displayName=Sr;var LR=p.forwardRef((e,t)=>{const n=Ot(Sr,e.__scopeDialog),r=p.useRef(null),s=br(t,n.contentRef,r);return p.useEffect(()=>{const o=r.current;if(o)return ER(o)},[]),h.jsx(Xx,{...e,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Fn(e.onCloseAutoFocus,o=>{var i;o.preventDefault(),(i=n.triggerRef.current)==null||i.focus()}),onPointerDownOutside:Fn(e.onPointerDownOutside,o=>{const i=o.detail.originalEvent,a=i.button===0&&i.ctrlKey===!0;(i.button===2||a)&&o.preventDefault()}),onFocusOutside:Fn(e.onFocusOutside,o=>o.preventDefault())})}),_R=p.forwardRef((e,t)=>{const n=Ot(Sr,e.__scopeDialog),r=p.useRef(!1),s=p.useRef(!1);return h.jsx(Xx,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{var i,a;(i=e.onCloseAutoFocus)==null||i.call(e,o),o.defaultPrevented||(r.current||(a=n.triggerRef.current)==null||a.focus(),o.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:o=>{var l,c;(l=e.onInteractOutside)==null||l.call(e,o),o.defaultPrevented||(r.current=!0,o.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const i=o.target;((c=n.triggerRef.current)==null?void 0:c.contains(i))&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&s.current&&o.preventDefault()}})}),Xx=p.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:o,...i}=e,a=Ot(Sr,n),l=p.useRef(null),c=br(t,l);return Oj(),h.jsxs(h.Fragment,{children:[h.jsx(Rx,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:o,children:h.jsx(Nx,{role:"dialog",id:a.contentId,"aria-describedby":a.descriptionId,"aria-labelledby":a.titleId,"data-state":mf(a.open),...i,ref:c,onDismiss:()=>a.onOpenChange(!1)})}),h.jsxs(h.Fragment,{children:[h.jsx(OR,{titleId:a.titleId}),h.jsx(VR,{contentRef:l,descriptionId:a.descriptionId})]})]})}),pf="DialogTitle",Qx=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ot(pf,n);return h.jsx(un.h2,{id:s.titleId,...r,ref:t})});Qx.displayName=pf;var Zx="DialogDescription",qx=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ot(Zx,n);return h.jsx(un.p,{id:s.descriptionId,...r,ref:t})});qx.displayName=Zx;var Jx="DialogClose",ew=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,s=Ot(Jx,n);return h.jsx(un.button,{type:"button",...r,ref:t,onClick:Fn(e.onClick,()=>s.onOpenChange(!1))})});ew.displayName=Jx;function mf(e){return e?"open":"closed"}var tw="DialogTitleWarning",[qM,nw]=ej(tw,{contentName:Sr,titleName:pf,docsSlug:"dialog"}),OR=({titleId:e})=>{const t=nw(tw),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
|
|
277
277
|
|
|
278
278
|
If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
|
|
279
279
|
|
|
280
|
-
For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return p.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},OR="DialogDescriptionWarning",IR=({contentRef:e,descriptionId:t})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${nw(OR).contentName}}.`;return p.useEffect(()=>{var o;const s=(o=e.current)==null?void 0:o.getAttribute("aria-describedby");t&&s&&(document.getElementById(t)||console.warn(r))},[r,e,t]),null},VR=Ux,FR=Gx,rw=Kx,sw=Yx,ow=Qx,iw=qx,zR=ew;const gf=VR,BR=FR,aw=p.forwardRef(({className:e,...t},n)=>h.jsx(rw,{ref:n,className:Q("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));aw.displayName=rw.displayName;const Qa=p.forwardRef(({className:e,children:t,noOverlay:n,...r},s)=>h.jsxs(BR,{children:[!n&&h.jsx(aw,{}),h.jsxs(sw,{ref:s,className:Q("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...r,children:[t,h.jsxs(zR,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[h.jsx(ff,{className:"h-4 w-4"}),h.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Qa.displayName=sw.displayName;const Za=({className:e,...t})=>h.jsx("div",{className:Q("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});Za.displayName="DialogHeader";const qa=({className:e,...t})=>h.jsx("div",{className:Q("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});qa.displayName="DialogFooter";const Ja=p.forwardRef(({className:e,...t},n)=>h.jsx(ow,{ref:n,className:Q("text-lg font-semibold leading-none tracking-tight",e),...t}));Ja.displayName=ow.displayName;const el=p.forwardRef(({className:e,...t},n)=>h.jsx(iw,{ref:n,className:Q("text-sm text-muted-foreground",e),...t}));el.displayName=iw.displayName;function $R({project:e,open:t,onOpenChange:n,onUpdated:r}){const[s,o]=p.useState([]),[i,a]=p.useState([]),[l,c]=p.useState(!1),[d,u]=p.useState(null);p.useEffect(()=>{if(!t)return;o(e.shares?[...e.shares]:[]),u(null);let g=!1;return lx().then(v=>{g||a(v)}).catch(()=>{}),()=>{g=!0}},[t,e.id]);const f=new Set(s.map(g=>g.username)),y=i.filter(g=>g!==e.owner&&!f.has(g)),w=g=>{o(v=>[...v,{username:g,permission:"view"}])},x=g=>{o(v=>v.filter(E=>E.username!==g))},S=g=>{o(v=>v.map(E=>E.username===g?{...E,permission:E.permission==="view"?"edit":"view"}:E))},m=async()=>{c(!0),u(null);try{const g=await ux(e.id,s);r(g),n(!1)}catch(g){u(g instanceof Error?g.message:"Failed to update shares")}finally{c(!1)}};return h.jsx(gf,{open:t,onOpenChange:n,children:h.jsxs(Qa,{className:"sm:max-w-md",children:[h.jsxs(Za,{children:[h.jsxs(Ja,{className:"flex items-center gap-2",children:[h.jsx(Tc,{className:"h-4 w-4"}),"共享设置"]}),h.jsx(el,{children:"选择用户并设置权限:可见(只读)或可编辑(读写+终端)"})]}),h.jsxs("div",{className:"space-y-3 max-h-64 overflow-y-auto",children:[s.length===0&&h.jsx("p",{className:"text-sm text-muted-foreground text-center py-4",children:"尚未共享给任何用户"}),s.map(g=>h.jsxs("div",{className:"flex items-center justify-between gap-2 px-1",children:[h.jsx("span",{className:"text-sm font-medium",children:g.username}),h.jsxs("div",{className:"flex items-center gap-1.5",children:[h.jsx("button",{onClick:()=>S(g.username),className:"focus:outline-none",children:h.jsx(rr,{variant:g.permission==="edit"?"default":"secondary",className:"cursor-pointer text-xs",children:g.permission==="edit"?"可编辑":"可见"})}),h.jsx(ie,{variant:"ghost",size:"icon",className:"h-7 w-7 text-destructive hover:text-destructive",onClick:()=>x(g.username),children:h.jsx(Px,{className:"h-3.5 w-3.5"})})]})]},g.username))]}),y.length>0&&h.jsxs("div",{className:"border-t pt-3",children:[h.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:"添加用户"}),h.jsx("div",{className:"flex flex-wrap gap-1.5",children:y.map(g=>h.jsxs(ie,{variant:"outline",size:"sm",className:"h-7 text-xs gap-1",onClick:()=>w(g),children:[h.jsx(ga,{className:"h-3 w-3"}),g]},g))})]}),d&&h.jsx("p",{className:"text-sm text-destructive",children:d}),h.jsxs(qa,{children:[h.jsx(ie,{variant:"outline",onClick:()=>n(!1),disabled:l,children:"取消"}),h.jsx(ie,{onClick:()=>void m(),disabled:l,children:l?"保存中...":"保存"})]})]})})}function UR(e,t){switch(e){case"thinking":return"Thinking…";case"tool_use":return t?`${t}`:"Tool…";case"tool_result":return"Reading…";case"text":return"Writing…"}}function WR({status:e}){return h.jsx("span",{className:Q("inline-block w-2 h-2 rounded-full",{"bg-green-500":e==="running","bg-zinc-400":e==="stopped","bg-yellow-400 animate-pulse":e==="restarting"})})}const Tm=R.memo(function({project:t,active:n=!1,statusStack:r=[],onDelete:s,onArchive:o,onUnarchive:i,onUpdated:a}){var g,v;const l=Va(),[c,d]=p.useState(!1),u=!!t._sharedPermission,f=t._sharedPermission==="view",y=E=>{E.stopPropagation(),confirm(`Delete project "${t.name}"? This cannot be undone.`)&&s(t.id)},w=E=>{E.stopPropagation(),o(t.id)},x=E=>{E.stopPropagation(),i(t.id)},S=h.jsx(Vn.div,{whileHover:!t.archived&&!n?{y:-2}:{},transition:{duration:.2},children:h.jsxs(of,{className:Q("group cursor-pointer transition-colors relative",t.archived?"opacity-60 hover:opacity-80 hover:border-zinc-400":n?"border-transparent hover:border-transparent bg-transparent shadow-none":"hover:border-zinc-400 hover:shadow-md"),onClick:()=>!t.archived&&l(`/projects/${t.id}`),children:[h.jsxs(af,{className:"pb-2",children:[h.jsxs("div",{className:"flex items-start justify-between gap-2",children:[h.jsx(lf,{className:Q("text-base leading-tight",t.archived&&"text-muted-foreground"),children:t.name}),h.jsx("div",{className:"flex items-center gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0",children:!u&&h.jsxs(h.Fragment,{children:[t.archived?h.jsx(ie,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground hover:text-foreground",onClick:x,title:"Restore project",children:h.jsx(AN,{className:"h-3.5 w-3.5"})}):h.jsxs(h.Fragment,{children:[h.jsx(ie,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground hover:text-foreground",onClick:E=>{E.stopPropagation(),d(!0)},title:"共享设置",children:h.jsx(Tc,{className:"h-3.5 w-3.5"})}),h.jsx(ie,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground hover:text-foreground",onClick:w,title:"Archive project",children:h.jsx(LN,{className:"h-3.5 w-3.5"})})]}),h.jsx(ie,{variant:"ghost",size:"icon",className:"h-7 w-7 text-destructive hover:text-destructive hover:bg-destructive/10",onClick:y,title:"Delete project",children:h.jsx(Px,{className:"h-3.5 w-3.5"})})]})})]}),h.jsx("div",{className:"flex items-center gap-1.5",children:t.archived?h.jsx(rr,{variant:"secondary",className:"text-xs",children:"Archived"}):h.jsxs(h.Fragment,{children:[h.jsx(WR,{status:t.status}),h.jsx("span",{className:"text-xs text-muted-foreground capitalize",children:t.status}),n&&r.length>0&&h.jsx("div",{className:"ml-auto",children:h.jsx(tf,{mode:"wait",children:r.slice(-1).map(E=>h.jsx(Vn.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},exit:{opacity:0,y:-6},transition:{duration:.25,ease:"easeOut"},children:h.jsx(rr,{variant:"outline",className:"text-xs font-normal whitespace-nowrap",children:UR(E.phase,E.detail)})},E.id))})})]})})]}),h.jsxs(uf,{className:"space-y-2",children:[h.jsxs("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[h.jsx(Pc,{className:"h-3.5 w-3.5 flex-shrink-0"}),h.jsx("span",{className:"truncate font-mono",children:t.folderPath})]}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(rr,{variant:"outline",className:"text-xs font-mono",children:t.cliTool??"claude"}),h.jsx(rr,{variant:t.permissionMode==="unlimited"?"destructive":"secondary",className:"text-xs",children:t.permissionMode==="unlimited"?"Unlimited":"Limited"}),u&&h.jsxs(rr,{variant:"outline",className:"text-xs gap-0.5",children:[f?h.jsx(IN,{className:"h-3 w-3"}):h.jsx(Cx,{className:"h-3 w-3"}),f?"可见":"可编辑"]}),!u&&t.shares&&t.shares.length>0&&h.jsxs(rr,{variant:"outline",className:"text-xs gap-0.5",children:[h.jsx(Tc,{className:"h-3 w-3"}),t.shares.length]}),h.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(t.createdAt).toLocaleDateString()})]}),(t.tags??[]).length>0&&h.jsxs("div",{className:"flex flex-wrap gap-1 mt-1",children:[(t.tags??[]).slice(0,3).map(E=>h.jsxs("span",{className:"px-1.5 py-0 rounded-full text-[10px] bg-muted text-muted-foreground border border-border",children:["#",E]},E)),(((g=t.tags)==null?void 0:g.length)??0)>3&&h.jsxs("span",{className:"text-[10px] text-muted-foreground",children:["+",(((v=t.tags)==null?void 0:v.length)??0)-3]})]})]})]})}),m=n&&!t.archived?h.jsx("div",{className:"card-active-glow rounded-lg",children:S}):S;return h.jsxs(h.Fragment,{children:[m,!u&&a&&h.jsx($R,{project:t,open:c,onOpenChange:d,onUpdated:a})]})});function lw({onSelect:e}){const[t,n]=p.useState(""),[r,s]=p.useState(null),[o,i]=p.useState([]),[a,l]=p.useState(!0),[c,d]=p.useState(null),[u,f]=p.useState(!1),[y,w]=p.useState(""),[x,S]=p.useState(null),[m,g]=p.useState(!1),v=p.useRef(null),E=async A=>{l(!0),d(null);try{const L=await Sx(A);n(L.path),s(L.parent),i(L.entries)}catch(L){d(L instanceof Error?L.message:"Failed to load directory")}finally{l(!1)}};p.useEffect(()=>{E()},[]),p.useEffect(()=>{u&&setTimeout(()=>{var A;return(A=v.current)==null?void 0:A.focus()},0)},[u]);const C=()=>{w(""),S(null),f(!0)},P=()=>{f(!1),w(""),S(null)},k=async()=>{const A=y.trim();if(A){g(!0),S(null);try{const{path:L}=await Ex(t,A);f(!1),w(""),await E(t),E(L)}catch(L){S(L instanceof Error?L.message:"Failed to create folder")}finally{g(!1)}}},b=A=>{A.key==="Enter"?(A.preventDefault(),k()):A.key==="Escape"&&P()},D=t.split("/").filter(Boolean),T=A=>{const L="/"+D.slice(0,A+1).join("/");E(L)};return h.jsxs("div",{className:"flex flex-col h-64 border rounded-md overflow-hidden",children:[h.jsxs("div",{className:"flex items-center gap-1 px-2 py-2 bg-muted border-b flex-shrink-0",children:[h.jsx(ie,{variant:"ghost",size:"sm",className:"h-6 px-1 flex-shrink-0",onClick:()=>void E(),title:"Home",children:h.jsx(zN,{className:"h-3 w-3"})}),h.jsx("div",{className:"flex items-center gap-1 flex-1 overflow-x-auto min-w-0",children:D.map((A,L)=>h.jsxs(R.Fragment,{children:[h.jsx(bx,{className:"h-3 w-3 text-muted-foreground flex-shrink-0"}),h.jsx("button",{className:"text-xs hover:text-foreground text-muted-foreground whitespace-nowrap",onClick:()=>T(L),children:A})]},L))}),h.jsxs(ie,{variant:"ghost",size:"sm",className:"h-6 px-1.5 flex-shrink-0 gap-1 text-xs",onClick:C,disabled:u||a||!!c,title:"New folder",children:[h.jsx(FN,{className:"h-3.5 w-3.5"}),h.jsx("span",{className:"hidden sm:inline",children:"New folder"})]})]}),h.jsxs("div",{className:"flex-1 overflow-y-auto",children:[a&&h.jsx("div",{className:"flex items-center justify-center h-full text-sm text-muted-foreground",children:"Loading..."}),c&&h.jsx("div",{className:"flex items-center justify-center h-full text-sm text-destructive px-4 text-center",children:c}),!a&&!c&&h.jsxs("div",{className:"p-1",children:[r&&h.jsxs("button",{className:"flex items-center gap-2 w-full px-2 py-1.5 text-sm rounded hover:bg-accent hover:text-accent-foreground",onClick:()=>void E(r),children:[h.jsx(_N,{className:"h-4 w-4 text-muted-foreground"}),h.jsx("span",{children:".."})]}),u&&h.jsxs("div",{className:"flex items-center gap-1 px-2 py-1.5",children:[h.jsx(fm,{className:"h-4 w-4 text-blue-500 flex-shrink-0"}),h.jsx("input",{ref:v,className:Q("flex-1 text-sm bg-background border rounded px-1.5 py-0.5 outline-none","focus:ring-1 focus:ring-ring",x&&"border-destructive"),placeholder:"Folder name",value:y,onChange:A=>{w(A.target.value),S(null)},onKeyDown:b,disabled:m}),h.jsx("button",{className:"p-1 rounded hover:bg-accent disabled:opacity-50",onClick:()=>void k(),disabled:!y.trim()||m,title:"Create",children:h.jsx(ON,{className:"h-3.5 w-3.5 text-green-600"})}),h.jsx("button",{className:"p-1 rounded hover:bg-accent",onClick:P,disabled:m,title:"Cancel",children:h.jsx(ff,{className:"h-3.5 w-3.5 text-muted-foreground"})})]}),x&&h.jsx("p",{className:"px-3 pb-1 text-xs text-destructive",children:x}),o.length===0&&!u&&h.jsx("div",{className:"text-sm text-muted-foreground px-2 py-4 text-center",children:"Empty directory"}),o.map(A=>h.jsxs("button",{className:Q("flex items-center gap-2 w-full px-2 py-1.5 text-sm rounded text-left",A.type==="dir"?"hover:bg-accent hover:text-accent-foreground cursor-pointer":"opacity-40 cursor-not-allowed"),onClick:()=>{A.type==="dir"&&E(A.path)},disabled:A.type==="file",children:[A.type==="dir"?h.jsx(fm,{className:"h-4 w-4 text-blue-500 flex-shrink-0"}):h.jsx(VN,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),h.jsx("span",{className:"truncate",children:A.name})]},A.path))]})]}),h.jsxs("div",{className:"border-t px-3 py-2 flex items-center justify-between gap-2 flex-shrink-0 bg-background",children:[h.jsx("span",{className:"text-xs text-muted-foreground truncate flex-1",children:t}),h.jsx(ie,{size:"sm",onClick:()=>e(t),disabled:!t,children:"Select this folder"})]})]})}const HR=[{value:"claude",label:"Claude",desc:"Anthropic Claude Code CLI"},{value:"opencode",label:"OpenCode",desc:"OpenCode CLI (sst/opencode)"},{value:"codex",label:"Codex",desc:"OpenAI Codex CLI"},{value:"qwen",label:"Qwen",desc:"Qwen Code CLI (QwenLM)"}],Nm={claude:{limited:"claude",unlimited:"claude --dangerously-skip-permissions"},opencode:{limited:"opencode",unlimited:"opencode --dangerously-skip-permissions"},codex:{limited:"codex",unlimited:"codex --ask-for-approval never --sandbox danger-full-access"},qwen:{limited:"qwen-code",unlimited:"qwen-code --yolo"}};function GR({open:e,onOpenChange:t,onCreated:n}){const[r,s]=p.useState("name"),[o,i]=p.useState(""),[a,l]=p.useState(""),[c,d]=p.useState("claude"),[u,f]=p.useState("limited"),[y,w]=p.useState(!1),[x,S]=p.useState(null),m=()=>{s("name"),i(""),l(""),d("claude"),f("limited"),S(null),w(!1)},g=b=>{b||m(),t(b)},v=()=>{if(!o.trim()){S("Please enter a project name");return}S(null),s("folder")},E=b=>{l(b),s("settings")},C=async()=>{w(!0),S(null);try{const b=await cx({name:o.trim(),folderPath:a,permissionMode:u,cliTool:c});n(b),g(!1)}catch(b){S(b instanceof Error?b.message:"Failed to create project")}finally{w(!1)}},P={name:"New Project — Name",folder:"New Project — Select Folder",settings:"New Project — Settings"},k=["name","folder","settings"];return h.jsx(gf,{open:e,onOpenChange:g,children:h.jsxs(Qa,{className:"sm:max-w-lg",children:[h.jsxs(Za,{children:[h.jsx(Ja,{children:P[r]}),h.jsxs(el,{children:[r==="name"&&"Give your project a name.",r==="folder"&&"Choose the working directory for this project.",r==="settings"&&"Choose the AI coding tool and run mode."]})]}),h.jsx("div",{className:"flex gap-2 mb-2",children:k.map((b,D)=>h.jsx("div",{className:`h-1.5 flex-1 rounded-full ${r===b?"bg-primary":k.indexOf(r)>D?"bg-primary/40":"bg-muted"}`},b))}),r==="name"&&h.jsxs("div",{className:"space-y-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{htmlFor:"project-name",children:"Project Name"}),h.jsx(vo,{id:"project-name",placeholder:"My Project",value:o,onChange:b=>i(b.target.value),onKeyDown:b=>{b.key==="Enter"&&v()},autoFocus:!0})]}),x&&h.jsx("p",{className:"text-sm text-destructive",children:x})]}),r==="folder"&&h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{children:"Working Directory"}),h.jsx(lw,{onSelect:E})]}),r==="settings"&&h.jsxs("div",{className:"space-y-5",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{children:"AI Coding Tool"}),h.jsx("div",{className:"grid grid-cols-2 gap-2",children:HR.map(b=>h.jsxs("label",{className:`flex items-center gap-2.5 cursor-pointer p-3 rounded-md border transition-colors ${c===b.value?"border-primary bg-primary/5":"hover:bg-accent"}`,children:[h.jsx("input",{type:"radio",name:"cliTool",value:b.value,checked:c===b.value,onChange:()=>d(b.value),className:"accent-primary"}),h.jsxs("div",{children:[h.jsx("div",{className:"font-medium text-sm",children:b.label}),h.jsx("div",{className:"text-xs text-muted-foreground",children:b.desc})]})]},b.value))})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{children:"Permission Mode"}),h.jsxs("div",{className:"space-y-2",children:[h.jsxs("label",{className:"flex items-start gap-3 cursor-pointer p-3 rounded-md border hover:bg-accent transition-colors",children:[h.jsx("input",{type:"radio",name:"permissionMode",value:"limited",checked:u==="limited",onChange:()=>f("limited"),className:"mt-0.5"}),h.jsxs("div",{children:[h.jsx("div",{className:"font-medium text-sm",children:"Limited"}),h.jsxs("div",{className:"text-xs text-muted-foreground",children:["Runs ",h.jsx("code",{className:"bg-muted px-1 rounded",children:Nm[c].limited})," — asks for permission before file changes."]})]})]}),h.jsxs("label",{className:"flex items-start gap-3 cursor-pointer p-3 rounded-md border hover:bg-accent transition-colors",children:[h.jsx("input",{type:"radio",name:"permissionMode",value:"unlimited",checked:u==="unlimited",onChange:()=>f("unlimited"),className:"mt-0.5"}),h.jsxs("div",{children:[h.jsx("div",{className:"font-medium text-sm",children:"Unlimited"}),h.jsxs("div",{className:"text-xs text-muted-foreground",children:["Runs ",h.jsx("code",{className:"bg-muted px-1 rounded",children:Nm[c].unlimited})," — acts autonomously."]})]})]})]})]}),h.jsxs("div",{className:"text-xs text-muted-foreground",children:[h.jsx("span",{className:"font-medium",children:"Folder:"})," ",h.jsx("span",{className:"font-mono",children:a})]}),x&&h.jsx("p",{className:"text-sm text-destructive",children:x})]}),h.jsxs(qa,{children:[r!=="name"&&h.jsx(ie,{variant:"outline",onClick:()=>s(r==="settings"?"folder":"name"),disabled:y,children:"Back"}),r==="name"&&h.jsx(ie,{onClick:v,children:"Next"}),r==="folder"&&h.jsx(ie,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),r==="settings"&&h.jsx(ie,{onClick:()=>void C(),disabled:y,children:y?"Creating...":"Create Project"})]})]})})}function KR({open:e,onOpenChange:t,onOpened:n}){const[r,s]=p.useState(""),[o,i]=p.useState(!1),[a,l]=p.useState(null),c=()=>{s(""),l(null),i(!1)},d=f=>{f||c(),t(f)},u=async f=>{s(f),i(!0),l(null);try{const y=await dx(f);n(y),d(!1)}catch(y){l(y instanceof Error?y.message:"Failed to open project"),i(!1)}};return h.jsx(gf,{open:e,onOpenChange:d,children:h.jsxs(Qa,{className:"sm:max-w-lg",children:[h.jsxs(Za,{children:[h.jsx(Ja,{children:"Open Existing Project"}),h.jsxs(el,{children:["Select a folder that contains a ",h.jsx("code",{className:"bg-muted px-1 rounded text-xs",children:".ccweb/"})," configuration. The project's history and settings will be restored."]})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{children:"Project Folder"}),h.jsx(lw,{onSelect:f=>void u(f)})]}),a&&h.jsx("p",{className:"text-sm text-destructive",children:a}),r&&!a&&o&&h.jsxs("p",{className:"text-sm text-muted-foreground",children:["Opening project from ",r,"..."]}),h.jsx(qa,{children:h.jsx(ie,{variant:"outline",onClick:()=>d(!1),disabled:o,children:"Cancel"})})]})})}function YR(e){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}const XR=e=>{switch(e){case"success":return qR;case"info":return eM;case"warning":return JR;case"error":return tM;default:return null}},QR=Array(12).fill(0),ZR=({visible:e,className:t})=>R.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},R.createElement("div",{className:"sonner-spinner"},QR.map((n,r)=>R.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${r}`})))),qR=R.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},R.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"})),JR=R.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},R.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"})),eM=R.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},R.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"})),tM=R.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},R.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"})),nM=R.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"},R.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),R.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),rM=()=>{const[e,t]=R.useState(document.hidden);return R.useEffect(()=>{const n=()=>{t(document.hidden)};return document.addEventListener("visibilitychange",n),()=>window.removeEventListener("visibilitychange",n)},[]),e};let Rc=1;class sM{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{const n=this.subscribers.indexOf(t);this.subscribers.splice(n,1)}),this.publish=t=>{this.subscribers.forEach(n=>n(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var n;const{message:r,...s}=t,o=typeof(t==null?void 0:t.id)=="number"||((n=t.id)==null?void 0:n.length)>0?t.id:Rc++,i=this.toasts.find(l=>l.id===o),a=t.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(o)&&this.dismissedToasts.delete(o),i?this.toasts=this.toasts.map(l=>l.id===o?(this.publish({...l,...t,id:o,title:r}),{...l,...t,id:o,dismissible:a,title:r}):l):this.addToast({title:r,...s,dismissible:a,id:o}),o},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(n=>n({id:t,dismiss:!0})))):this.toasts.forEach(n=>{this.subscribers.forEach(r=>r({id:n.id,dismiss:!0}))}),t),this.message=(t,n)=>this.create({...n,message:t}),this.error=(t,n)=>this.create({...n,message:t,type:"error"}),this.success=(t,n)=>this.create({...n,type:"success",message:t}),this.info=(t,n)=>this.create({...n,type:"info",message:t}),this.warning=(t,n)=>this.create({...n,type:"warning",message:t}),this.loading=(t,n)=>this.create({...n,type:"loading",message:t}),this.promise=(t,n)=>{if(!n)return;let r;n.loading!==void 0&&(r=this.create({...n,promise:t,type:"loading",message:n.loading,description:typeof n.description!="function"?n.description:void 0}));const s=Promise.resolve(t instanceof Function?t():t);let o=r!==void 0,i;const a=s.then(async c=>{if(i=["resolve",c],R.isValidElement(c))o=!1,this.create({id:r,type:"default",message:c});else if(iM(c)&&!c.ok){o=!1;const u=typeof n.error=="function"?await n.error(`HTTP error! status: ${c.status}`):n.error,f=typeof n.description=="function"?await n.description(`HTTP error! status: ${c.status}`):n.description,w=typeof u=="object"&&!R.isValidElement(u)?u:{message:u};this.create({id:r,type:"error",description:f,...w})}else if(c instanceof Error){o=!1;const u=typeof n.error=="function"?await n.error(c):n.error,f=typeof n.description=="function"?await n.description(c):n.description,w=typeof u=="object"&&!R.isValidElement(u)?u:{message:u};this.create({id:r,type:"error",description:f,...w})}else if(n.success!==void 0){o=!1;const u=typeof n.success=="function"?await n.success(c):n.success,f=typeof n.description=="function"?await n.description(c):n.description,w=typeof u=="object"&&!R.isValidElement(u)?u:{message:u};this.create({id:r,type:"success",description:f,...w})}}).catch(async c=>{if(i=["reject",c],n.error!==void 0){o=!1;const d=typeof n.error=="function"?await n.error(c):n.error,u=typeof n.description=="function"?await n.description(c):n.description,y=typeof d=="object"&&!R.isValidElement(d)?d:{message:d};this.create({id:r,type:"error",description:u,...y})}}).finally(()=>{o&&(this.dismiss(r),r=void 0),n.finally==null||n.finally.call(n)}),l=()=>new Promise((c,d)=>a.then(()=>i[0]==="reject"?d(i[1]):c(i[1])).catch(d));return typeof r!="string"&&typeof r!="number"?{unwrap:l}:Object.assign(r,{unwrap:l})},this.custom=(t,n)=>{const r=(n==null?void 0:n.id)||Rc++;return this.create({jsx:t(r),id:r,...n}),r},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const et=new sM,oM=(e,t)=>{const n=(t==null?void 0:t.id)||Rc++;return et.addToast({title:e,...t,id:n}),n},iM=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",aM=oM,lM=()=>et.toasts,uM=()=>et.getActiveToasts(),Ls=Object.assign(aM,{success:et.success,info:et.info,warning:et.warning,error:et.error,custom:et.custom,message:et.message,promise:et.promise,dismiss:et.dismiss,loading:et.loading},{getHistory:lM,getToasts:uM});YR("[data-sonner-toaster][dir=ltr],html[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%)}[data-sonner-toaster][dir=rtl],html[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%)}[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:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[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);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[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 rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [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)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [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;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left: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);background:var(--normal-bg);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-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[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}[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}[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,0)) translateX(var(--swipe-amount-x,0));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{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{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{from{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-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--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-sonner-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-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-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, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-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-sonner-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]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[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]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[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]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[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]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[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:first-child{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)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{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%)}");function ci(e){return e.label!==void 0}const cM=3,dM="24px",fM="16px",jm=4e3,hM=356,pM=14,mM=45,gM=200;function Ft(...e){return e.filter(Boolean).join(" ")}function yM(e){const[t,n]=e.split("-"),r=[];return t&&r.push(t),n&&r.push(n),r}const vM=e=>{var t,n,r,s,o,i,a,l,c;const{invert:d,toast:u,unstyled:f,interacting:y,setHeights:w,visibleToasts:x,heights:S,index:m,toasts:g,expanded:v,removeToast:E,defaultRichColors:C,closeButton:P,style:k,cancelButtonStyle:b,actionButtonStyle:D,className:T="",descriptionClassName:A="",duration:L,position:Z,gap:le,expandByDefault:ge,classNames:B,icons:re,closeButtonAriaLabel:j="Close toast"}=e,[_,V]=R.useState(null),[$,se]=R.useState(null),[H,q]=R.useState(!1),[K,pe]=R.useState(!1),[Je,J]=R.useState(!1),[Xt,cn]=R.useState(!1),[Qt,It]=R.useState(!1),[gs,Xn]=R.useState(0),[tl,Qn]=R.useState(0),dn=R.useRef(u.duration||L||jm),Lo=R.useRef(null),kt=R.useRef(null),nl=m===0,rl=m+1<=x,ze=u.type,N=u.dismissible!==!1,z=u.className||"",Y=u.descriptionClassName||"",te=R.useMemo(()=>S.findIndex(U=>U.toastId===u.id)||0,[S,u.id]),ue=R.useMemo(()=>{var U;return(U=u.closeButton)!=null?U:P},[u.closeButton,P]),Te=R.useMemo(()=>u.duration||L||jm,[u.duration,L]),Ge=R.useRef(0),ye=R.useRef(0),Zn=R.useRef(0),fn=R.useRef(null),[hw,pw]=Z.split("-"),vf=R.useMemo(()=>S.reduce((U,Me,Be)=>Be>=te?U:U+Me.height,0),[S,te]),xf=rM(),mw=u.invert||d,sl=ze==="loading";ye.current=R.useMemo(()=>te*le+vf,[te,vf]),R.useEffect(()=>{dn.current=Te},[Te]),R.useEffect(()=>{q(!0)},[]),R.useEffect(()=>{const U=kt.current;if(U){const Me=U.getBoundingClientRect().height;return Qn(Me),w(Be=>[{toastId:u.id,height:Me,position:u.position},...Be]),()=>w(Be=>Be.filter(it=>it.toastId!==u.id))}},[w,u.id]),R.useLayoutEffect(()=>{if(!H)return;const U=kt.current,Me=U.style.height;U.style.height="auto";const Be=U.getBoundingClientRect().height;U.style.height=Me,Qn(Be),w(it=>it.find(Le=>Le.toastId===u.id)?it.map(Le=>Le.toastId===u.id?{...Le,height:Be}:Le):[{toastId:u.id,height:Be,position:u.position},...it])},[H,u.title,u.description,w,u.id,u.jsx,u.action,u.cancel]);const hn=R.useCallback(()=>{pe(!0),Xn(ye.current),w(U=>U.filter(Me=>Me.toastId!==u.id)),setTimeout(()=>{E(u)},gM)},[u,E,w,ye]);R.useEffect(()=>{if(u.promise&&ze==="loading"||u.duration===1/0||u.type==="loading")return;let U;return v||y||xf?(()=>{if(Zn.current<Ge.current){const it=new Date().getTime()-Ge.current;dn.current=dn.current-it}Zn.current=new Date().getTime()})():(()=>{dn.current!==1/0&&(Ge.current=new Date().getTime(),U=setTimeout(()=>{u.onAutoClose==null||u.onAutoClose.call(u,u),hn()},dn.current))})(),()=>clearTimeout(U)},[v,y,u,ze,xf,hn]),R.useEffect(()=>{u.delete&&(hn(),u.onDismiss==null||u.onDismiss.call(u,u))},[hn,u.delete]);function gw(){var U;if(re!=null&&re.loading){var Me;return R.createElement("div",{className:Ft(B==null?void 0:B.loader,u==null||(Me=u.classNames)==null?void 0:Me.loader,"sonner-loader"),"data-visible":ze==="loading"},re.loading)}return R.createElement(ZR,{className:Ft(B==null?void 0:B.loader,u==null||(U=u.classNames)==null?void 0:U.loader),visible:ze==="loading"})}const yw=u.icon||(re==null?void 0:re[ze])||XR(ze);var wf,Sf;return R.createElement("li",{tabIndex:0,ref:kt,className:Ft(T,z,B==null?void 0:B.toast,u==null||(t=u.classNames)==null?void 0:t.toast,B==null?void 0:B.default,B==null?void 0:B[ze],u==null||(n=u.classNames)==null?void 0:n[ze]),"data-sonner-toast":"","data-rich-colors":(wf=u.richColors)!=null?wf:C,"data-styled":!(u.jsx||u.unstyled||f),"data-mounted":H,"data-promise":!!u.promise,"data-swiped":Qt,"data-removed":K,"data-visible":rl,"data-y-position":hw,"data-x-position":pw,"data-index":m,"data-front":nl,"data-swiping":Je,"data-dismissible":N,"data-type":ze,"data-invert":mw,"data-swipe-out":Xt,"data-swipe-direction":$,"data-expanded":!!(v||ge&&H),"data-testid":u.testId,style:{"--index":m,"--toasts-before":m,"--z-index":g.length-m,"--offset":`${K?gs:ye.current}px`,"--initial-height":ge?"auto":`${tl}px`,...k,...u.style},onDragEnd:()=>{J(!1),V(null),fn.current=null},onPointerDown:U=>{U.button!==2&&(sl||!N||(Lo.current=new Date,Xn(ye.current),U.target.setPointerCapture(U.pointerId),U.target.tagName!=="BUTTON"&&(J(!0),fn.current={x:U.clientX,y:U.clientY})))},onPointerUp:()=>{var U,Me,Be;if(Xt||!N)return;fn.current=null;const it=Number(((U=kt.current)==null?void 0:U.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),_o=Number(((Me=kt.current)==null?void 0:Me.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Le=new Date().getTime()-((Be=Lo.current)==null?void 0:Be.getTime()),pt=_==="x"?it:_o,Oo=Math.abs(pt)/Le;if(Math.abs(pt)>=mM||Oo>.11){Xn(ye.current),u.onDismiss==null||u.onDismiss.call(u,u),se(_==="x"?it>0?"right":"left":_o>0?"down":"up"),hn(),cn(!0);return}else{var bt,Ct;(bt=kt.current)==null||bt.style.setProperty("--swipe-amount-x","0px"),(Ct=kt.current)==null||Ct.style.setProperty("--swipe-amount-y","0px")}It(!1),J(!1),V(null)},onPointerMove:U=>{var Me,Be,it;if(!fn.current||!N||((Me=window.getSelection())==null?void 0:Me.toString().length)>0)return;const Le=U.clientY-fn.current.y,pt=U.clientX-fn.current.x;var Oo;const bt=(Oo=e.swipeDirections)!=null?Oo:yM(Z);!_&&(Math.abs(pt)>1||Math.abs(Le)>1)&&V(Math.abs(pt)>Math.abs(Le)?"x":"y");let Ct={x:0,y:0};const Ef=qn=>1/(1.5+Math.abs(qn)/20);if(_==="y"){if(bt.includes("top")||bt.includes("bottom"))if(bt.includes("top")&&Le<0||bt.includes("bottom")&&Le>0)Ct.y=Le;else{const qn=Le*Ef(Le);Ct.y=Math.abs(qn)<Math.abs(Le)?qn:Le}}else if(_==="x"&&(bt.includes("left")||bt.includes("right")))if(bt.includes("left")&&pt<0||bt.includes("right")&&pt>0)Ct.x=pt;else{const qn=pt*Ef(pt);Ct.x=Math.abs(qn)<Math.abs(pt)?qn:pt}(Math.abs(Ct.x)>0||Math.abs(Ct.y)>0)&&It(!0),(Be=kt.current)==null||Be.style.setProperty("--swipe-amount-x",`${Ct.x}px`),(it=kt.current)==null||it.style.setProperty("--swipe-amount-y",`${Ct.y}px`)}},ue&&!u.jsx&&ze!=="loading"?R.createElement("button",{"aria-label":j,"data-disabled":sl,"data-close-button":!0,onClick:sl||!N?()=>{}:()=>{hn(),u.onDismiss==null||u.onDismiss.call(u,u)},className:Ft(B==null?void 0:B.closeButton,u==null||(r=u.classNames)==null?void 0:r.closeButton)},(Sf=re==null?void 0:re.close)!=null?Sf:nM):null,(ze||u.icon||u.promise)&&u.icon!==null&&((re==null?void 0:re[ze])!==null||u.icon)?R.createElement("div",{"data-icon":"",className:Ft(B==null?void 0:B.icon,u==null||(s=u.classNames)==null?void 0:s.icon)},u.promise||u.type==="loading"&&!u.icon?u.icon||gw():null,u.type!=="loading"?yw:null):null,R.createElement("div",{"data-content":"",className:Ft(B==null?void 0:B.content,u==null||(o=u.classNames)==null?void 0:o.content)},R.createElement("div",{"data-title":"",className:Ft(B==null?void 0:B.title,u==null||(i=u.classNames)==null?void 0:i.title)},u.jsx?u.jsx:typeof u.title=="function"?u.title():u.title),u.description?R.createElement("div",{"data-description":"",className:Ft(A,Y,B==null?void 0:B.description,u==null||(a=u.classNames)==null?void 0:a.description)},typeof u.description=="function"?u.description():u.description):null),R.isValidElement(u.cancel)?u.cancel:u.cancel&&ci(u.cancel)?R.createElement("button",{"data-button":!0,"data-cancel":!0,style:u.cancelButtonStyle||b,onClick:U=>{ci(u.cancel)&&N&&(u.cancel.onClick==null||u.cancel.onClick.call(u.cancel,U),hn())},className:Ft(B==null?void 0:B.cancelButton,u==null||(l=u.classNames)==null?void 0:l.cancelButton)},u.cancel.label):null,R.isValidElement(u.action)?u.action:u.action&&ci(u.action)?R.createElement("button",{"data-button":!0,"data-action":!0,style:u.actionButtonStyle||D,onClick:U=>{ci(u.action)&&(u.action.onClick==null||u.action.onClick.call(u.action,U),!U.defaultPrevented&&hn())},className:Ft(B==null?void 0:B.actionButton,u==null||(c=u.classNames)==null?void 0:c.actionButton)},u.action.label):null)};function Rm(){if(typeof window>"u"||typeof document>"u")return"ltr";const e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function xM(e,t){const n={};return[e,t].forEach((r,s)=>{const o=s===1,i=o?"--mobile-offset":"--offset",a=o?fM:dM;function l(c){["top","right","bottom","left"].forEach(d=>{n[`${i}-${d}`]=typeof c=="number"?`${c}px`:c})}typeof r=="number"||typeof r=="string"?l(r):typeof r=="object"?["top","right","bottom","left"].forEach(c=>{r[c]===void 0?n[`${i}-${c}`]=a:n[`${i}-${c}`]=typeof r[c]=="number"?`${r[c]}px`:r[c]}):l(a)}),n}const wM=R.forwardRef(function(t,n){const{id:r,invert:s,position:o="bottom-right",hotkey:i=["altKey","KeyT"],expand:a,closeButton:l,className:c,offset:d,mobileOffset:u,theme:f="light",richColors:y,duration:w,style:x,visibleToasts:S=cM,toastOptions:m,dir:g=Rm(),gap:v=pM,icons:E,containerAriaLabel:C="Notifications"}=t,[P,k]=R.useState([]),b=R.useMemo(()=>r?P.filter(H=>H.toasterId===r):P.filter(H=>!H.toasterId),[P,r]),D=R.useMemo(()=>Array.from(new Set([o].concat(b.filter(H=>H.position).map(H=>H.position)))),[b,o]),[T,A]=R.useState([]),[L,Z]=R.useState(!1),[le,ge]=R.useState(!1),[B,re]=R.useState(f!=="system"?f:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),j=R.useRef(null),_=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),V=R.useRef(null),$=R.useRef(!1),se=R.useCallback(H=>{k(q=>{var K;return(K=q.find(pe=>pe.id===H.id))!=null&&K.delete||et.dismiss(H.id),q.filter(({id:pe})=>pe!==H.id)})},[]);return R.useEffect(()=>et.subscribe(H=>{if(H.dismiss){requestAnimationFrame(()=>{k(q=>q.map(K=>K.id===H.id?{...K,delete:!0}:K))});return}setTimeout(()=>{Hy.flushSync(()=>{k(q=>{const K=q.findIndex(pe=>pe.id===H.id);return K!==-1?[...q.slice(0,K),{...q[K],...H},...q.slice(K+1)]:[H,...q]})})})}),[P]),R.useEffect(()=>{if(f!=="system"){re(f);return}if(f==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?re("dark"):re("light")),typeof window>"u")return;const H=window.matchMedia("(prefers-color-scheme: dark)");try{H.addEventListener("change",({matches:q})=>{re(q?"dark":"light")})}catch{H.addListener(({matches:K})=>{try{re(K?"dark":"light")}catch(pe){console.error(pe)}})}},[f]),R.useEffect(()=>{P.length<=1&&Z(!1)},[P]),R.useEffect(()=>{const H=q=>{var K;if(i.every(J=>q[J]||q.code===J)){var Je;Z(!0),(Je=j.current)==null||Je.focus()}q.code==="Escape"&&(document.activeElement===j.current||(K=j.current)!=null&&K.contains(document.activeElement))&&Z(!1)};return document.addEventListener("keydown",H),()=>document.removeEventListener("keydown",H)},[i]),R.useEffect(()=>{if(j.current)return()=>{V.current&&(V.current.focus({preventScroll:!0}),V.current=null,$.current=!1)}},[j.current]),R.createElement("section",{ref:n,"aria-label":`${C} ${_}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},D.map((H,q)=>{var K;const[pe,Je]=H.split("-");return b.length?R.createElement("ol",{key:H,dir:g==="auto"?Rm():g,tabIndex:-1,ref:j,className:c,"data-sonner-toaster":!0,"data-sonner-theme":B,"data-y-position":pe,"data-x-position":Je,style:{"--front-toast-height":`${((K=T[0])==null?void 0:K.height)||0}px`,"--width":`${hM}px`,"--gap":`${v}px`,...x,...xM(d,u)},onBlur:J=>{$.current&&!J.currentTarget.contains(J.relatedTarget)&&($.current=!1,V.current&&(V.current.focus({preventScroll:!0}),V.current=null))},onFocus:J=>{J.target instanceof HTMLElement&&J.target.dataset.dismissible==="false"||$.current||($.current=!0,V.current=J.relatedTarget)},onMouseEnter:()=>Z(!0),onMouseMove:()=>Z(!0),onMouseLeave:()=>{le||Z(!1)},onDragEnd:()=>Z(!1),onPointerDown:J=>{J.target instanceof HTMLElement&&J.target.dataset.dismissible==="false"||ge(!0)},onPointerUp:()=>ge(!1)},b.filter(J=>!J.position&&q===0||J.position===H).map((J,Xt)=>{var cn,Qt;return R.createElement(vM,{key:J.id,icons:E,index:Xt,toast:J,defaultRichColors:y,duration:(cn=m==null?void 0:m.duration)!=null?cn:w,className:m==null?void 0:m.className,descriptionClassName:m==null?void 0:m.descriptionClassName,invert:s,visibleToasts:S,closeButton:(Qt=m==null?void 0:m.closeButton)!=null?Qt:l,interacting:le,position:H,style:m==null?void 0:m.style,unstyled:m==null?void 0:m.unstyled,classNames:m==null?void 0:m.classNames,cancelButtonStyle:m==null?void 0:m.cancelButtonStyle,actionButtonStyle:m==null?void 0:m.actionButtonStyle,closeButtonAriaLabel:m==null?void 0:m.closeButtonAriaLabel,removeToast:se,toasts:b.filter(It=>It.position==J.position),heights:T.filter(It=>It.position==J.position),setHeights:A,expandByDefault:a,gap:v,expanded:L,swipeDirections:t.swipeDirections})})):null}))}),uw=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}`,cw=5,dw=3e3;function qM(e,t){const n=p.useRef(null),r=p.useRef(0),s=p.useRef(!0),o=p.useRef(!1),i=p.useRef(t);i.current=t;const a=p.useRef(!1),l=p.useCallback(w=>{var x;((x=n.current)==null?void 0:x.readyState)===WebSocket.OPEN&&n.current.send(JSON.stringify(w))},[]),c=p.useCallback((w,x)=>{var S;((S=n.current)==null?void 0:S.readyState)===WebSocket.OPEN?(n.current.send(JSON.stringify({type:"terminal_subscribe",cols:w,rows:x})),a.current=!1):a.current=!0},[]),d=p.useCallback(w=>{l({type:"terminal_input",data:w})},[l]),u=p.useCallback((w,x)=>{l({type:"terminal_resize",cols:w,rows:x})},[l]),f=p.useCallback(()=>{l({type:"chat_subscribe"})},[l]),y=p.useCallback(()=>{if(!s.current||o.current)return;const w=Ao();if(!w){window.location.href="/login";return}o.current=!0;const x=new WebSocket(`${uw}/ws/projects/${e}`);n.current=x,x.onopen=()=>{o.current=!1,r.current=0,x.send(JSON.stringify({type:"auth",token:w}))},x.onmessage=S=>{var g,v,E,C,P,k,b,D;let m;try{m=JSON.parse(S.data)}catch{return}switch(m.type){case"connected":a.current=!1,(v=(g=i.current).onConnected)==null||v.call(g);break;case"terminal_data":(C=(E=i.current).onTerminalData)==null||C.call(E,m.data);break;case"status":(k=(P=i.current).onStatus)==null||k.call(P,m.status);break;case"chat_message":{const T=m;(D=(b=i.current).onChatMessage)==null||D.call(b,T);break}case"error":console.error("[WS] Server error:",m.message);break}},x.onclose=()=>{o.current=!1,n.current=null,s.current&&r.current<cw&&(r.current++,setTimeout(y,dw))},x.onerror=S=>{o.current=!1,console.error("[WS] WebSocket error:",S)}},[e]);return p.useEffect(()=>(s.current=!0,y(),()=>{var w;s.current=!1,(w=n.current)==null||w.close(),n.current=null}),[y]),{subscribeTerminal:c,sendTerminalInput:d,sendTerminalResize:u,subscribeChatMessages:f}}function SM(e){const t=p.useRef(null),n=p.useRef(0),r=p.useRef(!0),s=p.useRef(!1),o=p.useRef(e);o.current=e;const i=p.useCallback(()=>{if(!r.current||s.current)return;const a=Ao();if(!a)return;s.current=!0;const l=new WebSocket(`${uw}/ws/dashboard`);t.current=l,l.onopen=()=>{s.current=!1,n.current=0,l.send(JSON.stringify({type:"auth",token:a}))},l.onmessage=c=>{var d,u;try{const f=JSON.parse(c.data);f.type==="activity_update"?o.current.onActivityUpdate(f):f.type==="project_stopped"&&((u=(d=o.current).onProjectStopped)==null||u.call(d,f.projectId,f.projectName))}catch{}},l.onclose=()=>{s.current=!1,t.current=null,r.current&&n.current<cw&&(n.current++,setTimeout(i,dw))},l.onerror=c=>{s.current=!1,console.error("[DashboardWS] Error:",c)}},[]);p.useEffect(()=>(r.current=!0,i(),()=>{var a;r.current=!1,(a=t.current)==null||a.close(),t.current=null}),[i])}function EM(e){if(!e)return"";const t=new Date(e).getTime()-Date.now();if(t<=0)return"即将重置";const n=Math.floor(t/36e5),r=Math.floor(t%36e5/6e4);return n>0?`${n}h${r}m`:`${r}m`}const Mm=5*36e5;function kM(e){if(!e||e.utilization===void 0||e.utilization<=0||!e.resetAt)return null;const t=new Date(e.resetAt).getTime()-Date.now();if(t<=0)return null;const n=Mm-t;return n<=0?null:Math.round(e.utilization/(n/Mm))}function di({label:e,bucket:t}){if(!t||t.utilization===void 0)return null;const n=t.utilization,r=n<50?"text-green-400":n<80?"text-yellow-400":"text-red-400",s=EM(t.resetAt);return h.jsxs("span",{className:"text-muted-foreground whitespace-nowrap",children:[e," ",h.jsxs("span",{className:Q("font-medium",r),children:[n,"%"]}),s&&h.jsxs("span",{className:"text-muted-foreground/70 ml-0.5",children:["(",s,")"]})]})}function bM({className:e}){const[t,n]=p.useState("loading"),[r,s]=p.useState(!1);p.useEffect(()=>{const f=async()=>{try{n(await xx())}catch{n(null)}};f();const y=setInterval(()=>void f(),5*60*1e3);return()=>clearInterval(y)},[]);const o=async()=>{s(!0);try{n(await wx())}catch{n(null)}finally{s(!1)}};if(t==="loading"||!t)return null;const i=!!t.fiveHour,a=!!t.sevenDay,l=!!t.sevenDaySonnet,c=!!t.sevenDayOpus,d=i||a||l||c,u=kM(t.fiveHour);return h.jsxs("div",{className:Q("flex items-center gap-1.5 text-xs",e),children:[u!==null&&h.jsxs("span",{className:Q("font-medium",u<=100?"text-green-400":"text-orange-400"),title:`5h 使用进度:按当前速率,窗口结束时预计使用 ${u}%`,children:[u,"%"]}),t.planName&&h.jsx("span",{className:"font-medium text-foreground bg-muted border border-border px-2 py-0.5 rounded-full",children:t.planName}),d&&h.jsxs(h.Fragment,{children:[h.jsx("span",{className:"text-muted-foreground/50",children:"|"}),h.jsx(di,{label:"5h",bucket:t.fiveHour}),a&&h.jsxs(h.Fragment,{children:[h.jsx("span",{className:"text-muted-foreground/50",children:"·"}),h.jsx(di,{label:"7d",bucket:t.sevenDay})]}),l&&h.jsxs(h.Fragment,{children:[h.jsx("span",{className:"text-muted-foreground/50",children:"·"}),h.jsx(di,{label:"7d Sonnet",bucket:t.sevenDaySonnet})]}),c&&h.jsxs(h.Fragment,{children:[h.jsx("span",{className:"text-muted-foreground/50",children:"·"}),h.jsx(di,{label:"7d Opus",bucket:t.sevenDayOpus})]})]}),h.jsx("button",{onClick:()=>void o(),className:"text-muted-foreground hover:text-foreground transition-colors",title:"刷新用量信息",children:h.jsx(GN,{className:Q("h-3 w-3",r&&"animate-spin")})})]})}function CM(){const[e,t]=p.useState([]),[n,r]=p.useState(!1),[s,o]=p.useState(""),[i,a]=p.useState(""),[l,c]=p.useState(""),[d,u]=p.useState(null),[f,y]=p.useState(""),[w,x]=p.useState(""),[S,m]=p.useState(""),g=p.useRef(null),v=p.useRef(null);p.useEffect(()=>{mx().then(t).catch(()=>t([]))},[]),p.useEffect(()=>{n&&setTimeout(()=>{var k;return(k=g.current)==null?void 0:k.focus()},0)},[n]),p.useEffect(()=>{d&&setTimeout(()=>{var k;return(k=v.current)==null?void 0:k.focus()},0)},[d]);const E=async()=>{const k=i.trim();if(k)try{const b=await gx({label:s.trim()||k,command:k,...l?{parentId:l}:{}});t(D=>[...D,b]),o(""),a(""),c(""),r(!1)}catch(b){console.error("[GlobalShortcuts] Failed to add:",b)}},C=async k=>{try{await vx(k),t(b=>b.filter(D=>D.id!==k)),d===k&&u(null)}catch(b){console.error("[GlobalShortcuts] Failed to delete:",b)}},P=async()=>{const k=w.trim();if(!(!k||!d))try{const b=await yx(d,{label:f.trim()||k,command:k,parentId:S||null});t(D=>D.map(T=>T.id===d?b:T)),u(null)}catch(b){console.error("[GlobalShortcuts] Failed to save:",b)}};return h.jsxs("section",{className:"mt-10",children:[h.jsxs("div",{className:"flex items-center justify-between mb-4",children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(pm,{className:"h-4 w-4 text-muted-foreground"}),h.jsx("h2",{className:"text-lg font-semibold",children:"全局快捷命令"}),h.jsx("span",{className:"text-xs text-muted-foreground",children:"在所有项目的终端中可用"})]}),h.jsxs("button",{onClick:()=>{r(k=>!k),u(null)},className:Q("flex items-center gap-1.5 text-sm px-3 py-1.5 rounded-md border transition-colors",n?"border-border text-foreground bg-muted":"border-border text-muted-foreground hover:text-foreground hover:bg-muted"),children:[h.jsx(ga,{className:"h-3.5 w-3.5"}),"新建"]})]}),n&&h.jsxs("div",{className:"mb-4 p-4 rounded-lg border border-border bg-background space-y-3",children:[h.jsx("input",{ref:g,placeholder:"名称(可选)",value:s,onChange:k=>o(k.target.value),className:"w-full text-sm bg-muted border border-border rounded px-3 py-1.5 text-foreground placeholder:text-muted-foreground outline-none focus:border-border transition-colors"}),h.jsx("textarea",{placeholder:"命令内容…",value:i,onChange:k=>a(k.target.value),rows:3,className:"w-full text-sm bg-muted border border-border rounded px-3 py-1.5 text-foreground placeholder:text-muted-foreground font-mono outline-none focus:border-border transition-colors resize-none",onKeyDown:k=>{k.key==="Enter"&&(k.metaKey||k.ctrlKey)&&(k.preventDefault(),E()),k.key==="Escape"&&(r(!1),o(""),a(""),c(""))}}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(Zl,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),h.jsxs("select",{value:l,onChange:k=>c(k.target.value),className:"flex-1 text-sm bg-muted border border-border rounded px-3 py-1.5 text-foreground outline-none focus:border-border transition-colors",children:[h.jsx("option",{value:"",children:"无继承"}),e.map(k=>h.jsx("option",{value:k.id,children:k.label},k.id))]})]}),h.jsxs("div",{className:"flex items-center justify-between",children:[h.jsx("span",{className:"text-xs text-muted-foreground",children:"⌘↩ 保存 · Esc 取消"}),h.jsxs("div",{className:"flex gap-2",children:[h.jsx("button",{onClick:()=>{r(!1),o(""),a("")},className:"text-sm px-3 py-1 rounded bg-secondary hover:bg-accent text-foreground transition-colors",children:"取消"}),h.jsx("button",{onClick:()=>void E(),disabled:!i.trim(),className:Q("text-sm px-3 py-1 rounded transition-colors text-white",i.trim()?"bg-blue-600 hover:bg-blue-500":"bg-secondary opacity-40 cursor-not-allowed"),children:"保存"})]})]})]}),e.length===0&&!n?h.jsxs("div",{className:"flex flex-col items-center gap-2 py-10 text-muted-foreground/50 border border-dashed border-border rounded-lg",children:[h.jsx(pm,{className:"h-6 w-6"}),h.jsx("p",{className:"text-sm",children:"还没有全局快捷命令"})]}):h.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3",children:e.map(k=>d===k.id?h.jsxs("div",{className:"rounded-lg border border-border bg-background p-3 space-y-2",children:[h.jsx("input",{ref:v,value:f,onChange:b=>y(b.target.value),placeholder:"名称(可选)",className:"w-full text-sm bg-muted border border-border rounded px-2.5 py-1 text-foreground placeholder:text-muted-foreground outline-none focus:border-border transition-colors"}),h.jsx("textarea",{value:w,onChange:b=>x(b.target.value),rows:3,className:"w-full text-sm bg-muted border border-border rounded px-2.5 py-1 text-foreground font-mono outline-none focus:border-border transition-colors resize-none",onKeyDown:b=>{b.key==="Enter"&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),P()),b.key==="Escape"&&u(null)}}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(Zl,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),h.jsxs("select",{value:S,onChange:b=>m(b.target.value),className:"flex-1 text-sm bg-muted border border-border rounded px-2.5 py-1 text-foreground outline-none focus:border-border transition-colors",children:[h.jsx("option",{value:"",children:"无继承"}),e.filter(b=>b.id!==k.id).map(b=>h.jsx("option",{value:b.id,children:b.label},b.id))]})]}),h.jsxs("div",{className:"flex gap-2 justify-end",children:[h.jsx("button",{onClick:()=>u(null),className:"text-xs px-2.5 py-1 rounded bg-secondary hover:bg-accent text-foreground transition-colors",children:"取消"}),h.jsx("button",{onClick:()=>void P(),disabled:!w.trim(),className:Q("text-xs px-2.5 py-1 rounded transition-colors text-white",w.trim()?"bg-blue-600 hover:bg-blue-500":"bg-secondary opacity-40 cursor-not-allowed"),children:"保存"})]})]},k.id):h.jsxs("div",{className:"group relative rounded-lg border border-border bg-background hover:border-muted-foreground/30 transition-colors p-3",children:[h.jsx("div",{className:"text-sm font-medium text-foreground truncate pr-14",children:k.label}),k.parentId&&(()=>{const b=e.find(D=>D.id===k.parentId);return b?h.jsxs("div",{className:"flex items-center gap-1 mt-1",children:[h.jsx(Zl,{className:"h-3 w-3 text-muted-foreground"}),h.jsxs("span",{className:"text-xs text-muted-foreground truncate",children:["继承: ",b.label]})]}):null})(),!k.parentId&&k.label!==k.command&&h.jsx("div",{className:"text-xs text-muted-foreground font-mono truncate mt-1 pr-14",children:k.command}),h.jsxs("div",{className:"absolute top-2.5 right-2.5 flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[h.jsx("button",{onClick:()=>{u(k.id),y(k.label),x(k.command),m(k.parentId||""),r(!1)},className:"p-1 rounded text-muted-foreground hover:text-blue-400 transition-colors",title:"编辑",children:h.jsx(Cx,{className:"h-3.5 w-3.5"})}),h.jsx("button",{onClick:()=>void C(k.id),className:"p-1 rounded text-muted-foreground hover:text-red-400 transition-colors",title:"删除",children:h.jsx(ff,{className:"h-3.5 w-3.5"})})]})]},k.id))})]})}const fw=p.createContext({theme:"system",resolved:"dark",setTheme:()=>{}});function PM(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function TM(){return p.useSyncExternalStore(e=>{const t=window.matchMedia("(prefers-color-scheme: dark)");return t.addEventListener("change",e),()=>t.removeEventListener("change",e)},()=>PM())}function NM({children:e}){const[t,n]=p.useState(()=>sx(pr.theme,"system")),r=TM(),s=t==="system"?r:t;p.useEffect(()=>{const i=document.documentElement;i.classList.remove("light","dark"),i.classList.add(s)},[s]);const o=i=>{n(i),ox(pr.theme,i)};return h.jsx(fw.Provider,{value:{theme:t,resolved:s,setTheme:o},children:e})}function jM(){return p.useContext(fw)}function RM(){const{theme:e,setTheme:t}=jM(),n=[{value:"light",icon:QN,label:"浅色"},{value:"dark",icon:HN,label:"深色"},{value:"system",icon:WN,label:"系统"}];return h.jsx("div",{className:"flex items-center rounded-md border border-border bg-muted/50 p-0.5",children:n.map(({value:r,icon:s,label:o})=>h.jsx("button",{onClick:()=>t(r),className:Q("p-1 rounded-sm transition-colors",e===r?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),title:o,children:h.jsx(s,{className:"h-3.5 w-3.5"})},r))})}const MM={workMinutes:30,breakMinutes:5};function va(){return sx(pr.pomodoroConfig,MM,!0)}function DM(e){Notification.permission==="granted"&&new Notification("番茄钟",{body:e,icon:"/favicon.ico"})}const yf=Ha(e=>({running:!1,phase:"work",secondsLeft:va().workMinutes*60,setRunning:t=>e({running:t}),setPhase:t=>e({phase:t}),setSecondsLeft:t=>e({secondsLeft:t})}));function AM(){const{running:e,phase:t,secondsLeft:n,setPhase:r,setSecondsLeft:s}=yf(),o=p.useCallback(i=>{const a=va();r(i),s(i==="work"?a.workMinutes*60:a.breakMinutes*60),DM(i==="break"?"休息一下 ☕":"该工作了 💻")},[r,s]);return p.useEffect(()=>{if(!e)return;if(n===0){o(t==="work"?"break":"work");return}const i=setTimeout(()=>s(n-1),1e3);return()=>clearTimeout(i)},[e,n,t,o,s]),null}function LM(){const{running:e,phase:t,secondsLeft:n}=yf(),r=Math.floor(n/60),s=n%60,o=`${String(r).padStart(2,"0")}:${String(s).padStart(2,"0")}`;return e?Oa.createPortal(h.jsxs("div",{className:"fixed inset-0 flex flex-col items-center justify-center pointer-events-none z-40 select-none",style:{opacity:t==="work"?.1:.6},children:[h.jsx("div",{className:Q("font-mono font-bold tabular-nums leading-none",t==="work"?"text-foreground":"text-blue-400 dark:text-blue-300"),style:{fontSize:"clamp(72px, 18vw, 220px)"},children:o}),h.jsx("div",{className:"mt-3 text-muted-foreground font-medium tracking-widest uppercase",style:{fontSize:"clamp(12px, 1.5vw, 20px)"},children:t==="work"?"专注工作":"休息一下"})]}),document.body):null}function _M(){const{running:e,phase:t,secondsLeft:n,setRunning:r,setPhase:s,setSecondsLeft:o}=yf(),i=Math.floor(n/60),a=n%60,l=`${String(i).padStart(2,"0")}:${String(a).padStart(2,"0")}`,c=()=>{if(e){const d=va();s("work"),o(d.workMinutes*60)}else{const d=va();s("work"),o(d.workMinutes*60),Notification.permission==="default"&&Notification.requestPermission()}r(!e)};return h.jsx("button",{onClick:c,className:Q("p-1 rounded transition-colors",e?t==="work"?"text-red-500 bg-red-500/10 hover:bg-red-500/20":"text-green-500 bg-green-500/10 hover:bg-green-500/20":"text-muted-foreground hover:text-foreground hover:bg-muted"),title:e?t==="work"?`工作中 ${l} — 点击停止`:`休息中 ${l} — 点击停止`:"启动番茄钟",children:h.jsx(ZN,{className:"h-4 w-4"})})}function OM(){const e=Va(),{projects:t,loading:n,error:r,fetchProjects:s,addProject:o,updateProject:i,removeProject:a}=dm(),l=wr(N=>N.clearToken),[c,d]=p.useState(!1),[u,f]=p.useState(!1),[y,w]=p.useState(new Set),x=p.useRef(new Map),[S,m]=p.useState(new Map),g=p.useRef(0),[v,E]=p.useState(!!document.fullscreenElement),[C,P]=p.useState(!1),[k,b]=p.useState(""),[D,T]=p.useState([]),[A,L]=p.useState(!1);p.useEffect(()=>{if(!k.trim()||k.trim().length<2){T([]);return}const N=setTimeout(()=>{L(!0),kx(k).then(z=>T(z)).catch(()=>T([])).finally(()=>L(!1))},400);return()=>clearTimeout(N)},[k]);const Z=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()};p.useEffect(()=>{const N=()=>E(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",N),()=>document.removeEventListener("fullscreenchange",N)},[]),p.useEffect(()=>{s()},[s]),p.useEffect(()=>{"Notification"in window&&Notification.permission==="default"&&Notification.requestPermission()},[]);const le=2e3,ge=3,B=8e3,re=p.useCallback(N=>{if(N.status){const te=dm.getState().projects.find(ue=>ue.id===N.projectId);te&&te.status!==N.status&&i({...te,status:N.status})}const z=Date.now(),Y=x.current;if(z-N.lastActivityAt<le){w(ye=>ye.has(N.projectId)?ye:new Set(ye).add(N.projectId));const te=Y.get(N.projectId)??[];let ue=!1;if(N.semantic){const ye=te[te.length-1],Zn=`${N.semantic.phase}:${N.semantic.detail??""}`,fn=ye?`${ye.phase}:${ye.detail??""}`:"";Zn!==fn?(te.push({id:g.current++,phase:N.semantic.phase,detail:N.semantic.detail,ts:z}),ue=!0):ye&&(ye.ts=z)}const Te=te.filter(ye=>z-ye.ts<B),Ge=Te.length>ge?Te.slice(-ge):Te;Ge.length!==te.length&&(ue=!0),Y.set(N.projectId,Ge),ue&&m(new Map(Y))}else w(te=>{if(!te.has(N.projectId))return te;const ue=new Set(te);return ue.delete(N.projectId),ue}),Y.has(N.projectId)&&Y.get(N.projectId).length>0&&(Y.set(N.projectId,[]),m(new Map(Y)))},[]),j=p.useCallback((N,z)=>{"Notification"in window&&Notification.permission==="granted"?new Notification("Claude 已完成",{body:`项目「${z}」的任务已完成`,icon:"/terminal.svg"}):Ls.success(`项目「${z}」的任务已完成`,{duration:8e3})},[]);SM({onActivityUpdate:re,onProjectStopped:j}),p.useEffect(()=>{const N=setInterval(()=>{const z=Date.now(),Y=x.current;let te=!1;for(const[ue,Te]of Y){const Ge=Te.filter(ye=>z-ye.ts<B);Ge.length!==Te.length&&(Y.set(ue,Ge),te=!0)}te&&m(new Map(Y)),w(ue=>{let Te=!1;const Ge=new Set(ue);for(const ye of ue){const Zn=Y.get(ye);(!Zn||Zn.length===0)&&(Ge.delete(ye),Te=!0)}return Te?Ge:ue})},3e3);return()=>clearInterval(N)},[]);const _=()=>{l(),e("/login")},V=N=>{o(N)},$=N=>{o(N)},se=async N=>{try{await fx(N),a(N)}catch(z){Ls.error(z instanceof Error?z.message:"Failed to delete project")}},H=async N=>{try{const z=await hx(N);i(z)}catch(z){Ls.error(z instanceof Error?z.message:"Failed to archive project")}},q=async N=>{try{const z=await px(N);i(z)}catch(z){Ls.error(z instanceof Error?z.message:"Failed to restore project")}},K=p.useMemo(()=>t.filter(N=>!N.archived),[t]),pe=p.useMemo(()=>t.filter(N=>N.archived),[t]),Je=p.useMemo(()=>Array.from(new Set(t.flatMap(N=>N.tags??[]))),[t]),[J,Xt]=p.useState([]),cn=p.useMemo(()=>J.length===0?K:K.filter(N=>J.some(z=>{var Y;return(Y=N.tags)==null?void 0:Y.includes(z)})),[K,J]),[Qt,It]=_T(pr.projectOrder,[],{parse:!0}),[gs,Xn]=p.useState(null),[tl,Qn]=p.useState(null);p.useEffect(()=>{if(K.length===0)return;const N=K.map(z=>z.id);It(z=>{const Y=z.filter(Te=>N.includes(Te)),te=N.filter(Te=>!z.includes(Te)),ue=[...Y,...te];return ue.join(",")===z.join(",")?z:ue})},[K]);const dn=p.useMemo(()=>Qt.length===0?cn:[...cn].sort((N,z)=>{const Y=Qt.indexOf(N.id),te=Qt.indexOf(z.id);return Y===-1?1:te===-1?-1:Y-te}),[cn,Qt]),Lo=p.useCallback(N=>Xn(N),[]),kt=p.useCallback(()=>{Xn(null),Qn(null)},[]),nl=p.useCallback((N,z)=>{N.preventDefault(),Qn(z)},[]),rl=p.useCallback((N,z,Y)=>{if(N.preventDefault(),!Y||Y===z){Qn(null);return}It(te=>{const ue=[...te],Te=ue.indexOf(Y),Ge=ue.indexOf(z);return Te===-1||Ge===-1?te:(ue.splice(Te,1),ue.splice(Ge,0,Y),ue)}),Xn(null),Qn(null)},[It]),ze={onDelete:N=>void se(N),onArchive:N=>void H(N),onUnarchive:N=>void q(N),onUpdated:i};return h.jsxs("div",{className:"min-h-screen bg-background",children:[h.jsx("header",{className:"border-b sticky top-0 bg-background z-10",children:h.jsxs("div",{className:"max-w-6xl mx-auto px-4 h-14 flex items-center justify-between",children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(hm,{className:"h-5 w-5"}),h.jsx("span",{className:"font-semibold text-lg",children:"CC Web"})]}),h.jsx(bM,{}),h.jsxs("div",{className:"relative",children:[h.jsx(KN,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground pointer-events-none"}),h.jsx(vo,{placeholder:"搜索历史对话…",value:k,onChange:N=>b(N.target.value),className:"pl-8 h-8 text-xs w-48"}),k.trim().length>=2&&h.jsxs("div",{className:"absolute top-full mt-1 right-0 w-96 max-h-80 overflow-y-auto bg-popover border border-border rounded-lg shadow-xl z-50",children:[A&&h.jsx("div",{className:"px-4 py-3 text-xs text-muted-foreground",children:"搜索中…"}),!A&&D.length===0&&h.jsx("div",{className:"px-4 py-3 text-xs text-muted-foreground",children:"无结果"}),D.map((N,z)=>h.jsxs("button",{className:"w-full text-left px-4 py-2.5 hover:bg-muted transition-colors border-b border-border last:border-0",onClick:()=>{e(`/project/${N.projectId}`),b("")},children:[h.jsxs("div",{className:"flex items-center gap-2 mb-0.5",children:[h.jsx("span",{className:"text-xs font-medium text-foreground truncate",children:N.projectName}),h.jsx("span",{className:"text-[10px] text-muted-foreground flex-shrink-0",children:new Date(N.startedAt).toLocaleDateString("zh-CN")})]}),h.jsx("p",{className:"text-[11px] text-muted-foreground leading-relaxed line-clamp-2",children:N.snippet})]},z))]})]}),h.jsx(ie,{variant:"ghost",size:"sm",onClick:()=>e("/skillhub"),title:"SkillHub",children:h.jsx(XN,{className:"h-4 w-4"})}),h.jsx(ie,{variant:"ghost",size:"sm",onClick:()=>e("/settings"),title:"设置",children:h.jsx(YN,{className:"h-4 w-4"})}),h.jsx(ie,{variant:"ghost",size:"sm",onClick:Z,title:v?"Exit fullscreen":"Fullscreen",children:v?h.jsx(UN,{className:"h-4 w-4"}):h.jsx($N,{className:"h-4 w-4"})}),h.jsx(_M,{}),h.jsx(RM,{}),h.jsxs(ie,{variant:"ghost",size:"sm",onClick:_,children:[h.jsx(BN,{className:"h-4 w-4 mr-2"}),"Logout"]})]})}),h.jsxs("main",{className:"max-w-6xl mx-auto px-4 py-8",children:[h.jsxs("div",{className:"flex items-center justify-between mb-6",children:[h.jsxs("div",{children:[h.jsx("h1",{className:"text-2xl font-bold",children:"Projects"}),h.jsx("p",{className:"text-muted-foreground text-sm mt-1",children:"Each project runs Claude CLI in a dedicated terminal session."})]}),h.jsxs("div",{className:"flex gap-2",children:[h.jsxs(ie,{variant:"outline",onClick:()=>f(!0),children:[h.jsx(Pc,{className:"h-4 w-4 mr-2"}),"Open Project"]}),h.jsxs(ie,{onClick:()=>d(!0),children:[h.jsx(ga,{className:"h-4 w-4 mr-2"}),"New Project"]})]})]}),n&&h.jsx("div",{className:"text-center text-muted-foreground py-12",children:"Loading projects..."}),r&&h.jsx("div",{className:"text-center text-destructive py-12",children:r}),!n&&!r&&t.length===0&&h.jsxs("div",{className:"text-center py-20",children:[h.jsx(hm,{className:"h-12 w-12 text-muted-foreground mx-auto mb-4"}),h.jsx("h2",{className:"text-lg font-semibold mb-2",children:"No projects yet"}),h.jsx("p",{className:"text-muted-foreground text-sm mb-6",children:"Create a new project or open an existing one."}),h.jsxs("div",{className:"flex gap-2 justify-center",children:[h.jsxs(ie,{variant:"outline",onClick:()=>f(!0),children:[h.jsx(Pc,{className:"h-4 w-4 mr-2"}),"Open Project"]}),h.jsxs(ie,{onClick:()=>d(!0),children:[h.jsx(ga,{className:"h-4 w-4 mr-2"}),"New Project"]})]})]}),!n&&!r&&Je.length>0&&h.jsxs("div",{className:"flex flex-wrap gap-1.5 mb-4",children:[Je.map(N=>h.jsxs("button",{onClick:()=>Xt(z=>z.includes(N)?z.filter(Y=>Y!==N):[...z,N]),className:Q("px-2 py-0.5 rounded-full text-xs border transition-colors",J.includes(N)?"bg-blue-500/20 text-blue-400 border-blue-500/40":"bg-muted text-muted-foreground border-border hover:border-muted-foreground/40"),children:["#",N]},N)),J.length>0&&h.jsx("button",{onClick:()=>Xt([]),className:"px-2 py-0.5 rounded-full text-xs text-muted-foreground hover:text-foreground transition-colors",children:"清除"})]}),!n&&!r&&dn.length>0&&h.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:dn.map((N,z)=>h.jsx(Vn.div,{initial:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.3,delay:z*.05,ease:"easeOut"},draggable:!0,onDragStart:()=>Lo(N.id),onDragOver:Y=>nl(Y,N.id),onDrop:Y=>rl(Y,N.id,gs),onDragEnd:kt,style:{opacity:gs===N.id?.4:1,cursor:"grab"},className:Q(tl===N.id&&gs!==N.id&&"ring-2 ring-blue-500/50 rounded-xl"),children:h.jsx(Tm,{project:N,active:y.has(N.id),statusStack:S.get(N.id)??[],...ze})},N.id))}),!n&&!r&&pe.length>0&&h.jsxs("div",{className:"mt-10",children:[h.jsxs("button",{className:"flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors mb-4 group",onClick:()=>P(N=>!N),children:[h.jsx(Vn.span,{animate:{rotate:C?90:0},transition:{duration:.2},children:h.jsx(bx,{className:"h-4 w-4"})}),h.jsx("span",{className:"font-medium",children:"Archived"}),h.jsx("span",{className:"text-xs bg-muted rounded-full px-2 py-0.5",children:pe.length})]}),h.jsx(tf,{children:C&&h.jsx(Vn.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.25,ease:"easeInOut"},className:"overflow-hidden",children:h.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:pe.map(N=>h.jsx(Tm,{project:N,active:!1,...ze},N.id))})})})]}),h.jsx(CM,{})]}),h.jsx(GR,{open:c,onOpenChange:d,onCreated:V}),h.jsx(KR,{open:u,onOpenChange:f,onOpened:$})]})}class IM extends R.Component{constructor(){super(...arguments);ol(this,"state",{hasError:!1,error:null});ol(this,"handleReset",()=>{var n,r;this.setState({hasError:!1,error:null}),(r=(n=this.props).onReset)==null||r.call(n)})}static getDerivedStateFromError(n){return{hasError:!0,error:n}}componentDidCatch(n,r){console.error("[ErrorBoundary]",n,r.componentStack),Ls.error(n.message||"Something went wrong")}render(){return this.state.hasError?this.props.fallback?this.props.fallback:h.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-3 p-4 text-sm text-muted-foreground",children:[h.jsx("p",{children:"出错了"}),h.jsx("button",{onClick:this.handleReset,className:"px-3 py-1.5 text-xs rounded-md border border-border hover:bg-muted transition-colors",children:"重新加载"})]}):this.props.children}}const VM=R.lazy(()=>Po(()=>import("./ProjectPage-CeHXpRBP.js").then(e=>e.P),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.ProjectPage}))),FM=R.lazy(()=>Po(()=>import("./SettingsPage-beAswfts.js"),__vite__mapDeps([7,3,1])).then(e=>({default:e.SettingsPage}))),zM=R.lazy(()=>Po(()=>import("./SkillHubPage-BKMSJ6FQ.js"),__vite__mapDeps([8,5,2,3])).then(e=>({default:e.SkillHubPage}))),BM=R.lazy(()=>Po(()=>import("./ShareViewPage-C_SAUX_-.js"),__vite__mapDeps([9,5,4])).then(e=>({default:e.ShareViewPage})));function $M(){return h.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background",children:h.jsx("span",{className:"text-muted-foreground text-sm",children:"Loading…"})})}function fi({children:e}){const[t,n]=p.useState(!1),r=wr(o=>o.token),s=wr(o=>o.setToken);return p.useEffect(()=>{if(r){n(!0);return}ma()?df().then(o=>s(o)).catch(()=>{}).finally(()=>n(!0)):n(!0)},[]),!t&&!r?null:r?h.jsx(h.Fragment,{children:e}):h.jsx(sv,{to:"/login",replace:!0})}function UM(){return h.jsxs(NM,{children:[h.jsx(wM,{richColors:!0,position:"bottom-right"}),h.jsx(AM,{}),h.jsx(LM,{}),h.jsx(IM,{children:h.jsx(BE,{children:h.jsx(p.Suspense,{fallback:h.jsx($M,{}),children:h.jsxs(VE,{children:[h.jsx(yn,{path:"/login",element:h.jsx(RN,{})}),h.jsx(yn,{path:"/",element:h.jsx(fi,{children:h.jsx(OM,{})})}),h.jsx(yn,{path:"/projects/:id",element:h.jsx(fi,{children:h.jsx(VM,{})})}),h.jsx(yn,{path:"/settings",element:h.jsx(fi,{children:h.jsx(FM,{})})}),h.jsx(yn,{path:"/skillhub",element:h.jsx(fi,{children:h.jsx(zM,{})})}),h.jsx(yn,{path:"/share/:token",element:h.jsx(BM,{})}),h.jsx(yn,{path:"*",element:h.jsx(sv,{to:"/",replace:!0})})]})})})})]})}iu.createRoot(document.getElementById("root")).render(h.jsx(R.StrictMode,{children:h.jsx(UM,{})}));export{JT as $,tf as A,ie as B,bx as C,kN as D,IN as E,Pc as F,YT as G,mx as H,vo as I,Zl as J,ZT as K,gf as L,UN as M,Qa as N,Za as O,Cx as P,Ja as Q,R,pr as S,el as T,jn as U,qa as V,QT as W,ff as X,XT as Y,pm as Z,Po as _,GM as a,CN as a0,HT as a1,GT as a2,PN as a3,Va as a4,_N as a5,rr as a6,_M as a7,RM as a8,fN as a9,Rx as aA,Nx as aB,aN as aC,uN as aD,dN as aE,of as aF,af as aG,lf as aH,uf as aI,Px as aJ,va as aK,vN as aL,ZN as aM,lN as aN,hN as aO,mN as aP,yN as aQ,cN as aR,gN as aS,pN as aT,xN as aU,qT as aV,eN as aW,TN as aX,KM as aY,WT as aa,KN as ab,NN as ac,LT as ad,XN as ae,qM as af,bM as ag,YM as ah,_T as ai,dm as aj,hm as ak,xo as al,br as am,oj as an,un as ao,Fn as ap,ej as aq,Wa as ar,ql as as,wo as at,Ka as au,Oa as av,Dx as aw,SR as ax,_j as ay,zx as az,Ao as b,ee as c,rN as d,Q as e,$N as f,Dm as g,tN as h,sx as i,h as j,QM as k,Sx as l,GN as m,nN as n,fm as o,Vn as p,wN as q,p as r,ox as s,Ls as t,jM as u,ON as v,sN as w,ga as x,SN as y,EN as z};
|
|
280
|
+
For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return p.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},IR="DialogDescriptionWarning",VR=({contentRef:e,descriptionId:t})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${nw(IR).contentName}}.`;return p.useEffect(()=>{var o;const s=(o=e.current)==null?void 0:o.getAttribute("aria-describedby");t&&s&&(document.getElementById(t)||console.warn(r))},[r,e,t]),null},FR=Ux,zR=Gx,rw=Kx,sw=Yx,ow=Qx,iw=qx,BR=ew;const gf=FR,$R=zR,aw=p.forwardRef(({className:e,...t},n)=>h.jsx(rw,{ref:n,className:Q("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));aw.displayName=rw.displayName;const Qa=p.forwardRef(({className:e,children:t,noOverlay:n,...r},s)=>h.jsxs($R,{children:[!n&&h.jsx(aw,{}),h.jsxs(sw,{ref:s,className:Q("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...r,children:[t,h.jsxs(BR,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[h.jsx(ff,{className:"h-4 w-4"}),h.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Qa.displayName=sw.displayName;const Za=({className:e,...t})=>h.jsx("div",{className:Q("flex flex-col space-y-1.5 text-center sm:text-left",e),...t});Za.displayName="DialogHeader";const qa=({className:e,...t})=>h.jsx("div",{className:Q("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t});qa.displayName="DialogFooter";const Ja=p.forwardRef(({className:e,...t},n)=>h.jsx(ow,{ref:n,className:Q("text-lg font-semibold leading-none tracking-tight",e),...t}));Ja.displayName=ow.displayName;const el=p.forwardRef(({className:e,...t},n)=>h.jsx(iw,{ref:n,className:Q("text-sm text-muted-foreground",e),...t}));el.displayName=iw.displayName;function UR({project:e,open:t,onOpenChange:n,onUpdated:r}){const[s,o]=p.useState([]),[i,a]=p.useState([]),[l,c]=p.useState(!1),[d,u]=p.useState(null);p.useEffect(()=>{if(!t)return;o(e.shares?[...e.shares]:[]),u(null);let g=!1;return lx().then(v=>{g||a(v)}).catch(()=>{}),()=>{g=!0}},[t,e.id]);const f=new Set(s.map(g=>g.username)),y=i.filter(g=>g!==e.owner&&!f.has(g)),w=g=>{o(v=>[...v,{username:g,permission:"view"}])},x=g=>{o(v=>v.filter(E=>E.username!==g))},S=g=>{o(v=>v.map(E=>E.username===g?{...E,permission:E.permission==="view"?"edit":"view"}:E))},m=async()=>{c(!0),u(null);try{const g=await ux(e.id,s);r(g),n(!1)}catch(g){u(g instanceof Error?g.message:"Failed to update shares")}finally{c(!1)}};return h.jsx(gf,{open:t,onOpenChange:n,children:h.jsxs(Qa,{className:"sm:max-w-md",children:[h.jsxs(Za,{children:[h.jsxs(Ja,{className:"flex items-center gap-2",children:[h.jsx(Tc,{className:"h-4 w-4"}),"共享设置"]}),h.jsx(el,{children:"选择用户并设置权限:可见(只读)或可编辑(读写+终端)"})]}),h.jsxs("div",{className:"space-y-3 max-h-64 overflow-y-auto",children:[s.length===0&&h.jsx("p",{className:"text-sm text-muted-foreground text-center py-4",children:"尚未共享给任何用户"}),s.map(g=>h.jsxs("div",{className:"flex items-center justify-between gap-2 px-1",children:[h.jsx("span",{className:"text-sm font-medium",children:g.username}),h.jsxs("div",{className:"flex items-center gap-1.5",children:[h.jsx("button",{onClick:()=>S(g.username),className:"focus:outline-none",children:h.jsx(rr,{variant:g.permission==="edit"?"default":"secondary",className:"cursor-pointer text-xs",children:g.permission==="edit"?"可编辑":"可见"})}),h.jsx(ie,{variant:"ghost",size:"icon",className:"h-7 w-7 text-destructive hover:text-destructive",onClick:()=>x(g.username),children:h.jsx(Px,{className:"h-3.5 w-3.5"})})]})]},g.username))]}),y.length>0&&h.jsxs("div",{className:"border-t pt-3",children:[h.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:"添加用户"}),h.jsx("div",{className:"flex flex-wrap gap-1.5",children:y.map(g=>h.jsxs(ie,{variant:"outline",size:"sm",className:"h-7 text-xs gap-1",onClick:()=>w(g),children:[h.jsx(ga,{className:"h-3 w-3"}),g]},g))})]}),d&&h.jsx("p",{className:"text-sm text-destructive",children:d}),h.jsxs(qa,{children:[h.jsx(ie,{variant:"outline",onClick:()=>n(!1),disabled:l,children:"取消"}),h.jsx(ie,{onClick:()=>void m(),disabled:l,children:l?"保存中...":"保存"})]})]})})}function WR(e,t){switch(e){case"thinking":return"Thinking…";case"tool_use":return t?`${t}`:"Tool…";case"tool_result":return"Reading…";case"text":return"Writing…"}}function HR({status:e}){return h.jsx("span",{className:Q("inline-block w-2 h-2 rounded-full",{"bg-green-500":e==="running","bg-zinc-400":e==="stopped","bg-yellow-400 animate-pulse":e==="restarting"})})}const Tm=R.memo(function({project:t,active:n=!1,statusStack:r=[],onDelete:s,onArchive:o,onUnarchive:i,onUpdated:a}){var g,v;const l=Va(),[c,d]=p.useState(!1),u=!!t._sharedPermission,f=t._sharedPermission==="view",y=E=>{E.stopPropagation(),confirm(`Delete project "${t.name}"? This cannot be undone.`)&&s(t.id)},w=E=>{E.stopPropagation(),o(t.id)},x=E=>{E.stopPropagation(),i(t.id)},S=h.jsx(Vn.div,{whileHover:!t.archived&&!n?{y:-2}:{},transition:{duration:.2},children:h.jsxs(of,{className:Q("group cursor-pointer transition-colors relative",t.archived?"opacity-60 hover:opacity-80 hover:border-zinc-400":n?"border-transparent hover:border-transparent bg-transparent shadow-none":"hover:border-zinc-400 hover:shadow-md"),onClick:()=>!t.archived&&l(`/projects/${t.id}`),children:[h.jsxs(af,{className:"pb-2",children:[h.jsxs("div",{className:"flex items-start justify-between gap-2",children:[h.jsx(lf,{className:Q("text-base leading-tight",t.archived&&"text-muted-foreground"),children:t.name}),h.jsx("div",{className:"flex items-center gap-0.5 opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0",children:!u&&h.jsxs(h.Fragment,{children:[t.archived?h.jsx(ie,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground hover:text-foreground",onClick:x,title:"Restore project",children:h.jsx(LN,{className:"h-3.5 w-3.5"})}):h.jsxs(h.Fragment,{children:[h.jsx(ie,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground hover:text-foreground",onClick:E=>{E.stopPropagation(),d(!0)},title:"共享设置",children:h.jsx(Tc,{className:"h-3.5 w-3.5"})}),h.jsx(ie,{variant:"ghost",size:"icon",className:"h-7 w-7 text-muted-foreground hover:text-foreground",onClick:w,title:"Archive project",children:h.jsx(_N,{className:"h-3.5 w-3.5"})})]}),h.jsx(ie,{variant:"ghost",size:"icon",className:"h-7 w-7 text-destructive hover:text-destructive hover:bg-destructive/10",onClick:y,title:"Delete project",children:h.jsx(Px,{className:"h-3.5 w-3.5"})})]})})]}),h.jsx("div",{className:"flex items-center gap-1.5",children:t.archived?h.jsx(rr,{variant:"secondary",className:"text-xs",children:"Archived"}):h.jsxs(h.Fragment,{children:[h.jsx(HR,{status:t.status}),h.jsx("span",{className:"text-xs text-muted-foreground capitalize",children:t.status}),n&&r.length>0&&h.jsx("div",{className:"ml-auto",children:h.jsx(tf,{mode:"wait",children:r.slice(-1).map(E=>h.jsx(Vn.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},exit:{opacity:0,y:-6},transition:{duration:.25,ease:"easeOut"},children:h.jsx(rr,{variant:"outline",className:"text-xs font-normal whitespace-nowrap",children:WR(E.phase,E.detail)})},E.id))})})]})})]}),h.jsxs(uf,{className:"space-y-2",children:[h.jsxs("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[h.jsx(Pc,{className:"h-3.5 w-3.5 flex-shrink-0"}),h.jsx("span",{className:"truncate font-mono",children:t.folderPath})]}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(rr,{variant:"outline",className:"text-xs font-mono",children:t.cliTool??"claude"}),h.jsx(rr,{variant:t.permissionMode==="unlimited"?"destructive":"secondary",className:"text-xs",children:t.permissionMode==="unlimited"?"Unlimited":"Limited"}),u&&h.jsxs(rr,{variant:"outline",className:"text-xs gap-0.5",children:[f?h.jsx(VN,{className:"h-3 w-3"}):h.jsx(Cx,{className:"h-3 w-3"}),f?"可见":"可编辑"]}),!u&&t.shares&&t.shares.length>0&&h.jsxs(rr,{variant:"outline",className:"text-xs gap-0.5",children:[h.jsx(Tc,{className:"h-3 w-3"}),t.shares.length]}),h.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(t.createdAt).toLocaleDateString()})]}),(t.tags??[]).length>0&&h.jsxs("div",{className:"flex flex-wrap gap-1 mt-1",children:[(t.tags??[]).slice(0,3).map(E=>h.jsxs("span",{className:"px-1.5 py-0 rounded-full text-[10px] bg-muted text-muted-foreground border border-border",children:["#",E]},E)),(((g=t.tags)==null?void 0:g.length)??0)>3&&h.jsxs("span",{className:"text-[10px] text-muted-foreground",children:["+",(((v=t.tags)==null?void 0:v.length)??0)-3]})]})]})]})}),m=n&&!t.archived?h.jsx("div",{className:"card-active-glow rounded-lg",children:S}):S;return h.jsxs(h.Fragment,{children:[m,!u&&a&&h.jsx(UR,{project:t,open:c,onOpenChange:d,onUpdated:a})]})});function lw({onSelect:e}){const[t,n]=p.useState(""),[r,s]=p.useState(null),[o,i]=p.useState([]),[a,l]=p.useState(!0),[c,d]=p.useState(null),[u,f]=p.useState(!1),[y,w]=p.useState(""),[x,S]=p.useState(null),[m,g]=p.useState(!1),v=p.useRef(null),E=async A=>{l(!0),d(null);try{const L=await Sx(A);n(L.path),s(L.parent),i(L.entries)}catch(L){d(L instanceof Error?L.message:"Failed to load directory")}finally{l(!1)}};p.useEffect(()=>{E()},[]),p.useEffect(()=>{u&&setTimeout(()=>{var A;return(A=v.current)==null?void 0:A.focus()},0)},[u]);const C=()=>{w(""),S(null),f(!0)},P=()=>{f(!1),w(""),S(null)},k=async()=>{const A=y.trim();if(A){g(!0),S(null);try{const{path:L}=await Ex(t,A);f(!1),w(""),await E(t),E(L)}catch(L){S(L instanceof Error?L.message:"Failed to create folder")}finally{g(!1)}}},b=A=>{A.key==="Enter"?(A.preventDefault(),k()):A.key==="Escape"&&P()},D=t.split("/").filter(Boolean),T=A=>{const L="/"+D.slice(0,A+1).join("/");E(L)};return h.jsxs("div",{className:"flex flex-col h-64 border rounded-md overflow-hidden",children:[h.jsxs("div",{className:"flex items-center gap-1 px-2 py-2 bg-muted border-b flex-shrink-0",children:[h.jsx(ie,{variant:"ghost",size:"sm",className:"h-6 px-1 flex-shrink-0",onClick:()=>void E(),title:"Home",children:h.jsx(BN,{className:"h-3 w-3"})}),h.jsx("div",{className:"flex items-center gap-1 flex-1 overflow-x-auto min-w-0",children:D.map((A,L)=>h.jsxs(R.Fragment,{children:[h.jsx(bx,{className:"h-3 w-3 text-muted-foreground flex-shrink-0"}),h.jsx("button",{className:"text-xs hover:text-foreground text-muted-foreground whitespace-nowrap",onClick:()=>T(L),children:A})]},L))}),h.jsxs(ie,{variant:"ghost",size:"sm",className:"h-6 px-1.5 flex-shrink-0 gap-1 text-xs",onClick:C,disabled:u||a||!!c,title:"New folder",children:[h.jsx(zN,{className:"h-3.5 w-3.5"}),h.jsx("span",{className:"hidden sm:inline",children:"New folder"})]})]}),h.jsxs("div",{className:"flex-1 overflow-y-auto",children:[a&&h.jsx("div",{className:"flex items-center justify-center h-full text-sm text-muted-foreground",children:"Loading..."}),c&&h.jsx("div",{className:"flex items-center justify-center h-full text-sm text-destructive px-4 text-center",children:c}),!a&&!c&&h.jsxs("div",{className:"p-1",children:[r&&h.jsxs("button",{className:"flex items-center gap-2 w-full px-2 py-1.5 text-sm rounded hover:bg-accent hover:text-accent-foreground",onClick:()=>void E(r),children:[h.jsx(ON,{className:"h-4 w-4 text-muted-foreground"}),h.jsx("span",{children:".."})]}),u&&h.jsxs("div",{className:"flex items-center gap-1 px-2 py-1.5",children:[h.jsx(fm,{className:"h-4 w-4 text-blue-500 flex-shrink-0"}),h.jsx("input",{ref:v,className:Q("flex-1 text-sm bg-background border rounded px-1.5 py-0.5 outline-none","focus:ring-1 focus:ring-ring",x&&"border-destructive"),placeholder:"Folder name",value:y,onChange:A=>{w(A.target.value),S(null)},onKeyDown:b,disabled:m}),h.jsx("button",{className:"p-1 rounded hover:bg-accent disabled:opacity-50",onClick:()=>void k(),disabled:!y.trim()||m,title:"Create",children:h.jsx(IN,{className:"h-3.5 w-3.5 text-green-600"})}),h.jsx("button",{className:"p-1 rounded hover:bg-accent",onClick:P,disabled:m,title:"Cancel",children:h.jsx(ff,{className:"h-3.5 w-3.5 text-muted-foreground"})})]}),x&&h.jsx("p",{className:"px-3 pb-1 text-xs text-destructive",children:x}),o.length===0&&!u&&h.jsx("div",{className:"text-sm text-muted-foreground px-2 py-4 text-center",children:"Empty directory"}),o.map(A=>h.jsxs("button",{className:Q("flex items-center gap-2 w-full px-2 py-1.5 text-sm rounded text-left",A.type==="dir"?"hover:bg-accent hover:text-accent-foreground cursor-pointer":"opacity-40 cursor-not-allowed"),onClick:()=>{A.type==="dir"&&E(A.path)},disabled:A.type==="file",children:[A.type==="dir"?h.jsx(fm,{className:"h-4 w-4 text-blue-500 flex-shrink-0"}):h.jsx(FN,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),h.jsx("span",{className:"truncate",children:A.name})]},A.path))]})]}),h.jsxs("div",{className:"border-t px-3 py-2 flex items-center justify-between gap-2 flex-shrink-0 bg-background",children:[h.jsx("span",{className:"text-xs text-muted-foreground truncate flex-1",children:t}),h.jsx(ie,{size:"sm",onClick:()=>e(t),disabled:!t,children:"Select this folder"})]})]})}const GR=[{value:"claude",label:"Claude",desc:"Anthropic Claude Code CLI"},{value:"opencode",label:"OpenCode",desc:"OpenCode CLI (sst/opencode)"},{value:"codex",label:"Codex",desc:"OpenAI Codex CLI"},{value:"qwen",label:"Qwen",desc:"Qwen Code CLI (QwenLM)"}],Nm={claude:{limited:"claude",unlimited:"claude --dangerously-skip-permissions"},opencode:{limited:"opencode",unlimited:"opencode --dangerously-skip-permissions"},codex:{limited:"codex",unlimited:"codex --ask-for-approval never --sandbox danger-full-access"},qwen:{limited:"qwen-code",unlimited:"qwen-code --yolo"}};function KR({open:e,onOpenChange:t,onCreated:n}){const[r,s]=p.useState("name"),[o,i]=p.useState(""),[a,l]=p.useState(""),[c,d]=p.useState("claude"),[u,f]=p.useState("limited"),[y,w]=p.useState(!1),[x,S]=p.useState(null),m=()=>{s("name"),i(""),l(""),d("claude"),f("limited"),S(null),w(!1)},g=b=>{b||m(),t(b)},v=()=>{if(!o.trim()){S("Please enter a project name");return}S(null),s("folder")},E=b=>{l(b),s("settings")},C=async()=>{w(!0),S(null);try{const b=await cx({name:o.trim(),folderPath:a,permissionMode:u,cliTool:c});n(b),g(!1)}catch(b){S(b instanceof Error?b.message:"Failed to create project")}finally{w(!1)}},P={name:"New Project — Name",folder:"New Project — Select Folder",settings:"New Project — Settings"},k=["name","folder","settings"];return h.jsx(gf,{open:e,onOpenChange:g,children:h.jsxs(Qa,{className:"sm:max-w-lg",children:[h.jsxs(Za,{children:[h.jsx(Ja,{children:P[r]}),h.jsxs(el,{children:[r==="name"&&"Give your project a name.",r==="folder"&&"Choose the working directory for this project.",r==="settings"&&"Choose the AI coding tool and run mode."]})]}),h.jsx("div",{className:"flex gap-2 mb-2",children:k.map((b,D)=>h.jsx("div",{className:`h-1.5 flex-1 rounded-full ${r===b?"bg-primary":k.indexOf(r)>D?"bg-primary/40":"bg-muted"}`},b))}),r==="name"&&h.jsxs("div",{className:"space-y-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{htmlFor:"project-name",children:"Project Name"}),h.jsx(vo,{id:"project-name",placeholder:"My Project",value:o,onChange:b=>i(b.target.value),onKeyDown:b=>{b.key==="Enter"&&v()},autoFocus:!0})]}),x&&h.jsx("p",{className:"text-sm text-destructive",children:x})]}),r==="folder"&&h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{children:"Working Directory"}),h.jsx(lw,{onSelect:E})]}),r==="settings"&&h.jsxs("div",{className:"space-y-5",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{children:"AI Coding Tool"}),h.jsx("div",{className:"grid grid-cols-2 gap-2",children:GR.map(b=>h.jsxs("label",{className:`flex items-center gap-2.5 cursor-pointer p-3 rounded-md border transition-colors ${c===b.value?"border-primary bg-primary/5":"hover:bg-accent"}`,children:[h.jsx("input",{type:"radio",name:"cliTool",value:b.value,checked:c===b.value,onChange:()=>d(b.value),className:"accent-primary"}),h.jsxs("div",{children:[h.jsx("div",{className:"font-medium text-sm",children:b.label}),h.jsx("div",{className:"text-xs text-muted-foreground",children:b.desc})]})]},b.value))})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{children:"Permission Mode"}),h.jsxs("div",{className:"space-y-2",children:[h.jsxs("label",{className:"flex items-start gap-3 cursor-pointer p-3 rounded-md border hover:bg-accent transition-colors",children:[h.jsx("input",{type:"radio",name:"permissionMode",value:"limited",checked:u==="limited",onChange:()=>f("limited"),className:"mt-0.5"}),h.jsxs("div",{children:[h.jsx("div",{className:"font-medium text-sm",children:"Limited"}),h.jsxs("div",{className:"text-xs text-muted-foreground",children:["Runs ",h.jsx("code",{className:"bg-muted px-1 rounded",children:Nm[c].limited})," — asks for permission before file changes."]})]})]}),h.jsxs("label",{className:"flex items-start gap-3 cursor-pointer p-3 rounded-md border hover:bg-accent transition-colors",children:[h.jsx("input",{type:"radio",name:"permissionMode",value:"unlimited",checked:u==="unlimited",onChange:()=>f("unlimited"),className:"mt-0.5"}),h.jsxs("div",{children:[h.jsx("div",{className:"font-medium text-sm",children:"Unlimited"}),h.jsxs("div",{className:"text-xs text-muted-foreground",children:["Runs ",h.jsx("code",{className:"bg-muted px-1 rounded",children:Nm[c].unlimited})," — acts autonomously."]})]})]})]})]}),h.jsxs("div",{className:"text-xs text-muted-foreground",children:[h.jsx("span",{className:"font-medium",children:"Folder:"})," ",h.jsx("span",{className:"font-mono",children:a})]}),x&&h.jsx("p",{className:"text-sm text-destructive",children:x})]}),h.jsxs(qa,{children:[r!=="name"&&h.jsx(ie,{variant:"outline",onClick:()=>s(r==="settings"?"folder":"name"),disabled:y,children:"Back"}),r==="name"&&h.jsx(ie,{onClick:v,children:"Next"}),r==="folder"&&h.jsx(ie,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),r==="settings"&&h.jsx(ie,{onClick:()=>void C(),disabled:y,children:y?"Creating...":"Create Project"})]})]})})}function YR({open:e,onOpenChange:t,onOpened:n}){const[r,s]=p.useState(""),[o,i]=p.useState(!1),[a,l]=p.useState(null),c=()=>{s(""),l(null),i(!1)},d=f=>{f||c(),t(f)},u=async f=>{s(f),i(!0),l(null);try{const y=await dx(f);n(y),d(!1)}catch(y){l(y instanceof Error?y.message:"Failed to open project"),i(!1)}};return h.jsx(gf,{open:e,onOpenChange:d,children:h.jsxs(Qa,{className:"sm:max-w-lg",children:[h.jsxs(Za,{children:[h.jsx(Ja,{children:"Open Existing Project"}),h.jsxs(el,{children:["Select a folder that contains a ",h.jsx("code",{className:"bg-muted px-1 rounded text-xs",children:".ccweb/"})," configuration. The project's history and settings will be restored."]})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(jn,{children:"Project Folder"}),h.jsx(lw,{onSelect:f=>void u(f)})]}),a&&h.jsx("p",{className:"text-sm text-destructive",children:a}),r&&!a&&o&&h.jsxs("p",{className:"text-sm text-muted-foreground",children:["Opening project from ",r,"..."]}),h.jsx(qa,{children:h.jsx(ie,{variant:"outline",onClick:()=>d(!1),disabled:o,children:"Cancel"})})]})})}function XR(e){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}const QR=e=>{switch(e){case"success":return JR;case"info":return tM;case"warning":return eM;case"error":return nM;default:return null}},ZR=Array(12).fill(0),qR=({visible:e,className:t})=>R.createElement("div",{className:["sonner-loading-wrapper",t].filter(Boolean).join(" "),"data-visible":e},R.createElement("div",{className:"sonner-spinner"},ZR.map((n,r)=>R.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${r}`})))),JR=R.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},R.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"})),eM=R.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},R.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"})),tM=R.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},R.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"})),nM=R.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},R.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"})),rM=R.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"},R.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),R.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),sM=()=>{const[e,t]=R.useState(document.hidden);return R.useEffect(()=>{const n=()=>{t(document.hidden)};return document.addEventListener("visibilitychange",n),()=>window.removeEventListener("visibilitychange",n)},[]),e};let Rc=1;class oM{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{const n=this.subscribers.indexOf(t);this.subscribers.splice(n,1)}),this.publish=t=>{this.subscribers.forEach(n=>n(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var n;const{message:r,...s}=t,o=typeof(t==null?void 0:t.id)=="number"||((n=t.id)==null?void 0:n.length)>0?t.id:Rc++,i=this.toasts.find(l=>l.id===o),a=t.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(o)&&this.dismissedToasts.delete(o),i?this.toasts=this.toasts.map(l=>l.id===o?(this.publish({...l,...t,id:o,title:r}),{...l,...t,id:o,dismissible:a,title:r}):l):this.addToast({title:r,...s,dismissible:a,id:o}),o},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(n=>n({id:t,dismiss:!0})))):this.toasts.forEach(n=>{this.subscribers.forEach(r=>r({id:n.id,dismiss:!0}))}),t),this.message=(t,n)=>this.create({...n,message:t}),this.error=(t,n)=>this.create({...n,message:t,type:"error"}),this.success=(t,n)=>this.create({...n,type:"success",message:t}),this.info=(t,n)=>this.create({...n,type:"info",message:t}),this.warning=(t,n)=>this.create({...n,type:"warning",message:t}),this.loading=(t,n)=>this.create({...n,type:"loading",message:t}),this.promise=(t,n)=>{if(!n)return;let r;n.loading!==void 0&&(r=this.create({...n,promise:t,type:"loading",message:n.loading,description:typeof n.description!="function"?n.description:void 0}));const s=Promise.resolve(t instanceof Function?t():t);let o=r!==void 0,i;const a=s.then(async c=>{if(i=["resolve",c],R.isValidElement(c))o=!1,this.create({id:r,type:"default",message:c});else if(aM(c)&&!c.ok){o=!1;const u=typeof n.error=="function"?await n.error(`HTTP error! status: ${c.status}`):n.error,f=typeof n.description=="function"?await n.description(`HTTP error! status: ${c.status}`):n.description,w=typeof u=="object"&&!R.isValidElement(u)?u:{message:u};this.create({id:r,type:"error",description:f,...w})}else if(c instanceof Error){o=!1;const u=typeof n.error=="function"?await n.error(c):n.error,f=typeof n.description=="function"?await n.description(c):n.description,w=typeof u=="object"&&!R.isValidElement(u)?u:{message:u};this.create({id:r,type:"error",description:f,...w})}else if(n.success!==void 0){o=!1;const u=typeof n.success=="function"?await n.success(c):n.success,f=typeof n.description=="function"?await n.description(c):n.description,w=typeof u=="object"&&!R.isValidElement(u)?u:{message:u};this.create({id:r,type:"success",description:f,...w})}}).catch(async c=>{if(i=["reject",c],n.error!==void 0){o=!1;const d=typeof n.error=="function"?await n.error(c):n.error,u=typeof n.description=="function"?await n.description(c):n.description,y=typeof d=="object"&&!R.isValidElement(d)?d:{message:d};this.create({id:r,type:"error",description:u,...y})}}).finally(()=>{o&&(this.dismiss(r),r=void 0),n.finally==null||n.finally.call(n)}),l=()=>new Promise((c,d)=>a.then(()=>i[0]==="reject"?d(i[1]):c(i[1])).catch(d));return typeof r!="string"&&typeof r!="number"?{unwrap:l}:Object.assign(r,{unwrap:l})},this.custom=(t,n)=>{const r=(n==null?void 0:n.id)||Rc++;return this.create({jsx:t(r),id:r,...n}),r},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const et=new oM,iM=(e,t)=>{const n=(t==null?void 0:t.id)||Rc++;return et.addToast({title:e,...t,id:n}),n},aM=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",lM=iM,uM=()=>et.toasts,cM=()=>et.getActiveToasts(),Ls=Object.assign(lM,{success:et.success,info:et.info,warning:et.warning,error:et.error,custom:et.custom,message:et.message,promise:et.promise,dismiss:et.dismiss,loading:et.loading},{getHistory:uM,getToasts:cM});XR("[data-sonner-toaster][dir=ltr],html[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%)}[data-sonner-toaster][dir=rtl],html[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%)}[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:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[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);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[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 rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [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)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [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;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left: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);background:var(--normal-bg);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-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[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}[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}[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,0)) translateX(var(--swipe-amount-x,0));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{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{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{from{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-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--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-sonner-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-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-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, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-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-sonner-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]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[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]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[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]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[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]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[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:first-child{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)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{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%)}");function ci(e){return e.label!==void 0}const dM=3,fM="24px",hM="16px",jm=4e3,pM=356,mM=14,gM=45,yM=200;function Ft(...e){return e.filter(Boolean).join(" ")}function vM(e){const[t,n]=e.split("-"),r=[];return t&&r.push(t),n&&r.push(n),r}const xM=e=>{var t,n,r,s,o,i,a,l,c;const{invert:d,toast:u,unstyled:f,interacting:y,setHeights:w,visibleToasts:x,heights:S,index:m,toasts:g,expanded:v,removeToast:E,defaultRichColors:C,closeButton:P,style:k,cancelButtonStyle:b,actionButtonStyle:D,className:T="",descriptionClassName:A="",duration:L,position:Z,gap:le,expandByDefault:ge,classNames:B,icons:re,closeButtonAriaLabel:j="Close toast"}=e,[_,V]=R.useState(null),[$,se]=R.useState(null),[H,q]=R.useState(!1),[K,pe]=R.useState(!1),[Je,J]=R.useState(!1),[Xt,cn]=R.useState(!1),[Qt,It]=R.useState(!1),[gs,Xn]=R.useState(0),[tl,Qn]=R.useState(0),dn=R.useRef(u.duration||L||jm),Lo=R.useRef(null),kt=R.useRef(null),nl=m===0,rl=m+1<=x,ze=u.type,N=u.dismissible!==!1,z=u.className||"",Y=u.descriptionClassName||"",te=R.useMemo(()=>S.findIndex(U=>U.toastId===u.id)||0,[S,u.id]),ue=R.useMemo(()=>{var U;return(U=u.closeButton)!=null?U:P},[u.closeButton,P]),Te=R.useMemo(()=>u.duration||L||jm,[u.duration,L]),Ge=R.useRef(0),ye=R.useRef(0),Zn=R.useRef(0),fn=R.useRef(null),[hw,pw]=Z.split("-"),vf=R.useMemo(()=>S.reduce((U,Me,Be)=>Be>=te?U:U+Me.height,0),[S,te]),xf=sM(),mw=u.invert||d,sl=ze==="loading";ye.current=R.useMemo(()=>te*le+vf,[te,vf]),R.useEffect(()=>{dn.current=Te},[Te]),R.useEffect(()=>{q(!0)},[]),R.useEffect(()=>{const U=kt.current;if(U){const Me=U.getBoundingClientRect().height;return Qn(Me),w(Be=>[{toastId:u.id,height:Me,position:u.position},...Be]),()=>w(Be=>Be.filter(it=>it.toastId!==u.id))}},[w,u.id]),R.useLayoutEffect(()=>{if(!H)return;const U=kt.current,Me=U.style.height;U.style.height="auto";const Be=U.getBoundingClientRect().height;U.style.height=Me,Qn(Be),w(it=>it.find(Le=>Le.toastId===u.id)?it.map(Le=>Le.toastId===u.id?{...Le,height:Be}:Le):[{toastId:u.id,height:Be,position:u.position},...it])},[H,u.title,u.description,w,u.id,u.jsx,u.action,u.cancel]);const hn=R.useCallback(()=>{pe(!0),Xn(ye.current),w(U=>U.filter(Me=>Me.toastId!==u.id)),setTimeout(()=>{E(u)},yM)},[u,E,w,ye]);R.useEffect(()=>{if(u.promise&&ze==="loading"||u.duration===1/0||u.type==="loading")return;let U;return v||y||xf?(()=>{if(Zn.current<Ge.current){const it=new Date().getTime()-Ge.current;dn.current=dn.current-it}Zn.current=new Date().getTime()})():(()=>{dn.current!==1/0&&(Ge.current=new Date().getTime(),U=setTimeout(()=>{u.onAutoClose==null||u.onAutoClose.call(u,u),hn()},dn.current))})(),()=>clearTimeout(U)},[v,y,u,ze,xf,hn]),R.useEffect(()=>{u.delete&&(hn(),u.onDismiss==null||u.onDismiss.call(u,u))},[hn,u.delete]);function gw(){var U;if(re!=null&&re.loading){var Me;return R.createElement("div",{className:Ft(B==null?void 0:B.loader,u==null||(Me=u.classNames)==null?void 0:Me.loader,"sonner-loader"),"data-visible":ze==="loading"},re.loading)}return R.createElement(qR,{className:Ft(B==null?void 0:B.loader,u==null||(U=u.classNames)==null?void 0:U.loader),visible:ze==="loading"})}const yw=u.icon||(re==null?void 0:re[ze])||QR(ze);var wf,Sf;return R.createElement("li",{tabIndex:0,ref:kt,className:Ft(T,z,B==null?void 0:B.toast,u==null||(t=u.classNames)==null?void 0:t.toast,B==null?void 0:B.default,B==null?void 0:B[ze],u==null||(n=u.classNames)==null?void 0:n[ze]),"data-sonner-toast":"","data-rich-colors":(wf=u.richColors)!=null?wf:C,"data-styled":!(u.jsx||u.unstyled||f),"data-mounted":H,"data-promise":!!u.promise,"data-swiped":Qt,"data-removed":K,"data-visible":rl,"data-y-position":hw,"data-x-position":pw,"data-index":m,"data-front":nl,"data-swiping":Je,"data-dismissible":N,"data-type":ze,"data-invert":mw,"data-swipe-out":Xt,"data-swipe-direction":$,"data-expanded":!!(v||ge&&H),"data-testid":u.testId,style:{"--index":m,"--toasts-before":m,"--z-index":g.length-m,"--offset":`${K?gs:ye.current}px`,"--initial-height":ge?"auto":`${tl}px`,...k,...u.style},onDragEnd:()=>{J(!1),V(null),fn.current=null},onPointerDown:U=>{U.button!==2&&(sl||!N||(Lo.current=new Date,Xn(ye.current),U.target.setPointerCapture(U.pointerId),U.target.tagName!=="BUTTON"&&(J(!0),fn.current={x:U.clientX,y:U.clientY})))},onPointerUp:()=>{var U,Me,Be;if(Xt||!N)return;fn.current=null;const it=Number(((U=kt.current)==null?void 0:U.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),_o=Number(((Me=kt.current)==null?void 0:Me.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Le=new Date().getTime()-((Be=Lo.current)==null?void 0:Be.getTime()),pt=_==="x"?it:_o,Oo=Math.abs(pt)/Le;if(Math.abs(pt)>=gM||Oo>.11){Xn(ye.current),u.onDismiss==null||u.onDismiss.call(u,u),se(_==="x"?it>0?"right":"left":_o>0?"down":"up"),hn(),cn(!0);return}else{var bt,Ct;(bt=kt.current)==null||bt.style.setProperty("--swipe-amount-x","0px"),(Ct=kt.current)==null||Ct.style.setProperty("--swipe-amount-y","0px")}It(!1),J(!1),V(null)},onPointerMove:U=>{var Me,Be,it;if(!fn.current||!N||((Me=window.getSelection())==null?void 0:Me.toString().length)>0)return;const Le=U.clientY-fn.current.y,pt=U.clientX-fn.current.x;var Oo;const bt=(Oo=e.swipeDirections)!=null?Oo:vM(Z);!_&&(Math.abs(pt)>1||Math.abs(Le)>1)&&V(Math.abs(pt)>Math.abs(Le)?"x":"y");let Ct={x:0,y:0};const Ef=qn=>1/(1.5+Math.abs(qn)/20);if(_==="y"){if(bt.includes("top")||bt.includes("bottom"))if(bt.includes("top")&&Le<0||bt.includes("bottom")&&Le>0)Ct.y=Le;else{const qn=Le*Ef(Le);Ct.y=Math.abs(qn)<Math.abs(Le)?qn:Le}}else if(_==="x"&&(bt.includes("left")||bt.includes("right")))if(bt.includes("left")&&pt<0||bt.includes("right")&&pt>0)Ct.x=pt;else{const qn=pt*Ef(pt);Ct.x=Math.abs(qn)<Math.abs(pt)?qn:pt}(Math.abs(Ct.x)>0||Math.abs(Ct.y)>0)&&It(!0),(Be=kt.current)==null||Be.style.setProperty("--swipe-amount-x",`${Ct.x}px`),(it=kt.current)==null||it.style.setProperty("--swipe-amount-y",`${Ct.y}px`)}},ue&&!u.jsx&&ze!=="loading"?R.createElement("button",{"aria-label":j,"data-disabled":sl,"data-close-button":!0,onClick:sl||!N?()=>{}:()=>{hn(),u.onDismiss==null||u.onDismiss.call(u,u)},className:Ft(B==null?void 0:B.closeButton,u==null||(r=u.classNames)==null?void 0:r.closeButton)},(Sf=re==null?void 0:re.close)!=null?Sf:rM):null,(ze||u.icon||u.promise)&&u.icon!==null&&((re==null?void 0:re[ze])!==null||u.icon)?R.createElement("div",{"data-icon":"",className:Ft(B==null?void 0:B.icon,u==null||(s=u.classNames)==null?void 0:s.icon)},u.promise||u.type==="loading"&&!u.icon?u.icon||gw():null,u.type!=="loading"?yw:null):null,R.createElement("div",{"data-content":"",className:Ft(B==null?void 0:B.content,u==null||(o=u.classNames)==null?void 0:o.content)},R.createElement("div",{"data-title":"",className:Ft(B==null?void 0:B.title,u==null||(i=u.classNames)==null?void 0:i.title)},u.jsx?u.jsx:typeof u.title=="function"?u.title():u.title),u.description?R.createElement("div",{"data-description":"",className:Ft(A,Y,B==null?void 0:B.description,u==null||(a=u.classNames)==null?void 0:a.description)},typeof u.description=="function"?u.description():u.description):null),R.isValidElement(u.cancel)?u.cancel:u.cancel&&ci(u.cancel)?R.createElement("button",{"data-button":!0,"data-cancel":!0,style:u.cancelButtonStyle||b,onClick:U=>{ci(u.cancel)&&N&&(u.cancel.onClick==null||u.cancel.onClick.call(u.cancel,U),hn())},className:Ft(B==null?void 0:B.cancelButton,u==null||(l=u.classNames)==null?void 0:l.cancelButton)},u.cancel.label):null,R.isValidElement(u.action)?u.action:u.action&&ci(u.action)?R.createElement("button",{"data-button":!0,"data-action":!0,style:u.actionButtonStyle||D,onClick:U=>{ci(u.action)&&(u.action.onClick==null||u.action.onClick.call(u.action,U),!U.defaultPrevented&&hn())},className:Ft(B==null?void 0:B.actionButton,u==null||(c=u.classNames)==null?void 0:c.actionButton)},u.action.label):null)};function Rm(){if(typeof window>"u"||typeof document>"u")return"ltr";const e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function wM(e,t){const n={};return[e,t].forEach((r,s)=>{const o=s===1,i=o?"--mobile-offset":"--offset",a=o?hM:fM;function l(c){["top","right","bottom","left"].forEach(d=>{n[`${i}-${d}`]=typeof c=="number"?`${c}px`:c})}typeof r=="number"||typeof r=="string"?l(r):typeof r=="object"?["top","right","bottom","left"].forEach(c=>{r[c]===void 0?n[`${i}-${c}`]=a:n[`${i}-${c}`]=typeof r[c]=="number"?`${r[c]}px`:r[c]}):l(a)}),n}const SM=R.forwardRef(function(t,n){const{id:r,invert:s,position:o="bottom-right",hotkey:i=["altKey","KeyT"],expand:a,closeButton:l,className:c,offset:d,mobileOffset:u,theme:f="light",richColors:y,duration:w,style:x,visibleToasts:S=dM,toastOptions:m,dir:g=Rm(),gap:v=mM,icons:E,containerAriaLabel:C="Notifications"}=t,[P,k]=R.useState([]),b=R.useMemo(()=>r?P.filter(H=>H.toasterId===r):P.filter(H=>!H.toasterId),[P,r]),D=R.useMemo(()=>Array.from(new Set([o].concat(b.filter(H=>H.position).map(H=>H.position)))),[b,o]),[T,A]=R.useState([]),[L,Z]=R.useState(!1),[le,ge]=R.useState(!1),[B,re]=R.useState(f!=="system"?f:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),j=R.useRef(null),_=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),V=R.useRef(null),$=R.useRef(!1),se=R.useCallback(H=>{k(q=>{var K;return(K=q.find(pe=>pe.id===H.id))!=null&&K.delete||et.dismiss(H.id),q.filter(({id:pe})=>pe!==H.id)})},[]);return R.useEffect(()=>et.subscribe(H=>{if(H.dismiss){requestAnimationFrame(()=>{k(q=>q.map(K=>K.id===H.id?{...K,delete:!0}:K))});return}setTimeout(()=>{Hy.flushSync(()=>{k(q=>{const K=q.findIndex(pe=>pe.id===H.id);return K!==-1?[...q.slice(0,K),{...q[K],...H},...q.slice(K+1)]:[H,...q]})})})}),[P]),R.useEffect(()=>{if(f!=="system"){re(f);return}if(f==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?re("dark"):re("light")),typeof window>"u")return;const H=window.matchMedia("(prefers-color-scheme: dark)");try{H.addEventListener("change",({matches:q})=>{re(q?"dark":"light")})}catch{H.addListener(({matches:K})=>{try{re(K?"dark":"light")}catch(pe){console.error(pe)}})}},[f]),R.useEffect(()=>{P.length<=1&&Z(!1)},[P]),R.useEffect(()=>{const H=q=>{var K;if(i.every(J=>q[J]||q.code===J)){var Je;Z(!0),(Je=j.current)==null||Je.focus()}q.code==="Escape"&&(document.activeElement===j.current||(K=j.current)!=null&&K.contains(document.activeElement))&&Z(!1)};return document.addEventListener("keydown",H),()=>document.removeEventListener("keydown",H)},[i]),R.useEffect(()=>{if(j.current)return()=>{V.current&&(V.current.focus({preventScroll:!0}),V.current=null,$.current=!1)}},[j.current]),R.createElement("section",{ref:n,"aria-label":`${C} ${_}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},D.map((H,q)=>{var K;const[pe,Je]=H.split("-");return b.length?R.createElement("ol",{key:H,dir:g==="auto"?Rm():g,tabIndex:-1,ref:j,className:c,"data-sonner-toaster":!0,"data-sonner-theme":B,"data-y-position":pe,"data-x-position":Je,style:{"--front-toast-height":`${((K=T[0])==null?void 0:K.height)||0}px`,"--width":`${pM}px`,"--gap":`${v}px`,...x,...wM(d,u)},onBlur:J=>{$.current&&!J.currentTarget.contains(J.relatedTarget)&&($.current=!1,V.current&&(V.current.focus({preventScroll:!0}),V.current=null))},onFocus:J=>{J.target instanceof HTMLElement&&J.target.dataset.dismissible==="false"||$.current||($.current=!0,V.current=J.relatedTarget)},onMouseEnter:()=>Z(!0),onMouseMove:()=>Z(!0),onMouseLeave:()=>{le||Z(!1)},onDragEnd:()=>Z(!1),onPointerDown:J=>{J.target instanceof HTMLElement&&J.target.dataset.dismissible==="false"||ge(!0)},onPointerUp:()=>ge(!1)},b.filter(J=>!J.position&&q===0||J.position===H).map((J,Xt)=>{var cn,Qt;return R.createElement(xM,{key:J.id,icons:E,index:Xt,toast:J,defaultRichColors:y,duration:(cn=m==null?void 0:m.duration)!=null?cn:w,className:m==null?void 0:m.className,descriptionClassName:m==null?void 0:m.descriptionClassName,invert:s,visibleToasts:S,closeButton:(Qt=m==null?void 0:m.closeButton)!=null?Qt:l,interacting:le,position:H,style:m==null?void 0:m.style,unstyled:m==null?void 0:m.unstyled,classNames:m==null?void 0:m.classNames,cancelButtonStyle:m==null?void 0:m.cancelButtonStyle,actionButtonStyle:m==null?void 0:m.actionButtonStyle,closeButtonAriaLabel:m==null?void 0:m.closeButtonAriaLabel,removeToast:se,toasts:b.filter(It=>It.position==J.position),heights:T.filter(It=>It.position==J.position),setHeights:A,expandByDefault:a,gap:v,expanded:L,swipeDirections:t.swipeDirections})})):null}))}),uw=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}`,cw=5,dw=3e3;function JM(e,t){const n=p.useRef(null),r=p.useRef(0),s=p.useRef(!0),o=p.useRef(!1),i=p.useRef(t);i.current=t;const a=p.useRef(!1),l=p.useCallback(w=>{var x;((x=n.current)==null?void 0:x.readyState)===WebSocket.OPEN&&n.current.send(JSON.stringify(w))},[]),c=p.useCallback((w,x)=>{var S;((S=n.current)==null?void 0:S.readyState)===WebSocket.OPEN?(n.current.send(JSON.stringify({type:"terminal_subscribe",cols:w,rows:x})),a.current=!1):a.current=!0},[]),d=p.useCallback(w=>{l({type:"terminal_input",data:w})},[l]),u=p.useCallback((w,x)=>{l({type:"terminal_resize",cols:w,rows:x})},[l]),f=p.useCallback(()=>{l({type:"chat_subscribe"})},[l]),y=p.useCallback(()=>{if(!s.current||o.current)return;const w=Ao();if(!w){window.location.href="/login";return}o.current=!0;const x=new WebSocket(`${uw}/ws/projects/${e}`);n.current=x,x.onopen=()=>{o.current=!1,r.current=0,x.send(JSON.stringify({type:"auth",token:w}))},x.onmessage=S=>{var g,v,E,C,P,k,b,D;let m;try{m=JSON.parse(S.data)}catch{return}switch(m.type){case"connected":a.current=!1,(v=(g=i.current).onConnected)==null||v.call(g);break;case"terminal_data":(C=(E=i.current).onTerminalData)==null||C.call(E,m.data);break;case"status":(k=(P=i.current).onStatus)==null||k.call(P,m.status);break;case"chat_message":{const T=m;(D=(b=i.current).onChatMessage)==null||D.call(b,T);break}case"error":console.error("[WS] Server error:",m.message);break}},x.onclose=()=>{o.current=!1,n.current=null,s.current&&r.current<cw&&(r.current++,setTimeout(y,dw))},x.onerror=S=>{o.current=!1,console.error("[WS] WebSocket error:",S)}},[e]);return p.useEffect(()=>(s.current=!0,y(),()=>{var w;s.current=!1,(w=n.current)==null||w.close(),n.current=null}),[y]),{subscribeTerminal:c,sendTerminalInput:d,sendTerminalResize:u,subscribeChatMessages:f}}function EM(e){const t=p.useRef(null),n=p.useRef(0),r=p.useRef(!0),s=p.useRef(!1),o=p.useRef(e);o.current=e;const i=p.useCallback(()=>{if(!r.current||s.current)return;const a=Ao();if(!a)return;s.current=!0;const l=new WebSocket(`${uw}/ws/dashboard`);t.current=l,l.onopen=()=>{s.current=!1,n.current=0,l.send(JSON.stringify({type:"auth",token:a}))},l.onmessage=c=>{var d,u;try{const f=JSON.parse(c.data);f.type==="activity_update"?o.current.onActivityUpdate(f):f.type==="project_stopped"&&((u=(d=o.current).onProjectStopped)==null||u.call(d,f.projectId,f.projectName))}catch{}},l.onclose=()=>{s.current=!1,t.current=null,r.current&&n.current<cw&&(n.current++,setTimeout(i,dw))},l.onerror=c=>{s.current=!1,console.error("[DashboardWS] Error:",c)}},[]);p.useEffect(()=>(r.current=!0,i(),()=>{var a;r.current=!1,(a=t.current)==null||a.close(),t.current=null}),[i])}function kM(e){if(!e)return"";const t=new Date(e).getTime()-Date.now();if(t<=0)return"即将重置";const n=Math.floor(t/36e5),r=Math.floor(t%36e5/6e4);return n>0?`${n}h${r}m`:`${r}m`}const Mm=5*36e5;function bM(e){if(!e||e.utilization===void 0||e.utilization<=0||!e.resetAt)return null;const t=new Date(e.resetAt).getTime()-Date.now();if(t<=0)return null;const n=Mm-t;return n<=0?null:Math.round(e.utilization/(n/Mm))}function di({label:e,bucket:t}){if(!t||t.utilization===void 0)return null;const n=t.utilization,r=n<50?"text-green-400":n<80?"text-yellow-400":"text-red-400",s=kM(t.resetAt);return h.jsxs("span",{className:"text-muted-foreground whitespace-nowrap",children:[e," ",h.jsxs("span",{className:Q("font-medium",r),children:[n,"%"]}),s&&h.jsxs("span",{className:"text-muted-foreground/70 ml-0.5",children:["(",s,")"]})]})}function CM({className:e}){const[t,n]=p.useState("loading"),[r,s]=p.useState(!1);p.useEffect(()=>{const f=async()=>{try{n(await xx())}catch{n(null)}};f();const y=setInterval(()=>void f(),5*60*1e3);return()=>clearInterval(y)},[]);const o=async()=>{s(!0);try{n(await wx())}catch{n(null)}finally{s(!1)}};if(t==="loading"||!t)return null;const i=!!t.fiveHour,a=!!t.sevenDay,l=!!t.sevenDaySonnet,c=!!t.sevenDayOpus,d=i||a||l||c,u=bM(t.fiveHour);return h.jsxs("div",{className:Q("flex items-center gap-1.5 text-xs",e),children:[u!==null&&h.jsxs("span",{className:Q("font-medium",u<=100?"text-green-400":"text-orange-400"),title:`5h 使用进度:按当前速率,窗口结束时预计使用 ${u}%`,children:[u,"%"]}),t.planName&&h.jsx("span",{className:"font-medium text-foreground bg-muted border border-border px-2 py-0.5 rounded-full",children:t.planName}),d&&h.jsxs(h.Fragment,{children:[h.jsx("span",{className:"text-muted-foreground/50",children:"|"}),h.jsx(di,{label:"5h",bucket:t.fiveHour}),a&&h.jsxs(h.Fragment,{children:[h.jsx("span",{className:"text-muted-foreground/50",children:"·"}),h.jsx(di,{label:"7d",bucket:t.sevenDay})]}),l&&h.jsxs(h.Fragment,{children:[h.jsx("span",{className:"text-muted-foreground/50",children:"·"}),h.jsx(di,{label:"7d Sonnet",bucket:t.sevenDaySonnet})]}),c&&h.jsxs(h.Fragment,{children:[h.jsx("span",{className:"text-muted-foreground/50",children:"·"}),h.jsx(di,{label:"7d Opus",bucket:t.sevenDayOpus})]})]}),h.jsx("button",{onClick:()=>void o(),className:"text-muted-foreground hover:text-foreground transition-colors",title:"刷新用量信息",children:h.jsx(KN,{className:Q("h-3 w-3",r&&"animate-spin")})})]})}function PM(){const[e,t]=p.useState([]),[n,r]=p.useState(!1),[s,o]=p.useState(""),[i,a]=p.useState(""),[l,c]=p.useState(""),[d,u]=p.useState(null),[f,y]=p.useState(""),[w,x]=p.useState(""),[S,m]=p.useState(""),g=p.useRef(null),v=p.useRef(null);p.useEffect(()=>{mx().then(t).catch(()=>t([]))},[]),p.useEffect(()=>{n&&setTimeout(()=>{var k;return(k=g.current)==null?void 0:k.focus()},0)},[n]),p.useEffect(()=>{d&&setTimeout(()=>{var k;return(k=v.current)==null?void 0:k.focus()},0)},[d]);const E=async()=>{const k=i.trim();if(k)try{const b=await gx({label:s.trim()||k,command:k,...l?{parentId:l}:{}});t(D=>[...D,b]),o(""),a(""),c(""),r(!1)}catch(b){console.error("[GlobalShortcuts] Failed to add:",b)}},C=async k=>{try{await vx(k),t(b=>b.filter(D=>D.id!==k)),d===k&&u(null)}catch(b){console.error("[GlobalShortcuts] Failed to delete:",b)}},P=async()=>{const k=w.trim();if(!(!k||!d))try{const b=await yx(d,{label:f.trim()||k,command:k,parentId:S||null});t(D=>D.map(T=>T.id===d?b:T)),u(null)}catch(b){console.error("[GlobalShortcuts] Failed to save:",b)}};return h.jsxs("section",{className:"mt-10",children:[h.jsxs("div",{className:"flex items-center justify-between mb-4",children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(pm,{className:"h-4 w-4 text-muted-foreground"}),h.jsx("h2",{className:"text-lg font-semibold",children:"全局快捷命令"}),h.jsx("span",{className:"text-xs text-muted-foreground",children:"在所有项目的终端中可用"})]}),h.jsxs("button",{onClick:()=>{r(k=>!k),u(null)},className:Q("flex items-center gap-1.5 text-sm px-3 py-1.5 rounded-md border transition-colors",n?"border-border text-foreground bg-muted":"border-border text-muted-foreground hover:text-foreground hover:bg-muted"),children:[h.jsx(ga,{className:"h-3.5 w-3.5"}),"新建"]})]}),n&&h.jsxs("div",{className:"mb-4 p-4 rounded-lg border border-border bg-background space-y-3",children:[h.jsx("input",{ref:g,placeholder:"名称(可选)",value:s,onChange:k=>o(k.target.value),className:"w-full text-sm bg-muted border border-border rounded px-3 py-1.5 text-foreground placeholder:text-muted-foreground outline-none focus:border-border transition-colors"}),h.jsx("textarea",{placeholder:"命令内容…",value:i,onChange:k=>a(k.target.value),rows:3,className:"w-full text-sm bg-muted border border-border rounded px-3 py-1.5 text-foreground placeholder:text-muted-foreground font-mono outline-none focus:border-border transition-colors resize-none",onKeyDown:k=>{k.key==="Enter"&&(k.metaKey||k.ctrlKey)&&(k.preventDefault(),E()),k.key==="Escape"&&(r(!1),o(""),a(""),c(""))}}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(Zl,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),h.jsxs("select",{value:l,onChange:k=>c(k.target.value),className:"flex-1 text-sm bg-muted border border-border rounded px-3 py-1.5 text-foreground outline-none focus:border-border transition-colors",children:[h.jsx("option",{value:"",children:"无继承"}),e.map(k=>h.jsx("option",{value:k.id,children:k.label},k.id))]})]}),h.jsxs("div",{className:"flex items-center justify-between",children:[h.jsx("span",{className:"text-xs text-muted-foreground",children:"⌘↩ 保存 · Esc 取消"}),h.jsxs("div",{className:"flex gap-2",children:[h.jsx("button",{onClick:()=>{r(!1),o(""),a("")},className:"text-sm px-3 py-1 rounded bg-secondary hover:bg-accent text-foreground transition-colors",children:"取消"}),h.jsx("button",{onClick:()=>void E(),disabled:!i.trim(),className:Q("text-sm px-3 py-1 rounded transition-colors text-white",i.trim()?"bg-blue-600 hover:bg-blue-500":"bg-secondary opacity-40 cursor-not-allowed"),children:"保存"})]})]})]}),e.length===0&&!n?h.jsxs("div",{className:"flex flex-col items-center gap-2 py-10 text-muted-foreground/50 border border-dashed border-border rounded-lg",children:[h.jsx(pm,{className:"h-6 w-6"}),h.jsx("p",{className:"text-sm",children:"还没有全局快捷命令"})]}):h.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3",children:e.map(k=>d===k.id?h.jsxs("div",{className:"rounded-lg border border-border bg-background p-3 space-y-2",children:[h.jsx("input",{ref:v,value:f,onChange:b=>y(b.target.value),placeholder:"名称(可选)",className:"w-full text-sm bg-muted border border-border rounded px-2.5 py-1 text-foreground placeholder:text-muted-foreground outline-none focus:border-border transition-colors"}),h.jsx("textarea",{value:w,onChange:b=>x(b.target.value),rows:3,className:"w-full text-sm bg-muted border border-border rounded px-2.5 py-1 text-foreground font-mono outline-none focus:border-border transition-colors resize-none",onKeyDown:b=>{b.key==="Enter"&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),P()),b.key==="Escape"&&u(null)}}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(Zl,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),h.jsxs("select",{value:S,onChange:b=>m(b.target.value),className:"flex-1 text-sm bg-muted border border-border rounded px-2.5 py-1 text-foreground outline-none focus:border-border transition-colors",children:[h.jsx("option",{value:"",children:"无继承"}),e.filter(b=>b.id!==k.id).map(b=>h.jsx("option",{value:b.id,children:b.label},b.id))]})]}),h.jsxs("div",{className:"flex gap-2 justify-end",children:[h.jsx("button",{onClick:()=>u(null),className:"text-xs px-2.5 py-1 rounded bg-secondary hover:bg-accent text-foreground transition-colors",children:"取消"}),h.jsx("button",{onClick:()=>void P(),disabled:!w.trim(),className:Q("text-xs px-2.5 py-1 rounded transition-colors text-white",w.trim()?"bg-blue-600 hover:bg-blue-500":"bg-secondary opacity-40 cursor-not-allowed"),children:"保存"})]})]},k.id):h.jsxs("div",{className:"group relative rounded-lg border border-border bg-background hover:border-muted-foreground/30 transition-colors p-3",children:[h.jsx("div",{className:"text-sm font-medium text-foreground truncate pr-14",children:k.label}),k.parentId&&(()=>{const b=e.find(D=>D.id===k.parentId);return b?h.jsxs("div",{className:"flex items-center gap-1 mt-1",children:[h.jsx(Zl,{className:"h-3 w-3 text-muted-foreground"}),h.jsxs("span",{className:"text-xs text-muted-foreground truncate",children:["继承: ",b.label]})]}):null})(),!k.parentId&&k.label!==k.command&&h.jsx("div",{className:"text-xs text-muted-foreground font-mono truncate mt-1 pr-14",children:k.command}),h.jsxs("div",{className:"absolute top-2.5 right-2.5 flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity",children:[h.jsx("button",{onClick:()=>{u(k.id),y(k.label),x(k.command),m(k.parentId||""),r(!1)},className:"p-1 rounded text-muted-foreground hover:text-blue-400 transition-colors",title:"编辑",children:h.jsx(Cx,{className:"h-3.5 w-3.5"})}),h.jsx("button",{onClick:()=>void C(k.id),className:"p-1 rounded text-muted-foreground hover:text-red-400 transition-colors",title:"删除",children:h.jsx(ff,{className:"h-3.5 w-3.5"})})]})]},k.id))})]})}const fw=p.createContext({theme:"system",resolved:"dark",setTheme:()=>{}});function TM(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function NM(){return p.useSyncExternalStore(e=>{const t=window.matchMedia("(prefers-color-scheme: dark)");return t.addEventListener("change",e),()=>t.removeEventListener("change",e)},()=>TM())}function jM({children:e}){const[t,n]=p.useState(()=>sx(pr.theme,"system")),r=NM(),s=t==="system"?r:t;p.useEffect(()=>{const i=document.documentElement;i.classList.remove("light","dark"),i.classList.add(s)},[s]);const o=i=>{n(i),ox(pr.theme,i)};return h.jsx(fw.Provider,{value:{theme:t,resolved:s,setTheme:o},children:e})}function RM(){return p.useContext(fw)}function MM(){const{theme:e,setTheme:t}=RM(),n=[{value:"light",icon:ZN,label:"浅色"},{value:"dark",icon:GN,label:"深色"},{value:"system",icon:HN,label:"系统"}];return h.jsx("div",{className:"flex items-center rounded-md border border-border bg-muted/50 p-0.5",children:n.map(({value:r,icon:s,label:o})=>h.jsx("button",{onClick:()=>t(r),className:Q("p-1 rounded-sm transition-colors",e===r?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),title:o,children:h.jsx(s,{className:"h-3.5 w-3.5"})},r))})}const DM={workMinutes:30,breakMinutes:5};function va(){return sx(pr.pomodoroConfig,DM,!0)}function AM(e){Notification.permission==="granted"&&new Notification("番茄钟",{body:e,icon:"/favicon.ico"})}const yf=Ha(e=>({running:!1,phase:"work",secondsLeft:va().workMinutes*60,setRunning:t=>e({running:t}),setPhase:t=>e({phase:t}),setSecondsLeft:t=>e({secondsLeft:t})}));function LM(){const{running:e,phase:t,secondsLeft:n,setPhase:r,setSecondsLeft:s}=yf(),o=p.useCallback(i=>{const a=va();r(i),s(i==="work"?a.workMinutes*60:a.breakMinutes*60),AM(i==="break"?"休息一下 ☕":"该工作了 💻")},[r,s]);return p.useEffect(()=>{if(!e)return;if(n===0){o(t==="work"?"break":"work");return}const i=setTimeout(()=>s(n-1),1e3);return()=>clearTimeout(i)},[e,n,t,o,s]),null}function _M(){const{running:e,phase:t,secondsLeft:n}=yf(),r=Math.floor(n/60),s=n%60,o=`${String(r).padStart(2,"0")}:${String(s).padStart(2,"0")}`;return e?Oa.createPortal(h.jsxs("div",{className:"fixed inset-0 flex flex-col items-center justify-center pointer-events-none z-40 select-none",style:{opacity:t==="work"?.1:.6},children:[h.jsx("div",{className:Q("font-mono font-bold tabular-nums leading-none",t==="work"?"text-foreground":"text-blue-400 dark:text-blue-300"),style:{fontSize:"clamp(360px, 90vw, 1100px)"},children:o}),h.jsx("div",{className:"mt-3 text-muted-foreground font-medium tracking-widest uppercase",style:{fontSize:"clamp(12px, 1.5vw, 20px)"},children:t==="work"?"专注工作":"休息一下"})]}),document.body):null}function OM(){const{running:e,phase:t,secondsLeft:n,setRunning:r,setPhase:s,setSecondsLeft:o}=yf(),i=Math.floor(n/60),a=n%60,l=`${String(i).padStart(2,"0")}:${String(a).padStart(2,"0")}`,c=()=>{if(e){const d=va();s("work"),o(d.workMinutes*60)}else{const d=va();s("work"),o(d.workMinutes*60),Notification.permission==="default"&&Notification.requestPermission()}r(!e)};return h.jsx("button",{onClick:c,className:Q("p-1 rounded transition-colors",e?t==="work"?"text-red-500 bg-red-500/10 hover:bg-red-500/20":"text-green-500 bg-green-500/10 hover:bg-green-500/20":"text-muted-foreground hover:text-foreground hover:bg-muted"),title:e?t==="work"?`工作中 ${l} — 点击停止`:`休息中 ${l} — 点击停止`:"启动番茄钟",children:h.jsx(qN,{className:"h-4 w-4"})})}function IM(){const e=Va(),{projects:t,loading:n,error:r,fetchProjects:s,addProject:o,updateProject:i,removeProject:a}=dm(),l=wr(N=>N.clearToken),[c,d]=p.useState(!1),[u,f]=p.useState(!1),[y,w]=p.useState(new Set),x=p.useRef(new Map),[S,m]=p.useState(new Map),g=p.useRef(0),[v,E]=p.useState(!!document.fullscreenElement),[C,P]=p.useState(!1),[k,b]=p.useState(""),[D,T]=p.useState([]),[A,L]=p.useState(!1);p.useEffect(()=>{if(!k.trim()||k.trim().length<2){T([]);return}const N=setTimeout(()=>{L(!0),kx(k).then(z=>T(z)).catch(()=>T([])).finally(()=>L(!1))},400);return()=>clearTimeout(N)},[k]);const Z=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()};p.useEffect(()=>{const N=()=>E(!!document.fullscreenElement);return document.addEventListener("fullscreenchange",N),()=>document.removeEventListener("fullscreenchange",N)},[]),p.useEffect(()=>{s()},[s]),p.useEffect(()=>{"Notification"in window&&Notification.permission==="default"&&Notification.requestPermission()},[]);const le=2e3,ge=3,B=8e3,re=p.useCallback(N=>{if(N.status){const te=dm.getState().projects.find(ue=>ue.id===N.projectId);te&&te.status!==N.status&&i({...te,status:N.status})}const z=Date.now(),Y=x.current;if(z-N.lastActivityAt<le){w(ye=>ye.has(N.projectId)?ye:new Set(ye).add(N.projectId));const te=Y.get(N.projectId)??[];let ue=!1;if(N.semantic){const ye=te[te.length-1],Zn=`${N.semantic.phase}:${N.semantic.detail??""}`,fn=ye?`${ye.phase}:${ye.detail??""}`:"";Zn!==fn?(te.push({id:g.current++,phase:N.semantic.phase,detail:N.semantic.detail,ts:z}),ue=!0):ye&&(ye.ts=z)}const Te=te.filter(ye=>z-ye.ts<B),Ge=Te.length>ge?Te.slice(-ge):Te;Ge.length!==te.length&&(ue=!0),Y.set(N.projectId,Ge),ue&&m(new Map(Y))}else w(te=>{if(!te.has(N.projectId))return te;const ue=new Set(te);return ue.delete(N.projectId),ue}),Y.has(N.projectId)&&Y.get(N.projectId).length>0&&(Y.set(N.projectId,[]),m(new Map(Y)))},[]),j=p.useCallback((N,z)=>{"Notification"in window&&Notification.permission==="granted"?new Notification("Claude 已完成",{body:`项目「${z}」的任务已完成`,icon:"/terminal.svg"}):Ls.success(`项目「${z}」的任务已完成`,{duration:8e3})},[]);EM({onActivityUpdate:re,onProjectStopped:j}),p.useEffect(()=>{const N=setInterval(()=>{const z=Date.now(),Y=x.current;let te=!1;for(const[ue,Te]of Y){const Ge=Te.filter(ye=>z-ye.ts<B);Ge.length!==Te.length&&(Y.set(ue,Ge),te=!0)}te&&m(new Map(Y)),w(ue=>{let Te=!1;const Ge=new Set(ue);for(const ye of ue){const Zn=Y.get(ye);(!Zn||Zn.length===0)&&(Ge.delete(ye),Te=!0)}return Te?Ge:ue})},3e3);return()=>clearInterval(N)},[]);const _=()=>{l(),e("/login")},V=N=>{o(N)},$=N=>{o(N)},se=async N=>{try{await fx(N),a(N)}catch(z){Ls.error(z instanceof Error?z.message:"Failed to delete project")}},H=async N=>{try{const z=await hx(N);i(z)}catch(z){Ls.error(z instanceof Error?z.message:"Failed to archive project")}},q=async N=>{try{const z=await px(N);i(z)}catch(z){Ls.error(z instanceof Error?z.message:"Failed to restore project")}},K=p.useMemo(()=>t.filter(N=>!N.archived),[t]),pe=p.useMemo(()=>t.filter(N=>N.archived),[t]),Je=p.useMemo(()=>Array.from(new Set(t.flatMap(N=>N.tags??[]))),[t]),[J,Xt]=p.useState([]),cn=p.useMemo(()=>J.length===0?K:K.filter(N=>J.some(z=>{var Y;return(Y=N.tags)==null?void 0:Y.includes(z)})),[K,J]),[Qt,It]=_T(pr.projectOrder,[],{parse:!0}),[gs,Xn]=p.useState(null),[tl,Qn]=p.useState(null);p.useEffect(()=>{if(K.length===0)return;const N=K.map(z=>z.id);It(z=>{const Y=z.filter(Te=>N.includes(Te)),te=N.filter(Te=>!z.includes(Te)),ue=[...Y,...te];return ue.join(",")===z.join(",")?z:ue})},[K]);const dn=p.useMemo(()=>Qt.length===0?cn:[...cn].sort((N,z)=>{const Y=Qt.indexOf(N.id),te=Qt.indexOf(z.id);return Y===-1?1:te===-1?-1:Y-te}),[cn,Qt]),Lo=p.useCallback(N=>Xn(N),[]),kt=p.useCallback(()=>{Xn(null),Qn(null)},[]),nl=p.useCallback((N,z)=>{N.preventDefault(),Qn(z)},[]),rl=p.useCallback((N,z,Y)=>{if(N.preventDefault(),!Y||Y===z){Qn(null);return}It(te=>{const ue=[...te],Te=ue.indexOf(Y),Ge=ue.indexOf(z);return Te===-1||Ge===-1?te:(ue.splice(Te,1),ue.splice(Ge,0,Y),ue)}),Xn(null),Qn(null)},[It]),ze={onDelete:N=>void se(N),onArchive:N=>void H(N),onUnarchive:N=>void q(N),onUpdated:i};return h.jsxs("div",{className:"min-h-screen bg-background",children:[h.jsx("header",{className:"border-b sticky top-0 bg-background z-10",children:h.jsxs("div",{className:"max-w-6xl mx-auto px-4 h-14 flex items-center justify-between",children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(hm,{className:"h-5 w-5"}),h.jsx("span",{className:"font-semibold text-lg",children:"CC Web"})]}),h.jsx(CM,{}),h.jsxs("div",{className:"relative",children:[h.jsx(YN,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground pointer-events-none"}),h.jsx(vo,{placeholder:"搜索历史对话…",value:k,onChange:N=>b(N.target.value),className:"pl-8 h-8 text-xs w-48"}),k.trim().length>=2&&h.jsxs("div",{className:"absolute top-full mt-1 right-0 w-96 max-h-80 overflow-y-auto bg-popover border border-border rounded-lg shadow-xl z-50",children:[A&&h.jsx("div",{className:"px-4 py-3 text-xs text-muted-foreground",children:"搜索中…"}),!A&&D.length===0&&h.jsx("div",{className:"px-4 py-3 text-xs text-muted-foreground",children:"无结果"}),D.map((N,z)=>h.jsxs("button",{className:"w-full text-left px-4 py-2.5 hover:bg-muted transition-colors border-b border-border last:border-0",onClick:()=>{e(`/project/${N.projectId}`),b("")},children:[h.jsxs("div",{className:"flex items-center gap-2 mb-0.5",children:[h.jsx("span",{className:"text-xs font-medium text-foreground truncate",children:N.projectName}),h.jsx("span",{className:"text-[10px] text-muted-foreground flex-shrink-0",children:new Date(N.startedAt).toLocaleDateString("zh-CN")})]}),h.jsx("p",{className:"text-[11px] text-muted-foreground leading-relaxed line-clamp-2",children:N.snippet})]},z))]})]}),h.jsx(ie,{variant:"ghost",size:"sm",onClick:()=>e("/skillhub"),title:"SkillHub",children:h.jsx(QN,{className:"h-4 w-4"})}),h.jsx(ie,{variant:"ghost",size:"sm",onClick:()=>e("/settings"),title:"设置",children:h.jsx(XN,{className:"h-4 w-4"})}),h.jsx(ie,{variant:"ghost",size:"sm",onClick:Z,title:v?"Exit fullscreen":"Fullscreen",children:v?h.jsx(WN,{className:"h-4 w-4"}):h.jsx(UN,{className:"h-4 w-4"})}),h.jsx(OM,{}),h.jsx(MM,{}),h.jsxs(ie,{variant:"ghost",size:"sm",onClick:_,children:[h.jsx($N,{className:"h-4 w-4 mr-2"}),"Logout"]})]})}),h.jsxs("main",{className:"max-w-6xl mx-auto px-4 py-8",children:[h.jsxs("div",{className:"flex items-center justify-between mb-6",children:[h.jsxs("div",{children:[h.jsx("h1",{className:"text-2xl font-bold",children:"Projects"}),h.jsx("p",{className:"text-muted-foreground text-sm mt-1",children:"Each project runs Claude CLI in a dedicated terminal session."})]}),h.jsxs("div",{className:"flex gap-2",children:[h.jsxs(ie,{variant:"outline",onClick:()=>f(!0),children:[h.jsx(Pc,{className:"h-4 w-4 mr-2"}),"Open Project"]}),h.jsxs(ie,{onClick:()=>d(!0),children:[h.jsx(ga,{className:"h-4 w-4 mr-2"}),"New Project"]})]})]}),n&&h.jsx("div",{className:"text-center text-muted-foreground py-12",children:"Loading projects..."}),r&&h.jsx("div",{className:"text-center text-destructive py-12",children:r}),!n&&!r&&t.length===0&&h.jsxs("div",{className:"text-center py-20",children:[h.jsx(hm,{className:"h-12 w-12 text-muted-foreground mx-auto mb-4"}),h.jsx("h2",{className:"text-lg font-semibold mb-2",children:"No projects yet"}),h.jsx("p",{className:"text-muted-foreground text-sm mb-6",children:"Create a new project or open an existing one."}),h.jsxs("div",{className:"flex gap-2 justify-center",children:[h.jsxs(ie,{variant:"outline",onClick:()=>f(!0),children:[h.jsx(Pc,{className:"h-4 w-4 mr-2"}),"Open Project"]}),h.jsxs(ie,{onClick:()=>d(!0),children:[h.jsx(ga,{className:"h-4 w-4 mr-2"}),"New Project"]})]})]}),!n&&!r&&Je.length>0&&h.jsxs("div",{className:"flex flex-wrap gap-1.5 mb-4",children:[Je.map(N=>h.jsxs("button",{onClick:()=>Xt(z=>z.includes(N)?z.filter(Y=>Y!==N):[...z,N]),className:Q("px-2 py-0.5 rounded-full text-xs border transition-colors",J.includes(N)?"bg-blue-500/20 text-blue-400 border-blue-500/40":"bg-muted text-muted-foreground border-border hover:border-muted-foreground/40"),children:["#",N]},N)),J.length>0&&h.jsx("button",{onClick:()=>Xt([]),className:"px-2 py-0.5 rounded-full text-xs text-muted-foreground hover:text-foreground transition-colors",children:"清除"})]}),!n&&!r&&dn.length>0&&h.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:dn.map((N,z)=>h.jsx(Vn.div,{initial:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.3,delay:z*.05,ease:"easeOut"},draggable:!0,onDragStart:()=>Lo(N.id),onDragOver:Y=>nl(Y,N.id),onDrop:Y=>rl(Y,N.id,gs),onDragEnd:kt,style:{opacity:gs===N.id?.4:1,cursor:"grab"},className:Q(tl===N.id&&gs!==N.id&&"ring-2 ring-blue-500/50 rounded-xl"),children:h.jsx(Tm,{project:N,active:y.has(N.id),statusStack:S.get(N.id)??[],...ze})},N.id))}),!n&&!r&&pe.length>0&&h.jsxs("div",{className:"mt-10",children:[h.jsxs("button",{className:"flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors mb-4 group",onClick:()=>P(N=>!N),children:[h.jsx(Vn.span,{animate:{rotate:C?90:0},transition:{duration:.2},children:h.jsx(bx,{className:"h-4 w-4"})}),h.jsx("span",{className:"font-medium",children:"Archived"}),h.jsx("span",{className:"text-xs bg-muted rounded-full px-2 py-0.5",children:pe.length})]}),h.jsx(tf,{children:C&&h.jsx(Vn.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:{duration:.25,ease:"easeInOut"},className:"overflow-hidden",children:h.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4",children:pe.map(N=>h.jsx(Tm,{project:N,active:!1,...ze},N.id))})})})]}),h.jsx(PM,{})]}),h.jsx(KR,{open:c,onOpenChange:d,onCreated:V}),h.jsx(YR,{open:u,onOpenChange:f,onOpened:$})]})}class VM extends R.Component{constructor(){super(...arguments);ol(this,"state",{hasError:!1,error:null});ol(this,"handleReset",()=>{var n,r;this.setState({hasError:!1,error:null}),(r=(n=this.props).onReset)==null||r.call(n)})}static getDerivedStateFromError(n){return{hasError:!0,error:n}}componentDidCatch(n,r){console.error("[ErrorBoundary]",n,r.componentStack),Ls.error(n.message||"Something went wrong")}render(){return this.state.hasError?this.props.fallback?this.props.fallback:h.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-3 p-4 text-sm text-muted-foreground",children:[h.jsx("p",{children:"出错了"}),h.jsx("button",{onClick:this.handleReset,className:"px-3 py-1.5 text-xs rounded-md border border-border hover:bg-muted transition-colors",children:"重新加载"})]}):this.props.children}}const FM=R.lazy(()=>Po(()=>import("./ProjectPage-B8Tdoz_M.js").then(e=>e.P),__vite__mapDeps([0,1,2,3,4,5,6])).then(e=>({default:e.ProjectPage}))),zM=R.lazy(()=>Po(()=>import("./SettingsPage-C8572fFD.js"),__vite__mapDeps([7,3,1])).then(e=>({default:e.SettingsPage}))),BM=R.lazy(()=>Po(()=>import("./SkillHubPage-BHgZp94q.js"),__vite__mapDeps([8,5,2,3])).then(e=>({default:e.SkillHubPage}))),$M=R.lazy(()=>Po(()=>import("./ShareViewPage-PTSFe5df.js"),__vite__mapDeps([9,5,4])).then(e=>({default:e.ShareViewPage})));function UM(){return h.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background",children:h.jsx("span",{className:"text-muted-foreground text-sm",children:"Loading…"})})}function fi({children:e}){const[t,n]=p.useState(!1),r=wr(o=>o.token),s=wr(o=>o.setToken);return p.useEffect(()=>{if(r){n(!0);return}ma()?df().then(o=>s(o)).catch(()=>{}).finally(()=>n(!0)):n(!0)},[]),!t&&!r?null:r?h.jsx(h.Fragment,{children:e}):h.jsx(sv,{to:"/login",replace:!0})}function WM(){return h.jsxs(jM,{children:[h.jsx(SM,{richColors:!0,position:"bottom-right"}),h.jsx(LM,{}),h.jsx(_M,{}),h.jsx(VM,{children:h.jsx(BE,{children:h.jsx(p.Suspense,{fallback:h.jsx(UM,{}),children:h.jsxs(VE,{children:[h.jsx(yn,{path:"/login",element:h.jsx(MN,{})}),h.jsx(yn,{path:"/",element:h.jsx(fi,{children:h.jsx(IM,{})})}),h.jsx(yn,{path:"/projects/:id",element:h.jsx(fi,{children:h.jsx(FM,{})})}),h.jsx(yn,{path:"/settings",element:h.jsx(fi,{children:h.jsx(zM,{})})}),h.jsx(yn,{path:"/skillhub",element:h.jsx(fi,{children:h.jsx(BM,{})})}),h.jsx(yn,{path:"/share/:token",element:h.jsx($M,{})}),h.jsx(yn,{path:"*",element:h.jsx(sv,{to:"/",replace:!0})})]})})})})]})}iu.createRoot(document.getElementById("root")).render(h.jsx(R.StrictMode,{children:h.jsx(WM,{})}));export{JT as $,tf as A,ie as B,bx as C,kN as D,VN as E,Pc as F,YT as G,mx as H,vo as I,Zl as J,ZT as K,gf as L,WN as M,Qa as N,Za as O,Cx as P,Ja as Q,R,pr as S,el as T,jn as U,qa as V,QT as W,ff as X,XT as Y,pm as Z,Po as _,KM as a,CN as a0,HT as a1,GT as a2,PN as a3,Va as a4,ON as a5,rr as a6,OM as a7,MM as a8,fN as a9,zx as aA,Rx as aB,Nx as aC,aN as aD,uN as aE,dN as aF,of as aG,af as aH,lf as aI,uf as aJ,Px as aK,va as aL,vN as aM,qN as aN,lN as aO,hN as aP,mN as aQ,yN as aR,cN as aS,gN as aT,pN as aU,xN as aV,qT as aW,eN as aX,TN as aY,YM as aZ,WT as aa,YN as ab,NN as ac,LT as ad,jN as ae,QN as af,JM as ag,CM as ah,XM as ai,_T as aj,dm as ak,hm as al,xo as am,br as an,ij as ao,un as ap,Fn as aq,tj as ar,Wa as as,ql as at,wo as au,Ka as av,Oa as aw,Dx as ax,ER as ay,Oj as az,Ao as b,ee as c,rN as d,Q as e,UN as f,Dm as g,tN as h,sx as i,h as j,ZM as k,Sx as l,KN as m,nN as n,fm as o,Vn as p,wN as q,p as r,ox as s,Ls as t,RM as u,IN as v,sN as w,ga as x,SN as y,EN as z};
|